% -*- mode: latex; coding: utf-8-unix; TeX-PDF-mode: t; fill-column: 78 -*- \documentclass[a4paper,11pt]{article} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage[english,spanish]{babel} \usepackage{mathptmx} \usepackage{helvet} \usepackage{enumerate} \usepackage{url} \usepackage[pdftex]{hyperref} \parskip=3pt\clubpenalty=10000\widowpenalty=10000 \footnotesep=\baselineskip \addtocounter{tocdepth}{-1} \def\btx-{\textsc{Bib\TeX}} \def\ltx-{\LaTeX} \def\ltr#1-{<<\texttt{#1}>>} \def\tpf#1-{\ltr.#1-} \def\cmd#1-{``\texttt{\textbackslash#1}''} \newcommand{\flecha}{\ensuremath{\rightarrow}} \hypersetup{ colorlinks = true, pdftitle = {Guía casi completa de BibTeX}, pdfauthor = {Joaquin Ataz López}, pdfsubject = {Uso de BibTeX para la gestión de las referencias bibliográficas en LaTeX.}, pdfkeywords = {LaTeX BibTeX}, } \begin{document} \renewcommand{\thefootnote}{\fnsymbol{footnote}} \title{Guía \emph{casi} completa de \btx-\footnotemark} \footnotetext[1]{Copyright \copyright{} 2006. Joaquín Ataz López.\\ \selectlanguage{english} Permisssion is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by de Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A Copy of the license is included in the section entitled ``GNU Free Documentation License''.\\\selectlanguage{spanish} \emph{Se otorga permiso para copiar, distribuir o modificar este documento en los términos de la Licencia GNU para Documentación Libre, versión 1.2 o cualquier versión postrior publicada por la Free Software Foundation; sin secciones invariantes, sin textos de la cubierta frontal y sin textos de la cubierta posterior. Una copia completa de la licencia (en inglés) se incluye en el apéndice titulado ``GNU Free Documentation License''}. } \author{Joaquín Ataz López} \date{Versión 1, \today\\\footnotesize Para sugerencias y correcciones: \texttt{jal@um.es}} \maketitle \renewcommand{\thefootnote}{\arabic{footnote}} \begin{abstract} \btx- es un programa auxiliar de \ltx-, diseñado para facilitar el manejo de la bibliografía. Pero es más que eso: es también una herramienta que permite a \ltx- extraer datos de una base de datos e insertarlos adecuadamente formateados en un documento. Este texto pretende abordar todos los aspectos de \btx-, desde los más básicos a los más complejos, haciendo además hincapié en su \emph{españolización}, pues \btx-, como tantas otras herramientas, presupone que será usada para trabajar con documentos en inglés. \end{abstract} {\parskip=0pt\small\tableofcontents} \section*{Preliminar} \label{sec:preliminar} \addcontentsline{toc}{section}{Preliminar} \btx- es un programa que amplia notablemente las capacidades de \ltx- con el manejo de la bibliografía. Las grandes ventajas que ofrece su uso\footnote{ \btx- nos ayuda a gestionar nuestra bibliografía de manera independiente a los documentos en los que debe aparecer, al tiempo que nos permite generar listas de referencias bibliográficas formateadas de manera consistente y cambiar fácilmente determinadas características de las mismas. } se incrementan cuando se maneja una lista bibliográfica amplia y cuando con la misma bibliografía hay que escribir varios documentos. No hay mucha documentación sobre \btx- en español. Publicadas en papel sólo conozco dos obras, ambas de los mismos autores. La primera, \cite{cascales00}, sin duda constituye la más completa información sobre \btx- en nuestro idioma: mas de 40 páginas en las que se incluyen incluso los aspectos más avanzados. La segunda, \cite{cascales03}, no es tan extensa, pero constituye una buena introducción en la que se cubren todos los aspectos básicos y algunos aspectos avanzados. En formato electrónico y en nuestro idioma conozco otros dos documentos. Uno de Luis Seidel, \cite{seidel98} que es una buena introducción, aunque no resulta muy extenso. Otro de José Manuel Mira, \cite{mira04}, que no está pensado para quienes se aproximen por primera vez a esta herramienta, pues en él se explica un \emph{paquete} (\ltr flexbib-) cuyo uso presupone que ya conocemos lo básico del trabajo con \btx-. Como es lógico, en inglés hay mucha más documentación. Los textos principales son el apéndice B del Libro sobre \ltx- de Lamport, \cite{lamport86}, y los dos documentos que sobre \btx- escribió su autor, Oren Patashnik: \cite{patashnik88} y \cite{patashnik88-2}. El primero se ocupa de los aspectos más básicos, y está concebido como una \emph{corrección} del mencionado apéndice B, y el segundo se ocupa de los aspectos más avanzados. El problema que tienen estos documentos es que el trabajo de Lamport es difícil de localizar para el público español. Además de los documentos anteriores, en Internet pueden localizarse varios textos, la mayoría en inglés, algunos introductorios y otros no tanto. De entre ellos me parecen destacables \cite{young02} (un documento bastante equilibrado) y \cite{markey05}, dirigido a un público más avanzado que los otros textos mencionados. \begin{center}***\end{center} El objetivo fundamental de este documento es el de, partiendo de la documentación que se acaba de citar, salvo \cite{lamport86} al que no he tenido acceso, y alguna otra que no se ha mencionado todavía, como \cite{kopla}, poner al alcance del público hispanoparlante un documento en el que se aborden todos los aspectos de \btx-, desde los más básicos a los más avanzados. De ahí el título que he elegido, que tal vez a alguien le suene a pretencioso. Desde luego esta guía no es completa, porque hay aspectos sobre los que se pasa casi de puntillas\footnote{Como por ejemplo las herramientas para gestionar ficheros \tpf bib-, numerosos estilos bastante extendidos, o los paquetes de ampliación para trabajar con \btx-.}. Tal vez ni siquiera sea \emph{casi} completa. Pero sí es la más completa que conozco\footnote{Quizás con la salvedad de \cite{cascales00}. Aunque el problema de ese libro es que hoy no es ya fácil de localizar.}. La materia a tratar ha sido distribuida en tres partes, atendiendo a su nivel de complejidad y detalle: % \btx- es un programa escrito originalmente por Oren Patashnik, que amplía % notablemente las capacidades de \ltx- en relación con el manejo de % bibliografía. Resulta especialmente adecuado cuando se maneja una amplia % lista bibliográfica y cuando con la misma bibliografía hay que escribir % varios documentos. % Documentación sobre \btx- en el idioma español apenas hay. Publicado en % papel sólo conozco dos obras, las dos de los mismos autores, % \cite{cascales00} y \cite{cascales03}: en ambas se dedican varias páginas a % exponer los aspectos principales de \btx-; aunque la información de la % primera es bastante más extensa y muy posiblemente merezca ser considerada % la más amplia información en español existente sobre \btx- hasta ahora. En % formato electrónico, conozco dos trabajos en español: uno de Luis Seidel, % \cite{seidel98}, accesible desde el ftp que dedicado a TeX existe en la % Universidad de la Rioja (<<\url{ftp://ftp.tex.unirioja.es}>>), y en el que % se explican las ideas básicas, pero poco más, y un trabajo publicado en el % número 6 de TeXemplares, \cite{mira04}, (accesible desde la página Web de % CervanTeX), obra de José Manuel Mira y que explica el funcionamiento del % paquete \ltr flexbib-, diseñado para remediar alguno de los principales % problemas que el uso de \btx- plantea en relación con su falta de % estandarización y parametrización. Es un artículo muy interesante pero no % está dirigido a quienes se aproximen por primera vez al uso de esta % herramienta. % En inglés existe una más amplia documentación electrónica. Fundamentalmente % los dos documentos que sobre \btx- escribió el autor del programa, % \cite{patashnik88} y \cite{patashnik88-2} y que se instalan como % documentación del mismo. El primero se dedica a los aspectos % básicos\footnote{A este documentos puede reprochársele el que en él se asume % que el lector ha tenido acceso a \cite{lamport86}, y está redactado como % \emph{modificaciones} o cambios sobre lo que allí se dice. Es decir: no % plantea una explicación \emph{completa} y ordenada de \btx-.} y el % segundo cubre los más avanzados. Pero también es posible localizar por % Internet algunos otros documentos entre los que es de destacar el texto de % Young, \cite{young02}, disponible en % <<\url{wwwmaths.anu.edu.au/\~{}chrisw/LaTeX/}>>, así como el trabajo de % Markey, \cite{markey05}, disponible en la CTAN y que es sin duda el % documento más extenso que conozco sobre \btx-; además de, claro está, la % documentación que acompaña a los paquetes que amplían las posibilidades de % \btx-, y que suele encontrarse en inglés. % El objetivo fundamental de este documento es el de reunir toda la % documentación que acabo de citar y a partir de ella, y de algún otro texto % como \cite{kopla}, generar un documento en español que cubra todos los % aspectos de \btx-, desde los más simples a los más avanzados. De ahí el % título que he elegido, que tal vez suene a pretencioso. Desde luego esta % guía no es completa y es posible que tampoco sea \emph{casi} completa; % aunque desde luego es la más completa que conozco, si bien para algunos % aspectos, fundamentalmente los más avanzados de programación de estilos, es % superada por \cite{cascales00} y por \cite{markey05}\footnote{Porque en % ambos textos se recogen ejemplos de programación de estilos, cosa que yo % no hago. Pero en lo relativo a la información sobre la programación de % estilos en sí misma considerada, no hay en este documento menos % información que en aquellos, aunque aquí la información es ordenada a mi % modo y explicada a mi manera. }. % La materia tratada la he distribuido en tres partes, atendiendo a su nivel % de complejidad y detalle: \begin{enumerate} \item \textbf{\btx- básico:} Cubre los aspectos básicos del funcionamiento de \btx- que afectan a las instrucciones que hay que incluir en el documento principal de \ltx-, al diseño y mantenimiento de la base de datos, y a los distintos estilos estándar existentes, así como a los procedimientos para \emph{españolizarlos}. Es la parte más extensa del documento. Se supone que sólo con leer esta parte estaremos totalmente preparados para trabajar con \btx-. \item \textbf{\btx- intermedio:} En esta parte se describen aspectos que no son imprescindibles para trabajar con \btx-, pero cuyo conocimiento nos proporcionará un mayor control. En particular se aborda el uso de makebst para generar nuestro propio fichero de estilo. \item \textbf{\btx- avanzado:} Esta última parte entra a fondo en los ficheros de estilo de \btx-. En ella se describe el lenguaje que estos ficheros usan internamente. \end{enumerate} Para entender este documento no hay que ser un La\TeX perto, pero sí hay que saber lo suficiente de \ltx-, y del procedimiento estándar que en él se implementa para trabajar con referencias bibliográficas. En general el contenido de este documento valdrá para cualquier distribución de \ltx- que incluya \btx- (o sea, todas las distribuciones). Pero hay algunos aspectos que dependen de la concreta instalación que se haya hecho del sistema como, por ejemplo, la localización de los directorios en los que \btx- lee las bases de datos o los ficheros de estilo. En tales casos la explicación que doy no vale para cualquier sistema, sino exclusivamente para el mío, que es una instalación estándar de \ltx- hecha en un sistema donde funciona Ubuntu versión 6.06. Aunque, en general, estos aspectos dependientes del concreto sistema utilizado son tratados en nota a pie de página. Asimismo, a lo largo del presente documento se citan en ocasiones determinados paquetes para \ltx- o ficheros con estilos adicionales para \btx-. Salvo que se diga lo contrario, todos los paquetes y estilos citados están disponibles en la CTAN, (<<\emph{Comprehensive TeX Archives Network}>>) y deben buscarse en: \begin{itemize} \item <<\url{http://www.ctan.org/tex-archive/macros/latex/contrib/}>> \item <<\url{http://www.ctan.org/tex-archive/biblio/bibtex/contrib/}>> \end{itemize} \clearpage \part{\btx- básico} \label{part:btx-basico} \section{Dinámica general del sistema} \label{sec:entender-la-dinamica} \subsection{Preparar nuestro documento principal para usar \btx-} \label{sec:prep-nuestro-docum} \paragraph{Las órdenes bibliography y bibliographystyle:\\[\baselineskip]} \label{sec:las-orden-bibl} Para usar \btx- necesitamos dos cosas: \begin{enumerate} \item Tener almacenadas en un fichero aparte, las referencias bibliográficas que pensemos usar. \item En el lugar del documento principal en el que queramos que aparezca la lista con las referencias bibliográficas, debemos insertar las siguientes dos órdenes de \ltx-: {\small \begin{verbatim} \bibliography{MiBiblio} \bibliographystyle{MiEstilo} \end{verbatim} } Estas órdenes provocan que tras las oportunas compilaciones (véase la sección \ref{sec:como-generar-la}, página \pageref{sec:como-generar-la}), se genere una lista con las referencias bibliográficas usadas en el documento en la que, además, a cada una de ellas se le asignará una \emph{etiqueta} identificativa\footnote{\textbf{NOTA TERMINOLÓGICA:} En la documentación en castellano de \ltx- el término etiqueta se suele usar para hacer referencia a la cadena de texto que usan en las órdenes que sirven para tratar con referencias cruzadas tales como \cmd cite-, \cmd label-, \cmd index- o \cmd glosary-. Este tipo de \emph{etiquetas} son de uso puramente interno, es decir: \ltx- las usa como marcadores para apuntar a distintas partes del documento, pero no se imprimen en él. Junto a estas \emph{etiquetas} también se usa a veces el mismo término para hacer referencia al rótulo identificador de una entrada concreta de la lista de referencias bibliográficas, que se imprime en el documento. Para evitar confusiones, en este documento he reservado el término \emph{etiqueta} para las que llegan a imprimirse en el documento final, mientras que para referirme a las usadas internamente como marcadores, he reservado el término \emph{clave}. }. Los datos correspondientes a tales referencias serán buscados en el fichero \ltr MiBiblio.bib-, y la lista se formateará de acuerdo con las indicaciones de estilo que se contengan en el fichero de estilo \ltr MiEstilo.bst- y se insertará en el lugar del documento en el que se encuentre \cmd bibliography-. Las instrucciones de estilo controlarán asimismo el tipo de etiqueta identificativa que se asignará a las obras incluidas en la lista de referencias. Si queremos usar más de una base de datos podemos indicarlas, separadas por comas, como argumento de \cmd bibliography-. El efecto de esto último será que las distintas bases de datos indicadas se concatenerán en el orden en el que se indicaron\footnote{Lo que tiene importancia, porque en los ficheros \tpf bib- hay utilidades que sólo funcionan si el orden en el que ciertos elementos se encuentran dentro del fichero es el correcto. Por ejemplo, las abreviaturas deben estar definidas antes de ser usadas, de modo que si tenemos un fichero que recoja una serie de abreviaturas para \btx- y una base de datos que las use, siempre habrá que indicar el fichero de abreviaturas antes que la base de datos.}. \end{enumerate} \subsubsection*{Nombres de ficheros y directorios:} \label{sec:nombres-de-ficheros} El argumento de \cmd bibliography- y el de \cmd bibliographystyle- es el nombre de un fichero. Ambos nombres deben indicarse sin especificar la extensión, pues se asume que esta será la asignada al tipo de fichero de que se trate. De hecho \btx- no funciona correctamente cuando el nombre de la base de datos no tiene la extensión \tpf bib-, ni tampoco cuando en dicho nombre existe un espacio en blanco o algún carácter no anglosajón como eñes o vocales acentuadas\footnote{Así ocurre en mi sistema. Es posible que en otros sistemas operativos no exista este problema, aunque creo que ocurrirá lo mismo, al menos en lo relativo a la extensión de los ficheros; porque \cmd thebibliography- se limita a copiar en el fichero \tpf aux- el texto que recibe como argumento, y \btx- le añade a dicho texto la extensión \tpf bib-, salvo en el caso de que ya termine así.}. Los ficheros, el de bibliografía y el de estilo, deben encontrarse en el directorio de trabajo (el mismo en el que se encuentre el documento principal), o en alguno de los directorios en los que \ltx- busca por defecto, los cuales varían dependiendo de la distribución de \ltx- concreta de que se disponga\footnote{\label{nota:cnf}En \ltr web2c-, que es la distribución de \ltx- estándar para sistemas Unix/Linux, el árbol de ficheros de \TeX{} se encuentra en \ltr /usr/share/texmf- Allí hay un fichero denominado \ltr texmf.cnf- en el que se almacenan las variables que controlan las rutas de búsqueda por defecto de \ltx- y sus programas auxiliares. Aunque a veces dicho fichero se encuentra en el directorio \ltr web2c-, o en \ltr /etc/texmf/-. En dicho fichero se encuentran las dos variables que afectan a los directorios relativos a \btx-: BIBINPUTS (directorios en los que se buscarán los ficheros \tpf bib-) y BSTINPUTS (directorios en los que se buscarán los ficheros de estilo). }. Si los ficheros que queremos usar no están en alguno de estos directorios deberemos incluir, junto con el nombre del fichero, la ruta de acceso al mismo, en cuyo caso para dicha ruta se aplican las mismas reglas que para el nombre de los ficheros: no podrá contener espacios en blanco ni caracteres no anglosajones. \paragraph{Contenido de la lista de referencias a generar:\\[\baselineskip]} \label{sec:contenido-de-la} Las características \emph{formales} y de ordenación de la lista bibliográfica que se generará, dependen del estilo concreto usado, y se explican en la sección \ref{sec:los-estil-bibl}. Aquí me concentraré exclusivamente en los siguientes dos aspectos de la misma: \begin{description} \item[Qué referencias se incluyen en la lista:] En ella se contendrán todas las referencias bibliográficas que, a lo largo de nuestro documento, se hayan referenciado mediante los comandos \cmd cite- y \cmd nocite-: \begin{itemize} \item El comando \cmd cite[DatosAdicionales]\{clave\}- produce un doble efecto. En primer lugar, la referencia bibliográfica identificada en la base de datos mediante la clave recibida como parámetro, se incluirá en la lista bibliográfica. En segundo lugar, en el punto del documento donde se encontrara el comando, se imprimirá la etiqueta asignada a tal referencia en la lista de referencias junto con los datos adicionales que eventualmente hayamos incluido en el argumento opcional del comando. \item El comando \cmd nocite\{clave\}- produce el primero de los efectos indicados, pero no el segundo, es decir: la obra identificada por la clave será incluida en la lista bibliográfica final, y en ella se le asignará asimismo una etiqueta (como a todas las obras de la lista), pero en el lugar del documento en el que se encuentra el comando \cmd nocite- no se imprimirá nada. \end{itemize} Ambos comandos pueden recibir, como parámetro, las claves de varias referencias distintas, separadas mediante comas. Y en el caso concreto de \cmd nocite-, si se escribe \cmd nocite\{*\}- el efecto será incluir en la lista bibliográfica final todas las referencias bibliográficas incluidas en la base de datos. \item[Qué título tendrá la lista de referencias:] Dependiendo del tipo de documento de que se trate, el título de la lista de referencias está controlado por dos variables de nombre distinto\footnote{Lo que, en mi opinión, es una inconsistencia del sistema. El paquete \ltr chbibref- incluye un comando que permite cambiar el título de la lista de referencias con independencia de que se trate de un documento tipo \ltr book- o de un documento tipo \ltr article-.}. En documentos tipo \ltr book- para cambiar el título de la lista debe modificarse el comando \cmd bibname-, mientras que en documentos tipo \ltr article- el comando \ltx- que hay que modificar es \cmd refname-. El paquete \ltr babel-, por otra parte asigna a cada uno de estos comandos un valor dependiente del idioma. En español los nombres son ``Bibliografía'' para los libros y ``Referencias'' para los artículos. Si, por ejemplo, deseamos que la lista de referencias se titule ``Bibliografía citada'' y nuestro documento es de tipo \ltr book- tendremos incluir en el cuerpo de nuestro documento\footnote{Y es que, según mi experiencia, esta orden no produce efectos si se incluye en el preámbulo. Posiblemente por la interacción que la carga del paquete \ltr babel- produce.} la siguiente orden: \verb|\renewcommand{\bibname}{Bibliograf\'ia citada}| Asimismo, si se desea que en el índice de contenido de nuestro documento aparezca una entrada para la bibliografía, hay que incluirla a mano mediante la orden \cmd addscontentline- de \ltx-\footnote{El paquete \ltr tocbibind- hace que los índices y la lista de referencias se incluyan automáticamente en la tabla de contenido.}, la cual debe insertarse \emph{antes} de \cmd bibliography-, ya que si se inserta detrás, en el índice del documento aparecerá como página de la bibliografía la página en la que esta termina, y no la página en la que empieza\footnote{Véase más adelante en la sección \ref{sec:elementos-preamble}, a propósito de los elementos \ltr @preamble- de los ficheros \tpf bib-, cómo podemos incluir en un fichero \tpf bib- el código necesario para cambiar automáticamente el título a la lista de referencias y asegurarnos de que se incluye en la tabla de contenido.}. \end{description} \subsection{Cómo generar la lista de referencias bibliográficas} \label{sec:como-generar-la} Una vez que nuestro documento (llamémosle \ltr MiDoc.tex-) está preparado, en los términos que se acaban de exponer, debemos seguir los siguientes pasos: \begin{enumerate}[1º] \item Compilar con \ltx- nuestro documento \tpf tex-. Ello hará que se genere un fichero de extensión \tpf aux-, en el que se incluirá información sobre la base de datos a usar, el fichero de estilo a usar, y las referencias bibliográficas que hay que incluir en la lista de referencias. \item Ejecutar, desde la línea de comandos\footnote{Numerosas herramientas para \ltx- incorporan la posibilidad de ejecutar desde el mismo editor tanto \ltx- como cualquiera de sus programas auxiliares, en cuyo caso no sería preciso ejecutar \btx- \emph{desde la línea de comando}.}, la orden \ltr bibtex MiDoc-. Ello hará que \btx- lea el fichero \tpf aux-\footnote{De hecho \btx- se ejecuta sobre el fichero \tpf aux-, y no sobre el fichero \tpf tex-. Este detalle puede escapársenos porque \btx- no exige que se escriba la extensión. Pero si en el comando incluimos la extensión comprobaremos que \ltr bibtex MiDoc.tex- generaría un error, mientras que \ltr bibtex MiDoc.aux- funcionaría correctamente.}, generado por la anterior compilación del documento, extrayendo de él la información que necesita para trabajar: qué base de datos debe usar, qué estilo, y qué referencias hay que buscar en la base. Y así, tras extraer de la base de datos los registros precisos, y formatearlos de acuerdo con el estilo indicado, \btx- genera un fichero de extensión \tpf bbl- en el que se contienen los comandos de \ltx- necesarios para escribir la lista de referencias bibliográficas que hay que insertar en el documento principal. \btx- genera también un fichero adicional, de extensión \tpf blg- que es un fichero \tpf log-\footnote{Es decir: en él se almacenan todas las salidas generadas por \btx-, incluyendo los mensajes de advertencia o error. En caso de que algo no haya funcionado como esperábamos es imprescindible la consulta de este fichero para ver qué es lo que ha podido fallar.}. \item Compilar de nuevo el documento principal con \ltx-. En esta segunda compilación, al leer la orden \cmd bibliography-, se insertará en su lugar el contenido del fichero \tpf bbl- generado en el paso anterior. Asimismo la nueva compilación reescribe el fichero \tpf aux-, añadiendo a la información que ya existía en él la generada ahora, que es más completa pues incluye los datos de la lista bibliográfica final que se acaba de insertar en el documento. \item Esta última información es usada en una nueva compilación con \ltx- para escribir correctamente los rótulos que hay que colocar en lugar de los comandos \cmd cite-. Y eventualmente puede ser necesaria una nueva compilación: cuando alguno de los campos de la base de datos contenga algún comando de \ltx- que implique el uso de referencias cruzadas. En particular, el comando \cmd cite-. \end{enumerate} ¿Parece complicado? No lo es. Lo que ocurre es que lo he explicado incluyendo detalles sobre cómo interactúan entre sí los distintos ficheros generados durante las compilaciones de \ltx-. Simplificando y sin entrar en tales detalles, lo que hay que hacer es, tras haber indicado en el documento principal el nombre de la base de datos y del estilo, realizar una primera compilación con \ltx-, ejecutar \btx- y luego compilar de nuevo con \ltx- dos veces (o, en ciertos casos, tres). Esta doble (o triple) compilación final no es ninguna especialidad de \btx-, sino que es requerida por \ltx- siempre que trabaja con referencias cruzadas. Asimismo habrá que repetir el proceso cada vez que incorporemos a nuestro documento principal un comando que suponga una modificación de lista bibliográfica final, bien por cambiarle el estilo, bien por incluir o eliminar referencias bibliográficas. \section{Las bases de datos bibliográficas} \label{sec:las-bases-de} \subsection{Reglas generales sobre la escritura y codificación de los ficheros \tpf bib-} \label{sec:ficheros-.bib-1} Los ficheros \tpf bib- usados por \btx- son ficheros de texto sometidos a las siguientes reglas generales: \begin{enumerate} \item El tratamiento de los espacios en blanco, tabuladores y saltos de línea es similar al que estos caracteres reciben en \ltx-\footnote{Hay, no obstante, una diferencia, y es que en \ltx- una línea en blanco es relevante pues sirve para indicar un cambio de párrafo. En los ficheros \tpf bib-, una línea en blanco es tan irrelevante como un salto de línea simple.}. Son simples delimitadores de palabras y la regla es que da igual cuántos delimitadores haya entre dos palabras\footnote{Podríamos, en teoría, escribir todo el fichero \tpf bib- como una sola e inmensa línea en la que las palabras estuvieran separadas entre sí por un solo espacio en blanco. Pero tal fichero sería, para los seres humanos, más difícil de leer que otro en el que hayamos usado los tabuladores, espacios y saltos de línea para mejorar el aspecto visual (llamado \emph{legibilidad}) del fichero.}. \item \btx- no distingue entre mayúsculas y minúsculas\footnote{La no distinción entre mayúsculas y minúsculas se aplica a los elementos de \btx- (nombres de registros o campos, abreviaturas, etc), pero no al contenido de los campos de los registros. }. \end{enumerate} \subsubsection*{Uso de caracteres españoles en los ficheros \tpf bib-} \label{sec:uso-de-caracteres} La versión original de \btx- no era capaz de trabajar con caracteres no anglosajones (como eñes o vocales acentuadas). En la actualidad existe una versión de \btx- que sí puede hacerlo. No obstante se suele recomendar que para representar esos caracteres que requieren 8 bits se sigan las reglas generales de \ltx- y así, por ejemplo, en lugar de escribir \ltr Pág- escribamos ``\verb|P\'ag|''\footnote{El problema de representar caracteres no anglosajones directamente en un fichero de texto, es que estos caracteres no están incluidos en la tabla ASCII que todos los ordenadores reconocen, sino en otras tablas o \emph{codificaciones}. Y, desgraciadamente para los hablantes de idiomas distintos al inglés, existen \emph{muchas} codificaciones distintas para representar los mismos caracteres: ``utf8'', ``latin1'', ``cp850'', etc.; y para trabajar con un documento que contenga este tipo de caracteres es preciso saber exactamente qué codificación se usó para almacenarlo pero, desgraciadamente, los ficheros de texto no guardan información sobre su propia codificación. Además, en el caso concreto de los ficheros \tpf bib-, el uso de una codificación u otra puede afectar a la ordenación alfabética de los registros almacenados en la base de datos.}. Y aunque es cierto que escribir de ese modo nuestro idioma es incómodo, hay herramientas que lo facilitan\footnote{Como, por ejemplo \ltr pybliographer-, una utilidad de gestión de ficheros \tpf bib- para sistemas Unix/Linux, en la que podemos teclear normalmente cualquier carácter, pero antes de guardar el fichero, los caracteres no anglosajones son convertidos a la secuencia \ltx- necesaria para representarlos. De esta herramienta se vuelve a hablar en la sección \ref{sec:herr-graf}.}. En todo caso, si decidimos introducir caracteres no anglosajones directamente en el fichero \tpf bib-, debemos tener en cuenta que como el contenido de este fichero puede eventualmente incorporarse a un documento \tpf tex-, si en ambos el tipo de codificación no coincidiera se generaría un error. Por ello, para usar estos caracteres deben cumplirse los siguientes requisitos: \begin{enumerate}[a)] \item Debemos guardar el fichero \tpf bib- con la misma codificación con la que vayamos a guardar el fichero \tpf tex- en el que se hará uso de la base de datos. \item En el fichero \tpf tex- debe usarse la orden \cmd usepackage[cod]\{inputenc\}- donde ``cod'' significa una cadena representativa de la codificación usada en el fichero \tpf bib- (y en el \tpf tex-): \ltr utf8-, \ltr latin1-, etc. \item Debemos asegurarnos de que estamos usando la versión de \btx- de 8 bits. \end{enumerate} \subsection{Registros y campos bibliográficos} \label{sec:registros-y-campos} Un fichero \tpf bib- almacena una base de datos bibliográfica. En toda base de datos hay dos nociones fundamentales: \begin{description} \item[Campo:] Un dato aislado y básico. Por ejemplo, el año de edición de un libro, o el nombre del autor de un artículo de revista, o la página del libro de las actas de un congreso en donde empieza una determinada ponencia... \item[Registro:] Un conjunto de campos que permiten describir de forma completa un ejemplar del tipo de realidades a que se refiere la base de datos. En nuestro caso, tratándose de una base de datos bibliográfica, cada registro describe una referencia bibliográfica concreta (y completa). \end{description} Es decir: todos los campos que contienen datos de una misma referencia bibliográfica, constituirán un registro. Y la base de datos, en sí misma considerada, no será sino un conjunto de registros, cada uno de los cuales consta de varios campos. \subsubsection{Formato general de los registros y los campos} \label{sec:formato-general-de} En los ficheros \tpf bib- se usa el carácter ``@'', seguido de una palabra representativa del tipo de registro de que se trate, para indicar que empieza un registro. Asimismo se usan llaves para delimitar el contenido del registro. En consecuencia el formato de un registro es el siguiente: {\small \begin{verbatim} @TipoRegistro{clave, Campo1, Campo2, ... CampoN, } \end{verbatim} } Donde \emph{TipoRegistro} es el nombre que identifica a un concreto tipo de registro, y puede escribirse indistintamente en mayúsculas o minúsculas. En el contenido del registro, hay básicamente dos elementos: \begin{description} \item[La clave de identificación del registro] es siempre su primer elemento. Se usa para distinguir a un registro concreto del resto de los registros de la base de datos, y por ello en una misma base de datos no debe haber dos registros que tengan claves iguales, y tampoco deben unirse o manejarse en un mismo documento dos o más bases de datos si ello implica que alguna clave vaya a repetirse\footnote{Digo que no \emph{deben} usarse claves iguales; no que no pueda hacerse. Ello es porque \btx- no genera ningún error cuando en un fichero dos o más registros tienen la misma clave. Simplemente, en tal caso, toma en consideración exclusivamente la primera aparición de la clave, ignorando las restantes. Y, a tales efectos, téngase en cuenta que para el control de las claves \btx- no distingue entre mayúsculas y minúsculas.}. La clave puede consistir en cualquier combinación de letras, números y ciertos signos de puntuación. No se admiten ni los caracteres no anglosajones (vocales acentuadas y los caracteres ``¡¿ñÑçÇ'') ni ciertos signos de puntuación como la coma (que se usa para indicar que la clave ha terminado). En las citas hechas en el documento \tpf tex- habrá que usar esta clave para identificar al registro al que se quiere hacer referencia. \item[Los campos:] A \btx- le es indiferente en qué orden se escriban los campos de un determinado registro, así como si se usan cero, uno o más saltos de línea entre dos campos. \end{description} Para escribir un campo dentro de un registro podemos usar indistintamente cualquiera de los dos formatos siguientes: {\small \begin{verbatim} NombreCampo = { Contenido }, NombreCampo = " Contenido ", \end{verbatim} } En ambos casos intervienen los siguientes elementos: \begin{description} \item[Nombre del campo:] Normalmente será uno de los campos, obligatorios u opcionales, previstos para el tipo de registro de que se trate. Si el nombre no coincide con ninguno de los que el estilo ha previsto para el tipo de registro que sea, su contenido será ignorado. Si el mismo campo se introduce más de una vez en el mismo registro, sólo será tomada en consideración su primera aparición. \item[Delimitadores de contenido:] Se exige el uso de delimitadores para el contenido del campo siempre que este no tenga un valor puramente numérico o consista en una abreviatura previamente definida como tal mediante la función \ltr @String- (véase la sección \ref{sec:uso-de-abreviaturas}). Como delimitadores se pueden usar las llaves o las comillas dobles. La diferencia entre usar unas u otras es sólo una: cuando usamos comillas dobles como delimitadores, dentro de la cadena delimitada no podemos usar comillas dobles, salvo que las encerremos entre llaves. Por ejemplo: {\small \begin{verbatim} title = {Comentarios a "El Buscón" de Quevedo}, title = "Comentarios a {"}El Buscón{"} de Quevedo", \end{verbatim} } servirían para incluir un título que a su vez incluya dobles comillas. \item[El contenido de los campos:] cualquier cosa que se incluya en un campo puede, eventualmente, incorporarse a un documento \ltx-, y por lo tanto: \begin{enumerate} \item Es posible incluir, como contenido de un campo, comandos de \ltx-, aunque ello sólo está recomendado en casos muy especiales, y nunca es una buena idea que esos comandos sean de \emph{formato} de texto, pues la idea que está detrás de \btx- es que el formateo de las listas de referencias se haga depender del estilo usado. \item Dentro del contenido del campo hay que respetar las reglas generales de \ltx-, no usar sus caracteres reservados (salvo cuando se trate de un uso legal) y recordar que \ltx-, a diferencia de \btx-, sí distingue entre mayúsculas y minúsculas. \item Las llaves que pueda haber en un campo deben estar equilibradas. Es decir: toda llave abierta debe ser cerrada. Y ello se aplica incluso para llaves que se deben imprimir\footnote{Lo que se debe a que \btx- no interpreta los comandos de \ltx-, por lo tanto si en un campo se lee el texto \ltr \textbackslash\{-, \btx- no ve un caracter imprimible, sino una llave abierta que debe ser cerrada dentro del campo. Por ello en el raro caso de que debamos incluir como contenido de un campo el carácter ``\{`` (o ``\}'') habría que usar el comando \ltx- \cmd leftbrace- (o \cmd rightbrace-).}. \end{enumerate} Existen reglas especiales para el contenido de algunos campos concretos, pero estas se exponen más adelante, cuando se explican los campos reconocidos por los estilos estándar de \btx-. \item[La coma final:] Indica que el contenido del campo ha terminado y \emph{puede} empezar otro campo distinto. No es obligatoria en el último campo de un registro; pero no se produce ningún error por el hecho de introducirla también en él. \end{description} Desde el punto de vista de un concreto estilo bibliográfico, los campos presentes en un registro se incluirán en uno de los siguientes grupos: \begin{description} \item[Campos obligatorios:] Son aquellos que el estilo en cuestión espera encontrar en un determinado tipo de registro, de manera que si en un registro concreto alguno de ellos no está presente, se generará una advertencia en la salida estándar y en el fichero \tpf blg- generado por \btx-. En algunas ocasiones la falta de uno de estos campos puede provocar un error, aunque eso no debería ocurrir en un estilo bien diseñado. \item[Campos opcionales:] Son aquellos para los que el estilo en cuestión ha previsto algún tipo de acción, pero se ha previsto también su posible ausencia, y esta no tiene especial trascendencia. \item[Campos ignorados:] Cualquier otro campo presente para el que el estilo en cuestión no ha previsto ningún tipo de acción. \end{description} \subsubsection{Tipos de registros bibliográficos} \label{sec:registr-bibl} Las referencias bibliográficas pueden ser de distinta naturaleza, y en consecuencia se distinguen diferentes tipos de registros. A continuación expondré los nombres de los distintos tipos de registro previstos en \btx-, indicando para cada uno de ellos sus campos obligatorios y opcionales específicos\footnote{Con \emph{específicos} quiero decir que, para evitar repeticiones, en la relación que sigue no se ha incluido en cada uno de los registros los nombres de dos campos opcionales que están presentes en todos los registros, sean del tipo que sean: \ltr key- y \ltr note-. }. Para que \btx- pueda reconocer adecuadamente los registros y campos, los nombres de estos deben ser usados en inglés, y por ello los mencionaré en ese idioma. Entre paréntesis añadiré, para los tipos de registro, lo que significa su nombre. En la próxima sección se explica para qué sirve cada campo. \begin{description} \item[Article (artículo):] Un artículo publicado en una revista. Campos obligatorios: \texttt{author}, \texttt{title}, \texttt{journal} y \texttt{year}. Opcionales: \texttt{volume}, \texttt{number}, \texttt{pages} y \texttt{month}. \item[Book (libro):] Un libro \emph{normal}. Campos obligatorios: \texttt{author} o \texttt{editor}, \texttt{title}, \texttt{publisher} y \texttt{year}. Opcionales: \texttt{volume} o \texttt{number}, \texttt{series}, \texttt{address}, \texttt{edi\-tion} y \texttt{month}. \item[Booklet (folleto):] Un trabajo impreso y distribuido pero sin que conste la editorial o institución que lo patrocina. Campo obligatorio: \texttt{title}. Campos opcionales: \texttt{author}, \texttt{howpublished}, \texttt{address}, \texttt{month} y \texttt{year}. \item[Conference (conferencia):] Idéntico a InProceedings. Se incluye exclusivamente para mantener la compatibilidad con el formato \emph{Scribe}. \item[InBook (dentro de un libro):] Una parte de un libro, que puede ser un capítulo (o sección o similar) o un rango de páginas, o ambas cosas. Campos obligatorios: \texttt{author} o \texttt{editor}, \texttt{title}, \texttt{chapter} y/o \texttt{pages}, \texttt{publisher} y \texttt{year}. Opcionales: \texttt{volume} o \texttt{number}, \texttt{series}, \texttt{type}, \texttt{address}, \texttt{edition} y \texttt{month}. El campo \texttt{title}, en estas referencias, se refiere al título del libro, no al título del capítulo o grupo de páginas a que se refiere el registro. \item[InCollection (en una colección):] Una parte de un libro que tiene su propio título. Campos obligatorios: \texttt{author}, \texttt{title}, \texttt{booktitle}, \texttt{publisher} y \texttt{year}. Opcionales: \texttt{crossref}, \texttt{editor}, \texttt{volume} o \texttt{number}, \texttt{series}, \texttt{type}, \texttt{chapter}, \texttt{pages}, \texttt{address}, \texttt{edition} y \texttt{month}. \item[InProceedings (en las actas):] Una conferencia, artículo o ponencia en las actas de un congreso o, o, en general, en un libro que agrupe varios trabajos de autores distintos y con títulos independientes. Campos obligatorios: \texttt{author}, \texttt{title}, \texttt{booktitle}, \texttt{year}. Campo opcionales: \texttt{crossref}, \texttt{editor}, \texttt{volume} o \texttt{number}, \texttt{series}, \texttt{pages}, \texttt{address}, \texttt{month}, \texttt{organization} y \texttt{publisher}. \item[Manual:] Documentación técnica. Campo obligatorio: \texttt{title}. Campos opcionales: \texttt{author}, \texttt{organization}, \texttt{address}, \texttt{edition}, \texttt{month} y \texttt{year}. \item[MasterThesis (Proyecto fin de carrera):] Lo que en el mundo académico norteamericano se denomina ``\emph{Master Thesis}'' o ``\emph{Minor Thesis}'' y que en España equivale a las llamadas ``\emph{Tesinas de licenciatura}'' y a los \emph{Proyectos de fin de carrera}; es decir: un trabajo de investigación menor, leído en una institución académica. Campos obligatorios: \texttt{author}, \texttt{title}, \texttt{school} y \texttt{year}. Opcionales: \texttt{type}, \texttt{address} y \texttt{month}. \item[Misc (miscelánea):] Este tipo está previsto para ser usado cuando ninguno de los otros tipos encaje bien. Su peculiaridad es que carece de campos obligatorios. Campos opcionales: \texttt{author}, \texttt{title}, \texttt{howpublished}, \texttt{month} y \texttt{year}. \item[PhdThesis (tesis doctoral):] Lo que en el mundo académico norteamericano se denomina ``\emph{PhD Thesis}'', ``\emph{Major Thesis}'' y que equivale a las tesis doctorales españolas, es decir: un trabajo de investigación original y extenso que permite obtener el título de doctor que constituye la más alta graduación académica existente. Campos obligatorios: \texttt{author}, \texttt{title}, \texttt{school} y \texttt{year}. Opcionales: \texttt{type}, \texttt{address} y \texttt{month}. \item[Proceedings (libro de actas):] El libro de actas donde se encuentra una conferencia o ponencia en un congreso, aunque yo lo uso con carácter general para todos aquellos libros que agrupan trabajos, cada uno de ellos con distintos autores. Campos obligatorios: \texttt{title} y \texttt{year}. Opcionales: \texttt{booktitle}, \texttt{editor}, \texttt{volume} o \texttt{number}, \texttt{series}, \texttt{address}, \texttt{month}, \texttt{organization} y \texttt{publisher}. \item[TechReport (informe técnico):] Un informe publicado por un centro académico o institución similar, normalmente numerado dentro de una serie. Campos obligatorios: \texttt{author}, \texttt{title}, \texttt{institution} y \texttt{year}. Campos opcionales: \texttt{type}, \texttt{number}, \texttt{address} y \texttt{month}. \item[Unpublished (no publicado):] Un documento que tiene un autor y un título pero que formalmente no ha sido publicado. Campos obligatorios: \texttt{author}, \texttt{title} y \texttt{note}. Opcionales: \texttt{month} y \texttt{year}. \end{description} A los campos mencionados hay que añadir, en todos los tipos de registro, un campo \texttt{key} y un campo \texttt{note}, ambos opcionales, salvo en las referencias tipo \ltr Unpublished-, donde \texttt{note} es obligatorio. \subsubsection{Significado de los distintos campos bibliográficos} \label{sec:campos-de-datos-1} \begin{description} \item[Address:] Este campo está pensado para almacenar la dirección de la editorial o institución responsable de una publicación. Es siempre opcional y conviene usarlo, sobre todo, cuando las editoriales sean pequeñas o poco conocidas. En la mayor parte de los casos, además, no se incluye aquí la dirección completa, sino exclusivamente la ciudad donde reside la editorial. Hay especialidades científicas donde es costumbre identificar las obras publicadas más bien por la ciudad que por la editorial, en cuyo caso puede ser buena idea indicar la ciudad no en el campo \ltr address-, sino en \ltr publisher-. \item[Author:] Como este es el campo más complejo, dividiré su explicación en varios apartados: \paragraph{La autoría de las referencias:} \label{sec:la-autoria-de} Toda referencia bibliográfica ha de tener una \emph{autoría} y en tal sentido, en todos los tipos de registros hay algún campo dirigido a recogerla. Ese campo es normalmente \ltr author-, aunque: \begin{enumerate}[a)] \item En \ltr Proceedings- la autoría viene recogida por el campo \ltr editor-, porque este tipo de registro recoge un libro sin autor propiamente dicho, que recopila o agrupa varios trabajos que sí tienen autor. \item En los tipos \ltr Book- e \ltr InBook-, el campo \ltr author- puede ser sustituido por \ltr editor-. Si se especifican ambos campos simultáneamente, el contenido del campo \ltr editor- es ignorado. \item En las referencias de tipo \ltr Manual-, a falta de campo \ltr author-, la autoría se atribuirá al campo \ltr organization-. \end{enumerate} En cualquiera de estos casos, la recomendación es que el nombre del autor se escriba tan completo como se conozca, es decir: que no se usen iniciales para sustituir al nombre propio, ya que ese efecto podemos obtenerlo mediante el estilo bibliográfico. Pero si en la base de datos no consta el nombre completo no hay estilo bibliográfico que sea capaz de adivinarlo. \paragraph{Varios autores:} \label{sec:caso-en-el} Si hay más de un autor, para separar unos de otros hay que usar necesariamente la palabra ``and'' para que \btx- sepa donde empieza un autor y donde acaba otro. Si usamos la conjunción española equivalente, ``y'', \btx- no formateará correctamente el contenido de este campo porque no sabrá separar a los distintos autores. El hecho de usar ``and'' dentro del fichero \tpf bib- no significa que en nuestros documentos se vaya a usar dicha palabra, pues eso depende del fichero de estilo. Si \emph{dentro} del nombre de uno de los autores aparece la palabra ``and'', hay que encerrar entre llaves (distintas de las genéricas llaves para delimitar el contenido del campo) el nombre completo. Así, en los siguientes ejemplos: {\small \begin{verbatim} author = "{McArthur And Inc.}", author = {{McArthur And Inc.}}, author = {Thomas R. Delan And {McArthur And Inc.}}, \end{verbatim} } El nombre que contiene, como parte de él, la palabra ``And'' va siempre entre llaves, con independencia de qué tipo de delimitador se haya escogido para el campo y de si hay o no mas nombres. \paragraph{Distinción entre nombre y apellidos:} \label{sec:dist-entre-nombre} El nombre de una persona tiene varias partes de las que las principales (en los nombres españoles) son el nombre propio (también llamado nombre de pila, o nombre a secas) y los apellidos. \btx- descompone los nombres para determinar qué parte de los mismos hay que atribuir al nombre propio, cuál a los apellidos, y cual a las restantes partes que \btx- reconoce en un nombre\footnote{En realidad \btx- descompone los nombres en cuatro partes: Nombre de pila (en inglés, \emph{First name)}, Partícula de separación, Apellidos (en inglés \emph{Last name} o \emph{Surname} y partícula ``Jr.'', muy habitual en los nombres anglosajones. En las líneas que siguen he omitido lo referente a esta última partícula, inexistente fuera del mundo anglosajón. No obstante si en nuestra base de datos debe introducirse algún nombre propio que incluya dicha partícula, normalmente esta será reconocida por \btx- y su presencia no alterará las reglas que a continuación se exponen.}. Para ello se siguen las siguientes reglas: \begin{enumerate}[1ª.] \item Si el texto introducido consta de una sola palabra, se asignará al apellido. \item \label{Regla:2} Si consta de dos o más palabras, se considerará que la última es el apellido y el resto es el nombre de pila. Esta regla se basa en que fuera de la Península Ibérica (y paises de tradición cultural ibérica), es usual tener un solo apellido y varios nombres de pila. \item En el caso de que el apellido conste de varias palabras y alguna de las palabras interiores estuviera escrita con minúsculas, se considerará que tal palabra es una partícula que separa el nombre del apellido por lo que se asignará al apellido todo lo que esté detrás de tal partícula, y al nombre lo que esté antes. Y así, por ejemplo, \btx- interpretará correctamente el nombre {\small\verb|Miguel de Cervantes Saavedra|} siempre y cuando escribamos el ``de'' y lo hagamos en minúsculas. Pero si escribimos: {\small \begin{verbatim} Miguel Cervantes Saavedra Miguel De Cervantes Saavedra miguel de cervantes saavedra \end{verbatim} } como \btx- no podrá identificar la partícula aplicará la regla \ref{Regla:2}, y considerará que ``Saavedra'' es el apellido y el resto nombre propio\footnote{Por ello si queremos que en nuestra lista bibliográfica las partículas se impriman en mayúsculas, pero que \btx- las reconozca correctamente, habría que escribir: ``\texttt{Miguel \{\textbackslash uppercase\{d\}e\} Cervantes Saavedra}''.}. \item Si solo conocemos el apellido, y este consta de varias palabras, para evitar que las primeras se asignen al nombre de pila, hay que encerrar todo el nombre entre llaves (además de las delimitadoras del campo). Por ejemplo: {\small\verb|author = "{Ortega y Gasset}",|} \item Si en un nombre se usa una coma, \btx- asignará al apellido todo lo que esté antes que la coma, y al nombre propio todo lo que esté detrás. Esta regla prevalece sobre todas las anteriores. \end{enumerate} Para nombres españoles, con dos apellidos, lo más seguro es usar una coma entre el apellido y el nombre para impedir que \btx- realice malas interpretaciones. Porque aunque en ocasiones la partícula nos puede ayudar (como en ``Miguel de Cervantes Saavedra'') la mayoría de los nombres carecen de partícula, y en muchas ocasiones la partícula produciría un error, como en ``Félix Lope de Vega y Carpio''. \item[Booktitle:] Es el título de un libro, parte del cual está siendo citado. Se usa, por lo tanto en las referencias que sirven para citar una parte de un libro que tenga un título distinto del título del libro, es decir: \ltr InCollection- e \ltr InProceedings-. Este campo también está presente en las referencias de tipo \ltr Proceedings-, aunque en ellas se usa exclusivamente para las referencias cruzadas (véase la sección \ref{sec:refer-cruz-entre}). A este campo le son de aplicación las reglas que más adelante se exponen sobre el campo \ltr title-. \item[Chapter:] Contiene un número de capitulo, sección o unidad estructural de un libro. Se usa en las referencias de tipo InBook e InCollection para identificar una parte de un libro. \item[Crossref:] Contiene una etiqueta en la base de datos para generar referencias cruzadas internas (véase la sección \ref{sec:refer-cruz-entre}). \item[Edition:] Se trata del número de edición de un libro. Es siempre un campo opcional; y de hecho sólo suele rellenarse cuando no se trata de la primera edición. Los estilos estándar presuponen que se escribirá con una palabra en mayúsculas (y en inglés). Por ejemplo ``Second'', aunque si se escribe en español (``Segunda''), o con un ordinal expresado en forma numérica (``2ª''), no pasa nada\footnote{En los estilos estándar detrás de este campo se añade la palabra ``edition'' y, si están españolizados, la palabra ``edición'', por ello no conviene usar directamente un número que no sea un ordinal, ya que entonces la referencia contendría la expresión ``2 edición'', que no es correcta.}. Lo que sí es importante, para generar listas bibliográficas consistentes, es que siempre lo escribamos del mismo modo. \item[Editor:] Este campo ya ha sido mencionado a propósito del campo ``author''. El editor de un libro es el que, sin ser su autor propiamente dicho, lo impulsa y hace nacer. Esta figura es importante hasta el punto de que sobre él recae la \emph{autoría} (a efectos de la base de datos) en determinado tipo de obras como puede ser una antología, un estudio crítico de alguna obra antigua, etc. Por ejemplo: una edición crítica de la poesía barroca española, o el conocido ``\emph{Las mil mejores poesías de la lengua castellana}''. Las reglas relativas a este campo son similares a las del campo ``author''. \item[Howpublished:] Este campo se usa en las referencias de tipo ``Booklet'' y ``Misc'' que recogen libros que no han sido publicados por una editorial o institución ``normal''. En este campo puede indicarse cómo se llegó a publicar la obra de que se trate. La primera palabra debe ir en mayúsculas. \item[Institution:] Este campo existe exclusivamente en los informes técnicos (referencias \ltr TechReport-) y recoge el nombre de la institución que ha financiado el informe de que se trate. \item[Journal:] Para artículos publicados en revistas este campo recoge el nombre de la revista. En determinados campos del conocimiento existen abreviaturas estándar para las revistas más conocidas, por lo que puede usarse la abreviatura en lugar del nombre completo de la revista. Sobre el uso de abreviaturas en los ficheros \tpf bib- véase la sección \ref{sec:uso-de-abreviaturas}. \item[Key:] Está disponible como campo opcional en todos los tipos de referencias. Se usa en relación con la generación de etiquetas, en aquellos estilos en los que estas se generan a partir del nombre del autor, como por ejemplo ocurre en el estilo \ltr alpha-. En tales casos, el valor del campo \ltr key- será usado para la generación de la etiqueta si no consta ningún valor para el campo \ltr author-, incluso aunque si conste algún valor para alguno de los campos que en ciertos tipos de referencias pueden suplir a dicho campo (véase lo que, al explicar el campo \ltr author- se dijo sobre la autoría, en pág. \pageref{sec:la-autoria-de}). \item[Month:] En artículos de revista se usa para designar el mes en el que salió el número que contiene dicho artículo. En otro tipo de trabajos el mes en el que fueron publicados o terminados (para trabajos no publicados). La documentación oficial de \btx- recomienda introducir este campo mediante unas abreviaturas estándar en inglés\footnote{\label{meses}Se trata de: \ltr jan-, \ltr feb-, \ltr mar-, \ltr apr-, \ltr may-, \ltr jun-, \ltr jul-, \ltr aug-, \ltr sep-, \ltr oct-, \ltr nov- y \ltr dec-.}, en cuyo caso usando la abreviatura, no habría que usar delimitadores para el campo (por las razones que se explican cuando se habla de las abreviaturas en la sección \ref{sec:uso-de-abreviaturas}). En teoría aquí ocurre igual que en el campo \ltr author-, respecto de la partícula ``and'' usada para separar entre sí a los distintos autores, y es que aunque hayamos introducido el mes en inglés (o mediante una abreviatura del nombre inglés), luego, usando el estilo bibliográfico correcto, en las referencias que se inserten en nuestros documentos aparecerá el nombre en español. Aunque, a diferencia de lo que ocurre con el campo \ltr author-, si aquí introducimos la información directamente en español, no se produce ningún error. \item[Note:] Cualquier tipo de información adicional que no tenga cabida en el resto de los campos\footnote{Yo lo he usado, por ejemplo, para recoger el nombre de los traductores (en traducciones), o en ediciones que han sido actualizadas por personas distintas del autor original, para recoger el nombre de estos últimos, o en documentación electrónica, para recoger la dirección de Internet donde se encuentra. Aunque para esto último es preferible usar un campo adicional de nombre \ltr url-, pues existen varios estilos no estándar para \btx- que preven la existencia de este campo y son capaces de formatearlo correctamente. Incluso el paquete makebst es capaz de generar automáticamente un estilo bibliográfico que reconozca este campo. Véase la sección \ref{sec:makebst}.}. En los estilos bibliográficos estándar el contenido de este campo se transcribe al final de la referencia y su primera palabra debería empezar en mayúsculas. \item[Number:] Puede tener distintos significados. En los informes técnicos recoge el número de informe de que se trate. En artículos de revista se usa en revistas cuyos distintos ejemplares se identifiquan mediante un \emph{número}, o mediante un número y un volumen. En libros sólo se usa si el libro forma parte de una serie o colección. En los registros de tipo \ltr Book- y \ltr Proceedings- (así como en sus derivados: \ltr InBook-, \ltr InCollection- e \ltr InProceedings-) el contenido de este campo sólo es tomado en consideración si el campo \ltr volume- se ha dejado en blanco. \item[Organization:] La organización que financia una conferencia o que publica un manual. En los registros de tipo \ltr Manual- este campo designa la \emph{autoría} si \ltr author- carece de contenido. \item[Pages:] Se usa en artículos y en partes de libro para designar las páginas concretas en las que un trabajo se encuentra. Los estilos estándar de \btx- esperan que se pongan aquí las páginas inicial y final, separadas por uno o dos guiones. De hecho estos estilos convierten el guión sencillo en uno doble, que es el utilizado en \ltx- para designar intervalos de páginas. Si se quiere indicar sólo la primera página, se utiliza el carácter ``+'' que significa ``desde esa página en adelante''. Como los estilos estándar suponen que se trata de más de una página, en la lista bibliográfica final, a veces al número aquí puesto se le añade la palabra ``páginas'' (\emph{pages}), o la abreviatura ``págs.'' (pp) en plural. \item[Publisher:] La editorial encargada de la publicación de un libro. Su contenido suele complementarse con el del campo \ltr address-. \item[School:] Nombre de la Escuela, Facultad o Instituto en donde se ha confeccionado un trabajo académico (tesis doctoral o tesina de licenciatura). \item[Series:] En libros que forman parte de una colección, se usa para recoger el nombre de la misma. \item[Title:] Es un campo presente en todos los tipos de referencias bibliográficas, y es siempre obligatorio (salvo en las referencias de tipo \ltr Misc-). Designa el título del trabajo al que nos estamos refiriendo, salvo en las referencias tipo \ltr InBook-, donde designa el título del libro del que forma parte el capítulo o rango de páginas al que nos estamos refiriendo. En teoría los estilos bibliográficos estándar \emph{normalizan} (o pueden normalizar) el uso de las mayúsculas y minúsculas en los títulos. Y por ello en las referencias generadas a partir de nuestra base de datos no siempre se escribirán los títulos tal y como aparecen en la base de datos. Para preservar una letra en mayúsculas hay que encerrarla entre llaves. Las llaves pueden ponerse también alrededor de una o varias palabras. Esto es especialmente importante si en el título se usan comandos de \ltx-, ya que en ellos una alteración de las mayúsculas y minúsculas se traduciría en un error. \item[Type:] Este campo existe en \ltr InBook-, \ltr InCollection-\footnote{La documentación oficial de \btx- y los textos que he leído coinciden en que en los registros \ltr InCollection- el campo \ltr type- es opcional. Las pruebas que yo he hecho me llevan a pensar que en estos registros este campo es ignorado. }, \ltr MasterThesis-, \ltr PhdThesis- y \ltr TechReport-. En los tres últimos tipos mencionados los estilos estándar añaden a la referencia, como texto aclaratorio, el nombre del registro. Por ejemplo: en una tesis doctoral, se escribe: ``\emph{Tesis doctoral}''. Si en el campo \ltr type- hay algún texto, se usará este texto en lugar del predeterminado. En los registros \ltr InBook-, aunque por defecto no se escribe ningún texto, sí se escribirá lo que se diga en este campo. Por lo tanto aquí puede escribirse una pequeña aclaración respecto del tipo de trabajo de que se trata, como: ``Conferencia'', ``Disertación'', etc. \item[Volume:] En artículos de revista se usa para indicar en qué tomo de la revista se ha publicado dicho artículo. En libros que formen parte de una serie, para indicar el tomo o volumen, dentro de la serie en cuestión. En este último caso si se da algún valor al campo \ltr volume- los estilos estándar ignorarán el contenido del campo \ltr number-. \item[Year:] El año de la edición del libro o de publicación del artículo. Es otro de los datos presentes (de forma obligatoria u opcional) en todos los tipos de registros. Hay incluso estilos bibliográficos en donde las referencias se ordenan por el valor de este campo, y las citas en el texto lo incluyen también. \end{description} \subsubsection{Algunos consejos sobre tipos de registros y campos} \label{sec:algun-cons-sobre} Cuando empezamos a manejar \btx- la gran cantidad de tipos de registros existentes (catorce en total) puede abrumar. A continuación expongo algunos consejos, dictados por la experiencia, sobre cómo debemos proceder. \begin{enumerate} \item Hay tres tipos de referencia básica: artículos de revista (\ltr article-), libros completos (\ltr book-) y partes de libro. Para las partes de libro a su vez hay tres posibilidades: Si la parte se identifica por un número de sección o de páginas, la referencia correcta es \ltr InBook-, si se identifica por un título, yo distingo, a su vez, según cada parte del libro tenga un autor distinto, en cuyo caso utilizo \ltr InProceedings-, o todo el libro pertenezca al mismo autor, en cuyo caso prefiero usar \ltr InCollection-. Ello es porque no me tomo demasiado en serio el nombre del tipo de referencia, y atiendo más bien al contenido de los campos\footnote{Y no hay que escandilarse por ello. El propio autor de \btx- recomienda en \cite{patashnik88} no tomarse excesivamente en serio los nombres de registros y campos. }. \item Tampoco hay que tomarse demasiado en serio el nombre de los campos. En ocasiones puede ser conveniente, por ejemplo, incluir la ciudad de edición junto con el campo reservado a la editorial, y en otros casos puede ser preferible usar para ello el campo \ltr address-. Lo importante es que seamos consistentes en nuestras decisiones. \item La distinción entre campos obligatorios y opcionales es importante sólo para confirmarnos que hemos elegido el tipo de registro adecuado. Pero tampoco es una tragedia que en un caso concreto, algún campo obligatorio se quede sin rellenar. \item Para la información que consideremos relevante pero para la que no haya ningún campo que la haya previsto, podemos usar el campo \ltr note-. Pero también podemos usar campos específicos creados por nosotros. En tal caso los estilos estándar de \btx- la ignorarán, pero podremos crear un estilo bibliográfico propio que la tenga en cuenta. Yo, por ejemplo, utilizo muchas traducciones, y estimo que el nombre del traductor es un dato importante para la referencia. Empecé usando para ello el campo \ltr note-, pero al final diseñé un campo opcional llamado \ltr traductor-. Sobre la escritura de estilos bibliográficos propios, véase la última parte de este documento. Aunque cuando decidamos crear un campo adicional, si el tipo de datos que queremos incluir en él es relativamente corriente, puede merecer la pena que antes de bautizar el campo, nos demos un paseo por Internet; porque es muy posible que alguien haya ya sentido la necesidad de recoger tales datos, haya creado ese campo y, lo que es más importante, haya escrito un estilo bibliográfico que sepa qué hacer con él. \item También es interesante la creación de campos adicionales para información que es importante para nosotros tener recopilada, pero que no importa a los lectores de nuestros documentos y no tiene por qué incluirse en las referencias bibliográficas generadas. Por ejemplo yo uso para los libros un campo llamado \ltr tejuelo- en el que almaceno la ``etiqueta'' o ``tejuelo'' asignada a determinado libro en la biblioteca de mi centro de trabajo, lo que me ayuda a localizar físicamente el libro con rapidez. \item Por último, aunque he señalado que no hay que tomarse demasiado en serio ni los nombres de los tipos de registro, ni los de los campos, ni su naturaleza obligatoria u opcional, y he añadido que puede ser interesante crear campos propios, todo ello no debe llevarnos a diseñar y escribir una base de datos que sólo nosotros seamos capaces de entender y utilizar. El sentido último de las herramientas de \ltx- (y en general del software libre) es el de \emph{compartir} el trabajo: Que lo que ya ha sido hecho no tenga por qué repetirse (si está bien hecho y el autor autoriza su uso por otros). Cuando empezamos a escribir nuestra base de datos no hay forma de saber si terminará siendo tan importante que merezca la pena compartirla con otros y por ello es mejor empezar a escribirla con la mente puesta en que tal vez en el futuro debamos compartirla. \end{enumerate} \subsection{Otras cuestiones relativas a los ficheros \tpf bib-} \label{sec:otras-cuest-relat} \subsubsection{Uso de abreviaturas y concatenación de cadenas} \label{sec:uso-de-abreviaturas} En un fichero \tpf bib- es posible definir abreviaturas que simplifiquen la escritura de los registros y eviten errores. Para usar una abreviatura, primero hay que definirla de acuerdo con el siguiente formato: \verb|@String{Abreviatura = "Texto sin abreviar"}| El nombre de la abreviatura debe empezar por una letra y no puede contener caracteres en blanco ni ninguno de los siguientes caracteres: \verb|" # % ' ( ) , = { }| El texto sin abreviar se debe especificar entre comillas. Las llaves para delimitar el contenido de ``\texttt{@String}'' son obligatorias. La definición se puede hacer en cualquier lugar del fichero \tpf bib- que no sea el interior de un registro (o de algún otro elemento admitido en este tipo de ficheros). El único requisito en este punto es el de que la definición de una abreviatura debe hacerse \emph{antes} de que ésta sea usada en algún campo. Las abreviaturas no pueden usarse para los nombres de campo o de registro, sino exclusivamente en el contenido del campo. Y como las abreviaturas no pueden estar encerradas dentro de los delimitadores de campo, cuando todo el contenido del campo es una abreviatura, ese campo no requerirá delimitadores de contenido. Así en el siguiente ejemplo: {\small \begin{verbatim} @STRING{TeX = "The {T}e{X} {B}ook"} @Book{eijkhout, author = {Victor Eijkhout}, title = {TeX by topic}, publisher = {Addison Wesley}, year = 1992, } @Book{knuth, author = {Donald E. Knuth}, title = TeX, publisher = {Addison Wesley}, year = 1986, } \end{verbatim} } \noindent Hemos definido la abreviatura ``TeX'' y dos registros, en el título del primero de ellos aparece la cadena ``TeX'', pero \btx- no la toma como una abreviatura, porque tal cadena se encuentra dentro de unas llaves que delimitan el contenido de un campo. Por el contrario, en el segundo registro, el texto ``TeX'' usado como contenido del campo título, es tomado como un uso de la abreviatura, dado que no está dentro de ningún tipo de delimitadores de contenido de campo\footnote{En el ejemplo he escrito para la abreviatura ``TeX'', pero, como \btx- no distingue entre mayúsculas y minúsculas, habríamos obtenido el mismo resultado escribiendo ``TEX'' o ``tex'' tanto en la definición de la abreviatura como más tarde cuando ésta es usada. Podríamos también haber definido ``TEX'' y luego usar ``tex'' o ``TeX''. }. Si la abreviatura no cubre todo el contenido del campo, entonces debemos escribir entre delimitadores normales el contenido no cubierto por la abreviatura, y \emph{concatenar} dicho contenido con el de la abreviatura. En los ficheros \tpf bib- el carácter para concatenar cadenas de texto es ``\#''. Este carácter permite concatenar abreviaturas entre sí, cadenas de texto entre sí y abreviaturas con cadenas de texto. Por ejemplo, si en el fichero \tpf bib- de nuestro anterior ejemplo tuviéramos un libro llamado ``\emph{Comentarios a `The TeX Book' de Knuth}'', y quisiéramos aprovechar la abreviatura que hemos definido para ``\emph{The TeX Book}'', podríamos escribir el campo \ltr title- de dicho libro de la siguiente manera: \verb|title = {Comentarios a `} # TeX # {' de Knuth},| Hay tipos de datos, como el nombre de las revistas científicas, para los que es muy corriente el uso de abreviaturas. De hecho en ciertos campos de conocimiento circulan ficheros en el que se recogen las abreviaturas corrientemente usadas para las revistas más importantes. En tales casos podemos usar dichos ficheros simplemente indicando su nombre en la orden \cmd bibliography- antes del nombre de nuestra base de datos bibliográfica, y separando ambos nombre por una coma. La siguiente línea, por ejemplo, provocaría que ``\texttt{MiBiblio.bib}'' (que cabe suponer que es nuestra base de datos) se concatenara con el fichero distribuido por la \emph{American Mathematical Society} que contiene las abreviaturas habitualmente usadas para las revistas matemáticas: \verb|\bibliography{mrabbrev,MiBiblio}| En los estilos estándar de \btx- hay ya varias abreviaturas definidas por defecto: Están definidos los nombres de los meses del año en inglés (véase las abreviaturas que mencioné al hablar del campo \ltr month- en la nota \ref{meses}), así como el nombre de varias revistas dedicadas al campo de la informática\footnote{Las abreviaturas definidas en el estilo plain son las siguientes: acmcs (ACM Computing Surveys), acta (Acta Informatica), cacm (Communications of the ACM), ibmjrd (IBM Journal of Research and Development), ibmsj (IBM Systems Journal), ieeese (IEEE Transactions on Software Engineering), ieeetc (IEEE Transactions on Computers), ieeetcad (IEEE Transactions on Computer-Aided Design of Integrated Circuits), ipl (Information Processing Letters), jacm (Journal of the ACM), jcss (Journal of Computer and System Sciences), scp (Science of Computer Programming), sicomp (SIAM Journal on Computing), tocs (ACM Transactions on Computer Systems), tods (ACM Transactions on Database Systems), tog (ACM Transactions on Graphics), toms (ACM Transactions on Mathematical Software), toois (ACM Transactions on Office Information Systems), toplas (ACM Transactions on Programming Languages and Systems), tcs (Theoretical Computer Science)}. \subsubsection{Referencias cruzadas entre registros} \label{sec:refer-cruz-entre} En los ficheros \tpf bib- se admiten dos tipos de referencias cruzadas: \begin{enumerate} \item Usando el comando de \ltx- \cmd cite-. \item Mediante el campo \ltr crossref-. \end{enumerate} En cuanto al uso de \cmd cite-, podemos usarlo dentro de un campo para hacer referencia a otro registro. Normalmente esto se hace en el campo \ltr note-, pero se puede hacer en cualquier otro. Esto provocará que al citar en nuestro documento \ltx- una referencia que a su vez cita a otra, ambas se consideren citadas en el documento, y se incluyan las dos en la lista de referencias bibliográficas\footnote{Este es uno de los casos en los que \btx- requerirá una compilación adicional. Porque el comando \cmd cite- incorporado a un registro bibliográfico no será compilado por \ltx- hasta que se compila una versión que incorpore el contenido del fichero \tpf bbl-. E incluso es posible que al incorporar esta nueva cita, sea preciso, tras la segunda ejecución de \ltx-, ejecutar de nuevo \btx-.}. Pero también es posible usar referencias cruzadas de otra manera: para que \btx- sepa que el valor de ciertos campos que normalmente forman parte del contenido de un determinado tipo de registro, pero que en un registro concreto no han sido incluidos, debe ser tomado de otro registro distinto. Por ejemplo, si tenemos un libro homenaje a cierto autor, en el que varios autores han colaborado, cada uno de ellos con un artículo. Si quisiéramos volcar todos estos artículos a nuestra base de datos, podríamos: \begin{enumerate} \item Crear tantos registros como artículos haya e incluir en cada uno de ellos todos los datos requeridos, gran parte de los cuales serán idénticos en todos los registros. \item Abreviar mediante referencias cruzadas, para los datos idénticos escribirlos una sola vez. \end{enumerate} Para seguir el segundo procedimiento, deberíamos empezar por crear un registro del tipo ``Proceedings'' para el libro homenaje en sí mismo considerado, rellenar en él el valor de todos los campos que podamos, y luego en el registro correspondiente a cada uno de los artículos extraidos de dicho libro (que serían referencias de tipo \ltr InProceedings-), usar como valor para el campo \ltr crossref-, el de la clave que hayamos asignado al registro \ltr Proceedings-\footnote{De hecho, si lo pensamos bien, el único sentido que tiene la presencia del campo \ltr booktitle- en los registros de tipo \ltr Proceedings- es el de que este campo se use para llenar el campo del mismo nombre en los registros \ltr InProceedings- que apunten a este.}. El efecto de todo ello será que: \begin{enumerate} \item En los registros \ltr InProceedings- que escribamos para cada uno de los artículos contenidos en el libro, podremos no incluir los campos que ya están en el registro correspondiente al libro general, pues al apuntar \ltr Crossref- al registro correcto, \btx- sabrá que los datos que faltan en el primer registro deben ser tomados del segundo. Esto, además de reducir el tamaño de la base de datos, y ahorrar tiempo para la introducción de los mismos, contribuye a garantizar que todas las veces que estos datos aparezcan, estén escritos exactamente igual. \item Si en un documento \ltx- citamos al menos dos artículos que apunten a un mismo registro, automáticamente se incluirá en la lista final de referencias bibliográficas, además de los trabajos directamente citados por nosotros, el registro correspondiente al libro que los contiene. \end{enumerate} Para que lo anterior funcione correctamente, es preciso que el registro \emph{referenciado} mediante el campo \ltr crossref- (el registro \ltr Proceedings-) se encuentre en la base de datos \emph{después} de los registros referenciadores (los registros \ltr InProceedings-). Los estilos estándar de \btx- admiten referencias cruzadas en los siguientes casos: \begin{enumerate} \item Los registros de tipo \ltr InProceedings- pueden hacer referencia a registros \ltr Proceedings- o \ltr Book-. \item Los registros de tipo \ltr InCollection- pueden hacer referencia a registros \ltr Book-. \end{enumerate} \subsection{Herramientas para manejar ficheros \tpf bib-} \label{sec:herr-para-manej} Existen varias herramientas para la creación y mantenimiento de bases de datos de \btx- cuya utilidad fundamental es la de asegurarse de que todos los registros están correctamente escritos y de que no hemos cometido errores ni en el nombre del tipo del registro ni en el de los campos. Como yo trabajo exclusivamente en sistemas Linux, en este apartado me concentraré en herramientas que funcionen en tales sistemas. Para sistemas MS-DOS, Mac-OS o Microsoft Windows existen otras herramientas que yo no he probado y sobre las que, en consecuencia, no puedo opinar. Existen asimismo herramientas escritas en java que, en teoría, funcionan en cualquier plataforma, aunque yo no las he probado. He leído buenos comentarios sobre dos de ellas: ``jbibtexmanager'' y ``jabref'', ambas son fáciles de localizar en Internet. \subsubsection{Herramientas gráficas} \label{sec:herr-graf} Existen varias herramientas gráficas que permiten trabajar con ficheros \tpf bib- mediante ventanas, botones, barras de herramientas, etc. Las utilidades ofrecidas por estas herramientas son bastante similares. Entre ellas he probado (porque están disponibles directamente en Debian): \begin{description} \item[pybliographer:] Posiblemente sea la más completa de todas las que conozco (aunque admito que no es la que más me gusta, pues es muy difícil de manejar sin el ratón, y yo tengo alergia al ratón). Frente a otras herramientas ofrece las siguientes ventajas: que funciona también en modo de consola, que además del formato \btx- puede manejar otros formatos de bases de datos bibliográficas y, lo que es más importante: es capaz de convertir bases de datos desde unos formatos a otros. \item[Gbib:] Es mi herramienta favorita en este grupo\footnote{Lo que no es mucho decir, pues yo soy usuario de GNU Emacs (del que me ocupo en la próxima sección).}. Forma parte del proyecto Gnome, aunque no suele instalarse por defecto. Posiblemente su principal inconveniente esté en el hecho de que no permite controlar el tipo de codificación en el que hay que grabar el fichero, sino que éste es guardado automáticamente en la codificación preestablecida para el sistema\footnote{Esto puede ocasionar una tediosa labor de \emph{reparación}. Sobre todo si se tiene en cuenta que hasta hace poco la codificación estándar para sistemas Linux españoles era \ltr latin1- o \ltr latin15- y en los últimos tiempos las distribuciones empiezan a migrar a \ltr utf8-. De modo que si en un sistema instalado recientemente abrimos una base de datos escrita hace algún tiempo, introducimos cambios en ella y los guardamos, cabe la posibilidad de que, si no tenemos control sobre las codificaciones usadas, todos los caracteres no anglosajones del fichero se transformen en caracteres ininteligibles que luego habrá que restuarar a mano. }, aunque en realidad este defecto es predicable de las tres herramientas que recojo en la presente sección. \item[Tkbibtex:] Una herramienta muy parecida a las anteriores: permite crear bases de datos nuevas, abrir bases existentes, añadir registros, hacer búsquedas, etc. Apenas le he echado un vistazo. \end{description} \subsubsection{El modo \btx- de GNU Emacs} \label{sec:el-modo-bibtex} Dado que los ficheros \tpf bib- son ficheros de texto, otra posibilidad es editarlos con algún editor de texto que esté provisto de alguna extensión que facilite de alguna manera el trabajo con ellos. Desde este punto de vista casi todos los editores de texto ``avanzados'' son capaces de reconocer la sintaxis de un fichero \tpf bib-, y algunos especialmente preparados para trabajar con el formato \ltx-, como por ejemplo kile, incluyen incluso opciones de menú que permiten insertar registros bibliográficos completos, ahorrándonos el tener que recordar de memoria los campos obligatorios y opcionales de cada uno de los registros. No obstante en este grupo mi favorito sin ningún género de dudas es GNU Emacs. De hecho mi afición a dicho editor se puede comprobar en el hecho de que he escrito y puesto en circulación por Internet dos documentos dirigidos a facilitar su aprendizaje: \cite{ataz-emacs} y \cite{ataz-auctex}\footnote{\cite{ataz-emacs} constituye una introducción general a GNU Emacs, para quien se aproxime por primera vez a este potente editor, y \cite{ataz-auctex} contiene una explicación completa de las utilidades de GNU Emacs en relación con el formato \ltx-, dentro de la cual se incluyen las facilidades para trabajar con ficheros de \btx-.}. Sería demasiado largo recoger aquí todo lo que ya he dicho en \cite{ataz-auctex} (donde dedico al trabajo con ficheros \tpf bib- casi diez páginas) , y por lo tanto me remito a dicho documento. \subsubsection{Otras herramientas disponibles en sistemas linux} \label{sec:otras-herr-disp} Además de las indicadas existen muchísimas otras herramientas disponibles. Si nos centramos, por ejemplo, en una instalación estándar de Debian, las herramientas que se incluyen para trabajar con ficheros \btx- son las siguientes: \begin{description} \item[bib2bib:] Utilidad de consola que lee uno o varios ficheros bibliográficos y filtra sus entradas con respecto a un determinado criterio, generando un nuevo fichero bibliográfico que contenga exclusivamente los registros filtrados. \item[bibclean:] Utilidad de consola para imprimir en pantalla y comprobar la sintaxis de una base de datos \btx-. También es muy útil para reformatear todos los registros, unificando su aspecto visual. \item[bibcursed:] Es un editor de ficheros \tpf bib- que funciona en modo de consola (sin necesidad de tener cargado el sistema gráfico). Puede ser útil para los poco amantes de las ventanas. \item[bibindex:] Utilidad de consola que permite crear un índice binario que acelere las búsquedas hechas en una base de datos con biblook. \item[biblook:] Utilidad de consola que permite realizar búsquedas rápidas en un fichero bibliográfico. Las búsquedas pueden además acelerarse mucho si se genera un índice binario para el fichero mediante la utilidad bibindex. \item[bibtex2html:] Utilidad de consola que permite convertir una base de datos bibliográfica al formato HTML \item[bibtool:] Utilidad de consola que permite realizar varias acciones sobre un fichero \tpf bib-. Es una herramienta muy útil que incluye un muy completo manual de referencia. \end{description} Junto con estas herramientas, que he destacado exclusivamente porque están disponibles de modo directo para cualquier usuario de sistemas Debian (o distribuciones basadas en Debian, como Ubuntu), por Internet circulan numerosas utilidades o scripts para manipular bases de datos bibliográficas en formato \btx-, y en la CTAN están disponibles varias de ellas: no todas trabajan en todos los sistemas, y no todas son igual de útiles, pero merece la pena echarles un vistazo, por lo que recomiendo la consulta del \emph{catálogo general} de la CTAN, organizado por materias, en <<\url{http://texcatalogue.sarovar.org/bytopic.html}>>. \section{Los estilos bibliográficos} \label{sec:los-estil-bibl} \subsection{Descripción de los estilos estándar de \btx-} \label{sec:los-estilos-estandar-1} \btx- se acompaña de cuatro estilos llamados \ltr plain-, \ltr abbrv-, \ltr alpha- y \ltr unsrt-. El estilo esencial es el primero, y los otros funcionan como él en todo salvo en uno o dos puntos concretos. A continuación describiré estos estilos atendiendo exclusivamente a sus características principales y sin entrar en excesivos detalles (cuya descripción con palabras, por otra parte, ocuparía demasiado espacio). Mi consejo para ver exactamente las características de cada uno de los estilos es escribir un fichero \tpf bib- de prueba, incluir un registro de cada uno de los tipos admitidos, llenar \emph{todos} los campos posibles de cada registro, e incluir dicha base de datos en un documento de prueba, en el que hayamos incluido un comando \cmd nocite\{*\}-. En la próxima explicación, menciono varias veces la noción \emph{autoría}. Con ella me quiero referir a lo que ya se explicó en la página \pageref{sec:la-autoria-de}. \begin{description} \item[Estilo ``plain''.] Sus características son: \begin{enumerate} \item La lista bibliográfica final se ordena alfabéticamente atendiendo a la autoría, y si hubiera más de una obra del mismo autor, se toma en cuenta al año de las mismas y después el título. Si sigue habiendo igualdad tras aplicar los criterios anteriores, el último criterio es el del orden en el que fueron citadas y, para obras citadas simultáneamente mediante \cmd nocite\{*\}-, el orden que tengan en la base de datos. \item Las obras incluidas en la lista son numeradas consecutivamente y el número asignado a cada una de ellas, entre corchetes, se convierte en la etiqueta identificativa de la misma que será impresa en el lugar en el que se encuentren los comandos \cmd cite- existentes en el cuerpo del documento. \item Los datos de los campos se incluyen completos. \item Para ciertos campos se añaden determinadas palabras o abreviaturas en inglés. Por ejemplo, tras el contenido del campo \ltr edition- se añade la palabra ``\emph{edition}'', y hay tipos de registro en los que el nombre del campo (en inglés) forma parte de la referencia. \end{enumerate} \item[El estilo ``abbrv'':] Es idéntico al estilo \ltr plain- salvo en el hecho de que para ciertos datos se usan abreviaturas y así el nombre de pila de los autores es sustituido por sus iniciales y el nombre de ciertas revistas (que están predefinidas en el estilo y que se refieren a la informática) es sustituido por su abreviatura. Para la mayor parte de los usuarios, que no usan las revistas predefinidas en el estilo, la única diferencia con \ltr plain- es que del nombre propio del autor sólo se usan las iniciales. \item[El estilo ``alpha'':] Se distingue del estilo \ltr plain- exclusivamente en el hecho de que la etiqueta de identificación de cada obra en la lista no es un número, sino un texto generado automáticamente a partir de la \emph{autoría} de la referencia, el año de publicación y, en ocasiones, el inicio del título\footnote{Como regla se toman las tres primeras letras del nombre del autor y las dos últimas cifras del año de publicación. En obras con varios autores se toma la inicial de los tres primeros seguida de un signo ``+'' en formato de superíndice, si hay más de tres autores. Si con estos criterios a dos referencias se les asignara la misma etiqueta, las obras se ordenan relativamente entre sí, atendiendo a los criterios de ordenación del estilo \ltr plain-, y a las etiquetas se añade una letra para diferenciarlas entre sí: una ``a'' a la primera, una ``b'' a la segunda, etc.}. Asimismo la lista bibliográfica se ordena alfabéticamente según las etiquetas asignadas, y el comando \cmd cite- imprime, en el lugar en el que se encuentre, la etiqueta asignada a la obra citada. \item[El estilo ``unsrt'':] Es igual al estilo \ltr plain- salvo en el hecho de que en él la lista bibliográfica no se ordena alfabéticamente, sino según el orden en el que las distintas obras que aparecen en ella fueron citadas por primera vez. En este caso, para las obras incluidas en la lista de referencias mediante un comando \cmd nocite- se considerará que fueron citadas en el lugar en el que se encuentre tal comando. Y para el comando \cmd nocite\{*\}-, se usará el orden en el que las referencias se encuentren en el fichero \tpf bib-, pero sólo para las referencias que no hubieran sido citadas antes de \cmd nocite\{*\}-. \end{description} En cuanto a las características concretas de formateo de los campos son similares en todos estos estilos. Los aspectos más llamativos son: \begin{enumerate} \item Se escribe el nombre de pila antes que el apellido, lo que no deja de ser chocante en aquellos casos en los que la lista de referencias se ordena alfabéticamente a partir de los apellidos (estilos \ltr plain- y \ltr abbrv-, ya que ello provoca una ordenación alfabética tomando como referencia, no la primera palabra de cada párrafo, sino la segunda o la tercera. \item Los distintos elementos de la referencia se separan mediante un punto. Lo que también provoca problemas cuando el contenido de un campo no es numérico y no empieza con una mayúscula, pues los estilos sólo ajustan el uso de las mayúsculas en el campo \ltr title-. \item Todos los campos aparecen con letra normal, salvo el título de los libros y trabajos académicos y el nombre de las revistas, que aparecen en cursiva. \end{enumerate} \subsection{Estilos adicionales} \label{sec:estilos-adicionales} Junto con estos estilos estándar, existen multitud de estilos disponibles. En la CTAN hay varios de ellos preparados para su descarga, y algunas distribuciones de \ltx- incluyen por defecto ciertos estilos adicionales\footnote{Por ello, antes de buscar estilos adicionales, conviene que nos aseguremos de cuáles son los estilos incluidos en nuestra distribución de \ltx-. Lo que se puede hacer por distintos procedimientos que dependen de nuestra concreta instalación. A falta de algún otro procedimiento específico, podemos buscar los ficheros de extensión \tpf bst- existentes en nuestro sistema; o mejor: los existentes en alguno de los directorios en los que \btx- busca los ficheros de estilo. En la nota \ref{nota:cnf} se explica cómo localizar cuáles son esos directorios en un sistema Unix/Linux.}. Entre los estilos adicionales hay algunos cuya instalación es tan corriente que son estilos \emph{casi} estándar. Otros no son tan conocidos, pero resultan interesantes. Muchos de ellos consisten exclusivamente en uno o varios estilos para \btx-, y otros incluyen también un \emph{paquete} que hay que incluir en el documento principal, mediante \cmd usepackage-, para poder usar el estilo. No voy a explicar todos los estilos adicionales, porque ello sería tedioso, sino exclusivamente los más conocidos e interesantes: \begin{description} \item[abstyles:] Son un conjunto de estilos llamados ``\emph{estilos adaptables}''. Su principal peculiaridad es que ciertas características del estilo están \emph{parametrizadas} de tal manera que pueden ser cambiadas desde el documento \tpf tex- mediante ciertos comandos, aunque en este punto la información que ofrece su fichero de ayuda es verdaderamente críptica. Entre sus inconvenientes puede citarse el hecho de que sólo están preparados para trabajar con documentos en alemán o en inglés. Aunque esto tiene arreglo si en lugar de los \ltr abstyles- propiamente dichos usamos ``\texttt{abstyles-babel}'' que es una modificación de \ltr abstyles- para que si en babel el idioma activo es ``spanish'' el estilo bibliográfico se genere en español. Pero como los estilos que proporcionan ambos paquetes tienen el mismo nombre, si tenemos instalados los dos paquetes en nuestro sistema, sólo funcionará uno de ellos: el primero que sea localizado por \btx- cuando busque el fichero de estilo\footnote{Cuál sea el primero depende de la concreta distribución de \ltx- que tengamos instalada, y de la ruta de búsqueda de ficheros que en ella se haya implementado. Cuando \ltx- (o \btx-) busca un fichero, va mirando por orden en diferentes directorios hasta que lo encuentra.}. \item[achicago:] El estilo de citas basado en el ``\emph{Chicago Manual of Style}'' está implementado por varios paquetes: \ltr achicago-, \ltr achicago.bst-, \ltr chicago-, \ltr jas99-, \ltr jas99m- y \ltr newapa-. También el paquete \ltr authordate- produce citas acordes con el manual de estilo Chicago, aunque este último paquete tiene otras peculiaridades. El estilo de citas Chicago es del tipo Autor-año y, personalmente, para obtener citas de estas prefiero el paquete natbib (que se menciona en seguida). \item[Apalike:] Este estilo también fue escrito por Oren Patashnik (el autor de \btx-). Es un estilo de tipo ``Autor-año'' y para su correcto funcionamiento, hay que cargar en los documentos \ltx- el paquete del mismo nombre que el estilo: \ltr apalike-. \item[Harvard:] La familia de estilos Harvard implica también citas del tipo Autor-año. \item[Natbib:] Natbib es al mismo tiempo un estilo y un paquete, aunque quizás en él destaque más la parte de paquete, por la cantidad de modificaciones que incorpora al funcionamiento del comando \cmd cite-. Durante mucho tiempo (hasta que conocí el trabajo de unos compañeros de la Universidad de Murcia que han diseñado \ltr flexbib-), he considerado que \ltr natbib- era la mejor opción. Permite elegir entre citas del tipo Autor-año o citas numéricas. Incluye versiones adaptadas de los estilos estándar (salvo el estilo \ltr alpha-) llamadas \ltr plainnat-, \ltr abbrvnat- y \ltr unsrtnat-; añade un campo \ltr usr-, dispone de una estupenda documentación e incorpora numerosas modificaciones y mejoras en el procedimiento de las citas. \item[Flexbib:] Este paquete ha sido diseñado en la Universidad de Murcia, y no está disponible en la CTAN, sino en <<\url{http://www.latex.um.es/}>>. Incorpora muchas de las ventajas de \ltr natbib- y a ellas añade dos muy importantes: La primera es que este paquete es sensible a \ltr babel-, la segunda es que muchas de las características esenciales del estilo están \emph{parametrizadas}, es decir: pueden cambiarse sin necesidad de cambiar de estilo, porque funcionan como \emph{opciones} del paquete. Una muy buena descripción del paquete, además de en su página web, en \cite{mira04}. \end{description} \subsection{Cómo españolizar los estilos estándar} \label{sec:como-espan-algun} Los estilos estándar de \btx- están pensados para documentos que se vayan a redactar en inglés y por lo tanto usan partículas, palabras y abreviaturas en inglés. Para conseguir que nuestra lista de referencias figure totalmente en español, sin palabras en inglés, existen varios procedimientos. \begin{enumerate} \item Lo más cómodo es usar algún estilo o paquete que añada a los paquetes estándar la sensibilidad a \ltr babel-. Hay varios paquetes que hacen eso, y más cosas. Podemos citar ``\texttt{abstyles-babel}'', diseñado por Tomás Bautista y que es una adaptación de los abstyles, para que sean sensibles a \ltr babel-, o los paquetes \ltr babelbib- y \ltr flexbib-. \item Usar algún estilo diseñado para el idioma español. En Internet se pueden localizar algunos, y en la CTAN está disponible el estilo ``spain.bst'' basado en las indicaciones que sobre referencias bibliográficas se contienen en el ``Diccionario de ortografía técnica'' de J. Martínez de Sousa. \item Podemos también generar nuestro propio estilo bibliográfico, preparado para trabajar en un idioma concreto. Al respecto estúdiese lo dicho en la sección \ref{sec:como-crear-estilos}. \item Por último, podemos modificar el fichero donde se contiene algún otro estilo, y prepararlo para que trabaje en español. Esta última posibilidad exige un mayor conocimiento del funcionamiento interno de \btx-. Conviene por lo tanto aprender muy bien lo que se expone en la parte \ref{part:btx-avanzado} de este documento. \end{enumerate} Para esta parte de la guía, referida al nivel básico, el procedimiento más adecuado es el primero de los mencionados. \clearpage \part{\btx- intermedio} \label{part:btx-intermedio} \section{Generación automatizada de estilos bibliográficos} \label{sec:como-crear-estilos} Si ninguno de los estilos bibliográficos que acompañan a \btx-, o que están disponibles en la CTAN nos convence, podemos generar nuestro propio estilo bibliográfico. Ello se puede hacer escribiendo a mano nuestro propio estilo, lo que exige un profundo conocimiento del lenguaje usado por los ficheros de estilo (véase la parte \ref{part:btx-avanzado}), o mediante algunas herramientas dirigidas a la generación de ficheros \tpf bst-. Estas herramientas, cuando son ejecutadas, empiezan preguntando al usuario por las características que debe tener el nuevo estilo (preguntas en inglés, ¡of course!), y, con las respuestas dadas, se genera un fichero \tpf bst- que contiene el nuevo estilo o, lo que es más normal, un fichero intermedio a partir del cual es posible generar el fichero \tpf bst-. La herramienta que voy a analizar aquí funciona de esa segunda manera: el fichero intermedio tiene la extensión \tpf dbj- y la herramienta se llama \ltr makebst- y forma parte del paquete <<\texttt{custom-bib}>> (disponible en la CTAN). \subsection{Makebst} \label{sec:makebst} Makebst es un programa para \TeX{} diseñado por Patrick W. Daly que permite generar ficheros bibliográficos personalizados. Para instalarlo\footnote{OJO: Hay distribuciones de \ltx- que instalan por defecto este paquete, por lo que lo mejor es, antes de nada mirar en el directorio predeterminado para los paquetes incluidos con la distribución. En mi sistema ese es <<\url{/usr/share/texmf-tetex/tex/latex/}>>. En el caso de que el paquete ya esté instalado, muy posiblemente no sean precisos los pasos que se indican en el texto.} hay que descargarlo desde la CTAN, descomprimirlo en algún directorio y ejecutar, sucesivamente, los siguientes comandos {\small \begin{verbatim} $> latex makebst.dtx $> latex makebst.ins \end{verbatim} } El primero de estos comandos extraerá del fichero \ltr makebst.dtx- la documentación y el fichero \ltr makebst.ins-. El segundo comando genera un fichero llamado \ltr makebst.tex- que será el que usaremos para generar nuestros estilos personalizados. En el paquete de instalación, junto con \ltr makebst.dtx- se encuentran varios ficheros de extensión \tpf mbs-. El nombre MBS proviene de las siglas de <<\emph{Master \btx- Style}>>. Para la generación de nuestro estilo personalizado deberemos usar dos de esos ficheros: \ltr merlin.mbs- que es el fichero maestro, y un segundo fichero \tpf mbs- que contenga las especificaciones adecuadas al idioma en el que se generará el nuevo estilo. Para que el nuevo estilo esté españolizado ese fichero debe ser \ltr spanish.mbs-, pero podemos también generar estilos en otros idiomas: catalán, esperanto, portugués... etc. También podemos generar un estilo sensible a babel, aunque eso sólo funciona con algunos idiomas, entre los que afortunadamente se encuentra el español. Para generar un estilo, simplemente debemos ejecutar \verb|latex makebst.tex| Ello pondrá en marcha un proceso interactivo en el que se nos harán una serie de preguntas respecto del estilo a generar. Las preguntas van en inglés y, una vez que hemos empezado no es posible la marcha atrás, por lo que si nos equivocamos en alguna respuesta, debemos elegir entre interrumpir el proceso y volver a empezar desde el principio (lo que se hace pulsando primero CTRL-C y después X), o seguir adelante para más tarde modificar a mano el error. Al respecto véase la sección \ref{sec:uso-de-los}. Explicar las distintas preguntas, por el orden en el que aparecen, es complejo, puesto que las preguntas planteadas por makebst son interactivas, es decir: dependiendo de la respuesta dada a cierta pregunta, se plantearán o no otras preguntas adicionales. Además no todas las preguntas tienen la misma importancia y las preguntas se plantean a veces de manera desordenada (en mi opinión), lo que dificulta su tratamiento sistemático. Por ello a continuación en lugar de referirme a todas y cada una de las preguntas que se plantean durante el proceso, las agruparé temáticamente por el orden en el que se plantean, explicando, para cada grupo, la utilidad general de las distintas preguntas, y resaltando las que me parecen más importantes. Como no voy a explicar el significado de todas las preguntas, lo que si haré es dar un consejo general para el caso de que no sepamos que respuesta dar a alguna de ellas: Aceptar la respuesta predeterminada, es decir: pulsar ENTER para pasar a la próxima pregunta. Cuando se enumeran varias respuestas posibles, la respuesta por defecto viene marcada con un asterisco. En los demás casos la respuesta por defecto se indica entre paréntesis, tras la pregunta. La única pregunta que no admite una respuesta por defecto es la relativa al nombre del fichero de salida, es decir: el nombre que tendrá el estilo que queremos crear. Las preguntas que makebst nos hace son las siguientes: \begin{enumerate} \item \textbf{Preguntas generales.} En el primer grupo de preguntas (las cinco primeras) se plantean una serie de cuestiones generales que afectan a ciertos aspectos del funcionamiento de makebst, y al fichero de estilo que se generará. De estas preguntas las más importantes son la 2ª y la 3ª que plantean las siguientes cuestiones: \begin{itemize} \item Nombre del fichero maestro. El fichero maestro es el fichero con base en el cual makebst planteará las próximas preguntas y generará el fichero de estilo solicitado. El valor por defecto es merlin.bst, y este es el valor que en el resto de esta sección asumo que hemos introducido. Si lo cambiamos, las preguntas que se plantearán serán distintas a las que aquí recojo\footnote{Además, para cambiarlo, deberíamos tener algún otro fichero que cumpla su función. Yo no lo conozco, y quien sepa escribirlo, con toda seguridad que no necesita ejecutar makebst para crear su propio fichero de estilo.}. \item Nombre del fichero a generar. Es decir: el nombre que tendrá el estilo que estamos generando. Por ejemplo: ``MiEstilo''. El nombre que indiquemos tiene que ser correcto para nuestro sistema operativo. No hay que especificar la extensión que tendrá el fichero, ya que automáticamente se añadirá la extensión \tpf bst-. \end{itemize} Para el resto de las cuestiones planteadas podemos dejar el valor por defecto. \item \textbf{Preguntas relativas a los ficheros externos.} Makebst utiliza (o puede utilizar) dos ficheros externos, en conjunción con el fichero maestro (que por defecto es merlin.bst). Estos ficheros son uno para la definición de idioma, y otro con nombres extra de revistas: \begin{itemize} \item Fichero para la definición de idioma. Este fichero es esencial porque de él depende el idioma en el que nuestro fichero de estilo generará las listas de bibliográficas. Con el paquete custom-bib se incluyen varios ficheros de definición de idioma (catalán, danés, holandés, inglés, esperanto, finés, francés, etc). Para el español hay que usar el fichero \ltr spanish.mbs-. Si aquí no se elige ningún fichero externo de definición de lenguaje, más tarde se nos preguntará si queremos generar un estilo en inglés (idioma por defecto) o un estilo sensible al idioma activo en el paquete babel. Esta sería la vía para generar un estilo multilingüe. Aunque para que este estilo multilingüe funcione, es preciso disponer de un fichero llamado \ltr babelbst.tex-\footnote{En teoría \ltr babel- debería proporcionar un conjunto de ficheros cada uno de los cuales contuviera la traducción a un idioma de las cadenas de texto usadas por \btx-, junto a un fichero general, \ltr babelbst.tex- que se limitara a cargar el fichero correspondiente al idioma activo. Sin embargo babel no proporciona el fichero \ltr makebst.tex- y además son muy pocos los idiomas para los que existe un fichero de definición de idioma para usar con \btx-. Se supone que el nombre de esos ficheros consiste en el código del idioma correspondinte (por ejemplo: ``es'' para el español, ``fr'' para el francés, ``it'' para el italiano, etc) seguido de ``bst.tex''. O sea, el fichero para el español se debe llamar ``esbst.tex''. Y aunque hay pocos ficheros de definición de idioma, afortunadamente el español es uno de ellos. Es decir: el fichero \ltr esbst.tex- existe. Normalmente se encontrará en el directorio en el que tengamos instalado el paquete babel. Pero seguimos sin tener un fichero llamado \ltr babelbst.tex-, necesario para que el estilo creado con makebst funcione. Podemos crearlo de dos formas: Escribiéndolo nosotros (difícil si no se sabe el bastante \TeX), o cambiándole el nombre a \ltr esbst.tex- por \ltr babelbst.tex- (o creando un enlace, o una copia). Si hacemos esto último, tendremos un estilo sensible a babel pero que sólo será capaz de manejar dos idiomas: el inglés y el español. No estoy seguro de que eso merezca el nombre de ``estilo multilingüe'', pero, afortunadamente, a los hispanoparlantes nos sirve.}. \item Ficheros extra con nombres de revista. Se trata de algunos ficheros incluidos en el paquete custom-bib en los que se recogen abreviaturas estándar para las revistas más importantes y conocidas de ciertos campos científicos\footnote{Los ficheros son: \ltr geojour.mbs-: Revistas de geografía física; \ltr photjour.mbs-: Revistas de óptica; \ltr physjour.mbs-: Revistas de física y \ltr supjour.mbs-: Revistas suplementarias.}. Si incluimos estos ficheros haremos que el estilo que estamos generando incluya abreviaturas preestablecidas para las revistas incluidas en tales ficheros. \end{itemize} \item \textbf{Preguntas relativas al estilo de las citas:} Este grupo de preguntas posiblemente sea el que en mayor medida marque el tipo de estilo que estamos generando. Las citas pueden ser básicamente de los siguientes estilos: \begin{enumerate} \item Estilo estándar \ltx-. Es lo que se llama \emph{estilo numérico}: a cada obra incluida en la lista bibliográfica final se le asigna un número, el cual es el que se imprime en los lugares del texto donde dicha obra sea citada mediante el comando \cmd cite-. Este es el estilo de citas que usan tres de los cuatro estilos estándar de \btx-: \ltr plain-, \ltr abbrv- y \ltr unsrt-. También es el estilo que usa \ltx- cuando la bibliografía se construye sin la ayuda de \btx-. Este estilo es el estilo por defecto para makebst. \item Estilo Autor-año. Este estilo es un estándar en determinados campos científicos y admite diferentes modalidades (natbib, apalike, harvard, astronomy, chicago). Básicamente consiste en que para cada obra incluida en la lista de referencias se genera una etiqueta que contiene el apellido completo del autor y el año de publicación. Las distintas modalidades inciden en cómo se separan ambos elementos, y afectan también a qué hacer en el caso de que haya varios autores. Si el mismo autor tiene varias obras el mismo año, se diferencian unas de otras añadiendo una letra al año, como, por ejemplo, en \ltr Ataz 1980a-. \item Estilo \ltr alpha-. En cierto modo se puede considerar una modalidad del estilo Autor-año, porque para cada obra incluida se genera una etiqueta a partir del apellido del autor, año de la obra y, en su caso, inicio del título. Pero la diferencia está en que mientras el estilo Autor-año pretende que el lector sólo con la lectura de la etiqueta se haga una idea aproximada de qué obra se ha citado, en el estilo \ltr alpha-, la etiqueta no pretende tener sentido, sino que simplemente sirve para identificar a cada obra citada en el trabajo de manera única. Por ello normalmente no se usa el apellido completo, ni este se separa del año, el cual tampoco suele ponerse completo. Esta es la razón de que cuando se habla de estilos tipo ``Autor-año'' el estilo \ltr alpha- nunca se entienda incluido en tal expresión. Para el estilo \ltr alpha- makebst admite tres modalidades, en las que la etiqueta se construye de diferente manera. En la primera, cuando hay varios autores, la etiqueta se construye a partir de la inicial de cada autor. En la segunda modalidad, cuando hay varios autores, se usa el apellido del primero, como si hubiera un solo autor. En la tercera modalidad, el apellido del autor se incluye entero en la etiqueta. \item Estilo en el que el contenido de la etiqueta identificativa de las obras en la lista de referencias es igual a la clave interna de la referencia en el fichero \tpf bib-. Este estilo está pensado exclusivamente para cuando se quieran generar listados del contenido de una base de datos bibliográfica. \end{enumerate} Pues bien: en la primera pregunta de este grupo de preguntas deberemos elegir entre uno de estos seis estilos (cuatro estilos básicos de los que uno de ellos admite tres modalidades). Dependiendo del estilo elegido, las siguientes preguntas varían. Y así: \begin{enumerate} \item Si se eligió estilo tipo Autor-Año, se nos preguntará, de las distintas variedades que este estilo tiene (natbib, apalike, harvard, astronomy, chicago) cuál preferimos, pudiendo incluso elegir una variedad innominada, siempre que dispongamos de un fichero \tpf sty- que la implemente. \item Si no se eligió el estilo Autor-Año, se nos preguntará si queremos que se genere salida HTML. Se trata de una utilidad que permite que el fichero de estilo, en lugar de generar un fichero \tpf bbl- construido con comandos \ltx-, genere un fichero HTML, lo que sería una forma fácil de escribir una página HTML que incluya un listado bibliográfico. Aunque la verdad es que hay otras utilidades para eso que me gustan más. En todo caso, si decidimos contestar que sí, podemos elegir tres modalidades para el HTML. En la primera las referencias se separarán por párrafos; en la segunda, las referencias se incluirán en una lista HTML, y en la tercera se incluyen las claves internas de las referencias. Si aceptamos cualquiera de estas posibilidades hay que tener en cuenta que cualquier intento de compilar nuestro documento principal tras haber ejecutado \btx- sobre él y generado el fichero \tpf bbl-, generará un error, porque el tal fichero \tpf bbl- internamente no consta de comandos \ltx-, sino de comandos HTML. \end{enumerate} \item \textbf{Preguntas relativas a campos adicionales:} Las siguientes dos preguntas afectan a los campos en nuestra base de datos. Si hemos construido un fichero \tpf bib- en el que sólo estén los campos estándar, hay que contestar a ambas que no. Pero es posible que hayamos añadido dos campos extra para los registros, y contestando ``y'' (de ``yes'') a estas dos preguntas, conseguiríamos que tales campos sean reconocidos por el estilo. Los campos a que se refieren estas preguntas son los siguientes: \begin{enumerate} \item Campo \ltr language-. Si en nuestra base de datos las referencias tienen un campo llamado \ltr language- cuyo contenido es el nombre del idioma en que está el título de la referencia en cuestión, tal y como hay que referirse a dicho idioma en \ltr babel-, y contestamos que si a esta pregunta, en nuestro estilo se activará el idioma correspondiente a cada referencia antes de incluirla en la lista de referencias. Eso garantiza que la partición en guiones del título sea correcta de acuerdo con las reglas correspondientes al idioma en el que dicho título esté escrito. En caso de que para alguna referencia no constara valor para este campo, se usaría el idioma por defecto para el documento. Téngase en cuenta, además, que para usar esta utilidad, en el encabezamiento de nuestro fichero \tpf tex-, al incluir la orden \cmd usepackage\{babel\}- hay que especificar como idiomas a cargar todos aquellos que se encuentren representados en la base de datos. \item Campo \ltr annote-. Este campo se puede haber incluido para anotaciones extra sobre la referencia a que se refiere un registro. Si disponemos de él, y contestamos que sí a la pregunta que nos haga makebst, su contenido será incluido en la lista de referencias final. \end{enumerate} \item \textbf{Orden de las referencias:} La siguiente pregunta también es muy importante, aunque sólo se hace en el caso de que no hayamos elegido el estilo de citas \ltr alpha-. Se trata del orden en el que queremos que aparezcan las referencias citadas en la lista de referencias. La ordenación posible varía dependiendo del estilo de citas elegido. Si se eligió como cita el estilo numérico (o el basado en la clave), podemos elegir entre: \begin{itemize} \item Orden alfabético de autores. Es la respuesta por defecto. \item Orden de citas. Funciona del modo similar al estilo estándar \ltr unsrt-. \item Orden cronológico (por el valor del campo \ltr year-) y después por autores. \item Orden cronológico inverso, es decir: como el anterior, pero empezando por las referencias más recientes. \end{itemize} Pero si elegimos el estilo de citas Autor-año, entonces la segunda opción es la de ordenar por etiquetas, sistema este que es exigido por algunas revistas y que provoca una ordenación más sensible que la alfabética pura por autores. Las diferencias están en el caso de que haya autores con obras firmadas por ellos solos y con obras en colaboración. \item \textbf{Formateo de los autores y fechas}. A continuación se incluyen varias preguntas (12 en total, creo) relativas a cómo formatear el nombre de los autores y las fechas. Yo supongo que estos campos se tratan antes que los demás, porque son los que se usan en el estilo de citas Autor-año, y porque en la lista de referencias que se generará, el campo autor es siempre el primero. Las cuestiones aquí planteadas son muchas y, si quiero evitar que este documento se haga interminable, no puedo ocuparme de todas de forma pormenorizada. A título de ejemplo enunciaré las siguientes: \begin{itemize} \item Cómo tratar las partículas que separan el nombre de los apellidos. Es decir: ``Miguel de Cervantes'' ¿debe clasificarse en la ``D'' como ``De Cervantes, Miguel'', o en la ``C'' como ``Cervantes, Miguel De''? Recordemos, a efectos de esta pregunta, que \btx- identifica que una parte de un nombre es partícula que separa el nombre de pila de los apellidos en el caso de que dicha parte esté escrita con minúsculas. \item Cómo escribir el nombre de los autores. Podemos elegir entre varias posibilidades que combinan varios factores, como si escribir o no el nombre de pila completo, si colocar o no los apellidos antes que el nombre, si poner o no un punto detrás de las iniciales, etc. En total se ofrecen diez posibilidades para esta pregunta. \item Tipo de letra para el nombre de los autores: Normal, versalitas, negrita, etc. \item Lugar en el que hay que imprimir la fecha. \item Tipo de letra para la fecha. \item Etc. La verdad es que las preguntas son exhaustivas y si me ocupara de todas este documento llegaría al centenar de páginas. Hay preguntas para, por ejemplo, la puntuación entre los nombres de los autores, qué hacer en el caso de que se repitan en la lista dos obras del mismo autor, qué hacer en el caso de que haya demasiados autores para una referencia, cómo debe aparecer el nombre del autor en las etiquetas (si se eligió un estilo de citas tipo Autor-año), qué hacer cuando en algún registro no conste la fecha, qué uso dar al contenido del campo \ltr month-, cómo ordenar los datos que componen la fecha, etc. \end{itemize} \item \textbf{Formateo de los distintos campos}: El siguiente grupo de cuestiones (más de 30) afecta al formateo que recibirán los distintos campos en los diferentes tipos de registro, aunque también se cuelan algunas preguntas extra sobre ciertos campos adicionales a los estándar. Este grupo de preguntas es el que me parece especialmente desordenado, o en el que yo no he sabido descubrir cuál es el orden. Se empieza preguntando por el campo título de los artículos, se sigue preguntando por otros datos sobre artículos y, de pronto, se salta al título en las tesis doctorales, el título y número en los informes técnicos, para volver otra vez a las revistas... Las preguntas son numerosas, pero no muy difíciles de entender si se tienen presentes los tipos de registro y los campos de cada uno de ellos. \item \textbf{Preguntas relativas a la puntuación entre las distintas partes de la referencia bibliográfica}. En este grupo de preguntas (en total cinco) podemos elegir el tipo de puntuación que, de modo general, separará a unas partes de otras en la referencia bibliográfica (punto, coma, punto y coma) y el tipo de puntuación que se usará para separar ciertos campos específicos. Estos campos son: \begin{itemize} \item El campo \ltr author-. Es el primer dato de las referencias, y muchas personas tienen la costumbre de separar este dato del resto mediante el signo de los dos puntos, cuyo uso no tiene sentido para separar el resto de los campos. \item El campo \ltr note-. Suele ser el último dato y podemos elegir para él que siempre vaya precedido de un punto, aunque el resto de los campos se separen entre sí de otra manera. \end{itemize} \item \textbf{Opciones dependientes del idioma:} Si en la pregunta correspondiente elegimos un fichero de definición de idioma, a partir de aquí las preguntas serán extraidas de dicho fichero. En total las preguntas son 9, y en ellas se nos plantea si se deben usar o no ciertas palabras y abreviaturas tales como ``páginas'', ``editor'', etc. Ello implica en ocasiones volver a temas ya tratados como, por ejemplo, el formateo de los nombres de los autores, ahora para ver cómo usar la partícula separadora de dos o más autores, la cual varía dependiendo del idioma. Ese volver a temas anteriores, contribuye a que, como antes dije, se produzca la sensación de que las preguntas se plantean de manera desordenada. \item \textbf{Otras preguntas:} Las siguientes preguntas (cuatro o cinco), acentúan aun más la sensación de desorden de la que hablaba, porque se vuelve otra vez a preguntar sobre posibles campos adicionales en nuestra base de datos. En tal sentido se nos pregunta si usamos o no campos adicionales para REVTeX\footnote{El paquete REVTeX, de la Sociedad Física Americana (APS) da soporte para algunos campos adicionales en las bases de datos: collaboration, eid, eprint, archive, numpages y url.}. Entre estas preguntas es especialmente importante, en mi opinión, la relativa a si usamos o no un campo \ltr url-. Si en nuestra base de datos hemos añadido, para documentos electrónicos, un campo url destinado a almacenar su dirección en Internet, constestamos que sí en esta pregunta el contenido de este campo se incluirá en la referencia bibliográfica y se formateará correctamente, aunque, para esto último, es preciso que en nuestro documento \ltx- hayamos cargado el paquete \ltr url-. \item \textbf{Preguntas relativas a la compatibilidad de los comandos a utilizar en el fichero \tpf bbl-:} Las dos penúltimas preguntas se refieren a qué comandos usar dentro del fichero \tpf bbl- que es generado por \btx-. Ello afecta a la compatibilidad de dicho fichero con las distintas versiones de \ltx-. En concreto las preguntas se refieren a cómo generar la cursiva, y a la compatibilidad o no con plain \TeX. \item \textbf{La última pregunta:} Finalmente se nos informa que se ha generado un fichero \tpf dbj- y se nos pregunta si queremos ejecutarlo. Si respondemos que sí se generará ya nuestro fichero de estilo. Si respondemos que no (respuesta por defecto) para generar el fichero de estilo deberemos ejecutar nosotros mismos el fichero \tpf dbj-, lo que se explica en la próxima sección. \end{enumerate} \subsection{Uso de los ficheros \tpf dbj-} \label{sec:uso-de-los} Al terminar la ejecución de makebst, en el directorio desde donde se le hubiera llamado un fichero con el nombre que hayamos indicado al principio del proceso (en la tercera pregunta) y con extensión \tpf dbj-. Si a la última pregunta respondimos que sí, tendremos además un fichero, del mismo nombre y con extensión \tpf bst-. Este último fichero es nuestro fichero de estilo, y por lo tanto para usarlo basta con copiarloa alguno de los directorios en los que \btx- busca los ficheros de estilo\footnote{Lo que depende de nuestra concreta distribución. En la distribución estándar para sistemas Unix/Linux, ese directorio sería \ltr /usr/local/share/texmf/bibtex/-.}. Pero de momento es mejor concentrarnos en el fichero \tpf dbj-. En él se contiene la información necesaria para generar un fichero de estilo con las características que hemos especificado a lo largo del proceso que se acaba de ver. El fichero de estilo se generará simplemente ejecutando \ltx- sobre el fichero \tpf dbj-. Así, por ejemplo, si nuestro estilo se llama \ltr MiEstilo-, para generar el fichero \ltr MiEstilo.bst- nos basta con, en la línea de comandos, ejecutar \verb|latex MiEstilo.dbj| Por lo tanto, si queremos generar un nuevo fichero de estilo, muy parecido al que acabamos de generar, pero con alguna variante, es mucho más cómodo \emph{modificar} el fichero \tpf dbj- que volver a ejecutar makebst. Asimismo, si durante la ejecución de makebst, en algún momento nos equivocamos, en lugar de interrumpir el proceso y volver a empezar, es más razonable terminarlo y luego modificar el fichero \tpf dbj-. En el fichero \tpf dbj- se almacenan todas las preguntas planteadas por makebst, a partir de las relativas al uso de ficheros externos, con sus correspondientes respuestas. Tanto las preguntas como las respuestas posibles van, en general, precedidas de un signo de comentario (\%). Y para cada pregunta se distingue entre la respuesta por defecto y las restantes. La respuesta por defecto aparece sangrada con respecto a las demás, y en las restantes respuestas, tras el signo \% al principio de la línea, hay una cadena de texto, seguida de una coma y un nuevo signo \% tras el que se contiene el texto de la respuesta. Pues bien: para cada pregunta hecha por makebst y recogida en el fichero \tpf dbj-: \begin{enumerate} \item Si todas las respuestas empiezan con una marca de comentario, significa que la respuesta a esa pregunta coincide con el valor por defecto (siempre la primera respuesta, algo más sangrada que las restantes). \item Si alguna línea no empieza por una marca de comentario, significa que esa fue la respuesta elegida. \end{enumerate} Por lo tanto, para cambiar algún detalle en un estilo, disponiendo del fichero \tpf dbj- es más sencillo modificar a mano este fichero que volver a ejecutar makebst. Tras modificar el fichero \tpf dbj-, ejecutando \ltx- sobre él se generará un nuevo fichero de estilo con la nueva característica activada. Por ejemplo: Imaginemos que tenemos un estilo, llamado ``MiEstilo'' en el que el nombre de los autores se escribe en letra normal, y queremos que se escriba en negrita. Debemos abrir el fichero \ltr MiEstilo.dbj- y buscar la pregunta correspondiente al formato del nombre del autor. Una vez localizada veremos lo siguiente: {\small \begin{verbatim} %TYPEFACE FOR AUTHORS IN LIST OF REFERENCES: %: (def) Normal font for author names % nmft,nmft-sc,%: Small caps authors % nmft,nmft-it,%: Italic authors % nmft,nmft-bf,%: Bold authors % nmft,nmft-def,%: User defined author font \end{verbatim} } \noindent Para conseguir que los autores se escriban en negrita, simplemente debemos quitar la primera marca de comentario en la línea 5ª, y, tras ello, volver a ejecutar \noindent\verb|latex MiEstilo.dbj| \noindent Lo que nos generará un nuevo fichero de estilo llamado \ltr MiEstilo.bst- idéntico al anterior salvo en el hecho de que ahora los nombres de los autores se imprimen en negrita. En ocasiones la activación de ciertas características puede implicar que haya a su vez que modificar la respuesta dada a alguna otra. Por ejemplo: si se eligió un estilo de cita numérico, y luego se quiere cambiar al estilo Autor-año, no basta con cambiar esta respuesta en el fichero \tpf dbj-, sino que el estilo Autor-año implica que se habrían planteado otras preguntas cuya respuesta habrá que indicar en el fichero \tpf dbj-. \section{Paquetes \ltx- relacionados con \btx-} \label{sec:paqu-ltx-relac} En la CTAN existen numerosos paquetes que añaden utilidades a \btx- o que de alguna manera amplían las posibilidades del sistema. No me es posible ocuparme de todos, y por ello seleccionaré los que me parecen más interesantes. \subsection{Referencias bibliográficas completas en el lugar donde son citadas} \label{sec:refer-bibl-compl} En determinadas especialidades existe la costumbre de incluir los datos completos de una referencia bibliográfica la primera vez que es citada en el texto. Hay dos paquetes dirigidos a obtener ese efecto: bibentry y footbib. Véamoslos por separado. \paragraph{El paquete bibentry:} \label{sec:el-paquete-bibentry} Este paquete, que en la CTAN se incluye en el mismo directorio que \ltr natbib-, ha sido desarrollado por Patrick W. Daly. Con él se pretende que cuando se incluya en el texto una cita, se imprima no sólo la etiqueta representativa de la misma, sino la referencia bibliográfica completa. El paquete incorpora los siguientes comandos \ltx-: \begin{itemize} \item \cmd nobibliography\{BaseDatos\}- Indica el nombre de la base de datos de la que debe extraer sus referencias el comando \cmd bibentry-. Por lo tanto equivale al comando \cmd bibliography- con la salvedad de que no imprime una lista de referencias. De hecho \cmd nobibliography- debe estar definido antes de que se puedan usar los comandos \cmd bibentry- \item \cmd bibentry\{clave\}- Imprime la referencia bibliográfica completa en el lugar donde se encuentre, salvo el punto con el que la referencia termina en los estilos estándar. Antes del uso de \cmd bibentry-, debe haberse indicado la base de datos de la que se extraerá el registro, mediante el comando \cmd nobibliography-. Asimismo, una referencia citada por este procedimiento no será incluida en la lista de referencia final (que, si se quiere generar, debe ser por el procedimiento normal). \end{itemize} Aunque no se si es por alguna circunstancia debida a mi instalación, o por un defecto en el diseño del paquete, lo cierto es que el uso de este paquete me genera errores (no críticos, pero errores), y, además, afecta al formateo de la página donde se debe imprimir la referencia completa. \paragraph{El paquete footbib:} \label{sec:el-paquete-footbib} Este paquete ha sido diseñado por Eric Domenjoub. Define un comando llamado \cmd footcite-, similar a \cmd cite-, pero que provoca que la referencia en cuestión se imprima al pié de la página donde se hizo, sin que estas notas entren en conflicto con las notas a pie de página normales. Asimismo los comandos \cmd cite- y \cmd nocite- pueden seguir usándose al modo habitual. Las referencias generadas por \cmd footcite- usan su propia base de datos y estilo bibliográfico, cuyos nombres le son indicados mediante \cmd footbibliography- y \cmd footbibliographystyle-. El paquete incluye otros comandos entre los que se puede citar \cmd footcite*- (que pone la marca en el texto pero no imprime la nota) y \cmd footnocite- (que imprimer la nota, pero sin poner marca alguna en el texto). Lo que menos me gusta de este paquete es que las notas generadas por él mantienen una numeración distinta del resto de las notas a pie y aunque las distintas opciones del paquete ofrecen varias posibilidades respecto a su formateo, lo cierto es que cuando las notas generadas por este paquete coinciden con las notas normales, el resultado estético no es bueno. \subsection{Generación de varias listas bibliográficas} \label{sec:el-paquete-bibunits} Existen varios paquetes para generar múltiples listas bibliográficas: bibtopic\footnote{Permite generar listas bibliográficas diferentes, a partir de bases de datos distintas. Se generará una lista para cada uno de los ficheros \tpf bib- implicados. }, bibunits, chapterbib\footnote{Genera listas bibligráficas independientes para cada fichero que haya sido incluido en el documento principal mediante el comando \cmd include-.}, compactbib\footnote{Este paquete no está diseñado para trabajar con \btx-, sino con el entorno estándar de \ltx- \ltr thebibliography-.}, multibbl\footnote{Fue diseñado pensando en referencias bibliográficas en idiomas que, al manejar distintos alfabetos, no tenga sentido la ordenación alfabética. Pero en la práctica sirve para generar cuantas listas bibliográficas deseemos. } y multibib. De todos ellos, a mi modo de ver, los más interesantes son bibunit y multibib. El primero permite generar varias listas bibliográficas atendiendo al lugar del documento donde se produce la cita, y el segundo permite hacerlo atendiendo al contenido de la cita. \paragraph{El paquete bibunit:} \label{sec:el-paquete-bibunit} Este paquete, elaborado por José Alberto Fernández, y modificado por Thorsten Hansen, permite trabajar con varias listas bibliográficas para distintas unidades de un documento. Una vez cargado el paquete, podemos usar el entorno bibunit cuyo formato es el siguiente: {\small \begin{verbatim} \begin{bibunit}[Estilo] ... (texto normal) \putbib[NombreBase] \end{bibunit} \end{verbatim} } Donde \emph{Estilo} es el nombre de alguno de los estilos estándar de \btx-, y \emph{NombreBase} es el nombre de nuestra base de datos. El resultado será que en el lugar donde se encuentre el comando \cmd putbib- se generará una lista de referencias con las obras correspondientes a todos los comandos \cmd cite- y \cmd nocite- incluidos dentro del entorno \ltr bibunit-, que no impide que también pueda generarse una lista de referencias global para el documento, mediante el procedimiento normal en \btx-. El paquete también implementa el comando \cmd bibliographyunit[Unidad]- Donde \emph{Unidad} (que debe ser introducido entre corchetes, no entre llaves), puede asumir los valores \cmd chapter- o \cmd section-. El efecto de este comando es el siguiente: \begin{enumerate} \item Para cada unidad de las indicadas en el comando (capítulos o secciones) se generará una lista bibliográfica, si dentro de dicha unidad se incluye un comando \cmd putbib-. La lista se incluirá precisamente donde se encuentre tal comando. \item Los comandos \cmd bibliography*- y \cmd bibliographystyle*- indican la base de datos y el estilo para estas listas de referencias. Pero a falta de estos comandos, se usarán los comandos normales para trabajar con \btx-: \cmd bibliography- y \cmd bibliographystyle-. \item \cmd bibliographyunit- es compatible con los entornos \ltr bibunit-. Y si se encuentran los comandos \cmd bibliography*- y \cmd bibliographystyle*-, la base de datos y el estilo allí indicados se usarán también para los entornos bibunits. \end{enumerate} Por último, este paquete incluye también el comando \cmd cite*- cuyo efecto es incluir una referencia tanto en la lista de referencias global como en la local en donde se encuentre. \paragraph{El paquete multibib:} \label{sec:el-paquete-multibib-1} Este paquete añade lo que el anterior no tenía. Mediante el anterior paquete podíamos generar distintas listas bibliográficas atendiendo al \emph{lugar} donde las citas tengan lugar, pero no había manera de diferenciar las obras que se incluirán en cada lista atendiendo a la materia de que cada obra trate. Multibib sí nos permite hacer eso. Para entender bien el funcionamiento de este paquete empezaré por recordar lo que ya sabemos: Los cuatro comandos de \ltx- fundamentales para la generación de una lista bibliográfica son \cmd cite-, \cmd nocite-, \cmd bibliography- y \cmd bibliographystyle-. Pues bien: este paquete define un comando llamado \cmd newcites- cuyo formato es el siguiente: \verb|\newcites{Sufijo}{Título}| \noindent y cuyo efecto es el de generar cuatro comandos adicionales cuyos nombres se componen del nombre de uno de los cuatro comandos que acabo de mencionar, seguido del sufijo recibido como argumento. Es decir: se generarán cuatro comandos cuyos nombre serán: \cmd cite[Sufijo]-, \cmd nocite[Sufijo]-, cmd bibliography[Sufijo] y \cmd bibliographystyle[Sufijo]-. La conjunción de los cuatro comandos generará una lista de referencias cuyo título será el del segundo argumento recibido por \cmd newcites-. Por ejemplo, en el presente documento se citan trabajos sobre \btx- y otros que versan sobre otras cuestiones pero que, por las razones que sean he decidido citar. Si quisiera que las referencias bibliográficas se ordenaran atendiendo a ese criterio debería escribir, preferentemente al principio del documento: {\small \begin{verbatim} \newcites{bib}{Bibliografía específica sobre BibTeX} \newcite{gen}{Otras obras citadas} \end{verbatim} } Ello generará los siguientes ocho nuevos comandos: \begin{enumerate}\small\parskip=-2pt \item \cmd citebib-. \item \cmd nocitebib-. \item \cmd bibliographybib-. \item \cmd bibliographystylebib-. \item \cmd citegen-. \item \cmd nocitegen-. \item \cmd bibliographygen-. \item \cmd bibliographystylegen-. \end{enumerate} Cada uno de estos comandos funciona de modo similar al comando \emph{normal} equivalente, pero con la salvedad de que cada grupo de comandos sólo se relaciona entre ellos, es decir: \cmd bibliographygen- insertará una lista de referencias bibliográficas, cuyo título será ``Otras obras citadas'', construida con el estilo indicado en \cmd bibliographystylegen- y compuesta de las referencias indicadas mediante los comandos \cmd citegen- y \cmd nocitegen-. Para que esto funcione téngase en cuenta que para cada lista de bibliografía se generará un fichero \tpf aux- distinto, y cada uno de esos ficheros debe ser procesado con \btx-. \subsection{Otros paquetes} \label{sec:otros-paquetes} Además de los paquetes mencionados, para trabajar con bibliografía están disponibles los siguientes paquetes\footnote{No se incluye en la siguiente lista, ni los paquetes que se limitan a instalar estilos bibliográficos adicionales, ni los relativos a la compatibilidad con babel, que ya han sido tratados.}: \begin{description} \item[authorindex:] Un paquete para generar un índice de autores citados en el documento con una lista de las páginas donde cada autor es citado. \item[bibarts:] Generación de listas bibliográficas propias del campo de las artes. \item[bibcheck:] En entornos \ltr thebibliography- escritos a mano, comprueba que todos los elementos del mismo efectivamente hayan sido citados en el documento. \item[breakcites:] Ligeras modificaciones al comando \cmd cite- para permitir saltos de línea dentro de una cita múltiple. \item[chbibref:] Introduce un comando para cambiar el título de la lista de referencias. Este comando funciona en cualquier tipo de documento. \item[cite:] Este paquete permite que cuando una cita incluye tres o más referencias consecutivas (en la lista de referencias), la cita aparezca \emph{comprimida}. Por ejemplo: [1--4,6]. Implementa también un comando cmd citen- que hace que las citas aparezcan en el texto sin corchetes. Soporte para listas de citas numéricas comprimidas y ordenadas. \item[compactbib:] En documentos con varias listas bibliográficas, permite una numeración única en todas ellas. \item[coverpage:] Genera una página de cubierta para los documentos científicos, en la que se incluyen datos de \btx-. \item[din1505:] Un estilo bibliográfico para textos alemanes, que trabaja con \ltr natbib-. \item[doipubmed:] Introduce nuevos comandos para la gestión de la bibliografía. \item[gloss:] Creación de glosarios usando \btx-. \item[jurabib:] Bases de datos de \btx- para textos legales alemanes. \item[notoccite:] Previene la numeración errónea de las citas cuando se usa el estilo \ltr unsrt-. \item[rangecite:] Permite citar, en el documento, un rango de obras de la lista bibliográfica numerada. \item[tocbibind:] Incluye los índices y la lista de referencias en el índice sistemático. \end{description} \section{Otras cuestiones de interés} \label{sec:intr-comand-ltx} \subsection{El comando newblock y la opción openbib} \label{sec:la-opcion-de} Para \btx- en una referencia bibliográfica los distintos campos se agrupan en \emph{bloques}. Y así hay un bloque para la autoría, otro para el título, otro para los datos adicionales, etc. Los estilos estandar, al formatear la lista de referencias bibliográficas, insertan el comando \cmd newblock- cada vez que acaba un bloque y empieza otro. Véase, por ejemplo, la siguiente referencia, tal y como el estilo \ltr plain- la formatearía: {\small \begin{verbatim} \bibitem{kopla} Helmut Kopka and Patrick~W. Daly. \newblock {\em Guide to {L}a{T}e{X}}. \newblock Addison-Wesley, 4 edition, 2004. \end{verbatim} } Por defecto el comando \cmd newblock- no hace nada. Pero podemos redefinirlo para que haga algo; siendo este uno de los pocos casos en los que el funcionamiento de \btx- es, en cierto modo, controlable desde el documento \tpf tex-. Existe incluso una opción para los documentos \ltr book- y \ltr article- lamada \ltr openbib- (que debe ser establecida en el comando \cmd documentclass-) que provoca una redefinición de \cmd newblock-. Cuando esta opción está activa cada bloque dentro de una referencia empezará en una línea nueva, la cual tendrá un sangrado igual al valor de \cmd bibindent-, que por defecto es de 1.5 em. % En la sección \ref{sec:las-bases-de} me he ocupado del contenido de los % ficheros \tpf bib-. Hay ciertos aspectos, sin embargo, que no traté allí, % por considerar que no eran necesarios en una parte del documento denominada % ``\emph{\btx- básico}''. Este lugar es más adecuado para ellos. % \subsection{Caracteres especiales y profundidad en el contenido de los % campos} % \label{sec:caract-espec-y} % Como ya sabemos los delimitadores de un campo pueden ser llaves o comillas. % Dentro del contenido del campo podemos asimismo usar llaves siempre y cuando % las llaves abiertas se cierren dentro del campo. % Atendiendo a las llaves, dentro de un campo se habla de \emph{profundidad}. % La profundidad de una parte concreta de un campo es igual al número de % llaves abiertas en ese momento, sin contar las llaves que puedan servir como % delimitadores del campo. Así, en el siguiente ejemplo: % \noindent\verb|title = "Curso de {\LaTeX} y de sus {P}rogramas {H}ermanos"| % \noindent hay tres partes del campo que tienen profundidad 1: \cmd LaTeX-, % ``P'' y ``H''. El resto tiene profundidad 0. % La profundidad sirve para definir qué entiende \btx- por \emph{carácter % especial}: Un carácter especial es una parte de un campo que empieza con % una llave de apertura al nivel 0, es seguida inmediatamente por el carácter % ``\textbackslash'' y termina con la llave de cierre correspondiente. En % nuestro ejemplo el texto ``\verb|{\LaTeX}|'' tendría la consideración de % \emph{carácter especial}, mientras que \verb|{P}| y \verb|{H}| no son % caracteres especiales, pues no empiezan por ``\textbackslash''; y si % hubiéramos escrito: % % \noindent\verb|title = "Curso de {{\LaTeX}} y de sus {P}rogramas {H}ermanos"| % \noindent no habría ningún carácter especial, pues ahora % ``\verb|{\LaTeX}|'' ya no está a profundidad 0 sino a profundidad 1. % Los caracteres especiales están sometidos a reglas especiales de formateo % que a su vez afectan a la ordenación de los registros, tal y como se % comprobará en la tercera parte de este documento, cuando tratemos las % funciones internas de los estilos de \btx-. \subsection{Elementos @preamble en los ficheros \tpf bib-} \label{sec:elementos-preamble} En un fichero \tpf bib- podemos introducir un elemento \ltr @Preamble- de acuerdo con el siguiente formato: \verb|@Preamble{" Cadena de texto "}| \noindent y su efecto es el de escribir, al principio del fichero \tpf bbl- generado por \btx-, el texto entrecomillado. Esto es útil para introducir determinados comandos \ltx- que provoquen algún tipo de funcionamiento especial. Como ejemplos pueden verse el mencionado en \cite{cascales00} para alterar el sistema de construcción de etiquetas en el estilo bibliográfico ``\texttt{alpha}'', o el mencionado en \cite{patashnik88} para conseguir que en la lista bibliográfica dos registros se ordenen de cierta manera, alterando las reglas generales sobre ordenación de registros. Un ejemplo más sencillo: Si queremos que en todos los documentos en los que se use nuestra base de datos el título de la lista de referencias bibliográficas sea ``Bibliografía citada'' y que automáticamente la bibliografía se incorpore al índice de contenido, podríamos escribir en el fichero \tpf bib-, el siguiente texto: {\small \begin{verbatim} @Preamble{ "\renewcommand{\refname}{Bibliografía citada} " # "\addcontentsline{toc}{section}{Bibliografía citada} " } \end{verbatim} } También es interesante el ejemplo que recoge \cite{markey05}: {\small \begin{verbatim} @preamble{ "\makeatletter" } @preamble{ "\@ifundefined{url}{\def\url#1{\texttt{#1}}}{}" } @preamble{ "\makeatother" } \end{verbatim} } Este ejemplo serviría para asegurarnos de que en el contenido de los campos de nuestra base de datos podemos usar el comando \cmd url-, aunque la base se vaya a usar en un fichero \tpf tex- en el que no se haya cargado el paquete \ltr url- ni se haya definido de ninguna manera dicho comando. En este último ejemplo se han usado tres elementos preamble, en lugar de un solo elemento que conste de varias cadenas concatenadas (como se hizo en el ejemplo anterior). En teoría hacer una cosa u otra da igual, pero hay que tener en cuenta que el autor de \btx- afirma en \cite{patashnik88} que existe un límite respecto del número de comandos ``\texttt{Preamble}'' que se pueden usar, pero no aclara cuál es ese límite. En todo caso, puesto que en preamble puede usarse la concatenación de cadenas (como se muestra en el primero de los ejemplos), en realidad con usar una sola función ``\texttt{Preamble}'' será siempre suficiente\footnote{De hecho los estilos de \btx- ejecutan la función interna \ltr preamble\$- que hace que todos los elementos \ltr @preamble- del fichero \tpf bib- se concatenen. Por ello, cuando usemos estos elementos, conviene tener en cuenta la posible concatenación, para dejar los espacios en blanco suficientes al principio y al final de la cadena en que consiste el elemento. }. \subsection{Comentarios y registros desconocidos en los ficheros \tpf bib-} \label{sec:elementos-comment} De lo hasta ahora visto se desprende que el formato interno de un fichero \tpf bib- es siempre: \verb|@NombreElemento{ContenidoElemento}| Donde NombreElemento puede ser ``String'', ``Preamble'' o el nombre de los distintos tipos de registro previstos para \btx-, y ContenidoElemento depende del elemento de que se trate. Esto es cierto, pero a ello hay que añadir que el fichero será válido aunque además de ese contenido tenga cualquier otro. Y ese otro contenido no debe, además ajustarse a ningún formato específico: simplemente será ignorado por \btx-, pero no impedirá que el contenido válido sea localizado y usado. Podemos pues incluir un texto explicativo de cada tipo de registros, o, si lo preferimos, el capítulo primero del Quijote. ¡¡¡Podemos escribir lo que queramos!!! Sin sujetarnos a ninguna regla. Así, por ejemplo, el siguiente fichero: {\small \begin{verbatim} # Fichero de prueba para BibTeX # Las líneas de este texto van precedidos del signo "#" # aunque no les hace falta. Ese signo, además, es # interpretado por BibTeX como concatenador de cadenas # de texto. Pero no genera ningún error. @Book{knuth, author = {Donald E. Knuth}, title = {The {TeX} {Book}}, year = 1986, publisher = {Addison-Wesley}, } Este libro contiene, en palabras de su autor, "todo lo que hay que saber sobre TeX". Desgraciadamente no está disponible en España, aunque podemos comprarlo a través de Amazon.com. @libro{jqtaz, autor = {Joaquín Ataz López}, titulo = {Libro de prueba}, fecha = 2006, } \end{verbatim} } Se verá que se ha incluido un registro válido, precedido de un texto y seguido por otro texto. También hay un registro de tipo inexistente para \btx-. Ni el texto precedente ni el posterior al registro válido impiden que \btx- localice el registro correcto. Y tampoco el registro inexistente genera ningún error\footnote{De hecho, al menos en los estilos estándar, no existen propiamente hablando registros inexistentes, pues todo registro cuyo nombre no sea identificado como un tipo de registro válido, será formateado como si fuera un registro de tipo \ltr Misc-. Y en el ejemplo que he puesto, si en el registro de tipo \ltr @Libro- los campos en lugar de \ltr autor-, \ltr titulo- y \ltr fecha- fueran \ltr author-, \ltr title- y \ltr year-, el registro sería correctamente formateado, no como un libro, pero sí como un registro \ltr Misc-.}. Por esa razón en \btx- no es preciso definir ningún carácter para comentarios: Estos se pueden introducir libremente. No obstante, en su especificación oficial viene prevista la existencia de un elemento \ltr @Comment- que existe exclusivamente para mantener la compatibilidad entre los ficheros \btx- y los ficheros Scribe. \clearpage \part{\btx- avanzado} \label{part:btx-avanzado} \section{Los ficheros de estilo como programas} \label{sec:los-ficheros-de} Los ficheros de estilo manejados por \btx- son en realidad \emph{programas} escritos en un lenguaje innominado que informan a \btx- acerca de cómo deben formatearse los datos leídos de la base de datos. Como el lenguaje no tiene nombre oficial, cuando me tenga que referir a él lo denominaré BST que es la extensión utilizada por los ficheros de estilo\footnote{Eso no significa que el lenguaje se llame BST. Simplemente, si no uso un nombre para referirme a él, en las próximas páginas tendría que emplear demasiados circunloquios.}. \subsection{Cuestiones generales} \label{sec:cuestiones-generales} \subsubsection{Reglas generales de sintaxis} \label{sec:reglas-generales-de} Las características generales de BST son las siguientes: \begin{enumerate} \item No se distingue entre mayúsculas y minúsculas \emph{para los elementos del lenguaje}, entendiendo por tales los nombres de los comandos, variables y funciones, así como las cadenas de texto usadas como patrón en determinadas funciones internas. Por el contrario, en el contenido de los campos y de las variables de texto, sí se distinguen las mayúsculas de las minúsculas. \item Los saltos de línea y los tabuladores se tratan como espacios en blanco, y dos o más espacios en blanco se tratan como si fueran sólo uno. Y a diferencia de otros lenguajes no existe ningún carácter reservado para indicar el fin de una instrucción: ni el punto y coma (como en C o Pascal) ni el salto de línea (como en Basic y similares). Los saltos de línea se usan exclusivamente para hacer más comprensible para los seres humanos lo que una función hace. No obstante lo anterior, de cara a la información que \btx- emite cuando se produce algún error (y que se almacena en el fichero \tpf blg- generado tras la ejecución de \btx-), se recomienda: \begin{enumerate} \item Insertar una o más líneas en blanco entre la definición de dos funciones. \item No introducir líneas en blanco dentro de una función. \end{enumerate} Lo anterior, por supuesto, no se aplica al contenido de las variables de texto. En ellas todos los espacios en blanco son relevantes y se distingue entre espacios en blanco y tabuladores\footnote{Ello con independencia de que si finalmente el contenido de la variable termina formando parte de una lista de referencias insertada en un documento \tpf tex-, los espacios en blanco y tabuladores existentes en ella reciban el tratamiento que \ltx- da a tales caracteres.}. Asimismo las constantes de texto, que se introducen entrecomilladas, deben escribirse en la misma línea: entre las comillas de apertura y cierre de una cadena de texto no puede haber un salto de línea. \item Se puede hacer uso de las llaves para agrupar bloques de código. \item El carácter ``\%'' está reservado para los comentarios: Todo lo que se escriba a la derecha del mismo, hasta el final de la línea, será ignorado. \end{enumerate} \subsubsection{Estructura de los programas BST} \label{sec:estructura-de-un} Básicamente un programa BST sigue la siguiente estructura: \begin{enumerate} \item En primer lugar se encuentra la \emph{definición} de los campos con los que se va a trabajar. Ello se hace mediante el comando ENTRY. Cualquier campo existente en la base de datos que no se haya incluido en esta \emph{lista de campos} no será leído ni cargado en memoria. \item A continuación se encuentra la definición de una función para cada uno de los tipos de registro que puede haber en la base de datos. La función debe tener el mismo nombre que el tipo de registro de que se trate, y en ella se debe especificar cómo formatear los datos de ese tipo de registro. Debe asimismo definirse una función llamada \ltr default.entry- que formateará los datos de los registros cuyo nombre no coincida con el de ninguna de las funciones anteriores. En los ficheros de estilo estándar de \btx- esta función se limita a considerar que todo registro que no sea de algún tipo predefinido es un registro de tipo \ltr Misc-. Por otra parte, como las reglas del lenguaje obligan a que no se puedan invocar variables o funciones que no hayan sido previamente definidas, la escritura de las funciones anteriores implicará normalmente la escritura de funciones adicionales y la declaración de variables. \item También es posible añadir una lista de MACROS o abreviaturas predefinidas para la base de datos. \item A continuación se encuentra el comando READ, que es el verdadero centro neurálgico de un programa BST. Este comando lee la base de datos y construye la lista de datos a partir de los datos leídos, cargando el contenido de los campos, para cada registro de la lista. \item Una vez leídos los datos, y generada la lista que los contiene, viene la fase de comprobación, formateo (ejecutando las funciones de formateo que se han definido para cada tipo de registro) y ordenación de la lista. \item Por último la lista de datos se vuelca en el fichero \tpf bbl- correspondiente. \end{enumerate} En la secuencia que acabo de indicar hay partes que se \emph{suelen} hacer y otras que se \emph{deben} hacer. Así, por ejemplo, he dicho que suele empezarse por el comando ENTRY que define la lista de campos. Esto no es obligatorio, lo único verdaderamente obligatorio es que el comando ENTRY sea anterior al comando READ y que los campos estén definidos antes de ser utilizados, es decir: antes de que alguna de las funciones de formateo de los distintos tipos de registro los lleguen a mencionar. \subsection{Objetos del lenguaje BST} \label{sec:sintaxis-de-los} Aunque el lenguaje BST dispone de los elementos presentes en la mayoría de los lenguajes de programación (variables, funciones, etc). En un primer nivel de aproximación, el lenguaje sólo consta de comandos. Y los comandos existentes son solamente 10, los cuales se usan para generar o definir el resto de los elementos del lenguaje. \subsubsection{Los comandos de BST} \label{sec:los-comandos-de} Podemos agrupar a los comandos atendiendo a diferentes criterios. Por orden alfabético sus nombres son ENTRY, EXECUTE, FUNCTION, INTEGERS, ITERATE, MACRO, READ, REVERSE, SORT y STRINGS. El formato para los comandos es el siguiente: \verb|NombreComando [{Argumento1}] [{Argumento2}] [{Argumento3}] | \noindent Donde \emph{NombreComando} es alguno de los diez comandos que he especificado (en mayúsculas o minúsculas, es indiferente) y tras el nombre, entre llaves, se debe introducir los argumentos que el comando espera. No todos los comandos reciben argumentos, ni todos reciben el mismo número de argumentos. Hay dos que no reciben ningún argumento (READ y SORT), cinco que reciben un sólo argumento (EXECUTE, INTEGERS, ITERATE, REVERSE y STRINGS), dos que reciben dos argumentos (FUNCTION y MACRO) y uno que recibe tres argumentos (ENTRY). Se aplican además las siguientes restricciones sobre el número y orden de los comandos: \begin{enumerate} \item Sólo puede haber un comando ENTRY y un comando READ. Los demás comandos pueden aparecer tantas veces como se desee. \item El comando ENTRY y los comandos MACRO deben encontrarse antes del comando READ. También debe encontrarse antes de READ los comandos FUNCTION que declaren la acción básica ante cada uno de los posibles tipos de registro (véase el epígrafe anterior). \item Los comandos EXECUTE, ITERATE, REVERSE y SORT deben necesariamente encontrarse después del comando READ. \end{enumerate} En cuanto al significado y uso de los comandos, más adelante se explicarán la mayoría de ellos. Ahora me centraŕe en dos: READ y SORT: \begin{description} \item[READ:] Es el comando central de un programa BST. Su efecto es el de leer la base de datos y generar la lista de datos, que contendrá, para cada uno de sus elementos, un valor para cada uno de los campos y de las variables de lista definidas mediante el comando ENTRY. Tanto el nombre de la base de datos a leer como los datos concretos que hay que leer se extraen del fichero \tpf aux- generado por \ltx- durante su compilación. \item[SORT:] Tras la ejecución del comando READ, la lista de datos se encuentra en el orden en el que en el fichero \tpf aux- se encontraban las distintas citas. El comando SORT reordena la lista atendiendo al valor de la variable global \ltr sort.key\$-. \end{description} \subsubsection{La lista de datos} \label{sec:la-lista-de-2} La tarea fundamental de \btx- es leer una serie de datos, formatearlos y volcarlos, una vez formateados, en un determinado fichero. Por lo tanto la lista de datos es una noción esencial. Esta lista se genera cuando se ejecuta el comando READ. De la apertura del fichero que contiene la base de datos, localización y lectura de los registros precisos se ocupa automáticamente \btx-, es decir: no hay que especificar ninguna rutina; el comando READ sabe lo que tiene que hacer. Para cada registro de la base de datos que se haya leído habrá un \emph{elemento} en la lista. Este elemento estará compuesto a su vez de los campos del registro y de las variables de lista que se hayan declarado (véase la sección \ref{sec:variables}). Estas variables de lista, por otra parte, inicialmente carecerán de valor: tendrá que ser alguna función la que se lo de. En relación con los campos del registro leído pueden darse dos circunstancias: \begin{enumerate} \item Que en un registro concreto exista algún campo que no esté incluido en la lista de campos que el programa ha debido declarar antes de la lectura. En tal caso ese \emph{campo} no previsto será ignorado y no se cargará en la lista de datos. \item Que en el registro leído no existiera alguno de los campos declarados en el programa. Esto es bastante habitual porque el programa declara todos los campos posibles, pero no en todos los registros habrá un valor para cada campo. Cuando para un campo no hay datos en un registro, dicho campo adopta el valor de ``omitido''. Un campo ``omitido'' no es lo mismo que un campo vacío, ya que este último se produce cuando un campo \emph{estaba} en el registro, pero su valor es una cadena vacía\footnote{La diferencia es exclusivamente a efectos de programación. Desde el punto de vista práctico es claro que una vez formateada la referencia, no hay diferencias entre un campo omitido y un campo vacío: el dato que dicho campo debía contener, no está en ninguno de ambos casos.}. \end{enumerate} En la lista de datos no se incorporan en realidad los datos de la base de datos tal y como hayan sido leídos, sino que \btx-, al leer el registro, aplica automáticamente las abreviaturas definidas en la base de datos mediante elementos de tipo \ltr @String-, así como las macros definidas en el propio programa mediante el comando MACRO. Este comando tiene el siguiente formato: \verb|MACRO {NombreMacro} {"Texto de la Macro"}| \noindent y su efecto es el de crear una abreviatura que no está localizada en el fichero \tpf bib-, sino en el propio estilo y, por lo tanto, se podrá usar en cualquier base de datos que utilice dicho estilo. Las abreviaturas creadas con este comando son totalmente equivalentes a las generadas dentro del fichero \tpf bib- con \ltr @String-, hasta el punto de que si una abreviatura definida con MACRO tuviera el mismo nombre que una abreviatura definida con \ltr @String-, la segunda sobreescribiría a la primera. Todos los comandos MACRO de un programa BST deben encontrarse antes del comando READ. Si nuestro estilo maneja bases de datos en los que los meses se hayan escrito con las abreviaturas estandar en inglés, pero queremos que en la lista de referencias los nombres figuren en español, deberíamos\footnote{En \cite{cascales00} se dice que los estilos \emph{deben} incorporar macros para los nombres de los meses. Pero no es cierto que \emph{deban hacerlo}, aunque posiblemente sea una buena idea hacerlo ya que si nuestro estilo se va a manejar con múltiples bases de datos, no debemos olvidar que en las recomendaciones generales sobre \btx- se suele incluir la de usar para los meses del año las abreviaturas estándar en inglés. } escribir en nuestro estilo: {\small \begin{verbatim} MACRO {jan} {"Enero"} MACRO {feb} {"Febrero"} MACRO {mar} {"Marzo"} MACRO {apr} {"Abril} MACRO {may} {"Mayo} ... \end{verbatim} } \subsubsection{Variables y constantes} \label{sec:almac-de-los} \paragraph{Tipos de datos:} \label{sec:tipos-de-datos-1} Los datos sobre los que se trabaja, bien se introduzcan directamente en alguna sentencia del programa, bien se encuentran almacenados en alguna variable, pertenecerán necesariamente a uno de los siguientes dos tipos: \begin{enumerate} \item Datos numéricos: En este rango entran exclusivamente los números enteros. BST no puede trabajar directamente con números que tengan decimales. \item Datos alfanuméricos: Consisten en una secuencia de cero o más caracteres. Una secuencia de cero caracteres es una cadena vacía. Dentro de una cadena de texto está admitido absolutamente cualquier carácter imprimible y los espacios en blanco son relevantes. \end{enumerate} En la tipología de los lenguajes de programación se distingue entre lenguajes tipados y no tipados, dependiendo de si los tipos de los datos deben ser establecidos de antemano o si, por el contrario, el propio lenguaje dinámicamente es capaz de, analizando un dato, decidir a qué tipo pertenece. Pues bien BST es un lenguaje fuertemente tipado (aunque con pocos tipos de datos), lo que significa que en el momento de definir una variable ya hay que indicar si contendrá datos numéricos o alfanuméricos, al introducir valores constantes hay que indicar el tipo de los mismos y, además, no hay apenas funciones de conversión de tipos. \paragraph{Variables:} \label{sec:variables} En BST se admiten dos tipos distintos de variables. Las variables globales y las variables de lista, cada una de las cuales, por su parte, puede ser numérica o alfanumérica, según el tipo de datos que pueda almacenar. Las variables globales son, las que podríamos llamar \emph{normales}. Tienen un solo valor que está accesible para cualquier función siempre y cuando la función se haya definido después de la declaración de la variable. Junto con las variables globales se encuentran las variables de lista. En ellas la misma variable asume un valor diferente para cada uno de los elementos de la lista. Un caso concreto de variables de lista son los campos, que se consideran variables de lista especiales porque deben ser declarados expresamente como campos, para que, en el momento de la lectura de la base de datos, \btx- asigne a cada campo su valor correspondiente. Pero junto con los campos podemos declarar las variables de lista que queramos. Al declarar una variable de lista es como si estuviéramos añadiendo un campo que sabemos que no está en la base de datos, pero que pensamos llenar mediante alguna función; normalmente la que formatee los datos del registro. Por ejemplo: los cuatro estilos estándar de \btx- definen una variable de lista alfanumérica llamada \ltr label- que se usa para almacenar la etiqueta identificativa de dicho registro, que será luego devuelta por el comando de \ltx- \cmd cite-. Al igual que el resto de los datos manejados por BST las variables de lista deben ser numéricas o alfanuméricas. Los campos se consideran siempre alfanuméricos, y el tipo del resto de las variables de lista se define en el mismo momento en el que se declara la propia variable. \paragraph{Declaración de variables:} \label{sec:decl-de-vari} Para declarar variables se usan tres comandos: \begin{description} \item[STRINGS:] Permite declarar variables globales alfanuméricas. Tras el comando hay que escribir, entre llaves, los nombres de las variables que se quieren declarar, separados por espacios en blanco o por saltos de línea. Por ejemplo, para declarar dos variables alfanuméricas llamadas ``nombre'' y ``lista'' habría que escribir la siguiente línea: \verb|STRINGS { nombre lista }| \item[INTEGERS:] Permite declarar variables globales numéricas. Su formato es similar a STRINGS, y así, por ejemplo, la próxima línea declararía una variable numérica llamada ``cont'': \verb|INTEGERS { cont }| \item[ENTRY:] Este comando es el que se usa para declarar las variables de lista, incluidos los campos. Su principal peculiaridad estriba en que en un fichero \tpf bst- sólo puede haber un comando ENTRY (que suele ser el primer comando del fichero). Su formato es: {\small \begin{verbatim} ENTRY {Lista de campos} {Variables de lista numéricas} {Variables de lista alfanuméricas} \end{verbatim} } En ``\emph{lista de campos}'' hay que incluir todos los campos de la base de datos con los que se piensa trabajar, con independencia de que se trate de campos presentes en todos los registros o sólo en alguno de ellos. Los nombres de los campos se deben separar entre sí por espacios en blanco (o saltos de línea). En el caso de que no queramos usar variables de lista numéricas o alfanuméricas, hay que escribir las llaves sin nada entre ellas, pero no puede dejar de indicarse expresamente todos los argumentos esperados por el comando. Así en el siguiente ejemplo: {\small \begin{verbatim} ENTRY { address author booktitle chapter edition editor howpublished institution journal key month note number organization pages publisher school series title type volume year } { } { label } \end{verbatim} } \noindent estariamos definiendo los campos de una base de datos estándar de \btx-, así como la variable de lista alfanumérica \ltr label- y ninguna variable de lista numérica. \end{description} Los nombres de las variables deben empezar por una letra, y pueden contener cualquier carácter salvo espacios en blanco (o tabuladores) y los diez caracteres reservados de \ltx-. Es muy normal que los nombres de las variables incluyan puntos, de tal modo que se consigan nombres verdaderamente descriptivos como en \ltr esto.es.una.variable.de.ejemplo-. \paragraph{Variables predefinidas:} \label{sec:vari-pred} Hay tres variables globales y un campo predefinidos (que no hay que declarar explícitamente): \begin{enumerate} \item \ltr sort.key\$-: Es una variable global alfanumérica usada para indicar al comando SORT el criterio de ordenación de los elementos que componen la lista de datos. \item \ltr entry.max\$-: Es una variable global numérica que indica la longitud máxima de las variables de lista alfanuméricas. Hay que usarla si queremos limitar dicha longitud; el efecto será que la variable se truncará. \item \ltr global.max\$-: Es una variable global numérica que indica la longitud máxima de las variables globales alfanuméricas. Si se le da algún valor, las variables globales alfanuméricas cuya longitud supere dicho valor, quedarán truncadas. \item \ltr crossref-: Es un campo implícito en la base de datos, es decir: no hay que declararlo expresamente. Se usa para las referencias cruzadas. \end{enumerate} \paragraph{Constantes:} \label{sec:constantes-y-macros} En cualquier lugar donde se espere un dato podemos usar el nombre de una variable, en cuyo caso el dato a manejar sería el contenido de la misma, o un valor constante. Estos se representan de la siguiente manera: \begin{enumerate} \item Los valores constantes alfanuméricos se deben introducir entre comillas. \item Los valores constantes numéricos se deben introducir precedidos del signo ``\#'' y sin ningún espacio en blanco entre dicho signo y el número de que se trate. Y así \ltr \#1- es una constante válida, pero \ltr \# 1- no lo es. \end{enumerate} \subsubsection{Funciones} \label{sec:funciones} Hay dos tipos de funciones: las internas y las definidas por el usuario. Las funciones internas se verán más adelante, las definidas por el usuario se generan mediante el comando FUNCTION cuyo formato es {\small \begin{verbatim} FUNCTION {NombreFunción} { Contenido de la función } \end{verbatim} } Donde para el nombre de la función se aplican las mismas reglas que para el nombre de las variables, es decir: debe empezar por una letra, y puede contener cualquier carácter imprimible (lo que excluye espacios en blanco, tabuladores y saltos de línea) salvo cualquiera de los caracteres reservados de \ltx-. En BST las funciones deben ser definidas antes de ser invocadas, y no se admite la recursividad (funciones que se invocan a sí mismas). Para invocar una función se pueden usar los siguientes comandos: \begin{enumerate} \item Mediante el comando \ltr EXECUTE \{NombreFuncion\}-. La función se ejecutará una sola vez. \item Mediante los comandos \ltr ITERATE- o \ltr REVERSE- \verb|{NombreFuncion}|. \end{enumerate} Los dos comandos mencionados en último lugar ejecutan la función recibida como argumento en cada uno de los elementos de la lista de datos. La diferencia entre ambos estriba en el orden en el que estos elementos son tratados: ITERATE ejecuta la función empezando por el primer elemento de la lista y terminando por el último, mientras que REVERSE lo hace en el orden inverso. Cuando desde una función se quiere invocar a otra, no es preciso (ni posible) usar ninguno de estos comandos, sino que basta con escribir su nombre, y así en el siguiente ejemplo: {\small \begin{verbatim} FUNCTION {ejemplo.llamada.funciones} { llamar.funcion.1 llamar.funcion.2 llamar.funcion.3 } \end{verbatim} } \noindent La función que he denominado \ltr ejemplo.llamada.funciones- se limita a llamar (y ejecutar) tres funciones, llamadas, respectivamente, \ltr llamar.funcion.1-, \ltr llamar.funcion.2- y \ltr llamar.funcion.3-\footnote{Obsérvese como el salto de línea que separa a la segunda función de la tercera, podría ser un espacio en blanco. En BST las líneas no se corresponden con las instrucciones, y se usan sólo para aumentar la legibilidad del programa. }. \subsubsection{La pila del programa } \label{sec:la-pila-del} Al explicar las variables no he dicho cómo se les asigna valor. Y al explicar las funciones se ha visto que ni reciben argumentos ni devuelven valores. Ello es porque tanto la asignación de valores a las variables, como el intercambio de datos entre funciones se realiza a través de la pila del programa\footnote{En teoría podríamos usar las variables globales para comunicar entre sí a las funciones. Pero esto no es casi nunca una buena idea, como, por otra parte, dicen casi todos los manuales de técnicas de programación. El uso indiscriminado de variables globales suele ser fuente de errores muy difíciles de localizar. Además, como para el uso de las funciones internas no hay más remedio que usar la pila, no tiene demasiado sentido rehuir dicho uso en nuestras propias funciones.}, que es una zona de memoria en la que se puede ir \emph{apilando} datos (de ahí el nombre de \emph{pila}). Podemos imaginar que la pila es un cajón en el que se van almacenando carpetas (los datos). Las carpetas se van dejando una sobre otra en el cajón, de tal manera que en cada momento la carpeta superior es siempre la última que se introdujo. Cada carpeta que añadimos aumenta el tamaño del montón, y cada carpeta que extraemos lo reduce. Las operaciones básicas en una pila son siempre introducir datos y extraer datos y en ellas el orden es inalterable. No se puede acceder a un dato que esté en la pila sin sacarlo de ella, y no es posible sacar un dato sin antes haber sacado todos los que estaban sobre él, por haber sido introducidos después; es decir: para sacar de nuestro cajón una determinada carpeta es preciso sacar antes todas las carpetas que estaban sobre ella\footnote{Lo que en terminología informática se indica diciendo que las pilas son estructuras de datos de tipo LIFO, siendo esta última palabra las siglas en inglés de la frase: ``\emph{Last In, First Out}'', que en español significa que ``el último en entrar es el primero en salir''. O sea: el orden de extracción de datos es exactamente el inverso al orden en el que los datos se introdujeron.}. En BST las funciones usan la pila de la siguiente manera: \begin{itemize} \item Antes de llamar a la función se dejan en la pila los datos que esta necesitará (lo que en otros lenguajes de programación equivaldría a sus parámetros). \item La función se ocupa de extraer esos datos de la pila, de tal manera que tras la ejecución de ésta podemos asumir que en la pila ya no estarán los datos que se introdujeron en ella. \item Si la función tiene que devolver algún resultado, lo hará introduciéndolo en la pila. \end{itemize} Dependiendo de lo que la función haga, en la pila podemos querer introducir: \begin{enumerate} \item El valor almacenado en una variable. Para ello basta con escribir el nombre de la variable. El nombre de una variable escrito dentro de una función BST tiene como efecto el enviar a la pila el valor de la misma. \item Un valor constante, por ejemplo, el número ``5'', o el texto ``tomo''. Para enviar valores constantes se aplican las reglas que se explicaron en la página \pageref{sec:constantes-y-macros} sobre constantes, es decir: los valores numéricos se escriben precedidos del signo ``\#'' y los alfanuméricos se entrecomillan. \item El nombre de una variable, no su valor. Esto se hace sobre todo con las funciones que asignarán algún valor a la variable. Para introducir en la pila el nombre de la variable y no su valor, hay que preceder el nombre de un apóstrofe, sin dejar ningún espacio en blanco entre el apóstrofe y el nombre. Y así mientras, por ejemplo, \ltr cont- envía a la pila el valor de la variable así llamada, \ltr 'cont- lo que envía a la pila es el nombre de la variable, no su valor. \item El nombre de una función. Esto se hace con algunas funciones que pueden ejecutar otras funciones, cuyo nombre deben conocer. Para introducir en la pila el nombre de una función se hace igual que para introducir el nombre de una variable: se escribe un apóstrofe precediendo al nombre. Eso hace que BST en lugar de ejecutar la función, envíe a la pila su nombre. \end{enumerate} De lo que se acaba de decir podemos además inferir que a diferencia de otros lenguajes de programación, en BST no hay en sentido estricto sentencias, sino instrucciones que se ejecutan inmediatamente; y si normalmente las instrucciones se escriben en líneas, ello es para dotar de mayor claridad al programa. podríamos escribir enteramente una función sin que en ella hubiera ningún salto de línea, y podríamos también usar una línea para cada palabra. Aunque lo mejor para ilustrar lo que se acaba de decir es un ejemplo. Imaginemos que tenemos una variable numérica llamada \ltr contador- y que queremos incrementarla en dos elementos. En los lenguajes de programación \emph{normales} ello se podría escribir de muchas maneras como: {\small \begin{verbatim} contador += 2; contador = contador + 2; contador := contador + 2; \end{verbatim} } \noindent En BST habría que escribir: \verb|contador #2 + 'contador :=| \noindent Analicemos esta línea para entender bien cómo funciona la pila: \begin{enumerate} \item La primera palabra ``contador'' es el nombre de la variable con la que queremos trabajar, y el efecto de escribirla es el de que su valor se almacenará inmediatamente en la pila (sin esperar a que acabe la linea). \item A continuación hemos escrito ``\#2'', eso provoca que se envíe a la pila el valor numérico ``2''. El carácter ``\#'' que precede al ``2'' es necesario, de acuerdo con las reglas sobre la introducción de constantes que antes expliqué. \item A continuación hemos escrito el carácter ``+'', el cual es el nombre de una función interna de BST cuyo efecto es extraer de la pila los dos últimos elementos (que deben ser numéricos), sumarlos, e introducir en la pila el resultado de la suma. Tras haberse ejecutado esta función, en la pila ya no estará ni el valor de ``contador'' ni el número ``2'', ya que ambos han sido \emph{extraidos} de la pila. En la pila ahora estará, tan solo, el resultado de la función ``+'': la suma de ambos valores. \item Después hemos escrito \emph{'contador}, es decir el nombre de la variable con la que estamos trabajando, precedido de un apóstrofe. El apóstrofe indica que no queremos almacenar en la pila el valor de la variable, sino exclusivamente su nombre. \item Por último ``:='' es otra función interna de BST cuyo efecto es extraer de la pila los dos últimos valores introducidos, asignar al primer elemento extraído (último que se introdujo) el valor del segundo elemento extraído (penúltimo que se introdujo), para ello se asume que el último elemento introducido debió ser el nombre de una variable (su dirección en memoria) y el penúltimo un valor adecuado para dicha variable, es decir: del mismo tipo (numérico o alfanumérico) que ella. Esta función no introduce nada en la pila. \end{enumerate} ¿Complicado? No demasiado, sólo es cuestión de acostumbrarse a que en BST las cosas que escribimos tienen un efecto inmediato: Si son variables o constantes se introducen en la pila, y si son funciones, actúan sobre los datos en la pila y eventualmente introducen nuevos datos en ella, que podemos leer para comprobar el resultado de la función. No obstante, como estar continuamente refiriéndonos a la pila es muy tedioso, en adelante me referiré a las funciones como si la pila no existiera, en el bien entendido de que cuando digo que una función recibe como parámetro un dato, dicho dato lo recibirá a través de la pila. Asimismo cuando diga que una función devuelve cierto valor, quiero decir que dicho valor será introducido en la pila y para comprobarlo habrá que extraerlo de ella. Y en fin: cuando una función deba recibir varios datos, me referiré a ellos siempre en el orden en el que se introdujeron, y no en el orden en el que la función los debe extraer (que es el inverso). \subsection{Operadores y estructuras de control} \label{sec:pseud-del-leng} BST carece de algunos elementos que otros lenguajes de programación tienen tales como operadores o estructuras de control. No obstante existen funciones internas de BST que cumplen dicho papel. A continuación me ocuparé de ellas: \subsubsection{Operadores} \label{sec:operadores} \paragraph{Operadores de comparación:} \label{sec:oper-de-comp} Estos operadores son tres: `$<$', `$>$' y `$=$'. Todos ellos reciben dos datos que deben ser comparados. En `$=$' los datos pueden ser numéricos o alfanuméricos, en `$<$' y en `$>$' deben ser necesariamente numéricos. \begin{itemize} \item [`$<$'] Devuelve un ``1'' si el primer dato es menor que el segundo. En caso contrario devuelve un ``0''. \item [`$>$'] Devuelve un ``1'' en la pila si el primer dato es mayor que el segundo, en el caso contrario devuelve un ``0''. \item [`$<$'] Devuelve un ``1'' en la pila si ambos datos son iguales, en el caso contrario devuelve un ``0''. \end{itemize} \paragraph{Operadores matemáticos y de concatenación:} \label{sec:oper-matem-y} Los operadores matemáticos son `$+$' y `$-$', ambos actúa sobre dos datos numéricos. El operador de concatenación es `*' y actúa sobre dos datos alfanuméricos: \begin{itemize} \item [`$+$'] Recibe dos números y devuelve la suma de ambos. \item [`$-$'] Recibe dos números y devuelve el resultado de restar el segundo del primero. \item [`*'] Recibe dos cadenas de texto y devuelve una cadena igual a la concatenación de ambas. La concatenación se hace en el orden en el que las cadenas originales fueron insertadas en la pila. \end{itemize} \paragraph{El operador de asignación:} \label{sec:el-operador-de} Para asignar cualquier valor a cualquier variable se usa el operador de asignación, cuyo formato es el siguiente: \verb-Valor 'NombreVariable :=- Donde \ltr Valor- debe ser adecuado al tipo de variable de que se trate, es decir: un número si es variable numérica o una cadena de texto si es variable alfanumérica, y \ltr 'NombreVariable- es el nombre de una variable previamente definida por cualquiera de los procedimientos que permiten definir variables (comandos ENTRY, INTEGERS o STRINGS). Este operador no introduce ningún dato en la pila. \subsubsection{Estructuras de control} \label{sec:flujo-del-programa} En BST no hay, en el sentido estricto de la palabra, estructuras de control, es decir: instrucciones que permitan desviar el flujo del programa dependiendo de si se produce o no alguna condición. Pero lo que si hay es dos funciones internas que pueden usarse para ese objetivo. \paragraph{La función if\$:} \label{sec:la-funcion-if} Recibe tres datos: Un entero y el nombre de dos funciones, o dos bloques de código. Si el entero es mayor que cero, ejecutará la primera función o bloque de código, y si es igual o menor que cero ejecutará la segunda. El primer dato recibido suele ser fruto de una comparación realizada mediante alguno de los operadores de comparación que se acaban de explicar. Por lo tanto el esquema general del uso de \ltr if\$- es el siguiente: {\small \begin{verbatim} Comparación { Bloque a ejecutar si la comparación es cierta } { Bloque a ejecutar si la comparación no es cierta } if$ \end{verbatim} } Por ejemplo, el siguiente bloque de código, extraído de los estilos estándar: {\small \begin{verbatim} output.state mid.sentence = { ", " * write$ } { output.state after.block = { add.period$ write$ newline$ "\newblock " write$ } { output.state before.all = 'write$ { add.period$ " " * write$ } if$ } if$ mid.sentence 'output.state := } if$ \end{verbatim} } En la primera línea se compara el valor de las variables \ltr output.state- y \ltr mid.state-. Si ambas son iguales se ejecutará el bloque de código contenido en la segunda línea. Pero si son distintas se ejecutará el bloque contenido entre la tercera y la penúltima línea, el cual, a su vez, contiene nuevas funciones \ltr if\$- anidadas. \paragraph{La función while\$:} \label{sec:la-funcion-while} Esta función recibe el nombre de dos funciones (o bloques de código) que va ejecutando alternativamente hasta que la segunda función devuelva un valor igual o menor que cero. En ella se usan las llaves para agrupar bloques de código de modo similar a como se hace en \ltr if\$-. While\$ se usa fundamentalmente de dos maneras: \begin{enumerate} \item Para repetir cierto número de veces un bloque de código, de modo similar a lo que en otros lenguajes de programación hace la estructura de control ``for''. \item Para repetir un bloque de código mientras se cumpla cierta condición. \end{enumerate} \subsection{Las funciones internas del lenguaje} \label{sec:func-intern-del} Para la explicación del resto de las funciones internas, hará como he hecho para los operadores y estructuras de control: obviaré el uso de la pila salvo cuando sea imprescindible para la comprensión. Pero aunque no se diga expresamente hay que tener en cuenta que la pila se usa para enviar parámetros a las funciones y, en su caso, para que estas envíen el resultado de sus operaciones. \begin{description} \item [add.period\$:] Recibe una cadena de texto, si su último carácter, sin contar las llaves que la cadena pueda tener, es distinto de un punto o de un signo de cierre de interrogación o exclamación, le añade un punto al final. Devuelve la cadena modificada. \item[call.type\$:] Ejecuta la función cuyo nombre coincide con el tipo de registro correspondiente a un elemento de la lista de datos. Y así, por ejemplo, para un elemento de dicha lista que sea de tipo ``book'' se ejecutará la función ``book'' que debe haberse definido antes del comando READ. Si no existiera ninguna función prevista para ese tipo de registros, se ejecutaría la función denominada ``default.type'', que también debe haber sido definida antes del comando READ. Esta función normalmente se usará como argumento de un comando ITERATE o REVERSE. \item[change.case\$:] Recibe una cadena de texto y una cadena de formato. Y modifica la primera atendiendo al contenido de la segunda. Devuelve la cadena modificada. La cadena de formato puede ser: \begin{itemize} \item `T' ó `t': Se pone en minúsculas la segunda cadena entera salvo su primera letra, y el primer carácter no blanco posterior a un punto. \item `1': Se pone en minúsculas toda la segunda cadena. \item `U' ó `u': Se pone en mayúsculas toda la segunda cadena. \item Cualquier otro contenido: la segunda cadena se deja intacta. \end{itemize} Los caracteres de la segunda cadena encerrados entre llaves, no se verán afectados por la transformación. Asimismo si cualquiera de los datos extraidos resultara ser numérico, se devuelve una cadena vacía. \item[chr.to.int\$:] Recibe un carácter individual y devuelve el número correspondiente a su código ASCII. \item[cite\$:] Para un elemento en la lista de datos, devuelve la clave interna que fue argumento en el comando \cmd cite- que provocó la inclusión de dicho elemento en la lista de datos. Sólo tiene sentido usarlo en comandos ITERATE o REVERSE. \item[duplicate\$:] Recibe una cadena y devuelve dos copias de la misma. \item[empty\$:] Recibe un dato y devuelve un ``1'' si ese dato consiste en un campo omitido o una cadena vacía, o un ``0'' en caso contrario. Esta función suele usarse en todas las funciones de formateo de campos, que empiezan por comprobar que el valor del campo exista. Por ejemplo: {\small \begin{verbatim} FUNCTION {format.title} { title empty$ {""} { title } if$ } \end{verbatim} } Esta función empieza comprobando si el campo title está vacío u omitido, en cuyo caso envía a la pila una cadena vacía. En caso contrario envía a la pila el contenido del campo. \item[format.name\$:] Recibe una lista de nombres de personas, un número representativo de qué nombre hay que extraer de dicha lista, y una cadena representativa de cómo hay que formatear dicho nombre, y devuelve el nombre formateado. Al respecto debe tenerse en cuenta que la cadena de formateo no es usada para descomponer el nombre en sus diferentes partes, sino que esta descomposición es realizada automáticamente por \btx- de acuerdo con las reglas que se explicaron en la sección \ref{sec:dist-entre-nombre}, pág. \pageref{sec:dist-entre-nombre}. Una vez descompuesto el nombre, se aplica la cadena de formateo, que a su vez consta de varias subcadenas encerradas entre llaves. Cada una de las subcadenas representa una de las partes en las que \btx- descompone los nombres de personas. Para cada una de las subcadenas que componen la cadena de formateo se siguen las siguientes reglas: \begin{enumerate} \item Para indicar a cuál de las partes del nombre se refiere esa subcadena se usa, duplicada, la inicial de la denominación que en inglés tiene dicha parte del nombre, es decir: ``\{ff\}'' representa el nombre de pila (de \emph{First}); ``\{vv\}'' representa la partícula (de \emph{von}); ``\{ll\}'' representa los apellidos (de \emph{Last}), y ``\{jj\}'' representa la partícula ``Jr.'' presente en numerosos nombres anglosajones. \item Si la inicial correspondiente a una de las partes del nombre no se duplica, significa que queremos que no se escriba esa parte completa, sino exclusivamente sus iniciales. \item Todo texto que dentro de las llaves acompañe a la parte correspondiente del nombre, se imprimirá siempre y cuando en el nombre en cuestión dicha parte esté presente. Así, por ejemplo ``\verb|{, ff}|'' imprimirá el nombre de pila separándolo del anterior elemento mediante una coma y un espacio en blanco. Pero en los nombres en los que no haya nombre de pila, no se imprimirá ni el nombre, ni la coma, ni el espacio en blanco. \item Una ligadura colocada tras las iniciales representativas de una parte del nombre se interpreta como una sugerencia a \btx- para que si dicha parte del nombre consta de más de una palabra, no coloque las distintas palabras en líneas distintas. Pero es sólo una sugerencia. Si queremos forzar a \btx- para que haga eso, hay que escribir dos ligaduras seguidas. \item Cualquier texto que en la cadena de formateo aparezca fuera de las subcadenas correspondientes a las distintas partes del nombre, se imprimirá literalmente en la cadena formateada. \end{enumerate} Por ejemplo: Para que los nombres se impriman en el formato \verb|Apellidos, NombrePropio Partícula| necesitaríamos la siguiente cadena de formateo: \verb|"{ll}{, ff}{vv}"| y si quisiéramos que el nombre propio se abreviara a sólo las iniciales, deberíamos usar: \verb|"{ll}{, f}{vv}"| Si queremos que en la cadena se incluya un texto, además del nombre, basta con incluirlo fuera de las llaves: por ejemplo la siguiente cadena: \verb|"Apellidos: {ll}, Nombre: {ff}"| Aplicada a, por ejemplo, mi nombre, devolvería: \verb|Apellidos: Ataz López, Nombre: Joaquín| Por defecto \btx- añade espacios en blanco o ligaduras entre las distintas partes de la cadena de formato, así como un punto al final de la misma y un punto y un espacio tras una inicial. Para indicar que esos caracteres no se añadan debemos usar unas llaves vacías tras la parte del nombre correspondiente. Y así, mientras ``\verb|{f}|'' aplicado a ``Joaquín'' devuelve ``J. ``, ``\verb|{f{}}|'' devolverá ``J''. \item[global.max\$:] Devuelve la longitud máxima permitida para cadenas. Se usa para evitar que la concatenación de cadenas de texto devuelva una cadena excesivamente larga. Esta longitud es definida internamente y en las versiones actuales de \btx- supera los 5000 caracteres. \item[int.to.char\$:] Recibe un dato numérico y devuelve el carácter ASCII cuyo código se corresponda con el número recibido. El dato numérico debe encontrarse entre 0 y 127. \item[int.to.str\$:] Recibe un número y devuelve una cadena de texto cuyo contenido sea dicho número. Por ejemplo si se recibe el número 67, se devolvería la cadena ``67''. \item[missing\$:] Recibe un dato y devuelve ``1'' si se trata de un campo omitido, y ``0'' en caso contrario. \item[newline\$:] Vuelca sobre el fichero \tpf bbl- el contenido del buffer de salida. Si el buffer de salida estaba vacío, entonces incluye en él un salto de línea. Dado que la función \ltr write\$- produce saltos de línea razonables, sólo se recomienda esta función cuando por alguna razón se desea una línea en blanco o un salto de línea explícito. \item[num.names\$:] Recibe una cadena de texto y devuelve el número de nombres que hay en dicha cadena, es decir: el número de apariciones de la palabra ``and'' + 1. \item[pop\$:] Extrae el último dato de la pila, pero no lo imprime. Sirve simplemente para eliminar dicho dato de la pila. \item[preamble\$:] Devuelve una cadena que es la concatenación de todos los elementos \ltr @preamble- presentes en el fichero \tpf bib-. \item[purify\$:] Recibe una cadena de texto, realiza en ella ciertas transformaciones y devuelve la cadena resultante. En particular, esta función preserva las letras, los números y los espacios. Reemplaza las tabulaciones, guiones y ligaduras con espacios y elimina todos los caracteres restantes (en concreto los que aparecen en el apéndice ``C'' de \cite{knuth}. Los caracteres especiales son una excepción\footnote{En el contenido de los campos se considera \emph{carácter especial} a un conjunto de caracteres encerrados entre llaves siempre y cuando las llaves no estén anidadas dentro de otras llaves (sin contar las posibles llaves de delimitación del campo en sí mismo considerado), y el primer carácter tras la apertura de las llaves sea ``\textbackslash''. }. Los comandos de \ltx-, espacios en blanco, tabulaciones, guiones y tildes que se encuentren dentro de un carácter especial, son eliminados, pero los números y letras se respetan. Esta función se usa para limpiar cadenas de texto antes de compararlas entre sí en las tareas de ordenación de la lista de referencias. Desde este punto de vista los textos ``\verb|\'e|'' y ``é'' son diferentes, porque el primero se convertirá en ``e'' y el segundo no será modificado, seguirán siendo ``é'', pero en el momento de ordenar ambos textos se atenderá al código ASCII y ``é'' se colocará detrás, no sólo de ``e'', sino también de ``z''. Esta es una de las razones por las que en los ficheros \tpf bib- conviene usar el procedimiento estándar de \ltx- para representar caracteres acentuados. \item[quote\$:] Devuelve el carácter de dobles comillas. \item[skip\$:] No hace nada. \item[stack\$:] Extrae e imprime todo el contenido de la pila. Sirve para depurar ficheros de estilo mientras los estamos construyendo. La impresión se dirige hacia la salida estándar, no hacia el fichero de salida (\tpf bbl-). \item[substring\$:] Recibe una cadena de texto y dos números. El primero indica la posición de inicio y el segundo la longitud. Devuelve una cadena que se corresponde con la parte de la primera cadena que empieza en \emph{inicio} y tiene la longitud especificada. Por ejemplo ``Mesa'', ``2'', ``1'' devolvería ``e'', y ``ordenador'', ``5'', ``4'' devolvería ``nado''. Si \emph{longitud} es negativa, se cuenta hacia atrás, y así ``ordenador'', ``5'', ``-4'' devolvería ``rden''. A efectos de esta función las llaves y caracteres especiales son contados como caracteres normales, y así, por ejemplo ``\verb|{\LaTeX}|'', ``2'', ``3'', devolvería ``\verb|\La|''. \item[swap\$:] Intercambia la posición de los dos últimos datos de la pila. \item[text.length\$:] Recibe una cadena y devuelve su longitud tal y como sería impresa, es decir: los caracteres especiales se cuentan como un sólo carácter y las llaves no se cuentan. \item[text.prefix\$:] Recibe una cadena y un número ``n'', y devuelve una subcadena igual a los ``n'' primeros caracteres de la cadena recibida. Equivale en gran medida a \ltr substring\$-, con la diferencia de que los caracteres especiales aquí son contados como un solo carácter y se ignoran las llaves. \item[top\$:] Extrae de la pila e imprime en la salida estándar y en el fichero log el último dato de la pila. No lo imprime en el fichero de salida \tpf bbl-. Es útil para el depurado. \item[type\$:] Devuelve el nombre del tipo de registro actual (book, article, etc) o una cadena vacía si se trata de un tipo desconocido. \item[warning\$:] Recibe una cadena y la imprime en la salida estándar y en el fichero log, precedida de un mensaje de advertencia. Asimismo incrementa un contador dedicado al número de mensajes de advertencia generados. \item[width\$:] Recibe una cadena y devuelve un número representativo de su anchura en centésimas de punto, asumiendo para el punto la longitud que tiene en la fuente \emph{cmr}10 de junio de 1987. Esta función es usada para comparar la anchura de las etiquetas y poder determinar el parámetro que hay que pasar al entorno \ltr thebibliography-. \item[write\$:] Recibe una cadena y la envía al buffer de salida que, a su vez, la enviará al fichero \tpf bbl-. \end{description} El programador que invoque a una de estas funciones debe asegurarse de que la pila contenga los datos requeridos por la misma. Cuando una función espera que alguno de los datos recibidos a través de la pila deba ser de cierto tipo (numérico, alfanumérico, nombre de variable o función) y el dato extraido resulta no ser del tipo correcto, la función devolverá un ``0'' o una cadena vacía, dependiendo de que se trate de una función que devuelve un número o una cadena. Si se trata de una función que no devuelve nada, al recibir el dato incorrecto la función terminará su ejecución sin hacer nada. \section{Conclusión: Otros usos de \btx-} \label{sec:otros-usos-de} \btx- fue diseñado para la gestión de la bibliografía. Pero la flexibilidad de formato de los ficheros \tpf bib-, y la potencia de los ficheros de estilo, permiten extender sus posibilidades hasta el punto de que podamos usarlo para muchas otras tareas. Podemos considerar a \btx- como una herramienta que nos permite insertar en un documento información procedente de una base de datos externa, así como decidir de qué manera debe formatearse tal información. En \cite{cascales00} se explica cómo usar \btx- para generar una base de datos de problemas matemáticos. Y en \cite{markey05} se habla del posible uso de \btx- para generar una lista de publicaciones y una libreta de direcciones. Díez de Arriba y Javier Bezos, por su parte, han diseñado el paquete Gloss que usa \btx- para generar glosarios, mientras que yo, que me dedico a la enseñanza del Derecho, he usado \btx- para con una base de datos de exámenes tipo test, y, en publicaciones de tipo jurídico, con una base de datos de sentencias, de tal modo que un simple comando \cmd cite- pudiera insertar en el texto un rótulo identificativo de una sentencia (del tipo <>) y, al final del documento, una lista con las sentencias citadas. Estos usos \emph{alternativos} de \btx- pueden requerir un \emph{paquete} para implementarlos. Sobre todo si se pretende que su uso no impida, en el mismo documento, el uso de \btx- al modo \emph{normal}. Así ocurre en el caso de la generación de glosarios. O pueden exigir el diseño de un tipo nuevo de registro y una función que lo formatee incorporada a alguno de los estilos estándar de \btx- (como hice para la base de datos de sentencias y para la de exámenes tipo test), o simplemente un uso determinado de los registros normales. Lo importante es que tengamos claro que \btx- esconde muchas más posibilidades de lo que a primera vista pudiera parecer. \appendix \section*{Apéndice A: GNU Free Documentation License (Licencia GNU para documentación)} \label{sec:gnu-free-docum} \addcontentsline{toc}{section}{Apéndice A. GNU Free Documentation License} \selectlanguage{english} \small \begin{center} Version 1.2, November 2002 Copyright \copyright 2000,2001,2002 Free Software Foundation, Inc. \bigskip 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA \bigskip Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. \end{center} \begin{center} {\bf\large Preamble} \end{center} The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference. \begin{center} {\Large\bf 1. APPLICABILITY AND DEFINITIONS} \end{center} This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The \textbf{"Document"}, below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as \textbf{"you"}. You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law. A \textbf{"Modified Version"} of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. A \textbf{"Secondary Section"} is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The \textbf{"Invariant Sections"} are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none. The \textbf{"Cover Texts"} are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words. A \textbf{"Transparent"} copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called \textbf{"Opaque"}. Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only. The \textbf{"Title Page"} means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text. A section \textbf{"Entitled XYZ"} means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as \textbf{"Acknowledgements"}, \textbf{"Dedications"}, \textbf{"Endorsements"}, or \textbf{"History"}.) To \textbf{"Preserve the Title"} of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition. The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License. \begin{center} {\Large\bf 2. VERBATIM COPYING} \end{center} You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies. \begin{center} {\Large\bf 3. COPYING IN QUANTITY} \end{center} If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document. \begin{center} {\Large\bf 4. MODIFICATIONS} \end{center} You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: \begin{itemize} \item[A.] Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. \item[B.] List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement. \item[C.] State on the Title page the name of the publisher of the Modified Version, as the publisher. \item[D.] Preserve all the copyright notices of the Document. \item[E.] Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. \item[F.] Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. \item[G.] Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. \item[H.] Include an unaltered copy of this License. \item[I.] Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. \item[J.] Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. \item[K.] For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. \item[L.] Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. \item[M.] Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version. \item[N.] Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section. \item[O.] Preserve any Warranty Disclaimers. \end{itemize} If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles. You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version. \begin{center} {\Large\bf 5. COMBINING DOCUMENTS} \end{center} You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements". \begin{center} {\Large\bf 6. COLLECTIONS OF DOCUMENTS} \end{center} You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. \begin{center} {\Large\bf 7. AGGREGATION WITH INDEPENDENT WORKS} \end{center} A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate. \begin{center} {\Large\bf 8. TRANSLATION} \end{center} Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail. If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title. \begin{center} {\Large\bf 9. TERMINATION} \end{center} You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. \begin{center} {\Large\bf 10. FUTURE REVISIONS OF THIS LICENSE} \end{center} The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/. Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. \begin{center} {\Large\bf ADDENDUM: How to use this License for your documents} \end{center} To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: \bigskip \begin{quote} Copyright \copyright YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". \end{quote} \bigskip If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this: \bigskip \begin{quote} with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. \end{quote} \bigskip If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation. If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software. \selectlanguage{spanish} \bibliography{biblio}\bibliographystyle{guia} \end{document}