Listagens de código no LaTeX

Listagens de código ‘bonitas’ são às vezes consideradas desejáveis pelo programador “comum”, mas elas têm um lugar importante na composição de dissertações de estudantes de ciência da computação e outros que devem escrever programas. Simples listagens verbatim e programas são comumente úteis também.

Listagens verbatim são tratadas em outro lugar, assim como o problema de composição tipográfica de especificações de algoritmo.

O pacote listings é amplamente considerado como a melhor aposta para saída formatada (ele é capaz de analisar a fonte do programa, dentro do próprio pacote), mas existem vários pacotes bem estabelecidos que dependem de um pré-compilador de algum tipo. Você pode usar o listings para compor os pedaços que você insere em seu código-fonte:

\usepackage{listings}
\lstset{language=C}
...
\begin{document}
\begin{lstlisting}
#include 

int main(int argc, char ** argv)
{
  printf("Hello world!\n");
  return 0;
}
\end{lstlisting}
\end{document}
Ou você pode usá-lo para tipografar arquivos inteiros:
\usepackage{listings}
\lstset{language=C}
...
\begin{document}
\lstinputlisting{main.c}
\end{document}
Estes exemplos muito simples podem ser decorados de muitas maneiras diferentes e, é claro, existem outras linguagens no vocabulário do pacote além da C

Durante muito tempo, o listings foi considerado como o suprassumo em matéria de listas no (La)TeX. Nos últimos anos, alternativas viáveis apareceram. O Highlight é atraente se você precisar de mais de um formato de saída para seu programa: assim como a saída em (La)TeX, o highlight produz representações da listagem do seu programa em (X)HTML, RTF e XSL-FO O manual conduz você através dos detalhes da definição de um arquivo de parâmetros para uma “nov” linguagem, bem como dos detalhes de apresentação de uma linguagem.

O pacote minted é outra alternativa que oferece os meios para criar definições de nova linguagem. Ele requer que código seja processado usando um script (python) externo, o Pygments. O Pygments precisa de um “analisador léxico” que conheça a linguagem que você quer processar; muitos destes estão disponíveis para as linguagens mais comumente usados, e existem instruções sobre como fazer o seu no site do Pygments site

O uso do minted pode ser tão simples quanto

\begin{minted}{‹language›}

\end{minted}
que processa o código do programa dinamicamente, na hora da digitação — embora tal uso provavelmente exija que o processamento separado esteja habilitado.

Por um caminho bem diferente, o pacote showexpl suporta a digitação de código (La)TeX e sua saída tipografada, em ‘painéis’ paralelos. (Isso poderia dar suporte para textos de instrução de (La)TeX , ou para artigos em publicações do grupo de usuários de TeX.) O pacote usa o listings para seu painel de (La)TeX, e compõe o resultado em uma caixa simples para o outro painel.

Sistemas estabelecidos mais antigamente, e muito menos poderosos, incluem:

c2latex
c2latex
C++2LaTeX
c++2latex
highlight
highlight
lgrind
lgrind
listings.sty
listings
minted.sty
minted
showexpl.sty
showexpl
tgrind
tgrind
tiny_c2l
tiny_c2l

This answer last edited: 2013-03-28


Do you have any question? Ask on: latex.net.br - we love qood questions!