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

Este artículo muestra cómo usar el [paquete `minted`](https://ctan.org/pkg/minted?lang=en) para dar formato y resaltar código fuente de lenguajes de programación dentro de un documento LaTeX, empezando por un ejemplo:

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

Este ejemplo produce el siguiente resultado:

<p style={{ textAlign: "center" }}>
  <img src="https://sharelatex-wiki-cdn-671420.c.cdn77.org/learn-scripts/images/f/f0/OLV2minted.png" alt="Ejemplo que muestra el resultado del paquete minted" />
</p>

Aquí hay dos comandos importantes. En el preámbulo, el paquete se importa escribiendo

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

y luego las etiquetas `\begin{minted}{python}` y `\end{minted}` delimitan un entorno que imprime el texto literalmente en fuente monoespaciada y, además, aplica color a los comentarios, las palabras clave y las funciones. El parámetro `python` es el lenguaje de programación en el que está escrito el código fuente. `minted` admite más de 150 lenguajes de programación y de marcado, así como archivos de configuración; consulta la [guía de referencia](https://www.overleaf.com/learn/latex/Code_Highlighting_with_minted#Reference_guide) para ver la lista de lenguajes compatibles.

**Nota**: para que `minted` funcione con tu distribución LaTeX *local*, debe estar instalado un programa adicional llamado [Pygments](https://pygments.org/). [Overleaf](https://www.overleaf.com/) puede ahorrarte la molestia de instalarlo y de tener que ejecutar comandos especiales para compilar tu documento: en Overleaf, los documentos que usan `minted` funcionan "de serie".

### Uso básico

Como se muestra en el siguiente ejemplo, el entorno `minted` se puede configurar para modificar la presentación visual del código compuesto. Aquí, el entorno `minted` usa varios parámetros separados por comas con la 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}
```

Este ejemplo produce el siguiente resultado:

<p style={{ textAlign: "center" }}>
  <img src="https://sharelatex-wiki-cdn-671420.c.cdn77.org/learn-scripts/images/f/ff/OLV2minted2.png" alt="Ejemplo de aplicación de formato al código compuesto con el paquete minted" />
</p>

Los parámetros usados en este ejemplo son:

* `frame=lines`: dibuja dos líneas, una encima y otra debajo del código, para enmarcarlo. Otros valores posibles son `leftline`, `topline`, `bottomline` y `single`.
* `framesep=2mm`: la separación del marco se establece en 2 mm. Se pueden usar otras [unidades de longitud](https://www.overleaf.com/learn/latex/Lengths_in_LaTeX).
* `baselinestretch=1.2`: el interlineado del código se establece en 1,2.
* `bgcolor=LightGray`: el color de fondo se establece en `LightGray`. Para que esto funcione, debes importar el paquete `xcolor`. Consulta [Usar colores en LaTeX](https://www.overleaf.com/learn/latex/Using_colours_in_LaTeX) para saber más sobre la manipulación de colores.
* `fontsize=\footnotesize`: el tamaño de fuente se establece en `footnotesize`. Se puede establecer cualquier otro [tamaño de fuente](https://www.overleaf.com/learn/latex/Font_sizes_and_kinds%23Reference_guide).
* `linenos`: activa los números de línea.

Otras opciones que pueden resultar útiles son:

* `mathescape`: activa el modo matemático en los comentarios del código.
* `rulecolor`: cambia el color del marco.
* `showspaces`: activa un carácter especial para hacer visibles los espacios.

### Incluir código desde un archivo

El código suele almacenarse en un archivo fuente, por lo que un comando que importe automáticamente el código desde un archivo resulta muy práctico, como se muestra en el siguiente ejemplo:

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

Este ejemplo produce el siguiente resultado:

<img src="https://sharelatex-wiki-cdn-671420.c.cdn77.org/learn-scripts/images/c/c8/OLV2mintedinput.png" alt="Uso de minted para importar un archivo de código" height="392" width="600" />

El comando `\inputminted{octave}{BitXorMatrix.m}` importa el código del archivo `BitXorMatrix.m`; el parámetro `octave` indica a LaTeX el lenguaje de programación del código. Este comando admite dos parámetros adicionales para importar solo una parte del archivo; por ejemplo, para importar el código de la línea 2 a la línea 12, el comando queda así:

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

### Código de una sola línea

Si solo necesitas introducir una línea de código, el comando `\mint`, cuya sintaxis se presenta en el siguiente ejemplo, te servirá.

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

Este ejemplo produce el siguiente resultado:

<img src="https://sharelatex-wiki-cdn-671420.c.cdn77.org/learn-scripts/images/d/d9/OLV2mintedHTML.png" alt="Ejemplo de código de una línea con minted" height="112" width="600" />

El parámetro entre llaves establece el lenguaje de programación (en este caso, el lenguaje de marcado `html`), y el texto real al que se dará formato queda delimitado por el carácter '|'.

### Problemas con Overleaf autoalojado

Si usas la compilación en sandbox y además despliegas Overleaf en tu propio servidor, es posible que minted no funcione bien. Para información detallada, consulta: [issues/131](https://github.com/yu-i-i/overleaf-cep/issues/131). Debes habilitar el perfil de instrucciones arm y algunas llamadas al sistema para que minted funcione.


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