Insertar código en este documento LaTeX con sangría

Resuelto sixtyfootersdude asked hace 14 años • 9 respuestas

¿Cómo inserto código en un documento LaTeX? ¿Hay algo como:

\begin{code}## Heading ##
...
\end{code}

Lo único que realmente necesito es sangría y una fuente de ancho fijo. El resaltado de sintaxis podría ser bueno, aunque definitivamente no es necesario.

sixtyfootersdude avatar Jul 04 '10 22:07 sixtyfootersdude
Aceptado

Utilice listingsel paquete.

Configuración simple para el encabezado LaTeX (antes \begin{document}):

\usepackage{listings}
\usepackage{color}

\definecolor{dkgreen}{rgb}{0,0.6,0}
\definecolor{gray}{rgb}{0.5,0.5,0.5}
\definecolor{mauve}{rgb}{0.58,0,0.82}

\lstset{frame=tb,
  language=Java,
  aboveskip=3mm,
  belowskip=3mm,
  showstringspaces=false,
  columns=flexible,
  basicstyle={\small\ttfamily},
  numbers=none,
  numberstyle=\tiny\color{gray},
  keywordstyle=\color{blue},
  commentstyle=\color{dkgreen},
  stringstyle=\color{mauve},
  breaklines=true,
  breakatwhitespace=true,
  tabsize=3
}

Puede cambiar el idioma predeterminado en medio del documento con \lstset{language=Java}.

Ejemplo de uso en el documento:

\begin{lstlisting}
// Hello.java
import javax.swing.JApplet;
import java.awt.Graphics;

public class Hello extends JApplet {
    public void paintComponent(Graphics g) {
        g.drawString("Hello, world!", 65, 95);
    }    
}
\end{lstlisting}

Aquí está el resultado:

Imagen de ejemplo

Cloudanger avatar Jul 04 '2010 15:07 Cloudanger

También puedes utilizar el entorno textual.

\begin{verbatim}
your
code
example
\end{verbatim}
midtiby avatar Jul 04 '2010 15:07 midtiby

A continuación se explica cómo agregar código en línea:

Puede agregar código en línea con {\tt code }o \texttt{ code }. Si desea formatear el código en línea, lo mejor sería crear su propio comando

\newcommand{\code}[1]{\texttt{#1}}

Además, tenga en cuenta que los bloques de código se pueden cargar desde otros archivos con

\lstinputlisting[breaklines]{source.c}

breaklinesNo es necesario, pero lo encuentro útil. Tenga en cuenta que tendrá que especificar \usepackage{ listados } para este.

Actualización: el paquete de listados también incluye el \lstinlinecomando, que tiene las mismas funciones de resaltado de sintaxis que los comandos \lstlistingy \lstinputlisting(consulte la respuesta de Cloudanger para obtener detalles de configuración). Como se mencionó en algunas otras respuestas, también está el paquete acuñado, que proporciona el \mintinlinecomando. Like \lstinline, \mintinlineproporciona el mismo resaltado de sintaxis que un bloque de código acuñado normal:

\documentclass{article}

\usepackage{minted}

\begin{document}
  This is a sentence with \mintinline{python}{def inlineCode(a="ipsum)}
\end{document}
alan avatar Jan 25 '2014 00:01 alan

Los paquetes especializados como minted, que se basan en Pygments para realizar el formateo, ofrecen varias ventajas sobre el listingspaquete. Para citar el mintedmanual,

Pygments proporciona un resaltado de sintaxis muy superior en comparación con los paquetes convencionales. Por ejemplo, los listados básicamente solo resaltan cadenas, comentarios y palabras clave. Los pigmentos, por otro lado, se pueden personalizar completamente para resaltar cualquier tipo de token que el idioma de origen pueda admitir. Esto podría incluir secuencias de formato especiales dentro de cadenas, números, diferentes tipos de identificadores y construcciones exóticas como etiquetas HTML.

Philipp avatar Jul 04 '2010 15:07 Philipp