> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/texlive/pt/relacionado-a-pacotes/minted.md).

# {Minted}

Este artigo mostra como usar o [`minted` pacote](https://ctan.org/pkg/minted?lang=en) para formatar e realçar o código-fonte de linguagens de programação dentro de um documento LaTeX, começando com um exemplo:

```latex
\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 #para se tornar a matriz de incidência
    VT = np.zeros((n*m,1), int)  #variável fictícia
    
    #calcular a matriz xor bit a bit
    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 align="center"><img src="https://sharelatex-wiki-cdn-671420.c.cdn77.org/learn-scripts/images/f/f0/OLV2minted.png" alt="Example displaying the output of the minted package"></p>

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

```latex
\usepackage{minted}
```

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

**Nota**: Para `minted` funcionar com a sua *local* distribuição LaTeX, é necessário instalar um programa adicional chamado [Pygments](https://pygments.org/) deve ser instalado. [O Overleaf](https://www.overleaf.com/) pode poupar-lhe o trabalho de o instalar e de ter de executar comandos especiais para compilar o seu documento — no Overleaf, os documentos que usam `minted` funcionam "logo à partida".

### Utilização básica

Como demonstrado no exemplo seguinte, o `minted` ambiente pode ser configurado para modificar a apresentação visual do código formatado. Aqui, o `minted` ambiente usa vários parâmetros separados por vírgulas da forma `chave=valor`:

```latex
\documentclass{article}
\usepackage{minted}
\usepackage{xcolor} % para aceder à cor nomeada 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 #para se tornar a matriz de incidência
    VT = np.zeros((n*m,1), int)  #variável fictícia
    
    #calcular a matriz xor bit a bit
    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 align="center"><img src="https://sharelatex-wiki-cdn-671420.c.cdn77.org/learn-scripts/images/f/ff/OLV2minted2.png" alt="Example applying formatting to typeset code produced by the minted package"></p>

Os parâmetros usados neste exemplo são:

* `frame=lines`: desenha duas linhas, uma em cima e outra em baixo do código para o enquadrar. Outros valores possíveis são `leftline`, `topline`, `bottomline` e `single`.
* `framesep=2mm`: a separação da moldura é definida para 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 para 1.2.
* `bgcolor=LightGray`: a cor de fundo é definida para `LightGray`. É necessário importar o `xcolor` para que isto funcione. Veja [Usar cores em LaTeX](https://www.overleaf.com/learn/latex/Using_colours_in_LaTeX) para saber mais sobre manipulação de cores.
* `fontsize=\footnotesize`: o tamanho da fonte é definido para `footnotesize`. Qualquer outro [tamanho de fonte](https://www.overleaf.com/learn/latex/Font_sizes_and_kinds%23Reference_guide) pode ser definido.
* `linenos`: ativa a numeração das linhas.

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 carácter especial para tornar os espaços visíveis.

### Incluir código de um ficheiro

O código é normalmente armazenado num ficheiro-fonte, por isso um comando que importe automaticamente código de um ficheiro é muito conveniente, como demonstrado no exemplo seguinte:

```latex
\documentclass{article}
\usepackage{minted}
\title{Importing files using minted}
\begin{document}
O próximo código será importado diretamente de um ficheiro:

\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="Usar minted para importar um ficheiro de código" height="392" width="600">

O comando `\inputminted{octave}{BitXorMatrix.m}` importa o código do ficheiro `BitXorMatrix.m`, o parâmetro `octave` indica ao LaTeX a linguagem de programação do código. Este comando pode receber dois parâmetros extra para importar apenas parte do ficheiro; por exemplo, para importar código da linha 2 até à linha 12, o comando passa a ser:

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

### Código numa única linha

Se precisar de inserir apenas uma linha de código, o comando `\mint`, cuja sintaxe é apresentada no exemplo seguinte, fará o trabalho.

{% code overflow="wrap" %}

```latex
A formatação de código numa única linha também funciona com \texttt{minted}. Por exemplo, um pequeno fragmento de HTML como este:
\mint{html}|<h2>Something <b>here</b></h2>|
\noindent pode ser formatado corretamente.
```

{% endcode %}

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 numa linha com minted" height="112" width="600">

O parâmetro entre chavetas define a linguagem de programação (`html` linguagem de marcação neste caso), sendo o texto real a formatar delimitado pelo carácter '|' .

### Problemas com o Overleaf autoalojado

Se estiver a usar compilação em sandbox e também um servidor overleaf para implementar o overleaf, o minted pode não funcionar bem. Para informações detalhadas, pode ver: [issues/131](https://github.com/yu-i-i/overleaf-cep/issues/131). É necessário ativar o perfil de instruções ARM e algumas chamadas de sistema para o minted funcionar.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/texlive/pt/relacionado-a-pacotes/minted.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
