> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# {Minted}

Tässä artikkelissa näytetään, miten [`minted`-pakettia](https://ctan.org/pkg/minted?lang=en) käytetään ohjelmointikielten lähdekoodin muotoiluun ja korostamiseen LaTeX-dokumentissa. Aloitetaan esimerkillä:

```latex theme={null}
\documentclass{article}
\usepackage{minted}
\begin{document}
\begin{minted}{python}
import numpy as np
    
def incmatrix(genl1,genl2):
    m = len(genl1)
    n = len(genl2)
    M = None #to become the incidence matrix
    VT = np.zeros((n*m,1), int)  #dummy variable
    
    #compute the bitwise xor matrix
    M1 = bitxormatrix(genl1)
    M2 = np.triu(bitxormatrix(genl2),1) 

    for i in range(m-1):
        for j in range(i+1, m):
            [r,c] = np.where(M2 == M1[i,j])
            for k in range(len(r)):
                VT[(i)*n + r[k]] = 1;
                VT[(i)*n + c[k]] = 1;
                VT[(j)*n + r[k]] = 1;
                VT[(j)*n + c[k]] = 1;
                
                if M is None:
                    M = np.copy(VT)
                else:
                    M = np.concatenate((M, VT), 1)
                
                VT = np.zeros((n*m,1), int)
    
    return M
\end{minted}
\end{document}
```

Tämä esimerkki tuottaa seuraavan tulosteen:

<p style={{ textAlign: "center" }}>
  <img src="https://sharelatex-wiki-cdn-671420.c.cdn77.org/learn-scripts/images/f/f0/OLV2minted.png" alt="Esimerkki minted-paketin tulosteesta" />
</p>

Tässä on kaksi tärkeää komentoa. Johdanto-osassa (preamble) paketti tuodaan kirjoittamalla

```latex theme={null}
\usepackage{minted}
```

minkä jälkeen tagit `\begin{minted}{python}` ja `\end{minted}` rajaavat ympäristön, joka tulostaa tekstin sellaisenaan tasalevyisellä fontilla ja värittää lisäksi kommentit, avainsanat ja funktiot. Parametri `python` on ohjelmointikieli, jolla lähdekoodi on kirjoitettu. `minted` tukee yli 150 ohjelmointi- ja merkintäkieltä sekä konfiguraatiotiedostoja; luettelo tuetuista kielistä löytyy [viiteoppaasta](https://www.overleaf.com/learn/latex/Code_Highlighting_with_minted#Reference_guide).

**Huomautus**: Jotta `minted` toimisi *paikallisessa* LaTeX-jakelussasi, sinun on asennettava lisäksi [Pygments](https://pygments.org/)-niminen ohjelma. [Overleaf](https://www.overleaf.com/) säästää sinut sen asentamiselta ja erityisten komentojen suorittamiselta dokumentin kääntämiseksi — Overleafissa `minted`-pakettia käyttävät dokumentit toimivat "suoraan paketista".

### Peruskäyttö

Kuten seuraava esimerkki osoittaa, `minted`-ympäristöä voidaan konfiguroida muuttamaan ladotun koodin visuaalista esitystä. Tässä `minted`-ympäristö käyttää useita pilkuin eroteltuja parametreja muodossa `key=value`:

```latex theme={null}
\documentclass{article}
\usepackage{minted}
\usepackage{xcolor} % to access the named colour LightGray
\definecolor{LightGray}{gray}{0.9}
\begin{document}
\begin{minted}
[
frame=lines,
framesep=2mm,
baselinestretch=1.2,
bgcolor=LightGray,
fontsize=\footnotesize,
linenos
]
{python}
import numpy as np
    
def incmatrix(genl1,genl2):
    m = len(genl1)
    n = len(genl2)
    M = None #to become the incidence matrix
    VT = np.zeros((n*m,1), int)  #dummy variable
    
    #compute the bitwise xor matrix
    M1 = bitxormatrix(genl1)
    M2 = np.triu(bitxormatrix(genl2),1) 

    for i in range(m-1):
        for j in range(i+1, m):
            [r,c] = np.where(M2 == M1[i,j])
            for k in range(len(r)):
                VT[(i)*n + r[k]] = 1;
                VT[(i)*n + c[k]] = 1;
                VT[(j)*n + r[k]] = 1;
                VT[(j)*n + c[k]] = 1;
                
                if M is None:
                    M = np.copy(VT)
                else:
                    M = np.concatenate((M, VT), 1)
                
                VT = np.zeros((n*m,1), int)
    
    return M
\end{minted}
\end{document}
```

Tämä esimerkki tuottaa seuraavan tulosteen:

<p style={{ textAlign: "center" }}>
  <img src="https://sharelatex-wiki-cdn-671420.c.cdn77.org/learn-scripts/images/f/ff/OLV2minted2.png" alt="Esimerkki minted-paketin tuottaman ladotun koodin muotoilusta" />
</p>

Tässä esimerkissä käytetyt parametrit ovat:

* `frame=lines`: piirtää kaksi viivaa, toisen koodin yläpuolelle ja toisen alapuolelle kehystämään sitä. Muita mahdollisia arvoja ovat `leftline`, `topline`, `bottomline` ja `single`.
* `framesep=2mm`: kehyksen etäisyydeksi asetetaan 2 mm. Myös muita [pituusyksiköitä](https://www.overleaf.com/learn/latex/Lengths_in_LaTeX) voi käyttää.
* `baselinestretch=1.2`: koodin riviväliksi asetetaan 1.2.
* `bgcolor=LightGray`: taustaväriksi asetetaan `LightGray`. Tämä edellyttää `xcolor`-paketin tuomista. Katso [Värien käyttäminen LaTeXissa](https://www.overleaf.com/learn/latex/Using_colours_in_LaTeX) lisätietoja värien käsittelystä.
* `fontsize=\footnotesize`: fonttikooksi asetetaan `footnotesize`. Mikä tahansa muu [fonttikoko](https://www.overleaf.com/learn/latex/Font_sizes_and_kinds%23Reference_guide) voidaan asettaa.
* `linenos`: ottaa rivinumerot käyttöön.

Muita mahdollisesti hyödyllisiä asetuksia ovat:

* `mathescape`: ottaa matematiikkatilan käyttöön koodikommenteissa.
* `rulecolor`: muuttaa kehyksen väriä.
* `showspaces`: ottaa käyttöön erikoismerkin, joka tekee välilyönnit näkyviksi.

### Koodin sisällyttäminen tiedostosta

Koodi on yleensä tallennettu lähdetiedostoon, joten komento, joka tuo koodin automaattisesti tiedostosta, on erittäin kätevä, kuten seuraava esimerkki osoittaa:

```latex theme={null}
\documentclass{article}
\usepackage{minted}
\title{Importing files using minted}
\begin{document}
The next code will be directly imported from a file:

\inputminted{octave}{BitXorMatrix.m}
\end{document}
```

Tämä esimerkki tuottaa seuraavan tulosteen:

<img src="https://sharelatex-wiki-cdn-671420.c.cdn77.org/learn-scripts/images/c/c8/OLV2mintedinput.png" alt="Kooditiedoston tuominen mintedillä" height="392" width="600" />

Komento `\inputminted{octave}{BitXorMatrix.m}` tuo koodin tiedostosta `BitXorMatrix.m`, ja parametri `octave` kertoo LaTeXille koodin ohjelmointikielen. Komento voi ottaa kaksi lisäparametria, joilla tuodaan vain osa tiedostosta; esimerkiksi tuotaessa koodia riveiltä 2–12 komento on:

```latex theme={null}
\inputminted[firstline=2, lastline=12]{octave}{BitXorMatrix.m}
```

### Yhden rivin koodi

Jos haluat syöttää vain yhden koodirivin, komento `\mint`, jonka syntaksi esitetään seuraavassa esimerkissä, hoitaa asian.

```latex wrap theme={null}
One-line code formatting also works with \texttt{minted}. For example, a small fragment of HTML like this:
\mint{html}|<h2>Something <b>here</b></h2>|
\noindent can be formatted correctly.
```

Tämä esimerkki tuottaa seuraavan tulosteen:

<img src="https://sharelatex-wiki-cdn-671420.c.cdn77.org/learn-scripts/images/d/d9/OLV2mintedHTML.png" alt="Yhden rivin koodiesimerkki mintedillä" height="112" width="600" />

Aaltosulkeiden välinen parametri asettaa ohjelmointikielen (tässä tapauksessa `html`-merkintäkieli), ja varsinainen muotoiltava teksti rajataan merkillä '|'.

### Ongelmat itse isännöidyssä Overleafissa

Jos käytät hiekkalaatikoitua kääntämistä (sandbox compile) ja Overleaf on otettu käyttöön omalla palvelimella, minted ei välttämättä toimi kunnolla. Tarkemmat tiedot löydät täältä: [issues/131](https://github.com/yu-i-i/overleaf-cep/issues/131). Jotta minted toimisi, sinun on otettava käyttöön arm-käskyprofiili ja tietyt järjestelmäkutsut.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.