Diferencia entre revisiones de «Manual de LaTeX»

Contenido eliminado Contenido añadido
Sin resumen de edición
m Artículo completo
Línea 211:
 
El código se ha compilado con XeLaTeX para facilitar que las exclamaciones funcionen en el trozo de código C.
 
 
===Inclusión de ficheros automática===
 
Si se tiene un conjunto de ficheros de código fuente para incluir, se puede uno encontrar repitiendo una y otra vez el mismo texto LaTeX
Aquí es donde las macros muestran toda su potencia:
 
<source lang="latex">
\newcommand{\includecode}[2][c]{\lstinputlisting[caption=#2, escapechar=, style=custom#1]{#2}<!---->}
% ...
 
\includecode{sched.c}
\includecode[asm]{sched.s}
% ...
 
\lstlistoflistings
</source>
 
Con este ejemplo, se crea un comando para facilitar al máximo la inclusión de código. Se establece un estilo por defecto para que sea ''customc''. Todos los listados tendrán su nombre el el título: no hay que escribir el nombre del fichero dos veces gracias a la macro.
 
===Problemas de codificación (¡¡¡IMPORTANTE EN ESPAÑOL!!!)===
 
En el ejemplo anterior, para evitar el problema de codificación que surge con LaTeX y el uso de utf8 dentro de listing, se ha compilado los ejemplos con XeLaTeX.
 
El problema es que, por defecto, {{LaTeX/Package|listings}} no soporta codificación multibyte para el código fuente.
 
Para poder manejar UTF-8, resulta necesario decirle a listings cómo interpretar los caracteres especiales que surjan entre el código fuente, mediante la definición de los mismos.
 
Esto se puede hacer de la siguiente forma:
 
<source lang="latex">
\lstset{literate=
{á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1 {ú}{{\'u}}1
{Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1
{à}{{\`a}}1 {è}{{\`e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1
{À}{{\`A}}1 {È}{{\'E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1
{ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
{Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
{â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1
{Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1
{œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1
{ű}{{\H{u}}}1 {Ű}{{\H{U}}}1 {ő}{{\H{o}}}1 {Ő}{{\H{O}}}1
{ç}{{\c c}}1 {Ç}{{\c C}}1 {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1
{€}{{\EUR}}1 {£}{{\pounds}}1
}
</source>
 
La tabla anterior cubre la mayoría de los caracteres de los idiomas latinos:
 
Para una explicación más detallada del uso de {{LaTeX/LaTeX|code=literate<!---->}} se puede revisar la sección 6.4 en la [http://mirrors.ctan.org/macros/latex/contrib/listings/listings.pdf Documentación de listings].
 
Otra posibilidad es sustituir el paquete {{LaTeX/LaTeX|code=\usepackage{listings}<!---->}} (en el preámbulo) por {{LaTeX/LaTeX|code=\usepackage{listingsutf8}<!---->}}.
 
===Personalización de los títulos===
 
Se pueden tener unos títulos (caption y/o title) muy avanzados gracias al paquete {{LaTeX/Package|caption}}. Veamos un ejemplo de uso con {{LaTeX/Package|listings}}.
 
<source lang="latex">
\usepackage{caption}
\usepackage{listings}
 
\DeclareCaptionFont{white}{ \color{white} }
\DeclareCaptionFormat{listing}{
\colorbox[cmyk]{0.43, 0.35, 0.35,0.01 }{
\parbox{\textwidth}{\hspace{15pt}#1#2#3}
}
}
\captionsetup[lstlisting]{ format=listing, labelfont=white, textfont=white, singlelinecheck=false, margin=0pt, font={bf,footnotesize} }
 
% ...
 
\lstinputlisting[caption=My caption]{sourcefile.lang}
</source>