Como uma listagem de código-fonte em látex deve produzir uma saída como nos livros conhecidos, por exemplo, um para o Spring Framework? Eu tentei com o pacote de listas de látex, mas não foi capaz de produzir algo que parecia tão bom quanto o abaixo. Portanto, estou interessado principalmente nas instruções de formatação para produzir algo como a amostra abaixo (do capítulo de amostra de Manning para o Spring in Action ):
EDITAR Com a ajuda especialmente de Tormod Fjeldskår, aqui está o trecho completo para produzir a aparência desejada:
\usepackage{listings}
\usepackage{courier}
\lstset{
basicstyle=\footnotesize\ttfamily, % Default font
% numbers=left, % Location of line numbers
numberstyle=\tiny, % Style of line numbers
% stepnumber=2, % Margin between line numbers
numbersep=5pt, % Margin between line numbers and text
tabsize=2, % Size of tabs
extendedchars=true,
breaklines=true, % Lines will be wrapped
keywordstyle=\color{red},
frame=b,
% keywordstyle=[1]\textbf,
% keywordstyle=[2]\textbf,
% keywordstyle=[3]\textbf,
% keywordstyle=[4]\textbf, \sqrt{\sqrt{}}
stringstyle=\color{white}\ttfamily, % Color of strings
showspaces=false,
showtabs=false,
xleftmargin=17pt,
framexleftmargin=17pt,
framexrightmargin=5pt,
framexbottommargin=4pt,
% backgroundcolor=\color{lightgray},
showstringspaces=false
}
\lstloadlanguages{ % Check documentation for further languages ...
% [Visual]Basic,
% Pascal,
% C,
% C++,
% XML,
% HTML,
Java
}
% \DeclareCaptionFont{blue}{\color{blue}}
% \captionsetup[lstlisting]{singlelinecheck=false, labelfont={blue}, textfont={blue}}
\usepackage{caption}
\DeclareCaptionFont{white}{\color{white}}
\DeclareCaptionFormat{listing}{\colorbox[cmyk]{0.43, 0.35, 0.35,0.01}{\parbox{\textwidth}{\hspace{15pt}#1#2#3}}}
\captionsetup[lstlisting]{format=listing,labelfont=white,textfont=white, singlelinecheck=false, margin=0pt, font={bf,footnotesize}}
Use-o com isso no seu documento:
\lstinputlisting[label=samplecode, caption=A sample]{sourceCode/HelloWorld.java}
Respostas:
Parece-me que o que você realmente deseja é personalizar a aparência das legendas. Isso é feito com mais facilidade usando o
caption
pacote. Para obter instruções sobre como usar este pacote, consulte o manual (PDF) . Você provavelmente precisaria criar seu próprio formato de legenda personalizado, conforme descrito no capítulo 4 do manual.Edit: Testado com MikTex:
Resultado:
fonte
Estou feliz com o
listings
pacote:Aqui está como eu o configuro:
Eu uso assim:
fonte
E, por favor, faça o que fizer, configure o pacote de listagens para usar fonte de largura fixa (como no seu exemplo; você encontrará a opção na documentação). A configuração padrão usa fonte proporcional tipográfica em uma grade, que é, IMHO, incrivelmente feia e ilegível, como pode ser visto nas outras respostas das figuras. Eu sou pessoalmente muito irritado quando preciso ler algum código digitado em uma fonte proporcional.
Tente definir a fonte de largura fixa com este:
fonte
Eu me pergunto por que ninguém mencionou o pacote Minted . Possui realce de sintaxe muito melhor que o pacote de listagem LaTeX. Ele usa pigmentos .
Exemplo no LaTeX:
O que resulta em:
Você precisa usar a bandeira
-shell-escape
com o comando pdflatex.Para mais informações: https://www.sharelatex.com/learn/Code_Highlighting_with_minted
fonte
listings
).Experimente o
listings
pacote. Aqui está um exemplo do que eu usei há algum tempo para ter uma lista Java colorida:Você pode personalizar isso. Existem várias referências do pacote de listagens. Basta pesquisar no Google.
fonte
Dê uma olhada no
algorithms
pacote, especialmente noalgorithm
ambiente.fonte
algorithm
meio ambiente, nãoalgorithmic
.algorithm
é um contêiner flutuante, que parece muito bom. Você pode colocar o que quiser dentro, mesmo oslisting
mencionados.Existem várias outras coisas que você pode fazer, como selecionar novas fontes:
fonte
Para código R eu uso
E parece exatamente assim
fonte