texlive[75070] Master/texmf-dist: babel-latin (30apr25)
commits+karl at tug.org
commits+karl at tug.org
Wed Apr 30 21:32:51 CEST 2025
Revision: 75070
https://tug.org/svn/texlive?view=revision&revision=75070
Author: karl
Date: 2025-04-30 21:32:51 +0200 (Wed, 30 Apr 2025)
Log Message:
-----------
babel-latin (30apr25)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/generic/babel-latin/README
trunk/Master/texmf-dist/doc/generic/babel-latin/latin.pdf
trunk/Master/texmf-dist/source/generic/babel-latin/latin.dtx
trunk/Master/texmf-dist/source/generic/babel-latin/latin.ins
trunk/Master/texmf-dist/tex/generic/babel-latin/classiclatin.ldf
trunk/Master/texmf-dist/tex/generic/babel-latin/ecclesiasticlatin.ldf
trunk/Master/texmf-dist/tex/generic/babel-latin/latin.ldf
trunk/Master/texmf-dist/tex/generic/babel-latin/medievallatin.ldf
Added Paths:
-----------
trunk/Master/texmf-dist/tex/generic/babel-latin/classicallatin.ldf
trunk/Master/texmf-dist/tex/generic/babel-latin/ecclesiasticallatin.ldf
trunk/Master/texmf-dist/tex/generic/babel-latin/ecclesiasticallatin.lua
Removed Paths:
-------------
trunk/Master/texmf-dist/tex/generic/babel-latin/ecclesiasticlatin.lua
Modified: trunk/Master/texmf-dist/doc/generic/babel-latin/README
===================================================================
--- trunk/Master/texmf-dist/doc/generic/babel-latin/README 2025-04-30 19:32:31 UTC (rev 75069)
+++ trunk/Master/texmf-dist/doc/generic/babel-latin/README 2025-04-30 19:32:51 UTC (rev 75070)
@@ -1,10 +1,10 @@
-The babel-latin package provides the babel languages latin, classiclatin,
-medievallatin and ecclesiasticlatin.
+The babel-latin package provides the babel languages latin, classicallatin,
+medievallatin and ecclesiasticallatin.
Package author: C. Beccari
Current maintainer: K. Wehr
-Version: 4.0
-Date: 27th June 2021
+Version: 4.1
+Date: 29th April 2025
Bug tracker: https://github.com/wehro/babel-latin/issues
The babel-latin package is subject to the LaTeX Project Public License,
Modified: trunk/Master/texmf-dist/doc/generic/babel-latin/latin.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/source/generic/babel-latin/latin.dtx
===================================================================
--- trunk/Master/texmf-dist/source/generic/babel-latin/latin.dtx 2025-04-30 19:32:31 UTC (rev 75069)
+++ trunk/Master/texmf-dist/source/generic/babel-latin/latin.dtx 2025-04-30 19:32:51 UTC (rev 75070)
@@ -8,7 +8,7 @@
%
% Copyright (C) 1989-2008 by Johannes L. Braams
% Copyright (C) 2009-2020 by Claudio Beccari
-% Copyright (C) 2021 by Keno Wehr
+% Copyright (C) 2021-2025 by Keno Wehr
% All rights reserved.
%
% This file is part of the babel-latin package.
@@ -18,7 +18,7 @@
% 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
+% https://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.
%
@@ -27,7 +27,7 @@
% The Current Maintainer of this work is Keno Wehr.
%
% \fi
-% \CheckSum{1023}
+% \CheckSum{1084}
% \iffalse
% Tell the LaTeX system who we are and write an entry on the transcript.
%<*driver>
@@ -72,7 +72,7 @@
\title{Babel support for the Latin language}
\author{Claudio Beccari\and Keno Wehr\thanks{Current maintainer. Please report
errors to \url{https://github.com/wehro/babel-latin/issues}.}}
-\date{v.\,4.0\quad\today}
+\date{v.\,4.1\quad\today}
\begin{document}
\DocInput{latin.dtx}
\end{document}
@@ -86,7 +86,7 @@
% Konrad \.Zelechowski (CB)}
% \changes{2.0a}{2000/10/15}{Revised by JB}
% \changes{4.0}{2021/06/27}{Complete revision by KW}
-% \changes{4.0}{2021/06/27}{Make ecclesiastic Latin work with \XeLaTeX{} and
+% \changes{4.0}{2021/06/27}{Make ecclesiastical Latin work with \XeLaTeX{} and
% \LuaLaTeX}
%
% \maketitle
@@ -93,7 +93,8 @@
% \begin{abstract}
% \noindent This manual documents the \babellatin{} package, which defines
% all language-specific macros for the \babel{} languages \lang{latin},
-% \lang{classiclatin}, \lang{medievallatin}, and \lang{ecclesiasticlatin}.
+% \lang{classicallatin}, \lang{medievallatin}, and\linebreak
+% \lang{ecclesiasticallatin}.
% These languages are usable with pdf\LaTeX, \XeLaTeX, and \LuaLaTeX. The
% \lang{latin} language is even usable with plain \TeX{} (with some
% restrictions).
@@ -107,6 +108,11 @@
% \changes{4.0}{2021/06/27}{New \babel{} languages \lang{classiclatin},
% \lang{medievallatin}, and \lang{ecclesiasticlatin}, replacing the
% respective modifiers}
+% \changes{4.1}{2025/04/29}{Renaming \lang{classiclatin} and
+% \lang{ecclesiasticlatin} to \lang{classicallatin} and
+% \lang{ecclesiasticallatin} for the sake of philological correctness, but
+% also keeping \file{ldf} files with the old names for backwards
+% compatibility}
% Latin has been the most important language of European intellectual life
% for a long time. Throughout the centuries, many different styles of Latin
% have been in use concerning wording, spelling, punctuation, and
@@ -125,8 +131,8 @@
% \centering
% \begin{tabular}{llll}
% \toprule
-% \lang{latin} & \lang{classiclatin} & \lang{medievallatin} &
-% \lang{ecclesiasticlatin} \\
+% \lang{latin} & \lang{classicallatin} & \lang{medievallatin} &
+% \lang{ecclesiasticallatin} \\
% \midrule
% Novembris & Nouembris & Nouembris & Novembris \\
% Praefatio & Praefatio & Præfatio & Præfatio \\
@@ -141,7 +147,7 @@
% It is no problem to use different variants of Latin within the same
% document. If you need classical and modern Latin, just say
% \begin{quote}
-% |\usepackage[classiclatin,latin]{babel}|
+% |\usepackage[classicallatin,latin]{babel}|
% \end{quote}
% and switch the language using the commands described in the \babel{}
% manual.
@@ -157,7 +163,7 @@
% A&B&C&D&E&F&G&H&I&K&L&M&N&O&P&Q&R&S&T&U&V&X&Y&Z
% \end{tabular}
% \end{center}
-% \paragraph{The \lang{classiclatin} language -- classical Latin}
+% \paragraph{The \lang{classicallatin} language -- classical Latin}
% This language variant is intended for typesetting Latin texts more or less
% according to the ancient usage of Latin. However, the use of lower-case
% letters, which are not of ancient origin, is not excluded. The following
@@ -196,8 +202,8 @@
% language variant rather reflects the Latin of the humanist/Renaissance
% period than that of the Middle Ages. However, we stick to the
% \emph{medieval} name chosen in earlier versions of \babellatin.
-% \paragraph{The \lang{ecclesiasticlatin} language -- ecclesiastic Latin}
-% Ecclesiastic Latin is a spelling variety of modern Latin, which is used
+% \paragraph{The \lang{ecclesiasticallatin} language -- ecclesiastical Latin}
+% Ecclesiastical Latin is a spelling variety of modern Latin, which is used
% above all in liturgical books of the Roman Catholic Church, where the
% ligatures \ae{} and \oe{} are widely used and where acute accents are used
% in order to mark the tonic vowel of words with more than two syllables to
@@ -241,7 +247,7 @@
% To apply a modifier you have to append it (prefixed with a dot) to the
% language name when loading \babel:
% \begin{quote}
-% |\usepackage[ecclesiasticlatin.lowercasemonth]{babel}|
+% |\usepackage[ecclesiasticallatin.lowercasemonth]{babel}|
% \end{quote}
% If you need two modifiers or more, just concatenate them in arbitrary
% order:
@@ -307,22 +313,22 @@
% displayed if your font supports the Unicode character \unicode{0304}
% (\emph{combining macron}).
% \item[|=ae|] for a͞e (ae diphthong with macron, for \lang{latin} and
-% \lang{classiclatin}) or \={\ae} (ae ligature with macron, for
-% \lang{medievallatin} and \lang{ecclesiasticlatin}), respectively; also
-% available for a͞u, e͞u, and o͞e/\=\oe. Note that macrons above diphthongs
-% are only displayed if your font supports the Unicode character
-% \unicode{035E} (\emph{combining double macron}), which always requires
-% \XeLaTeX{} or \LuaLaTeX.\footnote{A good choice for a font supporting
-% the combining double macron might be \emph{Libertinus Serif}, the font
-% of this manual.}
+% \lang{classicallatin}) or \={\ae} (ae ligature with macron, for
+% \lang{medievallatin} and \lang{ecclesiasticallatin}), respectively;
+% also available for a͞u, e͞u, and o͞e/\=\oe. Note that macrons above
+% diphthongs are only displayed if your font supports the Unicode
+% character \unicode{035E} (\emph{combining double macron}), which
+% always requires \XeLaTeX{} or \LuaLaTeX.\footnote{A good choice for a
+% font supporting the combining double macron might be \emph{Libertinus
+% Serif}, the font of this manual.}
% \item[|=Ae|] for A͞e (Ae diphthong with macron, for \lang{latin} and
-% \lang{classiclatin}) or \={\AE} (AE ligature with macron, for
-% \lang{medievallatin} and \lang{ecclesiasticlatin}), respectively; also
-% available for A͞u, E͞u, and O͞e/\=\OE.
+% \lang{classicallatin}) or \={\AE} (AE ligature with macron, for
+% \lang{medievallatin} and \lang{ecclesiasticallatin}), respectively;
+% also available for A͞u, E͞u, and O͞e/\=\OE.
% \item[|=AE|] for A͞E (AE diphthong with macron, for \lang{latin} and
-% \lang{classiclatin}) or \={\AE} (AE ligature with macron, for
-% \lang{medievallatin} and \lang{ecclesiasticlatin}), respectively; also
-% available for A͞U, E͞U, and O͞E/\=\OE.
+% \lang{classicallatin}) or \={\AE} (AE ligature with macron, for
+% \lang{medievallatin} and \lang{ecclesiasticallatin}), respectively;
+% also available for A͞U, E͞U, and O͞E/\=\OE.
% \item[|\textasciicircum a|] for ă (a with breve), also available for
% ĕ, ĭ, ŏ, ŭ, and y̆. Note that a breve above the letter y is only
% displayed if your font supports the Unicode character \unicode{0306}
@@ -334,21 +340,21 @@
% \end{shorthands}
% Note the incompatibilities described in section \ref{incompatibilities}.
%
-% \subsection{Ecclesiastic footnotes}
+% \subsection{Ecclesiastical footnotes}
% The \package{ecclesiastic} package, an outdated extension of former
% versions of \babellatin, typeset footnotes with ordinary instead of
% superior numbers and without indentation.
%
-% As many ecclesiastic documents and liturgical books use footnotes that are
-% very similar to the ordinary \LaTeX{} ones, we do not use this footnote
-% style as default even for the \lang{ecclesiasticlatin} language variant.
-% But you may use the \modifier{ecclesiasticfootnotes} modifier (with any
-% variant of Latin) if you prefer that footnote style.
+% As many ecclesiastical documents and liturgical books use footnotes that
+% are very similar to the ordinary \LaTeX{} ones, we do not use this
+% footnote style as default even for the \lang{ecclesiasticallatin} language
+% variant. But you may use the \modifier{ecclesiasticfootnotes} modifier
+% (with any variant of Latin) if you prefer that footnote style.
%
% Note that this modifier affects the entire document. It can only be
% applied to the document's main language.
%
-% \subsection{Legacy modifiers\label{legacymodifiers}}
+% \subsection{Legacy modifiers and language options\label{legacymodifiers}}
% \changes{2.0b}{2000/12/13}{Language attribute medieval declared}
% \changes{3.0}{2014/06/01}{Added modifier for classical spelling
% and hyphenation}
@@ -361,21 +367,30 @@
% proved to be disadvantageous concerning compatibility with other
% language-specific packages like \package{biblatex}. That's why v.\,4.0
% introduced the \lang{classiclatin}, \lang{medievallatin}, and
-% \lang{ecclesiasticlatin} languages.
+% \lang{ecclesiasticlatin} languages. \lang{classiclatin} and
+% \lang{ecclesiasticlatin} have been renamed to \lang{classicallatin} and
+% \lang{ecclesiasticallatin} in v.\,4.1 for the sake of philological
+% correctness.
%
% The legacy modifiers \modifier{classic}, \modifier{medieval}, and
-% \modifier{ecclesiastic} are still available and backwards compatibility is
-% made sure. However, a warning is issued if you use one of these modifiers.
+% \modifier{ecclesiastic} as well as the language options
+% \lang{classiclatin} and \lang{ecclesiasticlatin} are still available and
+% backwards compatibility is made sure. However, a warning is issued if you
+% use one of these modifiers or language options.
% They may be dropped from \babellatin{} in a future version.
%
% For maximum compatibility, replace
% \begin{itemize}
+% \item |\usepackage[classiclatin]{babel}| by
+% |\usepackage[classicallatin]{babel}|,
+% \item |\usepackage[ecclesiasticlatin]{babel}| by
+% |\usepackage[ecclesiasticallatin]{babel}|,
% \item |\usepackage[latin.classic]{babel}| by
-% |\usepackage[classiclatin]{babel}|,
+% |\usepackage[classicallatin]{babel}|,
% \item |\usepackage[latin.medieval]{babel}| by
% |\usepackage[medievallatin]{babel}|,
% \item |\usepackage[latin.ecclesiastic]{babel}| by\\
-% |\usepackage[ecclesiasticlatin.ecclesiasticfootnotes,activeacute]{babel}|.
+% |\usepackage[ecclesiasticallatin.ecclesiasticfootnotes,activeacute]{babel}|.
% \end{itemize}
%
% The last replacement is also recommended if you have been loading the
@@ -402,9 +417,9 @@
% \emph{Name of patterns} \\
% \midrule
% \lang{latin} & modern & \hyphpat{latin} \\
-% \lang{classiclatin} & classical & \hyphpat{classiclatin} \\
+% \lang{classicallatin} & classical & \hyphpat{classiclatin} \\
% \lang{medievallatin} & modern & \hyphpat{latin} \\
-% \lang{ecclesiasticlatin} & modern & \hyphpat{latin} \\
+% \lang{ecclesiasticallatin} & modern & \hyphpat{latin} \\
% -- & liturgical & \hyphpat{liturgicallatin} \\
% \bottomrule
% \end{tabular}
@@ -413,8 +428,8 @@
%
% To typeset a liturgical book in the recent “Solesmes style” say
% \begin{quote}
-% |\usepackage[ecclesiasticlatin.lowercasemonth]{babel}| \\
-% |\babelprovide[hyphenrules=liturgicallatin]{ecclesiasticlatin}|
+% |\usepackage[ecclesiasticallatin.lowercasemonth]{babel}| \\
+% |\babelprovide[hyphenrules=liturgicallatin]{ecclesiasticallatin}|
% \end{quote}
% The typical commands for a Latin text edition in the German-speaking
% world will be
@@ -432,7 +447,7 @@
% etymological hyphenation}
% \changes{4.0}{2021/06/27}{Additional shorthands for guillemets and accented
% letters for all language variants; additional shorthands for ligatures
-% for medieval and ecclesiastic Latin}
+% for medieval and ecclesiastical Latin}
% The following shorthands are available for all variants of Latin. Note
% that shorthands beginning with |'| are only available if you load \babel{}
% with the \modifier{activeacute} option.
@@ -450,7 +465,7 @@
% Ǽ, and \'Œ
% \end{shorthands}
% The following shorthands are only available for the \lang{medievallatin}
-% and the \lang{ecclesiasticlatin} languages. Again, the shorthands
+% and the \lang{ecclesiasticallatin} languages. Again, the shorthands
% beginning with |'| only work with \babel's \modifier{activeacute} option.
% \begin{shorthands}
% \item[|"ae|] for æ (ae ligature), also available for œ
@@ -534,9 +549,9 @@
% |\begindocument|
% \end{quote}
%
-% \babel{} does not provide |sty| files for \lang{classiclatin},
-% \lang{medievallatin}, and \lang{ecclesiasticlatin}. It should be possible
-% to create them locally if needed.
+% \babel{} does not provide |sty| files for \lang{classicallatin},
+% \lang{medievallatin}, and \lang{ecclesiasticallatin}. It should be
+% possible to create them locally if needed.
%
% Note that no Latin shorthands are available in plain \TeX.
% \StopEventually{}
@@ -551,22 +566,25 @@
% \cs{LatinMarksOff}}
% We identify the language definition file.
% \begin{macrocode}
-\ProvidesLanguage{latin}[2021-06-27 v4.0 Latin support from the babel system]
+\ProvidesLanguage{latin}[2025-04-29 v4.1 Latin support from the babel system]
% \end{macrocode}
% The macro |\LdfInit| takes care of preventing that this file is
% loaded more than once with the same option, checking the category
% code of the \texttt{@} sign, etc.
% \cs{CurrentOption} is the language requested by the user, i.\,e.,
-% \lang{latin}, \lang{classiclatin}, \lang{medievallatin}, or
-% \lang{ecclesiasticlatin}.
+% \lang{latin}, \lang{classicallatin}, \lang{medievallatin}, or
+% \lang{ecclesiasticallatin}.
% \begin{macrocode}
\LdfInit\CurrentOption{captions\CurrentOption}
% \end{macrocode}
-% For tests, we need variables containing three possible values of the
-% language name.
+% For tests, we need variables containing several possible values of the
+% language name (including \lang{classiclatin} and \lang{ecclesiasticlatin},
+% which are outdated, but still supported).
% \begin{macrocode}
+\def\babellatin at classical{classicallatin}
\def\babellatin at classic{classiclatin}
\def\babellatin at medieval{medievallatin}
+\def\babellatin at ecclesiastical{ecclesiasticallatin}
\def\babellatin at ecclesiastic{ecclesiasticlatin}
% \end{macrocode}
% \subsection{Hyphenation patterns}
@@ -583,11 +601,11 @@
\@nopatterns{latin}%
\adddialect\l at latin0
\fi}%
-\def\babellatin at test@classic at patterns{%
+\def\babellatin at test@classical at patterns{%
\ifx\l at classiclatin\undefined
\PackageWarningNoLine{babel-latin}{%
No hyphenation patterns were found for the\MessageBreak
- classiclatin language. Now I will use the\MessageBreak
+ classicallatin language. Now I will use the\MessageBreak
patterns for modern Latin instead}%
\babellatin at test@modern at patterns
\adddialect\l at classiclatin\l at latin
@@ -597,18 +615,28 @@
% and the (modern) \lang{latin} hyphenation patterns for all other varieties
% of Latin.
% \begin{macrocode}
-\ifx\CurrentOption\babellatin at classic
- \babellatin at test@classic at patterns
+\ifx\CurrentOption\babellatin at classical
+ \babellatin at test@classical at patterns
+ \adddialect\l at classicallatin\l at classiclatin
\else
- \ifx\CurrentOption\babellatin at ecclesiastic
- \babellatin at test@modern at patterns
- \adddialect\l at ecclesiasticlatin\l at latin
+ \ifx\CurrentOption\babellatin at classic
+ \babellatin at test@classical at patterns
\else
- \ifx\CurrentOption\babellatin at medieval
+ \ifx\CurrentOption\babellatin at ecclesiastical
\babellatin at test@modern at patterns
- \adddialect\l at medievallatin\l at latin
+ \adddialect\l at ecclesiasticallatin\l at latin
\else
- \babellatin at test@modern at patterns
+ \ifx\CurrentOption\babellatin at ecclesiastic
+ \babellatin at test@modern at patterns
+ \adddialect\l at ecclesiasticlatin\l at latin
+ \else
+ \ifx\CurrentOption\babellatin at medieval
+ \babellatin at test@modern at patterns
+ \adddialect\l at medievallatin\l at latin
+ \else
+ \babellatin at test@modern at patterns
+ \fi
+ \fi
\fi
\fi
\fi
@@ -615,12 +643,14 @@
% \end{macrocode}
% \subsection{Latin captions}
% We need a conditional governing the spelling of the captions. Medieval
-% and ecclesiastic Latin use the ligatures \ae{} and \oe, classical and
+% and ecclesiastical Latin use the ligatures \ae{} and \oe, classical and
% modern Latin do not.
% \begin{macrocode}
\newif\ifbabellatin at useligatures
\addto\extrasmedievallatin{\babellatin at useligaturestrue}%
\addto\noextrasmedievallatin{\babellatin at useligaturesfalse}%
+\addto\extrasecclesiasticallatin{\babellatin at useligaturestrue}%
+\addto\noextrasecclesiasticallatin{\babellatin at useligaturesfalse}%
\addto\extrasecclesiasticlatin{\babellatin at useligaturestrue}%
\addto\noextrasecclesiasticlatin{\babellatin at useligaturesfalse}%
% \end{macrocode}
@@ -650,6 +680,7 @@
\SetString\alsoname{cfr.}% Tabacco never saw "cfr" + "atque" or similar forms
\SetString\proofname{Demonstratio}
\SetString\glossaryname{Glossarium}
+\EndBabelCommands
% \end{macrocode}
% In the above definitions there are some points that might change
% in the future or that require a minimum of attention from the
@@ -681,33 +712,46 @@
% only one letter for the vowel and the consonant, and the u shape is an
% (uncial) variant of the capital V.
%
-% We use the commands recommended by the \babel{} manual.
-% \begin{macrocode}
-\StartBabelCommands*{classiclatin,medievallatin}{}
-% \end{macrocode}
-% The following command takes care for the correct behaviour of the
-% \cs{MakeUppercase} and the \cs{MakeLowercase} command. It makes sure that
+% We set the mapping only if the \LaTeX{} format is used because we need
+% commands for it that are not available in plain \TeX.
+% The following commands take care for the correct behaviour of the
+% \cs{MakeUppercase} and the \cs{MakeLowercase} command. They make sure that
% |\MakeUppercase{Heluetia}| yields ``HELVETIA'' and that
% |\MakeLowercase{LVDVS}| yields ``ludus''.
% \begin{macrocode}
- \SetCase{\uccode`u=`V}{\lccode`V=`u}
+\def\babellatin at latex{LaTeX2e}%
+\ifx\fmtname\babellatin at latex
+ \DeclareUppercaseMapping[la-x-classic]{`u}{V}
+ \DeclareLowercaseMapping[la-x-classic]{`V}{u}
% \end{macrocode}
-% The following command takes care for the correct hyphenation of words
-% written in capital letters. It makes sure that “LVDVS” is hyphenated the
-% same way as “ludus”.
-% \begin{macrocode}
- \SetHyphenMap{\BabelLower{`V}{`u}}
-% \end{macrocode}
+% The mapping for medieval Latin is part of the \package{l3text} module,
+% which is part of the \LaTeX\ format (see \file{source3.pdf}).
+%
% For Unicode-based engines, we also have to take into account characters
-% with diacritics. We map ú, ū, and ŭ to V because Unicode does not define a
-% single-character V with the respective diacritic.
+% with diacritics. We map ú, ū, and ŭ to V with the respective diacritic.
+% \changes{4.1}{2025/04/29}{Mapping ú, ū, and ŭ to \'{V}, V^^^^0304, and \u{V},
+% respectively, instead of just V, for \lang{classicallatin} and
+% \lang{medievallatin} if a Unicode engine is used}
% \begin{macrocode}
-\StartBabelCommands{classiclatin,medievallatin}{}[unicode,fontenc=TU,charset=utf8]
- \SetCase{\uccode`u=`V \uccode`ú=`V \uccode`ū=`V \uccode`ŭ=`V}{\lccode`V=`u}
+ \ExplSyntaxOn
+ \sys_if_engine_opentype:T
+ {
+ \DeclareUppercaseMapping[la-x-classic]{`ú}{\a'{V}}
+ \DeclareUppercaseMapping[la-x-classic]{`ū}{\a={V}}
+ \DeclareUppercaseMapping[la-x-classic]{`ŭ}{\u{V}}
+ \DeclareUppercaseMapping[la-x-medieval]{`ú}{\a'{V}}
+ \DeclareUppercaseMapping[la-x-medieval]{`ū}{\a={V}}
+ \DeclareUppercaseMapping[la-x-medieval]{`ŭ}{\u{V}}
+ }
+ \ExplSyntaxOff
+\fi
% \end{macrocode}
-% According to the \babel{} manual, the last \cs{StartBabelCommands} block
-% has to be finished by the following command.
+% The following \cs{BabelLower} command takes care for the correct
+% hyphenation of words written in capital letters. It makes sure that
+% “LVDVS” is hyphenated the same way as “ludus”.
% \begin{macrocode}
+\StartBabelCommands*{classicallatin,classiclatin,medievallatin}{}
+ \SetHyphenMap{\BabelLower{`V}{`u}}
\EndBabelCommands
% \end{macrocode}
% \subsection{The Latin date}
@@ -715,15 +759,17 @@
% spellings to the proper `extras' macros}
% \changes{4.0}{2021/06/27}{Do not use small caps for the day of month}
% We need three conditionals governing the spelling of the month names.
-% Ecclesiastic and modern Latin use the character v, classical and medieval
-% Latin use only u. This affects the month of November. The user may demand
-% to use the letter j where suitable or to lowercase month names using the
-% respective modifiers.
+% Ecclesiastical and modern Latin use the character v, classical and
+% medieval Latin use only u. This affects the month of November. The user
+% may demand to use the letter j where suitable or to lowercase month names
+% using the respective modifiers.
% \begin{macrocode}
\newif\ifbabellatin at usev
\newif\ifbabellatin at usej
\newif\ifbabellatin at lowercasemonth
\babellatin at usevtrue
+\addto\extrasclassicallatin{\babellatin at usevfalse}%
+\addto\noextrasclassicallatin{\babellatin at usevtrue}%
\addto\extrasclassiclatin{\babellatin at usevfalse}%
\addto\noextrasclassiclatin{\babellatin at usevtrue}%
\addto\extrasmedievallatin{\babellatin at usevfalse}%
@@ -747,8 +793,8 @@
\fi}%
% \end{macrocode}
% Depending on the chosen language, we have to define a \cs{latindate},
-% \cs{classiclatindate}, \cs{medievallatindate}, or
-% \cs{ecclesiasticlatindate} command. The date format is “XXXI Decembris
+% \cs{classicallatindate}, \cs{medievallatindate}, or
+% \cs{ecclesiasticallatindate} command. The date format is “XXXI Decembris
% MMXXI”.
% \begin{macrocode}
\expandafter\def\csname date\CurrentOption\endcsname{%
@@ -765,10 +811,11 @@
}%
% \end{macrocode}
% \subsection{Shorthands}
+% \changes{4.1}{2025/04/29}{Improved shorthand implementation also working
+% within tabbing environments}
% We define shorthands only if the \LaTeX{} format is used because we need
% commands for them that are not available in plain \TeX.
% \begin{macrocode}
-\def\babellatin at latex{LaTeX2e}%
\ifx\fmtname\babellatin at latex
% \end{macrocode}
% Every shorthand character needs an \cs{initiate at active@char} command,
@@ -787,7 +834,7 @@
% A peculiarity of the \babellatin{} package are shorthands of different
% lengths. |"| before a letter character defines an additional hyphenation
% point, but |"ae| is a shorthand for the ligature `æ' in medieval and
-% ecclesiastic Latin. So the shorthands definitions are rather complex and
+% ecclesiastical Latin. So the shorthands definitions are rather complex and
% we need expl3 syntax for them.
% \begin{macrocode}
\ExplSyntaxOn
@@ -924,36 +971,36 @@
{
\str_case:nnF {#1}
{
- {A} { \babellatin_ligature_shorthand:Nnn E { \'\AE }
+ {A} { \babellatin_ligature_shorthand:Nnn E { \a'\AE }
{
- \babellatin_ligature_shorthand:Nnn e { \'\AE } { Á }
+ \babellatin_ligature_shorthand:Nnn e { \a'\AE } { Á }
}
}
- {a} { \babellatin_ligature_shorthand:Nnn e { \'\ae } { á } }
+ {a} { \babellatin_ligature_shorthand:Nnn e { \a'\ae } { á } }
{E} { É }
{e} { é }
{I} { Í }
{i} { í }
- {O} { \babellatin_ligature_shorthand:Nnn E { \'\OE }
+ {O} { \babellatin_ligature_shorthand:Nnn E { \a'\OE }
{
- \babellatin_ligature_shorthand:Nnn e { \'\OE } { Ó }
+ \babellatin_ligature_shorthand:Nnn e { \a'\OE } { Ó }
}
}
- {o} { \babellatin_ligature_shorthand:Nnn e { \'\oe } { ó } }
+ {o} { \babellatin_ligature_shorthand:Nnn e { \a'\oe } { ó } }
{U} { Ú }
{u} { ú }
- {V} { \'V }
- {Y} { \'Y }
- {y} { \'y }
- {Æ} { \'\AE }
- {æ} { \'\ae }
- {Œ} { \'\OE }
- {œ} { \'\oe }
+ {V} { \a'V }
+ {Y} { \a'Y }
+ {y} { \a'y }
+ {Æ} { \a'\AE }
+ {æ} { \a'\ae }
+ {Œ} { \a'\OE }
+ {œ} { \a'\oe }
}
{
\tl_if_single_token:nTF {#1}
{
- \babellatin_if_ligature_command:NTF #1 { \' }
+ \babellatin_if_ligature_command:NTF #1 { \a' }
{
\token_to_str:N '
}
@@ -979,46 +1026,46 @@
{
\str_case:nnF {#1}
{
- {A} { \babellatin_ligature_macron:NNnn AE { \=\AE }
+ {A} { \babellatin_ligature_macron:NNnn AE { \a=\AE }
{
- \babellatin_ligature_macron:NNnn Ae { \=\AE }
+ \babellatin_ligature_macron:NNnn Ae { \a=\AE }
{
\babellatin_diphthong_macron:NNn AU
{
- \babellatin_diphthong_macron:NNn Au { \=A }
+ \babellatin_diphthong_macron:NNn Au { \a=A }
}
}
}
}
- {a} { \babellatin_ligature_macron:NNnn ae { \=\ae }
+ {a} { \babellatin_ligature_macron:NNnn ae { \a=\ae }
{
- \babellatin_diphthong_macron:NNn au { \=a }
+ \babellatin_diphthong_macron:NNn au { \a=a }
}
}
{E} { \babellatin_diphthong_macron:NNn EU
{
- \babellatin_diphthong_macron:NNn Eu { \=E }
+ \babellatin_diphthong_macron:NNn Eu { \a=E }
}
}
- {e} { \babellatin_diphthong_macron:NNn eu { \=e } }
- {I} { \=I }
- {i} { \=\i }
- {O} { \babellatin_ligature_macron:NNnn OE { \=\OE }
+ {e} { \babellatin_diphthong_macron:NNn eu { \a=e } }
+ {I} { \a=I }
+ {i} { \a=\i }
+ {O} { \babellatin_ligature_macron:NNnn OE { \a=\OE }
{
- \babellatin_ligature_macron:NNnn Oe { \=\OE } { \=O }
+ \babellatin_ligature_macron:NNnn Oe { \a=\OE } { \a=O }
}
}
- {o} { \babellatin_ligature_macron:NNnn oe { \=\oe } { \=o } }
- {U} { \=U }
- {u} { \=u }
- {V} { \=V }
- {Y} { \=Y }
- {y} { \=y }
+ {o} { \babellatin_ligature_macron:NNnn oe { \a=\oe } { \a=o } }
+ {U} { \a=U }
+ {u} { \a=u }
+ {V} { \a=V }
+ {Y} { \a=Y }
+ {y} { \a=y }
}
{
\tl_if_single_token:nTF {#1}
{
- \babellatin_if_ligature_command:NTF #1 { \= }
+ \babellatin_if_ligature_command:NTF #1 { \a= }
{
\token_to_str:N =
}
@@ -1187,7 +1234,7 @@
% For the |"<| and the |">| shorthands we have to define the meaning of the
% macros used for their definition. The commands \cs{guillemetleft} and
% \cs{guillemetright} are provided by \babel. We will have to change this
-% definition later on for \lang{ecclesiasticlatin} if pdf\TeX{} is used.
+% definition later on for \lang{ecclesiasticallatin} if pdf\TeX{} is used.
% \begin{macrocode}
\let\babellatin at guillemetleft\guillemetleft
\let\babellatin at guillemetright\guillemetright
@@ -1213,7 +1260,7 @@
}{}%
\fi
% \end{macrocode}
-% \subsection{Ecclesiastic punctuation spacing}
+% \subsection{Ecclesiastical punctuation spacing}
% We define some conditionals concerning the engine used.
% \begin{macrocode}
\newif\ifbabellatin at luatex
@@ -1235,7 +1282,7 @@
% file is documented in section \ref{luamodule}.
% \begin{macrocode}
\ifbabellatin at luatex
- \directlua{require('ecclesiasticlatin')}%
+ \directlua{ecclesiasticallatin=require('ecclesiasticallatin')}%
\else
% \end{macrocode}
% The following command inserts a kern of 1/12 of a quad. This is the only
@@ -1412,10 +1459,14 @@
\fi
}%
% \end{macrocode}
-% We call the previously defined command for ecclesiastic Latin.
+% We call the previously defined command for ecclesiastical Latin.
% \begin{macrocode}
-\ifx\CurrentOption\babellatin at ecclesiastic
+\ifx\CurrentOption\babellatin at ecclesiastical
\babellatin at prepare@punctuation at spacing
+\else
+ \ifx\CurrentOption\babellatin at ecclesiastic
+ \babellatin at prepare@punctuation at spacing
+ \fi
\fi
% \end{macrocode}
% The following function actually enables the spacing of punctuation.
@@ -1425,7 +1476,7 @@
% For \LuaTeX{} we just have to call a function of the Lua module.
% \begin{macrocode}
\ifbabellatin at luatex
- \directlua{ecclesiasticlatin.activate_spacing()}%
+ \directlua{ecclesiasticallatin.activate_spacing()}%
\else
% \end{macrocode}
% For \XeTeX{} we have to enable the character classes functionality and
@@ -1477,7 +1528,7 @@
% \begin{macrocode}
\def\babellatin at no@punctuation at spacing{%
\ifbabellatin at luatex
- \directlua{ecclesiasticlatin.deactivate_spacing()}%
+ \directlua{ecclesiasticallatin.deactivate_spacing()}%
\else
\ifbabellatin at xetex
\XeTeXcharclass `\! \z@
@@ -1509,8 +1560,10 @@
\fi
}%
% \end{macrocode}
-% Punctuation is spaced in ecclesiastic Latin only.
+% Punctuation is spaced in ecclesiastical Latin only.
% \begin{macrocode}
+\addto\extrasecclesiasticallatin{\babellatin at punctuation@spacing}%
+\addto\noextrasecclesiasticallatin{\babellatin at no@punctuation at spacing}%
\addto\extrasecclesiasticlatin{\babellatin at punctuation@spacing}%
\addto\noextrasecclesiasticlatin{\babellatin at no@punctuation at spacing}%
% \end{macrocode}
@@ -1564,11 +1617,6 @@
% definition of this command.
% \begin{macrocode}
\bbl at shorthandoff\z@{=}%
-% \end{macrocode}
-% The following line is currently uncommented because switching |^| off and
-% on does not work as expected.\footnote{See
-% \url{https://github.com/latex3/babel/issues/126}.}
-% \begin{macrocode}
\bbl at shorthandoff\tw@{^}%
}%
\babellatin at declare@prosodic at shorthands
@@ -1585,18 +1633,10 @@
% \begin{macrocode}
\def\ProsodicMarksOn{%
\shorthandon{=}%
-% \end{macrocode}
-% The following line is currently uncommented because switching |^| off and
-% on does not work as expected.
-% \begin{macrocode}
\shorthandon{^}%
}%
\def\ProsodicMarksOff{%
\shorthandoff{=}%
-% \end{macrocode}
-% The following line is currently uncommented because switching |^| off and
-% on does not work as expected.
-% \begin{macrocode}
\shorthandoff*{^}%
}%
}%
@@ -1626,7 +1666,7 @@
}%
\fi
% \end{macrocode}
-% \subsubsection{Ecclesiastic footnotes}
+% \subsubsection{Ecclesiastical footnotes}
% The \modifier{ecclesiasticfootnotes} option sets the footnotes globally to
% the style defined by the (now outdated) \package{ecclesiastic} package.
% The definition takes place at the end of the package to be able to check
@@ -1665,25 +1705,30 @@
% \modifier{ecclesiastic} for backwards compatibility. We issue a warning if
% they are used.
% \begin{macrocode}
-\def\babellatin at outdated@modifier#1{%
+\def\babellatin at outdated@modifier#1#2{%
\PackageWarningNoLine{babel-latin}{%
The `#1' modifier is outdated. Please\MessageBreak
consult the babel-latin manual and consider\MessageBreak
- to load the language `#1latin' instead\MessageBreak
- of `latin.#1'}%
+ to load the language `#2'\MessageBreak
+ instead of `latin.#1'}%
}%
+\def\babellatin at outdated@language#1#2{%
+ \PackageWarningNoLine{babel-latin}{%
+ The `#1' language is outdated.\MessageBreak
+ Please load the language `#2'\MessageBreak
+ instead}%
+}%
\bbl at declare@ttribute{latin}{classic}{%
- \babellatin at outdated@modifier{classic}%
+ \babellatin at outdated@modifier{classic}{classicallatin}%
\addto\extraslatin{\babellatin at usevfalse}%
\addto\noextraslatin{\babellatin at usevtrue}%
- \babellatin at test@classic at patterns
+ \babellatin at test@classical at patterns
\let\l at latin\l at classiclatin
- \StartBabelCommands*{latin}{}%
- \SetCase{\uccode `u=`V}{\lccode `V=`u}%
- \EndBabelCommands
+ \DeclareUppercaseMapping[la]{`u}{V}%
+ \DeclareLowercaseMapping[la]{`V}{u}%
}%
\bbl at declare@ttribute{latin}{medieval}{%
- \babellatin at outdated@modifier{medieval}%
+ \babellatin at outdated@modifier{medieval}{medievallatin}%
\addto\extraslatin{%
\babellatin at usevfalse
\def\prefacename{Pr\ae fatio}%
@@ -1691,12 +1736,11 @@
\addto\noextraslatin{%
\babellatin at usevtrue
}%
- \StartBabelCommands*{latin}{}%
- \SetCase{\uccode `u=`V}{\lccode `V=`u}%
- \EndBabelCommands%
+ \DeclareUppercaseMapping[la]{`u}{V}%
+ \DeclareLowercaseMapping[la]{`V}{u}%
}%
\bbl at declare@ttribute{latin}{ecclesiastic}{%
- \babellatin at outdated@modifier{ecclesiastic}%
+ \babellatin at outdated@modifier{ecclesiastic}{ecclesiasticallatin}%
\babellatin at prepare@punctuation at spacing
\babellatin at ecclesiastic@outdated at commands
% \end{macrocode}
@@ -1787,27 +1831,35 @@
% \iffalse
%</latin>
% \fi
-% \babel{} expects \file{ldf} files for \lang{classiclatin},
-% \lang{medievallatin} and \lang{ecclesiasticlatin}. These files themselves
-% only load \file{latin.ldf}, which does the real work:
+% \babel{} expects \file{ldf} files for \lang{classicallatin},
+% \lang{medievallatin} and \lang{ecclesiasticallatin}. These files
+% themselves only load \file{latin.ldf}, which does the real work:
% \begin{macrocode}
%<classic>\ProvidesLanguage{classiclatin}
+%<classical>\ProvidesLanguage{classicallatin}
%<ecclesiastic>\ProvidesLanguage{ecclesiasticlatin}
+%<ecclesiastical>\ProvidesLanguage{ecclesiasticallatin}
%<medieval>\ProvidesLanguage{medievallatin}
% \end{macrocode}
% \iffalse
-%<*classic|ecclesiastic|medieval>
+%<*classic|classical|ecclesiastic|ecclesiastical|medieval>
% \fi
% \begin{macrocode}
\input latin.ldf\relax
% \end{macrocode}
% \iffalse
-%</classic|ecclesiastic|medieval>
+%</classic|classical|ecclesiastic|ecclesiastical|medieval>
% \fi
+% We issue a warning if the outdated languages \lang{classiclatin} and
+% \lang{ecclesiasticlatin} are called:
+% \begin{macrocode}
+%<classic>\babellatin at outdated@language{classiclatin}{classicallatin}%
+%<ecclesiastic>\babellatin at outdated@language{ecclesiasticlatin}{ecclesiasticallatin}%
+% \end{macrocode}
% \subsection{The Lua module\label{luamodule}}
% In case \LuaTeX{} is used for compilation, the spacing of punctuation for
-% ecclesiastic Latin requires some Lua code, which is stored in
-% \file{ecclesiasticlatin.lua}. The original version of this code has been
+% ecclesiastical Latin requires some Lua code, which is stored in
+% \file{ecclesiasticallatin.lua}. The original version of this code has been
% written for the \package{polyglossia} package by É. Roux and others.
%
% \iffalse
@@ -1817,10 +1869,10 @@
% \package{ltluatex}.
% \begin{macrocode}
luatexbase.provides_module({
- name = "ecclesiasticlatin",
- date = "2021-06-27",
- version = "4.0",
- description = "babel-latin punctuation spacing for ecclesiastic Latin"
+ name = "ecclesiasticallatin",
+ date = "2025-04-29",
+ version = "4.1",
+ description = "babel-latin punctuation spacing for ecclesiastical Latin"
})
local add_to_callback = luatexbase.add_to_callback
local in_callback = luatexbase.in_callback
@@ -1989,7 +2041,7 @@
% \end{macrocode}
% \LuaTeX{} attribute determining whether to space punctuation or not:
% \begin{macrocode}
-local punct_attr = new_attribute("ecclesiasticlatin_punct")
+local punct_attr = new_attribute("ecclesiasticallatin_punct")
% \end{macrocode}
% Tables containing the left and right space amount (in units of a quad) of
% every character:
@@ -2084,7 +2136,7 @@
end
% \end{macrocode}
% Now we define the actual amount of space for the relevant punctuation
-% characters. For ecclesiastic Latin (and sometimes for Italian) a very
+% characters. For ecclesiastical Latin (and sometimes for Italian) a very
% small space is used for the punctuation. The ecclesiastic package, a
% predecessor of the current \babellatin{}, used a space of
% 0.3|\fontdimen2|, where |\fontdimen2| is an interword space, which is
@@ -2117,8 +2169,8 @@
local function activate()
tex.setattribute(punct_attr, 1)
for _, callback_name in ipairs{ "pre_linebreak_filter", "hpack_filter" } do
- if not in_callback(callback_name, "ecclesiasticlatin-punct.process") then
- add_to_callback(callback_name, process, "ecclesiasticlatin-punct.process", 1)
+ if not in_callback(callback_name, "ecclesiasticallatin-punct.process") then
+ add_to_callback(callback_name, process, "ecclesiasticallatin-punct.process")
end
end
end
@@ -2136,11 +2188,13 @@
end
% \end{macrocode}
% For external access to the activation and deactivation of the punctuation
-% spacing, we define two functions with the prefix |ecclesiasticlatin|.
+% spacing, we define a table |ecclesiasticallatin| containing two functions.
+% We return this table.
% \begin{macrocode}
-ecclesiasticlatin = ecclesiasticlatin or {}
-ecclesiasticlatin.activate_spacing = activate
-ecclesiasticlatin.deactivate_spacing = deactivate
+ecclesiasticallatin = ecclesiasticallatin or {}
+ecclesiasticallatin.activate_spacing = activate
+ecclesiasticallatin.deactivate_spacing = deactivate
+return ecclesiasticallatin
% \end{macrocode}
% \iffalse
%</lua>
Modified: trunk/Master/texmf-dist/source/generic/babel-latin/latin.ins
===================================================================
--- trunk/Master/texmf-dist/source/generic/babel-latin/latin.ins 2025-04-30 19:32:31 UTC (rev 75069)
+++ trunk/Master/texmf-dist/source/generic/babel-latin/latin.ins 2025-04-30 19:32:51 UTC (rev 75070)
@@ -5,7 +5,7 @@
%%
%% Copyright (C) 1989-2008 by Johannes L. Braams
%% Copyright (C) 2009-2020 by Claudio Beccari
-%% Copyright (C) 2021 by Keno Wehr
+%% Copyright (C) 2021-2025 by Keno Wehr
%% All rights reserved.
%%
%% This file is part of the babel-latin package.
@@ -25,7 +25,7 @@
%%
%% --------------- start of docstrip commands ------------------
%%
-\def\filedate{2021/05/02}
+\def\filedate{2025-04-29}
\def\batchfile{latin.ins}
\input docstrip.tex
@@ -48,7 +48,7 @@
Copyright (C) 1989-2008 by Johannes L. Braams
Copyright (C) 2009-2020 by Claudio Beccari
-Copyright (C) 2021 by Keno Wehr
+Copyright (C) 2021-2025 by Keno Wehr
All rights reserved.
This file is part of the babel-latin package.
@@ -75,7 +75,9 @@
\usedir{tex/generic/babel-latin}
\usepreamble\mainpreamble
-\generate{\file{classiclatin.ldf}{\from{latin.dtx}{classic}}
+\generate{\file{classicallatin.ldf}{\from{latin.dtx}{classical}}
+ \file{classiclatin.ldf}{\from{latin.dtx}{classic}}
+ \file{ecclesiasticallatin.ldf}{\from{latin.dtx}{ecclesiastical}}
\file{ecclesiasticlatin.ldf}{\from{latin.dtx}{ecclesiastic}}
\file{latin.ldf}{\from{latin.dtx}{latin}}
\file{medievallatin.ldf}{\from{latin.dtx}{medieval}}
@@ -89,7 +91,7 @@
polyglossia package by É. Roux and others. The code has been adapted for
the babel-latin package by K. Wehr.
-Copyright (C) 2021 by Keno Wehr
+Copyright (C) 2021-2025 by Keno Wehr
All rights reserved.
This file is part of the babel-latin package.
@@ -114,7 +116,7 @@
\usepreamble\luapreamble
\nopostamble
-\generate{\file{ecclesiasticlatin.lua}{\from{latin.dtx}{lua}}}
+\generate{\file{ecclesiasticallatin.lua}{\from{latin.dtx}{lua}}}
\ifToplevel{
\Msg{***********************************************************}
@@ -122,8 +124,9 @@
\Msg{* To finish the installation you have to move the following}
\Msg{* files into a directory searched by TeX:}
\Msg{*}
-\Msg{* \space\space classiclatin.ldf, ecclesiasticlatin.ldf,}
-\Msg{* \space\space ecclesiasticlatin.lua, latin.ldf, medievallatin.ldf}
+\Msg{* \space\space classicallatin.ldf, classiclatin.ldf,}
+\Msg{* \space\space ecclesiasticallatin.ldf, ecclesiasticallatin.lua,}
+\Msg{* \space\space ecclesiasticlatin.ldf, latin.ldf, medievallatin.ldf}
\Msg{*}
\Msg{* To produce the documentation run the file latin.dtx}
\Msg{* through LaTeX.}
Added: trunk/Master/texmf-dist/tex/generic/babel-latin/classicallatin.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel-latin/classicallatin.ldf (rev 0)
+++ trunk/Master/texmf-dist/tex/generic/babel-latin/classicallatin.ldf 2025-04-30 19:32:51 UTC (rev 75070)
@@ -0,0 +1,35 @@
+%%
+%% This is file `classicallatin.ldf',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% latin.dtx (with options: `classical')
+%%
+%% Copyright (C) 1989-2008 by Johannes L. Braams
+%% Copyright (C) 2009-2020 by Claudio Beccari
+%% Copyright (C) 2021-2025 by Keno Wehr
+%% All rights reserved.
+%%
+%% This file is part of the babel-latin package.
+%% ----------------------------------------------
+%%
+%% 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 Keno Wehr.
+%%
+%% Please report errors to: https://github.com/wehro/babel-latin/issues
+%%
+\ProvidesLanguage{classicallatin}
+\input latin.ldf\relax
+\endinput
+%%
+%% End of file `classicallatin.ldf'.
Property changes on: trunk/Master/texmf-dist/tex/generic/babel-latin/classicallatin.ldf
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/generic/babel-latin/classiclatin.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel-latin/classiclatin.ldf 2025-04-30 19:32:31 UTC (rev 75069)
+++ trunk/Master/texmf-dist/tex/generic/babel-latin/classiclatin.ldf 2025-04-30 19:32:51 UTC (rev 75070)
@@ -8,7 +8,7 @@
%%
%% Copyright (C) 1989-2008 by Johannes L. Braams
%% Copyright (C) 2009-2020 by Claudio Beccari
-%% Copyright (C) 2021 by Keno Wehr
+%% Copyright (C) 2021-2025 by Keno Wehr
%% All rights reserved.
%%
%% This file is part of the babel-latin package.
@@ -30,6 +30,7 @@
%%
\ProvidesLanguage{classiclatin}
\input latin.ldf\relax
+\babellatin at outdated@language{classiclatin}{classicallatin}%
\endinput
%%
%% End of file `classiclatin.ldf'.
Added: trunk/Master/texmf-dist/tex/generic/babel-latin/ecclesiasticallatin.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel-latin/ecclesiasticallatin.ldf (rev 0)
+++ trunk/Master/texmf-dist/tex/generic/babel-latin/ecclesiasticallatin.ldf 2025-04-30 19:32:51 UTC (rev 75070)
@@ -0,0 +1,35 @@
+%%
+%% This is file `ecclesiasticallatin.ldf',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% latin.dtx (with options: `ecclesiastical')
+%%
+%% Copyright (C) 1989-2008 by Johannes L. Braams
+%% Copyright (C) 2009-2020 by Claudio Beccari
+%% Copyright (C) 2021-2025 by Keno Wehr
+%% All rights reserved.
+%%
+%% This file is part of the babel-latin package.
+%% ----------------------------------------------
+%%
+%% 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 Keno Wehr.
+%%
+%% Please report errors to: https://github.com/wehro/babel-latin/issues
+%%
+\ProvidesLanguage{ecclesiasticallatin}
+\input latin.ldf\relax
+\endinput
+%%
+%% End of file `ecclesiasticallatin.ldf'.
Property changes on: trunk/Master/texmf-dist/tex/generic/babel-latin/ecclesiasticallatin.ldf
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/generic/babel-latin/ecclesiasticallatin.lua
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel-latin/ecclesiasticallatin.lua (rev 0)
+++ trunk/Master/texmf-dist/tex/generic/babel-latin/ecclesiasticallatin.lua 2025-04-30 19:32:51 UTC (rev 75070)
@@ -0,0 +1,261 @@
+--
+-- This is file `ecclesiasticallatin.lua',
+-- generated with the docstrip utility.
+--
+-- The original source files were:
+--
+-- latin.dtx (with options: `lua')
+--
+-- The original version of the following Lua code has been written for the
+-- polyglossia package by É. Roux and others. The code has been adapted for
+-- the babel-latin package by K. Wehr.
+--
+-- Copyright (C) 2021-2025 by Keno Wehr
+-- All rights reserved.
+--
+-- This file is part of the babel-latin package.
+-- ----------------------------------------------
+--
+-- 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 Keno Wehr.
+--
+-- Please report errors to: https://github.com/wehro/babel-latin/issues
+--
+luatexbase.provides_module({
+ name = "ecclesiasticallatin",
+ date = "2025-04-29",
+ version = "4.1",
+ description = "babel-latin punctuation spacing for ecclesiastical Latin"
+})
+local add_to_callback = luatexbase.add_to_callback
+local in_callback = luatexbase.in_callback
+local new_attribute = luatexbase.new_attribute
+local node = node
+local insert_node_before = node.insert_before
+local insert_node_after = node.insert_after
+local remove_node = node.remove
+local has_attribute = node.has_attribute
+local node_copy = node.copy
+local new_node = node.new
+local end_of_math = node.end_of_math
+local get_next = node.getnext
+local get_prev = node.getprev
+local get_property = node.getproperty
+local glue_code = node.id"glue"
+local glyph_code = node.id"glyph"
+local penalty_code = node.id"penalty"
+local kern_code = node.id"kern"
+local math_code = node.id"math"
+local userkern = 1
+local removable_skip = {
+ [0] = true, -- userskip
+ [13] = true, -- spaceskip
+ [14] = true -- xspaceskip
+}
+local kern_node = new_node(kern_code)
+kern_node.subtype = userkern
+local function get_kern_node(dim)
+ local n = node_copy(kern_node)
+ n.kern = dim
+ return n
+end
+local space_chars = {
+ [0x20] = true, -- space
+ [0xA0] = true, -- no-break space
+ [0x1680] = true, -- ogham space mark
+ [0x2000] = true, -- en quad
+ [0x2001] = true, -- em quad
+ [0x2002] = true, -- en space
+ [0x2003] = true, -- em space
+ [0x2004] = true, -- three-per-em-space
+ [0x2005] = true, -- four-per-em space
+ [0x2006] = true, -- six-per-em space
+ [0x2007] = true, -- figure space
+ [0x2008] = true, -- punctuation space
+ [0x2009] = true, -- thin space
+ [0x200A] = true, -- hair space
+ [0x202F] = true, -- narrow no-break space
+ [0x205F] = true, -- medium mathematical space
+ [0x3000] = true -- ideographic space
+}
+local left_bracket_chars = {
+ [0x28] = true, -- left parenthesis
+ [0x5B] = true, -- left square bracket
+ [0x7B] = true, -- left curly bracket
+ [0x27E8] = true -- mathematical left angle bracket
+}
+local right_bracket_chars = {
+ [0x29] = true, -- right parenthesis
+ [0x5D] = true, -- right square bracket
+ [0x7D] = true, -- right curly bracket
+ [0x27E9] = true -- mathematical right angle bracket
+}
+local question_exclamation_chars = {
+ [0x21] = true, -- exclamation mark !
+ [0x3F] = true, -- question mark ?
+ [0x203C] = true, -- double exclamation mark ‼
+ [0x203D] = true, -- interrobang ‽
+ [0x2047] = true, -- double question mark ⁇
+ [0x2048] = true, -- question exclamation mark ⁈
+ [0x2049] = true -- exclamation question mark ⁉
+}
+local function somespace(n)
+ if n then
+ local id, subtype = n.id, n.subtype
+ if id == glue_code then
+ return removable_skip[subtype]
+ elseif id == kern_code then
+ return subtype == userkern
+ elseif id == glyph_code then
+ return space_chars[n.char]
+ end
+ end
+end
+local function someleftbracket(n)
+ if n then
+ local id = n.id
+ if id == glyph_code then
+ return left_bracket_chars[n.char]
+ end
+ end
+end
+local function somerightbracket(n)
+ if n then
+ local id = n.id
+ if id == glyph_code then
+ return right_bracket_chars[n.char]
+ end
+ end
+end
+local function question_exclamation_sequence(n1, n2)
+ if n1 and n2 then
+ local id1 = n1.id
+ local id2 = n2.id
+ if id1 == glyph_code and id2 == glyph_code then
+ return question_exclamation_chars[n1.char] and question_exclamation_chars[n2.char]
+ end
+ end
+end
+local function somepenalty(n, value)
+ if n then
+ local id = n.id
+ if id == penalty_code then
+ if value then
+ return n.penalty == value
+ else
+ return true
+ end
+ end
+ end
+end
+local punct_attr = new_attribute("ecclesiasticallatin_punct")
+local left_space = {}
+local right_space = {}
+local function process(head)
+ local current = head
+ while current do
+ local id = current.id
+ if id == glyph_code then
+ if has_attribute(current, punct_attr) then
+ local char = get_property(current) and get_property(current).glyph_info
+ if not char and current.char <= 0x10FFFF then
+ char = utf8.char(current.char)
+ end
+ local leftspace, rightspace
+ if char then
+ leftspace = left_space[char]
+ rightspace = right_space[char]
+ end
+ if leftspace or rightspace then
+ local fontparameters = fonts.hashes.parameters[current.font]
+ local spacing_node
+ if leftspace and fontparameters then
+ local prev = get_prev(current)
+ local space_exception = false
+ if prev then
+ space_exception = someleftbracket(prev)
+ or question_exclamation_sequence(prev, current)
+ while somespace(prev) do
+ head = remove_node(head, prev)
+ prev = get_prev(current)
+ end
+ if somepenalty(prev, 10000) then
+ head = remove_node(head, prev)
+ end
+ end
+ spacing_node = get_kern_node(leftspace * fontparameters.quad)
+ if not space_exception then
+ head = insert_node_before(head, current, spacing_node)
+ end
+ end
+ if rightspace and fontparameters then
+ local next = get_next(current)
+ local space_exception = false
+ if next then
+ space_exception = somerightbracket(next)
+ local nextnext = get_next(next)
+ if somepenalty(next, 10000) and somespace(nextnext) then
+ head, next = remove_node(head, next)
+ end
+ while somespace(next) do
+ head, next = remove_node(head, next)
+ end
+ end
+ spacing_node = get_kern_node(rightspace * fontparameters.quad)
+ if not space_exception then
+ head, current = insert_node_after(head, current, spacing_node)
+ end
+ end
+ end
+ end
+ elseif id == math_code then
+ current = end_of_math(current)
+ end
+ current = get_next(current)
+ end
+ return head
+end
+local hairspace = 0.08333 -- 1/12
+local function space_left(char)
+ left_space[char] = hairspace
+end
+local function space_right(char, kern)
+ right_space[char] = hairspace
+end
+space_left('!')
+space_left('?')
+space_left('‼')
+space_left('⁇')
+space_left('⁈')
+space_left('⁉')
+space_left('‽') -- U+203D (interrobang)
+space_left(':')
+space_left(';')
+space_left('»')
+space_left('›')
+space_right('«')
+space_right('‹')
+local function activate()
+ tex.setattribute(punct_attr, 1)
+ for _, callback_name in ipairs{ "pre_linebreak_filter", "hpack_filter" } do
+ if not in_callback(callback_name, "ecclesiasticallatin-punct.process") then
+ add_to_callback(callback_name, process, "ecclesiasticallatin-punct.process")
+ end
+ end
+end
+local function deactivate()
+ tex.setattribute(punct_attr, -0x7FFFFFFF) -- this value means "unset"
+end
+ecclesiasticallatin = ecclesiasticallatin or {}
+ecclesiasticallatin.activate_spacing = activate
+ecclesiasticallatin.deactivate_spacing = deactivate
+return ecclesiasticallatin
Property changes on: trunk/Master/texmf-dist/tex/generic/babel-latin/ecclesiasticallatin.lua
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/generic/babel-latin/ecclesiasticlatin.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel-latin/ecclesiasticlatin.ldf 2025-04-30 19:32:31 UTC (rev 75069)
+++ trunk/Master/texmf-dist/tex/generic/babel-latin/ecclesiasticlatin.ldf 2025-04-30 19:32:51 UTC (rev 75070)
@@ -8,7 +8,7 @@
%%
%% Copyright (C) 1989-2008 by Johannes L. Braams
%% Copyright (C) 2009-2020 by Claudio Beccari
-%% Copyright (C) 2021 by Keno Wehr
+%% Copyright (C) 2021-2025 by Keno Wehr
%% All rights reserved.
%%
%% This file is part of the babel-latin package.
@@ -30,6 +30,7 @@
%%
\ProvidesLanguage{ecclesiasticlatin}
\input latin.ldf\relax
+\babellatin at outdated@language{ecclesiasticlatin}{ecclesiasticallatin}%
\endinput
%%
%% End of file `ecclesiasticlatin.ldf'.
Deleted: trunk/Master/texmf-dist/tex/generic/babel-latin/ecclesiasticlatin.lua
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel-latin/ecclesiasticlatin.lua 2025-04-30 19:32:31 UTC (rev 75069)
+++ trunk/Master/texmf-dist/tex/generic/babel-latin/ecclesiasticlatin.lua 2025-04-30 19:32:51 UTC (rev 75070)
@@ -1,260 +0,0 @@
---
--- This is file `ecclesiasticlatin.lua',
--- generated with the docstrip utility.
---
--- The original source files were:
---
--- latin.dtx (with options: `lua')
---
--- The original version of the following Lua code has been written for the
--- polyglossia package by É. Roux and others. The code has been adapted for
--- the babel-latin package by K. Wehr.
---
--- Copyright (C) 2021 by Keno Wehr
--- All rights reserved.
---
--- This file is part of the babel-latin package.
--- ----------------------------------------------
---
--- 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 Keno Wehr.
---
--- Please report errors to: https://github.com/wehro/babel-latin/issues
---
-luatexbase.provides_module({
- name = "ecclesiasticlatin",
- date = "2021-06-27",
- version = "4.0",
- description = "babel-latin punctuation spacing for ecclesiastic Latin"
-})
-local add_to_callback = luatexbase.add_to_callback
-local in_callback = luatexbase.in_callback
-local new_attribute = luatexbase.new_attribute
-local node = node
-local insert_node_before = node.insert_before
-local insert_node_after = node.insert_after
-local remove_node = node.remove
-local has_attribute = node.has_attribute
-local node_copy = node.copy
-local new_node = node.new
-local end_of_math = node.end_of_math
-local get_next = node.getnext
-local get_prev = node.getprev
-local get_property = node.getproperty
-local glue_code = node.id"glue"
-local glyph_code = node.id"glyph"
-local penalty_code = node.id"penalty"
-local kern_code = node.id"kern"
-local math_code = node.id"math"
-local userkern = 1
-local removable_skip = {
- [0] = true, -- userskip
- [13] = true, -- spaceskip
- [14] = true -- xspaceskip
-}
-local kern_node = new_node(kern_code)
-kern_node.subtype = userkern
-local function get_kern_node(dim)
- local n = node_copy(kern_node)
- n.kern = dim
- return n
-end
-local space_chars = {
- [0x20] = true, -- space
- [0xA0] = true, -- no-break space
- [0x1680] = true, -- ogham space mark
- [0x2000] = true, -- en quad
- [0x2001] = true, -- em quad
- [0x2002] = true, -- en space
- [0x2003] = true, -- em space
- [0x2004] = true, -- three-per-em-space
- [0x2005] = true, -- four-per-em space
- [0x2006] = true, -- six-per-em space
- [0x2007] = true, -- figure space
- [0x2008] = true, -- punctuation space
- [0x2009] = true, -- thin space
- [0x200A] = true, -- hair space
- [0x202F] = true, -- narrow no-break space
- [0x205F] = true, -- medium mathematical space
- [0x3000] = true -- ideographic space
-}
-local left_bracket_chars = {
- [0x28] = true, -- left parenthesis
- [0x5B] = true, -- left square bracket
- [0x7B] = true, -- left curly bracket
- [0x27E8] = true -- mathematical left angle bracket
-}
-local right_bracket_chars = {
- [0x29] = true, -- right parenthesis
- [0x5D] = true, -- right square bracket
- [0x7D] = true, -- right curly bracket
- [0x27E9] = true -- mathematical right angle bracket
-}
-local question_exclamation_chars = {
- [0x21] = true, -- exclamation mark !
- [0x3F] = true, -- question mark ?
- [0x203C] = true, -- double exclamation mark ‼
- [0x203D] = true, -- interrobang ‽
- [0x2047] = true, -- double question mark ⁇
- [0x2048] = true, -- question exclamation mark ⁈
- [0x2049] = true -- exclamation question mark ⁉
-}
-local function somespace(n)
- if n then
- local id, subtype = n.id, n.subtype
- if id == glue_code then
- return removable_skip[subtype]
- elseif id == kern_code then
- return subtype == userkern
- elseif id == glyph_code then
- return space_chars[n.char]
- end
- end
-end
-local function someleftbracket(n)
- if n then
- local id = n.id
- if id == glyph_code then
- return left_bracket_chars[n.char]
- end
- end
-end
-local function somerightbracket(n)
- if n then
- local id = n.id
- if id == glyph_code then
- return right_bracket_chars[n.char]
- end
- end
-end
-local function question_exclamation_sequence(n1, n2)
- if n1 and n2 then
- local id1 = n1.id
- local id2 = n2.id
- if id1 == glyph_code and id2 == glyph_code then
- return question_exclamation_chars[n1.char] and question_exclamation_chars[n2.char]
- end
- end
-end
-local function somepenalty(n, value)
- if n then
- local id = n.id
- if id == penalty_code then
- if value then
- return n.penalty == value
- else
- return true
- end
- end
- end
-end
-local punct_attr = new_attribute("ecclesiasticlatin_punct")
-local left_space = {}
-local right_space = {}
-local function process(head)
- local current = head
- while current do
- local id = current.id
- if id == glyph_code then
- if has_attribute(current, punct_attr) then
- local char = get_property(current) and get_property(current).glyph_info
- if not char and current.char <= 0x10FFFF then
- char = utf8.char(current.char)
- end
- local leftspace, rightspace
- if char then
- leftspace = left_space[char]
- rightspace = right_space[char]
- end
- if leftspace or rightspace then
- local fontparameters = fonts.hashes.parameters[current.font]
- local spacing_node
- if leftspace and fontparameters then
- local prev = get_prev(current)
- local space_exception = false
- if prev then
- space_exception = someleftbracket(prev)
- or question_exclamation_sequence(prev, current)
- while somespace(prev) do
- head = remove_node(head, prev)
- prev = get_prev(current)
- end
- if somepenalty(prev, 10000) then
- head = remove_node(head, prev)
- end
- end
- spacing_node = get_kern_node(leftspace * fontparameters.quad)
- if not space_exception then
- head = insert_node_before(head, current, spacing_node)
- end
- end
- if rightspace and fontparameters then
- local next = get_next(current)
- local space_exception = false
- if next then
- space_exception = somerightbracket(next)
- local nextnext = get_next(next)
- if somepenalty(next, 10000) and somespace(nextnext) then
- head, next = remove_node(head, next)
- end
- while somespace(next) do
- head, next = remove_node(head, next)
- end
- end
- spacing_node = get_kern_node(rightspace * fontparameters.quad)
- if not space_exception then
- head, current = insert_node_after(head, current, spacing_node)
- end
- end
- end
- end
- elseif id == math_code then
- current = end_of_math(current)
- end
- current = get_next(current)
- end
- return head
-end
-local hairspace = 0.08333 -- 1/12
-local function space_left(char)
- left_space[char] = hairspace
-end
-local function space_right(char, kern)
- right_space[char] = hairspace
-end
-space_left('!')
-space_left('?')
-space_left('‼')
-space_left('⁇')
-space_left('⁈')
-space_left('⁉')
-space_left('‽') -- U+203D (interrobang)
-space_left(':')
-space_left(';')
-space_left('»')
-space_left('›')
-space_right('«')
-space_right('‹')
-local function activate()
- tex.setattribute(punct_attr, 1)
- for _, callback_name in ipairs{ "pre_linebreak_filter", "hpack_filter" } do
- if not in_callback(callback_name, "ecclesiasticlatin-punct.process") then
- add_to_callback(callback_name, process, "ecclesiasticlatin-punct.process", 1)
- end
- end
-end
-local function deactivate()
- tex.setattribute(punct_attr, -0x7FFFFFFF) -- this value means "unset"
-end
-ecclesiasticlatin = ecclesiasticlatin or {}
-ecclesiasticlatin.activate_spacing = activate
-ecclesiasticlatin.deactivate_spacing = deactivate
Modified: trunk/Master/texmf-dist/tex/generic/babel-latin/latin.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel-latin/latin.ldf 2025-04-30 19:32:31 UTC (rev 75069)
+++ trunk/Master/texmf-dist/tex/generic/babel-latin/latin.ldf 2025-04-30 19:32:51 UTC (rev 75070)
@@ -8,7 +8,7 @@
%%
%% Copyright (C) 1989-2008 by Johannes L. Braams
%% Copyright (C) 2009-2020 by Claudio Beccari
-%% Copyright (C) 2021 by Keno Wehr
+%% Copyright (C) 2021-2025 by Keno Wehr
%% All rights reserved.
%%
%% This file is part of the babel-latin package.
@@ -28,10 +28,12 @@
%%
%% Please report errors to: https://github.com/wehro/babel-latin/issues
%%
-\ProvidesLanguage{latin}[2021-06-27 v4.0 Latin support from the babel system]
+\ProvidesLanguage{latin}[2025-04-29 v4.1 Latin support from the babel system]
\LdfInit\CurrentOption{captions\CurrentOption}
+\def\babellatin at classical{classicallatin}
\def\babellatin at classic{classiclatin}
\def\babellatin at medieval{medievallatin}
+\def\babellatin at ecclesiastical{ecclesiasticallatin}
\def\babellatin at ecclesiastic{ecclesiasticlatin}
\providehyphenmins{\CurrentOption}{\tw@\tw@}
\def\babellatin at test@modern at patterns{%
@@ -39,27 +41,37 @@
\@nopatterns{latin}%
\adddialect\l at latin0
\fi}%
-\def\babellatin at test@classic at patterns{%
+\def\babellatin at test@classical at patterns{%
\ifx\l at classiclatin\undefined
\PackageWarningNoLine{babel-latin}{%
No hyphenation patterns were found for the\MessageBreak
- classiclatin language. Now I will use the\MessageBreak
+ classicallatin language. Now I will use the\MessageBreak
patterns for modern Latin instead}%
\babellatin at test@modern at patterns
\adddialect\l at classiclatin\l at latin
\fi}%
-\ifx\CurrentOption\babellatin at classic
- \babellatin at test@classic at patterns
+\ifx\CurrentOption\babellatin at classical
+ \babellatin at test@classical at patterns
+ \adddialect\l at classicallatin\l at classiclatin
\else
- \ifx\CurrentOption\babellatin at ecclesiastic
- \babellatin at test@modern at patterns
- \adddialect\l at ecclesiasticlatin\l at latin
+ \ifx\CurrentOption\babellatin at classic
+ \babellatin at test@classical at patterns
\else
- \ifx\CurrentOption\babellatin at medieval
+ \ifx\CurrentOption\babellatin at ecclesiastical
\babellatin at test@modern at patterns
- \adddialect\l at medievallatin\l at latin
+ \adddialect\l at ecclesiasticallatin\l at latin
\else
- \babellatin at test@modern at patterns
+ \ifx\CurrentOption\babellatin at ecclesiastic
+ \babellatin at test@modern at patterns
+ \adddialect\l at ecclesiasticlatin\l at latin
+ \else
+ \ifx\CurrentOption\babellatin at medieval
+ \babellatin at test@modern at patterns
+ \adddialect\l at medievallatin\l at latin
+ \else
+ \babellatin at test@modern at patterns
+ \fi
+ \fi
\fi
\fi
\fi
@@ -66,6 +78,8 @@
\newif\ifbabellatin at useligatures
\addto\extrasmedievallatin{\babellatin at useligaturestrue}%
\addto\noextrasmedievallatin{\babellatin at useligaturesfalse}%
+\addto\extrasecclesiasticallatin{\babellatin at useligaturestrue}%
+\addto\noextrasecclesiasticallatin{\babellatin at useligaturesfalse}%
\addto\extrasecclesiasticlatin{\babellatin at useligaturestrue}%
\addto\noextrasecclesiasticlatin{\babellatin at useligaturesfalse}%
\StartBabelCommands*{\CurrentOption}{captions}
@@ -90,16 +104,32 @@
\SetString\alsoname{cfr.}% Tabacco never saw "cfr" + "atque" or similar forms
\SetString\proofname{Demonstratio}
\SetString\glossaryname{Glossarium}
-\StartBabelCommands*{classiclatin,medievallatin}{}
- \SetCase{\uccode`u=`V}{\lccode`V=`u}
+\EndBabelCommands
+\def\babellatin at latex{LaTeX2e}%
+\ifx\fmtname\babellatin at latex
+ \DeclareUppercaseMapping[la-x-classic]{`u}{V}
+ \DeclareLowercaseMapping[la-x-classic]{`V}{u}
+ \ExplSyntaxOn
+ \sys_if_engine_opentype:T
+ {
+ \DeclareUppercaseMapping[la-x-classic]{`ú}{\a'{V}}
+ \DeclareUppercaseMapping[la-x-classic]{`ū}{\a={V}}
+ \DeclareUppercaseMapping[la-x-classic]{`ŭ}{\u{V}}
+ \DeclareUppercaseMapping[la-x-medieval]{`ú}{\a'{V}}
+ \DeclareUppercaseMapping[la-x-medieval]{`ū}{\a={V}}
+ \DeclareUppercaseMapping[la-x-medieval]{`ŭ}{\u{V}}
+ }
+ \ExplSyntaxOff
+\fi
+\StartBabelCommands*{classicallatin,classiclatin,medievallatin}{}
\SetHyphenMap{\BabelLower{`V}{`u}}
-\StartBabelCommands{classiclatin,medievallatin}{}[unicode,fontenc=TU,charset=utf8]
- \SetCase{\uccode`u=`V \uccode`ú=`V \uccode`ū=`V \uccode`ŭ=`V}{\lccode`V=`u}
\EndBabelCommands
\newif\ifbabellatin at usev
\newif\ifbabellatin at usej
\newif\ifbabellatin at lowercasemonth
\babellatin at usevtrue
+\addto\extrasclassicallatin{\babellatin at usevfalse}%
+\addto\noextrasclassicallatin{\babellatin at usevtrue}%
\addto\extrasclassiclatin{\babellatin at usevfalse}%
\addto\noextrasclassiclatin{\babellatin at usevtrue}%
\addto\extrasmedievallatin{\babellatin at usevfalse}%
@@ -130,7 +160,6 @@
\uppercase\expandafter{\romannumeral\year}%
}%
}%
-\def\babellatin at latex{LaTeX2e}%
\ifx\fmtname\babellatin at latex
\initiate at active@char{"}%
\@ifpackagewith{babel}{activeacute}{\initiate at active@char{'}}{}%
@@ -222,36 +251,36 @@
{
\str_case:nnF {#1}
{
- {A} { \babellatin_ligature_shorthand:Nnn E { \'\AE }
+ {A} { \babellatin_ligature_shorthand:Nnn E { \a'\AE }
{
- \babellatin_ligature_shorthand:Nnn e { \'\AE } { Á }
+ \babellatin_ligature_shorthand:Nnn e { \a'\AE } { Á }
}
}
- {a} { \babellatin_ligature_shorthand:Nnn e { \'\ae } { á } }
+ {a} { \babellatin_ligature_shorthand:Nnn e { \a'\ae } { á } }
{E} { É }
{e} { é }
{I} { Í }
{i} { í }
- {O} { \babellatin_ligature_shorthand:Nnn E { \'\OE }
+ {O} { \babellatin_ligature_shorthand:Nnn E { \a'\OE }
{
- \babellatin_ligature_shorthand:Nnn e { \'\OE } { Ó }
+ \babellatin_ligature_shorthand:Nnn e { \a'\OE } { Ó }
}
}
- {o} { \babellatin_ligature_shorthand:Nnn e { \'\oe } { ó } }
+ {o} { \babellatin_ligature_shorthand:Nnn e { \a'\oe } { ó } }
{U} { Ú }
{u} { ú }
- {V} { \'V }
- {Y} { \'Y }
- {y} { \'y }
- {Æ} { \'\AE }
- {æ} { \'\ae }
- {Œ} { \'\OE }
- {œ} { \'\oe }
+ {V} { \a'V }
+ {Y} { \a'Y }
+ {y} { \a'y }
+ {Æ} { \a'\AE }
+ {æ} { \a'\ae }
+ {Œ} { \a'\OE }
+ {œ} { \a'\oe }
}
{
\tl_if_single_token:nTF {#1}
{
- \babellatin_if_ligature_command:NTF #1 { \' }
+ \babellatin_if_ligature_command:NTF #1 { \a' }
{
\token_to_str:N '
}
@@ -266,46 +295,46 @@
{
\str_case:nnF {#1}
{
- {A} { \babellatin_ligature_macron:NNnn AE { \=\AE }
+ {A} { \babellatin_ligature_macron:NNnn AE { \a=\AE }
{
- \babellatin_ligature_macron:NNnn Ae { \=\AE }
+ \babellatin_ligature_macron:NNnn Ae { \a=\AE }
{
\babellatin_diphthong_macron:NNn AU
{
- \babellatin_diphthong_macron:NNn Au { \=A }
+ \babellatin_diphthong_macron:NNn Au { \a=A }
}
}
}
}
- {a} { \babellatin_ligature_macron:NNnn ae { \=\ae }
+ {a} { \babellatin_ligature_macron:NNnn ae { \a=\ae }
{
- \babellatin_diphthong_macron:NNn au { \=a }
+ \babellatin_diphthong_macron:NNn au { \a=a }
}
}
{E} { \babellatin_diphthong_macron:NNn EU
{
- \babellatin_diphthong_macron:NNn Eu { \=E }
+ \babellatin_diphthong_macron:NNn Eu { \a=E }
}
}
- {e} { \babellatin_diphthong_macron:NNn eu { \=e } }
- {I} { \=I }
- {i} { \=\i }
- {O} { \babellatin_ligature_macron:NNnn OE { \=\OE }
+ {e} { \babellatin_diphthong_macron:NNn eu { \a=e } }
+ {I} { \a=I }
+ {i} { \a=\i }
+ {O} { \babellatin_ligature_macron:NNnn OE { \a=\OE }
{
- \babellatin_ligature_macron:NNnn Oe { \=\OE } { \=O }
+ \babellatin_ligature_macron:NNnn Oe { \a=\OE } { \a=O }
}
}
- {o} { \babellatin_ligature_macron:NNnn oe { \=\oe } { \=o } }
- {U} { \=U }
- {u} { \=u }
- {V} { \=V }
- {Y} { \=Y }
- {y} { \=y }
+ {o} { \babellatin_ligature_macron:NNnn oe { \a=\oe } { \a=o } }
+ {U} { \a=U }
+ {u} { \a=u }
+ {V} { \a=V }
+ {Y} { \a=Y }
+ {y} { \a=y }
}
{
\tl_if_single_token:nTF {#1}
{
- \babellatin_if_ligature_command:NTF #1 { \= }
+ \babellatin_if_ligature_command:NTF #1 { \a= }
{
\token_to_str:N =
}
@@ -451,7 +480,7 @@
\fi
\def\babellatin at prepare@punctuation at spacing{%
\ifbabellatin at luatex
- \directlua{require('ecclesiasticlatin')}%
+ \directlua{ecclesiasticallatin=require('ecclesiasticallatin')}%
\else
\def\babellatin at insert@punctuation at space{%
\kern0.08333\fontdimen6\font
@@ -541,12 +570,16 @@
\fi
\fi
}%
-\ifx\CurrentOption\babellatin at ecclesiastic
+\ifx\CurrentOption\babellatin at ecclesiastical
\babellatin at prepare@punctuation at spacing
+\else
+ \ifx\CurrentOption\babellatin at ecclesiastic
+ \babellatin at prepare@punctuation at spacing
+ \fi
\fi
\def\babellatin at punctuation@spacing{%
\ifbabellatin at luatex
- \directlua{ecclesiasticlatin.activate_spacing()}%
+ \directlua{ecclesiasticallatin.activate_spacing()}%
\else
\ifbabellatin at xetex
\XeTeXinterchartokenstate = 1
@@ -585,7 +618,7 @@
}%
\def\babellatin at no@punctuation at spacing{%
\ifbabellatin at luatex
- \directlua{ecclesiasticlatin.deactivate_spacing()}%
+ \directlua{ecclesiasticallatin.deactivate_spacing()}%
\else
\ifbabellatin at xetex
\XeTeXcharclass `\! \z@
@@ -616,6 +649,8 @@
\fi
\fi
}%
+\addto\extrasecclesiasticallatin{\babellatin at punctuation@spacing}%
+\addto\noextrasecclesiasticallatin{\babellatin at no@punctuation at spacing}%
\addto\extrasecclesiasticlatin{\babellatin at punctuation@spacing}%
\addto\noextrasecclesiasticlatin{\babellatin at no@punctuation at spacing}%
\bbl at declare@ttribute\CurrentOption{usej}{%
@@ -690,25 +725,30 @@
\hbox{\normalfont\@thefnmark.}%
\enspace #1%
}%
-\def\babellatin at outdated@modifier#1{%
+\def\babellatin at outdated@modifier#1#2{%
\PackageWarningNoLine{babel-latin}{%
The `#1' modifier is outdated. Please\MessageBreak
consult the babel-latin manual and consider\MessageBreak
- to load the language `#1latin' instead\MessageBreak
- of `latin.#1'}%
+ to load the language `#2'\MessageBreak
+ instead of `latin.#1'}%
}%
+\def\babellatin at outdated@language#1#2{%
+ \PackageWarningNoLine{babel-latin}{%
+ The `#1' language is outdated.\MessageBreak
+ Please load the language `#2'\MessageBreak
+ instead}%
+}%
\bbl at declare@ttribute{latin}{classic}{%
- \babellatin at outdated@modifier{classic}%
+ \babellatin at outdated@modifier{classic}{classicallatin}%
\addto\extraslatin{\babellatin at usevfalse}%
\addto\noextraslatin{\babellatin at usevtrue}%
- \babellatin at test@classic at patterns
+ \babellatin at test@classical at patterns
\let\l at latin\l at classiclatin
- \StartBabelCommands*{latin}{}%
- \SetCase{\uccode `u=`V}{\lccode `V=`u}%
- \EndBabelCommands
+ \DeclareUppercaseMapping[la]{`u}{V}%
+ \DeclareLowercaseMapping[la]{`V}{u}%
}%
\bbl at declare@ttribute{latin}{medieval}{%
- \babellatin at outdated@modifier{medieval}%
+ \babellatin at outdated@modifier{medieval}{medievallatin}%
\addto\extraslatin{%
\babellatin at usevfalse
\def\prefacename{Pr\ae fatio}%
@@ -716,12 +756,11 @@
\addto\noextraslatin{%
\babellatin at usevtrue
}%
- \StartBabelCommands*{latin}{}%
- \SetCase{\uccode `u=`V}{\lccode `V=`u}%
- \EndBabelCommands%
+ \DeclareUppercaseMapping[la]{`u}{V}%
+ \DeclareLowercaseMapping[la]{`V}{u}%
}%
\bbl at declare@ttribute{latin}{ecclesiastic}{%
- \babellatin at outdated@modifier{ecclesiastic}%
+ \babellatin at outdated@modifier{ecclesiastic}{ecclesiasticallatin}%
\babellatin at prepare@punctuation at spacing
\babellatin at ecclesiastic@outdated at commands
\initiate at active@char{'}%
Modified: trunk/Master/texmf-dist/tex/generic/babel-latin/medievallatin.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel-latin/medievallatin.ldf 2025-04-30 19:32:31 UTC (rev 75069)
+++ trunk/Master/texmf-dist/tex/generic/babel-latin/medievallatin.ldf 2025-04-30 19:32:51 UTC (rev 75070)
@@ -8,7 +8,7 @@
%%
%% Copyright (C) 1989-2008 by Johannes L. Braams
%% Copyright (C) 2009-2020 by Claudio Beccari
-%% Copyright (C) 2021 by Keno Wehr
+%% Copyright (C) 2021-2025 by Keno Wehr
%% All rights reserved.
%%
%% This file is part of the babel-latin package.
More information about the tex-live-commits
mailing list.