Pular para o conteúdo

Listagens de código em LaTeX

Coloque o código em um ambiente verbatim, lstlisting ou minted, ou use \verb|...| no meio do texto; o Scissor LaTeX o compõe em fonte monoespaçada exatamente como foi digitado e colore a sintaxe quando você indica a linguagem.

verbatim

Dentro de verbatim, nada é interpretado: barras invertidas, chaves, $ e % são impressos como estão, e quebras de linha e espaços são mantidos. É o jeito mais simples de mostrar código ou a saída de um terminal.

Um bloco verbatim

\begin{verbatim}
for i in range(44):
    print(i)   # $ and \textbf stay as typed
\end{verbatim}

Código no meio do texto: \verb

\verb mostra um trecho curto de código dentro de uma frase. O caractere logo depois de \verb é o delimitador; escolha um que não esteja no código, como | ou +.

Código no texto com \verb e \texttt

Call \verb|total(xs)| to add the list, or type \verb+x_1 = 44+.
For plain words in a monospaced font, \texttt{main.tex} is enough.
Renderizado pelo Scissor LaTeX: Código no texto com \verb e \texttt

\texttt{...} só muda a fonte: caracteres especiais como _ e % ainda precisam ser escapados ali, enquanto \verb os aceita como estão.

listings: lstlisting com uma linguagem

O pacote listings oferece o lstlisting. Com language=... o código ganha cores de sintaxe.

lstlisting com language=Python

LaTeXPreâmbulo: \usepackage{listings}Abrir no editor (abre em uma nova aba)
\begin{lstlisting}[language=Python]
def total(xs):
    """Add up the numbers in xs."""
    return sum(xs)

print(total([40, 4]))  # 44
\end{lstlisting}
Renderizado pelo Scissor LaTeX: lstlisting com language=Python

\lstinline|code| é a forma para o meio do texto, como \verb.

minted

O minted recebe a linguagem como argumento. Em uma instalação do TeX ele precisa de Python e da opção -shell-escape; no Scissor LaTeX funciona sem nenhum dos dois.

minted com uma linguagem

LaTeXPreâmbulo: \usepackage{minted}Abrir no editor (abre em uma nova aba)
\begin{minted}{rust}
fn main() {
    let answer = 40 + 4;
    println!("{}", answer);
}
\end{minted}
Inline: \mintinline{rust}{let x = 44;}
Renderizado pelo Scissor LaTeX: minted com uma linguagem

O que é lido

ComandoNo Scissor LaTeXObservações
verbatim, verbatim*Funciona
\verb, \verb*Funciona
lstlistingEm partelanguage= é lido; todas as outras opções (numbers, caption, frame, basicstyle, firstline ...) são ignoradas.
\lstinlineFuncionaSem cores de sintaxe no meio do texto.
\lstset{...}IgnoradoUma linguagem definida aqui não é usada; indique language= em cada listagem.
mintedEm parteA linguagem é lida; opções como linenos e frame são ignoradas.
\mintinline{lang}{code}FuncionaSem cores de sintaxe no meio do texto.
Verbatim, BVerbatim (fancyvrb)Em parteMostrados como verbatim; as opções são ignoradas.
\lstinputlisting{file}, \inputminted{lang}{file}Não suportadoIgnorados com uma mensagem; cole o código no documento.
\lstnewenvironment, \newmintedNão suportado

Há cores de sintaxe para as linguagens mais comuns, entre elas Python, C, C++, Java, JavaScript, TypeScript, Rust, Go, Ruby, R, Julia, MATLAB, SQL, Bash, HTML, CSS, JSON, YAML, TeX e LaTeX. Os nomes das linguagens não diferenciam maiúsculas de minúsculas, então Python e python são a mesma coisa. Um nome que não é reconhecido dá código monoespaçado simples.

Código de um arquivo

\lstinputlisting e \inputminted leem código de outro arquivo em uma instalação do TeX. O Scissor LaTeX os ignora e avisa na aba Problemas:

\lstinputlisting é ignorado

LaTeXPreâmbulo: \usepackage{listings}Abrir no editor (abre em uma nova aba)
The script below is not shown:
\lstinputlisting[language=Python]{scripts/total.py}
Paste the code into an lstlisting environment instead.

Aba Problemas: 1 included file is not part of this conversion

O que muda em relação a uma instalação do TeX

Veja listings e minted para as páginas dos pacotes. Os manuais completos estão no CTAN: listings, minted e fancyvrb.

Perguntas e respostas

Como eu adiciono um bloco de código em LaTeX?

Coloque o código entre \begin{verbatim} ... \end{verbatim}, ou em lstlisting com [language=Python] para ter cores de sintaxe.

O minted funciona sem shell escape?

No Scissor LaTeX, sim: os ambientes minted são coloridos sem Python nem -shell-escape. Em uma instalação do TeX o minted continua precisando dos dois.

Por que os números de linha da minha listagem não aparecem?

O Scissor LaTeX ignora numbers=left e as outras opções de layout do listings. Só a linguagem é lida.

Cada exemplo desta página é composto pelo Scissor LaTeX quando o site é gerado. Última atualização: 2026-11-07.