% \iffalse meta-comment
%
% Copyright 1989-2001 Johannes L. Braams and any individual authors
% listed elsewhere in this file.  All rights reserved.
%
% For further copyright information see any other copyright notices in
% this file.
%
% 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.1 or, at your option, any later version.
%
% \fi
% \CheckSum{399}
% \iffalse
%    Tell the \LaTeX\ system who we are and write an entry on the
%    transcript.
%<*dtx>
\ProvidesFile{latin.dtx}
%</dtx>
%<code>\ProvidesFile{latin.ldf}
%\fi
%\ProvidesFile{latin.dtx}%
        [2007/03/20 v.2.0f Latin support from the babel system]
%\iffalse
%% File `latin.dtx'
%% Babel package for LaTeX version 2e
%% Copyright (C) 1989 - 2005
%%           by Johannes Braams, TeXniek
%
%% Please report errors to: J.L. Braams
%%                          JLBraams@cistron.nl
%
%    This file is part of the babel system, it provides the source
%    code for the Latin language definition file.
%    The original version of this file was written by
%    Claudio Beccari, (claudio.beccari@polito.it) and includes contributions
%    by Krzysztof Konrad \.Zelechowski, (\texttt{kkz@alfa.mimuw.edu.pl}).
%<*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}}
\providecommand*\pkg[1]{\textsf{#1}}
\begin{document}
 \DocInput{latin.dtx}
\end{document}
%</filedriver>
%\fi
% \GetFileInfo{latin.dtx}
%
% \changes{latin-0.99}{1999/12/06}{First version, from italian.dtx (CB)}
% \changes{latin-0.99}{1999/12/06}{Added shortcuts for breve, macron,
%   and etymological hyphenation (CB)}
% \changes{latin-1.2}{2000/01/31}{Added suggestions from Krzysztof Konrad \.Zelechowski (CB)}
% \changes{latin-2.0}{2000/02/10}{Completely new etymological hyphenation (CB)}
% \changes{latin-2.0a}{2000/10/15}{Revised by JB}
% \changes{latin-2.0b}{2000/12/13}{Simplified shortcuts for etymological hyphenation;
%           modified breve and macro shortcuts; language attribute medieval declared}
% \changes{latin-2.0c}{2001/06/04}{Restored caret and equals sign category codes
%           before exiting}
% \changes{latin-2.0d}{2003/04/11}{Modified use of breve and macron shortcuts in order
%           to avoid possible conflicts with other packages}
% \changes{latin-2.0e}{2005/10/19}{Added another \nobreak to \cs{lt@allowhyphens}}
% \changes{latin-2.0f}{2007/03/20}{Deleted \cs{addtoextraslatin} and its argument}
%
%  \section{The Latin 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 is  Claudio Beccari with contributions
%    by Krzysztof Konrad \.Zelechowski, (\texttt{kkz@alfa.mimuw.edu.pl})}
%    defines all the language-specific macros for the Latin language both
%    in modern and medieval spelling.
%
%    For this language the |\clubpenalty|, |\widowpenalty| are set to rather high values and
%    |\finalhyphendemerits| is set to such a high value that hyphenation is prohibited
%    between the last two lines of a paragraph.
%
%    For this language two ``styles'' of typesetting are implemented: ``regular''
%    or modern-spelling Latin, and medieval Latin.
%    The medieval Latin specific commands can be activated by means of the language
%    attribute |medieval|; the medieval spelling differs from the
%    modern one by the systematic use of the lower case `u' also where
%    in modern spelling the letter `v' is used; when typesetting with capital
%    letters, on the opposite, the letter 'V' is used also in place of 'U'.
%    Medieval spelling also includes the ligatures |\ae| (\ae), |\oe| (\oe), |\AE| (\AE),
%    and |\OE| (\OE) that are not used  in modern spelling, nor were used in
%    the classical times.
%
%    For what concerns \textsf{babel} and typesetting with \LaTeX, the differences
%    between the two styles of spelling reveal themselves in the strings used to name
%    for example the ``Preface'' that becomes ``Praefatio'' or ``Pr�fatio'' respectively.
%    Hyphenation rules are also different, but the hyphenation pattern file
%    \file{lahyph.tex} takes care of both versions of the language. Needless to say that
%    such patterns must be loaded in the \LaTeX\ format by by running |initex|
%    (or whatever the name if the initializer) on |latex.ltx|.
%
%    The name strings for chapters, figures, tables, etcetera, are suggested by
%    prof. Raffaella Tabacco, a classicist of the University of Turin, Italy, to whom
%    we address our warmest thanks. The names suggested by Krzysztof Konrad \.Zelechowski,
%    when different, are used as the names for the medieval variety, since he
%    made a word and spelling choice more suited for this variety.
%
%    For this language some shortcuts are defined according to table~\ref{t:lashrtct}; all
%    of them are supposed to work with both spelling styles, except where the opposite
%    is explicitly stated.
%    \begin{table}[htb]\centering
%    \begin{tabular}{cp{80mm}}
%    |^i|   & inserts the breve accent as \u{\i}; valid also for the other lowercase vowels,
%               but it does not operate on the medieval ligatures \ae\ and \oe.\\
%    |=a|   & inserts the macron accent as \=a; valid also for the other lowercase vowels,
%               but it does not operate on the medieval ligatures \ae\ and \oe.\\
%    |"|    & inserts a compound word mark where hyphenation is legal;
%               the next character must not be a medieval
%               ligature \ae\ or \oe, nor an accented letter (foreign names).\\
%    \texttt{\string"\string|}  & same as above, but operates also when the next character
%               is a medieval ligature or an accented letter.
%    \end{tabular}
%    \caption[]{Shortcuts defined for the Latin language. The active characters
%             \texttt{\string^} and \texttt{\string=}
%             are disabled by default; see section~\ref{s:shrtcts}
%             for more details.}\label{t:lashrtct}
%    \end{table}
% \StopEventually{}
%
%    The macro |\LdfInit| takes care of preventing that this file is
%    loaded more than once, checking the category code of the
%    \texttt{@} sign, etc.
%    \begin{macrocode}
%<*code>
\LdfInit{latin}{captionslatin}
%    \end{macrocode}
%
%    When this file is read as an option, i.e. by the |\usepackage|
%    command, \texttt{latin} will be an `unknown' language in which
%    case we have to make it known.  So we check for the existence of
%    |\l@latin| to see whether we have to do something here.
%
%    \begin{macrocode}
\ifx\l@latin\@undefined
    \@nopatterns{Latin}
    \adddialect\l@latin0\fi
%    \end{macrocode}
%
%
%    Now we declare the |medieval| language attribute.
%    \begin{macrocode}
\bbl@declare@ttribute{latin}{medieval}{%
  \addto\captionslatin{\def\prefacename{Pr{\ae}fatio}}%
  \def\november{Nouembris}%
  \expandafter\addto\expandafter\extraslatin
  \expandafter{\extrasmedievallatin}%
  }
%    \end{macrocode}
%
%
%    The next step consists of defining commands to switch to (and
%    from) the Latin language\footnote{Most of these names were
%    kindly suggested by Raffaella Tabacco.}.
%
% \begin{macro}{\captionslatin}
%    The macro |\captionslatin| defines all strings used
%    in the four standard document classes provided with \LaTeX.
%    \begin{macrocode}
\@namedef{captionslatin}{%
  \def\prefacename{Praefatio}%
  \def\refname{Conspectus librorum}%
  \def\abstractname{Summarium}%
  \def\bibname{Conspectus librorum}%
  \def\chaptername{Caput}%
  \def\appendixname{Additamentum}%
  \def\contentsname{Index}%
  \def\listfigurename{Conspectus descriptionum}%
  \def\listtablename{Conspectus tabularum}%
  \def\indexname{Index rerum notabilium}%
  \def\figurename{Descriptio}%
  \def\tablename{Tabula}%
  \def\partname{Pars}%
  \def\enclname{Adduntur}%   Or " Additur" ? Or simply Add.?
  \def\ccname{Exemplar}%     Use the recipient's dative
  \def\headtoname{\ignorespaces}% Use the recipient's dative
  \def\pagename{Charta}%
  \def\seename{cfr.}%
  \def\alsoname{cfr.}% R.Tabacco never saw "cfr. atque" or similar forms
  \def\proofname{Demonstratio}%
  \def\glossaryname{Glossarium}%
  }
%    \end{macrocode}
% \end{macro}
%    In the above definitions there are some points that might change in the future or that
%    require a minimum of attention from the typesetter.
%    \begin{enumerate}
%    \item the \cs{enclname} is translated by a passive verb, that literally means ``(they)
%    are being added''; if just one enclosure is joined to the document, the plural passive
%    is not suited any more; nevertheless a generic plural passive might be incorrect but suited
%    for most circumstances. On the opposite ``Additur'', the corresponding singular passive,
%    might be more correct with one enclosure and less suited in general: what about the
%    abbreviation ``Add.'' that works in both cases, but certainly is less elegant?
%    \item The \cs{headtoname} is empty and gobbles the possible following space; in
%    practice the typesetter should use the dative of the recipient's name; since nowadays not
%    all such names can be translated into Latin, they might result indeclinable. The
%    clever use of an appellative by the typesetter such as ``Domino'' or ``Dominae''
%    might solve the problem, but the header might get too impressive. The typesetter must
%    make a decision on his own.
%    \item The same holds true for the copy recipient's name in the ``Cc'' field of
%    \cs{ccname}.
%    \end{enumerate}
%
%  \begin{macro}{\datelatin}
%    The macro |\datelatin| redefines the command |\today| to produce
%    Latin dates; the choice of faked small caps  Latin numerals is
%    arbitrary and may be changed in the future. For medieval latin
%    the spelling of `Novembris' should be \textit{Nouembris}. This is
%    taken care of by using a control sequence which can be redefined
%    when the attribute `medieval' is selected.
%    \begin{macrocode}
\def\datelatin{%
  \def\november{Novembris}
  \def\today{%
    {\check@mathfonts\fontsize\sf@size\z@\math@fontsfalse\selectfont
      \uppercase\expandafter{\romannumeral\day}}~\ifcase\month\or
    Ianuarii\or Februarii\or Martii\or Aprilis\or Maii\or Iunii\or
    Iulii\or Augusti\or Septembris\or Octobris\or \november\or
    Decembris\fi
    \space{\uppercase\expandafter{\romannumeral\year}}}}
%    \end{macrocode}
%  \end{macro}
%
% \begin{macro}{\romandate}
% Thomas Martin Widmann (\texttt{viralbus@daimi.au.dk}) developed a macro
% originally named |\latindate| (but to be renamed |\romandate| so as not
% to conflict with the standard |babel| conventions) that should compute
% and translate the current date into a date \textit{ab urbe condita} with
% days numbered according to the kalendae and idus; for the moment this
% is a placeholder for Thomas' macro, waiting for a self standing one that
% keeps local all the intermediate data, counters, etc. If he succeeds,
% here is the place to add his macro.
% \end{macro}
%
%  \begin{macro}{\latinhyphenmins}
%    The Latin hyphenation patterns can be used with both
%    |\lefthyphenmin| and |\righthyphenmin| set to~2.
% \changes{latin-2.0a}{2000/10/15}{Now use \cs{providehyphenmins} to
%    provide a default value}
%    \begin{macrocode}
\providehyphenmins{\CurrentOption}{\tw@\tw@}
%    \end{macrocode}
%  \end{macro}
%
% \begin{macro}{\extraslatin}
% \begin{macro}{\noextraslatin}
%    Lower the chance that clubs or widows occur.
%    \begin{macrocode}
\addto\extraslatin{%
  \babel@savevariable\clubpenalty
  \babel@savevariable\widowpenalty
  \clubpenalty3000\widowpenalty3000}
%    \end{macrocode}
%    Never ever break a word between the last two lines of a paragraph
%    in latin texts.
%    \begin{macrocode}
\addto\extraslatin{%
  \babel@savevariable\finalhyphendemerits
  \finalhyphendemerits50000000}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%
%    With medieval Latin we need the suitable correspondence between
%    upper case V and lower case u, since in that spelling there is
%    only one sign, and the u shape is the (uncial) version of the
%    capital V. Everything else is identical with Latin.
%    \begin{macrocode}
\addto\extrasmedievallatin{%
\babel@savevariable{\lccode`\V}%
\babel@savevariable{\uccode`\u}%
\lccode`\V=`\u \uccode`\u=`\V}
%    \end{macrocode}
%
% \begin{macro}{\SetLatinLigatures}
%    We need also the lccodes for \ae\ and \oe; since they occupy
%    different positions in the OT1 \TeX-fontencoding compared to the
%    T1 one, we must save the lc- and the uccodes for both encodings,
%    but we specify the new lc- and uccodes separately as it appears
%    natural not to change encoding while typesetting the same
%    language. The encoding is assumed to be set before starting to
%    use the Latin language, so that if Latin is the default language,
%    the font encoding must be chosen before requiring the \pkg{babel}
%    package with the |latin| option, in any case before any
%    |\selectlanguage| or |\foreignlanguage| command.
%
%    All this fuss is made in order to allow the use of the medieval
%    ligatures \ae\ and \oe\ while typesetting with the medieval
%    spelling; I have my doubts that the medieval spelling should be
%    used at all in modern books, reports, and the like; the uncial
%    `u' shape of the lower case `v' and the above ligatures were
%    fancy styles of the copyists who were able to write faster with
%    those rounded glyphs; with typesetting there is no question of
%    handling a quill penn\dots Since my (CB) opinion may be wrong, I
%    managed to set up the instruments and it is up to the typesetter
%    to use them or not.
%
%    \begin{macrocode}
\addto\extraslatin{%
  \babel@savevariable{\lccode`\^^e6}% T1
  \babel@savevariable{\uccode`\^^e6}% T1
  \babel@savevariable{\lccode`\^^c6}% T1
  \babel@savevariable{\lccode`\^^f7}% T1
  \babel@savevariable{\uccode`\^^d7}% T1
  \babel@savevariable{\lccode`\^^d7}% T1
  \babel@savevariable{\lccode`\^^1a}% OT1
  \babel@savevariable{\uccode`\^^1a}% OT1
  \babel@savevariable{\lccode`\^^1d}% OT1
  \babel@savevariable{\lccode`\^^1b}% OT1
  \babel@savevariable{\uccode`\^^1b}% OT1
  \babel@savevariable{\lccode`\^^1e}% OT1
  \SetLatinLigatures}
\providecommand\SetLatinLigatures{%
  \def\@tempA{T1}\ifx\@tempA\f@encoding
    \catcode`\^^e6=11 \lccode`\^^e6=`\^^e6 \uccode`\^^e6=`\^^c6 % \ae
    \catcode`\^^c6=11 \lccode`\^^c6=`\^^e6 % \AE
    \catcode`\^^f7=11 \lccode`\^^f7=`\^^f7 \uccode`\^^f7=`\^^d7 % \oe
    \catcode`\^^d7=11 \lccode`\^^d7=`\^^f7 % \OE
  \else
    \catcode`\^^1a=11 \lccode`\^^1a=`\^^1a \uccode`\^^1a=`\^^1d % \ae
    \catcode`\^^1d=11 \lccode`\^^1d=`\^^1a % \AE (^^])
    \catcode`\^^1b=11 \lccode`\^^1b=`\^^1b \uccode`\^^1b=`\^^1e % \oe
    \catcode`\^^1e=11 \lccode`\^^1e=`\^^1b % \OE (^^^)
  \fi
  \let\@tempA\@undefined
  }
%    \end{macrocode}
%    With the above definitions we are sure that |\MakeUppercase| works properly and
%    |\MakeUppercase{C{\ae}sar}| correctly `yields `C{\AE}SAR''; correspondingly
%    |\MakeUppercase{Heluetia}| correctly yields ``HELVETIA''.
%    \end{macro}
%
%    \section{Latin shortcuts}\label{s:shrtcts}
%    For writing dictionaries or didactic texts (in modern spelling only) a couple of
%    other active characters are defined: |^| for marking a vowel with the breve sign,
%    and |=| for marking a vowel with the macro sign. Please take notice that neither
%    the OT1 font encoding, nor the T1 one for most vowels, contain directly the marked
%    vowels, therefore hyphenation of words containing these ``accents'' may become
%    problematic; for this reason the above active characters not only introduce the
%    required accent, but also an unbreakable zero skip that in practice does not
%    introduce a discretionary break, but allows breaks in the rest of the word.
%
%    It must be remarked that the active characters |^| and |=| may have other meanings
%    in other contexts. For example the equals sign is used by the graphic extensions
%    for specifying keyword options for handling the graphic elements to be included
%    in the document. At the same time, as mentioned in the previous paragraph, diacritical
%    marking in Latin is used only for typesetting certain kind of documents, such as
%    grammars and dictionaries. It is reasonable that the breve and macron active characters
%    are switched on and off at will, and in particular that they are off by default.
%    \begin{macrocode}
\initiate@active@char{^}
\initiate@active@char{=}
\addto\extraslatin{\languageshorthands{latin}}
\addto\extraslatin{\bbl@activate{^}}
\addto\extraslatin{\bbl@activate{=}}
\addto\noextraslatin{\bbl@deactivate{^}}
\addto\noextraslatin{\bbl@deactivate{=}}
%    \end{macrocode}
% Now we define the short hands only for Latin and only for lower
% case vowels.
%    \begin{macrocode}
\declare@shorthand{latin}{^a}{%
    \textormath{\u{a}\allowhyphens}{\hat{a}}}
\declare@shorthand{latin}{^e}{%
    \textormath{\u{e}\nobreak\hskip\z@skip}{\hat{e}}}
\declare@shorthand{latin}{^i}{%
    \textormath{\u{\i}\nobreak\hskip\z@skip}{\hat{\imath}}}
\declare@shorthand{latin}{^o}{%
    \textormath{\u{o}\nobreak\hskip\z@skip}{\hat{o}}}
\declare@shorthand{latin}{^u}{%
    \textormath{\u{u}\nobreak\hskip\z@skip}{\hat{u}}}
%
\declare@shorthand{latin}{=a}{%
    \textormath{\={a}\nobreak\hskip\z@skip}{\bar{a}}}
\declare@shorthand{latin}{=e}{%
    \textormath{\={e}\nobreak\hskip\z@skip}{\bar{e}}}
\declare@shorthand{latin}{=i}{%
    \textormath{\={\i}\nobreak\hskip\z@skip}{\bar{\imath}}}
\declare@shorthand{latin}{=o}{%
    \textormath{\={o}\nobreak\hskip\z@skip}{\bar{o}}}
\declare@shorthand{latin}{=u}{%
    \textormath{\={u}\nobreak\hskip\z@skip}{\bar{u}}}
%    \end{macrocode}
%
%    It must be understood that by using the above prosodic marks,
%    line breaking is somewhat impeached; since such prosodic marks
%    are used almost exclusively in dictionaries, grammars, and poems
%    (only in school textbooks), this shouldn't be of any importance
%    for what concerns the quality of typesetting.
%    \begin{macro}{\LatinMarksOn}
%    \begin{macro}{\LatinMarksOff}
%    We define two new commands  so as to switch
%    on and off the breve and macron shortcuts
%    \begin{macrocode}
\addto\extraslatin{\def\LatinMarksOn{\shorthandon{^}\shorthandon{=}}}
\addto\extraslatin{\def\LatinMarksOff{\shorthandoff{^}\shorthandoff{=}}}
%    \end{macrocode}
%    \end{macro}
%    \end{macro}
%
%    We must restore the original category codes for both the caret
%    and the equals sign
%    \begin{macrocode}
\catcode`\= 12\relax
\catcode`\^ 7\relax
%    \end{macrocode}
%    so as to avoid conflicts with other packages or other \babel\ options.
%
%    In order to deal in a clean way with prefixes and compound words to be divided
%    etymologically, the active character |"| is given a special
%    definition so as to behave as a discretionary break with hyphenation
%    allowed after it.
%    Most of the code for dealing with the active |"| is already contained in the
%    core of |babel|, but we are going to use it as a single character shorthand
%    for Latin.
%    \begin{macrocode}
\initiate@active@char{"}%
\addto\extraslatin{\bbl@activate{"}%
}
%    \end{macrocode}
%
%    A temporary macro is defined so as to take different actions in math
%    mode and text mode: specifically in the former case the macro inserts a
%    double quote as it should in math mode, otherwise another delayed macro
%    comes into action.
%    \begin{macrocode}
\declare@shorthand{latin}{"}{\ifmmode
    \def\lt@@next{''}%
\else
    \def\lt@@next{\futurelet\lt@temp\lt@cwm}%
\fi
\lt@@next
}%
%    \end{macrocode}
%    In text mode the \cs{lt@next} control sequence is such that upon its execution
%    a temporary variable \cs{lt@temp} is made equivalent to the next token in
%    the input list without actually removing it. Such temporary token is then tested
%    by the macro \cs{lt@cwm} and if it is found to be a letter token, then it
%    introduces a compound word separator control sequence \cs{lt@allowhyphens}
%    whose expansion introduces a discretionary hyphen and an unbreakable space; in case
%    the token is not a letter, the token is tested again to find if it is the character
%    \texttt{\string|}, in which case it is gobbled and a discretionary break is introduced.
%    \begin{macrocode}
\def\lt@allowhyphens{\nobreak\discretionary{-}{}{}\nobreak\hskip\z@skip}
\newcommand*{\lt@cwm}{\let\lt@n@xt\relax
\ifcat\noexpand\lt@temp a%
    \let\lt@n@xt\lt@allowhyphens
\else
    \if\noexpand\lt@temp\string|%
        \def\lt@n@xt{\lt@allowhyphens\@gobble}%
    \fi
\fi\lt@n@xt}%
%    \end{macrocode}
%
%    Attention: the category code comparison does not work if the temporary
%    control sequence \cs{lt@temp} has been let equal to  an implicit character,
%    such as |\ae|; therefore this etymological hyphenation facility does not
%    work with medieval Latin spelling when |"| immediately precedes a ligature.
%    in order to overcome this drawback the shorthand \verb!"|! may be used in such
%    cases; it behaves exactly as |"|, but it does not test the implicit character
%    control sequence. An input such as \verb!super"|{\ae}quitas!\footnote{This word
%    does not exist in ``regular'' Latin, and it is used just as an example.}
%    gets hyphenated as \texttt{su-per-{\ae}qui-tas} instead of
%    \texttt{su-pe-r\ae-qui-tas}.
%
%    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.
%    \begin{macrocode}
\ldf@finish{latin}
%</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