Saltar al contenido

Listados de código en LaTeX

Pon el código en un entorno verbatim, lstlisting o minted, o usa \verb|...| dentro del texto; Scissor LaTeX lo compone en una fuente monoespaciada exactamente como lo escribiste y colorea la sintaxis cuando indicas el lenguaje.

verbatim

Dentro de verbatim no se interpreta nada: las barras invertidas, las llaves, $ y % se imprimen tal cual, y se conservan los saltos de línea y los espacios. Es la forma más sencilla de mostrar código o la salida de un terminal.

Un bloque verbatim

\begin{verbatim}
for i in range(44):
    print(i)   # $ and \textbf stay as typed
\end{verbatim}

Código en línea: \verb

\verb muestra un fragmento corto de código dentro de una frase. El carácter justo después de \verb es el delimitador; elige uno que no aparezca en el código, como | o +.

Código en línea con \verb y \texttt

Call \verb|total(xs)| to add the list, or type \verb+x_1 = 44+.
For plain words in a monospaced font, \texttt{main.tex} is enough.
Compuesto por Scissor LaTeX: Código en línea con \verb y \texttt

\texttt{...} solo cambia la fuente: ahí los caracteres especiales como _ y % siguen necesitando escaparse, mientras que \verb los acepta tal cual.

listings: lstlisting con un lenguaje

El paquete listings te da lstlisting. Con language=... el código recibe colores de sintaxis.

lstlisting con language=Python

LaTeXPreámbulo: \usepackage{listings}Abrir en el editor (se abre en una pestaña nueva)
\begin{lstlisting}[language=Python]
def total(xs):
    """Add up the numbers in xs."""
    return sum(xs)

print(total([40, 4]))  # 44
\end{lstlisting}
Compuesto por Scissor LaTeX: lstlisting con language=Python

\lstinline|código| es la forma en línea, como \verb.

minted

minted recibe el lenguaje como argumento. En una instalación de TeX necesita Python y la opción -shell-escape; en Scissor LaTeX funciona sin ninguno de los dos.

minted con un lenguaje

LaTeXPreámbulo: \usepackage{minted}Abrir en el editor (se abre en una pestaña nueva)
\begin{minted}{rust}
fn main() {
    let answer = 40 + 4;
    println!("{}", answer);
}
\end{minted}
Inline: \mintinline{rust}{let x = 44;}
Compuesto por Scissor LaTeX: minted con un lenguaje

Qué se lee

ComandoEn Scissor LaTeXNotas
verbatim, verbatim*Funciona
\verb, \verb*Funciona
lstlistingEn parteSe lee language=; las demás opciones (numbers, caption, frame, basicstyle, firstline...) se ignoran.
\lstinlineFuncionaSin colores de sintaxis en línea.
\lstset{...}Se omiteUn lenguaje fijado aquí no se usa; indica language= en cada listado.
mintedEn parteSe lee el lenguaje; las opciones como linenos y frame se ignoran.
\mintinline{lang}{código}FuncionaSin colores de sintaxis en línea.
Verbatim, BVerbatim (fancyvrb)En parteSe muestran como verbatim; las opciones se ignoran.
\lstinputlisting{archivo}, \inputminted{lang}{archivo}No se admiteSe omiten con un mensaje; pega el código en el documento.
\lstnewenvironment, \newmintedNo se admite

Hay colores de sintaxis para los lenguajes habituales, entre ellos Python, C, C++, Java, JavaScript, TypeScript, Rust, Go, Ruby, R, Julia, MATLAB, SQL, Bash, HTML, CSS, JSON, YAML, TeX y LaTeX. Los nombres de lenguaje no distinguen mayúsculas y minúsculas, así que Python y python son lo mismo. Un nombre que no se reconoce da código monoespaciado sin colores.

Código desde un archivo

En una instalación de TeX, \lstinputlisting y \inputminted leen código de otro archivo. Scissor LaTeX los omite y lo indica en la pestaña Problemas:

\lstinputlisting se omite

LaTeXPreámbulo: \usepackage{listings}Abrir en el editor (se abre en una pestaña nueva)
The script below is not shown:
\lstinputlisting[language=Python]{scripts/total.py}
Paste the code into an lstlisting environment instead.

Pestaña Problemas: 1 included file is not part of this conversion

Qué cambia respecto a una instalación de TeX

Consulta listings y minted para las páginas de los paquetes. Los manuales completos están en CTAN: listings, minted y fancyvrb.

Preguntas y respuestas

¿Cómo añado un bloque de código en LaTeX?

Envuelve el código en \begin{verbatim} ... \end{verbatim}, o en lstlisting con [language=Python] para tener colores de sintaxis.

¿Funciona minted sin shell escape?

En Scissor LaTeX, sí: los entornos minted se colorean sin Python ni -shell-escape. En una instalación de TeX, minted sigue necesitando ambos.

¿Por qué faltan los números de línea de mi listado?

Scissor LaTeX ignora numbers=left y las demás opciones de diseño de listings. Solo se lee el lenguaje.

Scissor LaTeX compone cada ejemplo de esta página al generar el sitio. Última actualización: 2026-11-07.