1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
|
% \CheckSum{510}
% \iffalse
% Tell the \LaTeX\ system who we are and write an entry on the
% transcript.
%<*driver>
\ProvidesFile{latin.dtx}
%</driver>
%<code>\ProvidesLanguage{latin}
%<*code>
[2015/08/20 v.3.5 Latin support from the babel system]
%</code>
%% 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}
%</driver>
%\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
%</code>
%\fi
%
% \Finale
%
\endinput
|