% \iffalse meta-comment % % Copyright 1989-2008 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 Johannes Braams. % % The list of all files belonging to the Babel system is % given in the file `manifest.bbl. See also `legal.bbl' for additional % information. % % The list of derived (unpacked) files belonging to the distribution % and covered by LPPL is defined by the unpacking scripts (with % extension .ins) which are part of the distribution. % \fi % \CheckSum{454} % \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}% [2008/07/06 v2.0l Latin support from the babel system] %\iffalse %% File `latin.dtx' %% Babel package for LaTeX version 2e %% Copyright (C) 1989 - 2008 %% by Johannes Braams, TeXniek % %% Please report errors to: J.L. Braams %% babel at braams.xs4all.nl %% Claudio Beccari %% claudio.beccari at gmail.it % % 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}{2001/06/04}{Restored caret and equals sign % category codes before exiting} % \changes{latin-2.0e}{2003/04/11}{Introduced the language attribute % `withprosodicmarks'; modified use of breve and macron shortcuts % in order to avoid possible conflicts with other packages} % \changes{latin-2.0i}{2008/02/17}{Corrected the \cs{@clubpenalty} % problem} % \changes{latin-2.0j}{2008/03/17}{Added a missing comment char and a % missing closing brace} % \changes{latin-2.0l}{2008/07/06}{Added two missing \cs{end} macro's} % % \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. % % Furthermore a third typesetting style |withprosodicmarks| is % defined in order to use special shortcuts for inserting breves % and macrons when typesetting grammars, dictionaries, teaching % texts, and the like, where prosodic marks are important for the % complete information on the words or the verses. The shortcuts, % listed in table~\ref{t:lashrtct} and described in % section~\ref{s:shrtcts}, may interfere with other packages; % therefore by default this third style is off and no interference % is introduced. If this third style is used and interference is % experienced, there are special commands for turning on and off % the specific short hand commands of this style. % % 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 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 % characters \texttt{\string^} and \texttt{\string=} are % active only when the language attribute % \texttt{withprosodicmarks} has been declared, % otherwise they are disabled; 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 third typesetting style |withprosodicmarks| is defined here % \begin{macrocode} \bbl@declare@ttribute{latin}{withprosodicmarks}{% \expandafter\addto\expandafter\extraslatin \expandafter{\extraswithprosodicmarks}% } % \end{macrocode} % It must be remembered that the |medieval| and the |withprosodicmarks| % styles may be used together. % % 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. % \changes{latin-2.0f}{2005/03/30}{Added a comment character to % prevent unwanted space} % \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\@clubpenalty \babel@savevariable\widowpenalty \clubpenalty3000\@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\extrasmedievallatin{% \babel@savevariable{\lccode`\^^e6}% T1 \ae \babel@savevariable{\uccode`\^^e6}% T1 \ae \babel@savevariable{\lccode`\^^c6}% T1 \AE \babel@savevariable{\lccode`\^^f7}% T1 \oe \babel@savevariable{\uccode`\^^f7}% T1 \OE \babel@savevariable{\lccode`\^^d7}% T1 \OE \babel@savevariable{\lccode`\^^1a}% OT1 \ae \babel@savevariable{\uccode`\^^1a}% OT1 \ae \babel@savevariable{\lccode`\^^1d}% OT1 \AE \babel@savevariable{\lccode`\^^1b}% OT1 \oe \babel@savevariable{\uccode`\^^1b}% OT1 \OE \babel@savevariable{\lccode`\^^1e}% OT1 \OE \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) we defined a third language attribute, or a third % typesetting style, 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 if the attribute |withprosodicmarks| % has not been set. % % \begin{macro}{\ProsodicMarksOn} % \begin{macro}{\ProsodicMarksOff} % We begin by adding to the normal typesetting style the % definitions of the new commands |\ProsodicMarksOn| and % |\ProsodicMarksOff| that should produce error messages when the % third style is not declared: % \begin{macrocode} \addto\extraslatin{\def\ProsodicMarksOn{% \GenericError{(latin)\@spaces\@spaces\@spaces\@spaces}% {Latin language error: \string\ProsodicMarksOn\space is defined by setting the\MessageBreak language attribute to `withprosodicmarks'\MessageBreak If you continue you are likely to encounter\MessageBreak fatal errors that I can't recover}% {See the Latin language description in the babel documentation for explanation}{\@ehd}}} \addto\extraslatin{\let\ProsodicMarksOff\relax} % \end{macrocode} % % Then we temporarily set the caret and the equals sign to active % characters so that they can receive their definitions. But first % we store their current category codes to restore them later on. % \changes{latin-2.0k}{2008/03/21}{Save current category codes of % equals sign and caret in order to restore them later} % \begin{macrocode} \@tempcnta=\catcode`\= \@tempcntb=\catcode`\^ \catcode`\= \active \catcode`\^ \active % \end{macrocode} % Now we can add the necessary declarations to the macros that are % being activated when the Latin language and its typesetting % styles are declared: % \begin{macrocode} \addto\extraslatin{\languageshorthands{latin}}% \addto\extraswithprosodicmarks{\bbl@activate{^}}% \addto\extraswithprosodicmarks{\bbl@activate{=}}% \addto\noextraswithprosodicmarks{\bbl@deactivate{^}}% \addto\noextraswithprosodicmarks{\bbl@deactivate{=}}% \addto\extraswithprosodicmarks{\ProsodicMarks} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\ProsodicMarks} % Next we define the defining macro for the active characters % \changes{latin-2.0k}{2008/03/21}{Use \cs{active} instead of 13} % \begin{macrocode} \def\ProsodicMarks{% \def\ProsodicMarksOn{\catcode`\^ \active\catcode`\= \active}% \def\ProsodicMarksOff{\catcode`\^ 7\catcode`\= 12\relax}% % \end{macrocode} % Notice that with the above redefinitions of the commands % |\ProsodicMarksOn| and |\ProsodicMarksOff|, the operation of the % newly defined shortcuts may be switched on and off at will, so % that even if a picture has to be inserted in the document by % means of the commands and keyword options of the |graphicx| % package, it suffices to switch them off before invoking the % picture including command, and switched on again afterwards; or, % even better, since the picture very likely is being inserted % within a |figure| environment, it suffices to switch them off % within the environment, being conscious that their deactivation % remains local to the environment. % \changes{latin-2.0g}{2005/11/17}{changed \cs{allowhyphens} to % \cs{bbl@allowhyphens}} % \begin{macrocode} \initiate@active@char{^}% \initiate@active@char{=}% \declare@shorthand{latin}{^a}{% \textormath{\u{a}\bbl@allowhyphens}{\hat{a}}}% \declare@shorthand{latin}{^e}{% \textormath{\u{e}\bbl@allowhyphens}{\hat{e}}}% \declare@shorthand{latin}{^i}{% \textormath{\u{\i}\bbl@allowhyphens}{\hat{\imath}}}% \declare@shorthand{latin}{^o}{% \textormath{\u{o}\bbl@allowhyphens}{\hat{o}}}% \declare@shorthand{latin}{^u}{% \textormath{\u{u}\bbl@allowhyphens}{\hat{u}}}% % \declare@shorthand{latin}{=a}{% \textormath{\={a}\bbl@allowhyphens}{\bar{a}}}% \declare@shorthand{latin}{=e}{% \textormath{\={e}\bbl@allowhyphens}{\bar{e}}}% \declare@shorthand{latin}{=i}{% \textormath{\={\i}\bbl@allowhyphens}{\bar{\imath}}}% \declare@shorthand{latin}{=o}{% \textormath{\={o}\bbl@allowhyphens}{\bar{o}}}% \declare@shorthand{latin}{=u}{% \textormath{\={u}\bbl@allowhyphens}{\bar{u}}}% } % \end{macrocode} % Notice that the short hand definitions are given only for lower % case letters; it would not be difficult to extend the set of % definitions to upper case letters, but it appears of very little % use in view of the kind of documents where prosodic marks are % supposed to be used. Nevertheless in those rare cases when it's % required to set some uppercase letters with their prosodic % marks, it is always possible to use the standard \LaTeX\ commands % such as |\u{I}| for typesetting \u{I}, or |\={A}| for % typesetting~\=A. % % Finally we restore the caret and equals sign initial default % category codes. % \changes{latin-2.0k}{2008/03/21}{Restore category codes rather then % return them to their \TeX\ default values. \emph{And} do that % outside of the command definition} % \begin{macrocode} \catcode`\= \@tempcnta \catcode`\^ \@tempcntb % \end{macrocode} % so as to avoid conflicts with other packages or other \babel\ % options. % \end{macro} % % \begin{macro}{\LatinMarksOn} % \begin{macro}{\LatinMarksOff} % \changes{latin-2.0g}{2005/11/17}{Added two commands} % \changes{latin-2.0h}{2007/10/19}{Added missing backslash} % We define two new commands so as to switch on and off the breve % and macron shortcuts. % \changes{latin-2.0h}{2007/10/20}{Removed the setting of % \cs{LatinMarksOff} from \cs{extraslatin}} % \changes{latin-2.0k}{2008/03/21}{Set the \cs{LatinMarks...} commands % equal to the \cs{ProsodicMarks..} commands for compatibility} % \begin{macrocode} \addto\extraswithprosodicmarks{\let\LatinMarksOn\ProsodicMarksOn} \addto\extraswithprosodicmarks{\let\LatinMarksOff\ProsodicMarksOff} % \end{macrocode} % \end{macro} % \end{macro} % % 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. % % \section{Etymological hyphenation} % 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. % \changes{latin-2.0g}{2005/11/17}{Added a \cs{nobreak}} % \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