2008-11-18 28 views
139

Estoy buscando un paquete LaTeX que resalte la sintaxis en el código. Por ejemplo, ahora mismo uso el bloque de pie de la letra para escribir código:Paquete LaTeX para resaltar la sintaxis del código en varios idiomas

\begin{verbatim} 
    <html> 
     <head> 
      <title>Hello</title> 
     </head> 
     <body>Hello</body> 
    </html> 
\end{verbatim} 

Y esto funciona bien para mostrar el código en mi documento. Pero, supongamos que quisiera resaltar el marcado HTML de la forma en que lo haría un IDE en el documento de salida. ¿Hay algún paquete que pueda ayudar?

Me gustaría hacer lo mismo para varios idiomas como Java, C#, HTML, CSS, etc.

+4

No estoy satisfecho con 'lstlisting'. No resalta el código XML en absoluto y se arruina al usar caracteres Unicode foráneos. JavaScript no es compatible, también, como parece. ¿Puede LGrind manejar tales cosas? – webjunkie

Respuesta

139

Puede usar el paquete listings. Es compatible con muchos idiomas diferentes y hay muchas opciones para personalizar el resultado.

\documentclass{article} 
\usepackage{listings} 

\begin{document} 
\begin{lstlisting}[language=html] 
<html> 
    <head> 
     <title>Hello</title> 
    </head> 
    <body>Hello</body> 
</html> 
\end{lstlisting} 
\end{document} 
+17

¿Esto hace colores por defecto? No estoy viendo resultados coloreados en mi uso de prueba, y no estoy seguro de si es un error de mi parte, o simplemente no es una función. – Benson

+11

Encontré una respuesta aquí: http://www.tjansson.dk/?p=419. Simplemente puede usar el comando lstset para establecer todo tipo de estilos para diferentes propiedades. – Benson

11

LGrind hace esto. Es un paquete maduro de LaTeX que ha existido desde que Adam era un vaquero y tiene soporte para muchos lenguajes de programación.

3

Uso principalmente lstlistings en papeles, pero para salida de color (para diapositivas) uso pygments en su lugar.

21

Recomiendo Pygments. Acepta un fragmento de código en cualquier idioma y saca la sintaxis del código LaTeX resaltado. Utiliza los paquetes fancyvrb y color para producir su salida. Yo personalmente lo prefiero al paquete de listado. Creo que fancyvrb crea resultados mucho más bonitos.

+1

Si bien admiro la macrología detrás de las listas, también estoy de acuerdo en que los pygments tienen una ventaja: resaltado más agradable, personalización más sencilla, capacidad para mezclar sintaxis y la capacidad de generar formatos distintos de Latex, como HTML. –

+0

En un documento de tipo 'beamer', esta es aparentemente la única opción funcional. Ni 'minted' ni' listings' se compilan correctamente con 'beamer'. –

+0

Sí, he usado 'listings' con' beamer', pero debe especificar que los marcos que incluyen listados son '[fragile]'. – Supernormal

116

Después de preguntar similar question he creado otro paquete que utiliza Pygments, y ofrece bastantes más opciones que texments. Se llama minted y es bastante estable y utilizable.

sólo para mostrar si fuera poco, aquí hay un código en negrita con acuñada:

Example code

+0

Esto es realmente un trabajo bastante bueno. Tener que instalar Pygments plantea un desafío, pero estoy seguro de que la mayoría de las personas estarán dispuestas a hacerlo. –

+1

@Vincent: Desafortunadamente, la instalación de Pygments en Windows es bastante más complicada en este momento (el usuario tiene que adaptar la variable 'PATH' y crear un script cmd). Espero convencer a los mantenedores de Pygments de que envíen 'pygramize' con un contenedor' .exe' para facilitar este paso. –

+1

Después de probar ambos listados y minted/Pygments, decidí que el acuñado era mucho mejor (más flexible). SIN EMBARGO, será necesario pasar por una docena de aros, actualizar a MiKTeX 2.8, instalar Python, instalar otros componentes, etc. La documentación acuñada es deficiente y no es compatible con romper largas colas. ¡Pero al final conseguí renderizar Java/XML en colores Eclipse! http: //www.jevon.org/wiki/Eclipse_Pygments_Style – jevon

4

me gustaría utilizar el minted package como se mencionó desde el desarrollador Konrad Rudolph en lugar de la listing package. Aquí es por qué:

lista de paquetes

El paquete de la lista no admite colores por defecto. Para usar colores, deberá incluir el paquete de color y definir reglas de color usted mismo con el comando \ lstset como se explica para el código de matlab here.

Además, el paquete de listado no funciona bien con unicode, pero puede corregir esos problemas como se explica here y here.

El siguiente código

\documentclass{article} 
\usepackage{listings} 

\begin{document} 
\begin{lstlisting}[language=html] 
<html> 
    <head> 
     <title>Hello</title> 
    </head> 
    <body>Hello</body> 
</html> 
\end{lstlisting} 
\end{document} 

produce la siguiente imagen:

enter image description here

paquete acuñada

El paquete acuñada admite colores, Unicode y se ve impresionante. Sin embargo, para usarlo, necesitas tener python 2.6 y pygments. En Ubuntu, se puede comprobar la versión del pitón en el terminal con

python --version 

y puede instalar Pygments con

sudo apt-get install python-pygments 

Entonces, ya acuñada hace llamadas a Pygments, es necesario compilarlo con - concha de escape como esto

pdflatex -shell-escape yourfile.tex 

Si utiliza un editor de látex como Texmaker o algo, yo recomendaría para agregar un usuario al mando, de modo que usted todavía puede compilarlo en el editor.

El siguiente código

\documentclass{article} 
\usepackage{minted} 
\begin{document} 

\begin{minted}{html} 
    <!DOCTYPE html> 
    <html> 
     <head> 
      <title>Hello</title> 
     </head> 

     <body>Hello</body> 
    </html> 
\end{minted} 
\end{document} 

produce la siguiente imagen:

enter image description here

Cuestiones relacionadas