% \iffalse meta-comment
%
% Copyright 1989-2003 Johannes L. Braams and any individual authors
% listed elsewhere in this file.  All rights reserved.
% 
% This file is part of the Babel system release 3.7.
% --------------------------------------------------
% 
% It may be distributed under the terms of the LaTeX Project Public
% License, as described in lppl.txt in the base LaTeX distribution.
% Either version 1.2 or, at your option, any later version.
% \fi
% \CheckSum{2195}
% \ProvidesFile{spanish.dtx}
%       [2003/11/18 v4.2b Spanish support from the babel system] 
%\iffalse
%% File `spanish.dtx'
%% Babel package for LaTeX version 2e
%% Copyright (C) 1989 - 2003
%%           by Johannes Braams, TeXniek
%
%% Spanish Language Definition File
%% Copyright (C) 1997 - 2003
%%           by Javier Bezos (jbezos@wanadoo.es)
%%           Apartado 116.035
%%           E-28080 Madrid
%%           Espa\~na / Espagne
%%      and
%%           by CervanTeX (www.cervantex.org)
%
%% Please report errors to: Javier Bezos (preferably)
%%                          jbezos@wanadoo.es
%%                          J.L. Braams
%%                          babel at braams.cistron.nl
%
%    This file is part of the babel system, it provides the source
%    code for the Spanish language definition file.
%    The original version of this file was written by Javier Bezos.
%
%<*filedriver>
\documentclass[spanish,a4paper]{ltxdoc}
\usepackage[activeacute]{babel}

%\usepackage{ps}

\newcommand*\TeXhax{\TeX hax}
\newcommand*\babel{\textsf{babel}}
\newcommand*\langvar{$\langle \it lang \rangle$}
\newcommand*\note[1]{}
\newcommand*\Lopt[1]{\textsf{#1}}
\newcommand*\file[1]{\texttt{#1}}

\setlength{\arrayrulewidth}{2\arrayrulewidth}
\newcommand\toprule{\cline{1-2}\\[-2ex]}
\newcommand\botrule{\\[.6ex]\cline{1-2}}
\newcommand\hmk{$\string|$}

\newcommand\New[1]{%
  \leavevmode\marginpar{\raggedleft\sffamily Nuevo en #1}}

\newcommand\nm[1]{\unskip\,$^{#1}$}
\newcommand\nt[1]{\quad$^{#1}$\,\ignorespaces}

\makeatletter
  \renewcommand\@biblabel{}
\makeatother

\newcommand\DOT[1]{\lsc{DOT},~#1}
\newcommand\DTL[1]{\lsc{DTL},~#1}
\newcommand\MEA[1]{\lsc{MEA},~#1}

\raggedright
\setlength{\parindent}{1em}

\addtolength{\oddsidemargin}{-2pc}
\addtolength{\textwidth}{4pc}

\OnlyDescription
\begin{document}
   \DocInput{spanish.dtx}
\end{document}
%</filedriver>
%\fi
%
% \begingroup
% 
% \catcode`\{=11
% \catcode`\[=1
% 
% \gdef\ignoringuser[^^A
%   \bgroup
%   \let\end{userdtx\fi
%   \let\end{userdrv\fi
%   \aftergroup\endgroup
%   \catcode`\{=11
%   \catcode`f=14 ^^A kills \if... and \fi
%   \catcode`l=14 ^^A kills \else
%   \catcode`o=14 ^^A kills \or
%   \catcode`p=14 ^^A kills \repeat
%   \iffalse}
%   
% \endgroup
% 
% \newenvironment{userdtx}
%   {\ifx\langdeffile\undefined
%    \else\expandafter\ignoringuser
%    \fi}{}
% 
% \newenvironment{userdrv}
%   {\ifx\langdeffile\undefined
%    \expandafter\ignoringuser
%    \else\fi}{}
%
% \begin{userdtx}
%^^A ======= Beginning of text as typeset by spanish.dtx =========
%
% \title{Estilo \textsf{spanish}\\
%     para el sistema \babel.\footnote{Este
%     archivo est\'a actualmente en la versi\'on
%     4.2b con fecha 12 de septiembre del 2003. ^^A@#
%     Esta copia del manual se compuso el~\today.}}
%
% \author{Javier Bezos\footnote{Por favor, env\'{\i}en
%   comentarios y sugerencias a \texttt{jbezos@wanadoo.es}
%   o a mi direcci\'on postal:  Apartado 116.035, E-28080 Madrid,
%   Espa'na / Espagne. Han colaborado de una u otra forma muchas
%   personas, a las cuales agradezco sus comentarios y sugerencias.
%   Para m'as informaci'on sobre los criterios seguidos, v'ease la
%   referencia: Javier Bezos, \textit{Tipograf'ia espa'nola con
%   \TeX.} Para informaci'on sobre actualizaciones:
%   http://www.cervantex.org/}}
%
% \date{12 de septiembre del 2003} ^^A@#
%
% \maketitle
% 
% {\small\tableofcontents}
%
%% \section{\textsf{spanish} como lengua principal}
% 
% En \babel{} se considera que la 'ultima lengua citada en |\usepackage| y 
% |\documentclass|, por este orden, es la lengua principal.  Si la 
% lengua principal es |spanish|, \New{4.1} se activa el grupo
% |\layoutspanish| que adapta varios elementos
% a los usos tipogr'aficos espa'noles del siguiente modo:
%
% \begin{itemize}
%
% \item[$\diamond$]
% |enumerate| e |itemize|\\[1ex]
%
% El primero usa la siguiente secuencia:\,\footnote{No hay raz'on 
% concreta para ella. Es tan s'olo una f'ormula de compromiso.}\\
% \quad 1.\\
% \qquad \emph{a})\\
% \quad\qquad 1)\\
% \qquad\qquad \emph{a$'$})\\
% El segundo la siguiente:\\
% \quad\leavevmode\hbox to 1.2ex
%     {\hss\vrule height .95ex width .8ex depth -.15ex\hss}\\
% \qquad\textbullet\\
% \quad\qquad $\circ$\\
% \qquad\qquad $\diamond$
%
% \New{4.2}Dos 'ordenes  permiten otros estilos en
% |itemize|: con |\spanishdashitems| se cambia a rayas en todos los
% niveles, y con |\spanishsignitems|, a \textbullet{} $\circ$
% $\diamond$ $\triangleright$.
%
% \item[$\diamond$]
% |\alph| y |\Alph|\\[1ex]
%
% Incluyen la e'ne.
%
% \item[$\diamond$]
% |\fnsymbol|\\[1ex]
%
% Se emplean uno, dos, tres... asteriscos (*, **, ***, etc.),
% en lugar de la sucesi'on angloamericana de cruces, barras,
% etc.\footnote{\DOT{162}.}
%
% \item[$\diamond$]
% |\guillemotleft| y |\guillemotright|\\[1ex]
%
% Las comillas latinas para |OT1| son menos angulosas y se generan
% con unas puntas de flecha de |lasy|.
%
% \item[$\diamond$]
% |\roman|\\[1ex]
%
% Como en castellano no se usan n'umeros romanos
% en min'uscula, |\roman| se redefine para que los d'e en
% versalitas.\footnote{\DTL{197}. Los n'umeros romanos con
% versalitas son desconocidos en ingl'es, donde se prefiere
% la min'uscula. En la Europa continental, la situaci'on es
% justamente la opuesta.}
%
% \begin{quote}\small
% \textbf{Nota.} MakeIndex no puede entender la forma en que
% |\roman| escribe el n'umero de p'agina, por lo
% que elimina las l'ineas afectadas. Por ello el archivo |.idx| 
% ha de ser convertido antes de procesarlo con MakeIndex.
% Con este paquete se proporciona la utilidad |romanidx.tex| que se
% encarga de ello. Simplemente se compone ese archivo con \LaTeX{}
% y a continuaci'on se responde a las preguntas que se formulan.
% Este proceso no es necesario si no se introdujo ninguna
% entrada de 'indice en p'aginas numeradas con |\roman| (lo cual ser'a
% lo m'as normal). Si un s'imbolo propio de \emph{MakeIndex} generara
% problemas, debe encerrarse entre llaves: \verb={"|}=.
% \end{quote}
%
% \item[$\diamond$]
% |\section|, |\subsection|, etc.\\[1ex]
%
% Los n'umeros en los t'itulos est'an seguidos de un punto 
% tanto en el texto como en el 'indice. Adem'as,
% el primer p'arrafo tras el t'itulo no elimina la sangr'ia
% (de nuevo, una costumbre angloamericana).
% 
% \end{itemize}
%
% Estos cambios funcionan con las clases est'andar ~---con otras
% tal vez alguno de ellos no tenga efecto--- y persisten durante
% todo el documento (no se pueden desactivar). Ninguno de ellos
% es necesario para componer el documento, aunque naturalmente el
% resultado ser'a distinto.
% 
% \begin{itemize}
%
% \item[$\diamond$]
% |\selectspanish*|\\[1ex]
% 
% \New{4.1}Si no se desean estos cambios, basta con usar en el
% pre'ambulo |\selectspanish*| (con asterisco) o <<borrarlos>> con:
%\begin{verbatim}
% \let\layoutspanish\relax
%\end{verbatim}
% 
% \end{itemize}
%
% \section{Descripci'on}
%
% \subsection{Traducciones}
% 
%    Ciertas 'ordenes se definen para
%    proporcionar traducciones al castellano de algunos t'erminos, tal
%    y como se describe en el cuadro 1.
% 
% \begin{table}
% \center\small
% \caption{Traducciones}
% \vspace{1.5ex}
% \begin{tabular}{l@{\hspace{3em}}l}
% \toprule
% |\refname|        & Referencias\\
% |\abstractname|   & Resumen\\
% |\bibname|        & Bibliograf'ia\\
% |\chaptername|    & Cap'itulo\\
% |\appendixname|   & Ap'endice\\
% |\contentsname|   & 'Indice general\nm{a}\\
% |\listfigurename| & 'Indice de figuras\\
% |\listtablename|  & 'Indice de cuadros\\
% |\indexname|      & 'Indice alfab'etico\\
% |\figurename|     & Figura\\
% |\tablename|      & Cuadro\\
% |\partname|       & Parte\\
% |\enclname|       & Adjunto\\
% |\ccname|         & Copia a\\
% |\headtoname|     & A\\
% |\pagename|       & P'agina\\
% |\seename|        & v'ease\\
% |\alsoname|       & v'ease tambi'en\\
% |\proofname|      & Demostraci'on
% \botrule
% \end{tabular}
%
% \vspace{1.5ex}
%
% \begin{minipage}{6cm}\footnotesize
% \nt{a} Pero s'olo <<'Indice>> en \textsf{article}.
% \end{minipage}
% \end{table}
% 
%    No existe una terminolog'ia unificada.  
%    Tal vez \emph{'Indice general} es lo
%    que m'as se usa para el 'indice de los cap'itulos, as'i que a
%    ello me atengo salvo en |article|, donde se compone como secci'on
%    y por tanto resulta algo ostentoso.\footnote{Al contrario que en
%    ingl'es, en castellano el 'indice por antonomasia es el general.}
% 
%    Para el 'indice alfab'etico se ha propuesto \emph{'Indice de
%    materias} o \emph{'Indice anal'itico}, aunque
%    estos 'indices no solamente suelen incluir
%    materias, sino tambi'en nombres; \emph{'Indice alfab'etico} es
%    m'as preciso.\footnote{Es la usada en \DOT{300} as'i
%    como en la mayor'ia de los libros que consult'e al azar en una
%    biblioteca.}
% 
%    En cuanto a los de cuadros y figuras, tambi'en es posible decir
%    \emph{lista}, pero me parece preferible \emph{'indice}, que
%    implica la correspondencia con las p'aginas.
% 
%    Para traducir \emph{table} es mejor \emph{cuadro}, ya que
%    \emph{tabla} es un \emph{falso amigo};\,\footnote{V'eanse las
%    definiciones del \lsc{DRAE} y \DTL{67 ss.}} esa es la pr'actica
%    tradicional. (Por ejemplo, <<cuadro de  estados medievales>>
%    frente a <<tabla de logaritmos>>.)
%
%    Las traducciones se escriben de min'usculas, salvo la inicial.
%    Se evita el anglicismo de comenzar en
%    may'usculas los sustantivos.\footnote{\DOT{197}.}
%
%    La orden |\today| da la fecha  actual. \New{4.2}Aunque al citar 
%    a'nos posteriores a 1999  la Academia s'olo admite la supresi'on del
%    art'iculo  en cartas y documentos, en la pr'actica se ha extendido
%    esta construcci'on agramatical y as'i se hace aqu'i. Con
%   |\spanishdatedel| y  |\spanishdatede| se opta por \textit{del}
%    (recomendado)  o \textit{de} (predeterminado).
%
% \subsection{Abreviaciones}
% 
%    (Lo que en \babel{} se denomina `shorthands'.) La
%    lista completa se puede encontrar en el cuadro 2. En los
%    siguientes apartados se dar'an m'as detalles sobre algunas de
%    ellas.
%
% \begin{table}[!t]
% \center\small
% \caption{Abreviaciones}
% \vspace{1.5ex}
% \begin{tabular}{l@{\hspace{3em}}l}
% \toprule
% |'a 'e 'i 'o 'u| & 'a 'e 'i 'o 'u\\
% |'A 'E 'I 'O 'U| & 'A 'E 'I 'O 'U\\
% |'n 'N|          & 'n 'N\nm{a}\\
% |"u "U|          & "u "U\\
% |"a "A "o "O|    & Ordinales: 1"a, 1"A, 1"o, 1"O\\
%\llap{\textsf{Nuevo en 4.2 }}\relax
% |"er "ER|        & Ordinales: 1"er, 1"ER\\
% |"c "C|          & "c "C\nm{b}\\
% |"rr "RR|        &  rr, pero -r cuando se divide\\
% |"y|             & El antiguo signo para <<y>>\\
% |"-|             & Como |\-|, pero permite m'as divisiones\\
% |"=|             & Como |-|, pero permite mas divisiones\nm{c}\\
% |"~|             & Gui'on estil'istico\nm{d}\\
% |~- ~-- ~---|    & Como |-|, |--| y |---|, pero sin divisi'on\\
% |""|             & Permite mas divisiones antes y despu'es\nm{e}\\
% |"/|             & Una barra algo m'as baja\\
% \verb+"|+        & Divide un logotipo\nm{f}\\
% |"< ">|          & "< ">\\
% |<< >>|          & |\begin{quoting}| |\end{quoting}|\nm{g}\\
% |?` !`|          & ?` !`\nm{h}\\
%\llap{\textsf{Nuevo en 4.2 }}\relax
%|"? "!|          & "? "! alineados con la linea base\nm{i}
% \botrule
% \end{tabular}
%
% \vspace{1.5ex}
%
% \begin{minipage}{11cm}
% \footnotesize
% \nt{a} La forma |~n| debe considerarse en extinci'on.
% \nt{b} La cedilla ya no se usa, pero se us'o anta'no.
% \nt{c} |"=| viene a ser lo mismo que |""-""|.
% \nt{d} Esta abreviaci'on tiene un uso distinto
% en otras lenguas. \nt{e} Como en <<entrada/salida>>.
% \nt{f} Carece de uso en castellano. \nt{g} V'ease sec.~2.7. 
% \nt{h} No proporcionadas por este paquete, sino por cada tipo;
% figuran aqu'i como simple recordatorio. \nt{i} 'Utiles en
% r'otulos en may'usculas.
% \end{minipage}
% \end{table}
% 
% Para poder usar ap'ostrofos como abreviaciones de acentos
% es necesaria la opci'on |activeacute| en |\usepackage|.
% Puede cambiarse este comportamiento con 
% la orden |\es@acuteactive| en el archivo de configuraci'on
% |spanish.cfg|; en ese caso los ap'ostrofos se activan siempre.
%
% \New{4.1} La conjunci'on \textit{y} es de por s'i bastante breve,
% por lo que en espa'nol no se han usado signos sustitutorios
% desde hace varios siglos.  Sin 
% embargo, existe un signo parecido a un dos dado la vuelta, que 
% desapareci'o tras el Renacimento y que se emplea hoy en ediciones 
% paleogr'aficas.  Se puede <<imitar>> con |"y|, siempre que se 
% haya cargado el paquete |graphics|; de no ser as'i, se usa la letra 
% $\tau$, aunque la variante normal de \TeX{} no es demasiado 
% apropiada.
% 
% Los caracteres usados como abreviaciones se comportan
% como otras 'ordenes de \TeX{} y por tanto se hace caso
% omiso de los espacios que le puedan seguir: \verb*|' a| es lo mismo
% que |'a|. Eso tambi'en implica que tras esos caracteres no
% puede ir una llave de cierre y que deber'a escribirse
% |{... '{}}| en lugar de |{... '}|; en modo matem'atico no hay
% problema y |$x^{a'}$| ($x^{a'}$) es v'alido. \New{4.1} 
% 
% \begin{itemize}
%
% \item[$\diamond$]
% |\deactivatetilden|\\[1ex]
% 
% Esta orden desactiva las abreviaciones |~n| y |~N| debido a 
% los problemas que presentan.  Puede usarse en el archivo 
% de configuraci'on (v'ease m'as abajo).
% 
% % \item[$\diamond$]
% |\spanishdeactivate{<caracteres>}|\\[1ex]
% 
% \New{4.1}Permite desactivar las abreviaciones correspondientes a los
% caracteres dados. Para evitar entrar en conflicto con otras lenguas,
% al salir de |spanish| se reactivan,\footnote{El punto para
% los decimales no es estrictamente una abreviaci'on y no se
% reactiva.} por lo que si se desea que 
% persista hay que a'nadir la orden a |\shorthandsspanish| con 
%|\addto|. La orden |\renewcommand\shorthandsspanish{}| es una 
% variante optimizada de
%\begin{verbatim}
% \addto\shorthandsspanish{\spanishdeactivate{.'"~<>}}
%\end{verbatim}
% y es lo recomendado si se desea
% prescindir del mecanismo de abreviaciones.
% \end{itemize}
%
% \subsection{Coma decimal}
%
% Tanto el ingl'es como el castellano y otras lenguas tienen sus
% formas tradicionales de representar la coma decimal.  En ingl'es
% es algo como $12{\cdot}34$, mientras que en castellano
% es $12$'$34$.  Adem'as, los millares se pueden separar por coma en 
% ingl'es y punto en castellano.\footnote{Excepto en a'nos, donde 
% siempre se escriben las cifras juntas: \emph{1978, 1998}.}
% Tales formas deben ser descartadas, pues se ha llegado a
% una normalizaci'on internacional donde los millares se
% separan por un espacio fino y los decimales con coma.\footnote{%
% La ISO admite el punto en pa'ises donde haya sido esa
% la tradici'on, aunque recomienda que se adapten a la coma.}
%
% Ya que \TeX\ usa la coma como separador en intervalos o expresiones 
% similares, lo que a'nade un espacio fino, \textsf{spanish}
% convierte todo punto en modo matem'atico en
% una coma siempre que est'e seguido de una cifra, pero no en otras 
% circunstancias:
% \begin{quote}\small\begin{tabbing}
% |$1\,234.567\,890$|     \quad \=  $1\,234.567\,890$\\
% |$f(1,2)=12.34.$|        \> $f(1,2)=12.34.$\\
% |$1{.}000$|              \> $1{.}000$, pero\\
% |1.000|                  \> 1.000, pues no es modo matem'atico.
% \end{tabbing}\end{quote}
%
% Las 'ordenes |\decimalcomma| y |\decimalpoint| 
% establecen si se usa una coma, que es el valor predeterminado,
% o un punto, mientras que |\spanishdecimal{<math>}| permite darle
% una definici'on arbitraria.\footnote{Internamente el mecanismo es
% de una abreviaci'on, y se puede desactivar como las otras. 
% \textsf{Nuevo 4.2}}
%
% \subsection{Divisi'on de palabras}
%
% \textsf{Spanish} comprueba la 
% codificaci'on en el momento en que se usa un acento: si la 
% codificaci'on es |OT1| se toman medidas para facilitar
% la divisi'on, que pese a todo nunca ser'a perfecta, mientras que con 
% |T1| se accede directamente al car'acter correspondiente.
%
% Para matizar la divisi'on de palabras hay cuatro posibilidades, dos 
% de ellas con el m'etodo de abreviaciones:
% \begin{itemize}
% \item la orden |\-| es un gui'on opcional que no permite
% m'as divisiones, 
%
% \item |"-| es similar pero permite m'as divisiones,
%
% \item un |-| es un gui'on que no permite m'as divisiones ni
% antes ni despu'es, y
% 
% \item |"=| es el equivalente que s'i las permite,\footnote{No
% es una buena idea usar esta orden, pero en 
% medidas muy cortas puede resultar necesario.}
%
% \end{itemize}
% Por ejemplo (con las posibles divisiones marcadas con \hmk):
% \begin{quote}\small\begin{tabbing}
% |Zaragoza-Barcelona|\qquad \= Zaragoza-\hmk Barcelona\\
% |Zaragoza"=Barcelona| \>
%    Za\hmk ra\hmk go\hmk za-\hmk Bar\hmk ce\hmk lo\hmk na\\
% |semi\-abierto| \> semi\hmk abierto\\
% |semi"-abierto| \> se\hmk mi\hmk abier\hmk to.\footnotemark
% \end{tabbing}\footnotetext{Justo antes y despu'es de
% {\ttfamily\string"\string-} y {\ttfamily\string"\string=} se
% aplican los correspondientes
% valores de {\ttfamily\string\...hyphenmin} lo que implica que la
% divis'on semia\hmk bierto no es posible.
% 'Este es un comportamiento correcto.}
% \end{quote}
%
% Adem'as. hay abreviaciones que evitan
% divisiones: |~-|, que resulta 'util para expresar una serie de
% n'umeros sin que el gui'on los divida (12~-14, |12~-14|), y |~---|,
% que es la forma que debe usarse para abrir incisos con rayas, ya que
% de lo contrario puede haber una divisi'on entre la raya de abrir y
% la palabra que le sigue:
% \begin{quote}\small\begin{tabbing}
% |Los conciertos ~---o academias--- que organiz'o...|
% \end{tabbing}\end{quote}
% Mientras que este gui'on evita toda posible divisi'on en los
% elementos que une, la raya (---) y la semirraya (--) las permiten
% en las palabras que le precedan o le sigan.
% 
% La abreviaci'on |"~| se usa cuando se quiere que el gui'on
% tambi'en aparezca al comienzo de la siguiente l'inea. Por ejemplo:
% \begin{quote}\small\begin{tabbing}
% |infra"~rojo|  \quad \= in\hmk fra-ro\hmk jo, pero infra-\hmk-rojo.
% \end{tabbing}\end{quote}
%
% Otra abreviaci'on es |"rr| que sirve para el 
% 'unico cambio de escritura del castellano en caso de haber divisi'on.  
% La \lsc{RAE} indica que al a'nadir un prefijo que termina en vocal a 
% una palabra que comienza con \emph{r}, 'esta 'ultima debe 
% doblarse a menos que se unan por un gui'on. Por ejemplo:
% \begin{quote}\small\begin{tabbing}
% |extra"rradio|  \quad \= ex\hmk trarra\hmk dio, pero extra-\hmk 
%    radio.
% \end{tabbing}\end{quote}
% No hay acuerdo sobre si esta regla y otras similares han de 
% aplicarse o no, aunque la opini'on mayoritaria actual est'a en
% contra.
%
% \subsection{Ordinales}
% 
% Las abreviaturas siempre llevan punto, salvo algunas en que 
% se sustituye por una barra (y salvo las siglas y s'imbolos, 
% naturalmente), que precede a las letras voladitas.\footnote{Puede 
% comprobarse en \DTL{196}.  V'ease tambi'en \DOT{222 y 227}.}
% Por ello, \textsf{spanish} proporciona la orden 
% |\sptext| que facilita la creaci'on de estas abreviaturas.  Por 
% ejemplo: |adm\sptext{'on}| que da adm\sptext{'on}. Hay seis abreviaciones 
% asociadas a ordinales: |"a|, |"A|, |"o|, |"O|, |"er| y |"ER| que equivalen a 
% |\sptext{a}|, etc.\footnote{Muchos tipos a'naden
% un peque'no subrayado que debe evitarse, y por tanto no se debe
% escribir los ordinales con \textsf{inputenc}.}
%
% Para ajustar el tama'no lo mejor posible, se usa el de
% 'indices en curso. Esto funciona bien salvo para tama'nos muy 
% grandes o muy peque'nos, donde los resultados son meramente
% aceptables. 
%
% \New{4.1}En Plain \TeX{} se ejecuta la orden |\sptextfont| para la
% letra voladita, de forma que |{\bf\let\sptextfont\bf 1"o}| da el
% resultado correcto (|\mit| si es para cursiva). Para usar un tipo
% nuevo con |\sptext| hay que definir tambi'en las variantes 
% matem'aticas con |\newfam|.
% 
% \subsection{Funciones matem'aticas}
%
% Tradicionalmente, se han formado las abreviaciones
% de lo que en \TeX\ se conocen como operadores a partir
% del nombre castellano, lo que implica la presencia del
% acento en l'im (en sus tres formas |\lim|, |\limsup| y |\liminf|),
% m'ax, m'in, 'inf y m'od (en sus dos
% formas |\bmod| y |\pmod|).
%
% Con |spanish| pueden seguirse varias convenciones con ayuda
% de las siguientes 'ordenes:
% \begin{itemize}
% \item[$\diamond$] |\accentedoperators| |\unaccentedoperators|\\[1ex]
% Activa o desactiva los acentos.
% Por omisi'on se acent'uan, como por ejemplo: $\lim_{x\to 0}(1/x)$
% (|$\lim_{x\to 0}(1/x)$|).
% 
% \item[$\diamond$] |\spacedoperators| |\unspacedoperators|\\[1ex]
% Activa o desactiva el espacio entre "<arc"> y la funci'on.
% Lo habitual ha sido con espacio; as'i pues, por omisi'on
% se espacia.
% \end{itemize}
% 
% La i sin punto tambi'en es accesible directamente en modo
% matem'atico con la orden |\dotlessi|, de forma que se puede escribir 
% |\acute{\dotlessi}|. Por ejemplo, 
% |$V_{\mathbf{cr\acute{\dotlessi}t}}$| da 
% $V_{\mathbf{cr\acute{\dotlessi}t}}$.
%
% Tambi'en se a'naden |\sen|, |\arcsen|, |\tg| y |\arctg|,
% que dan las funciones respectivas.  Otras funciones trigonom'etricas 
% se encuentran almacenadas en el par'ametro |\spanishoperators|, que 
% inicialmente incluye cotg, cosec, senh y tgh. La raz'on por la que 
% estas funciones se han separado es porque ~---al contrario que sen
% y tg~--- su forma est'a lejos de estar normalizada en el 'ambito 
% hispanohablante.  De esta 
% forma se puede cambiar por otras con, por ejemplo:
%\begin{verbatim}
% \renewcommand{\spanishoperators}{ctg arc\,ctg sh ch th}
%\end{verbatim}
% (separadas con espacio). Cuando se selecciona |spanish| se crean
% 'ordenes con esos nombres
% y que dan esas funciones (siempre con |\nolimits|). Adem'as de
% las letras sin acentuar se aceptan las 'ordenes |\,| y |\acute|, que
% se pasan por alto para formar el nombre. \New{4.2}Por ejemplo, |arc\,ctg|
% se escribe en el documento con
% |\arcctg|, |M\acute{a}x| como |\Max| y |cr\acute{i}t| como |\crit|
% (hay que usar |i| y no |\dotlessi|).
% La orden |\,| responde a |\|(|un|)|spacedoperators|, y |\acute|
% a |\|(|un|)|accentedoperators|.
% 
% Conviene que |\spanishoperators| est'e en el pre'ambulo del
% documento en s'i, antes de |\selectspanish| o de 
% |\begin{document}|.
%
% \subsection{Entrecomillados}
% 
% El entorno |quoting| entrecomilla un  
% texto, a'nadiendo comillas de seguir al comienzo de 
% cada p'arrafo en su interior.\footnote{Se puede encontrar
% una detallada exposici'on de las comillas en \DTL{44 ss.} De ah'i
% se ha tomado alg'un ejemplo.}
% Tambi'en se pueden emplear las 
% abreviaciones |<<| y |>>| que se limitan a llamar a |quoting|, que
% por ser entorno considera sus cambios internos como locales. (Es 
% decir, |<< ... >>| implica |{<< ... >>}|.) 
% Las abreviaciones |"<| y |">| contin'uan dando sin m'as los
% caracteres  de comillas de abrir y cerrar, respectivamente.
% 
% Por ejemplo:
%\begin{verbatim}
% <<Se llaman <<comillas de seguir>> a las que son de cierre,
% pero se colocan al comienzo de cada p'arrafo cuando se transcribe
% un texto entrecomillado con m'as de un p'arrafo.
% 
% En su interior, como de costumbre, se usan inglesas.>>
%\end{verbatim}
% cuyo resultado es:
% \begin{quotation}\small
% <<Se llaman <<comillas de seguir>> a las que son de cierre,
% pero se colocan al comienzo de cada p'arrafo cuando se transcribe
% un texto entrecomillado con m'as de un p'arrafo.
% 
% En su interior, como de costumbre, se usan inglesas.>>
% \end{quotation}
% 
% Este entorno se puede redefinir, como por ejemplo:
%\begin{verbatim}
% \renewenvironment{quoting}{\itshape}{}
%\end{verbatim}
% pero en principio no implica un nuevo p'arrafo, ya que 
% est'a pensado para ser usado tambi'en en el texto.
%
% En caso de anidar entornos |quoting|, se modifican las comillas
% de los niveles interiores, que tambi'en se a'naden a las de seguir:
%\begin{verbatim}
% <<El di'alogo se desarroll'o de esta forma:
% 
% <<---Yo no he sido ---grit'o Antonio.
% 
% ---Pero has colaborado ---asegur'o Rafael>>.
% 
% Pero all'i no se aclar'o nadie.>>
%\end{verbatim}
% 
% \begin{quotation}\small
% <<El di'alogo se desarroll'o de esta forma:
% 
% <<---Yo no he sido ---grit'o Antonio.
% 
% ---Pero has colaborado ---asegur'o Rafael>>.
% 
% Pero all'i no se aclar'o nadie.>>
% \end{quotation}
%
% \begin{itemize}
% \item[$\diamond$]
% |\lquoti| |\rquoti| |\lquotii| |\rquotii| |\lquotiii| 
% |\rquotiii|\\[1ex]
% 
% Controlan las comillas en |quoting|, seg'un el
% nivel en que nos encontremos. |\lquoti| son las comillas de abrir
% m'as exteriores, |\lquotii| las de segundo nivel, etc., y lo mismo
% para las de cerrar con |\rquoti|... Para las de seguir siempre se
% usan las de cerrar. Los valores predefinidos est'an en el cuadro 3.
% \begin{table}
% \center\small
% \caption{Entrecomillados}
% \vspace{1.5ex}
% \begin{tabular}{l@{\hspace{5em}}l}
% \toprule
% |\lquoti|   &|"<|\\
% |\rquoti|   &|">|\\
% |\lquotii|  &|``|\\
% |\rquotii|  &|''|\\
% |\lquotiii| &|`|\\
% |\rquotiii| &|'|
% \botrule
% \end{tabular}
% \end{table}
% 
% \newenvironment{dialog}
%   {\def\lquoti{}\begin{quoting}---\ignorespaces}
%   {\def\rquoti{}\end{quoting}}
% 
% Las comillas de seguir tambi'en se emplean en di'alogos, incluso
% si no las hay de abrir y cerrar. Con la ayuda del siguiente
% entorno,
%\begin{verbatim}
% \newenvironment{dialog}
%   {\def\lquoti{}\begin{quoting}---\ignorespaces}
%   {\def\rquoti{}\end{quoting}}
%\end{verbatim}
% podemos obtener
% \begin{quotation}\small
% \begin{dialog}%
% El di'alogo se desarroll'o de esta forma:
% 
% <<---Yo no he sido ---grit'o Antonio.
% 
% ---Pero has colaborado ---asegur'o Rafael>>.
%
% Pero all'i no se aclar'o nadie.
% \end{dialog}
% \end{quotation}
%
% \item[$\diamond$]
% |\activatequoting \deactivatequoting|\\[1ex]
% 
% Las incompatibilidades potenciales de estas abreviaciones son
% enormes. Por ejemplo, en \textsf{ifthen} se cancelan las
% comparaciones entre n'umeros;\,\footnote{Y en |\string\ifnum|,
% etc. usado por los desarrolladores en los paquetes.} tambi'en
% resultan inoperantes |@>>>| y |@<<<| de
% \textsf{amstex}.\footnote{Aunque en 
% este caso cabe usar los sin'onimos |@)))| y |@(((|.}
% Por ello, se da posibilidad de cancelarlas y reactivarlas con
% estas 'ordenes, \New{4.2}aunque si se est'a usando con
% \textsf{xmltex} ya se
% desactivan por completo de forma autom'atica. El entorno
% |quoting| siempre permanece disponible.\footnote{Algunos tipos
% disponen de esta ligadura de forma interna para
% generar los caracteres de comillas, por lo que en ellos tambi'en
% podemos usarlos siempre, aunque los ajustes proporcionados por
% \textsf{spanish} se pueden perder; por otra parte, tampoco se
% usan demasiado a menudo.}
%
% \end{itemize}
% 
% \subsection{Selecci'on}
% 
% Por omisi'on, \babel{} deja <<dormidas>> las lenguas hasta que se
% llega a |\begin{document}| con el fin de evitar conflictos por
% las abreviaciones; a cambio,
% se priva de la posibilidad de usar las lenguas en el pre'ambulo 
% en 'ordenes como |\savebox|, |\title|, |\newtheorem|, etc.
% 
% La orden |\selectspanish| permite activar |spanish| con sus
% extensiones y abreviaciones  antes de
% |\begin{document}|.\footnote{Algunos detalles, que
% apenas afectan a \texttt{spanish}, siguen sin activarse hasta el
% comienzo del documento.}
% De esta forma, podr'iamos decir
%\begin{verbatim}
% \documentclass{book}
% \usepackage[T1]{fontenc}
% \usepackage[spanish]{babel}
% \usepackage[latin1]{inputenc}
% \usepackage[centerlast]{caption2}
% ... % Mas paquetes
% 
% \selectspanish
% 
% \title{T'itulo}
% \author{Autor}
% \newcommand{\pste}{para"-psicol'ogicamente}
% \newsavebox{\mybox}
% \savebox{\mybox}{m'as cosas}
% ...   % Mas definiciones
%
% \begin{document}
%\end{verbatim}
% 
% \subsection{Espaciado}
% 
% El espaciado espa'nol difiere relativamente poco del ingl'es;
% sin embargo, el espacio tras los signos de
% puntuaci'on debe ser mismo que el que hay entre palabras. O dicho en
% t'erminos de \TeX, |\frenchspacing| est'a activo.
% 
% Tambi'en en otros dos sitios hay diferencias. El primero son los
% puntos suspensivos, para los que se define una nueva orden |\...|
% que los da menos espaciados; con ella \TeX{} preserva
% el espacio siguiente. Por ejemplo:
% \begin{quote}\small\begin{tabbing}
% |\... y solo estaba\... ella.|\quad\=\... y solo estaba\... ella.
% \end{tabbing}\end{quote}
% Tambi'en podr'ian escribirse los tres puntos sin m'as |...|, y en
% la pr'actica no hay diferencia, a menos que se cambie el
% valor del espacio tras punto; en ese caso, la forma con barra
% da los valores apropiados \emph{dentro} de una sentencia, y
% los tres puntos \emph{al final} de ella. Esta orden no 
% interfiere con el valor original de |\.| (un punto suprascrito).
%
% El segundo sitio es un espacio fino antes del signo |\%| (que
% m'as exactamente es |\,|, con lo cual se puede "<recuperar"> con
% su opuesto |\!|, si |\%| no sigue a una cifra).
%
% \subsection{Miscel'anea}
% 
% \begin{itemize}
%
% \item[$\bullet$] La orden |\lsc| se puede usar para siglas
% en versalitas.
% Por ejemplo:
% \begin{quote}\small\begin{tabbing}
% |\lsc{RAE}| \quad \= \lsc{RAE}\\
% |\lsc{ReNFe}| \quad \= \lsc{ReNFe}.
% \end{tabbing}\end{quote}
% Tambi'en puede ser 'util para algunos usos de los n'umeros
% romanos:
% \begin{quote}\small\begin{tabbing}
% |siglo \lsc{XVII}| \quad \= siglo \lsc{XVII}\\
% |cap'itulo \lsc{II}| \quad \= cap'itulo \lsc{II}.
% \end{tabbing}\end{quote}
% 
% Para evitar que con un tipo que carece de versalitas acabe
% apareciendo (por substituci'on) un texto de min'usculas se
% intenta usar en estos casos las versales \emph{reales}
% de un tama'no menor. Queda simplemente aceptable, pero es mejor que
% nada. (\LaTeX\ tiende a sustituir versalitas por versalitas,
% pero hay excepciones, como con las negritas.)
%
% \item[$\bullet$] Se puede escribir |\'i| para |\'{\i}|.
%
% \item[$\bullet$] Hay una abreviaci'on adicional como utilidad
% tipogr'afica m'as que espec'ificamente espa'nola. En ciertos
% tipos, como Times, el extremo inferior de la barra est'a en la
% l'inea de base y expresiones como <<am/pm>> resultan poco
% est'eticas. |"/| produce una barra que, de ser necesario,
% se baja ligeramente. Computer Modern tiene una barra bien
% dise'nada y no es posible ilustrar aqu'i este punto
% pero en todo caso se escribir'ia |am"/pm|.\footnote{En \MEA{141}
% se recurre a una soluci'on que es la 'unica sencilla en
% programas de maquetaci'on: usar un cuerpo menor. Pero con \TeX{}
% es mucho m'as f'acil automatizar las tareas.}
%
% \end{itemize}
%
% \section{Adaptaci'on}
% \subsection{Configuraci'on}
%
% En sus 'ultimas versiones, \babel{} proporciona la posibilidad
% de cargar autom'aticamente un archivo con el mismo nombre que
% el principal, pero con extensi'on |.cfg|. \textsf{Spanish}
% proporciona unas pocas 'ordenes para ser usadas en este archivo:
% \begin{itemize}
% \item[$\diamond$] |\es@activeacute|\\[1ex]
% Activa las abreviaciones con ap'ostrofos, sin que sea
% necesario incluir |activeacute| como opci'on en |\usepackage|.
%
% \item[$\diamond$] |\es@enumerate{<leveli>}|%
%      |{<levelii>}{<leveliii>}{<leveliv>}|\\[1ex] 
% Cambia los valores preestablecidos por |spanish| para
% |enumerate|. \textit{leveln} consiste en una letra, que
% indica qu'e formato tendr'a el n'umero, seguida
% de cualquier texto. La letra tiene que ser: |1| (ar'abigo),
% |a| (min'uscula \emph{cursiva}\,\footnote{La letra es cursiva
% pero no los signos que le puedan seguir. M'as bien deber'ia
% decirse destacada, ya que se usa |\string\emph|.
%  V'ease \DTL{11}.}), |A| (versal),
% |i| (romano \emph{versalita}), |I| (romano versal) o
% finalmente |o| (ordinal\,\footnote{Lo normal es no a'nadir ning'un 
% signo tras ordinal.}).
%
% Esta orden no est'a pensada para hacer cambios elaborados, sino
% s—lo meros reajustes. Los valores preestablecidos 
% equivalen a
%\begin{verbatim}
% \es@enumerate{1.}{a)}{1)}{a$'$)}
%\end{verbatim}
%
% \item[$\diamond$] |\es@itemize{<leveli>}|%
%      |{<levelii>}{<leveliii>}{<leveliv>}|\\[1ex] 
% Lo mismo para |itemize|, s'olo que los argumentos se
% usan de forma literal. Los valores originales de \LaTeX{} son
% similares a
%\begin{verbatim}
% \es@itemize{\textbullet}{\normalfont\bfseries\textendash}
%    {\textasteriskcentered}{\textperiodcentered}
%\end{verbatim}
%
% \item[$\diamond$] |\es@operators|\\[1ex]
% Todo lo relativo a operadores se cancela con
%\begin{verbatim}
% \let\es@operators\relax
%\end{verbatim}
% Es buena idea incluirlo si no se van a usar, ya que ahorra memoria.
%
% \end{itemize}
%
% Otros ajustes 'utiles en este contexto son |\spanishoperators|,
% |\selectspanish| y |\deactivatequoting|.
%
%
% Recordemos que todos los cambios
% operados desde este archivo restan compatibilidad al
% documento, por lo que si se distribuye conviene adjuntarlo
% con el entorno |filecontents|.
%
% \subsection{Otros cambios}
% 
% \begin{itemize}
% 
% \item La orden |\addto| permite
% cambiar alguna de las convenciones internas. Esto resulta
% interesante con las traducciones, ya que las
% formas proporcionadas pueden no ser las deseadas.
% Para ello es necesario que |spanish| no est'e seleccionado.
% Por ejemplo, para cambiar \emph{'Indice de figuras} por
% \emph{Lista de figuras}:
%\begin{verbatim}
% \addto\captionsspanish{%
%   \def\listfigurename{Lista de figuras}}
%\end{verbatim}
%
% \item Para volver a eliminar la sangr'ia tras secci'on:
%\begin{verbatim}
% \def\@afterindentfalse{\let\if@afterindent\iffalse}
% \@afterindentfalse
%\end{verbatim}
%
% \item Para que |\roman| proporcione n'umeros romanos en
% min'uscula, seg'un la forma inglesa:
%\begin{verbatim}
% \def\@roman#1{\romannumeral #1}
%\end{verbatim}
%
% \item
% Los extras se encuentran organizados en varios grupos: 
% |\textspanish|, |\mathspanish|,
% |\shorthandsspanish| y |\layoutspanish|.  Pueden
% cancelarse con:
%\begin{verbatim}
%  \renewcommand\textspanish{}
%\end{verbatim}
% 
% \end{itemize}
%
% \section{Formatos distintos a \LaTeXe}
% 
% El estilo |spanish| funciona con
% otros formatos, aunque con un subconjunto de las funciones
% disponibles en \LaTeXe{}. Con Plain hay que hacer
%\begin{verbatim}
% \input spanish.sty
%\end{verbatim}
% y con \LaTeX2.09, incluir |spanish| entre las opciones de estilo.
% 
% Se incluyen:  traducciones, casi todas las abreviaciones, coma 
% decimal, utilidades para divisi'on de palabras, ordinales en una
% versi'on simplificada (y no muy elegante), funciones matem'aticas,
% entrecomillados en \LaTeX2.09, |\'i| y espaciado.
% La selecci'on de la lengua es inmediata al cargar el archivo.
% 
% En cambio no est'an disponibles: entrecomillados en Plain, 
% |\lsc| ni las adaptaciones proporcionadas por |\layoutspanish|.
% 
% A partir de esta versi'on, el archivo de configuraci'on
% se lee siempre, por lo que aquellos que ya est'an escritos 
% espec'ificamante para \LaTeXe{} pueden presentar problemas si se usan
% con otros formatos. Si las versiones que se usan no son muy antiguas,
% se puede comprobar el formato con la variable |\fmtname| que vale
% |LaTeX2e| o |plain|. Por ejemplo
%\begin{verbatim}
% \def\temp{LaTeX2e}
% \ifx\temp\fmtname
%   ...
% \fi
%\end{verbatim}
% 
% \section{Bibliograf'ias}
% 
% El archivo |esbst.tex| que se genera con \textsf{spanish}
% sirve para que la utilidad \textsf{custom-bib} trabaje en
% conjunci'on con \babel. Define una serie de 'ordenes, que pueden
% consultarse en el propio archivo, que se utilizan para las
% traducciones si se selecciona |babel| como lengua al generar un
% estilo bibliogr'afico. 
% 
% \section{Incompatibilidades con versiones anteriores}
% 
% \begin{itemize}
% 
% \item En versiones de cierta antig"uedad, el actual |activeacute| 
% estaba siempre impl'icito, por lo que ahora la abreviaci'on no se
% reconoce y en su lugar aparecen ap'ostrofos. 
% 
% \item El t'ermino correspondiente a |\tablename| estaba traducido
% incorrectamente como <<Tabla>>. Como quiera que <<tabla>> es la
% palabra con que puede aparecer en el propio texto, o bien puede
% haber un art'iculo femenino ante |\tablename|, puede reponerse el
% valor antiguo con:
%\begin{verbatim}
% \addto\captionsspanish{%   
%   \def\tablename{Tabla}%
%   \def\listtablename{\'Indice de tablas}}
%\end{verbatim}
%
% \end{itemize}
%
% \section*{Referencias}
% \addcontentsline{toc}{section}{Referencias}
%
% \begingroup
% \small
% \leftskip1.5cm \parindent-1.5cm
%
% \makebox[1.5cm][l]{\lsc{DRAE}}\textit{Diccionario de la Academia
%    Espa'nola}, Madrid, Espasa-Calpe, 21"a ed., 1992.
%
% \makebox[1.5cm][l]{\lsc{DOT}}Jos'e Mart'inez de Sousa,
%   \textit{Diccionario de ortograf'ia t'ecnica}, 
%   Madrid, Germ'an S'anchez Ruip'erez/Pir'amide, 1987.
%   (Biblioteca del libro.)
%
% \makebox[1.5cm][l]{\lsc{DTL}}Jos'e Mart'inez de Sousa,
%   \textit{Diccionario de tipograf'ia y del libro}, 
%   Madrid, Paraninfo, 3"a ed., 1992.
%
% \makebox[1.5cm][l]{\lsc{MEA}}Jos'e Mart'inez de Sousa,
%   \textit{Manual de edici'on y autoedici'on}, 
%   Madrid, Pir'amide, 1994.
%
% \leftskip0pt \parindent0pt \vspace{6pt}
%
% {\itshape
% Como normalmente el primer contacto con \TeX{} es por una tesis,
% cito libros que
% est'an relacionados con el tema a los que he tenido acceso.
% Est'an por orden de preferencia; en  particular, los dos 'ultimos me
% parecen poco recomendables.}
% 
% \parindent-1.5pc \leftskip1.5pc  \vspace{3pt}
%
%   Umberto Eco,
%   \textit{C'omo se hace una tesis}, 
%   Barcelona, Gedisa, 1982.
%
%   Antonia Rigo Arnavat y Gabriel Genesc\`a Due'nas,
%   \textit{C'omo presentar una tesis y trabajos de investigaci'on},
%   Barcelona, Eumo-Octaedro, 2002.
%
%   Prudenci Comes,
%   \textit{Gu'ia para la redacci'on y presentaci'on de trabajos
%   cient'ificos, informes t'ecnicos y tesinas}, 
%   Barcelona, Oikos-Tau, 1971.
%
%   Javier Lasso de la Vega,
%   \textit{C'omo se hace una tesis doctoral}, 
%   Madrid, Fundacion Universitaria Espa~nola, 1977.
%
%   Jos'e Romera Castillo y otros,
%   \textit{Manual de estilo}, 
%   Madrid, Universidad Nacional de Educaci'on a Distancia, 1996.
%
%   Restituto Sierra Bravo,
%   \textit{Tesis doctorales y trabajos de investigaci'on cient'ifica}, 
%   Madrid, Paraninfo, 1986.
%
% \parindent0pc \leftskip0pc \vspace{6pt}
%
% {\itshape
% Para otras cuestiones tipogr'aficas, las referencias
% usadas son, entre otras:}
%
% \parindent-1.5pc \leftskip1.5pc \vspace{3pt}
% 
%   Javier Bezos,
%   \textit{Tipograf'ia espa'nola con \TeX}, documento electr'onico
%   disponible en 
%   \textsf{http://perso.wanadoo.es/jbezos/tipografia.html}. 
%
%   Ra'ul Cabanes Mart'inez,
%   <<El sistema internacional de unidades: ese desconocido>>,
%   \textit{Mundo Electr'onico}, n"o 142, 1984, p'ags.~119~-125.
%
%   \textit{The Chicago Manual of Style}, Chicago, University of
%   Chicago Press, 14"a~ed., 1993, esp.~p'ags.~333~-335.
%
%   Jos'e Fern'andez Castillo,
%   \textit{Normas para correctores y compositores tip'ografos},
%   Madrid, Espasa-Calpe, 1959.
%
%   IRANOR [AENOR], Normas \lsc{UNE} n'umeros 5010 (<<Signos 
%   matem'aticos>>), 5028 (<<S'imbolos 
%   geom'etricos>>) y 5029 (<<Impresi'on de los
%   s'imbolos de magnitudes y unidades y de los n'umeros>>). 
%   [Obsoletas.]
%
%   Real Academia Espa'nola,
%   \textit{Esbozo de una nueva gram'atica de la
%   lengua espa'nola}, Madrid, Espasa-Calpe, 1973.
%   
%   V.\ Mart'inez Sicluna,
%   \textit{Teor'ia y pr'actica de la tipograf'ia},
%   Barcelona, Gustavo Gili, 1945.
%
%   Jos'e Mart'inez de Sousa,
%   \textit{Diccionario de ortograf'ia de la lengua espa'nola},
%   Madrid, Paraninfo, 1996.
%
%   Juan Mart'inez Val, \textit{Tipograf'ia pr'actica}, Madrid,
%   Laberinto, 2002.
%
%   Juan Jos'e Morato, \textit{Gu'ia pr'actica del compositor 
%   tipogr'afico}, Madrid, Hernando, 2"a ed., 1908 (1"a ed., 1900,
%   3"a ed., 1933).
%
%   Marion Neubauer,
%   <<Feinheiten bei wissenschaftlichen Publikationen>>,
%   \textit{Die \TeX nisches Kom\"odie},  parte I, vol. 8, n"o 4, 1996,
%   p'ags. 23-40; parte II, vol. 9, n"o 1, 1997, p'ags.~25~-44.
%
%   Jos'e Polo,
%   \textit{Ortograf'ia y ciencia del lenguaje}, Madrid, Paraninfo, 
%   1974.
%
%   Pedro Valle,
%   \textit{C'omo corregir sin ofender}, Buenos Aires, Lumen, 1998.
%
%   Hugh C. Wolfe, <<S'imbolos, unidades y nomenclatura>>, 
%   \textit{Enciclopedia de F'isica}, dir. Rita G. Lerner y George L. 
%   Trigg, Madrid, Alianza, 1987, t.~2, p'ags.~1423~-1451.
%
% \endgroup
%
% \end{userdtx}
% 
% \begin{userdrv}
%^^A  ======= Beginning of text as typeset by user.drv =========
%
% \GetFileInfo{spanish.dtx}
%
% \section{The Spanish language}
%
% The file \file{\filename}\footnote{The file described in this
% section has version number \fileversion\ and was last revised on
% \filedate. The original author from v4.0 on is Javier
% Bezos. Previous versions were by Julio S\'anchez.} defines all the
% language-specific macros for the Spanish language.
% 
% Custumization is made following mainly the
% books on the subject by Jos\'e Mart\'\i nez de Sousa. 
% By typesetting |spanish.dtx| directly you will get the full
% documentation (regrettably is in Spanish only, but it is
% pretty long). References in this part refers to that document.
% There are several aditional features documented in the Spanish
% version only.
% 
% This style provides:
% \begin{itemize}
% \item Translations following the International \LaTeX{} 
% conventions, as well as |\today|.
% 
% \item Shorthands listed in Table~\ref{tab:spanish-quote-def}.
% Examples in subsection~3.4 are illustrative. Note that
% |"~| has a special meaning in \textsf{spanish}
% different to other languages, and is used mainly in linguistic
% contexts.
% 
% \begin{table}[htb]
% \centering
% \begin{tabular}{lp{8cm}}
% |'a|      & acute accented a. Also for: e, i, o, u (both
%             lowercase and uppercase).\\
% |'n|      & \~n (also uppercase).\\
% |~n|      & \~n (also uppercase). Deprecated.\\
% |"u|      & \"u (also uppercase).\\
% |"a|      & Ordinal numbers (also  |"A|, |"o|, |"O|).\\
% |"c|      & \c{c} (also uppercase).\\
% |"rr|     & rr, but -r when hyphenated\\
% |"-|      & Like |\-|, but allowing hyphenation in the rest 
%             the word.\\
% |"=|      & Like |-|, but allowing hyphenation in the rest 
%             the word.\\
% |"~|      & The hyphen is repeated at the very beginning of 
%             the next line if the word is hyphenated at this
%             point.\\
% |""|      & Like |"-| but producing no hyphen sign.\\
% |~-|      & Like |-| but with no break after the hyphen. Also for:
%             en-dashes (|~--|) and em-dashes (|~---|). \\
% |"/|      & A slash slightly lowered, if necessary.\\
% \verb+"|+ & disable ligatures at this point.\\
% |"<|      & Left guillemets.\\
% |">|      & Right guillemets.\\
% |<<|      & |\begin{quoting}|. (See text.)\\
% |>>|      & |\end{quoting}|. (See text.)
% \end{tabular}
% \caption{Extra definitions made by file \file{spanish.ldf}}
% \label{tab:spanish-quote-def}
% \end{table}
% 
% \item |\deactivatetilden| deactivates the |~n| and |~N| shorthands.
% 
% \item \emph{In math mode} a dot followed by a digit is replaced
% by a decimal comma.
% 
% \item Spanish ordinals and abbeviations with |\sptext|
% as, for instance, |1\sptext{er}|. The
% preceptive dot is included.
% 
% \item Accented functions: l\'\i m, m\'ax, m\'\i n, m\'od. You may
% globally omit the accents with |\unaccentedoperators|. Spaced
% functions: arc\,cos, etc. You may globally kill that space with
% |\unspacedoperators|. |\dotlessi| is provided for use in math mode.
% 
% \item A |quoting| environment and a related pair of shorthands |<<|
% and |>>|. The command
% |\deactivatequoting| deactivates these shorthand in case 
% you want to use |<| and |>| in some AMS commands and numerical
% comparisons.
% 
% \item The command |\selectspanish| selects the |spanish| language
% \emph{and} its shorthands. (Intended for the preamble.)
% 
% \item |\frenchspacing| is used.
% 
% \item Ellipsis are best typed |...| or, within a sentence, |\...|
% 
% \item There is a small space before |\%|.
% 
% \item |\lsc| provides lowercase small caps. (See subsection~3.10.)
% \end{itemize}
% 
% Just in case |spanish| is the main language, the group 
% |\layoutspanish| is activated, which modifies the standard
% classes through the whole document (it cannot be deactivated)
% in the following way:
% \begin{itemize}
% \item Both |enumerate| and |itemize| are adapted to Spanish rules.
% 
% \item Both |\alph| and |\Alph| include \textit{\~n} after \textit{n}.
% 
% \item Symbol footmarks are one, two, three, etc., asteriscs.
% 
% \item |OT1| guillemets are generated with two |lasy| symbols instead
% of small |\ll| and |\gg|.
% 
% \item |\roman| is redefined to write small caps roman numerals, since
% lowercase roman numerals are not allowed. However, \textit{MakeIndex}
% rejects entries containing pages in that format. The |.idx| file must
% be preprocessed if the document has this kind of entries with
% the provided |romanidx.tex| tool---just \TeX{} it and follow the
% instructions.
% 
% \item There is a dot after section numbers in titles and toc.
% \end{itemize}
% This group is ignored if you write |\selectspanish*| in the
% preamble.
% 
% Some additional commands are provided to be used in the
% |spanish.cfg| file:
% \begin{itemize}
% \item With |\es@activeacute| acute accents are always active,
% overriding the default \textsf{babel} behaviour.
% 
% \item |\es@enumerate| sets the labels to be used by |enumerate|. The
% same applies to |\es@itemize| and |itemize|.
% 
% \item |\es@operators| stores the operator commands.
% All of them are canceled with
%\begin{verbatim}
% \let\es@operators\relax
%\end{verbatim}
% \end{itemize}
% The commands |\deactivatequoting|, |\deactivatetilden| and
% |\selectspanish| may be used in this file, too.
% 
% A subset of these commands is provided for
% use in Plain \TeX{} (with |\input spanish.sty|).
%
% \end{userdrv}
% 
%\StopEventually{}
%
%^^A ========== End of manual ===============
%
% \begin{userdtx}
% 
% \section{The Code}
% 
% \end{userdtx}
% 
% \begin{userdrv}
% 
% \subsection{The Code}
% 
% \end{userdrv}
% 
% \changes{spanish~4.0f}{99/04/12}{Beginning of changes to follow the
%      doc conventions}
% \changes{spanish~4.0d}{99/03/26}{Changed some parts for babel.ins
%      to generate the files}
% \changes{spanish~4.0e}{99/04/10}{Adapted to 3.6k with some minor
%      changes, since most of features intended for 3.7 are included
%      now}
% \changes{spanish~4.0d}{99/03/26}{Restored the test for \cs{LdfInit}.
%     It is redundant for LaTeX209 but not for plain}
% \changes{spanish~4.0d}{99/03/29}{With a shoddy piece of work, the
%     plain variant works (at last). Instead of inputting
%    \file{babel.def} we input \file{switch.def}. To be changed, I
%    think, since now \file{plain.def} is read twice} 
% \changes{spanish~4.0e}{99/04/10}{Replaced all instances of 
%     allowhyphens by \cs{bbl@allowhyphens}}
% \changes{spanish~4.0g}{99/05/05}{The code introduced the 99/03/29
%     (see above) has been removed}
% \changes{spanish~4.1a}{99/12/26}{Added \cs{spanishdecimal}.}
% \changes{spanish~4.1b}{00/06/16}{Added the Spanish et sign.} 
% \changes{spanish~4.1a}{99/12/29}{Modified \cs{@marginparreset}
%     in order to kill the continuing guillemets.}
% \changes{spanish~4.1a}{00/01/09}{\cs{sptext} protected.} 
%
%    This file provides definition for both \LaTeXe{} and non
%    \LaTeXe{} formats.
%
%    Identify the |ldf| file.
%    
% \changes{spanish~4.0g}{99/05/05}{Replaced \cs{ProvidesFile}
%    by \cs{ProvidesLanguage}}
% \changes{spanish~4.0j}{99/09/18}{Renamed spanish.tex as spanish.lpf}
%
%    \begin{macrocode}
%<*code>
\ProvidesLanguage{spanish.ldf}
       [2003/11/18 v4.2b Spanish support from the babel system]
%    \end{macrocode}
%
%    The macro |\LdfInit| takes care of preventing that this file is
%    loaded more than once, checking the category code of the
%    \texttt{@} sign, etc.
%    When this file is read as an option, i.e. by the |\usepackage|
%    command, \texttt{spanish} will be an `unknown' language in which
%    case we have to make it known.  So we check for the existence of
%    |\l@spanish| to see whether we have to do something here.
%
% \changes{spanish~4.0a}{98/09/23}{All files renamed from spanishb
%      to spanish as requested by the Spanish TeX list, since this
%      style should replace the current Spanish option. Julio
%      Sanchez gave up supporting his files and he has withdrawn
%      from his TeX activities. The last distributed version as
%      spanishb was 1.1.}
% \changes{spanish~4.0a}{98/09/12}{Introduced \cs{LdfInit} setup}
%    \begin{macrocode}
\LdfInit{spanish}\captionsspanish
\ifx\undefined\l@spanish
  \@nopatterns{Spanish}
  \adddialect\l@spanish0
\fi
%    \end{macrocode}
%
%    We define some tools which will be used in that style file:
%    (1) we make sure that |~| is active, (2) |\es@delayed| delays
%    the expansion of the code in conditionals (in fact, quite similar
%    to |\bbl@afterfi|).
%
% \changes{spanish~4.0a}{98/09/12}{Test for 209 moved from sty}
% \changes{spanish~4.1a}{99/12/01}{Introduced the \cs{es@delayed}
%    mechanism for ``conflictive'' conditionals.}
%    \begin{macrocode}
\edef\es@savedcatcodes{%
  \catcode`\noexpand\~=\the\catcode`\~
  \catcode`\noexpand\"=\the\catcode`\"}
\catcode`\~=\active
\catcode`\"=12
\long\def\es@delayed#1\then#2\else#3\fi{%
  #1%
    \expandafter\@firstoftwo
  \else
    \expandafter\@secondoftwo
  \fi
  {#2}{#3}}
%    \end{macrocode}
%
%    Two tests are introduced. The first one tells us if the format is
%    \LaTeXe{}, and the second one if the format is plain or any other.
%    If both are false, the format is \LaTeX2.09{}.
%
%    \begin{macrocode}
\es@delayed
\expandafter\ifx\csname documentclass\endcsname\relax\then
  \let\ifes@LaTeXe\iffalse
\else
  \let\ifes@LaTeXe\iftrue
\fi
\es@delayed
\expandafter\ifx\csname newenvironment\endcsname\relax\then
  \let\ifes@plain\iftrue
\else
  \let\ifes@plain\iffalse
\fi
%    \end{macrocode}
%
% Translations for captions.
%
% \changes{spanishb~1.1}{98/03/17}{Corrected \cs{indexname} to the
%    promised text}
% \changes{spanish~4.1c}{00/10/04}{Added \cs{glossaryname}}
%    \begin{macrocode}
\addto\captionsspanish{%
  \def\prefacename{Prefacio}%
  \def\refname{Referencias}%
  \def\abstractname{Resumen}%
  \def\bibname{Bibliograf\'{\i}a}%
  \def\chaptername{Cap\'{\i}tulo}%
  \def\appendixname{Ap\'endice}%
  \def\listfigurename{\'Indice de figuras}%
  \def\listtablename{\'Indice de cuadros}%
  \def\indexname{\'Indice alfab\'etico}%
  \def\figurename{Figura}%
  \def\tablename{Cuadro}%
  \def\partname{Parte}%
  \def\enclname{Adjunto}%
  \def\ccname{Copia a}%
  \def\headtoname{A}%
  \def\pagename{P\'agina}%
  \def\seename{v\'ease}%
  \def\alsoname{v\'ease tambi\'en}%
  \def\proofname{Demostraci\'on}%
  \def\glossaryname{Glosario}}
  
\expandafter\ifx\csname chapter\endcsname\relax
  \addto\captionsspanish{\def\contentsname{\'Indice}}
\else
  \addto\captionsspanish{\def\contentsname{\'Indice general}}
\fi
%    \end{macrocode}
%
%    And the date.
% \changes{spanish~4.2a}{03/08/08}{Added the mechanism to
%     select \textit{del} or \textit{de}}
%    \begin{macrocode}
\def\datespanish{%
 \def\today{\the\day~de \ifcase\month\or enero\or febrero\or
      marzo\or abril\or mayo\or junio\or julio\or agosto\or
      septiembre\or octubre\or noviembre\or diciembre\fi 
      \ de\ifnum\year>1999\es@yearl\fi~\the\year}}
\def\spanishdatedel{\def\es@yearl{l}}
\def\spanishdatede{\let\es@yearl\@empty}
\spanishdatede
%    \end{macrocode}
%
%    The basic macros to select the language, in the preamble or the
%    config file. Use of |\selectlanguage| should be avoided at this
%    early stage because the active chars are not yet
%    active. |\selectspanish| makes them active.
%
%    \begin{macrocode}
\def\selectspanish{%
  \def\selectspanish{%
    \def\selectspanish{%
      \PackageWarning{spanish}{Extra \string\selectspanish ignored}}%
    \es@select}}

\@onlypreamble\selectspanish

\def\es@select{%
  \let\es@select\@undefined
  \selectlanguage{spanish}%
  \catcode`\"\active\catcode`\~=\active}
%    \end{macrocode}
%
%    Instead of joining all the extras directly in |\extrasspanish|,
%    we subdivide them in three further groups.
% \changes{spanish~4.0a}{99/11/30}{The extras subdivided into three 
%    further groups.}
% \changes{spanish~4.2a}{03/08/08}{The dot is deactitated, too}
%    \begin{macrocode}
\def\extrasspanish{%
  \textspanish
  \mathspanish
  \ifx\shorthandsspanish\@empty
    \spanishdeactivate{."'~<>}%
    \languageshorthands{none}%
  \else
    \shorthandsspanish
  \fi}
\def\noextrasspanish{%
  \ifx\textspanish\@empty\else
    \notextspanish
  \fi
  \ifx\mathspanish\@empty\else
    \nomathspanish
  \fi
  \ifx\shorthandsspanish\@empty\else
    \noshorthandsspanish
  \fi
  \es@reviveshorthands}
%    \end{macrocode}
%
%    And the first of these sub-groups is defined.
%
%    \begin{macrocode}
\addto\textspanish{%
  \babel@save\sptext
  \def\sptext{\protect\es@sptext}}    
%    \end{macrocode}
%
%    The definition of |\sptext| is more elaborated than that of
%     |\textsuperscript|. With uppercase superscript text
%    the scriptscriptsize is used. The mandatory dot is already
%    included. There are two versions, depending on the
%    format.
%
%    \begin{macrocode}
\ifes@LaTeXe   %<<<<<<
  \newcommand\es@sptext[1]{%
    {.\setbox\z@\hbox{8}\dimen@\ht\z@
     \csname S@\f@size\endcsname
     \edef\@tempa{\def\noexpand\@tempc{#1}%
       \lowercase{\def\noexpand\@tempb{#1}}}\@tempa
     \ifx\@tempb\@tempc
       \fontsize\sf@size\z@
       \selectfont
       \advance\dimen@-1.15ex
     \else
       \fontsize\ssf@size\z@
       \selectfont
       \advance\dimen@-1.5ex
     \fi
     \math@fontsfalse\raise\dimen@\hbox{#1}}}
\else          %<<<<<<
  \let\sptextfont\rm
  \newcommand\es@sptext[1]{%
    {.\setbox\z@\hbox{8}\dimen@\ht\z@
     \edef\@tempa{\def\noexpand\@tempc{#1}%
       \lowercase{\def\noexpand\@tempb{#1}}}\@tempa
     \ifx\@tempb\@tempc
       \advance\dimen@-0.75ex
       \raise\dimen@\hbox{$\scriptstyle\sptextfont#1$}%
     \else
       \advance\dimen@-0.8ex
       \raise\dimen@\hbox{$\scriptscriptstyle\sptextfont#1$}%
     \fi}}
\fi            %<<<<<<
%    \end{macrocode}
%
%    Now, lowercase small caps. First, we test if there are actual
%    small caps for the current font. If not, faked small caps are
%    used. The \cs{selectfont} in \cs{es@lsc} could seem redundant,
%    but it's not.
%
% \changes{spanishb~1.1}{98/05/11}{\cs{es@lsc} rewritten to
%       incorporate the procedure so far available in
%       \cs{roman} only}
% \changes{spanish~4.0e}{99/04/10}{Added \cs{leavevmode}}
%    \begin{macrocode}
\ifes@LaTeXe   %<<<<<<
  \addto\textspanish{%
    \babel@save\lsc
    \def\lsc{\protect\es@lsc}}

  \def\es@lsc#1{%
    \leavevmode
    \hbox{\scshape\selectfont
       \expandafter\ifx\csname\f@encoding/\f@family/\f@series
           /n/\f@size\expandafter\endcsname
         \csname\curr@fontshape/\f@size\endcsname
         \csname S@\f@size\endcsname
         \fontsize\sf@size\z@\selectfont
           \PackageInfo{spanish}{Replacing undefined sc font\MessageBreak
                                 shape by faked small caps}%
         \MakeUppercase{#1}%
       \else
         \MakeLowercase{#1}%
       \fi}}
\fi            %<<<<<<
%    \end{macrocode}
%
%    The |quoting| environment. This part is not available
%    in Plain, hence the test. Overriding the default |\everypar| is
%    a bit tricky.
%
%    \begin{macrocode}
\newif\ifes@listquot

\ifes@plain\else %<<<<<<
  \csname newtoks\endcsname\es@quottoks
  \csname newcount\endcsname\es@quotdepth

  \newenvironment{quoting}
   {\leavevmode
    \advance\es@quotdepth1
    \csname lquot\romannumeral\es@quotdepth\endcsname%
    \ifnum\es@quotdepth=\@ne
      \es@listquotfalse
      \let\es@quotpar\everypar
      \let\everypar\es@quottoks
      \everypar\expandafter{\the\es@quotpar}%
      \es@quotpar{\the\everypar
        \ifes@listquot\global\es@listquotfalse\else\es@quotcont\fi}%
    \fi
    \toks@\expandafter{\es@quotcont}%
    \edef\es@quotcont{\the\toks@
       \expandafter\noexpand
       \csname rquot\romannumeral\es@quotdepth\endcsname}}
   {\csname rquot\romannumeral\es@quotdepth\endcsname}

  \def\lquoti{\guillemotleft{}}
  \def\rquoti{\guillemotright{}}
  \def\lquotii{``}
  \def\rquotii{''}
  \def\lquotiii{`}
  \def\rquotiii{'}

  \let\es@quotcont\@empty
%    \end{macrocode}
%
%    If there is a margin par inside quoting, we don't add the
%    quotes. |\es@listqout| stores the quotes to be used before
%    item labels; otherwise they could appear after the labels.
%
%    \begin{macrocode}  
  \addto\@marginparreset{\let\es@quotcont\@empty}

  \def\es@listquot{%
    \csname rquot\romannumeral\es@quotdepth\endcsname
    \global\es@listquottrue}
\fi            %<<<<<<
%    \end{macrocode}
%
%    Now, the |\frenchspacing|, followed by |\...| and |\%|
%
% \changes{spanish~4.0e}{99/04/10}{Added ignorespaces to \cs{es@dots}}
% \changes{spanish~4.1d}{01/09/12}{Now there are two versions of
%    percent sign}
%    \begin{macrocode}
\addto\textspanish{\bbl@frenchspacing}
\addto\notextspanish{\bbl@nonfrenchspacing}

\addto\textspanish{%
  \let\es@save@dot\.%
  \babel@save\.%
  \def\.{\@ifnextchar.{\es@dots}{\es@save@dot}}}

\def\es@dots..{\leavevmode\hbox{...}\spacefactor\@M}

\ifes@LaTeXe   %<<<<<<  
  \addto\textspanish{%
    \let\percentsign\%%
    \babel@save\%%
    \def\%{\unskip\,\percentsign{}}}
\else
  \addto\textspanish{%
    \let\percentsign\%%
    \babel@save\%%
    \def\%{\unskip\ifmmode\,\else$\m@th\,$\fi\percentsign{}}}
\fi
%    \end{macrocode}
%    
%    We follow with the math group.
%    It's not easy to add an accent in an operator.
%    The difficulty is that we must avoid using text (that is,
%     |\mbox|) because we have no control on font and size, and
%    at time we should access |\i|, which is a text
%    command forbidden in math mode. |\dotlessi| must be
%    converted to uppercase if necessary in \LaTeXe. There are
%    two versions, depending on the format.
%
% \changes{spanishb~1.1}{98/04/01}{dotless math i handling
%     rewritten}
% \changes{spanishb~1.1}{98/05/13}{Again rewriten in full. Now
%     that character is accesible as \cs{dotlessi}}
% \changes{spanish~4.0c}{98/12/07}{Moved from its original place below.
%     Decimal values replaced by hex ones.}
% \changes{spanish~4.0k}{99/10/12}{Minor improvementes in
%     \cs{es@dotlessi}. Now it behaves like the dotlessi.sty package}
% \changes{spanish~4.1f}{02/05/17}{\cs{i} not used directly in
%     the upper/lowercase list}
%    \begin{macrocode}
\addto\mathspanish{%
  \babel@save\dotlessi
  \def\dotlessi{\protect\es@dotlessi}}

\let\nomathspanish\relax %% Unused, but called

\ifes@LaTeXe   %<<<<<< 
  \def\es@texti{\i}
  \addto\@uclclist{\dotlessi\es@texti}
\fi            %<<<<<<

\ifes@LaTeXe   %<<<<<<
  \def\es@dotlessi{%
    \ifmmode
      {\ifnum\mathgroup=\m@ne
         \imath
       \else
         \count@\escapechar \escapechar=\m@ne
         \expandafter\expandafter\expandafter
           \split@name\expandafter\string\the\textfont\mathgroup\@nil
         \escapechar=\count@
         \@ifundefined{\f@encoding\string\i}%
           {\edef\f@encoding{\string?}}{}%
         \expandafter\count@\the\csname\f@encoding\string\i\endcsname
         \advance\count@"7000
         \mathchar\count@
       \fi}%
    \else
      \i
    \fi}
\else          %<<<<<<
  \def\es@dotlessi{%
    \ifmmode
      \mathchar"7010
    \else
      \i
    \fi}
\fi            %<<<<<<
%    \end{macrocode}
%
%   The switches for accents and spaces in math.
%
%\changes{spanish~4.0b}{98/11/10}{Added missing \cs{nolimits}}
%\changes{spanish~4.0c}{98/11/30}{Merged \cs{es@op@i} and
%    \cs{es@op@a} into a single command. The (re)defided commands
%    have been changed as suggested by JoseRa Portillo and Juan Luis
%    Varona. Now it conforms the UNE 5010 norm. Code is no
%    longer duplicated--\cs{operator@font} is defined for lplain
%    instead}
%\changes{spanish~4.0c}{98/12/10}{Removed the explicit
%    trigonometric declaration. While some functions are
%    preceptive (sen, tg) some other are optional and
%    defined in \cs{spanishoperators}. This is because there
%    is no norm in Spanish and there is quite a chaos in their
%    form. Restored the forms of v 1.1}
%\changes{spanish~4.0k}{99/10/13}{Restored the \cs{es@op@i}
%    command, because we have to discriminate \cs{dotlessi} and i}
%       
%    \begin{macrocode}
\def\accentedoperators{%
  \def\es@op@ac##1{\acute{##1}}%
  \def\es@op@i{\acute{\dotlessi}}}
\def\unaccentedoperators{%
  \def\es@op@ac##1{##1}%
  \def\es@op@i{i}}
\accentedoperators

\def\spacedoperators{\let\es@op@sp\,}
\def\unspacedoperators{\let\es@op@sp\@empty}
\spacedoperators
%    \end{macrocode}
%
%    The operators are stored in |\es@operators|, which in turn is
%    included in the math group. Since |\operator@font| is
%    defined in \LaTeXe{} only, we defined in the plain variant.
%    
% \changes{spanish~4.0g}{99/05/05}{Restored the assignment of
%    \cs{operator@font} which was misteriously missing}
% \changes{spanish~4.0i}{99/06/21}{Replaced wrong \cs{spanishoperators}
%    by \cs{es@b}}
% \changes{spanish~4.0j}{99/09/17}{Removed an extra line in the lplain
%    option}
% \changes{spanish~4.2a}{03/08/08}{Names including \cs{acute} can be
%    formed}
%
%    \begin{macrocode}
\addto\mathspanish{\es@operators}

\ifes@LaTeXe\else %<<<<<<
  \let\operator@font\rm
  \def\@empty{}
\fi            %<<<<<<

\def\es@operators{%
  \babel@save\lim
  \def\lim{\mathop{\operator@font l\protect\es@op@i m}}%
  \babel@save\limsup
  \def\limsup{\mathop{\operator@font l\es@op@i m\,sup}}%
  \babel@save\liminf
  \def\liminf{\mathop{\operator@font l\es@op@i m\,inf}}%
  \babel@save\max
  \def\max{\mathop{\operator@font m\es@op@ac ax}}%
  \babel@save\inf
  \def\inf{\mathop{\operator@font \protect\es@op@i nf}}%
  \babel@save\min
  \def\min{\mathop{\operator@font m\protect\es@op@i n}}%
  \babel@save\bmod
  \def\bmod{%
    \nonscript\mskip-\medmuskip\mkern5mu%
    \mathbin{\operator@font m\es@op@ac od}\penalty900\mkern5mu%
    \nonscript\mskip-\medmuskip}%
  \babel@save\pmod
  \def\pmod##1{%
    \allowbreak\mkern18mu({\operator@font m\es@op@ac od}\,\,##1)}%
  \def\es@a##1 {%
    \es@delayed
    \if^##1^\then  %  is it empty? do nothing and continue
      \es@a
    \else
      \es@delayed
      \if&##1\then % is it &? do nothing and finish
      \else
        \begingroup
          \let\,\@empty % \, is ignored when def'ing the macro name
          \let\acute\@firstofone % same
          \edef\es@b{\expandafter\noexpand\csname##1\endcsname}%
          \def\,{\noexpand\es@op@sp}%
          \def\acute####1{%
            \if i####1%
              \noexpand\es@op@i
            \else
              \noexpand\es@op@ac####1%
            \fi}%
          \edef\es@a{\endgroup
            \noexpand\babel@save\expandafter\noexpand\es@b
            \def\expandafter\noexpand\es@b{%
                    \mathop{\noexpand\operator@font##1}\nolimits}}%
          \es@a % It restores itself
        \es@a
      \fi
    \fi}%
  \let\es@b\spanishoperators
  \addto\es@b{ }%
  \expandafter\es@a\es@b sen tg arc\,sen arc\,cos arc\,tg & }

\def\spanishoperators{cotg cosec senh tgh}
%    \end{macrocode}
%
%    Now comes the text shorthands. They are grouped in
%    |\shorthandsspanish| and this style performs some
%    operations before the babel shortands are called.
%    The goals are to allow espression like |$a^{x'}$|
%    and to deactivate the shorthands making them of
%    category `other.' After providing a |\'i| shorthand,
%    the new macros are defined.
%    
% \changes{spanish~4.1a}{99/11/30}{Added basic code for
%    spanish shorthands.}
% \changes{spanish~4.1a}{99/12/01}{Debugged and added support
%     for the babel groups.}
% \changes{spanish~4.1c}{00/10/04}{Revised so that it
%    now uses the babel shorthands}
% \changes{spanish~4.2a}{03/08/08}{Deactivation of dot as
%    a special case}
%    \begin{macrocode}
\DeclareTextCompositeCommand{\'}{OT1}{i}{\@tabacckludge'{\i}}

\def\es@set@shorthand#1{%
  \expandafter\edef\csname es@savecat\string#1\endcsname
     {\the\catcode`#1}%
  \initiate@active@char{#1}%
  \catcode`#1=\csname es@savecat\string#1\endcsname\relax
  \expandafter\let\csname es@math\string#1\expandafter\endcsname
    \csname normal@char\string#1\endcsname}

\def\es@use@shorthand{%
  \es@delayed
  \ifx\thepage\relax\then
    \string
  \else{%
    \es@delayed
    \ifx\protect\@unexpandable@protect\then
      \noexpand
    \else
      \es@use@sh
    \fi}%
  \fi}

\def\es@text@sh#1{\csname active@char\string#1\endcsname}
\def\es@math@sh#1{\csname es@math\string#1\endcsname}

\def\es@use@sh{%
  \es@delayed
  \if@safe@actives\then
    \string
  \else{%
    \es@delayed
    \ifmmode\then
      \es@math@sh
    \else
      \es@text@sh
    \fi}%
  \fi}

\gdef\es@activate#1{%
  \begingroup
    \lccode`\~=`#1
    \lowercase{%
  \endgroup
  \def~{\es@use@shorthand~}}}

\def\spanishdeactivate#1{%
  \@tfor\@tempa:=#1\do{\expandafter\es@spdeactivate\@tempa}}

\def\es@spdeactivate#1{%
  \if.#1%
    \mathcode`\.=\es@period@code
  \else
    \begingroup
      \lccode`\~=`#1
      \lowercase{%
    \endgroup
    \expandafter\let\expandafter~%
      \csname normal@char\string#1\endcsname}%
    \catcode`#1\csname es@savecat\string#1\endcsname\relax
  \fi}

\def\es@reviveshorthands{%
  \es@restore{"}\es@restore{~}%
  \es@restore{<}\es@restore{>}%
  \es@quoting}

\def\es@restore#1{%
  \catcode`#1=\active
  \begingroup
    \lccode`\~=`#1
    \lowercase{%
  \endgroup
  \bbl@deactivate{~}}}
%    \end{macrocode}
%
%    But \textsf{spanish} allows two category codes for |'|,
%    so both should be taken into account in \cs{bbl@pr@m@s}.
%    
% \changes{spanish~4.1c}{00/10/03}{Added support for primes
%    which are either `active' or `other'}
%    \begin{macrocode}
\begingroup
\catcode`\'=12
\lccode`~=`' \lccode`'=`'
\lowercase{%
\gdef\bbl@pr@m@s{%
  \es@delayed
  \ifx~\@let@token\then
    \pr@@@s
  \else
    {\es@delayed
     \ifx'\@let@token\then
       \pr@@@s
     \else
       {\es@delayed
        \ifx^\@let@token\then
          \pr@@@t
        \else
          \egroup
        \fi}%
     \fi}%
  \fi}}
\endgroup
%    \end{macrocode}
%
% \changes{spanishb~1.1}{98/05/15}{Rewritten part}
% \changes{spanish~4.0c}{98/12/07}{Optimized a bit}
%
%    \begin{macrocode}
\expandafter\ifx\csname @tabacckludge\endcsname\relax
  \let\es@tak\a
\else
  \let\es@tak\@tabacckludge
\fi

\ifes@LaTeXe   %<<<<<<
  \def\@tabacckludge#1{\expandafter\es@tak\string#1}
  \let\a\@tabacckludge
\else\ifes@plain %<<<<<<
  \def\@tabacckludge#1{\csname\string#1\endcsname}
\else          %<<<<<<
  \def\@tabacckludge#1{\csname a\string#1\endcsname}
\fi\fi         %<<<<<<    

\expandafter\ifx\csname add@accent\endcsname\relax
  \def\add@accent#1#2{\accent#1 #2}
\fi
%    \end{macrocode}
%
%    Instead of redefining |\'|, we redefine the internal
%    macro for the OT1 encoding.
% \changes{spanish~4.1f}{02/05/17}{The spacefactor is restored
%    with the method used in LaTeX2e}
%    \begin{macrocode}
\ifes@LaTeXe   %<<<<<<
  \def\es@accent#1#2#3{%
    \expandafter\@text@composite
    \csname OT1\string#1\endcsname#3\@empty\@text@composite
    {\bbl@allowhyphens\add@accent{#2}{#3}\bbl@allowhyphens
     \setbox\@tempboxa\hbox{#3%
       \global\mathchardef\accent@spacefactor\spacefactor}%
     \spacefactor\accent@spacefactor}}
\else          %<<<<<<
  \def\es@accent#1#2#3{%
    \bbl@allowhyphens\add@accent{#2}{#3}\bbl@allowhyphens
    \spacefactor\sfcode`#3 }
\fi            %<<<<<<
%    \end{macrocode}
%
%    The shorthands are activated in the aux file. Now, we begin
%    the shorthands group.
%
% \changes{spanish~4.0j}{99/09/15}{Added shorthands for \cs{protect}
%    following active chars. This way, they work in headers}
% \changes{spanish~4.0l}{99/11/13}{Added the \cs{es@activate}
%    command, which makes the shorthands more robust in math mode.
%    In particular, any of them may be followed by a closing brace}
%    \begin{macrocode}
\addto\shorthandsspanish{\languageshorthands{spanish}}
\let\noshorthandsspanish\relax
%    \end{macrocode}
%
%    First, decimal comma.
%    
% \changes{spanish~4.1c}{00/10/03}{Removed an unnecessary macro.}
%    \begin{macrocode}
\def\spanishdecimal#1{\def\es@decimal{{#1}}}
\def\decimalcomma{\spanishdecimal{,}}
\def\decimalpoint{\spanishdecimal{.}}
\decimalcomma

\es@set@shorthand{.}

\@namedef{es@math\string.}{%
  \@ifnextchar\egroup
    {\mathchar\es@period@code\relax}%
    {\es@text@sh.}}

\declare@shorthand{system}{.}{\mathchar\es@period@code\relax}
%    \end{macrocode}
%
% \changes{spanish~4.0a}{98/09/10}{After the . is activated, it is
%    redefined to avoid errors if followed by a closing brace.
%    Changed \cs{edef} by \cs{mathchardef}. Use
%    \cs{babel@savevariable}instead of \cs{noextrasspanish}.}
% \changes{spanish~4.0e}{99/04/10}{The catcode is restored in
%    the aux file, too}
%    \begin{macrocode}
\addto\shorthandsspanish{%
  \mathchardef\es@period@code\the\mathcode`\.%
  \babel@savevariable{\mathcode`\.}%
  \mathcode`\.="8000 %
  \es@activate{.}}

\AtBeginDocument{%
  \catcode`\.=12
  \if@filesw
    \immediate\write\@mainaux{%
    \string\catcode`\string\.=12}%
  \fi}

\declare@shorthand{spanish}{.1}{\es@decimal1}
\declare@shorthand{spanish}{.2}{\es@decimal2}
\declare@shorthand{spanish}{.3}{\es@decimal3}
\declare@shorthand{spanish}{.4}{\es@decimal4}
\declare@shorthand{spanish}{.5}{\es@decimal5}
\declare@shorthand{spanish}{.6}{\es@decimal6}
\declare@shorthand{spanish}{.7}{\es@decimal7}
\declare@shorthand{spanish}{.8}{\es@decimal8}
\declare@shorthand{spanish}{.9}{\es@decimal9}
\declare@shorthand{spanish}{.0}{\es@decimal0}
%    \end{macrocode}
%
%     Now accents and tools
%
% \changes{spanish~4.0d}{99/03/26}{Removed the tilde settings
%   because they are included in babel.def}
% \changes{spanish~4.0b}{98/10/02}{Introduced \cs{es@umlaut} to allow
%   further division in words containing g\"u}
% \changes{spanish~4.0c}{98/12/02}{Added missing space at the end
%   of \cs{es@umlaut}}
%    \begin{macrocode}
\es@set@shorthand{"}
\def\es@umlaut#1{%
  \bbl@allowhyphens\add@accent{127}#1\bbl@allowhyphens
  \spacefactor\sfcode`#1 }
%    \end{macrocode}
%
%    We override the default |"| of babel, intended for german.
%
%    \begin{macrocode}
\ifes@LaTeXe   %<<<<<<
  \addto\shorthandsspanish{%
    \es@activate{"}%
    \es@activate{~}%
    \babel@save\bbl@umlauta
    \let\bbl@umlauta\es@umlaut
    \expandafter\babel@save\csname OT1\string\~\endcsname
    \expandafter\def\csname OT1\string\~\endcsname{\es@accent\~{126}}%
    \expandafter\babel@save\csname OT1\string\'\endcsname
    \expandafter\def\csname OT1\string\'\endcsname{\es@accent\'{19}}}
\else          %<<<<<<
  \addto\shorthandsspanish{%
    \es@activate{"}%
    \es@activate{~}%
    \babel@save\bbl@umlauta
    \let\bbl@umlauta\es@umlaut
    \babel@save\~%
    \def\~{\es@accent\~{126}}%
    \babel@save\'%
    \def\'#1{\if#1i\es@accent\'{19}\i\else\es@accent\'{19}{#1}\fi}}
\fi            %<<<<<<
%    \end{macrocode}
% \changes{spanish~4.0c}{98/11/19}{Subtituted
%    \cs{char}\cs{hyphenchar}\cs{font} for some instances of -}
% \changes{spanish~4.0h}{98/06/06}{Added \cs{deactivatetilden}}
% \changes{spanish~4.2a}{03/08/08}{Added raised ?` and !`}
% \changes{spanish~4.2b}{03/09/12}{Added er and ER}
%    \begin{macrocode}
\declare@shorthand{spanish}{"a}{\protect\es@sptext{a}}
\declare@shorthand{spanish}{"A}{\protect\es@sptext{A}}
\declare@shorthand{spanish}{"o}{\protect\es@sptext{o}}
\declare@shorthand{spanish}{"O}{\protect\es@sptext{O}}
\declare@shorthand{spanish}{"e}{\protect\es@sptext@r{e}}
\declare@shorthand{spanish}{"E}{\protect\es@sptext@r{E}}

\def\es@sptext@r#1#2{\es@sptext{#1#2}}

\declare@shorthand{spanish}{"u}{\"u}
\declare@shorthand{spanish}{"U}{\"U}

\declare@shorthand{spanish}{"c}{\c{c}}
\declare@shorthand{spanish}{"C}{\c{C}}

\declare@shorthand{spanish}{"<}{\guillemotleft{}}
\declare@shorthand{spanish}{">}{\guillemotright{}}
\declare@shorthand{spanish}{"-}{\bbl@allowhyphens\-\bbl@allowhyphens}
\declare@shorthand{spanish}{"=}%
  {\bbl@allowhyphens\char\hyphenchar\font\hskip\z@skip}
\declare@shorthand{spanish}{"~}
  {\bbl@allowhyphens\discretionary{\char\hyphenchar\font}%
       {\char\hyphenchar\font}{\char\hyphenchar\font}\bbl@allowhyphens}
\declare@shorthand{spanish}{"r}
  {\bbl@allowhyphens\discretionary{\char\hyphenchar\font}%
       {}{r}\bbl@allowhyphens}
\declare@shorthand{spanish}{"R}
  {\bbl@allowhyphens\discretionary{\char\hyphenchar\font}%
       {}{R}\bbl@allowhyphens}
\declare@shorthand{spanish}{"y}
  {\@ifundefined{scalebox}%
     {\ensuremath{\tau}}%
     {\raisebox{1ex}{\scalebox{-1}{\resizebox{.45em}{1ex}{2}}}}}
\declare@shorthand{spanish}{""}{\hskip\z@skip}
\declare@shorthand{spanish}{"/}
  {\setbox\z@\hbox{/}%
   \dimen@\ht\z@
   \advance\dimen@-1ex
   \advance\dimen@\dp\z@
   \dimen@.31\dimen@
   \advance\dimen@-\dp\z@
   \ifdim\dimen@>0pt
     \kern.01em\lower\dimen@\box\z@\kern.03em
   \else
     \box\z@
   \fi}
\declare@shorthand{spanish}{"?}
  {\setbox\z@\hbox{?`}%
   \leavevmode\raise\dp\z@\box\z@}
\declare@shorthand{spanish}{"!}
  {\setbox\z@\hbox{!`}%
   \leavevmode\raise\dp\z@\box\z@}

\es@set@shorthand{~}
\declare@shorthand{spanish}{~n}{\~n}
\declare@shorthand{spanish}{~N}{\~N}
\declare@shorthand{spanish}{~-}{%
  \leavevmode
  \bgroup
  \let\@sptoken\es@dashes  % This assignation changes the
  \@ifnextchar-%             \@ifnextchar behaviour
    {\es@dashes}%
    {\hbox{\char\hyphenchar\font}\egroup}}
\def\es@dashes-{%
  \@ifnextchar-%
    {\bbl@allowhyphens\hbox{---}\bbl@allowhyphens\egroup\@gobble}%
    {\bbl@allowhyphens\hbox{--}\bbl@allowhyphens\egroup}}

\def\deactivatetilden{%
  \expandafter\let\csname spanish@sh@\string~@n@\endcsname\relax
  \expandafter\let\csname spanish@sh@\string~@N@\endcsname\relax}
%    \end{macrocode}
%
%    The shorthands for |quoting|.
%
% \changes{spanish~4.1d}{01/09/10}{Disabled if in xmltex}
%    \begin{macrocode}
\expandafter\ifx\csname XML@catcodes\endcsname\relax
  \addto\es@select{%
    \catcode`\<\active\catcode`\>=\active
    \es@quoting}

  \es@set@shorthand{<}
  \es@set@shorthand{>}

  \declare@shorthand{system}{<}{\csname normal@char\string<\endcsname}
  \declare@shorthand{system}{>}{\csname normal@char\string>\endcsname}

  \addto\shorthandsspanish{%
    \es@activate{<}%
    \es@activate{>}}
%    \end{macrocode}
%
% \changes{spanish~4.0e}{99/04/10}{\cs{es@quoting} is written to the
%     aux file, too}
%    \begin{macrocode}
  \ifes@LaTeXe   %<<<<<<
    \AtBeginDocument{%
      \es@quoting
      \if@filesw
        \immediate\write\@mainaux{\string\es@quoting}%
      \fi}%
  \fi            %<<<<<<

  \def\activatequoting{%
    \catcode`>=\active \catcode`<=\active
    \let\es@quoting\activatequoting}
  \def\deactivatequoting{%
    \catcode`>=12 \catcode`<=12
    \let\es@quoting\deactivatequoting}

  \declare@shorthand{spanish}{<<}{\begin{quoting}}
  \declare@shorthand{spanish}{>>}{\end{quoting}}
\fi

\let\es@quoting\relax
\let\deactivatequoting\relax
\let\activatequoting\relax
%    \end{macrocode}
%
%    The acute accents are stored in a macro. If |activeacute| was set
%    as an option it's executed. If not is not deleted for a possible
%    later use in the |cfg| file. In non \LaTeXe{} formats is always
%    executed.
%    
% \changes{spanish~4.0l}{99/11/12}{We make a preevaluation of acute;
%     in math mode, the shorthand mechanism is bypassed. That's done
%     *after* the test of the protection status.}
%    \begin{macrocode}
\def\es@activeacute{%
  \es@set@shorthand{'}%
  \addto\shorthandsspanish{\es@activate{'}}%
  \addto\es@reviveshorthands{\es@restore{'}}%
  \addto\es@select{\catcode`'=\active}%
  \declare@shorthand{spanish}{'a}{\@tabacckludge'a}%
  \declare@shorthand{spanish}{'A}{\@tabacckludge'A}%
  \declare@shorthand{spanish}{'e}{\@tabacckludge'e}%
  \declare@shorthand{spanish}{'E}{\@tabacckludge'E}%
  \declare@shorthand{spanish}{'i}{\@tabacckludge'i}%
  \declare@shorthand{spanish}{'I}{\@tabacckludge'I}%
  \declare@shorthand{spanish}{'o}{\@tabacckludge'o}%
  \declare@shorthand{spanish}{'O}{\@tabacckludge'O}%
  \declare@shorthand{spanish}{'u}{\@tabacckludge'u}%
  \declare@shorthand{spanish}{'U}{\@tabacckludge'U}%
  \declare@shorthand{spanish}{'n}{\~n}%
  \declare@shorthand{spanish}{'N}{\~N}%
  \declare@shorthand{spanish}{''}{\textquotedblright}%
  \let\es@activeacute\relax}

\ifes@LaTeXe   %<<<<<<
  \@ifpackagewith{babel}{activeacute}{\es@activeacute}{}
\else          %<<<<<<
  \es@activeacute
\fi            %<<<<<<%
%    \end{macrocode}
%
%    And the customization. By default these macros only
%    store the values and do nothing.
%
%    \begin{macrocode}
\def\es@enumerate#1#2#3#4{%
  \def\es@enum{{#1}{#2}{#3}{#4}}}

\def\es@itemize#1#2#3#4{%
  \def\es@item{{#1}{#2}{#3}{#4}}}
%    \end{macrocode}
%    
%    The part formerly in the |.lld| file comes here. It performs
%    layout adaptation of \LaTeX{} to ``orthodox'' Spanish rules.
% \changes{spanish~4.1c}{00/09/30}{The box used in itemize made
%    slightly smaller (.1ex).}
% \changes{spanish~4.1d}{02/01/25}{Removed extra \cs{enspace}
%    which formatted differently \cs{item} with brackets.}
% \changes{spanish~4.2a}{03/08/08}{Added \cs{spanishsignitems}}
% \changes{spanish~4.2a}{03/08/08}{Mispaced \cs{es@enumerate}
%     and \cs{es@itemize} moved into \cs{layoutspanish}}
% \changes{spanish~4.2b}{03/09/12}{If an entry toc has an
%      empty \cs{numberline} the dot is not printed}
%    \begin{macrocode}
\ifes@LaTeXe   %<<<<<<

\es@enumerate{1.}{a)}{1)}{a$'$}
\def\spanishdashitems{\es@itemize{---}{---}{---}{---}}
\def\spanishsymbitems{%
  \es@itemize
    {\leavevmode\hbox to 1.2ex
      {\hss\vrule height .9ex width .7ex depth -.2ex\hss}}%
    {\textbullet}%
    {$\m@th\circ$}%
    {$\m@th\diamond$}}
\def\spanishsignitems{%
  \es@itemize
    {\textbullet}%
    {$\m@th\circ$}%
    {$\m@th\diamond$}%
    {$\m@th\triangleright$}}
\spanishsymbitems

\def\es@enumdef#1#2#3\@@{%
  \if#21%
    \@namedef{theenum#1}{\arabic{enum#1}}%
  \else\if#2a%
    \@namedef{theenum#1}{\emph{\alph{enum#1}}}%
  \else\if#2A%
    \@namedef{theenum#1}{\Alph{enum#1}}%
  \else\if#2i%
    \@namedef{theenum#1}{\roman{enum#1}}%
  \else\if#2I%
    \@namedef{theenum#1}{\Roman{enum#1}}%
  \else\if#2o%
    \@namedef{theenum#1}{\arabic{enum#1}\protect\es@sptext{o}}%
  \fi\fi\fi\fi\fi\fi
  \toks@\expandafter{\csname theenum#1\endcsname}
  \expandafter\edef\csname labelenum#1\endcsname
     {\noexpand\es@listquot\the\toks@#3}}

\addto\layoutspanish{%
  \def\es@enumerate##1##2##3##4{%
    \es@enumdef{i}##1\@empty\@empty\@@
    \es@enumdef{ii}##2\@empty\@empty\@@
    \es@enumdef{iii}##3\@empty\@empty\@@
    \es@enumdef{iv}##4\@empty\@empty\@@}%
  \def\es@itemize##1##2##3##4{%
    \def\labelitemi{\es@listquot##1}%
    \def\labelitemii{\es@listquot##2}%
    \def\labelitemiii{\es@listquot##3}%
    \def\labelitemiv{\es@listquot##4}}%
  \def\p@enumii{\theenumi}%
  \def\p@enumiii{\theenumi\theenumii}%
  \def\p@enumiv{\p@enumiii\theenumiii}%
  \expandafter\es@enumerate\es@enum
  \expandafter\es@itemize\es@item
  \DeclareTextCommand{\guillemotleft}{OT1}{%
    \ifmmode\ll
    \else
      \save@sf@q{\penalty\@M
        \leavevmode\hbox{\usefont{U}{lasy}{m}{n}%
          \char40 \kern-0.19em\char40 }}%
    \fi}%
  \DeclareTextCommand{\guillemotright}{OT1}{%
    \ifmmode\gg
    \else
      \save@sf@q{\penalty\@M
          \leavevmode\hbox{\usefont{U}{lasy}{m}{n}%
            \char41 \kern-0.19em\char41 }}%
    \fi}%
  \def\@fnsymbol##1%
    {\ifcase##1\or*\or**\or***\or****\or
     *****\or******\else\@ctrerr\fi}%
  \def\@alph##1%
    {\ifcase##1\or a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or
     k\or l\or m\or n\or \~n\or o\or p\or q\or r\or s\or t\or u\or v\or
     w\or x\or y\or z\else\@ctrerr\fi}%
  \def\@Alph##1%
    {\ifcase##1\or A\or B\or C\or D\or E\or F\or G\or H\or I\or J\or
     K\or L\or M\or N\or \~N\or O\or P\or Q\or R\or S\or T\or U\or V\or
     W\or X\or Y\or Z\else\@ctrerr\fi}%
  \let\@afterindentfalse\@afterindenttrue
  \@afterindenttrue
  \def\@seccntformat##1{\csname the##1\endcsname.\quad}%
  \def\numberline##1{\hb@xt@\@tempdima{##1\if&##1&\else.\fi\hfil}}%
  \def\@roman##1{\protect\es@roman{\number##1}}%
  \def\es@roman##1{\protect\es@lsc{\romannumeral##1}}%
  \def\esromanindex##1##2{##1{\protect\es@lsc{##2}}}}
%    \end{macrocode}
%    
%    We need to execute the following code when babel has been
%    run, in order to see if |spanish| is the main language.
%    
%    \begin{macrocode}
\AtEndOfPackage{%
  \let\es@activeacute\@undefined
  \def\bbl@tempa{spanish}%
  \ifx\bbl@main@language\bbl@tempa
    \AtBeginDocument{\layoutspanish}%
    \addto\es@select{%
      \@ifstar{\let\layoutspanish\relax}%
              {\layoutspanish\let\layoutspanish\relax}}%
  \fi
  \selectspanish}

\fi            %<<<<<<
%    \end{macrocode}
%    
%    After restoring the catcode of |~| and setting the minimal
%    values for hyphenation, the |.ldf| is finished.
%    
% \changes{spanish~4.0e}{99/04/11}{Removed duplicated \cs{loadlocalcfg}}
% \changes{spanish~4.0a}{98/09/14}{Moved
%    \cs{let}\cs{es@activeacute}\cs{@undefined}
%    to \cs{AtEndOfPackage}}
% \changes{spanish~4.0a}{98/09/12}{Introduced \cs{ldf@finish}}
% \changes{spanish~4.1d}{01/06/06}{Removed extra \cs{endinput}}
%    \begin{macrocode}
\es@savedcatcodes

\providehyphenmins{\CurrentOption}{\tw@\tw@}

\ifes@LaTeXe   %<<<<<<
  \ldf@finish{spanish}
\else          %<<<<<<
  \es@select
  \ldf@finish{spanish}
  \csname activatequoting\endcsname
\fi            %<<<<<<

%</code>
%    \end{macrocode}
%    That's all in the main file. Now the file with
%    \textsf{custom-bib} macros.
%
% \changes{spanish~4.0b}{98/11/09}{Added support for custom-bib}
% \changes{spanish~4.0i}{99/06/21}{the mthesis and phdthesis text
%    were reverted. Fixed}
% \changes{spanish~4.0i}{99/06/21}{Added \cs{bbletal}}
%    \begin{macrocode}
%<*bblbst>
\def\bbland{y}
\def\bbleditors{directores}     \def\bbleds{dirs.\@}
\def\bbleditor{director}        \def\bbled{dir.\@}
\def\bbledby{dirigido por}
\def\bbledition{edici\'on}      \def\bbledn{ed.\@}
\def\bbletal{y otros}
\def\bblvolume{vol\'umen}       \def\bblvol{vol.\@}
\def\bblof{de}
\def\bblnumber{n\'umero}        \def\bblno{n\sptext{o}}
\def\bblin{en} 
\def\bblpages{p\'aginas}        \def\bblpp{p\'ags.\@}
\def\bblpage{p\'gina}           \def\bblp{p\'ag.\@}
\def\bblchapter{cap\'itulo}     \def\bblchap{cap.\@}
\def\bbltechreport{informe t\'ecnico}
\def\bbltechrep{inf.\@ t\'ec.\@}
\def\bblmthesis{proyecto de fin de carrera}
\def\bblphdthesis{tesis doctoral}
\def\bblfirst {primera}         \def\bblfirsto {1\sptext{a}}
\def\bblsecond{segunda}         \def\bblsecondo{2\sptext{a}}
\def\bblthird {tercera}         \def\bblthirdo {3\sptext{a}}
\def\bblfourth{cuarta}          \def\bblfourtho{4\sptext{a}}
\def\bblfifth {quinta}          \def\bblfiftho {5\sptext{a}}
\def\bblth{\sptext{a}}
\let\bblst\bblth   \let\bblnd\bblth   \let\bblrd\bblth
\def\bbljan{enero}  \def\bblfeb{febrero}  \def\bblmar{marzo}
\def\bblapr{abril}  \def\bblmay{mayo}     \def\bbljun{junio}
\def\bbljul{julio}  \def\bblaug{agosto}   \def\bblsep{septiembre}
\def\bbloct{octubre}\def\bblnov{noviembre}\def\bbldec{diciembre}
%</bblbst>
%    \end{macrocode}
%
%    The |spanish| option writes a macro in the page field of
%    \textit{MakeIndex} in entries with small caps number, and they
%    are rejected. This program is a preprocessor which moves this
%    macro to the entry field.
%
%    \begin{macrocode}
%<*indexes>
\makeatletter

\newcount\es@converted
\newcount\es@processed

\def\es@encap{`\|}
\def\es@openrange{`\(}
\def\es@closerange{`\)}

\def\es@split@file#1.#2\@@{#1}
\def\es@split@ext#1.#2\@@{#2}

\typein[\answer]{^^JArchivo que convertir^^J%
   (extension por omision .idx):}
   
\@expandtwoargs\in@{.}{\answer}
\ifin@
  \edef\es@input@file{\expandafter\es@split@file\answer\@@}
  \edef\es@input@ext{\expandafter\es@split@ext\answer\@@}
\else
  \edef\es@input@file{\answer}
  \def\es@input@ext{idx}
\fi

\typein[\answer]{^^JArchivo de destino^^J%
   (archivo por omision: \es@input@file.eix,^^J%
    extension por omision .eix):}
\ifx\answer\@empty
  \edef\es@output{\es@input@file.eix}
\else
  \@expandtwoargs\in@{.}{\answer}
  \ifin@
     \edef\es@output{\answer}
  \else
     \edef\es@output{\answer.eix}
  \fi
\fi

\typein[\answer]{%
 ^^J?Se ha usado algun esquema especial de controles^^J%
 de MakeIndex para encap, open_range o close_range?^^J%
 [s/n] (n por omision)}
 
\if s\answer
  \typein[\answer]{^^JCaracter para 'encap'^^J%
    (\string| por omision)}
  \ifx\answer\@empty\else
    \edef\es@encap{%
      `\expandafter\noexpand\csname\expandafter\string\answer\endcsname}
  \fi
  \typein[\answer]{^^JCaracter para 'open_range'^^J%
    (\string( por omision)}
  \ifx\answer\@empty\else
    \edef\es@openrange{%
      `\expandafter\noexpand\csname\expandafter\string\answer\endcsname}
  \fi
  \typein[\answer]{^^JCaracter para 'close_range'^^J%
    (\string) por omision)}
  \ifx\answer\@empty\else
    \edef\es@closerange{%
      `\expandafter\noexpand\csname\expandafter\string\answer\endcsname}
  \fi
\fi
   
\newwrite\es@indexfile
\immediate\openout\es@indexfile=\es@output

\newif\ifes@encapsulated

\def\es@roman#1{\romannumeral#1 }
\edef\es@slash{\expandafter\@gobble\string\\}

\def\indexentry{%
  \begingroup
  \@sanitize
  \es@indexentry}
  
\begingroup

\catcode`\|=12 \lccode`\|=\es@encap\relax
\catcode`\(=12 \lccode`\(=\es@openrange\relax
\catcode`\)=12 \lccode`\)=\es@closerange\relax

\lowercase{
\gdef\es@indexentry#1{%
  \endgroup
  \advance\es@processed\@ne
  \es@encapsulatedfalse
  \es@bar@idx#1|\@@
  \es@idxentry}%
}

\lowercase{
\gdef\es@idxentry#1{%
  \in@{\es@roman}{#1}%
  \ifin@
    \advance\es@converted\@ne
    \immediate\write\es@indexfile{%
      \string\indexentry{\es@b|\ifes@encapsulated\es@p\fi esromanindex%
        {\ifx\es@a\@empty\else\es@slash\es@a\fi}}{#1}}%
  \else
    \immediate\write\es@indexfile{%
      \string\indexentry{\es@b\ifes@encapsulated|\es@p\es@a\fi}{#1}}%
  \fi}
}

\lowercase{
\gdef\es@bar@idx#1|#2\@@{%
  \def\es@b{#1}\def\es@a{#2}%
  \ifx\es@a\@empty\else\es@encapsulatedtrue\es@bar@eat#2\fi}
}

\lowercase{
\gdef\es@bar@eat#1#2|{\def\es@p{#1}\def\es@a{#2}%
  \edef\es@t{(}\ifx\es@t\es@p
  \else\edef\es@t{)}\ifx\es@t\es@p
  \else
    \edef\es@a{\es@p\es@a}\let\es@p\@empty%
  \fi\fi}
}

\endgroup

\input \es@input@file.\es@input@ext

\immediate\closeout\es@indexfile

\typeout{*****************}
\typeout{Se ha procesado: \es@input@file.\es@input@ext }
\typeout{Lineas leidas: \the\es@processed}
\typeout{Lineas convertidas: \the\es@converted}
\typeout{Resultado en: \es@output}
\ifnum\es@converted>\z@
  \typeout{Genere el indice a partir de ese archivo}
\else
  \typeout{No se ha realizado ningun tipo de conversion}
  \typeout{Se puede generar el archivo directamente^^J%
           de \es@input@file.\es@input@ext}
\fi
\typeout{*****************}
\@@end
%</indexes>
%    \end{macrocode}
%
% \Finale
%
%%
%% \CharacterTable
%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%%   Digits        \0\1\2\3\4\5\6\7\8\9
%%   Exclamation   \!     Double quote  \"     Hash (number) \#
%%   Dollar        \$     Percent       \%     Ampersand     \&
%%   Acute accent  \'     Left paren    \(     Right paren   \)
%%   Asterisk      \*     Plus          \+     Comma         \,
%%   Minus         \-     Point         \.     Solidus       \/
%%   Colon         \:     Semicolon     \;     Less than     \<
%%   Equals        \=     Greater than  \>     Question mark \?
%%   Commercial at \@     Left bracket  \[     Backslash     \\
%%   Right bracket \]     Circumflex    \^     Underscore    \_
%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%%   Right brace   \}     Tilde         \~}
%%
\endinput





