Insertar código en este documento LaTeX con sangría
¿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.
Utilice listings
el 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:
También puedes utilizar el entorno textual.
\begin{verbatim}
your
code
example
\end{verbatim}
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}
breaklines
No 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 \lstinline
comando, que tiene las mismas funciones de resaltado de sintaxis que los comandos \lstlisting
y \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 \mintinline
comando. Like \lstinline
, \mintinline
proporciona 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}
Los paquetes especializados como minted
, que se basan en Pygments para realizar el formateo, ofrecen varias ventajas sobre el listings
paquete. Para citar el minted
manual,
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.