% \iffalse meta-comment % % Copyright 1989-2001 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{386} % \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}% [2001/06/04 v2.0d Latin support from the babel system] %\iffalse %% File `latin.dtx' %% Babel package for LaTeX version 2e %% Copyright (C) 1989 - 2001 %% by Johannes Braams, TeXniek % %% Please report errors to: J.L. Braams %% Claudio Beccari % % 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, (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.0d}{2001/06/04}{Restored caret and equals sign % category codes before exiting} % % \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\ae 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} % \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} % % 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 % fontencoding, 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. % \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 shorthands 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 % % 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{-}{}{}\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