% \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} % %\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} % %\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} % % \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