> ## 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}

Questo articolo mostra come usare il [pacchetto `minted`](https://ctan.org/pkg/minted?lang=en) per formattare ed evidenziare il codice sorgente di linguaggi di programmazione all'interno di un documento LaTeX, partendo da un esempio:

```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}
```

Questo esempio produce il seguente output:

<p style={{ textAlign: "center" }}>
  <img src="https://sharelatex-wiki-cdn-671420.c.cdn77.org/learn-scripts/images/f/f0/OLV2minted.png" alt="Esempio che mostra l'output del pacchetto minted" />
</p>

Qui ci sono due comandi importanti. Nel preambolo il pacchetto viene importato scrivendo

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

quindi i tag `\begin{minted}{python}` e `\end{minted}` delimitano un ambiente che stampa il testo alla lettera (verbatim) con caratteri a spaziatura fissa e applica anche il colore a commenti, parole chiave e funzioni. Il parametro `python` è il linguaggio di programmazione in cui è scritto il codice sorgente. `minted` supporta oltre 150 linguaggi di programmazione e di markup, oltre ai file di configurazione: consulta la [guida di riferimento](https://www.overleaf.com/learn/latex/Code_Highlighting_with_minted#Reference_guide) per l'elenco dei linguaggi supportati.

**Nota**: affinché `minted` funzioni con la tua distribuzione LaTeX *locale*, deve essere installato un programma aggiuntivo chiamato [Pygments](https://pygments.org/). [Overleaf](https://www.overleaf.com/) ti risparmia la fatica di installarlo e di dover eseguire comandi speciali per compilare il tuo documento: su Overleaf, i documenti che usano `minted` funzionano "così come sono".

### Uso di base

Come mostrato nell'esempio seguente, l'ambiente `minted` può essere configurato per modificare la presentazione visiva del codice composto. Qui l'ambiente `minted` usa diversi parametri separati da virgole nella forma `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}
```

Questo esempio produce il seguente output:

<p style={{ textAlign: "center" }}>
  <img src="https://sharelatex-wiki-cdn-671420.c.cdn77.org/learn-scripts/images/f/ff/OLV2minted2.png" alt="Esempio di formattazione applicata al codice composto dal pacchetto minted" />
</p>

I parametri usati in questo esempio sono:

* `frame=lines`: disegna due linee, una sopra e una sotto il codice, per incorniciarlo. Altri valori possibili sono `leftline`, `topline`, `bottomline` e `single`.
* `framesep=2mm`: la distanza della cornice è impostata a 2mm. Si possono usare altre [unità di lunghezza](https://www.overleaf.com/learn/latex/Lengths_in_LaTeX).
* `baselinestretch=1.2`: l'interlinea del codice è impostata a 1.2.
* `bgcolor=LightGray`: il colore di sfondo è impostato su `LightGray`. Perché funzioni devi importare il pacchetto `xcolor`. Consulta [Usare i colori in LaTeX](https://www.overleaf.com/learn/latex/Using_colours_in_LaTeX) per saperne di più sulla gestione dei colori.
* `fontsize=\footnotesize`: la dimensione del carattere è impostata su `footnotesize`. È possibile impostare qualsiasi altra [dimensione del carattere](https://www.overleaf.com/learn/latex/Font_sizes_and_kinds%23Reference_guide).
* `linenos`: abilita i numeri di riga.

Altre opzioni che potrebbero essere utili sono:

* `mathescape`: abilita la modalità matematica nei commenti del codice.
* `rulecolor`: cambia il colore della cornice.
* `showspaces`: abilita un carattere speciale per rendere visibili gli spazi.

### Includere codice da un file

Il codice è di solito memorizzato in un file sorgente, quindi un comando che importa automaticamente il codice da un file è molto comodo, come mostrato nell'esempio seguente:

```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}
```

Questo esempio produce il seguente output:

<img src="https://sharelatex-wiki-cdn-671420.c.cdn77.org/learn-scripts/images/c/c8/OLV2mintedinput.png" alt="Usare minted per importare un file di codice" height="392" width="600" />

Il comando `\inputminted{octave}{BitXorMatrix.m}` importa il codice dal file `BitXorMatrix.m`; il parametro `octave` indica a LaTeX il linguaggio di programmazione del codice. Questo comando può accettare due parametri aggiuntivi per importare solo una parte del file; ad esempio, per importare il codice dalla riga 2 alla riga 12, il comando diventa:

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

### Codice su una riga

Se devi inserire una sola riga di codice, il comando `\mint`, la cui sintassi è illustrata nell'esempio seguente, fa al caso tuo.

```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.
```

Questo esempio produce il seguente output:

<img src="https://sharelatex-wiki-cdn-671420.c.cdn77.org/learn-scripts/images/d/d9/OLV2mintedHTML.png" alt="Esempio di codice su una riga con minted" height="112" width="600" />

Il parametro tra parentesi graffe imposta il linguaggio di programmazione (in questo caso il linguaggio di markup `html`), mentre il testo da formattare è delimitato dal carattere '|'.

### Problemi con Overleaf self-hosted

Se usi le sandbox compile insieme a un server Overleaf self-hosted, minted potrebbe non funzionare correttamente. Per informazioni dettagliate, consulta: [issues/131](https://github.com/yu-i-i/overleaf-cep/issues/131). Affinché minted funzioni, devi abilitare il profilo di istruzioni arm e alcune chiamate di sistema.


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