% \iffalse meta-comment
%
% Copyright 1989-2025 Javier Bezos, Johannes L. Braams and any individual authors
% listed elsewhere in this file.  All rights reserved.
% 
% This file is part of the Babel system.
% --------------------------------------
% 
% It may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% of this license or (at your option) any later version.
% The latest version of this license is in
%   http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2003/12/01 or later.
% 
% This work has the LPPL maintenance status "maintained".
% 
% The Current Maintainer of this work is Javier Bezos.
%
% \fi
%\iffalse
%    Tell the \LaTeX\ system who we are and write an entry on the
%    transcript.
%<*dtx>
\ProvidesFile{esperanto.dtx}
%</dtx>
%<code>\ProvidesLanguage{esperanto}
%\fi
%\ProvidesFile{esperant.dtx}
        [2025/07/14 v1.5a Esperanto support from the babel system]
%\iffalse
%% File 'esperanto.dtx'
%% Babel package for LaTeX version 2e
%% Copyright (C) 1989 - 2025
%%           by Javier Bezos
%%           by Johannes Braams, TeXniek
%
%    This file is part of the babel system, it provides the source
%    code for the Esperanto language definition file.  A contribution
%    was made by Ruiz-Altaba Marti. Code from
%    esperant.sty version 1.1 by Joerg Knappen
%    was included in
%    version 1.2.
%<*filedriver>
\documentclass{ltxdoc}
\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}}
\begin{document}
 \DocInput{esperanto.dtx}
\end{document}
%</filedriver>
%\fi
% \GetFileInfo{esperanto.dtx}
%
% \changes{esperanto-1.0a}{1991/07/15}{Renamed \file{babel.sty} in
%    \file{babel.com}}
% \changes{esperanto-1.1}{1992/02/15}{Brought up-to-date with
%    babel~3.2a}
% \changes{esperanto-1.2}{1992/02/18}{Included code from
%    \texttt{esperant.sty}}
% \changes{esperanto-1.4a}{1994/02/04}{Updated for \LaTeXe}
% \changes{esperanto-1.4d}{1994/06/25}{Removed the use of
%    \cs{filedate}, moved Identification after loading of
%    \file{babel.def}}
% \changes{esperanto-1.4e}{1995/02/09}{Moved identification code to
%    the top of the file}
% \changes{esperanto-1.4f}{1995/06/14}{Corrected typos (PR1652)}
% \changes{esperanto-1.4i}{1996/07/10}{Replaced \cs{undefined} with
%    \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency
%    with \LaTeX} 
% \changes{esperanto-1.4i}{1996/10/10}{Moved the definition of
%    \cs{atcatcode} right to the beginning.}
%
%  \section{The Esperanto language}
%
%    The file \file{\filename}\footnote{The file described in this
%    section has version number \fileversion\ and was last revised on
%    \filedate. A contribution was made by Ruiz-Altaba Marti
%    (\texttt{ruizaltb@cernvm.cern.ch}). Code from the file
%    \texttt{esperant.sty} by J\"org Knappen
%    (\texttt{knappen@vkpmzd.kph.uni-mainz.de}) was included.} defines
%    all the language-specific macros for the Esperanto language.
%
%    For this language the character |^| is made active.
%    In table~\ref{tab:esp-act} an overview is given of its purpose.
%    In Unicode engines, avoid shorthands to enter characters with hat
%    -- whenever possible, type them directly.
% \changes{esperanto-1.4j}{1997/01/06}{fixed typo in table caption
%    (funtion instead of function)} 
% \begin{table}[htb]
%    \centering
%     \begin{tabular}{lp{8cm}}
%      |^c| & gives \^c with hyphenation in the rest of the word
%             allowed, this works for c, C, g, G, H, J, s, S, z, Z\\
%      |^h| & gives \^{h}, but with the attribute \texttt{lowhhat},
%             prevents it from becoming too tall\\ 
%      |^j| & gives \^\j\\
%      |^u| & gives \u u, with hyphenation in the rest of the word
%                   allowed\\
%      |^U| & gives \u U, with hyphenation in the rest of the word
%                   allowed\\
%      \verb=^|= & inserts a |\discretionary{-}{}{}|\\
%      \end{tabular}
%      \caption{The functions of the active character for Esperanto.}
%    \label{tab:esp-act}
% \end{table}
%
% \textbf{Change in 1.5.} Previously |^h| gave always a lower hat.
% However, this rendering is not fully compatible with PDF tagging.
% Now, |^h| is just |\^{h}|, which works with LuaLaTeX and XeTeX, and
% an appropriate font. If you want the former behavior, you should
% activate the \texttt{lowhhat} attribute, either with
% |\languageattribute| or as modifier (i.e., calling
% \texttt{esperanto.lowhhat}). However, it is only correctly tagged
% with LaLaTeX, which is now the recommended engine.
%
% The position can be adjusted with something like:
%\begin{verbatim}
%\renewcommand\esperantolowhhatadj{\kern.04em}
%\end{verbatim}
% A \textit{positive} value shifts the hat to the \textit{left}. You
% can use \LaTeX{} hooks to set different values for different font
% styles.
%
%  \StopEventually{}
%
% \subsection*{Code}
%
%    The macro |\LdfInit| takes care of preventing that this file is
%    loaded more than once, checking the category code of the
%    \texttt{@} sign, etc.
% \changes{esperanto-1.4i}{1996/11/02}{Now use \cs{LdfInit} to perform
%    initial checks}
%    \begin{macrocode}
%<*code>
\LdfInit{esperanto}\captionsesperanto
%    \end{macrocode}
%
%    When this file is read as an option, i.e. by the |\usepackage|
%    command, \texttt{esperanto} will be an `unknown' language in
%    which case we have to make it known. So we check for the
%    existence of |\l@esperanto| to see whether we have to do
%    something here.
%
% \changes{esperanto-1.0b}{1991/10/29}{Removed use of
%    \cs{makeatletter}}
% \changes{esperanto-1.1}{1992/02/15}{Added a warning when no
%    hyphenation patterns were loaded.}
% \changes{esperanto-1.4d}{1994/06/25}{Use \cs{@nopatterns} for the
%    warning}
%    \begin{macrocode}
\ifx\l@esperanto\@undefined
  \@nopatterns{Esperanto}
  \adddialect\l@esperanto0\fi
%    \end{macrocode}
%
%    The next step consists of defining commands to switch to the
%    Esperanto language. The reason for this is that a user might want
%    to switch back and forth between languages.
%
% \begin{macro}{\captionsesperanto}
%    The macro |\captionsesperanto| defines all strings used
%    in the four standard documentclasses provided with \LaTeX.
% \changes{esperanto-1.1}{1992/02/15}{Added \cs{seename},
%    \cs{alsoname} and \cs{prefacename}}
% \changes{esperanto-1.3}{1993/07/10}{Repaired a number of mistakes,
%    indicated by D. Ederveen}
% \changes{esperanto-1.3}{1993/07/15}{\cs{headpagename} should be
%    \cs{pagename}}
% \changes{esperanto-1.4a}{1994/02/04}{added missing closing brace}
% \changes{esperanto-1.4g}{1995/07/04}{Added \cs{proofname} for
%    AMS-\LaTeX}
% \changes{esperanto-1.4i}{1996/07/06}{Replaced `Proof' by `Pruvo' 
%    PR 2207} 
% \changes{esperanto-1.4p}{2000/09/19}{Added \cs{glossaryname}}
% \changes{esperanto-1.4q}{2002/01/07}{Added translation for Glossary}
%    \begin{macrocode}
\addto\captionsesperanto{%
  \def\prefacename{Anta\u{u}parolo}%
  \def\refname{Cita\^\j{}oj}%
  \def\abstractname{Resumo}%
  \def\bibname{Bibliografio}%
  \def\chaptername{{\^C}apitro}%
  \def\appendixname{Apendico}%
  \def\contentsname{Enhavo}%
  \def\listfigurename{Listo de figuroj}%
  \def\listtablename{Listo de tabeloj}%
  \def\indexname{Indekso}%
  \def\figurename{Figuro}%
  \def\tablename{Tabelo}%
  \def\partname{Parto}%
  \def\enclname{Aldono(j)}%
  \def\ccname{Kopie al}%
  \def\headtoname{Al}%
  \def\pagename{Pa\^go}%
  \def\subjectname{Temo}%
  \def\seename{vidu}%   a^u: vd.
  \def\alsoname{vidu anka\u{u}}% a^u vd. anka\u{u}
  \def\proofname{Pruvo}%
  \def\glossaryname{Glosaro}%
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\dateesperanto}
%    The macro |\dateesperanto| redefines the command |\today| to
%    produce Esperanto dates.
% \changes{esperanto-1.3}{1993/07/10}{Removed the capitals from
%    \cs{today}}
% \changes{esperanto-1.4k}{1997/10/01}{Use \cs{edef} to define
%    \cs{today} to save memory}
% \changes{esperanto-1.4k}{1998/03/27}{Removed Rthe use of \cs{edef}
%    again} 
%    \begin{macrocode}
\def\dateesperanto{%
  \def\today{\number\day{--a}~de~\ifcase\month\or
    januaro\or februaro\or marto\or aprilo\or majo\or junio\or
    julio\or a\u{u}gusto\or septembro\or oktobro\or novembro\or
    decembro\fi,\space \number\year}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\extrasesperanto}
% \begin{macro}{\noextrasesperanto}
%    The macro |\extrasesperanto| performs all the extra definitions
%    needed for the Esperanto language. The macro |\noextrasesperanto|
%    is used to cancel the actions of |\extrasesperanto|.
%
% First, some definitions for \texttt{lowhhat}, used below.
%
% \changes{esperanto-1.5a}{2025/07/14}{New way to deal with h hat.}
%
%    \begin{macrocode}
\def\esperanto@hhat{\^{h}}
\let\esperantolowhhatadj\@empty
\bbl@declare@ttribute{\CurrentOption}{lowhhat}{%
  \ifodd\bbl@engine
    \def\esperanto@hhat{h\llap{%
      \iffontchar\font`^^^^0302^^^^0302\else\^{}\fi\esperantolowhhatadj}}%
  \else
    \def\esperanto@hhat{h\llap{\^{}\esperantolowhhatadj}}%
  \fi}
%    \end{macrocode}
%
%    For Esperanto the |^| character is made active. This is done
%    once, later on its definition may vary.
%
%    \begin{macrocode}
\initiate@active@char{^}
%    \end{macrocode}
%    Because the character |^| is used in math mode with quite a
%    different purpose we need to add an extra level of evaluation to
%    the definition of the active |^|. It checks whether math mode is
%    active; if so the shorthand mechanism is bypassed by a direct
%    call of |\normal@char^|.
% \changes{esperanto-1.4n}{1999/09/30}{Added a check for math mode to
%    the definition of the shorthand character}
% \changes{esperant0-1.4o}{1999/12/18}{Moved the check for math to
%    babel.def}
%    \begin{macrocode}
\addto\extrasesperanto{\languageshorthands{esperanto}}
\addto\extrasesperanto{\bbl@activate{^}}
\addto\noextrasesperanto{\bbl@deactivate{^}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
%    In order to prevent problems with the active |^| we add a
%    shorthand on system level which expands to a `normal |^|.
% \changes{esperanto-1.4l}{1999/04/11}{Added a shorthand definition on
%    system level}
%    \begin{macrocode}
\declare@shorthand{system}{^}{\csname normal@char\string^\endcsname}
%    \end{macrocode}
%    And here are the uses of the active |^|:
% \changes{esperanto-1.4h}{1995/07/27}{Added a few shorthands}
%    \begin{macrocode}
\declare@shorthand{esperanto}{^c}{\^{c}\allowhyphens}
\declare@shorthand{esperanto}{^C}{\^{C}\allowhyphens}
\declare@shorthand{esperanto}{^g}{\^{g}\allowhyphens}
\declare@shorthand{esperanto}{^G}{\^{G}\allowhyphens}
\declare@shorthand{esperanto}{^h}{\esperanto@hhat\allowhyphens}
\declare@shorthand{esperanto}{^H}{\^{H}\allowhyphens}
\declare@shorthand{esperanto}{^j}{\^{\j}\allowhyphens}
\declare@shorthand{esperanto}{^J}{\^{J}\allowhyphens}
\declare@shorthand{esperanto}{^s}{\^{s}\allowhyphens}
\declare@shorthand{esperanto}{^S}{\^{S}\allowhyphens}
\declare@shorthand{esperanto}{^u}{\u u\allowhyphens}
\declare@shorthand{esperanto}{^U}{\u U\allowhyphens}
\declare@shorthand{esperanto}{^|}{\discretionary{-}{}{}\allowhyphens}
%    \end{macrocode}
%
% \begin{macro}{\Esper}
% \begin{macro}{\esper}
%    In \file{esperant.sty} J\"org Knappen provides the macros
%    |\esper| and |\Esper| that can be used instead of |\alph| and
%    |\Alph|. These macros are available in this file as well.
%
%    Their definition takes place in two steps. First the toplevel.
%    \begin{macrocode}
\def\esper#1{\@esper{\@nameuse{c@#1}}}
\def\Esper#1{\@Esper{\@nameuse{c@#1}}}
%    \end{macrocode}
%    Then the second level.
% \changes{esperanto-1.4q}{2002/01/08}{Removed the extra level of
%    expansion for more than five items, as was done in \LaTeX}
% \changes{esperanto-1.4t}{2006/06/05}{Added the missing `r' in these
%    macros} 
%    \begin{macrocode}
\def\@esper#1{%
  \ifcase#1\or a\or b\or c\or \^c\or d\or e\or f\or g\or \^g\or
    h\or \esperanto@hhat\or i\or j\or \^\j\or k\or l\or m\or n\or o\or
    p\or r\or s\or \^s\or t\or u\or \u{u}\or v\or z\else\@ctrerr\fi}
\def\@Esper#1{%
  \ifcase#1\or A\or B\or C\or \^C\or D\or E\or F\or G\or \^G\or
    H\or \^H\or I\or J\or \^J\or K\or L\or M\or N\or O\or
    P\or R\or S\or \^S\or T\or U\or \u{U}\or V\or Z\else\@ctrerr\fi}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\hodiau}
% \begin{macro}{\hodiaun}
%    In \file{esperant.sty} J\"org Knappen provides two alternative
%    macros for |\today|, |\hodiau| and |\hodiaun|. The second macro
%    produces an accusative version of the date in Esperanto.
%    \begin{macrocode}
\addto\dateesperanto{\def\hodiau{la \today}}
\def\hodiaun{la \number\day --an~de~\ifcase\month\or
  januaro\or februaro\or marto\or aprilo\or majo\or junio\or
  julio\or a\u{u}gusto\or septembro\or oktobro\or novembro\or
  decembro\fi, \space \number\year}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
%    The macro |\ldf@finish| takes care of looking for a
%    configuration file, setting the main language to be switched on
%    at |\begin{document}| and resetting the category code of
%    \texttt{@} to its original value.
% \changes{esperanto-1.4i}{1996/11/02}{Now use \cs{ldf@finish} to wrap
%    up} 
%    \begin{macrocode}
\ldf@finish{esperanto}
%</code>
%    \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
