% \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
%%
[email protected]
%
% 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, (
[email protected]) and includes contributions
% by Krzysztof Konrad \.Zelechowski, (\texttt{
[email protected]}).
%<*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{
[email protected]})}
% 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{
[email protected]}) 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