Pular para o conteúdo

listings no Scissor LaTeX

O pacote listings funciona em parte no Scissor LaTeX: o lstlisting mantém o código exatamente como digitado e o colore quando você dá language= no ambiente, e \lstinline funciona; \lstset, números de linha, molduras, legendas e rótulos são ignorados, e \lstinputlisting é pulado.

O que o pacote faz

O listings compõe código-fonte. O ambiente lstlisting mantém quebras de linha e espaços e, com language=Python (ou C, Java, SQL ...), compõe palavras-chave, comentários e strings em estilos diferentes. Opções acrescentam números de linha, molduras, legendas e cores, por listagem ou para o documento inteiro com \lstset. O \lstinline é a forma em linha, e o \lstinputlisting lê o código de um arquivo.

O que funciona aqui

RecursoNo Scissor LaTeXObservações
\begin{lstlisting} ... \end{lstlisting}FuncionaMonoespaçado, exatamente como digitado.
[language=Python] no ambienteFuncionaCores de sintaxe de um esquema fixo.
[language={[Sharp]C}] e outros dialetosFuncionaO dialeto entre colchetes é lido junto com o nome.
\lstinline|code|, \lstinline{code}FuncionaMonoespaçado, sem cores.
numbers=left, frame=single, basicstyle, keywordstyle, backgroundcolorIgnoradoIgnorados sem mensagem.
caption=, label=IgnoradoNenhuma legenda é impressa, e um \ref ao rótulo mostra "??".
\lstset{...}, \lstdefinestyle, style=IgnoradoIgnorados, inclusive um language= definido ali.
\lstinputlisting{file}Não suportadoPulado com uma mensagem.
\lstlistoflistings, \lstnewenvironmentNão suportadoPulados com uma mensagem.

Os nomes de linguagem não diferenciam maiúsculas de minúsculas. Há cores para linguagens comuns como Python, C, C++, C#, Java, JavaScript, Rust, Go, R, MATLAB, SQL, Bash, HTML e TeX. Um nome não reconhecido, como Fortran, dá código monoespaçado simples, sem mensagem.

Exemplos

Indique a linguagem em cada listagem:

lstlisting com language=Python

LaTeXPreâmbulo: \usepackage{listings}Abrir no editor (abre em uma nova aba)
\begin{lstlisting}[language=Python]
def mean(values):
    # average of a list of numbers
    return sum(values) / len(values)

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

Uma linguagem definida com \lstset não é usada, então esta listagem fica sem cores. Opções de layout como numbers e frame também são ignoradas:

\lstset é ignorado

\documentclass{article}
\usepackage{listings}
\lstset{language=SQL, numbers=left, frame=single}
\begin{document}
\begin{lstlisting}
SELECT name FROM staff WHERE id = 44;
\end{lstlisting}
\begin{lstlisting}[language=SQL]
SELECT name FROM staff WHERE id = 44;
\end{lstlisting}
\end{document}

Código em linha com \lstinline aceita qualquer delimitador, como o \verb:

\lstinline em uma frase

LaTeXPreâmbulo: \usepackage{listings}Abrir no editor (abre em uma nova aba)
The loop \lstinline|for i in range(44):| runs 44 times, and
\lstinline{total += i} adds up the numbers.
Renderizado pelo Scissor LaTeX: \lstinline em uma frase

Uma listagem com legenda dentro de uma figura

LaTeXPreâmbulo: \usepackage{listings}Abrir no editor (abre em uma nova aba)
\begin{figure}[h]
\begin{lstlisting}[language=Python]
print(sum(range(44)))
\end{lstlisting}
\caption{Adding the numbers below 44}
\label{lst:sum}
\end{figure}
The code in Listing~\ref{lst:sum} prints 946.
Renderizado pelo Scissor LaTeX: Uma listagem com legenda dentro de uma figura

Compatibilidade

  • De uma instalação do TeX para cá: o código de cada lstlisting é mostrado. Mova o language= do \lstset para cada listagem para ter cores, e cole no documento o código dos arquivos de \lstinputlisting.
  • Daqui para uma instalação do TeX: os documentos compilam lá sem mudanças, e suas opções passam a valer.

O manual completo está no CTAN: ctan.org/pkg/listings. Veja também Listagens de código em LaTeX e minted.

Perguntas e respostas

Por que minhas listagens não têm cores?

Provavelmente a linguagem está definida com \lstset, que é ignorado aqui. Escreva [language=Python] (ou a sua linguagem) depois de \begin{lstlisting}.

Posso mostrar números de linha?

Ainda não. O numbers=left é aceito e ignorado.

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