You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1021 lines
32 KiB
1021 lines
32 KiB
\ProvidesFile{gloss-latin.ldf}[polyglossia: module for Latin v.2.3 2020-03-08]
|
|
|
|
\ExplSyntaxOn
|
|
|
|
\PolyglossiaSetup {latin}
|
|
{
|
|
bcp47 = la,
|
|
hyphenmins = {2,2},
|
|
frenchspacing = true,
|
|
fontsetup = true,
|
|
langtag = LAT
|
|
}
|
|
|
|
% BCP-47 compliant aliases
|
|
\setlanguagealias*{latin}{la}
|
|
\setlanguagealias*[variant=classic]{latin}{la-x-classic}
|
|
\setlanguagealias*[variant=ecclesiastic]{latin}{la-x-ecclesia}
|
|
\setlanguagealias*[variant=medieval]{latin}{la-x-medieval}
|
|
|
|
% Babel aliases
|
|
\setlanguagealias[variant=classic]{latin}{classiclatin}
|
|
\setlanguagealias[variant=ecclesiastic]{latin}{ecclesiasticlatin}
|
|
\setlanguagealias[variant=medieval]{latin}{medievallatin}
|
|
|
|
|
|
%%%%% Variables and commands concerning spelling
|
|
|
|
\bool_new:N \l_polyglossia_latin_use_j_bool
|
|
\bool_new:N \l_polyglossia_latin_use_v_bool
|
|
\bool_new:N \l_polyglossia_latin_use_digraphs_bool
|
|
\bool_new:N \l_polyglossia_latin_capitalize_month_bool
|
|
|
|
\cs_new:Npn \polyglossia_latin_classical_character_codes:
|
|
{
|
|
\char_set_lccode:nn {`\V} {`\u}
|
|
\char_set_uccode:nn {`\u} {`\V}
|
|
\char_set_uccode:nn {`\ú} {`\V}
|
|
\char_set_uccode:nn {`\ū} {`\V}
|
|
\char_set_uccode:nn {`\ŭ} {`\V}
|
|
}
|
|
|
|
\cs_new:Npn \polyglossia_latin_modern_character_codes:
|
|
{
|
|
\char_set_lccode:nn {`\V} {`\v}
|
|
\char_set_uccode:nn {`\u} {`\U}
|
|
\char_set_uccode:nn {`\ú} {`\Ú}
|
|
\char_set_uccode:nn {`\ū} {`\Ū}
|
|
\char_set_uccode:nn {`\ŭ} {`\Ŭ}
|
|
}
|
|
|
|
|
|
%%%%% Messages and commands concerning hyphenation
|
|
|
|
\msg_new:nnn {polyglossia} {latin / missing modern patterns}
|
|
{
|
|
The~hyphenation~patterns~for~modern~Latin~were~not~found~\msg_line_context:.
|
|
}
|
|
|
|
\msg_new:nnn {polyglossia} {latin / missing patterns}
|
|
{
|
|
The~"#1"~hyphenation~patterns~were~not~found~\msg_line_context:.~
|
|
I~will~use~the~patterns~for~modern~Latin~instead.
|
|
}
|
|
|
|
\cs_new:Npn \polyglossia_latin_use_modern_patterns:
|
|
{
|
|
\xpg@ifdefined {latin}
|
|
{
|
|
\def \latin@language
|
|
{
|
|
\polyglossia@setup@language@patterns {latin}
|
|
\str_case:Vn \l_polyglossia_latin_variant_str
|
|
{
|
|
{classic} { \adddialect \l@classiclatin \l@latin }
|
|
{medieval} { \adddialect \l@medievallatin \l@latin }
|
|
{ecclesiastic} { \adddialect \l@ecclesiasticlatin \l@latin }
|
|
}
|
|
}
|
|
}
|
|
{
|
|
\msg_warning:nn {polyglossia} {latin / missing modern patterns}
|
|
\str_case:Vn \l_polyglossia_latin_variant_str
|
|
{
|
|
{classic} { \adddialect \l@classiclatin \l@nohyphenation }
|
|
{medieval} { \adddialect \l@medievallatin \l@nohyphenation }
|
|
{modern} { \adddialect \l@latin \l@nohyphenation }
|
|
{ecclesiastic} { \adddialect \l@ecclesiasticlatin \l@nohyphenation }
|
|
}
|
|
}
|
|
}
|
|
|
|
\cs_new:Npn \polyglossia_latin_set_patterns:n #1
|
|
% #1 may be "classiclatin" or "liturgicallatin"
|
|
{
|
|
\xpg@ifdefined {#1}
|
|
{
|
|
\def \latin@language
|
|
{
|
|
\polyglossia@setup@language@patterns {#1}
|
|
\str_case:Vn \l_polyglossia_latin_variant_str
|
|
{
|
|
{classic} {
|
|
\str_if_eq:nnF {#1} {classiclatin}
|
|
{
|
|
\adddialect \l@classiclatin { \use:c {l@#1} }
|
|
}
|
|
}
|
|
{medieval} { \adddialect \l@medievallatin { \use:c {l@#1} } }
|
|
{modern} { \adddialect \l@latin { \use:c {l@#1} } }
|
|
{ecclesiastic} { \adddialect \l@ecclesiasticlatin { \use:c {l@#1} } }
|
|
}
|
|
}
|
|
}
|
|
{
|
|
\msg_warning:nnn {polyglossia} {latin / missing patterns} {#1}
|
|
\polyglossia_latin_use_modern_patterns:
|
|
}
|
|
}
|
|
|
|
|
|
%%%%% Settings for the spacing of the punctuation for ecclesiastical Latin
|
|
|
|
\bool_new:N \g_polyglossia_latin_punctuation_spacing_bool
|
|
|
|
\sys_if_engine_luatex:TF
|
|
{
|
|
\directlua { require('polyglossia-latin') }
|
|
}
|
|
{
|
|
\newXeTeXintercharclass \g_polyglossia_latin_question_exclamation_class
|
|
\newXeTeXintercharclass \g_polyglossia_latin_colon_semicolon_class
|
|
\newXeTeXintercharclass \g_polyglossia_latin_opening_guillemet_class
|
|
\newXeTeXintercharclass \g_polyglossia_latin_closing_guillemet_class
|
|
\newXeTeXintercharclass \g_polyglossia_latin_opening_bracket_class
|
|
\newXeTeXintercharclass \g_polyglossia_latin_closing_bracket_class
|
|
|
|
\cs_new:Npn \polyglossia_latin_insert_punctuation_space:
|
|
{
|
|
\nobreak
|
|
\skip_horizontal:n { 0.08333 \fontdimen6 \font } % 1/12 quad
|
|
}
|
|
\cs_new:Npn \polyglossia_latin_replace_preceding_space:
|
|
{
|
|
\dim_compare:nNnT {\lastskip} > {\c_zero_dim} {\unskip}
|
|
\polyglossia_latin_insert_punctuation_space:
|
|
}
|
|
\cs_new:Npn \polyglossia_latin_replace_following_space:
|
|
{
|
|
\polyglossia_latin_insert_punctuation_space:
|
|
\ignorespaces
|
|
}
|
|
}
|
|
|
|
\cs_new:Npn \polyglossia_latin_punctuation_spacing:
|
|
{
|
|
\sys_if_engine_luatex:TF
|
|
{
|
|
\directlua { polyglossia.activate_latin_punct() }
|
|
}
|
|
{
|
|
\XeTeXinterchartokenstate = 1
|
|
\XeTeXcharclass `\! \g_polyglossia_latin_question_exclamation_class
|
|
\XeTeXcharclass `\? \g_polyglossia_latin_question_exclamation_class
|
|
\XeTeXcharclass `\‼ \g_polyglossia_latin_question_exclamation_class
|
|
\XeTeXcharclass `\⁇ \g_polyglossia_latin_question_exclamation_class
|
|
\XeTeXcharclass `\⁈ \g_polyglossia_latin_question_exclamation_class
|
|
\XeTeXcharclass `\⁉ \g_polyglossia_latin_question_exclamation_class
|
|
\XeTeXcharclass `\‽ \g_polyglossia_latin_question_exclamation_class
|
|
\XeTeXcharclass `\; \g_polyglossia_latin_colon_semicolon_class
|
|
\XeTeXcharclass `\: \g_polyglossia_latin_colon_semicolon_class
|
|
\XeTeXcharclass `\« \g_polyglossia_latin_opening_guillemet_class
|
|
\XeTeXcharclass `\» \g_polyglossia_latin_closing_guillemet_class
|
|
\XeTeXcharclass `\‹ \g_polyglossia_latin_opening_guillemet_class
|
|
\XeTeXcharclass `\› \g_polyglossia_latin_closing_guillemet_class
|
|
\XeTeXcharclass `\( \g_polyglossia_latin_opening_bracket_class
|
|
\XeTeXcharclass `\) \g_polyglossia_latin_closing_bracket_class
|
|
\XeTeXcharclass `\[ \g_polyglossia_latin_opening_bracket_class
|
|
\XeTeXcharclass `\] \g_polyglossia_latin_closing_bracket_class
|
|
\XeTeXcharclass `\{ \g_polyglossia_latin_opening_bracket_class
|
|
\XeTeXcharclass `\} \g_polyglossia_latin_closing_bracket_class
|
|
\XeTeXcharclass `\⟨ \g_polyglossia_latin_opening_bracket_class
|
|
\XeTeXcharclass `\⟩ \g_polyglossia_latin_closing_bracket_class
|
|
|
|
% question or exclamation mark followed by a closing guillemet
|
|
\XeTeXinterchartoks \g_polyglossia_latin_question_exclamation_class \g_polyglossia_latin_closing_guillemet_class =
|
|
{
|
|
\polyglossia_latin_insert_punctuation_space:
|
|
}
|
|
% question or exclamation mark followed by a colon or semicolon
|
|
\XeTeXinterchartoks \g_polyglossia_latin_question_exclamation_class \g_polyglossia_latin_colon_semicolon_class =
|
|
{
|
|
\polyglossia_latin_insert_punctuation_space:
|
|
}
|
|
% colon or semicolon followed by a closing guillemet
|
|
\XeTeXinterchartoks \g_polyglossia_latin_colon_semicolon_class \g_polyglossia_latin_closing_guillemet_class =
|
|
{
|
|
\polyglossia_latin_insert_punctuation_space:
|
|
}
|
|
% closing bracket followed by a question or exclamation mark
|
|
\XeTeXinterchartoks \g_polyglossia_latin_closing_bracket_class \g_polyglossia_latin_question_exclamation_class =
|
|
{
|
|
\polyglossia_latin_insert_punctuation_space:
|
|
}
|
|
% closing bracket followed by a colon or semicolon
|
|
\XeTeXinterchartoks \g_polyglossia_latin_closing_bracket_class \g_polyglossia_latin_colon_semicolon_class =
|
|
{
|
|
\polyglossia_latin_insert_punctuation_space:
|
|
}
|
|
% closing bracket followed by a closing guillemet
|
|
\XeTeXinterchartoks \g_polyglossia_latin_closing_bracket_class \g_polyglossia_latin_closing_guillemet_class =
|
|
{
|
|
\polyglossia_latin_insert_punctuation_space:
|
|
}
|
|
% opening guillemet followed by a space
|
|
\XeTeXinterchartoks \g_polyglossia_latin_opening_guillemet_class \xpg@boundaryclass =
|
|
{
|
|
\polyglossia_latin_replace_following_space:
|
|
}
|
|
% opening guillemet followed by an opening guillemet
|
|
\XeTeXinterchartoks \g_polyglossia_latin_opening_guillemet_class \g_polyglossia_latin_opening_guillemet_class =
|
|
{
|
|
\polyglossia_latin_insert_punctuation_space:
|
|
}
|
|
% opening guillemet followed by an ordinary character
|
|
\XeTeXinterchartoks \g_polyglossia_latin_opening_guillemet_class \z@ =
|
|
{
|
|
\polyglossia_latin_insert_punctuation_space:
|
|
}
|
|
% closing guillemet followed by a closing guillemet
|
|
\XeTeXinterchartoks \g_polyglossia_latin_closing_guillemet_class \g_polyglossia_latin_closing_guillemet_class =
|
|
{
|
|
\polyglossia_latin_insert_punctuation_space:
|
|
}
|
|
% closing guillemet followed by a question or exclamation mark
|
|
\XeTeXinterchartoks \g_polyglossia_latin_closing_guillemet_class \g_polyglossia_latin_question_exclamation_class =
|
|
{
|
|
\polyglossia_latin_insert_punctuation_space:
|
|
}
|
|
% closing guillemet followed by a colon or semicolon
|
|
\XeTeXinterchartoks \g_polyglossia_latin_closing_guillemet_class \g_polyglossia_latin_colon_semicolon_class =
|
|
{
|
|
\polyglossia_latin_insert_punctuation_space:
|
|
}
|
|
% space followed by a question or exclamation mark
|
|
\XeTeXinterchartoks \xpg@boundaryclass \g_polyglossia_latin_question_exclamation_class =
|
|
{
|
|
\polyglossia_latin_replace_preceding_space:
|
|
}
|
|
% space followed by a colon or semicolon
|
|
\XeTeXinterchartoks \xpg@boundaryclass \g_polyglossia_latin_colon_semicolon_class =
|
|
{
|
|
\polyglossia_latin_replace_preceding_space:
|
|
}
|
|
% space followed by closing guillemet
|
|
\XeTeXinterchartoks \xpg@boundaryclass \g_polyglossia_latin_closing_guillemet_class =
|
|
{
|
|
\polyglossia_latin_replace_preceding_space:
|
|
}
|
|
% ordinary character followed by a question or exclamation mark
|
|
\XeTeXinterchartoks \z@ \g_polyglossia_latin_question_exclamation_class =
|
|
{
|
|
\polyglossia_latin_insert_punctuation_space:
|
|
}
|
|
% ordinary character followed by a colon or semicolon
|
|
\XeTeXinterchartoks \z@ \g_polyglossia_latin_colon_semicolon_class =
|
|
{
|
|
\polyglossia_latin_insert_punctuation_space:
|
|
}
|
|
% ordinary character followed by closing guillemet
|
|
\XeTeXinterchartoks \z@ \g_polyglossia_latin_closing_guillemet_class =
|
|
{
|
|
\polyglossia_latin_insert_punctuation_space:
|
|
}
|
|
}
|
|
}
|
|
|
|
\cs_new:Npn \polyglossia_latin_no_punctuation_spacing:
|
|
{
|
|
\sys_if_engine_luatex:TF
|
|
{
|
|
\directlua { polyglossia.deactivate_latin_punct() }
|
|
}
|
|
{
|
|
\XeTeXcharclass `\! \z@
|
|
\XeTeXcharclass `\? \z@
|
|
\XeTeXcharclass `\‼ \z@
|
|
\XeTeXcharclass `\⁇ \z@
|
|
\XeTeXcharclass `\⁈ \z@
|
|
\XeTeXcharclass `\⁉ \z@
|
|
\XeTeXcharclass `\‽ \z@
|
|
\XeTeXcharclass `\; \z@
|
|
\XeTeXcharclass `\: \z@
|
|
\XeTeXcharclass `\« \z@
|
|
\XeTeXcharclass `\» \z@
|
|
\XeTeXcharclass `\‹ \z@
|
|
\XeTeXcharclass `\› \z@
|
|
\XeTeXcharclass `\( \z@
|
|
\XeTeXcharclass `\) \z@
|
|
\XeTeXcharclass `\[ \z@
|
|
\XeTeXcharclass `\] \z@
|
|
\XeTeXcharclass `\{ \z@
|
|
\XeTeXcharclass `\} \z@
|
|
\XeTeXcharclass `\⟨ \z@
|
|
\XeTeXcharclass `\⟩ \z@
|
|
\XeTeXinterchartokenstate = 0
|
|
}
|
|
}
|
|
|
|
|
|
%%%%% Messages and commands concerning footnotes
|
|
|
|
% Save original footnote definition
|
|
% Do this at the end of the preamble to catch other
|
|
% packages' footnote changes (#391)
|
|
\AtEndPreamble{%
|
|
\cs_if_exist:NT \@makefntext
|
|
{
|
|
\cs_set_eq:NN \polyglossia_latin_original_footnote:n \@makefntext
|
|
}
|
|
}
|
|
|
|
% This is the footnote style as defined by the "ecclesiastic" package.
|
|
\cs_new:Npn \polyglossia_latin_variant_footnote:n #1
|
|
{
|
|
\parindent 1em
|
|
\noindent
|
|
\hbox { \normalfont \@thefnmark . }
|
|
\enspace #1
|
|
}
|
|
|
|
\msg_new:nnn {polyglossia} {latin / ineffective footnote option}
|
|
{
|
|
The~option~"ecclesiasticfootnotes"~is~ineffective~\msg_line_context:
|
|
\c_space_tl as~Latin~is~not~the~main~language.
|
|
}
|
|
|
|
\cs_new:Npn \polyglossia_latin_apply_footnote_option:
|
|
{
|
|
\str_if_eq:VnTF \xpg@main@language {latin}
|
|
{
|
|
\cs_if_exist:NT \@makefntext
|
|
{
|
|
\iflatin@ecclesiasticfootnotes
|
|
\let \@makefntext \polyglossia_latin_variant_footnote:n
|
|
\else
|
|
\let \@makefntext \polyglossia_latin_original_footnote:n
|
|
\fi
|
|
}
|
|
}
|
|
{
|
|
\iflatin@ecclesiasticfootnotes
|
|
\msg_warning:nn {polyglossia} {latin / ineffective footnote option}
|
|
\fi
|
|
}
|
|
}
|
|
|
|
\define@boolkey {latin} [latin@] {ecclesiasticfootnotes} [true]
|
|
{
|
|
\token_if_eq_meaning:NNTF \@onlypreamble \@notprerr
|
|
{
|
|
% within the document
|
|
\polyglossia_latin_apply_footnote_option:
|
|
}
|
|
{
|
|
% within the preamble
|
|
% The application of the option has to be postponed as the main
|
|
% language may be undefined when the option is called.
|
|
\AtBeginDocument { \polyglossia_latin_apply_footnote_option: }
|
|
}
|
|
}
|
|
|
|
|
|
%%%%% Language variants: classic, medieval, modern, and ecclesiastic
|
|
|
|
\str_new:N \l_polyglossia_latin_variant_str
|
|
|
|
\msg_new:nnn {polyglossia} {latin / language variant}
|
|
{
|
|
Activating~Latin~language~variant~"#1"~\msg_line_context:.
|
|
}
|
|
|
|
\msg_new:nnn {polyglossia} {latin / illegal language variant}
|
|
{
|
|
The~Latin~language~variant~"#1"~is~undefined~\msg_line_context:.
|
|
}
|
|
|
|
\cs_new:Npn \polyglossia_latin_classic_settings:
|
|
{
|
|
\bool_set_false:N \l_polyglossia_latin_use_j_bool
|
|
\bool_set_false:N \l_polyglossia_latin_use_v_bool
|
|
\bool_set_false:N \l_polyglossia_latin_use_digraphs_bool
|
|
\bool_set_true:N \l_polyglossia_latin_capitalize_month_bool
|
|
\bool_set_false:N \l_polyglossia_latin_punctuation_spacing_bool
|
|
\str_set:Nn \l_polyglossia_latin_variant_str {classic}
|
|
\SetLanguageKeys {latin} { babelname = classiclatin, bcp47 = la-x-classic }
|
|
\polyglossia_latin_set_patterns:n {classiclatin}
|
|
}
|
|
|
|
\cs_new:Npn \polyglossia_latin_medieval_settings:
|
|
{
|
|
\bool_set_false:N \l_polyglossia_latin_use_j_bool
|
|
\bool_set_false:N \l_polyglossia_latin_use_v_bool
|
|
\bool_set_true:N \l_polyglossia_latin_use_digraphs_bool
|
|
\bool_set_true:N \l_polyglossia_latin_capitalize_month_bool
|
|
\bool_set_false:N \l_polyglossia_latin_punctuation_spacing_bool
|
|
\str_set:Nn \l_polyglossia_latin_variant_str {medieval}
|
|
\SetLanguageKeys {latin} { babelname = medievallatin, bcp47 = la-x-medieval }
|
|
\polyglossia_latin_use_modern_patterns:
|
|
}
|
|
|
|
\cs_new:Npn \polyglossia_latin_modern_settings:
|
|
{
|
|
\bool_set_false:N \l_polyglossia_latin_use_j_bool
|
|
\bool_set_true:N \l_polyglossia_latin_use_v_bool
|
|
\bool_set_false:N \l_polyglossia_latin_use_digraphs_bool
|
|
\bool_set_true:N \l_polyglossia_latin_capitalize_month_bool
|
|
\bool_set_false:N \l_polyglossia_latin_punctuation_spacing_bool
|
|
\str_set:Nn \l_polyglossia_latin_variant_str {modern}
|
|
\SetLanguageKeys {latin} { babelname = latin, bcp47 = la }
|
|
\polyglossia_latin_use_modern_patterns:
|
|
}
|
|
|
|
\cs_new:Npn \polyglossia_latin_ecclesiastic_settings:
|
|
{
|
|
\bool_set_false:N \l_polyglossia_latin_use_j_bool
|
|
\bool_set_true:N \l_polyglossia_latin_use_v_bool
|
|
\bool_set_true:N \l_polyglossia_latin_use_digraphs_bool
|
|
\bool_set_false:N \l_polyglossia_latin_capitalize_month_bool
|
|
\bool_set_true:N \l_polyglossia_latin_punctuation_spacing_bool
|
|
\str_set:Nn \l_polyglossia_latin_variant_str {ecclesiastic}
|
|
\SetLanguageKeys {latin} { babelname = ecclesiasticlatin, bcp47 = la-x-ecclesia }
|
|
\polyglossia_latin_use_modern_patterns:
|
|
}
|
|
|
|
\define@key{latin}{variant}
|
|
{
|
|
\str_case:nnF {#1}
|
|
{
|
|
{classic}
|
|
{
|
|
\msg_info:nnn {polyglossia} {latin / language variant} {classic}
|
|
\polyglossia_latin_classic_settings:
|
|
}
|
|
{medieval}
|
|
{
|
|
\msg_info:nnn {polyglossia} {latin / language variant} {medieval}
|
|
\polyglossia_latin_medieval_settings:
|
|
}
|
|
{modern}
|
|
{
|
|
\msg_info:nnn {polyglossia} {latin / language variant} {modern}
|
|
\polyglossia_latin_modern_settings:
|
|
}
|
|
{ecclesiastic}
|
|
{
|
|
\msg_info:nnn {polyglossia} {latin / language variant} {ecclesiastic}
|
|
\polyglossia_latin_ecclesiastic_settings:
|
|
}
|
|
}
|
|
{
|
|
\msg_warning:nnn {polyglossia} {latin / illegal language variant} {#1}
|
|
}
|
|
}
|
|
|
|
|
|
%%%%% Boolean options concerning spelling
|
|
|
|
\define@boolkey{latin}[latin@]{usej}[true]
|
|
{
|
|
\iflatin@usej
|
|
\bool_set_true:N \l_polyglossia_latin_use_j_bool
|
|
\else
|
|
\bool_set_false:N \l_polyglossia_latin_use_j_bool
|
|
\fi
|
|
}
|
|
|
|
\define@boolkey{latin}[latin@]{capitalizemonth}[true]
|
|
{
|
|
\iflatin@capitalizemonth
|
|
\bool_set_true:N \l_polyglossia_latin_capitalize_month_bool
|
|
\else
|
|
\bool_set_false:N \l_polyglossia_latin_capitalize_month_bool
|
|
\fi
|
|
}
|
|
|
|
|
|
%%%%% Hyphenation variants: classic, liturgical, and modern
|
|
|
|
\msg_new:nnn {polyglossia} {latin / hyphenation variant}
|
|
{
|
|
Activating~hyphenation~patterns~for~#1~Latin~\msg_line_context:.
|
|
}
|
|
|
|
\msg_new:nnn {polyglossia} {latin / illegal hyphenation variant}
|
|
{
|
|
The~Latin~hyphenation~variant~"#1"~is~undefined~\msg_line_context:.
|
|
}
|
|
|
|
\define@key {latin} {hyphenation}
|
|
{
|
|
\str_case:nnTF {#1}
|
|
{
|
|
{classic} { \polyglossia_latin_set_patterns:n {classiclatin} }
|
|
{liturgical} { \polyglossia_latin_set_patterns:n {liturgicallatin} }
|
|
{modern} { \polyglossia_latin_use_modern_patterns: }
|
|
}
|
|
{
|
|
\msg_info:nnn {polyglossia} {latin / hyphenation variant} {#1}
|
|
}
|
|
{
|
|
\msg_warning:nnn {polyglossia} {latin / illegal hyphenation variant} {#1}
|
|
}
|
|
}
|
|
|
|
|
|
%%%%% Latin captions and date
|
|
|
|
\def \captionslatin
|
|
{
|
|
\def \prefacename
|
|
{
|
|
\bool_if:NTF \l_polyglossia_latin_use_digraphs_bool {Præfatio} {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 {Additur}
|
|
\def \ccname {Exemplar}
|
|
\def \headtoname {\ignorespaces}
|
|
\def \pagename {charta}
|
|
\def \seename {cfr.}
|
|
\def \alsoname {cfr.}
|
|
\def \proofname {Demonstratio}
|
|
\def \glossaryname {Glossarium}
|
|
}
|
|
|
|
\cs_new:Npn \polyglossia_latin_month_name:
|
|
{
|
|
\str_set:Nx \l_tmpa_str
|
|
{
|
|
\int_case:nn { \month }
|
|
{
|
|
{1} { \bool_if:NTF \l_polyglossia_latin_use_j_bool {januarii} {ianuarii} }
|
|
{2} {februarii}
|
|
{3} {martii}
|
|
{4} {aprilis}
|
|
{5} { \bool_if:NTF \l_polyglossia_latin_use_j_bool {maji} {maii} }
|
|
{6} { \bool_if:NTF \l_polyglossia_latin_use_j_bool {junii} {iunii} }
|
|
{7} { \bool_if:NTF \l_polyglossia_latin_use_j_bool {julii} {iulii} }
|
|
{8} {augusti}
|
|
{9} {septembris}
|
|
{10} {octobris}
|
|
{11} { \bool_if:NTF \l_polyglossia_latin_use_v_bool {novembris} {nouembris} }
|
|
{12} {decembris}
|
|
}
|
|
}
|
|
\bool_if:NTF \l_polyglossia_latin_capitalize_month_bool
|
|
{
|
|
\tl_mixed_case:n { \l_tmpa_str }
|
|
}
|
|
{
|
|
\str_use:N \l_tmpa_str
|
|
}
|
|
}
|
|
|
|
\def \datelatin
|
|
{
|
|
\def \today
|
|
{
|
|
\int_to_Roman:n { \day }
|
|
\c_space_tl
|
|
\polyglossia_latin_month_name:
|
|
\c_space_tl
|
|
\int_to_Roman:n { \year }
|
|
}
|
|
}
|
|
|
|
|
|
%%%%% Latin shorthands
|
|
|
|
\define@boolkey{latin}[latin@]{babelshorthands}[true]
|
|
{
|
|
}
|
|
|
|
\define@boolkey{latin}[latin@]{prosodicshorthands}[true]
|
|
{
|
|
}
|
|
|
|
% Register default options
|
|
\xpg@initialize@gloss@options{latin}{variant=modern,hyphenation=modern,babelshorthands=false,
|
|
prosodicshorthands=false,ecclesiasticfootnotes=false,
|
|
usej=false,capitalizemonth=true}
|
|
|
|
\ifsystem@babelshorthands
|
|
\setkeys{latin}{babelshorthands=true}
|
|
\else
|
|
\setkeys{latin}{babelshorthands=false}
|
|
\fi
|
|
|
|
\ExplSyntaxOff % babelsh.def does not support expl3 syntax
|
|
\ifcsundef{initiate@active@char}{\input{babelsh.def}}{}
|
|
\ExplSyntaxOn
|
|
|
|
\initiate@active@char {"}
|
|
\initiate@active@char {'}
|
|
\initiate@active@char {^}
|
|
\initiate@active@char {=}
|
|
|
|
\shorthandoff {"}
|
|
\shorthandoff {'}
|
|
\shorthandoff {^}
|
|
\shorthandoff {=}
|
|
|
|
% The active = character may cause problems with key=value interfaces.
|
|
% We have to make sure here that no problems can occur outside a Latin
|
|
% prosodic shorthand environment.
|
|
% The active ' character may cause problems with the unicode-math package
|
|
% (in case Latin is used as a secondary language, see #394). We have to
|
|
% turn it of if Latin is not the main language.
|
|
|
|
\protected@write \@auxout { } { \shorthandoff {=} } % for the aux file
|
|
|
|
\AtBeginDocument
|
|
{
|
|
\str_if_eq:VnTF \xpg@main@language {latin}
|
|
{
|
|
\iflatin@prosodicshorthands
|
|
\else
|
|
\shorthandoff {=}
|
|
\fi
|
|
}
|
|
{
|
|
% The following command should not be called if the main language
|
|
% defines a = shorthand. However, there are no languages besides
|
|
% Latin defining such a shorthand in polyglossia.
|
|
\shorthandoff {=}
|
|
% The following command should not be called if the main language
|
|
% defines a ' shorthand. However, there are no languages besides
|
|
% Latin defining such a shorthand in polyglossia.
|
|
\shorthandoff {'}
|
|
}
|
|
}
|
|
|
|
\cs_new:Npn \polyglossia_latin_shorthands:
|
|
{
|
|
\def \language@group {latin}
|
|
\bbl@activate {"}
|
|
\declare@shorthand {latin} {"}
|
|
{
|
|
\mode_if_math:TF
|
|
{
|
|
\token_to_str:N "
|
|
}
|
|
{
|
|
\polyglossia_latin_apply_quotemark:N
|
|
}
|
|
}
|
|
% The ' shorthand is normally turned off to avoid problems with the unicode-math
|
|
% package. We have to turn it on here.
|
|
\shorthandon {'}
|
|
\bbl@activate {'}
|
|
\declare@shorthand {latin} {'}
|
|
{
|
|
\mode_if_math:TF
|
|
{
|
|
\active@math@prime % defined in "latex.ltx"
|
|
% This definition is differing from the primes of the unicode-math package.
|
|
% TO DO: Make sure that the appearance of primes is the same as with the
|
|
% unicode-math package if this package is loaded.
|
|
}
|
|
{
|
|
\polyglossia_latin_put_acute:N
|
|
}
|
|
}
|
|
}
|
|
|
|
\cs_new:Npn \polyglossia_latin_prosodic_shorthands:
|
|
{
|
|
\def \language@group {latin}
|
|
% The '=' shorthand is normally turned off to avoid problems with key=value
|
|
% interfaces. We turn it on here to enable prosodic shorthands.
|
|
\shorthandon {=}
|
|
\bbl@activate {=}
|
|
\declare@shorthand {latin} {=}
|
|
{
|
|
\mode_if_math:TF
|
|
{
|
|
\token_to_str:N =
|
|
}
|
|
{
|
|
\polyglossia_latin_put_macron:N
|
|
}
|
|
}
|
|
\bbl@activate {^}
|
|
\declare@shorthand {latin} {^}
|
|
{
|
|
\mode_if_math:TF
|
|
{
|
|
\token_to_str:N ^
|
|
}
|
|
{
|
|
\polyglossia_latin_put_breve:N
|
|
}
|
|
}
|
|
}
|
|
|
|
\cs_new:Npn \polyglossia_latin_apply_quotemark:N #1
|
|
{
|
|
\str_case:nnF {#1}
|
|
{
|
|
{A} { \polyglossia_latin_digraph_shorthand:Nnn E { Æ }
|
|
{
|
|
\polyglossia_latin_digraph_shorthand:Nnn e { Æ }
|
|
{
|
|
\polyglossia_latin_allow_hyphens: A
|
|
}
|
|
}
|
|
}
|
|
{a} { \polyglossia_latin_digraph_shorthand:Nnn e { æ }
|
|
{
|
|
\polyglossia_latin_allow_hyphens: a
|
|
}
|
|
}
|
|
{O} { \polyglossia_latin_digraph_shorthand:Nnn E { Œ }
|
|
{
|
|
\polyglossia_latin_digraph_shorthand:Nnn e { Œ }
|
|
{
|
|
\polyglossia_latin_allow_hyphens: O
|
|
}
|
|
}
|
|
}
|
|
{o} { \polyglossia_latin_digraph_shorthand:Nnn e { œ }
|
|
{
|
|
\polyglossia_latin_allow_hyphens: o
|
|
}
|
|
}
|
|
{|} { \polyglossia_latin_allow_hyphens: }
|
|
{<} { « }
|
|
{>} { » }
|
|
}
|
|
{
|
|
\token_if_letter:NTF #1 { \polyglossia_latin_allow_hyphens: #1 }
|
|
{
|
|
\token_if_eq_meaning:NNTF #1 \AE { \polyglossia_latin_allow_hyphens: #1 }
|
|
{
|
|
\token_if_eq_meaning:NNTF #1 \ae { \polyglossia_latin_allow_hyphens: #1 }
|
|
{
|
|
\token_if_eq_meaning:NNTF #1 \OE { \polyglossia_latin_allow_hyphens: #1 }
|
|
{
|
|
\token_if_eq_meaning:NNTF #1 \oe { \polyglossia_latin_allow_hyphens: #1 }
|
|
{
|
|
\token_to_str:N "
|
|
#1
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
\cs_new:Npn \polyglossia_latin_put_acute:N #1
|
|
{
|
|
\str_case:nnF {#1}
|
|
{
|
|
{A} { \polyglossia_latin_digraph_shorthand:Nnn E { Ǽ }
|
|
{
|
|
\polyglossia_latin_digraph_shorthand:Nnn e { Ǽ } { Á }
|
|
}
|
|
}
|
|
{a} { \polyglossia_latin_digraph_shorthand:Nnn e { ǽ } { á } }
|
|
{E} { É }
|
|
{e} { é }
|
|
{I} { Í }
|
|
{i} { í }
|
|
{O} { \polyglossia_latin_digraph_shorthand:Nnn E { \'Œ }
|
|
{
|
|
\polyglossia_latin_digraph_shorthand:Nnn e { \'Œ } { Ó }
|
|
}
|
|
}
|
|
{o} { \polyglossia_latin_digraph_shorthand:Nnn e { \'œ } { ó } }
|
|
{U} { Ú }
|
|
{u} { ú }
|
|
{V} { \' V } % V may be a vowel, but lowercase v is never used as a vowel.
|
|
{Y} { Ý }
|
|
{y} { ý }
|
|
{Æ} { Ǽ }
|
|
{æ} { ǽ }
|
|
{Œ} { \'Œ }
|
|
{œ} { \'œ }
|
|
}
|
|
{
|
|
\token_if_eq_meaning:NNTF #1 \AE { Ǽ }
|
|
{
|
|
\token_if_eq_meaning:NNTF #1 \ae { ǽ }
|
|
{
|
|
\token_if_eq_meaning:NNTF #1 \OE { \'Œ }
|
|
{
|
|
\token_if_eq_meaning:NNTF #1 \oe { \'œ }
|
|
{
|
|
\token_to_str:N '
|
|
#1
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
\cs_new:Npn \polyglossia_latin_put_macron:N #1
|
|
{
|
|
\str_case:nnF {#1}
|
|
{
|
|
{A} { \polyglossia_latin_diphthong_macron:NNn AE
|
|
{
|
|
\polyglossia_latin_diphthong_macron:NNn Ae
|
|
{
|
|
\polyglossia_latin_diphthong_macron:NNn AU
|
|
{
|
|
\polyglossia_latin_diphthong_macron:NNn Au { Ā }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
{a} { \polyglossia_latin_diphthong_macron:NNn ae
|
|
{
|
|
\polyglossia_latin_diphthong_macron:NNn au { ā }
|
|
}
|
|
}
|
|
{E} { \polyglossia_latin_diphthong_macron:NNn EU
|
|
{
|
|
\polyglossia_latin_diphthong_macron:NNn Eu { Ē }
|
|
}
|
|
}
|
|
{e} { \polyglossia_latin_diphthong_macron:NNn eu { ē } }
|
|
{I} { Ī }
|
|
{i} { ī }
|
|
{O} { \polyglossia_latin_diphthong_macron:NNn OE
|
|
{
|
|
\polyglossia_latin_diphthong_macron:NNn Oe { Ō }
|
|
}
|
|
}
|
|
{o} { \polyglossia_latin_diphthong_macron:NNn oe { ō } }
|
|
{U} { Ū }
|
|
{u} { ū }
|
|
{V} { \= V } % V may be a vowel, but lowercase v is never used as a vowel.
|
|
{Y} { Ȳ }
|
|
{y} { ȳ }
|
|
}
|
|
{
|
|
\token_to_str:N =
|
|
#1
|
|
}
|
|
}
|
|
|
|
\cs_new:Npn \polyglossia_latin_put_breve:N #1
|
|
{
|
|
\str_case:nnF {#1}
|
|
{
|
|
{A} { Ă }
|
|
{a} { ă }
|
|
{E} { Ĕ }
|
|
{e} { ĕ }
|
|
{I} { Ĭ }
|
|
{i} { ĭ }
|
|
{O} { Ŏ }
|
|
{o} { ŏ }
|
|
{U} { Ŭ }
|
|
{u} { ŭ }
|
|
{V} { \u{V} } % V may be a vowel, but lowercase v is never used as a vowel.
|
|
{Y} { \u{Y} }
|
|
{y} { \u{y} }
|
|
}
|
|
{
|
|
\token_to_str:N ^
|
|
#1
|
|
}
|
|
}
|
|
|
|
|
|
\cs_new:Npn \polyglossia_latin_allow_hyphens:
|
|
{
|
|
\bbl@allowhyphens
|
|
\discretionary {-} {} {}
|
|
\bbl@allowhyphens
|
|
}
|
|
|
|
\cs_new:Npn \polyglossia_latin_digraph_shorthand:Nnn #1#2#3
|
|
% #1: second letter of digraph (E or e)
|
|
% #2: digraph character
|
|
% #3: non-digraph code
|
|
{
|
|
\bool_if:NTF \l_polyglossia_latin_use_digraphs_bool
|
|
{
|
|
\peek_meaning_remove:NTF #1 {#2} {#3}
|
|
}
|
|
{
|
|
#3
|
|
}
|
|
}
|
|
|
|
\cs_new:Npn \polyglossia_latin_diphthong_macron:NNn #1#2#3
|
|
% #1: first character of diphthong
|
|
% #2: second character of diphthong
|
|
% #3: non-diphthong code
|
|
{
|
|
\peek_meaning:NTF #2 { #1 \char "35E \relax } {#3} % U+35E: combining double macron
|
|
}
|
|
|
|
\cs_new:Npn \polyglossia_latin_no_shorthands:
|
|
{
|
|
\bbl@deactivate {"}
|
|
\bbl@deactivate {'}
|
|
\bbl@deactivate {=}
|
|
\bbl@deactivate {^}
|
|
% The active '=' character may cause problems with key=value interfaces.
|
|
% We have to make sure here that no problems can occur outside a Latin
|
|
% prosodic shorthand environment.
|
|
\shorthandoff {=}
|
|
}
|
|
|
|
|
|
%%%%% Further settings
|
|
|
|
\let \xpgla@savedvalues \empty
|
|
|
|
\AtEndPreamble
|
|
{
|
|
\edef \xpgla@savedvalues
|
|
{
|
|
\clubpenalty = \the \clubpenalty \space
|
|
\@clubpenalty = \the \@clubpenalty \space
|
|
\widowpenalty = \the \widowpenalty \space
|
|
\finalhyphendemerits = \the \finalhyphendemerits
|
|
}
|
|
}
|
|
|
|
\def \noextras@latin
|
|
{
|
|
\iflatin@babelshorthands
|
|
\polyglossia_latin_no_shorthands:
|
|
\fi
|
|
\xpgla@savedvalues
|
|
\polyglossia_latin_no_punctuation_spacing:
|
|
\polyglossia_latin_modern_character_codes:
|
|
}
|
|
|
|
\cs_new:Npn \polyglossia_latin_inline_extras:
|
|
{
|
|
\bool_if:NF \l_polyglossia_latin_use_v_bool
|
|
{
|
|
\polyglossia_latin_classical_character_codes:
|
|
}
|
|
\bool_if:NT \l_polyglossia_latin_punctuation_spacing_bool
|
|
{
|
|
\polyglossia_latin_punctuation_spacing:
|
|
}
|
|
\iflatin@babelshorthands
|
|
\polyglossia_latin_shorthands:
|
|
\fi
|
|
\iflatin@prosodicshorthands
|
|
\polyglossia_latin_prosodic_shorthands:
|
|
\fi
|
|
}
|
|
|
|
\def \blockextras@latin
|
|
{
|
|
% The following four values were overtaken from the Italian language module.
|
|
% It is unclear why they were chosen.
|
|
\clubpenalty = 3000
|
|
\@clubpenalty = 3000
|
|
\widowpenalty = 3000
|
|
\finalhyphendemerits = 50000000
|
|
\polyglossia_latin_inline_extras:
|
|
}
|
|
|
|
\def \inlineextras@latin
|
|
{
|
|
\polyglossia_latin_inline_extras:
|
|
}
|
|
|
|
|
|
%% Default settings
|
|
|
|
\polyglossia_latin_modern_settings:
|
|
|
|
\ExplSyntaxOff
|
|
|
|
%% Copyright (C) Claudio Beccari 2013-2016
|
|
%% Copyright (C) Élie Roux 2016-2019
|
|
%% Copyright (C) Keno Wehr 2019-2020
|
|
%%
|
|
%% Permission is hereby granted, free of charge, to any person obtaining
|
|
%% a copy of this software and associated documentation files
|
|
%% (the "Software"), to deal in the Software without restriction, including
|
|
%% without limitation the rights to use, copy, modify, merge, publish,
|
|
%% distribute, sublicense, and/or sell copies of the Software, and to permit
|
|
%% persons to whom the Software is furnished to do so, subject to the following
|
|
%% conditions:
|
|
%%
|
|
%% The above copyright notice and this permission notice shall be included in
|
|
%% all copies or substantial portions of the Software.
|
|
%%
|
|
%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
%% THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
%% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
%% IN THE SOFTWARE.
|
|
%%
|
|
%% End of file `gloss-latin.ldf'.
|
|
|