From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- macros/latex/contrib/babel-contrib/latin/latin.dtx | 828 +++++++++++++++++++++ macros/latex/contrib/babel-contrib/latin/latin.ins | 95 +++ macros/latex/contrib/babel-contrib/latin/latin.pdf | Bin 0 -> 155817 bytes 3 files changed, 923 insertions(+) create mode 100644 macros/latex/contrib/babel-contrib/latin/latin.dtx create mode 100644 macros/latex/contrib/babel-contrib/latin/latin.ins create mode 100644 macros/latex/contrib/babel-contrib/latin/latin.pdf (limited to 'macros/latex/contrib/babel-contrib/latin') diff --git a/macros/latex/contrib/babel-contrib/latin/latin.dtx b/macros/latex/contrib/babel-contrib/latin/latin.dtx new file mode 100644 index 0000000000..5c69e291b1 --- /dev/null +++ b/macros/latex/contrib/babel-contrib/latin/latin.dtx @@ -0,0 +1,828 @@ +% \CheckSum{510} +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*driver> +\ProvidesFile{latin.dtx} +% +%\ProvidesLanguage{latin} +%<*code> + [2015/08/20 v.3.5 Latin support from the babel system] +% +%% File `babel-latin.dtx' +%% Babel package for LaTeX2e +%% Copyright (C) 1989 - 2008 by Johannes Braams, TeXniek +%% Copyright (C) 2009 - 2015 by Claudio Beccari +% +%% Please report errors to: Claudio Beccari +%% claudio.beccari at gmail.com +% +% This file is part of the babel system, it provides the source +% code for the Latin language description file. +% The original version of this file was written by +% Claudio Beccari, (claudio.beccari at gmail.com) and includes contributions +% by Krzysztof Konrad \.Zelechowski, (\texttt{kkz@alfa.mimuw.edu.pl}). It was +% modified and made compatible with the babel system by J.L. Braams +%<*driver> +\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 shorthands 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 shorthands for +% etymological hyphenation; modified breve and macro shorthands; +% 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 shorthands +% 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}{2010/01/03}{Corrected sectioning} +% \changes{latin-2.0k}{2014/02/18}{subsections turned into subsections*} +%^^A -------------------------------- +% \changes{latin-3.0}{2014/06/01}{Added modifier for classical spelling +% and hyphenation} +% \changes{latin-3.0}{2014/06/01}{Restored the subsection numbering} +% \changes{latin-3.5}{2015/08/17}{Added the modifier for the ecclesiastic +% Latin variety} +% +% \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.} defines all the +% language-specific macros for the Latin language including the classical +% spelling and hyphenation and the special ecclesiastic spelling. +% +% Without modifiers or attributes, this file describes the modern usage +% of Latin; with this we mean the kind of Latin that is used as an official +% language in the State of Vatican City, and in the teaching of Latin in +% modern schools. This file description language accepts several modifiers, +% in order to be adapted to other situations. +%\begin{enumerate}\csname c@enumi\endcsname=-1 +%^^A +%\item Modern spelling and hyphenation; this is the default setting. +%^^A +%\item Medieval spelling and hyphenation: in this spelling the lower and +% upper case alphabets become the following:\\ +%\makebox[\linewidth]{\tabcolsep=2pt +%\begin{tabular}{*{26}c} +% a&\ae&b&c&d&e&f&g&h&i&k&l&m&n&o&\oe&p&q&r&s&t&u&x&y&z \\ +% A&\AE&B&C&D&E&F&G&H&I&K&L&M&N&O&\OE&P&Q&R&S&T&V&X&Y&Z +%\end{tabular}} +% It must be noted that this file description language does not make +% any spelling correction in order to use only `u' in lower case and only +% `V' in upper case: if the input text is wrongly typed in, it remains as +% such; this means it's the typesetter's responsibility to correctly input +% the source text to be typeset; in spite of this, when the transformation +% from lower to upper case is performed (such as, for example, while +% typesetting headers with some classes) the correct capitalisation is +% performed and `u' is capitalised to `V'; the reverse takes place when +% transforming to lowercase. +%^^A +%\item Classical Latin and classical hyphenation; the spelling is similar +% to the medieval one, except for the ligatures \ae, \AE, \oe\ and \OE\ +% that are missing; again it is the typesetter's responsibility to input the +% text to be typeset in a correct way; while the hyphenation patterns for +% modern and medieval Latin form a non contrasting set of patterns, this +% is impossible with classical Latin and a different pattern set has been +% prepared as explained below. +%^^A +%\item Modern spelling with prosodic marks: this is to be used mainly +% in modern grammars and dictionaries. Its settings can be turned on and +% off according to the user needs. +%^^A +% \item Ecclesiastic Latin is a spelling variety of modern Latin; it is +% taken care by the external module |ecclesiastic.sty|, that is being loaded +% by this language description file at the right moment, that is when \babel\ +% has been completely read together with all the options and modifiers. +% This special spelling of modern Latin is used in theological +% and devotional books of the Roman Catholic clergy where ligatures \ae\ +% and \oe\ are widely used and where acute accents are used in order to +% mark the tonic vowel of many words so as to allows clergy with different +% backgrounds and mother languages to recite their community prayers with +% the same rhythmic scheme. +% This ecclesiastic Latin spelling contains also other differences, including +% a certain degree of ``frenchisation'' of spaces around some punctuation +% marks and guillemots, and the typesetting style of footnotes. +% When this spelling is chosen, its features are +% irrevocable, especially those that concern spacing. And this is the main +% reason why we decided not to include the ecclesiastic style modifications +% into the language description file, thus avoiding to mess up any setting +% for the other Latin typesetting styles. +%^^A +%\end{enumerate} +% +% Package \babel\ is not directly concerned with hyphenation; nevertheless +% in this case it is necessary to switch the hyphenation rules to those +% of another language, |classiclatin|, that must be available +% while creating the format files so that this language description +% file can chose between the modern and medieval hyphenation rules or +% the classical ones. +% +% In summary modern and medieval Latin hyphenation rules are similar +% to those of current Italian, except that the patterns must include +% also some consonant groups that do not exist in Italian; furthermore +% with medieval spelling there are many more vocalic groups than in +% Italian, because of the widespread use of the letter `u' that often +% actually plays the r\^ole of a consonant. +% +% The rules for classical Latin are taken from Raffaello Farina and Nino +% Marinone's guide \emph{Metodologia} published by Societ\`a Editrice +% Internazionale, Torino, 1979. +% In spite of the publication date of this guide the +% hyphenation rules did not change in the meanwhile, since the Classical +% Latin Language is sort of frozen during the past, say, twenty +% centuries. Yes, it is true that the original writings in Classical +% Latin were not hyphenated, and the hyphenation rules were established +% at the beginning of the Renaissance, when mechanical typography +% required suitable justification. Therefore such rules are sort of a +% compromise between the procedures used by the various proto-typographers +% and the scholars' of these disciplines. Nevertheless the rules given +% by Farina and Marinone are generally shared among modern +% scholars and are sort of official at both universities of Torino +% and Vercelli; in the latter University they are adopted by the working +% group that founded the DigilibLT laboratory; I acknowledge their +% contribution in letting me become aware of the problem, and therefore +% to create this update by adding the classical Latin support for the +% \pkg{babel} package, with its special hyphenation rules. +% +% In order to implement the above described styles of typesetting, +% four modifiers/attributes have to be defined: |medieval|, |withprosodicmarks|, +% |classic|, and |ecclesiastic|. They can be used in any order so that +% several combinations are possible, although, generally speaking, just +% the isolated four described ones have a real meaning. +% +% Among these modifiers only |withprosodicmarks| can be turned on and off; +% the others are sort of global; for example, once |classic| is specified, +% there is no easy way to revert to modern spelling and hypehenation; the +% same holds true for the other modifiers, except |withprosodicmarks|. +% +% The typesetting style |withprosodicmarks| is +% defined in order to use special shorthands for inserting breves +% and macrons while typesetting grammars, dictionaries, teaching +% texts, and the like, where prosodic marks are important for the +% complete information on the words or the verses. The shorthands, +% listed in table~\ref{t:lashrtct} and described in +% subsection~\ref{s:shrtcts}, may interfere with other packages; +% therefore by default this style is turned off and no interference +% is introduced. If this style is used and interference is +% experienced, there are special commands for turning on and off +% its specific shorthand commands. +% +% For what concerns \babel\ and typesetting with \LaTeX, the +% differences between the spelling styles 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{hyph-la.tex} takes care of the modern and medieval versions +% of the language, while \file{hyph-la-x-classic.tex} takes care of the +% classical hyphenation. The user should not attempt to modify these files, +% because they are not dealt with by \babel\ they are used only during the +% creation of format files. If some errors or modifications are required +% or suggested, it is necessary to ask their maintainer. +% +% The name strings for chapters, figures, tables, et cetera, have been +% suggested by prof. Raffaella Tabacco, a latinist of the +% University of Vercelli, 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 shorthands are defined according to +% table~\ref{t:lashrtct}; all of them are supposed to work with +% all 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\ because they are naturally long.\\ +% |=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\ because they are naturally long.\\ +% |"| & inserts a compound word mark where hyphenation is legal; +% the next character must not be either a non-letter token +% or an accented letter (for foreign names). With the ecclesiastic +% spelling it eases the insertion of the ligatures \ae\ and \oe\ +% by simply typing \texttt{\string"ae} and \texttt{\string"oe} +% without the need of curly brackets or spaces after the character +% macros |\ae| and |\oe|.\\ +% \texttt{\string"\string|} +% & inserts a compound word mark, but operates also when the next token +% is not a letter or it is an accented character. +% \end{tabular} +% \caption[]{Shorthands 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 +% subsection~\ref{s:shrtcts} at page~\pageref{s:shrtcts} +% for more details.}% +% \label{t:lashrtct} +% \end{table} +% +% The user should attentively remember that this file describes an option +% for the \pkg{babel} package; it works as expected when a document containing +% a text in part or completely in Latin is being processed with |pdfLaTeX| +% and 8-bit encoded fonts that contain at most 256 glyphs. \babel\ can be +% used also with |XeLaTeX| and possibly by |LuaLaTeX|, may be with reduced +% functionalities; expect anomalous results if you typeset your document +% with this language option and |XeLaTeX|. If you need the functionalities +% provided by |XeLaTeX| or |LuaLaTeX|, then use |polyglossia| in place of +% \babel\ and set the Latin desired functionalities with suitable values to +% the |variant| keyword to the Latin language specifications; The valid values +% have the same names as this \babel\ module modifiers, i.e.\ |medieval|, +% |classic|, |ecclesiastic|; with |XeLaTeX| and |LuaLaTeX| that use OpenType +% fonts, the |withprosodicmaks| functionality is not required as the required +% glyphs can be directly input with a UNICODE input encoding. Actually with +% such an encoding this modifier is not necessary even with |pdfLaTeX|, but +% it eases input when one is using a vintage computer or operating system; backwards compatibility is therefore maintained. +% \StopEventually{} +% +% \section{The code} +% +% The macro |\LdfInit| takes care of preventing that this file is +% loaded more than once, checking the category code of the +% \texttt{@} sign, etc. +%\iffalse +%<*code> +%\fi +% \begin{macrocode} +\LdfInit{latin}{captionslatin} +% \end{macrocode} +% +% Never load this file as if it was a |.sty| file by means of the +% |\usepackage| command; this practice is deprecated. We check for +% the existence of |\l@latin| to see whether we have to do something here. +% +% \begin{macrocode} +\ifx\undefined\l@latin + \@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}}% + \expandafter\addto\expandafter\extraslatin + \expandafter{\extrasmedievallatin}% + } +% \end{macrocode} +% +% The typesetting style |withprosodicmarks| is defined here: +% \begin{macrocode} +\bbl@declare@ttribute{latin}{withprosodicmarks}{% + \expandafter\addto\expandafter\extraslatin + \expandafter{\extraswithprosodicmarks}% + } +% \end{macrocode} +% +% The `classic' typesetting style is described here: notice that the general +% typesetting rules are identical with those of modern Latin, the default +% one, but the hyphenation rules are different; therefore we just change +% the meaning of counter |\l@latin| so that it points to the language +% counter of classical Latin. In order to avoid a fatal error we test if +% language |classiclatin| has its patterns already loaded, otherwise we issue +% a warning and keep going with the default modern hyphenation +% \begin{macrocode} +\bbl@declare@ttribute{latin}{classic}{% + \expandafter\addto\expandafter\extraslatin + \expandafter{\extrasclassic}% + } +\ifx\l@classiclatin\undefined + \let\l@classiclatin\l@latin + \PackageWarningNoLine{babel}{% + Attention: hyphenation patterns for language\MessageBreak + classiclatin have not been loaded.\MessageBreak + I go on using the modern Latin hyphenation patterns.\MessageBreak + Please, load the suitable patterns or upgrade your TeX distribution} +\fi +\addto\extrasclassic{\let\l@latin\l@classiclatin} +% \end{macrocode} +% It must be remembered that the |medieval| and the |withprosodicmarks| +% styles might be used together. They are also compatible with +% the |classic| attribute, but it would be unusual to typeset classical +% Latin with some medieval features and/or with the prosodic marks that were +% unknown twenty centuries ago. +% +% The next step consists in 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.}% 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 a dative 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 small caps Latin numerals for the day number is +% arbitrary and may be changed in the future. For medieval and classic 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' and/or `classic' is selected. +% \changes{latin-2.0f}{2005/03/30}{Added a comment character to +% prevent unwanted space} +% \changes{latin-2.0k}{2011/02/06}{Inserted the various `November' Latin +% spellings to the proper `extras' macros} +% \begin{macrocode} +\addto\extraslatin{\def\november{Novembris}} +\addto\extrasmedievallatin{\def\november{Nouembris}} +\addto\extrasclassiclatin{\def\november{Nouembris}} +% +\def\datelatin{% + \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}{\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} +% For Latin the |\clubpenalty|, |\widowpenalty| are set to +% rather high values and |\finalhyphendemerits| is set to such a +% high value that hyphenation is almost prohibited between the last two +% lines of a paragraph. +% +% \begin{macrocode} +\addto\extraslatin{% + \babel@savevariable\clubpenalty + \babel@savevariable\@clubpenalty + \babel@savevariable\widowpenalty + \clubpenalty3000\@clubpenalty3000\widowpenalty3000} +% \end{macrocode} +% Hopefully 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 and classic 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} +\addto\extrasclassiclatin{% +\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 \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\ Moreover in medieval times it was very +% frequent to close such ligatures to the corresponding sound, +% therefore instead of writing \ae\ or \oe\ they would often simply +% write `e'. 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} +% +% \changes{latin-2.0j}{20104/02/18}{Renamed this section to subsection} +% \subsection{Latin shorthands}\label{s:shrtcts} +% For writing dictionaries or school texts (in modern spelling +% only) we defined a language attribute or +% typesetting style, such that a couple of other active characters are +% defined: |^| for marking a vowel with the breve sign, and |=| for +% marking a vowel with the macron 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, besides math, +% 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 kinds of document, such as grammars and +% dictionaries. It is reasonable that the breve and macron active +% characters are turned on and off at will; by default +% they are off 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 +% this 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} +% +% Next we temporarily set the caret and the equals sign to active +% characters so that they can receive their definitions: +% \begin{macrocode} +\catcode`\= \active +\catcode`\^ \active +% \end{macrocode} +% and we 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} +% +% \begin{macro}{\ProsodicMarks} +% Next we define the macros for the active characters +% \begin{macrocode} +\def\ProsodicMarks{% +\def\ProsodicMarksOn{\catcode`\^ 13\catcode`\= 13\relax}% +\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 shorthands 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 \pkg{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 kinds of document 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}| (or |\=A|) for +% typesetting~\=A. +% +% Finally we restore the caret and equals sign initial default +% category codes +% \begin{macrocode} +\catcode`\= 12\relax +\catcode`\^ 7\relax +% \end{macrocode} +% so as to avoid conflicts with other packages or other \babel\ +% options. +% \end{macro} +% \end{macro} +% \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} +% The following commands remain defined for backwards compatibility, +% but they are obsolete and should not be used. +% \changes{latin-2.0h}{2007/10/20}{Removed the setting of +% \cs{LatinMarksOff} from \cs{extraslatin}} +% \begin{macrocode} +\addto\extraslatin{\def\LatinMarksOn{\shorthandon{^}\shorthandon{=}}} +\addto\extraslatin{\def\LatinMarksOff{\shorthandoff{^}\shorthandoff{=}}} +% \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. +% +%\changes{latin-3.5}{2015/08/20}{New subsection} +% \subsection{Ecclesiastic Latin style} +% We declare the |ecclesiastic| attribute; its purpose is to load the +% \pkg{ecclesiastic.sty} package, deferring this action to the moment when +% \babel\ finishes executing; actually it sends \babel\ the information to act; +% then \babel\ defers the package loading to the |\begin{document}| execution. +% This implies the availability of the |\AtEndOfPackage| and |\AtBeginDocument| +% macros which are contained in the \LaTeX\ kernel. Since +% this file is read by \babel\ the current package at the end of which +% the code is deferred is \babel\ itself, not simply this language description +% file. +% +% Differently from other attribute settings we do not declare anything +% in a possible |\extrasecclesiasticlatin| macro, because once the package +% has been read, it is impossible to pretend to delete all what the package +% defined. Actually this |ecclesiastic| attribute simply mimics the actual +% loading of a package by means of a |\usepackage| or |\RequirePackage| command; +% if loading was done with one of these commands, it would be impossible to +% unload the loaded package. +% \begin{macrocode} +\bbl@declare@ttribute{latin}{ecclesiastic}{% +\AtEndOfPackage{% + \AtBeginDocument{\RequirePackage{ecclesiastic}[2015/08/20]}% + }% +} +% \end{macrocode} +% +% \changes{latin-2.0j}{2014/02/18}{Renamed this section to subsection} +% \subsection{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. You may consider this sign as a +% substitute for a ``compound word mark''. +% +% This is particularly useful with classical Latin because this +% language requires etymological hyphenation; patterns were created +% with etymological hyphenation in mind, but even if for certain +% prefixes or suffixes it works pretty well, it does not for certain +% other ones. For example the word `redire' should be hyphenated as +% `red-i-re'; but there are plenty of other words starting with the +% string `red' that does not play the role of a prefix; therefore +% it should be necessary to extract all the Latin words where `red' +% is a prefix, and enter the suitable patterns to hyphenate correctly +% only those words; in the simple case of the verb `redire' it would +% be necessary to enter all the words that belong to the conjugation +% of this verb and the declination of the present, future and past +% participles and gerundive in masculine, feminine and neutral forms; +% the same problem takes place with prefix `trans' where sometimes it is +% a real prefix, such as in `transire' (hyphenation trans-i-re), and +% sometimes is modified with the absorption of an initial `s' of the +% suffix, such as in `transubstantialis' (classical hyphenation: +% tran-subs-tan-tia-lis). + +% Obviously this task would render the pattern file enormous, and mostly +% useless. The active character |"| solves the problem for isolated instances, +% while the hyphenations exception lists of the only forms actually used +% in a specific document, would do the rest. +% +% 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}{"}{% + \textormath{\def\lt@@next{\futurelet\lt@temp\lt@cwm}}% + {\def\lt@@next{''}}% + \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, it is tested against the definitions of |\ae| and |\oe|, +% and if the test is true than such definitions are treated as +% letters (as they actually are), otherwise 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}} +% \changes{latin-3.0}{2014/06/01}{\cs{lt@allowhyphens} rewritten so as +% to use the babel core command \cs{bbl@allowhyphens}} +% \changes{latin-3.0}{2014/06/01}{Introduced the tests for the ligatures +% \cs{ae} and \cs{oe}} +% \begin{macrocode} +\def\lt@allowhyphens{\bbl@allowhyphens\discretionary{-}{}{}\bbl@allowhyphens} + +\newcommand*{\lt@cwm}{\let\lt@n@xt\relax + \ifcat\noexpand\lt@temp a% + \let\lt@n@xt\lt@allowhyphens + \else + \ifx\lt@temp\ae + \let\lt@n@xt\lt@allowhyphens + \else + \ifx\lt@temp\oe + \let\lt@n@xt\lt@allowhyphens + \else + \if\noexpand\lt@temp\string|% + \def\lt@n@xt{\lt@allowhyphens\@gobble}% + \fi + \fi + \fi + \fi + \lt@n@xt}% +% \end{macrocode} +% +% Attention: the ligature commands |\ae| and |\oe| are detected correctly +% if they are not included within a group. In facts an input such as +% |super"{\ae}quitas|\footnote{This word does not exist in +% ``regular'' Latin, and it is used just as an example.} gets wrongly +% hyphenated as \texttt{su-pe-r\ae-qui-tas} while |super"\ae{}quitas|, +% that uses an empty group to terminate the |\ae| control sequence, gets +% correctly hyphenated as \texttt{su-per-\ae-qui-tas}. If one prefers to +% close the |\ae| or |\oe| ligature commands within a group, then it is +% necessary to use the alternate etymological hyphenation command \verb+"|+ +% as in \verb!super"|{\ae}quitas! in order to get +% \texttt{su-per-{\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} +%\iffalse +% +%\fi +% +% \Finale +% +\endinput + diff --git a/macros/latex/contrib/babel-contrib/latin/latin.ins b/macros/latex/contrib/babel-contrib/latin/latin.ins new file mode 100644 index 0000000000..b7b8bac612 --- /dev/null +++ b/macros/latex/contrib/babel-contrib/latin/latin.ins @@ -0,0 +1,95 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% Copyright 1989-2000 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.1 or, at your option, any later version. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\filedate{2014/05/27} +\def\batchfile{latin.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble + +This is a generated file. + +Copyright 1989-2000 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.1 or, at your option, any later version. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 2000 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.1 or, at your option, any later version. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\keepsilent + +\usepreamble\mainpreamble +\generate{\file{latin.ldf}{\from{latin.dtx}{code}} + } +\usepreamble\fdpreamble + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* '.dtx' and `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput diff --git a/macros/latex/contrib/babel-contrib/latin/latin.pdf b/macros/latex/contrib/babel-contrib/latin/latin.pdf new file mode 100644 index 0000000000..592b907926 Binary files /dev/null and b/macros/latex/contrib/babel-contrib/latin/latin.pdf differ -- cgit v1.2.3