Listado de código fuente de LaTeX como en libros profesionales.
¿Cómo debería verse una lista de código fuente de látex para producir un resultado como el de los libros conocidos, por ejemplo uno para Spring Framework? Lo intenté con el paquete de listados de látex pero no pude producir algo que se viera tan bien como el siguiente. Así que lo que más me interesa son las instrucciones de formato para producir algo como el siguiente ejemplo (del capítulo de muestra de Manning para Spring in Action ):
EDITAR Con la ayuda especialmente de Tormod Fjeldskår, aquí está el fragmento completo para producir el aspecto deseado:
\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}}
Úselo con esto en su documento:
\lstinputlisting[label=samplecode, caption=A sample]{sourceCode/HelloWorld.java}
Me parece que lo que realmente quieres es personalizar el aspecto de los subtítulos. Esto se hace más fácilmente usando el caption
paquete. Para obtener instrucciones sobre cómo utilizar este paquete, consulte el manual (PDF) . Probablemente necesitarás crear tu propio formato de subtítulos personalizado, como se describe en el capítulo 4 del manual.
Editar: Probado con MikTex:
\documentclass{report}
\usepackage{color}
\usepackage{xcolor}
\usepackage{listings}
\usepackage{caption}
\DeclareCaptionFont{white}{\color{white}}
\DeclareCaptionFormat{listing}{\colorbox{gray}{\parbox{\textwidth}{#1#2#3}}}
\captionsetup[lstlisting]{format=listing,labelfont=white,textfont=white}
% This concludes the preamble
\begin{document}
\begin{lstlisting}[label=some-code,caption=Some Code]
public void here() {
goes().the().code()
}
\end{lstlisting}
\end{document}
Resultado:
Estoy contento con el listings
paquete:
Así es como lo configuro:
\lstset{
language=C,
basicstyle=\small\sffamily,
numbers=left,
numberstyle=\tiny,
frame=tb,
columns=fullflexible,
showstringspaces=false
}
Yo lo uso así:
\begin{lstlisting}[caption=Caption example.,
label=a_label,
float=t]
// Insert the code here
\end{lstlisting}
Y, haga lo que haga, configure el paquete de listados para usar una fuente de ancho fijo (como en su ejemplo; encontrará la opción en la documentación). La configuración predeterminada utiliza una tipografía de fuente proporcional en una cuadrícula, que es, en mi humilde opinión, increíblemente fea e ilegible, como se puede ver en las otras respuestas con imágenes. Personalmente, me irrita mucho tener que leer algún código escrito en una fuente proporcional.
Intente configurar una fuente de ancho fijo con esto:
\lstset{basicstyle=\ttfamily}