% -*- 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 <<STS 21-4-56>>)
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}
