\usepackage{listings}
El paquete listings es la forma estándar de componer código fuente en LaTeX. Ofrece resaltado de sintaxis para más de 80 lenguajes, números de línea, marcos personalizados, colores de fondo y estilos con nombre, sin salir de su documento.
El siguiente ejemplo muestra una configuración mínima pero completa: cargar el paquete, configurarlo globalmente con \lstset{…} y colocar el código dentro de un entorno lstlisting con un lenguaje y un título.
\documentclass{article}
\usepackage{listings}
\usepackage{xcolor}
% Global listings configuration
\lstset{
basicstyle=\ttfamily\small,
keywordstyle=\color{blue}\bfseries,
commentstyle=\color{gray}\itshape,
stringstyle=\color{orange},
breaklines=true,
showstringspaces=false,
frame=single,
rulecolor=\color{black!20},
tabsize=2,
}
\begin{document}
\begin{lstlisting}[language=Python, caption={Hello World in Python}]
def greet(name: str) -> None:
# Print a personalised greeting
message = f"Hello, {name}!"
print(message)
greet("World")
\end{lstlisting}
\end{document}Add \usepackage{listings} and optionally \usepackage{xcolor} to your preamble. Wrap code in a \begin{lstlisting}…\end{lstlisting} environment.
Especifique el lenguaje con la opción language=: Python, C++, Java, Bash, SQL, HTML y más de 80 están integrados y aplican el color de las palabras clave automáticamente.
Use caption={…} to add a numbered caption below the listing, and label={lst:name} for cross-references with \ref{lst:name} anywhere in your document.
\lstset{} applies settings globally to all listings. Place it in your preamble after \usepackage{listings} to avoid repeating options on every environment.
Defina un estilo con nombre con \lstdefinestyle{name}{…} y actívelo globalmente con \lstset{style=name}. El siguiente ejemplo crea colores personalizados para el fondo, los comentarios, las palabras clave y las cadenas, y luego los muestra con una implementación de búsqueda binaria en C++.
La opción frame=tb dibuja una línea horizontal encima y debajo del listado, mientras que numbers=left añade números de línea en el margen izquierdo.
\documentclass{article}
\usepackage{listings}
\usepackage{xcolor}
% Custom colour definitions
\definecolor{codegreen}{rgb}{0,0.6,0}
\definecolor{codegray}{rgb}{0.5,0.5,0.5}
\definecolor{codepurple}{rgb}{0.58,0,0.82}
\definecolor{backcolour}{rgb}{0.95,0.95,0.92}
\lstdefinestyle{mystyle}{
backgroundcolor=\color{backcolour},
commentstyle=\color{codegreen},
keywordstyle=\color{magenta}\bfseries,
numberstyle=\tiny\color{codegray},
stringstyle=\color{codepurple},
basicstyle=\ttfamily\footnotesize,
breakatwhitespace=false,
breaklines=true,
captionpos=b,
keepspaces=true,
numbers=left,
numbersep=5pt,
showspaces=false,
showstringspaces=false,
showtabs=false,
tabsize=2,
frame=tb,
}
\lstset{style=mystyle}
\begin{document}
\begin{lstlisting}[language=C++, caption={Binary search}, label={lst:binsearch}]
#include <iostream>
using namespace std;
int binarySearch(int arr[], int n, int target) {
int left = 0, right = n - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == target) return mid;
else if (arr[mid] < target) left = mid + 1;
else right = mid - 1;
}
return -1; // not found
}
\end{lstlisting}
\end{document}Use backgroundcolor=\color{name} inside \lstdefinestyle{} to apply a tinted background. Define custom colours first with \definecolor{name}{rgb}{r,g,b}.
Enable with numbers=left (or right). Control the font size and colour with numberstyle=\tiny\color{gray} and adjust the gutter width via numbersep=5pt.
La opción frame= dibuja bordes: single (recuadro completo), tb (solo líneas superior e inferior), lines (líneas superior e inferior) o none. Combínela con rulecolor= para líneas con estilo.
listings incluye conjuntos de palabras clave integrados para más de 80 lenguajes de programación y de marcado. Especifique uno con language= en el entorno o globalmente en \lstset{}.
¿No aparece en la lista? Defina el suyo con \lstdefinelanguage; consulte la sección siguiente.
Cuando su lenguaje no está integrado, use \lstdefinelanguage{name}{…} para declarar las palabras clave, la sintaxis de los comentarios y los delimitadores de cadenas. Colóquelo en el preámbulo antes del primer uso.
\lstdefinelanguage{MyLang}{
keywords={let, const, fn, return, if, else},
keywordstyle=\color{blue}\bfseries,
sensitive=true,
comment=[l]{//},
commentstyle=\color{gray}\itshape,
string=[b]",
stringstyle=\color{orange},
}
\begin{lstlisting}[language=MyLang]
fn add(a: Int, b: Int) -> Int {
return a + b // sum of two integers
}
\end{lstlisting}Ambos paquetes componen código, pero lo hacen con enfoques muy distintos. Elija según su entorno de compilación y sus necesidades de resaltado.
Abra el ejemplo de listings con estilo (con colores personalizados, números de línea y una búsqueda binaria en C++) directamente en el playground de FormaTeX. Edite y compile a PDF en segundos, sin instalación.
Yes. The listings package ships with every major LaTeX distribution (TeX Live, MiKTeX, MacTeX). You do not need to install anything extra — just add \usepackage{listings} to your preamble.
Pass numbers=left or numbers=right to \lstset{} or directly on the environment as an option. Control the style with numberstyle=\tiny\color{gray} and the gap width with numbersep=5pt.
Not directly — listings processes its content as plain ASCII by default. For accented characters (é, ü, etc.) add inputencoding=utf8 and define each character with \lstset{literate={é}{{\'{e}}}1 ...}. For full Unicode support, consider the minted package with LuaLaTeX.
El entorno verbatim reproduce el texto carácter por carácter sin ningún formato. listings parte de esa base y añade resaltado de sintaxis, números de línea, títulos, marcos, referencias cruzadas y detección de palabras clave según el lenguaje, lo que lo hace mucho más adecuado para componer código fuente real.
\end{document}
Use la API de FormaTeX o el playground para compilar documentos con el paquete listings. No necesita instalación local de TeX: envíe su código fuente y reciba un PDF.