viernes, 19 de diciembre de 2008

LaTeX: Insertar código C,pascal, html, etc(paquete listings)

Dejando a un lado el uso de paquetes como verbatim (que es más bien para poner texto plano) o algoritmhs (que es bueno para pseudocódigos y eso), el paquete listings está más especializado para poder pegar en nuestro documento código de algun lenguaje y que se vea con algo de formato.

Uso del paquete listings



Para poder usar los comandos del paquete hay que incluirlo poniendo en el preambulo de nuestro documento:






\usepackage{listings}

y para usarlo, por ejemplo con código PASCAL:





\begin{lstlisting}[language=Pascal, numbers=left, numberstyle=\tiny]
for i:=maxint to 0
begin
{ do nothing }
end;
\end{lstlisting}

o con código C






\begin{lstlisting}[language=C, numbers=left, numberstyle=\tiny]
for (int i:=MAX_INT;i>=0;i--)
{
do nothing
}
\end{lstlisting}

o MATLAB






\begin{lstlisting}[language=Matlab, numbers=left, numberstyle=\tiny]
for i=1:N
do nothing
end
\end{lstlisting}

Instalación del paquete listings


Hay que bajar de aqui:
http://www.ctan.org/tex-archive/macros/latex/contrib/listings/
los siguientes archivos:


  • listings.dtx

  • listings.ind

  • listings.ins

  • lstdrvrs.dtx


hay que colocar todos esos archivos en la misma carpeta en la que se encuentre el archivo latex.exe (de nuestro LaTeX).
Una vez hecho esto, ir a linea de comandos (Inicio->Ejecutar y en la ventana que parece escribri cmd) y nos movemos hasta la carpeta en la que esta latex.exe
ahi escribimos





latex listings.ins

y esto va a crear una serie de archivos, entre los que se encuentran:

  • lstmisc.sty

  • listings.sty

  • lstdoc.sty

  • lstlang1.sty

  • lstlang2.sty

  • lstlang3.sty

  • listings.cfg


Estos archivos los colocamos en las carpetas correspondientes (depende de la extension del archivo), que depende de nuestra distribucion de LaTeX.
Nota: Si no sabes o no encuentras las carpetas en las que debes colocar los archivos antes mencionados, pues copialos todos en la carpeta donde esta tu documento principal (.tex)

Para otras opciones y descripcion de ellas del paquete listings.sty, ver :


http://www.ctan.org/get/macros/latex/contrib/listings/listings.pdf

en ese mismo archivo se puede ver la lisat de lenguajes que soporta (ademas viene como definir uno propio ).

5 comentarios:

  1. [...] Blog de C/C++ y LaTeX Recopilación de temas relacionados con C/C++ y LaTeX « LaTeX: Insertar código C,pascal, html, etc(paquete listings) [...]

    ResponderEliminar
  2. Hola:

    Todo eso está muy bien. Sini embargo, yo tengo un problema que no he podido solucionar todavía. Es un problema de acentos. Mi código en C tiene comentarios con letras acentuadas. La codificación es UTF8 para todos los archivos *.tex y para el programa *.c

    No me marca un error al momento de compilar, pero el resultado es muy chistoso ! :

    En lugar de poner
    "Hola, cómo estás"
    pone
    "Hola, ócmo áests"

    Las letras acentuadas las pone antes, siempre.

    Mi programa dice:

    definecolor{lbcolor}{rgb}{0.9,0.9,0.9}
    lstset{language=c}
    lstset{commentstyle= extit,stringstyle=upshape,showstringspaces=false}
    lstset{backgroundcolor=color{lbcolor},rulecolor=}
    lstset{extendedchars=false}
    lstinputlisting{prog.c}

    Alguna idea de qué puede estar pasando? Ojalá me puedas ayudar.

    ResponderEliminar
  3. [...] LaTeX: Insertar código C,pascal, html, etc(paquete listings) [...]

    ResponderEliminar
  4. prueba en la linea:

    lstset{backgroundcolor=color{lbcolor},rulecolor=}

    La especificación de tu color con \color{lbcolor}

    ResponderEliminar