lunes, 4 de marzo de 2013

Lista de acrónimos con LaTeX

Finalizando la memoria del Proyecto Fin de Carrera, deje para el final la lista de acrónimos, había estado usando glossaries , pero cuando procedí a poner la lista con /printglossaries (justo antes de la lista de figuras y de la bibliografia) no salia la lista de acrónimos.

Para empezar, si no tenemos xindy o glossaries, vamos a descargarlos desde http://www.ctan.org/pkg/xindy y http://www.ctan.org/pkg/glossaries
Al descargarlos tenemos dos archivos comprimidos *.zip, de los cuales, el de glossaries lo descomprimimos en /usr/share/texmf/ y el de xindy  en /opt/xindy-2.2/
Añadimos al PATH los directorios donde se encuentran estos dos binarios. En el caso que usamos xindy.

En mi caso uso Texmaker, así que lo que hice fue añadir un nuevo comando de usuario llamado makeglossaries, cuyo comando es /usr/share/texmf/scripts/glossaries/makeglossaries %

Una vez tenemos esto, tendremos que ejecutar PDFLaTeX , makeglossaries, y PDFLaTeX.

Ejemplo de documento: 

\documentclass[12pt,a4paper]{book}

\usepackage[utf8]{inputenc}
\usepackage[spanish]{babel}
\usepackage{graphicx}
\usepackage{amsmath,amssymb}
\usepackage{listings}
\usepackage{eurosym}
\usepackage{pdfpages}

\usepackage[acronym,shortcuts]{glossaries}

\makeglossaries
\input{./acronimos.tex}


\usepackage[left=2.5cm,top=3.5cm,right=2.5cm,bottom=3cm]{geometry}

\begin{document}

 

%Glosario de terminos
\printglossaries



\end{document}




En acronimos.tex tendremos los acrónimos. Por ejemplo:

\newacronym{AES}{AES}{Anvanced Encryption Standard}
\newacronym{CBC}{CBC}{Cipher-block chaining}
\newacronym{PFC}{PFC}{Proyecto Fin de Carrera}
\newacronym{SSL}{SSL}{Secure Socket Layer}
\newacronym{ANSI}{ANSI}{American National Standards Institute}
\newacronym{CNRI}{CNRI}{Corporation for National Research Initiatives}
\newacronym{PSF}{PSF}{Python Software Foundation}
\newacronym{PSFL}{PSFL}{Python Software Foundation Licence}
\newacronym{FSF}{FSF}{Free Software Foundation}
\newacronym{AP}{AP}{Access Point}
\newacronym{NIST}{NIST}{Instituto Nacional de Estándares y Tecnología}
\newacronym{LR-WPAN}{LR-WPAN}{Low-Rate Wireless Personal Area Network}
\newacronym{PAM}{PAM}{Pluggable Authentication Modules}
\newacronym{IDE}{IDE}{Integrated Development Environment}
\newacronym{CA}{CA}{Certificate Authority}
\newacronym{CSR}{CSR}{Certificate Signing Request}




En ambos documentos he suprimido bastante texto, de todos modos, cuando lo finalice completamente espero subirlo. 

Más información en los enlaces puestos anteriormente y en http://en.wikibooks.org/wiki/LaTeX/Glossary 

:)

6 comentarios:

  1. Hola, he seguido todos tus pasos y a mí no me funciona. También uso Texmaker.
    Lo que no entiendo cómo se hace es esto que explicas a continuación:
    En mi caso uso Texmaker, así que lo que hice fue añadir un nuevo comando de usuario llamado makeglossaries, cuyo comando es /usr/share/texmf/scripts/glossaries/makeglossaries %

    No sé si hay que compilarlo de otra forma o algo en especial. El caso es que yo para compilar le doy a F1 (compilación rápida). Ya que tu dices lo siguiente:
    Una vez tenemos esto, tendremos que ejecutar PDFLaTeX , makeglossaries, y PDFLaTeX.

    Esto no sé cómo se hace.

    Otra duda que tengo es con el comando input. Tu escribes: \input{.\acronimos.tex}. Entiendo que el ".\" antes del nombre del archivo es para indicar la carpeta donde está no? o para qué es? Yo al tener el archivo acronimos.tex en la misma carpeta que el principal, no debería poner nada no?

    También se podría poner el comando include: \include{acronimos} ??

    Un saludo y espero que me eches una mano ya que sólo me queda la lista de acrónimos para terminar mi proyecto fin de carrera. Muchas gracias por todo.

    ResponderEliminar
    Respuestas
    1. Buenas, doy por hecho que estas usando Linux. Con \input{.\acronimos.tex} lo que hago es añadir ese archivo al principal, para hacerlo más modular y no tener los acrónimos dentro del código principal, por motivos de tener la estructura más limpia. La ".\" es la ruta donde se encuentra el archivo, que es la misma carpeta donde está el archivo .tex principal. Como dice en la entrada, se puede hacer instalando glossaries directamente descomprimiento en /usr/share/texmf/, o algo más fácil, si estas en Linux (espero), instalando el paquete texlive-glossaries (o similar, depende de la distribución Linux que estes usando). Lo que tienes que hacer es crearte como la del ejemplo, quizás no te la esté generando, porque para que esta lista sea válida, antes tiene que estar los acrónimos en las páginas de tu PFC, por ejemplo, en mi caso cada vez que ponia AES, lo hacia con \glspl{AES}, así cuando compilaba con PDFLaTeX, se generaba el .acn, y después es cuando haces makeglossaries y ya si se genera la lista de acronimos, se suele ver por pantalla algo así:

      [sink@hardcore ~/EjemploLaTeXAcronimos]$ makeglossaries ejemplo
      makeglossaries version 2.09 (2013-11-12)
      added glossary type 'acronym' (alg,acr,acn)
      makeindex -s "ejemplo.ist" -t "ejemplo.alg" -o "ejemplo.acr" "ejemplo.acn"
      This is makeindex, version 2.15 [TeX Live 2014/dev] (kpathsea + Thai support).
      Scanning style file ./ejemplo.ist.............................done (29 attributes redefined, 0 ignored).
      Scanning input file ejemplo.acn....done (1 entries accepted, 0 rejected).
      Sorting entries...done (0 comparisons).
      Generating output file ejemplo.acr....done (6 lines written, 0 warnings).
      Output written in ejemplo.acr.
      Transcript written in ejemplo.alg.


      Una vez que ya tienes la lista en el archivo de salida acr, solo tienes que compilar con PDFLaTeX de nuevo y ya tendrás tu lista de acrónimos.

      Espero que te sirva, y si tienes dudas, vuelve a escribir.
      A darle duro al PFC! que ya te queda poco :)

      Eliminar
  2. Estoy utilizando Windows 8 y sigo sin dar con la tecla. Yo en vez de utilizar el comando \input{./acronimos.tex} utilizo \include{acronimos} (también he probado con \input{acronimos.tex} y con \input{acronimos}) pero nunca me pone la lista de acrónimos. Lo que me hace es generarme dos páginas en blanco antes del Índice General.

    Lo que he escrito en el archivo acronimos.tex es lo siguiente:
    \newacronym{IR}{IR}{Infra Red}
    \newacronym{RF}{RF}{Radio Frequency}

    (son los dos primeros acrónimos que he encontrado en el primer capítulo).

    Y en el primer capítulo donde salían esos dos acrónimos he puesto lo siguiente (te copio el párrafo entero donde aparecen):

    En la figura \ref{fig:espectro} se observa el espectro radio electromagnético, en el cual las bandas infrarrojos (Infra Red o \glspl{IR}) y las de radiofrecuencia (Radio Frequency o \glspl{RF}) son las principales bandas de frecuencia utilizadas para establecer comunicaciones inalámbricas.

    A continuación te pongo cómo tengo el programa principal:

    \documentclass[12 pt,twoside,openright]{book}
    \usepackage[utf8]{inputenc}
    \usepackage[spanish]{babel}
    \usepackage[pdftex]{graphicx}
    \usepackage{float}
    \usepackage{booktabs}
    \usepackage{fancyhdr}
    \usepackage{colortbl}
    \usepackage{longtable}
    \usepackage{pifont} %paquete para hacer tick y cruz
    \usepackage{rotating} %para rotar cosas
    \usepackage{tabulary}
    \usepackage{tabularx}
    \usepackage{amssymb}
    \usepackage{amsmath} %paquete para introducir saltos de lineas en las ecuaciones mediante el comando split.

    %acronimos
    \usepackage{listings}
    \usepackage[acronym,shortcuts]{glossaries}

    \usepackage{tablefootnote}

    \makeglossaries
    \input{./acronimos.tex}
    %\include{acronimos}
    \begin{document}

    \frontmatter %damos el estilo que debe tener la parte frontal del libro (pagina de titulos, tabla de contenidos, prólogos)
    %\maketitle
    \pagenumbering{roman}

    %Glosario de terminos
    \printglossaries

    \tableofcontents
    \listoffigures
    \renewcommand{\listtablename}{Índice de tablas}
    \listoftables
    \mainmatter

    \include{capitulouno}

    %\include{capitulodos}

    %\include{capitulotres}

    %\include{capitulocuatro}

    %\include{capitulocinco}

    \backmatter

    \end{document}

    A ver si me puedes echar una mano con esto.

    En cuanto a compilar con PDFLatex no sé como se hace. Yo siempre compilo dandole en Texmaker dándole a la opción Herramientas -> Compilación rápida (F1).

    Un saludo y a ver si me puedes echar una mano con esto último.

    Muchísimas gracias.

    ResponderEliminar
    Respuestas
    1. Buenas, perdona que tarde, pero ando bastante liado últimamente. A simple vista tu código en LaTeX está bien, siempre y cuando como te comente, dentro del archivo "capitulouno" tienes esos acronimos referenciados con \glspl{RF} y \glspl{IR}, (cuando vayas a poner Radio Frequency pones \glspl{RF]), que veo que lo haces bien. Ahora, si usas TexMaker veras que hay dos flechas en la primera, una justo delate de donde pone "Compilacion Rapida" y otra delante de "Ver PDF", lo que tienes que hacer es quitar Compilación Rapida, y poner PDFLatex. Darle a la flecha (compilar el PDF), luego poner "Makeindex" o "makeglossaries" (Con makeindex es por probar, yo nunca lo hice así, ya que uso Linux y puedo llamar a makeglossaries desde linea de comandos), y le vuelves a dar a la flecha para que genere la lista de acrónimos, luego pones PDFLatex y vuelves a hacer lo mismo. Y ya si das a verPDF deberias poder ver la lista de acrónimos. Si no lo conisgues, a ver si mañana tengo tiempo y lo pruebo en Windows..

      Eliminar
  3. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  4. Sigo sin poder hacer la lista de acrónimos. He hecho lo q me has dicho pero nada...

    ResponderEliminar