Índice
Hace unas semanas que aprendí a usar LaTeX , y cada vez me gusta más, proporciona una calidad a los documentos impecable. De hecho, estoy entregando las prácticas de la facultad en que he reescrito el Curso de programación Android por completo.
Sin embargo, una de las cosas que más me ha costado conseguir es encontrar alguna forma que me gustase de resaltar la sintaxis en latex del código fuente. Tras mucho buscar por internet encontré un paquete que concluyó con mi búsqueda, se llama minted.
Instalando dependencias
Para instalarlo, es necesaria una versión de python igual o superior a la 2.6, y Pygments. Para instalar el último ejecuta:
# easy_install Pygments
Si no tienes instalado el programa easy_install, ejecuta:
# aptitude install python-setuptools
Instalar minted
Descarga el paquete desde su repositorio. Extráelo y sitúate en su directorio. Luego ejecuta la instrucción make.
Algunos ejemplos
Ya está todo listo para usar, empecemos con un ejemplo básico extraido del manual, disponible para descargar en las referencias:
\documentclass{article}
\usepackage{minted}
\begin{document}
\begin{minted}{c}
/**
* Ejemplo resaltado sintaxis con minted
*/
int main() {
printf("hello, world");
return 0;
}
\end{minted}
\end{document}
Este trozo de código dará como resultado lo siguiente:
Insertar código desde un archivo de código fuente
Normalmente, si tenemos un código fuente con muchas líneas es más cómodo incluirlo directamente en lugar de copiar todas esas líneas. Minted proporciona un comando para tal fin. \newmintedfile[]{}
. Veamos un ejemplo:
\newmintedfile[myJava]{java}{
linenos,
numbersep=5pt,
gobble=0,
frame=lines,
framesep=2mm,
}
Con este comando, hemos definido una nueva función (myJava), que permitirá incluir el código fuente de un archivo al documento pdf. Por ejemplo. Supongamos que el contenido del fichero miCodigo.java es el siguiente:
package com.elbauldelprogramador.actividades;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class Activity1 extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.segunda_actividad);
// Capturamos los objetos gráficos que vamos a usar
TextView text = (TextView) findViewById(R.id.textView1);
Button button = (Button) findViewById(R.id.boton);
// Agregamos al textView un texto
text.setText(R.string.cadena1);
// Cambiamos el texto al botón
button.setText(R.string.salir);
// Evento onclick del botón, cuando se pulse,
// cerramos la actividad
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
finish();
}
});
}
}
Para incluirlo en el documento, haremos lo siguiente:
\documentclass{article}
\usepackage{minted}
\newmintedfile[myJava]{java}{
linenos,
numbersep=5pt,
gobble=0,
frame=lines,
framesep=2mm,
}
\begin{document}
Ejemplo de \textbackslash newmintedfile:
\myJava[label="miCodigo.java"]{miCodigo.java}
\end{document}
linenos muestra el número de línea, numbersep es la separación entre el código y el número de línea, gobble es la columna desde la que empezar a mostrar código, frame dibuja las líneas enmarcando el código y framsep es la separación entre la línea y el código.
El resultado será:
Creando un comando
Puede resultar incómodo y pesado tener que escribir una y otra vez \myJava[label=”*”]{*.java}. Así que creamos un comando para facilitar las cosas:
\newmintedfile[myJava]{java}{
linenos,
numbersep=5pt,
gobble=0,
frame=lines,
framesep=2mm,
}
\newcommand{\myJavaCode}[2]{
\myJava[label=#2.java]{#1.java}
}
Ahora en lugar de usar myJava para incluir ficheros fuente en el documento, usamos un comando definido por nosotros (myJavaCode). Sustituyendo la línea \myJava[label="miCodigo.java"]{miCodigo.java}
del ejemplo anterior por
\myJavaCode{src/miCodigo}{miCodigo}
Obtenemos el mismo resultado, el primer argumento es la ruta al fichero y el segundo la etiqueta a mostrar en el documento.
Conclusiones
Para mi, minted es el mejor paquete que hay para resaltar código en LaTeX. Y recomiendo a todo el mundo que aprenda a programar en él.
Referencias
- Manual de referencia Minted »» Descargar
- Repositorio del paquete »» Visitar repositorio
¿Has visto algún error?: Por favor, ayúdame a corregirlo contactando conmigo o comentando abajo.