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

Cet article explique comment utiliser le [paquet `minted`](https://ctan.org/pkg/minted?lang=en) pour mettre en forme et colorer le code source de langages de programmation dans un document LaTeX, en commençant par un exemple :

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

Cet exemple produit le résultat suivant :

<p style={{ textAlign: "center" }}>
  <img src="https://sharelatex-wiki-cdn-671420.c.cdn77.org/learn-scripts/images/f/f0/OLV2minted.png" alt="Exemple montrant le résultat du paquet minted" />
</p>

Il y a ici deux commandes importantes. Dans le préambule, le paquet est importé en écrivant

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

puis les balises `\begin{minted}{python}` et `\end{minted}` délimitent un environnement qui affiche le texte tel quel (verbatim) dans une police à chasse fixe et colore également les commentaires, les mots-clés et les fonctions. Le paramètre `python` indique le langage de programmation dans lequel le code source est écrit. `minted` prend en charge plus de 150 langages de programmation et de balisage ainsi que des fichiers de configuration ; consultez le [guide de référence](https://www.overleaf.com/learn/latex/Code_Highlighting_with_minted#Reference_guide) pour la liste des langages pris en charge.

**Remarque** : pour que `minted` fonctionne avec votre distribution LaTeX *locale*, un programme supplémentaire appelé [Pygments](https://pygments.org/) doit être installé. [Overleaf](https://www.overleaf.com/) vous évite d'avoir à l'installer et à exécuter des commandes spéciales pour compiler votre document : sur Overleaf, les documents qui utilisent `minted` fonctionnent « tels quels ».

### Utilisation de base

Comme le montre l'exemple suivant, l'environnement `minted` peut être configuré pour modifier la présentation visuelle du code composé. Ici, l'environnement `minted` utilise plusieurs paramètres de la forme `key=value`, séparés par des virgules :

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

Cet exemple produit le résultat suivant :

<p style={{ textAlign: "center" }}>
  <img src="https://sharelatex-wiki-cdn-671420.c.cdn77.org/learn-scripts/images/f/ff/OLV2minted2.png" alt="Exemple de mise en forme appliquée au code composé par le paquet minted" />
</p>

Les paramètres utilisés dans cet exemple sont :

* `frame=lines` : trace deux lignes, l'une au-dessus et l'autre en dessous du code, pour l'encadrer. Les autres valeurs possibles sont `leftline`, `topline`, `bottomline` et `single`.
* `framesep=2mm` : l'espacement du cadre est fixé à 2 mm. D'autres [unités de longueur](https://www.overleaf.com/learn/latex/Lengths_in_LaTeX) peuvent être utilisées.
* `baselinestretch=1.2` : l'interligne du code est fixé à 1,2.
* `bgcolor=LightGray` : la couleur d'arrière-plan est définie sur `LightGray`. Vous devez importer le paquet `xcolor` pour que cela fonctionne. Consultez [Utiliser les couleurs dans LaTeX](https://www.overleaf.com/learn/latex/Using_colours_in_LaTeX) pour en savoir plus sur la manipulation des couleurs.
* `fontsize=\footnotesize` : la taille de police est définie sur `footnotesize`. Toute autre [taille de police](https://www.overleaf.com/learn/latex/Font_sizes_and_kinds%23Reference_guide) peut être utilisée.
* `linenos` : active la numérotation des lignes.

Autres options potentiellement utiles :

* `mathescape` : active le mode mathématique dans les commentaires du code.
* `rulecolor` : modifie la couleur du cadre.
* `showspaces` : affiche un caractère spécial pour rendre les espaces visibles.

### Inclure du code depuis un fichier

Le code est généralement stocké dans un fichier source ; une commande qui importe automatiquement le code depuis un fichier est donc très pratique, comme le montre l'exemple suivant :

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

Cet exemple produit le résultat suivant :

<img src="https://sharelatex-wiki-cdn-671420.c.cdn77.org/learn-scripts/images/c/c8/OLV2mintedinput.png" alt="Utilisation de minted pour importer un fichier de code" height="392" width="600" />

La commande `\inputminted{octave}{BitXorMatrix.m}` importe le code du fichier `BitXorMatrix.m` ; le paramètre `octave` indique à LaTeX le langage de programmation du code. Cette commande accepte deux paramètres supplémentaires pour n'importer qu'une partie du fichier ; par exemple, pour importer le code de la ligne 2 à la ligne 12, la commande devient :

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

### Code sur une seule ligne

Si vous n'avez besoin d'insérer qu'une seule ligne de code, la commande `\mint`, dont la syntaxe est présentée dans l'exemple suivant, fera l'affaire.

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

Cet exemple produit le résultat suivant :

<img src="https://sharelatex-wiki-cdn-671420.c.cdn77.org/learn-scripts/images/d/d9/OLV2mintedHTML.png" alt="Exemple de code sur une ligne avec minted" height="112" width="600" />

Le paramètre entre accolades définit le langage de programmation (ici le langage de balisage `html`), le texte à mettre en forme étant délimité par le caractère '|'.

### Problèmes avec Overleaf auto-hébergé

Si vous utilisez les compilations en bac à sable avec un serveur Overleaf auto-hébergé, minted risque de ne pas fonctionner correctement. Pour plus de détails, consultez : [issues/131](https://github.com/yu-i-i/overleaf-cep/issues/131). Vous devez activer le profil d'instructions arm et certains appels système pour que minted fonctionne.


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