> ## 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 artigo mostra como usar o [pacote `minted`](https://ctan.org/pkg/minted?lang=en) para formatar e destacar o código-fonte de linguagens de programação dentro de um documento LaTeX, começando com um exemplo:

```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 exemplo produz a seguinte saída:

<p style={{ textAlign: "center" }}>
  <img src="https://sharelatex-wiki-cdn-671420.c.cdn77.org/learn-scripts/images/f/f0/OLV2minted.png" alt="Exemplo que mostra a saída do pacote minted" />
</p>

Há dois comandos importantes aqui. No preâmbulo, o pacote é importado escrevendo

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

e então as tags `\begin{minted}{python}` e `\end{minted}` delimitam um ambiente que imprime o texto literalmente em fontes monoespaçadas e também aplica cores a comentários, palavras-chave e funções. O parâmetro `python` é a linguagem de programação em que o código-fonte está escrito. O `minted` suporta mais de 150 linguagens de programação e de marcação, além de arquivos de configuração; consulte o [guia de referência](https://www.overleaf.com/learn/latex/Code_Highlighting_with_minted#Reference_guide) para ver a lista de linguagens suportadas.

**Observação**: para que o `minted` funcione com sua distribuição LaTeX *local*, é necessário instalar um programa adicional chamado [Pygments](https://pygments.org/). O [Overleaf](https://www.overleaf.com/) pode poupar você do trabalho de instalá-lo e de ter que executar comandos especiais para compilar seu documento — no Overleaf, documentos que usam `minted` funcionam "de imediato".

### Uso básico

Como demonstrado no exemplo a seguir, o ambiente `minted` pode ser configurado para modificar a apresentação visual do código composto. Aqui, o ambiente `minted` usa vários parâmetros separados por vírgula no formato `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 exemplo produz a seguinte saída:

<p style={{ textAlign: "center" }}>
  <img src="https://sharelatex-wiki-cdn-671420.c.cdn77.org/learn-scripts/images/f/ff/OLV2minted2.png" alt="Exemplo de aplicação de formatação ao código composto pelo pacote minted" />
</p>

Os parâmetros usados neste exemplo são:

* `frame=lines`: desenha duas linhas, uma acima e outra abaixo do código, para emoldurá-lo. Outros valores possíveis são `leftline`, `topline`, `bottomline` e `single`.
* `framesep=2mm`: a separação da moldura é definida como 2mm. Outras [unidades de comprimento](https://www.overleaf.com/learn/latex/Lengths_in_LaTeX) podem ser usadas.
* `baselinestretch=1.2`: o espaçamento entre linhas do código é definido como 1.2.
* `bgcolor=LightGray`: a cor de fundo é definida como `LightGray`. Você precisa importar o pacote `xcolor` para que isso funcione. Consulte [Usando cores no LaTeX](https://www.overleaf.com/learn/latex/Using_colours_in_LaTeX) para saber mais sobre a manipulação de cores.
* `fontsize=\footnotesize`: o tamanho da fonte é definido como `footnotesize`. Qualquer outro [tamanho de fonte](https://www.overleaf.com/learn/latex/Font_sizes_and_kinds%23Reference_guide) pode ser definido.
* `linenos`: ativa os números de linha.

Outras opções que podem ser úteis são:

* `mathescape`: ativa o modo matemático nos comentários do código.
* `rulecolor`: altera a cor da moldura.
* `showspaces`: ativa um caractere especial para tornar os espaços visíveis.

### Incluindo código de um arquivo

O código geralmente é armazenado em um arquivo-fonte; por isso, um comando que importa automaticamente o código de um arquivo é muito conveniente, como demonstrado no exemplo a seguir:

```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 exemplo produz a seguinte saída:

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

O comando `\inputminted{octave}{BitXorMatrix.m}` importa o código do arquivo `BitXorMatrix.m`; o parâmetro `octave` informa ao LaTeX a linguagem de programação do código. Esse comando pode receber dois parâmetros extras para importar apenas parte do arquivo; por exemplo, para importar o código da linha 2 até a linha 12, o comando fica:

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

### Código de uma linha

Se você precisar inserir apenas uma linha de código, o comando `\mint`, cuja sintaxe é apresentada no próximo exemplo, resolverá o problema.

```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 exemplo produz a seguinte saída:

<img src="https://sharelatex-wiki-cdn-671420.c.cdn77.org/learn-scripts/images/d/d9/OLV2mintedHTML.png" alt="Exemplo de código de uma linha com minted" height="112" width="600" />

O parâmetro entre chaves define a linguagem de programação (neste caso, a linguagem de marcação `html`), e o texto a ser formatado é delimitado pelo caractere '|'.

### Problemas com o Overleaf auto-hospedado

Se você estiver usando a compilação em sandbox e também um servidor overleaf para implantar o overleaf, o minted pode não funcionar bem. Para informações detalhadas, consulte: [issues/131](https://github.com/yu-i-i/overleaf-cep/issues/131). Você precisa ativar o perfil de instruções arm e algumas chamadas de sistema para que o minted funcione.


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