Listado de código fuente de LaTeX como en libros profesionales.

Resuelto Mork0075 asked hace 15 años • 8 respuestas

¿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 ):

De La primavera en acción de Manning

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}
Mork0075 avatar Apr 12 '09 23:04 Mork0075
Aceptado

Me parece que lo que realmente quieres es personalizar el aspecto de los subtítulos. Esto se hace más fácilmente usando el captionpaquete. 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:

Avance

Tormod Fjeldskår avatar Apr 12 '2009 17:04 Tormod Fjeldskår

Estoy contento con el listingspaquete:

Ejemplo de listado

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}
Bastien Léonard avatar Apr 12 '2009 16:04 Bastien Léonard

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}
zvrba avatar Apr 12 '2009 17:04 zvrba