summaryrefslogtreecommitdiff
path: root/macros/latex/contrib
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-09-26 03:03:17 +0000
committerNorbert Preining <norbert@preining.info>2020-09-26 03:03:17 +0000
commit66ebd4914b367eb00a52ce5d5bb51f695101931b (patch)
treee5e4a5148bbf213f7ecc242d333bbde165d41e3b /macros/latex/contrib
parent56c9134f4aa02292ed17e726efd8e493b90e6011 (diff)
CTAN sync 202009260303
Diffstat (limited to 'macros/latex/contrib')
-rw-r--r--macros/latex/contrib/bxcalc/README-ja.md3
-rw-r--r--macros/latex/contrib/bxcalc/README.md12
-rw-r--r--macros/latex/contrib/bxcalc/bxcalc.sty8
-rw-r--r--macros/latex/contrib/bxcalc/bxcalcize.pdfbin120417 -> 119918 bytes
-rw-r--r--macros/latex/contrib/bxcalc/bxcalcize.sty12
-rw-r--r--macros/latex/contrib/bxcalc/bxcalcize.tex10
-rw-r--r--macros/latex/contrib/bxcalc/bxcalcux.pdfbin170075 -> 175166 bytes
-rw-r--r--macros/latex/contrib/bxcalc/bxcalcux.sty4
-rw-r--r--macros/latex/contrib/bxcalc/bxcalcux.tex4
-rw-r--r--macros/latex/contrib/doclicense/doclicense.dtx21
-rw-r--r--macros/latex/contrib/doclicense/doclicense.pdfbin272553 -> 254137 bytes
-rw-r--r--macros/latex/contrib/fontsetup/README15
-rw-r--r--macros/latex/contrib/fontsetup/doc/fontsetup-doc.pdfbin710593 -> 0 bytes
-rw-r--r--macros/latex/contrib/fontsetup/doc/fontsetup-doc.tex339
-rw-r--r--macros/latex/contrib/fontsetup/doc/fspsample-cambria.pdfbin60986 -> 0 bytes
-rw-r--r--macros/latex/contrib/fontsetup/doc/fspsample-cmr.pdfbin27714 -> 0 bytes
-rw-r--r--macros/latex/contrib/fontsetup/doc/fspsample-ebgaramond.pdfbin30994 -> 0 bytes
-rw-r--r--macros/latex/contrib/fontsetup/doc/fspsample-fira.pdfbin21396 -> 0 bytes
-rw-r--r--macros/latex/contrib/fontsetup/doc/fspsample-gfsartemisia.pdfbin27819 -> 0 bytes
-rw-r--r--macros/latex/contrib/fontsetup/doc/fspsample-gfsdidot.pdfbin31224 -> 0 bytes
-rw-r--r--macros/latex/contrib/fontsetup/doc/fspsample-gfsdidotclassic.pdfbin32654 -> 0 bytes
-rw-r--r--macros/latex/contrib/fontsetup/doc/fspsample-gfsneohellenic.pdfbin27539 -> 0 bytes
-rw-r--r--macros/latex/contrib/fontsetup/doc/fspsample-kerkis.pdfbin25282 -> 0 bytes
-rw-r--r--macros/latex/contrib/fontsetup/doc/fspsample-libertinus.pdfbin33644 -> 0 bytes
-rw-r--r--macros/latex/contrib/fontsetup/doc/fspsample-lucida.pdfbin16379 -> 0 bytes
-rw-r--r--macros/latex/contrib/fontsetup/doc/fspsample-minion.pdfbin27885 -> 0 bytes
-rw-r--r--macros/latex/contrib/fontsetup/doc/fspsample-msgaramond.pdfbin71020 -> 0 bytes
-rw-r--r--macros/latex/contrib/fontsetup/doc/fspsample-neoeuler.pdfbin28482 -> 0 bytes
-rw-r--r--macros/latex/contrib/fontsetup/doc/fspsample-newdefault.pdfbin44495 -> 0 bytes
-rw-r--r--macros/latex/contrib/fontsetup/doc/fspsample-palatino.pdfbin94241 -> 0 bytes
-rw-r--r--macros/latex/contrib/fontsetup/doc/fspsample-stixtwo.pdfbin28947 -> 0 bytes
-rw-r--r--macros/latex/contrib/fontsetup/doc/fspsample-times.pdfbin23139 -> 0 bytes
-rw-r--r--macros/latex/contrib/fontsetup/doc/fspsample.tex75
-rw-r--r--macros/latex/contrib/fontsetup/fontsetup.sty110
-rw-r--r--macros/latex/contrib/fontsetup/fspcambria.sty9
-rw-r--r--macros/latex/contrib/fontsetup/fspdefault.sty251
-rw-r--r--macros/latex/contrib/fontsetup/fspebgaramondot.sty12
-rw-r--r--macros/latex/contrib/fontsetup/fspfiraot.sty26
-rw-r--r--macros/latex/contrib/fontsetup/fspgfsartemisiaot.sty16
-rw-r--r--macros/latex/contrib/fontsetup/fspgfsdidotclassicot.sty24
-rw-r--r--macros/latex/contrib/fontsetup/fspgfsdidotot.sty49
-rw-r--r--macros/latex/contrib/fontsetup/fspgfsneohellenicot.sty53
-rw-r--r--macros/latex/contrib/fontsetup/fspkerkisot.sty15
-rw-r--r--macros/latex/contrib/fontsetup/fsplucidaot.sty28
-rw-r--r--macros/latex/contrib/fontsetup/fspminion.sty20
-rw-r--r--macros/latex/contrib/fontsetup/fspmsgaramondot.sty23
-rw-r--r--macros/latex/contrib/fontsetup/fspneoeulerot.sty41
-rw-r--r--macros/latex/contrib/fontsetup/fspolddefault.sty251
-rw-r--r--macros/latex/contrib/fontsetup/fsppalatinoot.sty17
-rw-r--r--macros/latex/contrib/fontsetup/fspstixtwoot.sty17
-rw-r--r--macros/latex/contrib/fontsetup/fsptimesot.sty16
-rw-r--r--macros/latex/contrib/fontsetup/system-install-fonts/fsplpscel.otfbin20472 -> 0 bytes
-rw-r--r--macros/latex/contrib/fontsetup/system-install-fonts/fspmnscel.otfbin17944 -> 0 bytes
-rw-r--r--macros/latex/contrib/fontspec/CHANGES.md492
-rw-r--r--macros/latex/contrib/fontspec/LICENSE416
-rw-r--r--macros/latex/contrib/fontspec/README.md83
-rw-r--r--macros/latex/contrib/fontspec/fontspec-code-api.dtx390
-rw-r--r--macros/latex/contrib/fontspec/fontspec-code-closing.dtx44
-rw-r--r--macros/latex/contrib/fontspec/fontspec-code-enc.dtx158
-rw-r--r--macros/latex/contrib/fontspec/fontspec-code-feat-aat.dtx243
-rw-r--r--macros/latex/contrib/fontspec/fontspec-code-feat-opentype.dtx583
-rw-r--r--macros/latex/contrib/fontspec/fontspec-code-fontload.dtx136
-rw-r--r--macros/latex/contrib/fontspec/fontspec-code-graphite.dtx128
-rw-r--r--macros/latex/contrib/fontspec/fontspec-code-interfaces.dtx296
-rw-r--r--macros/latex/contrib/fontspec/fontspec-code-internal.dtx1217
-rw-r--r--macros/latex/contrib/fontspec/fontspec-code-keyval.dtx905
-rw-r--r--macros/latex/contrib/fontspec/fontspec-code-lang.dtx419
-rw-r--r--macros/latex/contrib/fontspec/fontspec-code-load.dtx72
-rw-r--r--macros/latex/contrib/fontspec/fontspec-code-math.dtx260
-rw-r--r--macros/latex/contrib/fontspec/fontspec-code-msg.dtx280
-rw-r--r--macros/latex/contrib/fontspec/fontspec-code-opening.dtx213
-rw-r--r--macros/latex/contrib/fontspec/fontspec-code-opentype.dtx478
-rw-r--r--macros/latex/contrib/fontspec/fontspec-code-scripts.dtx194
-rw-r--r--macros/latex/contrib/fontspec/fontspec-code-user.dtx552
-rw-r--r--macros/latex/contrib/fontspec/fontspec-code-vars.dtx336
-rw-r--r--macros/latex/contrib/fontspec/fontspec-code-xfss.dtx310
-rw-r--r--macros/latex/contrib/fontspec/fontspec-code.ltx42
-rw-r--r--macros/latex/contrib/fontspec/fontspec-code.pdfbin629912 -> 0 bytes
-rw-r--r--macros/latex/contrib/fontspec/fontspec-doc-api.tex352
-rw-r--r--macros/latex/contrib/fontspec/fontspec-doc-enc.tex216
-rw-r--r--macros/latex/contrib/fontspec/fontspec-doc-featset.tex629
-rw-r--r--macros/latex/contrib/fontspec/fontspec-doc-fontsel.tex629
-rw-r--r--macros/latex/contrib/fontspec/fontspec-doc-intro.tex196
-rw-r--r--macros/latex/contrib/fontspec/fontspec-doc-luatex.tex94
-rw-r--r--macros/latex/contrib/fontspec/fontspec-doc-opentype.tex1478
-rw-r--r--macros/latex/contrib/fontspec/fontspec-doc-style.sty292
-rw-r--r--macros/latex/contrib/fontspec/fontspec-doc-xetex.tex294
-rw-r--r--macros/latex/contrib/fontspec/fontspec-example.tex48
-rw-r--r--macros/latex/contrib/fontspec/fontspec-lua.dtx101
-rw-r--r--macros/latex/contrib/fontspec/fontspec.cfg22
-rw-r--r--macros/latex/contrib/fontspec/fontspec.dtx116
-rw-r--r--macros/latex/contrib/fontspec/fontspec.ins60
-rw-r--r--macros/latex/contrib/fontspec/fontspec.ltx40
-rw-r--r--macros/latex/contrib/fontspec/fontspec.pdfbin600048 -> 0 bytes
-rw-r--r--macros/latex/contrib/gentombow/LICENSE2
-rw-r--r--macros/latex/contrib/gentombow/Makefile36
-rw-r--r--macros/latex/contrib/gentombow/README.md2
-rw-r--r--macros/latex/contrib/gentombow/bounddvi-en.pdfbin43566 -> 49513 bytes
-rw-r--r--macros/latex/contrib/gentombow/bounddvi-en.tex1
-rw-r--r--macros/latex/contrib/gentombow/bounddvi.pdfbin118273 -> 123721 bytes
-rw-r--r--macros/latex/contrib/gentombow/bounddvi.sty37
-rw-r--r--macros/latex/contrib/gentombow/bounddvi.tex1
-rw-r--r--macros/latex/contrib/gentombow/gentombow-ja.pdfbin212291 -> 213739 bytes
-rw-r--r--macros/latex/contrib/gentombow/gentombow-ja.tex5
-rw-r--r--macros/latex/contrib/gentombow/gentombow.pdfbin145247 -> 150461 bytes
-rw-r--r--macros/latex/contrib/gentombow/gentombow.tex4
-rw-r--r--macros/latex/contrib/hyperxmp/README4
-rw-r--r--macros/latex/contrib/hyperxmp/einstein-xmp.tex149
-rw-r--r--macros/latex/contrib/hyperxmp/hyperxmp.dtx1315
-rw-r--r--macros/latex/contrib/hyperxmp/hyperxmp.ins4
-rw-r--r--macros/latex/contrib/hyperxmp/hyperxmp.pdfbin1341156 -> 1520844 bytes
-rw-r--r--macros/latex/contrib/polyglossia/README.md42
-rw-r--r--macros/latex/contrib/polyglossia/polyglossia.dtx20295
-rw-r--r--macros/latex/contrib/polyglossia/polyglossia.pdfbin269164 -> 0 bytes
-rw-r--r--macros/latex/contrib/repltext/README2
-rw-r--r--macros/latex/contrib/repltext/repltext.dtx82
-rw-r--r--macros/latex/contrib/repltext/repltext.ins8
-rw-r--r--macros/latex/contrib/repltext/repltext.pdfbin303469 -> 437502 bytes
-rw-r--r--macros/latex/contrib/tcolorbox/CHANGES19
-rw-r--r--macros/latex/contrib/tcolorbox/README2
-rw-r--r--macros/latex/contrib/tcolorbox/tcbbreakable.code.tex10
-rw-r--r--macros/latex/contrib/tcolorbox/tcbdocumentation.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcbexternal.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcbfitting.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcbhooks.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcblistings.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcblistingscore.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcblistingsutf8.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcbmagazine.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcbminted.code.tex13
-rw-r--r--macros/latex/contrib/tcolorbox/tcbposter.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcbprocessing.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcbraster.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcbskins.code.tex8
-rw-r--r--macros/latex/contrib/tcolorbox/tcbskinsjigsaw.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcbtheorems.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcbvignette.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcbxparse.code.tex8
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox-example-poster.pdfbin273842 -> 273842 bytes
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox-example-poster.tex2
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox-example.pdfbin457487 -> 457487 bytes
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox-example.tex2
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.pdfbin442698 -> 442495 bytes
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.tex2
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.breakable.tex2
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.coreoptions.tex306
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.documentation.tex3
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.filling.tex1
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.s_main.sty10
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.skins.tex50
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.technical.tex2
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.theorems.tex2
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.xparse.tex14
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.pdfbin7163608 -> 7184870 bytes
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.sty89
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.tex8
-rw-r--r--macros/latex/contrib/thucoursework/thucoursework.dtx18
-rw-r--r--macros/latex/contrib/thucoursework/thucoursework.pdfbin224213 -> 242755 bytes
-rw-r--r--macros/latex/contrib/unicode-math/CHANGES.md363
-rw-r--r--macros/latex/contrib/unicode-math/LICENSE416
-rw-r--r--macros/latex/contrib/unicode-math/MANIFEST.md258
-rw-r--r--macros/latex/contrib/unicode-math/README.md116
-rw-r--r--macros/latex/contrib/unicode-math/RELEASE_CHECKLIST.md11
-rw-r--r--macros/latex/contrib/unicode-math/um-code-alphabets.dtx934
-rw-r--r--macros/latex/contrib/unicode-math/um-code-amsmath.dtx173
-rw-r--r--macros/latex/contrib/unicode-math/um-code-api.dtx43
-rw-r--r--macros/latex/contrib/unicode-math/um-code-compat.dtx157
-rw-r--r--macros/latex/contrib/unicode-math/um-code-epilogue.dtx420
-rw-r--r--macros/latex/contrib/unicode-math/um-code-fontopt.dtx326
-rw-r--r--macros/latex/contrib/unicode-math/um-code-fontparam.dtx345
-rw-r--r--macros/latex/contrib/unicode-math/um-code-main.dtx700
-rw-r--r--macros/latex/contrib/unicode-math/um-code-mathmap.dtx595
-rw-r--r--macros/latex/contrib/unicode-math/um-code-mathtext.dtx259
-rw-r--r--macros/latex/contrib/unicode-math/um-code-msg.dtx156
-rw-r--r--macros/latex/contrib/unicode-math/um-code-opening.dtx410
-rw-r--r--macros/latex/contrib/unicode-math/um-code-pkgopt.dtx330
-rw-r--r--macros/latex/contrib/unicode-math/um-code-primes.dtx385
-rw-r--r--macros/latex/contrib/unicode-math/um-code-setchar.dtx298
-rw-r--r--macros/latex/contrib/unicode-math/um-code-sscript.dtx238
-rw-r--r--macros/latex/contrib/unicode-math/um-code-sym-commands.dtx216
-rw-r--r--macros/latex/contrib/unicode-math/um-code-ui.dtx101
-rw-r--r--macros/latex/contrib/unicode-math/um-code-usv.dtx592
-rw-r--r--macros/latex/contrib/unicode-math/um-code-variables.dtx257
-rw-r--r--macros/latex/contrib/unicode-math/um-doc-legacyfontdimen.tex76
-rw-r--r--macros/latex/contrib/unicode-math/um-doc-main.tex1238
-rw-r--r--macros/latex/contrib/unicode-math/um-doc-mathfontdimen.tex151
-rw-r--r--macros/latex/contrib/unicode-math/um-doc-nfsssummary.tex87
-rw-r--r--macros/latex/contrib/unicode-math/um-doc-stixextract.tex38
-rw-r--r--macros/latex/contrib/unicode-math/um-doc-style.tex131
-rw-r--r--macros/latex/contrib/unicode-math/unicode-math-code.ltx35
-rw-r--r--macros/latex/contrib/unicode-math/unicode-math-code.pdfbin325165 -> 0 bytes
-rw-r--r--macros/latex/contrib/unicode-math/unicode-math-table.tex2467
-rw-r--r--macros/latex/contrib/unicode-math/unicode-math.dtx116
-rw-r--r--macros/latex/contrib/unicode-math/unicode-math.ins64
-rw-r--r--macros/latex/contrib/unicode-math/unicode-math.ltx38
-rw-r--r--macros/latex/contrib/unicode-math/unicode-math.pdfbin162723 -> 0 bytes
-rw-r--r--macros/latex/contrib/unicode-math/unimath-example.ltx69
-rw-r--r--macros/latex/contrib/unicode-math/unimath-example.pdfbin21851 -> 0 bytes
-rw-r--r--macros/latex/contrib/unicode-math/unimath-symbols.ltx469
-rw-r--r--macros/latex/contrib/unicode-math/unimath-symbols.pdfbin1194223 -> 0 bytes
200 files changed, 1636 insertions, 48353 deletions
diff --git a/macros/latex/contrib/bxcalc/README-ja.md b/macros/latex/contrib/bxcalc/README-ja.md
index ed83dd6091..a7df704b32 100644
--- a/macros/latex/contrib/bxcalc/README-ja.md
+++ b/macros/latex/contrib/bxcalc/README-ja.md
@@ -51,6 +51,9 @@ bxcalcux パッケージ ― 新しい長さ単位の追加
更新履歴
--------
+ * Version 1.1 〈2020/09/25〉
+ - LaTeX カーネル 2020/10/01 版への対応。
+
* Version 1.0b 〈2019/11/24〉
- バグ修正。
diff --git a/macros/latex/contrib/bxcalc/README.md b/macros/latex/contrib/bxcalc/README.md
index 7819e5c1eb..d260021cb7 100644
--- a/macros/latex/contrib/bxcalc/README.md
+++ b/macros/latex/contrib/bxcalc/README.md
@@ -33,6 +33,10 @@ bxcalc package ― main
This package simply loads all other packages in this bundle.
+Note: Under the LaTeX kernel of the version 2020/10/01 or later, the
+bxcalcize package is not loaded since it is no longer needed.
+
+
bxcalcize package ― to make calc expressions available in more places
----------------------------------------------------------------------
@@ -41,6 +45,10 @@ the use of calc expressions. This package makes such uses possible.
See the manual bxcalcize.pdf for detail.
+Note: The functionality of this package will be provided by the LaTeX
+kernel of the version 2020/10/01.
+
+
bxcalcux package ― to add user-defined units to the calc syntax
----------------------------------------------------------------
@@ -49,9 +57,13 @@ calc expressions.
See the manual bxcalcux.pdf for detail.
+
Revision History
----------------
+ * Version 1.1 〈2020/09/25〉
+ - Support LaTeX kernel 2020/10/01.
+
* Version 1.0b 〈2019/11/24〉
- Bug fix.
diff --git a/macros/latex/contrib/bxcalc/bxcalc.sty b/macros/latex/contrib/bxcalc/bxcalc.sty
index d71eb2a361..3336088f5b 100644
--- a/macros/latex/contrib/bxcalc/bxcalc.sty
+++ b/macros/latex/contrib/bxcalc/bxcalc.sty
@@ -1,7 +1,7 @@
%%
%% This is file 'bxcalc.sty'.
%%
-%% Copyright (c) 2018-2019 Takayuki YATO (aka. "ZR")
+%% Copyright (c) 2018-2020 Takayuki YATO (aka. "ZR")
%% GitHub: https://github.com/zr-tex8r
%% Twitter: @zr_tex8r
%%
@@ -10,14 +10,16 @@
%% package declaration
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{bxcalc}[2019/11/24 v1.0b]
+\ProvidesPackage{bxcalc}[2020/09/25 v1.1]
\def\bxqcz@pkgname{bxcalc}
%--------------------------------------- main
%% packages
\RequirePackage{calc}[]
-\RequirePackage{bxcalcize}[2017/05/21]% v1.0
+\@ifl@t@r\fmtversion{2020/10/01}{}{%else
+ \RequirePackage{bxcalcize}[2017/05/21]% v1.0
+}
\RequirePackage{bxcalcux}[2017/05/21]% v1.0
%--------------------------------------- \usepTeXunits
diff --git a/macros/latex/contrib/bxcalc/bxcalcize.pdf b/macros/latex/contrib/bxcalc/bxcalcize.pdf
index cc15e7cb16..23fe3879ef 100644
--- a/macros/latex/contrib/bxcalc/bxcalcize.pdf
+++ b/macros/latex/contrib/bxcalc/bxcalcize.pdf
Binary files differ
diff --git a/macros/latex/contrib/bxcalc/bxcalcize.sty b/macros/latex/contrib/bxcalc/bxcalcize.sty
index f469cd4ab9..ebb119ae01 100644
--- a/macros/latex/contrib/bxcalc/bxcalcize.sty
+++ b/macros/latex/contrib/bxcalc/bxcalcize.sty
@@ -1,7 +1,7 @@
%%
%% This is file 'bxcalcize.sty'.
%%
-%% Copyright (c) 2018-2019 Takayuki YATO (aka. "ZR")
+%% Copyright (c) 2018-2020 Takayuki YATO (aka. "ZR")
%% GitHub: https://github.com/zr-tex8r
%% Twitter: @zr_tex8r
%%
@@ -10,7 +10,7 @@
%% package declaration
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{bxcalcize}[2019/11/24 v1.0b]
+\ProvidesPackage{bxcalcize}[2020/09/25 v1.1]
\def\bxcy@pkgname{bxcalcize}
%% code guards
@@ -36,6 +36,14 @@
\RequirePackage{etoolbox}[]
\ifx\numdef\@undefined\endinput\fi
+% check kernel version
+\@ifl@t@r\fmtversion{2020/10/01}{%
+ \PackageWarningNoLine\bxcy@pkgname
+ {Functionality of this package is already\MessageBreak
+ provided by LaTeX}%
+ \endinput
+}{}
+
%% variables
\newdimen\bxcy@resdim
diff --git a/macros/latex/contrib/bxcalc/bxcalcize.tex b/macros/latex/contrib/bxcalc/bxcalcize.tex
index d4663a7b66..5645aa9b06 100644
--- a/macros/latex/contrib/bxcalc/bxcalcize.tex
+++ b/macros/latex/contrib/bxcalc/bxcalcize.tex
@@ -2,8 +2,8 @@
\usepackage[scale=0.75]{geometry}
\usepackage{shortvrb}
\MakeShortVerb{\|}
-\newcommand{\PkgVersion}{1.0b}
-\newcommand{\PkgDate}{2019/11/24}
+\newcommand{\PkgVersion}{1.1}
+\newcommand{\PkgDate}{2020/09/25}
\newcommand{\Pkg}[1]{\textsf{#1}}
\newcommand{\Meta}[1]{$\langle$\textit{#1}$\rangle$}
\newcommand{\Note}{\par\noindent \textbf{NB:}\quad}
@@ -17,6 +17,12 @@
\maketitle
%===========================================================
+\section{Notice}
+
+Functionality of this package will be provided by the LaTeX
+kernel of the version 2020/10/01.
+
+%===========================================================
\section{Overview}
After loading \Pkg{calc}, most of the length specifications
diff --git a/macros/latex/contrib/bxcalc/bxcalcux.pdf b/macros/latex/contrib/bxcalc/bxcalcux.pdf
index 61ff9003b2..fa530e451f 100644
--- a/macros/latex/contrib/bxcalc/bxcalcux.pdf
+++ b/macros/latex/contrib/bxcalc/bxcalcux.pdf
Binary files differ
diff --git a/macros/latex/contrib/bxcalc/bxcalcux.sty b/macros/latex/contrib/bxcalc/bxcalcux.sty
index 9c55a6f781..90e222643a 100644
--- a/macros/latex/contrib/bxcalc/bxcalcux.sty
+++ b/macros/latex/contrib/bxcalc/bxcalcux.sty
@@ -1,7 +1,7 @@
%%
%% This is file 'bxcalcux.sty'.
%%
-%% Copyright (c) 2018-2019 Takayuki YATO (aka. "ZR")
+%% Copyright (c) 2018-2020 Takayuki YATO (aka. "ZR")
%% GitHub: https://github.com/zr-tex8r
%% Twitter: @zr_tex8r
%%
@@ -10,7 +10,7 @@
%% package declaration
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{bxcalcux}[2019/11/24 v1.0b]
+\ProvidesPackage{bxcalcux}[2020/09/25 v1.1]
\def\bxcx@pkgname{bxcalcux}
%% code guards
diff --git a/macros/latex/contrib/bxcalc/bxcalcux.tex b/macros/latex/contrib/bxcalc/bxcalcux.tex
index 4f6ca48b41..2dd90a17c3 100644
--- a/macros/latex/contrib/bxcalc/bxcalcux.tex
+++ b/macros/latex/contrib/bxcalc/bxcalcux.tex
@@ -2,8 +2,8 @@
\usepackage[scale=0.75]{geometry}
\usepackage{shortvrb}
\MakeShortVerb{\|}
-\newcommand{\PkgVersion}{1.0b}
-\newcommand{\PkgDate}{2019/11/24}
+\newcommand{\PkgVersion}{1.1}
+\newcommand{\PkgDate}{2020/09/25}
\newcommand{\Pkg}[1]{\textsf{#1}}
\newcommand{\Meta}[1]{$\langle$\textit{#1}$\rangle$}
\newcommand{\Note}{\par\noindent \textbf{NB:}\quad}
diff --git a/macros/latex/contrib/doclicense/doclicense.dtx b/macros/latex/contrib/doclicense/doclicense.dtx
index ef894621f8..75e34f64a8 100644
--- a/macros/latex/contrib/doclicense/doclicense.dtx
+++ b/macros/latex/contrib/doclicense/doclicense.dtx
@@ -27,7 +27,7 @@
%<package>\NeedsTeXFormat{LaTeX2e}[1998/12/01]
%<package>\ProvidesPackage{doclicense}
%<*package>
- [2020/09/18 v2.2.1.dev Support for putting documents under a license]
+ [2020/09/25 v2.2.1 Support for putting documents under a license]
%</package>
%
%<*driver>
@@ -51,10 +51,8 @@
babel,
csquotes,
xcolor,
- hyperxmp,
hypdoc,
nameref,
- xspace,
eqlist,
}
\usepackage[iso]{isodate}
@@ -139,6 +137,7 @@ corresponds to \PackageName\nobreakspace\fileversion, dated \printdateTeX{\filed
% \changes{2.0.1}{2020/06/26}{Fix backwards compatibility by still accepting imagemodifier={-eu} and imagemodifier={-us}. Thanks to Jürgen Spitzmüller for reporting. Fix ability to modify currency of \cmd{\doclicenseIcon} macro using imagemodifier to Japan currency JP without breaking \cmd{\doclicenseImage}.}
% \changes{2.1.0}{2020/07/26}{Fix regression: Proper language default image variants (Euro variants for example) was broken and the US variant was always used. This bug was introduced in v2.0.0. Documentation fixes. Added Marathi translation.}
% \changes{2.2.0}{2020/09/18}{Add Japanese and Bulgarian translation. Add hint how to use Chinese to docs. Load hyperxmp by default when it is installed. Before, doclicense just suggested to load it and made use of the package when the user did.}
+% \changes{2.2.1}{2020/09/25}{Fix compatibility issue with newer versions of hyperxmp (bug confirmed with Tex Live 2020) resulting in an compile error by loading hyperxmp and hyperref in the order the packages expect it.}
%
%
@@ -623,18 +622,20 @@ corresponds to \PackageName\nobreakspace\fileversion, dated \printdateTeX{\filed
\@ifpackageloaded{graphicx}{}{\RequirePackage{graphicx}}
%% For \doclicenseImage
\@ifpackageloaded{hyperref}{}{\RequirePackage{hyperref}}
- \IfFileExists{hyperxmp.sty}{
- \@ifpackageloaded{hyperxmp}{}{\RequirePackage{hyperxmp}}
+ \@ifpackageloaded{hyperxmp}{
%% The following options are only defined when the hyperxmp package was loaded.
\hypersetup{
pdfcopyright = {\doclicenseLongText},
pdflicenseurl = {\doclicenseURL},
}
- }{
- \PackageWarning{doclicense}{%
- The hyperxmp package is missing so no license metadata can be embedded
- into the PDF. Consider installing hyperxmp.% chktex 13
- }
+ }{}
+}
+\IfFileExists{hyperxmp.sty}{
+ \@ifpackageloaded{hyperxmp}{}{\RequirePackage{hyperxmp}}
+}{
+ \PackageWarning{doclicense}{%
+ The hyperxmp package is missing so no license metadata can be embedded
+ into the PDF. Consider installing hyperxmp.% chktex 13
}
}
%% )))
diff --git a/macros/latex/contrib/doclicense/doclicense.pdf b/macros/latex/contrib/doclicense/doclicense.pdf
index 1f3aed15a3..0ae88d6b61 100644
--- a/macros/latex/contrib/doclicense/doclicense.pdf
+++ b/macros/latex/contrib/doclicense/doclicense.pdf
Binary files differ
diff --git a/macros/latex/contrib/fontsetup/README b/macros/latex/contrib/fontsetup/README
deleted file mode 100644
index 377b78a5f5..0000000000
--- a/macros/latex/contrib/fontsetup/README
+++ /dev/null
@@ -1,15 +0,0 @@
- The fontsetup package
- (Version 1.007, GPL3)
-
-This simple package makes it trivial to switch quickly between
-different quality fonts supporting Mathematics.
-
-For more information read the file fontsetup-doc.pdf in
-the doc subdirectory.
-
-Antonis Tsolomitis
-Professor
-University of the Aegean
-Department of Mathematics
-83200 Samos, Greece
-
diff --git a/macros/latex/contrib/fontsetup/doc/fontsetup-doc.pdf b/macros/latex/contrib/fontsetup/doc/fontsetup-doc.pdf
deleted file mode 100644
index 7bbc3d52ba..0000000000
--- a/macros/latex/contrib/fontsetup/doc/fontsetup-doc.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/fontsetup/doc/fontsetup-doc.tex b/macros/latex/contrib/fontsetup/doc/fontsetup-doc.tex
deleted file mode 100644
index b9ddc3ddcd..0000000000
--- a/macros/latex/contrib/fontsetup/doc/fontsetup-doc.tex
+++ /dev/null
@@ -1,339 +0,0 @@
-\documentclass{book}
-\usepackage[default]{fontsetup}
-\usepackage{graphicx,fullpage,supertabular}
-\begin{document}
-
-
- \begin{center}
- {\LARGE The \texttt{fontsetup} package}\\[1ex]
- \textit{by}\\[1ex]
- {\large Antonis Tsolomitis}\\
-University of the Aegean\\ Department of Mathematics\\[1ex]
- \textsc{24} August \textsc{2020}\\[1ex]
- Version 1.007, \textsc{gpl3}
- \end{center}
-
- This package is a simple wrapper-type package that makes the setup of fonts easy and
- quick for XeLaTeX and LuaLaTeX. You just load the package using one of the supported
- fonts as an option.
-
- The target is to provide easy access to fonts with a matching Mathematics font available in
- TeX distributions plus a few commercial if available.
-
- The package will include more font combinations in the future, however there are
- some restrictions. The fonts must have some commercial-level quality and must support
- Mathematics.
-
- The options (in alphabetic order after the default option) are as follows:
-
- \begin{description}
- \item[default] Loads the NewComputerModern fonts (in Book weight),
- which is an assembly of cm fonts plus
- more fonts to support Greek (cbgreek) and Cyrillic languages. It also provides
- \begin{itemize}
- \item commands to access prosgegrammeni instead of ypogegrammeni for capitals and small
- capitals, by writing \verb|\textprosgegrammeni{<text>}| or \verb|{\prosgegrammeni <text>}|.
- \item commands to access 4th and 6th century bce Greek by writing
- \verb|\textivbce{<text>}| or \verb|{\ivbce <text>}| and
- \verb|\textvibce{<text>}| or \verb|{\vibce <text>}|. For example, write
- \verb|\textivbce{ΕΠΙΚΟΥΡΟΣ}| to get \textivbce{ΕΠΙΚΟΥΡΟΣ}.
- \item commands to access Sans Greek (upright and oblique) in math mode although these are
- not included in the unicode standard. The commands follow the unicode-math.sty notation, so
- to get $\msansLambda$ and $\mitsanspi$ you write \verb|$\msansLambda$| and \verb|$\mitsanspi$|.
- \item commands to access the Ancient Greek Numbers (Unicode u10140--u1018E)
- documented in the Appendix
- \item commands to access the negation of uniform convergence symbols \verb|\nrightrightarrows|
- for $\nrightrightarrows$ and \verb|\nleftleftarrows| for $\nleftleftarrows$.
- \item commands to access the IPA symbols. These are \verb|\ipatext| and \verb|\ipatextsans|
- to select the fonts properly or \verb|\textipa{...}| and \verb|\textsansipa{...}| to select the fonts
- for IPA symbols locally. Compare \textipa{ðŋβθχ}
- (produced with \verb|\textipa{ðŋβθχ}|) with ðŋβθχ.
- \end{itemize}
- \item[olddefault] Loads the NewComputerModern fonts (in Regular weight)
- similarly to the default option.
- \item[cambria] Loads the Cambria fonts of Microsoft. These must be already installed
- as a system font (in \verb|C:\Windows\Fonts| in MS-Windows, in \verb|/home/user/.fonts/| in Linux
- or elsewhere by the system administratior).
- \item[ebgaramond] Loads the EB-Garamond fonts with Garamond-Math.
- \item[fira] Loads the Fira family, a sans-serif font.
- \item[gfsartemisia] Loads the GFSArtemisia, a font family designed to be used
- as a Times replacement. The Mathematics is from stix2 but latin
- and greek letters are substituted from GFSArtemisia to provide a better match.
- \item[gfsdidotclassic] Uses the GFSDidotClassic for Greek with GFSPorson for italic.
- The latin part is URW garamond. The Mathematics is from Garamond-Math but the greek
- letters are substituted from GFSDidotClassic to provide a better match. Notice that
- the Bold versions of the Greek fonts are faked using fontspec mechanism as
- the Greek part does not have bold versions.
- \item[gfsdidot] Loads the GFSDidot fonts. NewCMMath-Book is the Mathematics font, but latin
- and greek letters are substituted from GFSdidot to provide a better match.
- \item[gfsneohellenic] Loads the GFSNeohellenic family with GFSNeohellenic-Math.
- \item[kerkis] Loads the kerkis font family and texgyrebonum-math.
- \item[libertinus] Loads the Libertinus and LibertinusMath fonts.
- \item[lucida] Loads the Lucida font family if available (a commercial font).
- \item[minion] Loads the MinionPro family. To install it, find the fonts MinionPro and
- MyriadPro from the installation of Adobe PDF Reader and install the fonts to your system
- (in \verb|C:\Windows\Fonts| in MS-Windows, in \verb|/home/user/.fonts/| in Linux
- or elsewhere by the system administratior). Moreover, install the supplied
- fspmnscel.otf as a system font to have access to Greek small caps.
- Mathematics is from stix2
- with letters replaced from MinionPro. Sans is MyriadPro.
- \item[msgaramond] Loads the MS-Garamond fonts. These must be system installed
- (in \verb|C:\Windows\Fonts| in MS-Windows, in \verb|/home/user/.fonts/| in Linux
- or elsewhere by the system administratior). Mathematics is from
- Garamond-Math with letters replaced
- from MS-Garamond.
- \item[neoeuler] Loads the Concrete fonts with the Euler for Mathematics.
- Needs euler.otf to be instaled in the TeX installation.
- \item[palatino] Loads the Linotype Palatino Fonts available from some versions of Windows.
- Thefonts must be system installed (in \verb|C:\Windows\Fonts| in MS-Windows,
- in \verb|/home/user/.fonts/| in Linux or elsewhere by the system administratior). The supplied
- fsplpscel.otf must be also
- system-installed to allow access to Greek small caps.
- Mathematics font is texgyrepagella-math.
- \item[stixtwo] Loads the stix2 fonts, a Times-type font.
- \item[times] Loads the FreeSerifb fonts, a Times font and stix2 for Mathematics
- with letters replaced from FreeSerifb.
- \end{description}
-
- You do not need to load \verb|fontspec|. This, as well as \verb|unicode-math|, are
- automatically loaded. A minimal file is
-\begin{verbatim}
- \documentclass{article}
- \usepackage[default]{fontsetup}
- \begin{document}
- ...
- \end{document}
-\end{verbatim}
-
-The switch to another font is trivial. You just change the option of \verb|fontsetup|
-to another among the supported ones.
-
-
-\bigskip
-
-\textbf{Summary of installation steps to support all fonts}
-
-\medskip
-
-You do not have to do any of these steps if you rely on free fonts
-(except step 6 if you want to use the \verb|neoeuler| option) and do not want
-to use the commercial ones.
-
-\medskip
-
-\begin{enumerate}
-\item Install as system fonts the supplied \verb|fspmnscel.otf|
- and \verb|fsplpscel.otf| (in \verb|C:\Windows\Fonts\| on MS-Windows or in
- \verb|/home/user/.fonts/| in Linux or system-wide install as administrator)
-\item Repeat the previous step for all MinionPro and MyriadPro fonts from the
- installation of the free Adobe Acrobat Reader.
-\item Repeat the above for the MS-Garamond fonts (\verb|Gara.ttf|, \verb|Garabd.ttf|
- and \verb|Garait.ttf|) as well as for the Linotype Palatino fonts
- found in some versions of Microsoft Windows (\verb|palabi.ttf|, \verb|palab.ttf|,
- \verb|palai.ttf|, and \verb|pala.ttf|).
-\item Repeat the above for the Cambria fonts (\verb|cambria.ttc|, \verb|cambriab.ttf|,
- \verb|cambriai.ttf|, \verb|cambriaz.ttf|).
-\item Install the commercial Lucida fonts (if available) in your TeX tree.
-\item Install \verb|euler.otf| in your TeX tree from
- here: \verb|https://github.com/khaledhosny/euler-otf|
-\end{enumerate}
-
-\bigskip
-
-
-
-
-You can indeed suggest a new combination of fonts and I will add them. However, I do
-reserve the right to reject them if the font quality is bad or if Mathematics is not supported
-with a matching font.
-
-Samples follow.
-
-\newpage
-
-\begin{center}
-{\Large Cambria and CambriaMath: option \verb|cambria|}\\
-Cambria Fonts must be installed as system fonts\\[1cm]
-\includegraphics[scale=1.2]{fspsample-cambria.pdf}
-\end{center}
-
-\newpage
-
-\begin{center}
-{\Large ComputerModern fonts (Book weight): option \verb|default|}\\[1cm]
-\includegraphics[scale=1.2]{fspsample-newdefault.pdf}
-\end{center}
-\newpage
-
-\begin{center}
-{\Large ComputerModern fonts (old Regular weight): option \verb|olddefault|}\\[1cm]
-\includegraphics[scale=1.2]{fspsample-cmr.pdf}
-\end{center}
-
-\newpage
-
-\begin{center}
-{\Large EB-Garamond and Garamond-Math fonts: option \verb|ebgaramond|}\\[1cm]
-\includegraphics[scale=1.2]{fspsample-ebgaramond.pdf}
-\end{center}
-
-\newpage
-
-\begin{center}
-{\Large Fira fonts: option \verb|fira|}\\[1cm]
-\includegraphics[scale=1.2]{fspsample-fira.pdf}
-\end{center}
-
-\newpage
-
-\begin{center}
-{\Large GFSArtemisia and Stix2Math fonts: option \verb|gfsartemisia|}\\[1cm]
-\includegraphics[scale=1.2]{fspsample-gfsartemisia.pdf}
-\end{center}
-
-\newpage
-
-\begin{center}
-{\Large GFSDidotClassic, GFSPorson Italic, and Garamond-Math fonts: option \verb|gfsdidotclassic|}\\[1cm]
-\includegraphics[scale=1.2]{fspsample-gfsdidotclassic.pdf}
-\end{center}
-
-\newpage
-
-\begin{center}
-{\Large GFSDidot and NewCMMath-Book: option \verb|gfsdidot|}\\[1cm]
-\includegraphics[scale=1.2]{fspsample-gfsdidot.pdf}
-\end{center}
-
-\newpage
-
-\begin{center}
-{\Large GFSNeohellenic and GFSNeohellenic-Math: option \verb|gfsneohellenic|}\\[1cm]
-\includegraphics[scale=1.2]{fspsample-gfsneohellenic.pdf}
-\end{center}
-
-\newpage
-
-\begin{center}
-{\Large Kerkis and texgyrebonum-math: option \verb|kerkis|}\\[1cm]
-\includegraphics[scale=1.2]{fspsample-kerkis.pdf}
-\end{center}
-
-
-
-\newpage
-
-\begin{center}
-{\Large Libertinus and LibertinusMath: option \verb|libertinus|}\\[1cm]
-\includegraphics[scale=1.2]{fspsample-libertinus.pdf}
-\end{center}
-
-
-
-\newpage
-
-\begin{center}
-{\Large Lucida and Lucida-Math (commercial): option \verb|lucida|}\\[1cm]
-\includegraphics[scale=1.2]{fspsample-lucida.pdf}
-\end{center}
-
-\newpage
-
-\begin{center}
-{\Large MinionPro (commercial) and Stix2Math: option \verb|minion|}\\
-MinionPro Fonts and the supplied fspmnscel.otf must
-be installed as system fonts\\[1cm]
-\includegraphics[scale=1.2]{fspsample-minion.pdf}
-\end{center}
-
-\newpage
-
-\begin{center}
-{\Large MS-Garamond (commercial) and Garamond-Math: option \verb|msgaramond|}\\
-MS-Garamond Fonts must be installed as system fonts\\[1cm]
-\includegraphics[scale=1.2]{fspsample-msgaramond.pdf}
-\end{center}
-
-\newpage
-
-\begin{center}
-{\Large Concrete fonts and NeoEuler Math: option \verb|neoeuler|}\\
-NeoEuler font must be installed in TeX tree\\[1cm]
-\includegraphics[scale=1.2]{fspsample-neoeuler.pdf}
-\end{center}
-
-\newpage
-
-\begin{center}
-{\Large Linotype Palatino (commercial) and texgyrepagella-math: option \verb|palatino|}\\
-Linotype Palatino Fonts and the supplied fsplpscel.otf must be installed as system fonts\\[1cm]
-\includegraphics[scale=1.2]{fspsample-palatino.pdf}
-\end{center}
-
-\newpage
-
-\begin{center}
-{\Large Stix2 and Stix2Math: option \verb|stixtwo|}\\[1cm]
-\includegraphics[scale=1.2]{fspsample-stixtwo.pdf}
-\end{center}
-
-\newpage
-
-\begin{center}
-{\Large FreeSerifb and Stix2Math: option \verb|times|}\\[1cm]
-\includegraphics[scale=1.2]{fspsample-times.pdf}
-\end{center}
-
-\appendix
-
-\chapter{Ancient Greek Numbers}
-The following table lists the commands and the symbol produced for the Unicode range
-\texttt{u10140--u1018E}.
-\begin{center}\enlargethispage{1cm}
- \begin{supertabular}{|l|l||l|l|}
- \hline
-\verb|\atticonequarter| & \atticonequarter &\verb|\hermionianfifty| & \hermionianfifty \\ \hline
-\verb|\atticonehalf| & \atticonehalf &\verb|\thespianfifty| & \thespianfifty \\ \hline
-\verb|\atticonedrachma| & \atticonedrachma &\verb|\thespianonehundred| & \thespianonehundred \\ \hline
-\verb|\atticfive| & \atticfive &\verb|\thespianthreehundred| & \thespianthreehundred \\ \hline
-\verb|\atticfifty| & \atticfifty &\verb|\epidaurianfivehundred| & \epidaurianfivehundred \\ \hline
-\verb|\atticfivehundred| & \atticfivehundred &\verb|\troezenianfivehundred| & \troezenianfivehundred \\ \hline
-\verb|\atticfivethousand| & \atticfivethousand &\verb|\thespianfivehundred| & \thespianfivehundred \\ \hline
-\verb|\atticfiftythousand| & \atticfiftythousand &\verb|\carystianfivehundred| & \carystianfivehundred \\ \hline
-\verb|\atticfivetalents| & \atticfivetalents &\verb|\naxianfivehundred| & \naxianfivehundred \\ \hline
-\verb|\attictentalents| & \attictentalents &\verb|\thespianonethousand| & \thespianonethousand \\ \hline
-\verb|\atticfiftytalents| & \atticfiftytalents &\verb|\thespianfivethousand| & \thespianfivethousand \\ \hline
-\verb|\atticonehundredtalents| & \atticonehundredtalents &\verb|\delphicfivemnas| & \delphicfivemnas \\ \hline
-\verb|\atticfivehundredtalents| & \atticfivehundredtalents &\verb|\stratianfiftymnas| & \stratianfiftymnas \\ \hline
-\verb|\atticonethousandtalents| & \atticonethousandtalents &\verb|\greekonehalfsign| & \greekonehalfsign \\ \hline
-\verb|\atticfivethousandtalents| & \atticfivethousandtalents &\verb|\greekonehalfsignalt| & \greekonehalfsignalt \\ \hline
-\verb|\atticfivestaters| & \atticfivestaters &\verb|\greektwothirdssign| & \greektwothirdssign \\ \hline
-\verb|\attictenstaters| & \attictenstaters &\verb|\greekthreequarterssign| & \greekthreequarterssign \\ \hline
-\verb|\atticfiftystaters| & \atticfiftystaters &\verb|\greekyearsign| & \greekyearsign \\ \hline
-\verb|\atticonehundredstaters| & \atticonehundredstaters &\verb|\greektalentsign| & \greektalentsign \\ \hline
-\verb|\atticfivehundredstaters| & \atticfivehundredstaters &\verb|\greekdrachmasign| & \greekdrachmasign \\ \hline
-\verb|\atticonethousandstaters| & \atticonethousandstaters &\verb|\greekobolsign| & \greekobolsign \\ \hline
-\verb|\attictenthousandstaters| & \attictenthousandstaters &\verb|\greektwoobolssign| & \greektwoobolssign \\ \hline
-\verb|\atticfiftythousandstaters| & \atticfiftythousandstaters &\verb|\greekthreeobolssign| & \greekthreeobolssign \\ \hline
-\verb|\attictenmnas| & \attictenmnas &\verb|\greekfourobolssign| & \greekfourobolssign \\ \hline
-\verb|\heraleumoneplethron| & \heraleumoneplethron &\verb|\greekfiveobolssign| & \greekfiveobolssign \\ \hline
-\verb|\thespianone| & \thespianone &\verb|\greekmetretessign| & \greekmetretessign \\ \hline
-\verb|\ermionianone| & \ermionianone &\verb|\greekkyathosbasesign| & \greekkyathosbasesign \\ \hline
-\verb|\epidauriantwo| & \epidauriantwo &\verb|\greeklytrasign| & \greeklytrasign \\ \hline
-\verb|\thespiantwo| & \thespiantwo &\verb|\greekounkiasign| & \greekounkiasign \\ \hline
-\verb|\cyrenaictwodrachmas| & \cyrenaictwodrachmas &\verb|\greekxestessign| & \greekxestessign \\ \hline
-\verb|\epidauriantwodrachmas| & \epidauriantwodrachmas &\verb|\greekartabesign| & \greekartabesign \\ \hline
-\verb|\troezenianfive| & \troezenianfive &\verb|\greekarourasign| & \greekarourasign \\ \hline
-\verb|\troezenianten| & \troezenianten &\verb|\greekgrammasign| & \greekgrammasign \\ \hline
-\verb|\troezeniantenalt| & \troezeniantenalt &\verb|\greektryblionbasesign| & \greektryblionbasesign \\ \hline
-\verb|\hermionianten| & \hermionianten &\verb|\greekzerosign| & \greekzerosign \\ \hline
-\verb|\messenianten| & \messenianten &\verb|\greekonequartersign| & \greekonequartersign \\ \hline
-\verb|\thespianten| & \thespianten &\verb|\greeksinusoidsign| & \greeksinusoidsign \\ \hline
-\verb|\thespianthirty| & \thespianthirty &\verb|\greekindictionsign| & \greekindictionsign \\ \hline
-\verb|\troezenianfifty| & \troezenianfifty &\verb|\nomismasign| & \nomismasign \\ \hline
-\verb|\troezenianfiftyalt| & \troezenianfiftyalt & & \\ \hline
- \end{supertabular}
-\end{center}
-
-
-\end{document}
diff --git a/macros/latex/contrib/fontsetup/doc/fspsample-cambria.pdf b/macros/latex/contrib/fontsetup/doc/fspsample-cambria.pdf
deleted file mode 100644
index f003f22208..0000000000
--- a/macros/latex/contrib/fontsetup/doc/fspsample-cambria.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/fontsetup/doc/fspsample-cmr.pdf b/macros/latex/contrib/fontsetup/doc/fspsample-cmr.pdf
deleted file mode 100644
index 8423318316..0000000000
--- a/macros/latex/contrib/fontsetup/doc/fspsample-cmr.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/fontsetup/doc/fspsample-ebgaramond.pdf b/macros/latex/contrib/fontsetup/doc/fspsample-ebgaramond.pdf
deleted file mode 100644
index 6084e0e3bf..0000000000
--- a/macros/latex/contrib/fontsetup/doc/fspsample-ebgaramond.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/fontsetup/doc/fspsample-fira.pdf b/macros/latex/contrib/fontsetup/doc/fspsample-fira.pdf
deleted file mode 100644
index 479fecca54..0000000000
--- a/macros/latex/contrib/fontsetup/doc/fspsample-fira.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/fontsetup/doc/fspsample-gfsartemisia.pdf b/macros/latex/contrib/fontsetup/doc/fspsample-gfsartemisia.pdf
deleted file mode 100644
index 1d1365d8ca..0000000000
--- a/macros/latex/contrib/fontsetup/doc/fspsample-gfsartemisia.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/fontsetup/doc/fspsample-gfsdidot.pdf b/macros/latex/contrib/fontsetup/doc/fspsample-gfsdidot.pdf
deleted file mode 100644
index 9e4ccd3545..0000000000
--- a/macros/latex/contrib/fontsetup/doc/fspsample-gfsdidot.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/fontsetup/doc/fspsample-gfsdidotclassic.pdf b/macros/latex/contrib/fontsetup/doc/fspsample-gfsdidotclassic.pdf
deleted file mode 100644
index 873efb92dc..0000000000
--- a/macros/latex/contrib/fontsetup/doc/fspsample-gfsdidotclassic.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/fontsetup/doc/fspsample-gfsneohellenic.pdf b/macros/latex/contrib/fontsetup/doc/fspsample-gfsneohellenic.pdf
deleted file mode 100644
index 3f1817a12e..0000000000
--- a/macros/latex/contrib/fontsetup/doc/fspsample-gfsneohellenic.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/fontsetup/doc/fspsample-kerkis.pdf b/macros/latex/contrib/fontsetup/doc/fspsample-kerkis.pdf
deleted file mode 100644
index 5161451c9f..0000000000
--- a/macros/latex/contrib/fontsetup/doc/fspsample-kerkis.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/fontsetup/doc/fspsample-libertinus.pdf b/macros/latex/contrib/fontsetup/doc/fspsample-libertinus.pdf
deleted file mode 100644
index 845f5cf7be..0000000000
--- a/macros/latex/contrib/fontsetup/doc/fspsample-libertinus.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/fontsetup/doc/fspsample-lucida.pdf b/macros/latex/contrib/fontsetup/doc/fspsample-lucida.pdf
deleted file mode 100644
index bebf3ceff9..0000000000
--- a/macros/latex/contrib/fontsetup/doc/fspsample-lucida.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/fontsetup/doc/fspsample-minion.pdf b/macros/latex/contrib/fontsetup/doc/fspsample-minion.pdf
deleted file mode 100644
index ef26ae6481..0000000000
--- a/macros/latex/contrib/fontsetup/doc/fspsample-minion.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/fontsetup/doc/fspsample-msgaramond.pdf b/macros/latex/contrib/fontsetup/doc/fspsample-msgaramond.pdf
deleted file mode 100644
index e411c077d6..0000000000
--- a/macros/latex/contrib/fontsetup/doc/fspsample-msgaramond.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/fontsetup/doc/fspsample-neoeuler.pdf b/macros/latex/contrib/fontsetup/doc/fspsample-neoeuler.pdf
deleted file mode 100644
index 545c0d7ace..0000000000
--- a/macros/latex/contrib/fontsetup/doc/fspsample-neoeuler.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/fontsetup/doc/fspsample-newdefault.pdf b/macros/latex/contrib/fontsetup/doc/fspsample-newdefault.pdf
deleted file mode 100644
index 736690886c..0000000000
--- a/macros/latex/contrib/fontsetup/doc/fspsample-newdefault.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/fontsetup/doc/fspsample-palatino.pdf b/macros/latex/contrib/fontsetup/doc/fspsample-palatino.pdf
deleted file mode 100644
index 48644e576d..0000000000
--- a/macros/latex/contrib/fontsetup/doc/fspsample-palatino.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/fontsetup/doc/fspsample-stixtwo.pdf b/macros/latex/contrib/fontsetup/doc/fspsample-stixtwo.pdf
deleted file mode 100644
index bcec3a110a..0000000000
--- a/macros/latex/contrib/fontsetup/doc/fspsample-stixtwo.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/fontsetup/doc/fspsample-times.pdf b/macros/latex/contrib/fontsetup/doc/fspsample-times.pdf
deleted file mode 100644
index f1dea75182..0000000000
--- a/macros/latex/contrib/fontsetup/doc/fspsample-times.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/fontsetup/doc/fspsample.tex b/macros/latex/contrib/fontsetup/doc/fspsample.tex
deleted file mode 100644
index 23ec736e02..0000000000
--- a/macros/latex/contrib/fontsetup/doc/fspsample.tex
+++ /dev/null
@@ -1,75 +0,0 @@
-%% after xelatex run
-%% pdfcrop fspsample.pdf output.pdf
-%% to crop it
-\documentclass{article}
-\pagestyle{empty}
-\usepackage{xgreek,graphicx}
-\pagestyle{empty}
-%\usepackage[greek]{babel}
-%\usepackage[utf8x]{inputenc}
-%\usepackage{amsfonts}
-
-\usepackage[default]{fontsetup}
-%\usepackage[gfsartemisia]{fontsetup}
-%\usepackage[gfsdidot]{fontsetup}
-%\usepackage[gfsdidotclassic]{fontsetup}
-%\usepackage[gfsneohellenic]{fontsetup}
-%\usepackage[cambria]{fontsetup}
-%\usepackage[lucida]{fontsetup}
-%\usepackage[kerkis]{fontsetup}
-%\usepackage[fira]{fontsetup}
-%\usepackage[times]{fontsetup}
-%\usepackage[palatino]{fontsetup}
-%\usepackage[stixtwo]{fontsetup}
-%\usepackage[neokadmus]{fontsetup}
-%\usepackage[msgaramond]{fontsetup}
-%\usepackage[ebgaramond]{fontsetup}
-%\usepackage[minion]{fontsetup}
-%\usepackage[neoeuler]{fontsetup}
-%\usepackage[libertinus]{fontsetup}
-%\usepackage[olddefault]{fontsetup}
-
-
-
-\newtheorem{theorem}{Theorem}
-\newtheorem{theoremg}[theorem]{Θεώρημα}
-
-
-\begin{document}
-
-\begin{theorem}[Dominated convergence of Lebesgue]
-%Let $g$ be an
-Assume that $g$ is an
-in\-te\-grable func\-tion defined on the measurable set $E$ and that
- $(\,f_n)_{n\in\mathbb N}$ is a sequence of mea\-sur\-able functions so that
- $|\,f_n|\leq g$. If $f$ is a function so that $f_n\to f$ almost everywhere
- then $$\lim_{n\to\infty}\int f_n=\int f.$$
-\end{theorem}
-\textit{Proof}: The function $g-f_n$ is non-negative and thus from Fatou lemma
-we have that $\int(g-f\,)\leq\liminf\int(g-f_n)$. Since $|\,f\,|\leq g$ and
-$|\,f_n|\leq g$ the functions $f$ and $f_n$ are integrable and we have
-$$\int g-\int f\,\leq \int g-\limsup\int f_n,$$ so
-$$\int f\,\geq \limsup \int f_n.$$
-\par
-\begin{theoremg}[Κυριαρχημένης σύγκλισης του Lebesgue]
- Έστω ότι
-η $g$ είναι μια ολοκληρώσιμη συνάρτηση ορισμένη στο μετρήσιμο σύνολο
-$E$ και η $(\,f_n)_{n\in\mathbb N}$ είναι μια ακολουθία μετρήσιμων συναρτήσεων ώστε
-$|\,f_n| ≤ g$. Υποθέτουμε ότι υπάρχει μια συνάρτηση $f$
-ώστε η $(f_n)_{n\in\mathbb N}$ να
-τείνει στην $f$ σχεδόν παντού. Τότε
-$$\lim \int f_n =\int f.$$
-\end{theoremg}
-\textit{Απόδειξη}: Η συνάρτηση $g − f_n$ είναι μη αρνητική και άρα από
-το Λήμμα του Fatou ισχύει
-$\int (f-g) ≤ \liminf \int (g-f_n)$. Επειδή
-$|\,f\,| ≤ g$ και $|\,f_n| ≤g$ οι $f$ και $f_n$ είναι ολοκληρώσιμες, έχουμε
-$$\int g −\int f\, ≤ \int g − \limsup\int f_n,$$
-άρα
-$$\int f\,\geq \limsup \int f_n.$$
-
-
-
-
-
-\end{document}
diff --git a/macros/latex/contrib/fontsetup/fontsetup.sty b/macros/latex/contrib/fontsetup/fontsetup.sty
deleted file mode 100644
index 32ed9bc0d4..0000000000
--- a/macros/latex/contrib/fontsetup/fontsetup.sty
+++ /dev/null
@@ -1,110 +0,0 @@
-%\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{fontsetup}[2019/12/20 Easy font setup by Antonis Tsolomitis]
-\typeout{fontsetup: Easy font setup by Antonis Tsolomitis}
-
-\chardef\fontsetupdefault=0 %
-\chardef\fontsetupgfsartemisia=1
-\chardef\fontsetupgfsdidot=2
-\chardef\fontsetupgfsdidotclassic=3
-\chardef\fontsetupgfsneohellenic=4
-\chardef\fontsetupcambria=5 %install cambria as a system font. cambria.ttc, cambriai.ttf, cambriab.ttf, cambriaz.ttf
-\chardef\fontsetuplucida=6 %install in TeX tree
-\chardef\fontsetupkerkis=7
-\chardef\fontsetupfira=8
-\chardef\fontsetuptimes=9
-\chardef\fontsetuppalatino=10 %install Linotype Palatino as a System font. Files pala.ttf palai, palab, palabi. Install fspPalatinoGreekSmallCaps as a System font.
-\chardef\fontsetupstixtwo=11
-\chardef\fontsetupneokadmus=12
-\chardef\fontsetupmsgaramond=13 %install Microsoft Garamond as a System font. Gara.TTF, Garai, Garabd
-\chardef\fontsetupebgaramond=14
-\chardef\fontsetupminion=15 % Install MinionPro and provided fspMinionGreekSmallCaps as a system font.
-\chardef\fontsetupneoeuler=16
-\chardef\fontsetuplibertinus=17
-\chardef\fontsetupolddefault=18 % old (thin) CMR
-
-\chardef\fontsetupfont\fontsetupdefault
-\DeclareOption{default}{\chardef\fontsetupfont\fontsetupdefault}
-\DeclareOption{gfsartemisia}{\chardef\fontsetupfont\fontsetupgfsartemisia}
-\DeclareOption{gfsdidot}{\chardef\fontsetupfont\fontsetupgfsdidot}
-\DeclareOption{gfsdidotclassic}{\chardef\fontsetupfont\fontsetupgfsdidotclassic}
-\DeclareOption{gfsneohellenic}{\chardef\fontsetupfont\fontsetupgfsneohellenic}
-\DeclareOption{cambria}{\chardef\fontsetupfont\fontsetupcambria}
-\DeclareOption{lucida}{\chardef\fontsetupfont\fontsetuplucida}
-\DeclareOption{kerkis}{\chardef\fontsetupfont\fontsetupkerkis}
-\DeclareOption{fira}{\chardef\fontsetupfont\fontsetupfira}
-\DeclareOption{times}{\chardef\fontsetupfont\fontsetuptimes}
-\DeclareOption{palatino}{\chardef\fontsetupfont\fontsetuppalatino}
-\DeclareOption{stixtwo}{\chardef\fontsetupfont\fontsetupstixtwo}
-\DeclareOption{neokadmus}{\chardef\fontsetupfont\fontsetupneokadmus}
-\DeclareOption{msgaramond}{\chardef\fontsetupfont\fontsetupmsgaramond}
-\DeclareOption{ebgaramond}{\chardef\fontsetupfont\fontsetupebgaramond}
-\DeclareOption{minion}{\chardef\fontsetupfont\fontsetupminion}
-\DeclareOption{neoeuler}{\chardef\fontsetupfont\fontsetupneoeuler}
-\DeclareOption{libertinus}{\chardef\fontsetupfont\fontsetuplibertinus}
-\DeclareOption{olddefault}{\chardef\fontsetupfont\fontsetupolddefault}
-\DeclareOption*{\PackageWarning{fontsetup}{Unknown ‘\CurrentOption’}}
-\ProcessOptions
-
-%provide a test to know if a 16bits TeX is used.
-\RequirePackage{ifthen}
-\RequirePackage{iftex}
-\newboolean{TeXUnicode}
-\ifXeTeX
- \setboolean{TeXUnicode}{true}
-\fi
-\ifLuaTeX
- \setboolean{TeXUnicode}{true}
-\fi
-
-
-
-\ifthenelse{\boolean{TeXUnicode}}{%
- %The user runs unicode engine
- \ifcase\fontsetupfont
- \RequirePackage{fspdefault}
-\or
- \RequirePackage{fspgfsartemisiaot}
-\or
- \RequirePackage{fspgfsdidotot}
-\or
- \RequirePackage{fspgfsdidotclassicot}
-\or
- \RequirePackage{fspgfsneohellenicot}
-\or
- \RequirePackage{fspcambria}
-\or
- \RequirePackage{fsplucidaot}
-% \RequirePackage[usefilenames]{lucida-otf} %for some reason it fails
-\or
- \RequirePackage{fspkerkisot}
-\or
- \RequirePackage{fspfiraot}
-\or
- \RequirePackage{fsptimesot}
-\or
- \RequirePackage{fsppalatinoot}
-\or
- \RequirePackage{fspstixtwoot}
-\or
- \RequirePackage{neokadmus}
-\or
- \RequirePackage{fspmsgaramondot}
-\or
- \RequirePackage{fspebgaramondot}
-\or
- \RequirePackage{fspminion}
-\or
- \RequirePackage{fspneoeulerot}
-\or
- \RequirePackage{libertinus-otf}
-\or
- \RequirePackage{fspolddefault}
- \fi
-}{%the user runs 8bit engine
-\relax}
-
-
-
-
-\endinput
-
diff --git a/macros/latex/contrib/fontsetup/fspcambria.sty b/macros/latex/contrib/fontsetup/fspcambria.sty
deleted file mode 100644
index b2947bb3d6..0000000000
--- a/macros/latex/contrib/fontsetup/fspcambria.sty
+++ /dev/null
@@ -1,9 +0,0 @@
-%%
-%% Load Cambria fonts (C) A. Tsolomitis
-%%
-\RequirePackage{fontspec}
-\setmainfont[Contextuals=AlternateOff,BoldFont=Cambria-Bold,ItalicFont=Cambria-Italic,BoldItalicFont=Cambria-BoldItalic]{Cambria}
-\RequirePackage{unicode-math}
-\setmathfont{Cambria Math}
-
-\endinput
diff --git a/macros/latex/contrib/fontsetup/fspdefault.sty b/macros/latex/contrib/fontsetup/fspdefault.sty
deleted file mode 100644
index da0a494155..0000000000
--- a/macros/latex/contrib/fontsetup/fspdefault.sty
+++ /dev/null
@@ -1,251 +0,0 @@
-%% (C) Antonis Tsolomitis, GPL3.
-\RequirePackage{fontspec}
-\RequirePackage{unicode-math}
-\setmainfont[%
-ItalicFont=NewCM10-BookItalic.otf,%
-BoldFont=NewCM10-Bold.otf,%
-BoldItalicFont=NewCM10-BoldItalic.otf,%
-SlantedFont=NewCM10-Book.otf,%
-SlantedFeatures={FakeSlant=0.25},
-BoldSlantedFont=NewCM10-Bold.otf,%
-BoldSlantedFeatures={FakeSlant=0.25},
-SmallCapsFeatures={Numbers=OldStyle}]{NewCM10-Book.otf}
-
-\setsansfont[%
-ItalicFont=NewCMSans10-BookOblique.otf,%
-BoldFont=NewCMSans10-Bold.otf,%
-BoldItalicFont=NewCMSans10-BoldOblique.otf,%
-SlantedFont=NewCMSans10-BookOblique.otf,%
-BoldSlantedFont=NewCMSans10-BoldOblique.otf,%
-SmallCapsFeatures={Numbers=OldStyle}]{NewCMSans10-Book.otf}
-
-\setmonofont[%
-ItalicFont=NewCMMono10-BookItalic.otf,%
-BoldFont=NewCMMono10-Bold.otf,%
-BoldItalicFont=NewCMMono10-BoldOblique.otf,%
-SlantedFont=NewCMMono10-Book.otf,%
-SlantedFeatures={FakeSlant=0.25},
-BoldSlantedFont=NewCMMono10-Bold.otf,%
-BoldSlantedFeatures={FakeSlant=0.25},
-SmallCapsFeatures={Numbers=OldStyle}]{NewCMMono10-Book.otf}
-
-\setmathfont{NewCMMath-Book.otf}
-
-\newcommand{\tttextsc}[1]{{\ttscshape#1}}
-%
-\newcommand{\prosgegrammeni}{\addfontfeature{StylisticSet=1}}
-\newcommand{\textprosgegrammeni}[1]{{\prosgegrammeni#1}}
-%
-\newfontfamily{\ivbce}[StylisticSet=2]{NewCMSans10-Book.otf}
-\newcommand{\textivbce}[1]{{\ivbce#1}}
-%
-\newfontfamily{\ivbcealt}[StylisticSet=3]{NewCMSans10-Book.otf}
-\newcommand{\textivbcealt}[1]{{\ivbcealt#1}}
-%
-\newfontfamily{\vibce}[StylisticSet=4]{NewCMSans10-Book.otf}
-\newcommand{\textvibce}[1]{{\vibce#1}}
-%
-%% math (upright) sans Greek
-\newcommand{\msansAlpha}{\char"E000}
-\newcommand{\msansBeta}{\char"E001}
-\newcommand{\msansGamma}{\char"E002}
-\newcommand{\msansDelta}{\char"E003}
-\newcommand{\msansEpsilon}{\char"E004}
-\newcommand{\msansZeta}{\char"E005}
-\newcommand{\msansEta}{\char"E006}
-\newcommand{\msansTheta}{\char"E007}
-\newcommand{\msansIota}{\char"E008}
-\newcommand{\msansKappa}{\char"E009}
-\newcommand{\msansLambda}{\char"E00A}
-\newcommand{\msansMu}{\char"E00B}
-\newcommand{\msansNu}{\char"E00C}
-\newcommand{\msansXi}{\char"E00D}
-\newcommand{\msansOmicron}{\char"E00E}
-\newcommand{\msansPi}{\char"E00F}
-\newcommand{\msansRho}{\char"E010}
-\newcommand{\msansSigma}{\char"E011}
-\newcommand{\msansTau}{\char"E012}
-\newcommand{\msansUpsilon}{\char"E013}
-\newcommand{\msansPhi}{\char"E014}
-\newcommand{\msansChi}{\char"E015}
-\newcommand{\msansPsi}{\char"E016}
-\newcommand{\msansOmega}{\char"E017}
-\newcommand{\msansalpha}{\char"E018}
-\newcommand{\msansbeta}{\char"E019}
-\newcommand{\msansgamma}{\char"E01A}
-\newcommand{\msansdelta}{\char"E01B}
-\newcommand{\msansepsilon}{\char"E01C}
-\newcommand{\msanszeta}{\char"E01D}
-\newcommand{\msanseta}{\char"E01E}
-\newcommand{\msanstheta}{\char"E01F}
-\newcommand{\msansiota}{\char"E020}
-\newcommand{\msanskappa}{\char"E021}
-\newcommand{\msanslambda}{\char"E022}
-\newcommand{\msansmu}{\char"E023}
-\newcommand{\msansnu}{\char"E024}
-\newcommand{\msansxi}{\char"E025}
-\newcommand{\msansomicron}{\char"E026}
-\newcommand{\msanspi}{\char"E027}
-\newcommand{\msansrho}{\char"E028}
-\newcommand{\msansvarsigma}{\char"E029}
-\newcommand{\msanssigma}{\char"E02A}
-\newcommand{\msanstau}{\char"E02B}
-\newcommand{\msansupsilon}{\char"E02C}
-\newcommand{\msansphi}{\char"E02D}
-\newcommand{\msanschi}{\char"E02E}
-\newcommand{\msanspsi}{\char"E02F}
-\newcommand{\msansomega}{\char"E030}
-\newcommand{\msansvarepsilon}{\char"E031}
-% math italic sans Greek
-\newcommand{\mitsansAlpha}{\char"E041}
-\newcommand{\mitsansBeta}{\char"E042}
-\newcommand{\mitsansGamma}{\char"E043}
-\newcommand{\mitsansDelta}{\char"E044}
-\newcommand{\mitsansEpsilon}{\char"E045}
-\newcommand{\mitsansZeta}{\char"E046}
-\newcommand{\mitsansEta}{\char"E047}
-\newcommand{\mitsansTheta}{\char"E048}
-\newcommand{\mitsansIota}{\char"E049}
-\newcommand{\mitsansKappa}{\char"E04A}
-\newcommand{\mitsansLambda}{\char"E04B}
-\newcommand{\mitsansMu}{\char"E04C}
-\newcommand{\mitsansNu}{\char"E04D}
-\newcommand{\mitsansXi}{\char"E04E}
-\newcommand{\mitsansOmicron}{\char"E04F}
-\newcommand{\mitsansPi}{\char"E050}
-\newcommand{\mitsansRho}{\char"E051}
-\newcommand{\mitsansSigma}{\char"E052}
-\newcommand{\mitsansTau}{\char"E053}
-\newcommand{\mitsansUpsilon}{\char"E054}
-\newcommand{\mitsansPhi}{\char"E055}
-\newcommand{\mitsansChi}{\char"E056}
-\newcommand{\mitsansPsi}{\char"E057}
-\newcommand{\mitsansOmega}{\char"E058}
-\newcommand{\mitsansalpha}{\char"E059}
-\newcommand{\mitsansbeta}{\char"E05A}
-\newcommand{\mitsansgamma}{\char"E05B}
-\newcommand{\mitsansdelta}{\char"E05C}
-\newcommand{\mitsansepsilon}{\char"E05D}
-\newcommand{\mitsanszeta}{\char"E05E}
-\newcommand{\mitsanseta}{\char"E05F}
-\newcommand{\mitsanstheta}{\char"E060}
-\newcommand{\mitsansiota}{\char"E061}
-\newcommand{\mitsanskappa}{\char"E062}
-\newcommand{\mitsanslambda}{\char"E063}
-\newcommand{\mitsansmu}{\char"E064}
-\newcommand{\mitsansnu}{\char"E065}
-\newcommand{\mitsansxi}{\char"E066}
-\newcommand{\mitsansomicron}{\char"E067}
-\newcommand{\mitsanspi}{\char"E068}
-\newcommand{\mitsansrho}{\char"E069}
-\newcommand{\mitsansvarsigma}{\char"E06A}
-\newcommand{\mitsanssigma}{\char"E06B}
-\newcommand{\mitsanstau}{\char"E06C}
-\newcommand{\mitsansupsilon}{\char"E06D}
-\newcommand{\mitsansphi}{\char"E06E}
-\newcommand{\mitsanschi}{\char"E06F}
-\newcommand{\mitsanspsi}{\char"E070}
-\newcommand{\mitsansomega}{\char"E071}
-\newcommand{\mitsansvarepsilon}{\char"E072}
-% Ancient Greek Numerals u10140-u1018E
-\newcommand{\atticonequarter}{\char"10140}
-\newcommand{\atticonehalf}{\char"10141}
-\newcommand{\atticonedrachma}{\char"10142}
-\newcommand{\atticfive}{\char"10143}
-\newcommand{\atticfifty}{\char"10144}
-\newcommand{\atticfivehundred}{\char"10145}
-\newcommand{\atticfivethousand}{\char"10146}
-\newcommand{\atticfiftythousand}{\char"10147}
-\newcommand{\atticfivetalents}{\char"10148}
-\newcommand{\attictentalents}{\char"10149}
-\newcommand{\atticfiftytalents}{\char"1014A}
-\newcommand{\atticonehundredtalents}{\char"1014B}
-\newcommand{\atticfivehundredtalents}{\char"1014C}
-\newcommand{\atticonethousandtalents}{\char"1014D}
-\newcommand{\atticfivethousandtalents}{\char"1014E}
-\newcommand{\atticfivestaters}{\char"1014F}
-\newcommand{\attictenstaters}{\char"10150}
-\newcommand{\atticfiftystaters}{\char"10151}
-\newcommand{\atticonehundredstaters}{\char"10152}
-\newcommand{\atticfivehundredstaters}{\char"10153}
-\newcommand{\atticonethousandstaters}{\char"10154}
-\newcommand{\attictenthousandstaters}{\char"10155}
-\newcommand{\atticfiftythousandstaters}{\char"10156}
-\newcommand{\attictenmnas}{\char"10157}
-\newcommand{\heraleumoneplethron}{\char"10158}
-\newcommand{\thespianone}{\char"10159}
-\newcommand{\ermionianone}{\char"1015A}
-\newcommand{\epidauriantwo}{\char"1015B}
-\newcommand{\thespiantwo}{\char"1015C}
-\newcommand{\cyrenaictwodrachmas}{\char"1015D}
-\newcommand{\epidauriantwodrachmas}{\char"1015E}
-\newcommand{\troezenianfive}{\char"1015F}
-\newcommand{\troezenianten}{\char"10160}
-\newcommand{\troezeniantenalt}{\char"10161}
-\newcommand{\hermionianten}{\char"10162}
-\newcommand{\messenianten}{\char"10163}
-\newcommand{\thespianten}{\char"10164}
-\newcommand{\thespianthirty}{\char"10165}
-\newcommand{\troezenianfifty}{\char"10166}
-\newcommand{\troezenianfiftyalt}{\char"10167}
-\newcommand{\hermionianfifty}{\char"10168}
-\newcommand{\thespianfifty}{\char"10169}
-\newcommand{\thespianonehundred}{\char"1016A}
-\newcommand{\thespianthreehundred}{\char"1016B}
-\newcommand{\epidaurianfivehundred}{\char"1016C}
-\newcommand{\troezenianfivehundred}{\char"1016D}
-\newcommand{\thespianfivehundred}{\char"1016E}
-\newcommand{\carystianfivehundred}{\char"1016F}
-\newcommand{\naxianfivehundred}{\char"10170}
-\newcommand{\thespianonethousand}{\char"10171}
-\newcommand{\thespianfivethousand}{\char"10172}
-\newcommand{\delphicfivemnas}{\char"10173}
-\newcommand{\stratianfiftymnas}{\char"10174}
-\newcommand{\greekonehalfsign}{\char"10175}
-\newcommand{\greekonehalfsignalt}{\char"10176}
-\newcommand{\greektwothirdssign}{\char"10177}
-\newcommand{\greekthreequarterssign}{\char"10178}
-\newcommand{\greekyearsign}{\char"10179}
-\newcommand{\greektalentsign}{\char"1017A}
-\newcommand{\greekdrachmasign}{\char"1017B}
-\newcommand{\greekobolsign}{\char"1017C}
-\newcommand{\greektwoobolssign}{\char"1017D}
-\newcommand{\greekthreeobolssign}{\char"1017E}
-\newcommand{\greekfourobolssign}{\char"1017F}
-\newcommand{\greekfiveobolssign}{\char"10180}
-\newcommand{\greekmetretessign}{\char"10181}
-\newcommand{\greekkyathosbasesign}{\char"10182}
-\newcommand{\greeklytrasign}{\char"10183}
-\newcommand{\greekounkiasign}{\char"10184}
-\newcommand{\greekxestessign}{\char"10185}
-\newcommand{\greekartabesign}{\char"10186}
-\newcommand{\greekarourasign}{\char"10187}
-\newcommand{\greekgrammasign}{\char"10188}
-\newcommand{\greektryblionbasesign}{\char"10189}
-\newcommand{\greekzerosign}{\char"1018A}
-\newcommand{\greekonequartersign}{\char"1018B}
-\newcommand{\greeksinusoidsign}{\char"1018C}
-\newcommand{\greekindictionsign}{\char"1018D}
-\newcommand{\nomismasign}{\char"1018E}
-%
-% some math symbols
-\DeclareRobustCommand\nrightrightarrows{\mathrel{\char"E033}}
-\DeclareRobustCommand\nleftleftarrows{\mathrel{\char"E032}}
-%
-% select ss02 lookup table for IPA symbols
-\newfontfamily{\ipatext}[StylisticSet=5,%
-BoldFont=NewCM10-Bold.otf,%
-SlantedFont=NewCM10-Regular.otf,%
-SlantedFeatures={FakeSlant=0.25},
-BoldSlantedFont=NewCM10-Bold.otf,%
-BoldSlantedFeatures={FakeSlant=0.25},
-SmallCapsFeatures={Numbers=OldStyle}]{NewCM10-Book.otf}
-\newcommand{\textipa}[1]{{\ipatext#1}}
-\newfontfamily{\ipatextsans}[StylisticSet=5,%
-ItalicFont=NewCMSans10-BookOblique.otf,%
-BoldFont=NewCMSans10-Bold.otf,%
-BoldItalicFont=NewCMSans10-BoldOblique.otf,%
-SlantedFont=NewCMSans10-Oblique.otf,%
-BoldSlantedFont=NewCMSans10-BoldOblique.otf,%
-SmallCapsFeatures={Numbers=OldStyle}]{NewCMSans10-Book.otf}
-\newcommand{\textsansipa}[1]{{\ipatextsans#1}}
diff --git a/macros/latex/contrib/fontsetup/fspebgaramondot.sty b/macros/latex/contrib/fontsetup/fspebgaramondot.sty
deleted file mode 100644
index a819513535..0000000000
--- a/macros/latex/contrib/fontsetup/fspebgaramondot.sty
+++ /dev/null
@@ -1,12 +0,0 @@
-\RequirePackage{fontspec}
-\defaultfontfeatures{Ligatures=TeX}
-
-\setmainfont[ItalicFont=EBGaramond-Italic.otf,
-BoldFont=EBGaramond-Bold.otf,
-BoldItalicFont=EBGaramond-BoldItalic.otf,SmallCapsFeatures={Numbers=OldStyle}]{EBGaramond-Regular.otf}
-
-\RequirePackage{unicode-math}
-\setmathfont{Garamond-Math.otf}
-
-
-\endinput
diff --git a/macros/latex/contrib/fontsetup/fspfiraot.sty b/macros/latex/contrib/fontsetup/fspfiraot.sty
deleted file mode 100644
index 172bf45dab..0000000000
--- a/macros/latex/contrib/fontsetup/fspfiraot.sty
+++ /dev/null
@@ -1,26 +0,0 @@
-\RequirePackage{fontspec}
-\defaultfontfeatures{Ligatures=TeX}
-
-\setmainfont[%
-ItalicFont=FiraSans-Italic.otf,%
-BoldFont=FiraSans-Bold.otf,
-BoldItalicFont=FiraSans-BookItalic.otf,%
-SmallCapsFeatures={Numbers=OldStyle}%
-]{FiraSans-Regular.otf}
-
-\setsansfont[%
-ItalicFont=FiraSans-Italic.otf,%
-BoldFont=FiraSans-Bold.otf,%
-BoldItalicFont=FiraSans-BookItalic.otf,%
-SmallCapsFeatures={Numbers=OldStyle}%
-]{FiraSans-Regular.otf}
-
-\setmonofont[ItalicFont=FiraMono-Regular.otf,ItalicFeatures={FakeSlant=0.2},%
-BoldFont=FiraMono-Bold.otf,%
-BoldItalicFont=FiraMono-Bold.otf,BoldItalicFeatures={FakeSlant=0.2}%
-]{FiraMono-Regular.otf}
-
-\RequirePackage{unicode-math}
-\setmathfont{FiraMath-Regular.otf}
-
-\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/fontsetup/fspgfsartemisiaot.sty b/macros/latex/contrib/fontsetup/fspgfsartemisiaot.sty
deleted file mode 100644
index c4dc761f87..0000000000
--- a/macros/latex/contrib/fontsetup/fspgfsartemisiaot.sty
+++ /dev/null
@@ -1,16 +0,0 @@
-\RequirePackage{fontspec}
-\defaultfontfeatures{Ligatures=TeX}
-
-\setmainfont[ItalicFont=GFSArtemisiaIt.otf,
-BoldFont=GFSArtemisiaBold.otf,
-BoldItalicFont=GFSArtemisiaBoldIt.otf,SmallCapsFeatures={Numbers=OldStyle}]{GFSArtemisia.otf}
-
-\RequirePackage{unicode-math}
-%\setmathfont{XITSMath-Regular.otf}
-\setmathfont{STIX2Math.otf}
-\setmathfont[range=\mathup/{num,latin,Latin,greek,Greek}]{GFSArtemisia.otf}
-\setmathfont[range=\mathbfup/{num,latin,Latin,greek,Greek}]{GFSArtemisiaBold.otf}
-\setmathfont[range=\mathit/{num,latin,Latin,greek,Greek}]{GFSArtemisiaIt.otf}
-\setmathfont[range=\mathbfit/{num,latin,Latin,greek,Greek}]{GFSArtemisiaBoldIt.otf}
-
-\endinput
diff --git a/macros/latex/contrib/fontsetup/fspgfsdidotclassicot.sty b/macros/latex/contrib/fontsetup/fspgfsdidotclassicot.sty
deleted file mode 100644
index d1f26d14c7..0000000000
--- a/macros/latex/contrib/fontsetup/fspgfsdidotclassicot.sty
+++ /dev/null
@@ -1,24 +0,0 @@
-%\RequirePackage[no-math]{fontspec}
-\RequirePackage{fontspec}
-\defaultfontfeatures{Ligatures=TeX}
-
-%\RequirePackage[garamond]{mathdesign}
-
-
-%\newfontfamily{\defaultfont}[Scale=1.087,ItalicFont=GFSDidot_Classic,ItalicFeatures={FakeSlant=0.2},BoldFont=GFSDidot_Classic,BoldFeatures={FakeBold=2},BoldItalicFont=GFSDidot_Classic,BoldItalicFeatures={FakeSlant=0.2,FakeBold=2}]{GFSDidot_Classic.otf}
-
-\newfontfamily{\defaultfont}[Scale=1.05,
- ItalicFont=GFSPorson,ItalicFeatures={FakeSlant=0.1,FakeStretch=.92},BoldFont=GFSDidot_Classic,BoldFeatures={FakeBold=1.4,LetterSpace=2},BoldItalicFont=GFSPorson,BoldItalicFeatures={FakeBold=1.4,FakeStretch=.92,FakeSlant=0.1,LetterSpace=2}]{GFSDidot_Classic.otf}
-
-\newfontfamily{\latinfont}[ItalicFont=ugmri8a,BoldFont=ugmm8a,BoldItalicFont=ugmmi8a]{ugmr8a.otf}
-\RequirePackage[Latin, Greek]{ucharclasses}
-\setDefaultTransitions{\defaultfont}{}
-
-\setTransitionsForLatin{\latinfont}{}
-\setTransitionsForGreek{\defaultfont}{}
-
-\RequirePackage{unicode-math}
-\setmathfont{Garamond-Math.otf}
-
-
-\endinput
diff --git a/macros/latex/contrib/fontsetup/fspgfsdidotot.sty b/macros/latex/contrib/fontsetup/fspgfsdidotot.sty
deleted file mode 100644
index f8c312c02c..0000000000
--- a/macros/latex/contrib/fontsetup/fspgfsdidotot.sty
+++ /dev/null
@@ -1,49 +0,0 @@
-
-\RequirePackage{fontspec}
-
-\setmainfont[ItalicFont=GFSOlga,
- BoldFont=GFSDidotBold,
- BoldItalicFont=GFSDidotBoldItalic,SlantedFont=GFSDidotItalic,
- SmallCapsFeatures={Numbers=OldStyle}]{GFSDidot.otf}
-\newfontfamily{\GFSDidotoSubstFont}[%
- ItalicFont=GFSDidotItalic,
- BoldFont=GFSDidotBold,
- BoldItalicFont=GFSDidotBoldItalic,
- SmallCapsFeatures={Numbers=OldStyle}]{GFSDidot.otf}
-
-
-\RequirePackage{unicode-math}
-%\setmathfont{XITSMath-Regular.otf}
-\setmathfont{NewCMMath-Book.otf}
-\setmathfont[range=\mathup/{num,latin,Latin,greek,Greek}]{GFSDidot.otf}
-\setmathfont[range=\mathbfup/{num,latin,Latin,greek,Greek}]{GFSDidotBold.otf}
-\setmathfont[range=\mathit/{greek,Greek}]{GFSOlga.otf}
-\setmathfont[range=\mathit/{num,latin,Latin}]{GFSDidotItalic.otf}
-\setmathfont[range=\mathbfit/{num,latin,Latin,greek,Greek}]{GFSDidotBoldItalic.otf}
-
-%% the next code replaces non-existent Olga Latin with GFSDidotItalic Latin
-\XeTeXinterchartokenstate=1%
-\newXeTeXintercharclass\GFSDidotoSubst%
-\count255="0021%
-\loop\ifnum\count255<"0341%
- \XeTeXcharclass\count255=\GFSDidotoSubst%
- \advance\count255 by 1%
-\repeat%
-\XeTeXinterchartoks 0 \GFSDidotoSubst = {\begingroup\GFSDidotoSubstFont}%
-\XeTeXinterchartoks 4095 \GFSDidotoSubst = {\begingroup\GFSDidotoSubstFont}%
-\XeTeXinterchartoks \GFSDidotoSubst 0 = {\endgroup}%
-\XeTeXinterchartoks \GFSDidotoSubst 4095 = {\endgroup}%
-%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%%%%%%%%%% Fix epsilons %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\AtBeginDocument{\renewcommand{\epsilon}{\textit{ε}}
-\renewcommand{\varepsilon}{\textsl{ε}}}
-%%%%%%%%% Fix phi %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\newfontfamily\phifix[Scale=1.2]{GFSDidotItalic.otf}
-\AtBeginDocument{\renewcommand{\phi}{\textrm{\phifix\char"03D5}}}
-%%%%%%%%% Fix theta %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\AtBeginDocument{\renewcommand{\theta}{\textsl{θ}}
-\renewcommand{\vartheta}{\textit{θ}}}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\endinput
diff --git a/macros/latex/contrib/fontsetup/fspgfsneohellenicot.sty b/macros/latex/contrib/fontsetup/fspgfsneohellenicot.sty
deleted file mode 100644
index 76e0d0a653..0000000000
--- a/macros/latex/contrib/fontsetup/fspgfsneohellenicot.sty
+++ /dev/null
@@ -1,53 +0,0 @@
-\RequirePackage{fontspec}
-\defaultfontfeatures{Ligatures=TeX}
-\RequirePackage{fontspec}
-
-\setmainfont[% main font
- UprightFont=GFSNeohellenic,
- ItalicFont=GFSNeohellenicIt,
- BoldFont=GFSNeohellenicBold,
- BoldItalicFont=GFSNeohellenicBoldIt,
- RawFeature=+pnum,% variable width numbers
- WordSpace={0.75,0.75,1},%
- Scale=1.2,%use instead of 12pt
-SmallCapsFeatures={Numbers=OldStyle,WordSpace={0.75,0.75,1},LetterSpace=0.06}]{GFSNeohellenic.otf}
-%\renewfontfamily\scshape[%
-% RawFeature=+smcp,RawFeature=+onum,WordSpace={0.75,0.75,1},LetterSpace=0.06,%
-% Scale=1.2%use instead of 12pt
-%]{GFSNeohellenic.otf}
-
-
-\RequirePackage{unicode-math}
-\setmathfont[%
- Scale=1.2%use instead of 12pt
-]{GFSNeohellenicMath.otf}
-
-\renewcommand{\baselinestretch}{1.086} %~1/0.92, use when at 10pt scaled by 1.2
-
-%%%%%%%%% special symbols %%%%%%%%%%%%%%%%%%%%%
-%fixes the delimiters so that all big sizes appear. TeX default is 5pt.
-% run texdoc mathmode and check the "problems with parentheses" section
-%\delimitershortfall=1pt
-%\newcommand{\myvarnothing}{\symbol{"E000}}
-\let\varnothing\undefined
-\let\emptyset\undefined
-\AtBeginDocument{
-\def\varnothing{\symbol{"E000}}%
-\def\emptyset{\symbol{"2205}}}
-\DeclareRobustCommand\nrightrightarrows{\mathrel{\char"2B5A}}
-\DeclareRobustCommand\nleftleftarrows{\mathrel{\char"2B5B}}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%\let\bigint\undefined
-\DeclareRobustCommand\smallprod{\mathop{\char"2B5E}\nolimits}
-\DeclareRobustCommand\smallcoprod{\mathop{\char"2B5F}\nolimits}
-\DeclareRobustCommand\smallsum{\mathop{\char"2B60}\nolimits}
-\DeclareRobustCommand\smallint{\mathop{\char"2B61}\nolimits}
-\DeclareRobustCommand\Bigint{\mathop{\char"2B62}\nolimits}
-\DeclareRobustCommand\biggint{\mathop{\char"2B63}\nolimits}
-\DeclareRobustCommand\Biggint{\mathop{\char"2B64}\nolimits}
-\DeclareRobustCommand\bigggint{\mathop{\char"2B65}\nolimits}
-
-
-\renewcommand{\LaTeX}{L\kern-.75ex\raisebox{.7ex}{\textsc{a}}\kern-.1ex\hbox{T}\kern-.4ex\raisebox{-.5ex}{E}\kern-.3exX}
-
-\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/fontsetup/fspkerkisot.sty b/macros/latex/contrib/fontsetup/fspkerkisot.sty
deleted file mode 100644
index 8315fa6f9e..0000000000
--- a/macros/latex/contrib/fontsetup/fspkerkisot.sty
+++ /dev/null
@@ -1,15 +0,0 @@
-\RequirePackage{fontspec}
-\defaultfontfeatures{Ligatures=TeX}
-
-\setmainfont[ItalicFont=Kerkis-Italic.otf,
-BoldFont=Kerkis-Bold.otf,
-BoldItalicFont=Kerkis-BoldItalic.otf,SmallCapsFont=Kerkis-SmallCaps.otf]{Kerkis.otf}
-
-\setsansfont[ItalicFont=KerkisSans-Italic.otf,
-BoldFont=KerkisSans-Bold.otf,
-BoldItalicFont=KerkisSans-BoldItalic.otf,SmallCapsFont=KerkisSans-SmallCaps.otf]{KerkisSans.otf}
-
-\RequirePackage{unicode-math}
-\setmathfont{texgyrebonum-math.otf}
-
-\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/fontsetup/fsplucidaot.sty b/macros/latex/contrib/fontsetup/fsplucidaot.sty
deleted file mode 100644
index 2287f48685..0000000000
--- a/macros/latex/contrib/fontsetup/fsplucidaot.sty
+++ /dev/null
@@ -1,28 +0,0 @@
-\RequirePackage{fontspec}
-\setmainfont[% main font
- UprightFont=LucidaBrightOT,
- ItalicFont=LucidaBrightOT-Italic,
- BoldFont=LucidaBrightOT-Demi,
- BoldItalicFont=LucidaBrightOT-DemiItalic,
- SmallCapsFeatures={Numbers=OldStyle},
- ]{LucidaBrightOT.otf}
-\setsansfont[%
- UprightFont=LucidaSansOT,
- ItalicFont=LucidaSansOT-Italic,
- BoldFont=LucidaSansOT-Demi,
- BoldItalicFont=LucidaSansOT-DemiItalic,
- SmallCapsFeatures={Numbers=OldStyle},
-]{LucidaSansOT.otf}
-%
-\setmonofont[%
- UprightFont=LucidaSansTypewriterOT,
- ItalicFont=LucidaSansTypewriterOT-Oblique,
- BoldFont=LucidaSansTypewriterOT-Bold,
- BoldItalicFont=LucidaSansTypewriterOT-BoldOblique,
- SmallCapsFeatures={Numbers=OldStyle},
- ]{LucidaSansTypewriterOT.otf}
-% support for OpenType math fonts:
-\RequirePackage{unicode-math}
-\setmathfont{LucidaBrightMathOT.otf}
-\setmathfont[version=bold]{LucidaBrightMathOT-Demi.otf}
-
diff --git a/macros/latex/contrib/fontsetup/fspminion.sty b/macros/latex/contrib/fontsetup/fspminion.sty
deleted file mode 100644
index f39448227f..0000000000
--- a/macros/latex/contrib/fontsetup/fspminion.sty
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-\RequirePackage{fontspec}
-\defaultfontfeatures{Ligatures=TeX}
-\setmainfont[SmallCapsFeatures={Numbers=OldStyle}]{Minion Pro}
-\setsansfont[SmallCapsFeatures={Numbers=OldStyle}]{Myriad Pro}
-\newfontfamily{\defaultfont}[SmallCapsFeatures={Numbers=OldStyle}]{Minion Pro}
-\newfontfamily{\greekfont}[SmallCapsFont=fspmnscel]{Minion Pro}
-\RequirePackage[Latin, Greek]{ucharclasses}
-\setDefaultTransitions{\defaultfont}{}
-\setTransitionsForLatin{\defaultfont}{}
-\setTransitionsForGreek{\greekfont}{}
-
-\RequirePackage{unicode-math}
-\setmathfont{STIX2Math.otf}
-\setmathfont[range=\mathup/{num,latin,Latin,greek,Greek}]{Minion Pro}
-\setmathfont[range=\mathbfup/{num,latin,Latin,greek,Greek}]{Minion Pro Bold}
-\setmathfont[range=\mathit/{num,latin,Latin,greek,Greek}]{Minion Pro Italic}
-\setmathfont[range=\mathbfit/{num,latin,Latin,greek,Greek}]{Minion Pro Bold Italic}
diff --git a/macros/latex/contrib/fontsetup/fspmsgaramondot.sty b/macros/latex/contrib/fontsetup/fspmsgaramondot.sty
deleted file mode 100644
index 3d3907cb8b..0000000000
--- a/macros/latex/contrib/fontsetup/fspmsgaramondot.sty
+++ /dev/null
@@ -1,23 +0,0 @@
-%\RequirePackage[no-math]{fontspec}
-\RequirePackage{fontspec}
-\defaultfontfeatures{Ligatures=TeX}
-%\RequirePackage[garamond]{mathdesign}
-
-
-\newfontfamily{\defaultfont}{Garamond}
-\newfontfamily{\greekfont}{Garamond}
-
-\RequirePackage[Latin, Greek]{ucharclasses}
-\setDefaultTransitions{\defaultfont}{}
-\setTransitionsForLatin{\defaultfont}{}
-\setTransitionsForGreek{\greekfont}{}
-
-\RequirePackage{unicode-math}
-\setmathfont{Garamond-Math.otf}
-\setmathfont[range=\mathup/{num,latin,Latin,greek,Greek}]{Garamond}
-\setmathfont[range=\mathbfup/{num,latin,Latin,greek,Greek}]{Garamond Bold}
-\setmathfont[range=\mathit/{num,latin,Latin,greek,Greek}]{Garamond Italic}
-\setmathfont[range=\mathbfit/{num,latin,Latin,greek,Greek}]{Garamond Bold}
-
-
-\endinput
diff --git a/macros/latex/contrib/fontsetup/fspneoeulerot.sty b/macros/latex/contrib/fontsetup/fspneoeulerot.sty
deleted file mode 100644
index 725686c3a8..0000000000
--- a/macros/latex/contrib/fontsetup/fspneoeulerot.sty
+++ /dev/null
@@ -1,41 +0,0 @@
-\RequirePackage{fontspec}
-\RequirePackage{unicode-math}
-%\unimathsetup{math-style=upright}
-\setmainfont[ItalicFont=cmunoti.otf,
- BoldFont=cmunobx.otf,
- BoldItalicFont=cmunobi.otf,
- % RawFeature=+pnum,% variable width numbers
-SmallCapsFeatures={Numbers=OldStyle}]{cmunorm.otf}
-\defaultfontfeatures{Scale=MatchLowercase}
-\setmathfont{LibertinusMath-Regular.otf}
-\setmathfont[range={"0000-"0001,"0020-"007E,
- "00A0,"00A7-"00A8,"00AC,"00AF,"00B1,"00B4-"00B5,"00B7,
- "00D7,"00F7,
- "0131,
- "0237,"02C6-"02C7,"02D8-"02DA,"02DC,
- "0300-"030C,"030F,"0311,"0323-"0325,"032E-"0332,"0338,
- "0391-"0393,"0395-"03A1,"03A3-"03A8,"03B1-"03BB,
- "03BD-"03C1,"03C3-"03C9,"03D1,"03D5-"03D6,"03F5,
- "2016,"2018-"2019,"2021,"2026-"202C,"2032-"2037,"2044,
- "2057,"20D6-"20D7,"20DB-"20DD,"20E1,"20EE-"20EF,
- "210B-"210C,"210E-"2113,"2118,"211B-"211C,"2126-"2128,
- "212C-"212D,"2130-"2131,"2133,"2135,"2190-"2199,
- "21A4,"21A6,"21A9-"21AA,"21BC-"21CC,"21D0-"21D5,
- "2200,"2202-"2209,"220B-"220C,"220F-"2213,"2215-"221E,
- "2223,"2225,"2227-"222E,"2234-"2235,"2237-"223D,
- "2240-"224C,"2260-"2269,"226E-"2279,"2282-"228B,"228E,
- "2291-"2292,"2295-"2299,"22A2-"22A5,"22C0-"22C5,
- "22DC-"22DD,"22EF,"22F0-"22F1,
- "2308-"230B,"2320-"2321,"2329-"232A,"239B-"23AE,
- "23DC-"23DF,
- "27E8-"27E9,"27F5-"27FE,"2A0C,"2B1A,
- "1D400-"1D433,"1D49C,"1D49E-"1D49F,"1D4A2,"1D4A5-"1D4A6,
- "1D4A9-"1D4AC,"1D4AE-"1D4B5,"1D4D0-"1D4E9,"1D504-"1D505,
- "1D507-"1D50A,"1D50D-"1D514,"1D516-"1D51C,"1D51E-"1D537,
- "1D56C-"1D59F,"1D6A8-"1D6B8,"1D6BA-"1D6D2,"1D6D4-"1D6DD,
- "1D6DF,"1D6E1,"1D7CE-"1D7D7
- }]{euler.otf}
-\setmathfont[range=up/{greek,Greek}, script-features={}, sscript-features={}
- ]{euler.otf}
-\setmathfont[range=up/{latin,Latin,num}, script-features={}, sscript-features={}
- ]{euler.otf}
diff --git a/macros/latex/contrib/fontsetup/fspolddefault.sty b/macros/latex/contrib/fontsetup/fspolddefault.sty
deleted file mode 100644
index 1c52a8ff0c..0000000000
--- a/macros/latex/contrib/fontsetup/fspolddefault.sty
+++ /dev/null
@@ -1,251 +0,0 @@
-%% (C) Antonis Tsolomitis, GPL3.
-\RequirePackage{fontspec}
-\RequirePackage{unicode-math}
-\setmainfont[%
-ItalicFont=NewCM10-Italic.otf,%
-BoldFont=NewCM10-Bold.otf,%
-BoldItalicFont=NewCM10-BoldItalic.otf,%
-SlantedFont=NewCM10-Regular.otf,%
-SlantedFeatures={FakeSlant=0.25},
-BoldSlantedFont=NewCM10-Bold.otf,%
-BoldSlantedFeatures={FakeSlant=0.25},
-SmallCapsFeatures={Numbers=OldStyle}]{NewCM10-Regular.otf}
-
-\setsansfont[%
-ItalicFont=NewCMSans10-Oblique.otf,%
-BoldFont=NewCMSans10-Bold.otf,%
-BoldItalicFont=NewCMSans10-BoldOblique.otf,%
-SlantedFont=NewCMSans10-Oblique.otf,%
-BoldSlantedFont=NewCMSans10-BoldOblique.otf,%
-SmallCapsFeatures={Numbers=OldStyle}]{NewCMSans10-Regular.otf}
-
-\setmonofont[%
-ItalicFont=NewCMMono10-Italic.otf,%
-BoldFont=NewCMMono10-Bold.otf,%
-BoldItalicFont=NewCMMono10-BoldOblique.otf,%
-SlantedFont=NewCMMono10-Regular.otf,%
-SlantedFeatures={FakeSlant=0.25},
-BoldSlantedFont=NewCMMono10-Bold.otf,%
-BoldSlantedFeatures={FakeSlant=0.25},
-SmallCapsFeatures={Numbers=OldStyle}]{NewCMMono10-Regular.otf}
-
-\setmathfont{NewCMMath-Regular.otf}
-
-\newcommand{\tttextsc}[1]{{\ttscshape#1}}
-%
-\newcommand{\prosgegrammeni}{\addfontfeature{StylisticSet=1}}
-\newcommand{\textprosgegrammeni}[1]{{\prosgegrammeni#1}}
-%
-\newfontfamily{\ivbce}[StylisticSet=2]{NewCMSans10-Regular.otf}
-\newcommand{\textivbce}[1]{{\ivbce#1}}
-%
-\newfontfamily{\ivbcealt}[StylisticSet=3]{NewCMSans10-Regular.otf}
-\newcommand{\textivbcealt}[1]{{\ivbcealt#1}}
-%
-\newfontfamily{\vibce}[StylisticSet=4]{NewCMSans10-Regular.otf}
-\newcommand{\textvibce}[1]{{\vibce#1}}
-%
-%% math (upright) sans Greek
-\newcommand{\msansAlpha}{\char"E000}
-\newcommand{\msansBeta}{\char"E001}
-\newcommand{\msansGamma}{\char"E002}
-\newcommand{\msansDelta}{\char"E003}
-\newcommand{\msansEpsilon}{\char"E004}
-\newcommand{\msansZeta}{\char"E005}
-\newcommand{\msansEta}{\char"E006}
-\newcommand{\msansTheta}{\char"E007}
-\newcommand{\msansIota}{\char"E008}
-\newcommand{\msansKappa}{\char"E009}
-\newcommand{\msansLambda}{\char"E00A}
-\newcommand{\msansMu}{\char"E00B}
-\newcommand{\msansNu}{\char"E00C}
-\newcommand{\msansXi}{\char"E00D}
-\newcommand{\msansOmicron}{\char"E00E}
-\newcommand{\msansPi}{\char"E00F}
-\newcommand{\msansRho}{\char"E010}
-\newcommand{\msansSigma}{\char"E011}
-\newcommand{\msansTau}{\char"E012}
-\newcommand{\msansUpsilon}{\char"E013}
-\newcommand{\msansPhi}{\char"E014}
-\newcommand{\msansChi}{\char"E015}
-\newcommand{\msansPsi}{\char"E016}
-\newcommand{\msansOmega}{\char"E017}
-\newcommand{\msansalpha}{\char"E018}
-\newcommand{\msansbeta}{\char"E019}
-\newcommand{\msansgamma}{\char"E01A}
-\newcommand{\msansdelta}{\char"E01B}
-\newcommand{\msansepsilon}{\char"E01C}
-\newcommand{\msanszeta}{\char"E01D}
-\newcommand{\msanseta}{\char"E01E}
-\newcommand{\msanstheta}{\char"E01F}
-\newcommand{\msansiota}{\char"E020}
-\newcommand{\msanskappa}{\char"E021}
-\newcommand{\msanslambda}{\char"E022}
-\newcommand{\msansmu}{\char"E023}
-\newcommand{\msansnu}{\char"E024}
-\newcommand{\msansxi}{\char"E025}
-\newcommand{\msansomicron}{\char"E026}
-\newcommand{\msanspi}{\char"E027}
-\newcommand{\msansrho}{\char"E028}
-\newcommand{\msansvarsigma}{\char"E029}
-\newcommand{\msanssigma}{\char"E02A}
-\newcommand{\msanstau}{\char"E02B}
-\newcommand{\msansupsilon}{\char"E02C}
-\newcommand{\msansphi}{\char"E02D}
-\newcommand{\msanschi}{\char"E02E}
-\newcommand{\msanspsi}{\char"E02F}
-\newcommand{\msansomega}{\char"E030}
-\newcommand{\msansvarepsilon}{\char"E031}
-% math italic sans Greek
-\newcommand{\mitsansAlpha}{\char"E041}
-\newcommand{\mitsansBeta}{\char"E042}
-\newcommand{\mitsansGamma}{\char"E043}
-\newcommand{\mitsansDelta}{\char"E044}
-\newcommand{\mitsansEpsilon}{\char"E045}
-\newcommand{\mitsansZeta}{\char"E046}
-\newcommand{\mitsansEta}{\char"E047}
-\newcommand{\mitsansTheta}{\char"E048}
-\newcommand{\mitsansIota}{\char"E049}
-\newcommand{\mitsansKappa}{\char"E04A}
-\newcommand{\mitsansLambda}{\char"E04B}
-\newcommand{\mitsansMu}{\char"E04C}
-\newcommand{\mitsansNu}{\char"E04D}
-\newcommand{\mitsansXi}{\char"E04E}
-\newcommand{\mitsansOmicron}{\char"E04F}
-\newcommand{\mitsansPi}{\char"E050}
-\newcommand{\mitsansRho}{\char"E051}
-\newcommand{\mitsansSigma}{\char"E052}
-\newcommand{\mitsansTau}{\char"E053}
-\newcommand{\mitsansUpsilon}{\char"E054}
-\newcommand{\mitsansPhi}{\char"E055}
-\newcommand{\mitsansChi}{\char"E056}
-\newcommand{\mitsansPsi}{\char"E057}
-\newcommand{\mitsansOmega}{\char"E058}
-\newcommand{\mitsansalpha}{\char"E059}
-\newcommand{\mitsansbeta}{\char"E05A}
-\newcommand{\mitsansgamma}{\char"E05B}
-\newcommand{\mitsansdelta}{\char"E05C}
-\newcommand{\mitsansepsilon}{\char"E05D}
-\newcommand{\mitsanszeta}{\char"E05E}
-\newcommand{\mitsanseta}{\char"E05F}
-\newcommand{\mitsanstheta}{\char"E060}
-\newcommand{\mitsansiota}{\char"E061}
-\newcommand{\mitsanskappa}{\char"E062}
-\newcommand{\mitsanslambda}{\char"E063}
-\newcommand{\mitsansmu}{\char"E064}
-\newcommand{\mitsansnu}{\char"E065}
-\newcommand{\mitsansxi}{\char"E066}
-\newcommand{\mitsansomicron}{\char"E067}
-\newcommand{\mitsanspi}{\char"E068}
-\newcommand{\mitsansrho}{\char"E069}
-\newcommand{\mitsansvarsigma}{\char"E06A}
-\newcommand{\mitsanssigma}{\char"E06B}
-\newcommand{\mitsanstau}{\char"E06C}
-\newcommand{\mitsansupsilon}{\char"E06D}
-\newcommand{\mitsansphi}{\char"E06E}
-\newcommand{\mitsanschi}{\char"E06F}
-\newcommand{\mitsanspsi}{\char"E070}
-\newcommand{\mitsansomega}{\char"E071}
-\newcommand{\mitsansvarepsilon}{\char"E072}
-% Ancient Greek Numerals u10140-u1018E
-\newcommand{\atticonequarter}{\char"10140}
-\newcommand{\atticonehalf}{\char"10141}
-\newcommand{\atticonedrachma}{\char"10142}
-\newcommand{\atticfive}{\char"10143}
-\newcommand{\atticfifty}{\char"10144}
-\newcommand{\atticfivehundred}{\char"10145}
-\newcommand{\atticfivethousand}{\char"10146}
-\newcommand{\atticfiftythousand}{\char"10147}
-\newcommand{\atticfivetalents}{\char"10148}
-\newcommand{\attictentalents}{\char"10149}
-\newcommand{\atticfiftytalents}{\char"1014A}
-\newcommand{\atticonehundredtalents}{\char"1014B}
-\newcommand{\atticfivehundredtalents}{\char"1014C}
-\newcommand{\atticonethousandtalents}{\char"1014D}
-\newcommand{\atticfivethousandtalents}{\char"1014E}
-\newcommand{\atticfivestaters}{\char"1014F}
-\newcommand{\attictenstaters}{\char"10150}
-\newcommand{\atticfiftystaters}{\char"10151}
-\newcommand{\atticonehundredstaters}{\char"10152}
-\newcommand{\atticfivehundredstaters}{\char"10153}
-\newcommand{\atticonethousandstaters}{\char"10154}
-\newcommand{\attictenthousandstaters}{\char"10155}
-\newcommand{\atticfiftythousandstaters}{\char"10156}
-\newcommand{\attictenmnas}{\char"10157}
-\newcommand{\heraleumoneplethron}{\char"10158}
-\newcommand{\thespianone}{\char"10159}
-\newcommand{\ermionianone}{\char"1015A}
-\newcommand{\epidauriantwo}{\char"1015B}
-\newcommand{\thespiantwo}{\char"1015C}
-\newcommand{\cyrenaictwodrachmas}{\char"1015D}
-\newcommand{\epidauriantwodrachmas}{\char"1015E}
-\newcommand{\troezenianfive}{\char"1015F}
-\newcommand{\troezenianten}{\char"10160}
-\newcommand{\troezeniantenalt}{\char"10161}
-\newcommand{\hermionianten}{\char"10162}
-\newcommand{\messenianten}{\char"10163}
-\newcommand{\thespianten}{\char"10164}
-\newcommand{\thespianthirty}{\char"10165}
-\newcommand{\troezenianfifty}{\char"10166}
-\newcommand{\troezenianfiftyalt}{\char"10167}
-\newcommand{\hermionianfifty}{\char"10168}
-\newcommand{\thespianfifty}{\char"10169}
-\newcommand{\thespianonehundred}{\char"1016A}
-\newcommand{\thespianthreehundred}{\char"1016B}
-\newcommand{\epidaurianfivehundred}{\char"1016C}
-\newcommand{\troezenianfivehundred}{\char"1016D}
-\newcommand{\thespianfivehundred}{\char"1016E}
-\newcommand{\carystianfivehundred}{\char"1016F}
-\newcommand{\naxianfivehundred}{\char"10170}
-\newcommand{\thespianonethousand}{\char"10171}
-\newcommand{\thespianfivethousand}{\char"10172}
-\newcommand{\delphicfivemnas}{\char"10173}
-\newcommand{\stratianfiftymnas}{\char"10174}
-\newcommand{\greekonehalfsign}{\char"10175}
-\newcommand{\greekonehalfsignalt}{\char"10176}
-\newcommand{\greektwothirdssign}{\char"10177}
-\newcommand{\greekthreequarterssign}{\char"10178}
-\newcommand{\greekyearsign}{\char"10179}
-\newcommand{\greektalentsign}{\char"1017A}
-\newcommand{\greekdrachmasign}{\char"1017B}
-\newcommand{\greekobolsign}{\char"1017C}
-\newcommand{\greektwoobolssign}{\char"1017D}
-\newcommand{\greekthreeobolssign}{\char"1017E}
-\newcommand{\greekfourobolssign}{\char"1017F}
-\newcommand{\greekfiveobolssign}{\char"10180}
-\newcommand{\greekmetretessign}{\char"10181}
-\newcommand{\greekkyathosbasesign}{\char"10182}
-\newcommand{\greeklytrasign}{\char"10183}
-\newcommand{\greekounkiasign}{\char"10184}
-\newcommand{\greekxestessign}{\char"10185}
-\newcommand{\greekartabesign}{\char"10186}
-\newcommand{\greekarourasign}{\char"10187}
-\newcommand{\greekgrammasign}{\char"10188}
-\newcommand{\greektryblionbasesign}{\char"10189}
-\newcommand{\greekzerosign}{\char"1018A}
-\newcommand{\greekonequartersign}{\char"1018B}
-\newcommand{\greeksinusoidsign}{\char"1018C}
-\newcommand{\greekindictionsign}{\char"1018D}
-\newcommand{\nomismasign}{\char"1018E}
-%
-% some math symbols
-\DeclareRobustCommand\nrightrightarrows{\mathrel{\char"E033}}
-\DeclareRobustCommand\nleftleftarrows{\mathrel{\char"E032}}
-%
-% select ss02 lookup table for IPA symbols
-\newfontfamily{\ipatext}[StylisticSet=5,%
-BoldFont=NewCM10-Bold.otf,%
-SlantedFont=NewCM10-Regular.otf,%
-SlantedFeatures={FakeSlant=0.25},
-BoldSlantedFont=NewCM10-Bold.otf,%
-BoldSlantedFeatures={FakeSlant=0.25},
-SmallCapsFeatures={Numbers=OldStyle}]{NewCM10-Regular.otf}
-\newcommand{\textipa}[1]{{\ipatext#1}}
-\newfontfamily{\ipatextsans}[StylisticSet=5,%
-ItalicFont=NewCMSans10-Oblique.otf,%
-BoldFont=NewCMSans10-Bold.otf,%
-BoldItalicFont=NewCMSans10-BoldOblique.otf,%
-SlantedFont=NewCMSans10-Oblique.otf,%
-BoldSlantedFont=NewCMSans10-BoldOblique.otf,%
-SmallCapsFeatures={Numbers=OldStyle}]{NewCMSans10-Regular.otf}
-\newcommand{\textsansipa}[1]{{\ipatextsans#1}}
diff --git a/macros/latex/contrib/fontsetup/fsppalatinoot.sty b/macros/latex/contrib/fontsetup/fsppalatinoot.sty
deleted file mode 100644
index 3487754dde..0000000000
--- a/macros/latex/contrib/fontsetup/fsppalatinoot.sty
+++ /dev/null
@@ -1,17 +0,0 @@
-\RequirePackage{fontspec}
-\defaultfontfeatures{Ligatures=TeX}
-
-\newfontfamily{\defaultfont}[SmallCapsFeatures={Numbers=OldStyle}]{Palatino Linotype}
-
-\newfontfamily{\greekfont}[SmallCapsFont=fsplpscel]{Palatino Linotype}
-
-\RequirePackage[Latin, Greek]{ucharclasses}
-\setDefaultTransitions{\defaultfont}{}
-\setTransitionsForLatin{\defaultfont}{}
-\setTransitionsForGreek{\greekfont}{}
-
-\RequirePackage{unicode-math}
-\setmathfont{texgyrepagella-math.otf}
-
-
-\endinput
diff --git a/macros/latex/contrib/fontsetup/fspstixtwoot.sty b/macros/latex/contrib/fontsetup/fspstixtwoot.sty
deleted file mode 100644
index f38c44654d..0000000000
--- a/macros/latex/contrib/fontsetup/fspstixtwoot.sty
+++ /dev/null
@@ -1,17 +0,0 @@
-\RequirePackage{fontspec}
-\defaultfontfeatures{Ligatures=TeX}
-
-
-\setmainfont[%
- Script=Default,% make small caps work for both latn and grek
- ItalicFont=STIX2Text-Italic.otf,
- BoldFont=STIX2Text-Bold.otf,
- BoldItalicFont=STIX2Text-BoldItalic.otf,
- % RawFeature=+pnum,% variable width numbers
-SmallCapsFeatures={Numbers=OldStyle}]{STIX2Text-Regular.otf}
-
-\RequirePackage{unicode-math}
-\setmathfont{STIX2Math.otf}
-
-
-\endinput
diff --git a/macros/latex/contrib/fontsetup/fsptimesot.sty b/macros/latex/contrib/fontsetup/fsptimesot.sty
deleted file mode 100644
index 772be2b633..0000000000
--- a/macros/latex/contrib/fontsetup/fsptimesot.sty
+++ /dev/null
@@ -1,16 +0,0 @@
-\RequirePackage{fontspec}
-\defaultfontfeatures{Ligatures=TeX}
-
-\setmainfont[ItalicFont=FreeSerifbItalic.otf,
-BoldFont=FreeSerifbBold.otf,
-BoldItalicFont=FreeSerifbBoldItalic.otf,SmallCapsFont=FreeSerifb-SmallCapsAlt.otf]{FreeSerifb.otf}
-
-\RequirePackage{unicode-math}
-%\setmathfont{XITSMath-Regular.otf}
-\setmathfont{STIX2Math.otf}
-\setmathfont[range=\mathup/{num,latin,Latin,greek,Greek}]{FreeSerifb.otf}
-\setmathfont[range=\mathbfup/{num,latin,Latin,greek,Greek}]{FreeSerifbBold.otf}
-\setmathfont[range=\mathit/{num,latin,Latin,greek,Greek}]{FreeSerifbItalic.otf}
-\setmathfont[range=\mathbfit/{num,latin,Latin,greek,Greek}]{FreeSerifbBoldItalic.otf}
-
-\endinput
diff --git a/macros/latex/contrib/fontsetup/system-install-fonts/fsplpscel.otf b/macros/latex/contrib/fontsetup/system-install-fonts/fsplpscel.otf
deleted file mode 100644
index b505b6b96f..0000000000
--- a/macros/latex/contrib/fontsetup/system-install-fonts/fsplpscel.otf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/fontsetup/system-install-fonts/fspmnscel.otf b/macros/latex/contrib/fontsetup/system-install-fonts/fspmnscel.otf
deleted file mode 100644
index c0e233f43c..0000000000
--- a/macros/latex/contrib/fontsetup/system-install-fonts/fspmnscel.otf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/fontspec/CHANGES.md b/macros/latex/contrib/fontspec/CHANGES.md
deleted file mode 100644
index 63ae8620b4..0000000000
--- a/macros/latex/contrib/fontspec/CHANGES.md
+++ /dev/null
@@ -1,492 +0,0 @@
-Change history
-==============
-
-## v2.7i (2020/02/21)
-
- * Define both `b` and `bx` font series by default to avoid spurious warnings in some
- cases, and broken behaviour in pathological cases.
-
-
-## v2.7h (2020/02/03)
-
- * Eroneous uses of `language=DFLT` changed to `language=dflt`.
- * Fix spurious error in some cases of `SlantedFont` and `BoldSlantedFont`
- being specified in a `.fontspec` file.
- * Fix regression with `unicode-math` related log files showing the wrong
- NFSS-based font ‘identifier’.
-
-## v2.7g (2020/01/26)
-
- * Fix regression that broke changing the default encoding after `fontspec` was loaded
- (e.g., to use legacy fonts by default but use a `fontspec` font occassionally).
- * Fix bug exhibited in `polyglossia` and perhaps elsewhere when `Script` is set without
- a corresponding `Language`.
- * Use `\familydefault` instead of `\rmdefault` when calculating scaling parameters in
- `Scale=MatchLowercase` and `Scale=MatchUppercase`.
-
-## v2.7f (2020/01/24)
-
- * Rename font feature `Letters=Uppercase` to `Style=Uppercase`, as this feature does
- not generally affect the letters themselves, only symbols and accents.
- The old name will be retained for the time being.
- * Rename `Style=TitlingCaps` to `Style=Titling`.
- * Track changes in both LaTeX2e and `expl3`.
- * Fix long-standing (but never noticed?) bug that successive `\addfontfeatures`
- would overwrite previous ones when using `UprightFeatures={...}` or similar.
- Now the ‘`UprightFeatures`’ are accumulated.
- * Remove AAT font examples from the documentation — support for many AAT fonts now
- appears broken with latest versions of macOS.
-
-
-## v2.7e (2020/01/09)
-
- * Rename for `Renderer=HarfBuzz` (the old `Harfbuzz` name is kept for compatibility)
- * Track upcoming changes in LaTeX2e release for 2020.
- * Remove/reword some out-of-date documentation.
- * Remove entirely the patches for 3rd party verbatim packages as `\verbvisiblespace`
- has now been offered by the kernel for a year.
-
-
-## v2.7d (2019/10/19)
-
- * Allow the user to manually change `\rmdefault`, `\sfdefault`, `\ttdefault`
- if desired. Note this could cause problems if the `fontspec` encoding does not
- match the encoding of the specified families.
- * Additional optional argument for `\EncodingCommand`.
- * Suppress spurious warnings for `HyphenChar` feature in XeLaTeX.
- * Add `Ligatures=TeXOff` even though it's not a real OpenType feature.
- (Functionally equivalent to `Ligatures=TeXReset`.)
- * New scripts definitions to match OpenType 1.8.3 (thanks Werner!).
- * Documentation changes for `Numbers=Arabic`, `HypenChar=None` for `\ttfamily`.
- * Documentation fixes (thanks `muzimuzhi`!).
- * Prepare for `FakeBold` being available in `luaotfload` (thanks Khaled!).
- * Bug fix for doubled + symbol when setting `tlig` feature in LuaTeX.
- * Bug fix for Harfbuzz use. (Support still very minimal I'm afraid.)
-
-
-## v2.7c (2019/03/15)
-
- * Two optimisations reduce time for font definitions with a large number of
- `FontFace` options. Thanks to Bob Tennent for the test file and bringing
- the problem to my attention.
-
-
-## v2.7b (2019/02/12)
-
- * Fix regression in loading `Language=Turkish`. This now allows users to define more
- than one OpenType tag when defining a language name, where the first tag found is
- the one selected for the font. E.g.,
-
- \newfontlanguage{Turkish}{TRK,TUR}
-
- when selected, this first checks for the existance of the TRK language tag, and if
- not found then checks for the TUR language tag to use if available.
-
- * Add new `Renderer` options for LuaTeX that enable the HarfBuzz engine. These only
- work running under `luahbtex` and are currently experimental. The new options are
- `Harfbuzz`, `OpenType`, `AAT`, and `Graphite`.
-
- * Always try to remove ‘clashing’ font features inside `\addfontfeatures` even in
- cases when the requested font feature doesn't exist. E.g., now if a font is loaded
- with `Numbers=OldStyle` and *doesn't have* `Numbers=Lining`, requesting the latter
- will still reset the former.
-
- * Add `pxfonts`, `txfonts`, `newpxmath`, `newtxmath`, `mtpro2` to the list
- of packages that automatically invoke `no-math`.
-
- * Add `\providefontfamily`, `\setfontface`, `\renewfontface`, and `\providefontface`.
-
- * Add local/global distinction with `\fontspec_(g)set_family:Nnn` and `\fontspec_(g)set_fontface:NNnn`.
-
-
-## v2.7a (2019/01/25)
-
- * One last (?!) fix for recent regression (!!). I am not getting enough sleep at the moment and it is too hot.
- * Add `LocalForms=On/Off/Reset` to control the `locl` OpenType tag.
- * Reorganise some documentation.
- * Remove redundant redefinition of `\-` which is nowadays defined correctly by the LaTeX2e kernel.
- * Add code to remove the patching of verbatim commands and environments when the new
- `\verbvisiblespace` command is defined in a future version of LaTeX2e.
-
-
-## v2.7 (2019/01/24)
-
- * Add new `ScaleAgain` feature for compounding scale factors.
- (This is largely to support `unicode-math` but may be useful by others.)
- * `\oldstylenums` no longer overwritten if `textcomp` loaded after `fontspec`.
- * More fixes for recent regressions (sorry!).
-
-
-## v2.6l (2019/01/18)
-
- * REALLY fix crash when loading fonts that are missing a requested script.
- * Lots of internal logic changes for what should have been an easy fix :(
-
-
-## v2.6k (2019/01/16)
-
- * Fix crash when loading fonts that are missing a requested script.
-
-
-## v2.6j (2019/01/10)
-
- * Re-sync with `expl3` for deprecated commands.
- * Added support for `\hbar` if anyone is relying on `fontspec` to emulate legacy maths.
-
-
-## v2.6i (2018/08/02)
-
- * Emergency bug-fix -- a one-char typo broke loading of bold fonts!
- * Some minor updates to the docs regarding “family names” of fonts.
- * Using `\defaultfontfeatures` to specify a font face by a custom name can now use
- `Font=` to specify the filename.
-
-
-## v2.6h (2018/07/30)
-
- * `expl3` internals updated so loading `expl3` with the `check-declarations` option will run without error.
- * Fix bug with `FontFace` in which spaces weren't being ignored.
-
-
-## v2.6g (2017-11-09)
-
- * Bugfix for clash introduced with last version. When loading `babel`
- before `fontspec` the following error arose:
-
- ! Control sequence \latinencoding already defined.
-
-
-## v2.6f (2017-11-05)
-
- * Fix loading of Graphite fonts and add a little documentation (a better interface is needed, though)
- * Correct and simplify some internal code that fixes a bug in the way some fonts are displayed in `\tracingoutput` mode.
- * This also fixes an obscure bug using the API in which a query for a selected font feature
- would test against the upright font in the current family regardless of the face/shape actually in use.
- * This package now complies with the `expl3` option `check-declarations`.
-
-
-## v2.6e (2017/09/22)
-
- * Re-enable use of `HyphenChar=None` in LuaLaTeX. (Hyphenation and font choice are
- decoupled in LuaTeX, except for this one setting.)
- * Some internal changes needed by `unicode-math` to fix some cross-over code.
-
-
-## v2.6d (2017/08/14)
-
- * Update Scripts to Unicode 1.8.2 (thanks Werner)
- * Remove `HyphenChar` feature when running LuaTeX — use `\prehyphenchar` LuaTeX primitive instead.
- * Rewrite test suite so that automated testing actually functions correctly and automatically. Thanks to Joseph for introducing me to Travis CI.
-
-
-## v2.6c (2017/07/23)
-
- * Emergency bug-fix.
-
-
-## v2.6b (2017/07/16)
-
- * Fix conflict with Polyglossia and `Scale=MatchLowercase`.
- * New feature `IgnoreFontspecFile` to avoid loading the `.fontspec` file for a font.
- * Fix regression with `\fontspec_if_feature:nTF`
- (which broke `realscripts`, oops — must improve my test suite)
-
-
-## v2.6a (2017/03/31)
-
- * Fix crashing bug with `..Reset` and `ResetAll` keys.
- * Fix crashing bug with `\newfontface`.
-
-## v2.6 (2017/02/12)
-
- * Change the new behaviour of `\emph` (and `\emfontdeclare`) to act only on the NFSS font shape; using the series as well was too fragile.
- * Add `\strong` as the "weight" analogy to `\emph`. This will need some extra syntactic sugar from `fontspec` before it becomes truly useful.
- * Add `Numbers=Tabular` alias for `Numbers=Monospaced`.
- * Fix occasional bug with "chained" keyval choices such as `Numbers={Lining,Proportional}` in which only the first choice would be recognised.
- * Fix interaction with `RawFeature` and "proper" `fontspec` features.
- * Fix regression in which `C:\...` file paths in Windows couldn't be used.
- * Fix regression in XeTeX in which `Ligatures=TeX` overrode `Mapping=..` regardless of where the former was declared in the feature list.
- * Fix bug (sorry!) in `\newopentypefeature`.
- * Improve monospace font in documentation.
-
- * N.B. There is currently a known issue with TTC fonts and LuaTeX; currently they cannot be loaded through the `fontspec` interface, but this issue should soon be addressed by the `luaotfload` package.
-
-## v2.5d (2017/01/24) "oops"
-
- * Add `\fontspec_if_small_caps:TF`
- * Fix bug in `\emph` (!!)
-
-## v2.5c (2017/01/20) "Christmas 2016 release"
-
- * `TU` font encoding now default, with encoding files provided by the kernel.
- * Experimental interface added for customising encodings.
- * Add feature `Ornament=`*n* corresponding to OpenType feature `+ornm=`*n*.
- * Add feature `FontIndex=`*n* to support TrueType Collection (TTC) files.
- * Nested `\emph` is now much smarter and will cleverly nest even if manual font changes are made.
- * Tries to resolve situations when font features clash.
- E.g., `Numbers={Uppercase,Lowercase}` will define only `+onum` rather than the previous behaviour of `+lnum;+onum` to let the engine sort things out. Coverage may still be preliminary.
- * Add API function `\fontspec_if_current_feature:nTF` for querying selected features based on their OpenType tag.
- * Add user function `\IfFontFeatureActiveTF` for querying selected features based on their `fontspec` specification.
- * All "tag-based" OpenType features are now provided in `Feat`/`FeatOff`/`FeatReset` forms to disable and reset them.
- * `ResetAll` provided for all "tag-based" OpenType feature keys. (E.g., `Ligatures=ResetAll`.)
- * Big table of OpenType feature tags to help cross-reference which fontspec feature (if any) corresponds to which OpenType feature.
- * Bug fixed for `Script` selection.
-
-## v2.5b (2016/05/14) "More bugs" (somehow never released)
-
- * Fixed bug with garbage text printed in certain "verbatim" situations under LuaTeX.
- * Improve interaction between optical sizes and small caps.
- * Remove documentation for `FeatureFile`, since this is no longer supported under LuaLaTeX
- (there are other methods to perform the same thing, but no "easy" user interface that `fontspec` can provide at this stage).
- * Fix regression causing an error message if `fontspec` loaded before `\documentclass'.
-
-## v2.5a (2016/02/01) "Bugs fixed"
-
- * Rather embarrassing bug fix! (`unicode-math` was broken.)
- * Remember to add the `fontspec.cfg` file to the distribution.
- * Remove `+trep` from `Ligatures=TeX` (no longer necessary).
- * Add some basic tests using `l3build`; more to come.
- * Simplify some internal Lua code and package loading code.
-
-## v2.5 (2016/01/30) "TL2016 release"
-
- * Provide a new Unicode font encoding ("TU") to replace EU1/EU2 and xunicode.
- * Activate with package option `[tuenc]'; once it becomes the default (later this year), `[euenc]` option will revert to the old behaviour.
- * New command `\emfontdeclare` for defining font shapes when arbitrarily nesting the `\emph` command.
- * Allow slanted small caps and better internal methods for "combining" font shapes; this fixes a few bugs.
- * Incorporate "new" font script tags for Indic fonts. E.g., when selecting `Script=Bengali`, fontspec will first query the font for the `bng2` OpenType script, and if not found select `beng`.
- * Restrict some font features from being able to be used within `\addfontfeatures` that were causing some font-loading confusion.
- * Fixed behaviour in which `\baselineskip` and `\f@size` would (possibly) change values after loading the packge.
- * Remove copy of `fixltx2e`'s code for footnote symbols; handled by LaTeX2e now.
- * Deprecate `ExternalLocation` for the simpler (and identical) `Path` option.
- * Improvement to some warnings/info messages.
- * Improve structure of code.
-
-## v2.4e (2015/09/24)
-
- * Allow `[Path=...]` to be specified for individual font faces.
- * Continue to normalise naming with expl3. (Ongoing.)
-
-## v2.4d (2015/07/22)
-
- * Rename an internal expl3 function or two.
-
-## v2.4c (2015/03/14)
-
- * v2.4b was never released, sorry!
- * This time *really* fix `\@fnsymbol` and avoid overwriting it if already fixed.
- * Fix "`Renderer=Graphite`" (off-by-one error).
- * Fix some edge cases for `\aliasfontfeature`.
-
-## v2.4b (2014/08/23)
-
- * Improve backwards compatibility w.r.t. recent argument order change;
- specifically, if an optional argument is presented before the font name
- then avoid looking for one afterwards.
- * Fix \@fnsymbol; it was defined as a \protected macro, where in fact its internal text-or-math switch needed to be instead.
- * No longer lowercase fontnames internally; this fixes a bug with loading
- mixed-case ".fontspec" files.
- * Fixed some documentation typos/inconsistencies related to recent changes.
-
-## v2.4a (2014/06/21)
-
- * No longer load fixltx2e.sty -- this package should really be loaded before \documentclass.
- * Avoid deprecated l3fp code.
- * A couple of bugs introduced with v2.4 fixed.
-
-## v2.4 (2014/06/01)
-
- * Significant change to the user interface: instead of `\setmainfont[features]{font}`, you now write `\setmainfont{font}[features]`.
- Backwards compatibility is of course preserved.
-
- The reason for this change is to improve the visual comprehension of the font loading syntax with large numbers of font features.
-
- * Defaults for symbolic font families like this can now be specified with
-
- \defaultfontfeatures[\rmfamily]{...}
-
- or
-
- \defaultfontfeatures[\headingsfont]{...}
- \newfontfamily\headingsfont{...}
-
- * New `PunctuationSpace=WordSpace` and `PunctuationSpace=TwiceWordSpace` settings, intended for monospaced fonts; these force the space after a period to be exactly one or two spaces wide, respectively, which preserves character alignment across lines.
-
- * The features above now allow changes to the default settings:
-
- * `Ligatures=TeX` is enabled by default with `\setmainfont` and `\setsansfont`.
- * `WordSpace={1,0,0}` and `PunctuationSpace=WordSpace` are now enabled by default for `\setmonofont` to produce better monospaced results.
- * (These can be adjusted by created your own `fontspec.cfg` file.)
-
- * `SizeFeatures` can now be nested inside `ItalicFeatures` (etc.) and behaves correctly. This has been a very long overdue bug!
-
- * New feature `NFSSFamily=ABC` to set the NFSS family of a font to “`ABC`”. Useful
- when other packages use the `\fontfamily{ABC}\selectfont` interface.
-
- * New feature `FontFace = {series}{shape}{font}` allows a font face to be loaded with a specific NFSS font series and font shape.
- A more verbose syntax allows arbitrary font features as well (and this also plays nicely with `SizeFeatures`):
-
- \fontspec{myfont.otf}[
- FontFace = {b}{ui}{Font = myfont-bui.otf, <features>} ,
- ]
-
- The code above, for example, will allow a bold upright italic font to be selected using the standard NFSS interface: `\fontseries{b}\fontshape{ui}\selectfont`.
-
- * `\defaultfontfeatures+` (note the `+`) can now be used to append to the default font feature set.
-
- * Setting the `SmallCapsFont` using the `*`-replacement notation has been improved/fixed.
-
-## v2.3c (2013/05/20)
-
- * Compatbility with luaotfload 2013/05/20 2.2c, support for older version
- removed.
-
-## v2.3b (2013/05/12)
-
- * Compatibility with new (and future) version of luaotfload
-
-## v2.3a (2013/03/16)
-
- * Bug fix update to retain compatibility with new expl3
-
-## v2.3 (2013/02/25)
-
- * Add support for per-font options in `\defaultfontfeatures`
- * Add support for `<fontname>.fontspec` per-font configuration files
- * Keep up-to-date with expl3 changes
-
-## v2.2b (2012/05/06) "TL2012 version"
-
- * Fix error with AutoFakeSlant/Bold (#113) and when used with external fonts (#128)
- * Add warning when using FakeBold in LuaLaTeX, where it's not supported
- * Fix slshape misassignment introduced in v2.2
- * Allow fontspec to be loaded before \documentclass
- (or rather fix the regression that broke this)
- * Avoid using the calc package now that it's no longer loaded by expl3
- * Allow multiple values to StylisticSet and Alternate font options
-
-## v2.2a (2011/09/14)
-
- * Bug fix: improve backwards compatibility for packages that use old
- fontspec internals such as mathspec.
-
-## v2.2 (2011/09/13)
-
- * Support alternate selections in CharacterVariant (cvxx in OpenType)
- using new syntax `[CharacterVariant=5:2]`.
- * Add `fontspec`-compatible `\oldstylenums` and `\liningnums` commands.
- * New programmer's function `\fontspec_set_fontface:NNnn` (for use when
- `\zf@basefont` might previously have been queried).
- * Log file output is slightly tidier.
- * Some old lingering bugs squashed:
- - Small caps font selection was broken in some cases.
- (Thanks Enrico Gregorio.)
- - Fonts loaded by filename with under-specified shapes threw an error
- (e.g., asking explicitly for bold but not italic).
- (Thanks Vafa Khalighi.)
- * Documentation improvements largely due to Markus Böhning.
- * Many internal changes, among which:
- - `xkeyval` package no longer used for option processing;
- `expl3`'s `l3keys` used instead.
- This allows `fontspec` to be loaded before `\documentclass`
- (thanks Heiko Oberdiek for reporting the issue)
- and fixes a potential conflict with the `preview` package
- (thanks again Vafa).
- - Internal names changed; avoid "\zf@basefont", "\zf@family", etc.
- from now on -- there are public interfaces now to get access to the
- same information
- - Update `expl3` support to latest CTAN version.
-
-## v2.1g (2011/08/02)
-
- * No longer uses the binhex package, avoiding some name clashes with TIPA
-
-## v2.1f (2011/02/26)
-
- * Finally add a real error message when a font cannot be found!
- * Add "Letters=Random" feature.
- * Fix bug in which "Unknown feature `'..." warnings
- were shown in the log file.
- * Some small documentation improvements.
-
-## v2.1e (2010/11/17)
-
- * Internal changes for luatexbase v0.3.
-
-## v2.1d (2010/11/07)
-
- * Bug fix when \itdefault is "sl" rather than "it".
- E.g., when using the "slides" class.
- * Minor internal changes, including merging some code from unicode-math.
-
-## v2.1c (2010/10/13)
-
- * New documentation for defining custom kerning and ligatures
- when using LuaLaTeX.
- * Fix bug when defining bold italic fonts by filename.
- * Avoid infinite loop when the Latin script is requested for a font
- that does not contain it. TODO: a suitable fallback script should be
- chosen; right now we just ignore the script selection.
-
-## v2.1b (2010/09/29)
-
- * Fix for bug introduced in the last release:
- small caps weren't being automatically selected correctly
-
-## v2.1a (2010/09/27)
-
- * Fix for colours bug introduced in the last update
- * Fix for for bad interaction with LuaLaTeX and fallback fonts
- (such as using \slshape when no slanted font specified)
- * Behaviour/messaging improvement when scripts/languages are requested
- that do not exist in the font
- * Fix bug with detecting font features/scripts in some cases with:
-
- - `\fontspec_if_feature:n(TF)`
- - `\fontspec_if_language:n(TF)`
- - `\fontspec_if_current_script:n(TF)`
- - `\fontspec_if_current_language:n(TF)`
-
- * Some messages in the log file are improved
- * Code for "visible space" fixed for LuaLaTeX use
- * Lots of internal changes to bring the implementation closer
- to being "native expl3".
-
-## v2.1 (2010/09/19)
-
- * Now load xunicode internally for consistent behaviour in
- XeLaTeX and LuaLaTeX.
- * Font commands now include \fontencoding internally, easing their
- use together with legacy TeX fonts.
- * Colour & Opacity now behave a little better.
- * Nested emphasis with \emph now also occurs inside a "slanted" shape.
- * Some compatibility commands/options added that were removed.
- in the transition to v2.
- * Bug fix for a problem triggered after counters got too high.
-
-## v2.0c (2010/08/01)
- Bug fix and documentation tune-up.
-
- * Significant bug fix reported simultaneously by Enrico Gregorio and
- Don Hosek.
- * Many documentation improvements and additions due to David Perry.
- * Documentation typo thanks to John McChesney-Young
-
-## v2.0b (2010/07/14)
- *Actually* the final release before TeX Live 2010.
-
- * Improved examples in the documentation, with fewer proprietary fonts
- * All font examples are included as separate images on CTAN, so the
- manual can be compiled (with pdfLaTeX) by anyone, anywhere
- * LuaLaTeX fixes for the StylisticSet and Annotation features
- * New OpenType feature `CharacterVariant` now supported
- * Minor change: `Ligatures=Historical` is now `Ligatures=Historic` for consistency
-
-## v2.0a (2010/07/11)
- Final release before TeX Live 2010.
-
- * Bug fix for the Language setting being ignored
- * Add programmer's command `\fontspec_glyph_if_exist:NnTF`
- * Many documentation improvements, especially for LuaTeX features
- `FeatureFile=...` and `Numbers=Arabic`.
- * Add `Parsi` and `Persian` synonyms for `Language=Farsi`
diff --git a/macros/latex/contrib/fontspec/LICENSE b/macros/latex/contrib/fontspec/LICENSE
deleted file mode 100644
index 2244313901..0000000000
--- a/macros/latex/contrib/fontspec/LICENSE
+++ /dev/null
@@ -1,416 +0,0 @@
-The LaTeX Project Public License
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-
-LPPL Version 1.3c 2008-05-04
-
-Copyright 1999 2002-2008 LaTeX3 Project
- Everyone is allowed to distribute verbatim copies of this
- license document, but modification of it is not allowed.
-
-
-PREAMBLE
-========
-
-The LaTeX Project Public License (LPPL) is the primary license under
-which the LaTeX kernel and the base LaTeX packages are distributed.
-
-You may use this license for any work of which you hold the copyright
-and which you wish to distribute. This license may be particularly
-suitable if your work is TeX-related (such as a LaTeX package), but
-it is written in such a way that you can use it even if your work is
-unrelated to TeX.
-
-The section `WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE',
-below, gives instructions, examples, and recommendations for authors
-who are considering distributing their works under this license.
-
-This license gives conditions under which a work may be distributed
-and modified, as well as conditions under which modified versions of
-that work may be distributed.
-
-We, the LaTeX3 Project, believe that the conditions below give you
-the freedom to make and distribute modified versions of your work
-that conform with whatever technical specifications you wish while
-maintaining the availability, integrity, and reliability of
-that work. If you do not see how to achieve your goal while
-meeting these conditions, then read the document `cfgguide.tex'
-and `modguide.tex' in the base LaTeX distribution for suggestions.
-
-
-DEFINITIONS
-===========
-
-In this license document the following terms are used:
-
- `Work'
- Any work being distributed under this License.
-
- `Derived Work'
- Any work that under any applicable law is derived from the Work.
-
- `Modification'
- Any procedure that produces a Derived Work under any applicable
- law -- for example, the production of a file containing an
- original file associated with the Work or a significant portion of
- such a file, either verbatim or with modifications and/or
- translated into another language.
-
- `Modify'
- To apply any procedure that produces a Derived Work under any
- applicable law.
-
- `Distribution'
- Making copies of the Work available from one person to another, in
- whole or in part. Distribution includes (but is not limited to)
- making any electronic components of the Work accessible by
- file transfer protocols such as FTP or HTTP or by shared file
- systems such as Sun's Network File System (NFS).
-
- `Compiled Work'
- A version of the Work that has been processed into a form where it
- is directly usable on a computer system. This processing may
- include using installation facilities provided by the Work,
- transformations of the Work, copying of components of the Work, or
- other activities. Note that modification of any installation
- facilities provided by the Work constitutes modification of the Work.
-
- `Current Maintainer'
- A person or persons nominated as such within the Work. If there is
- no such explicit nomination then it is the `Copyright Holder' under
- any applicable law.
-
- `Base Interpreter'
- A program or process that is normally needed for running or
- interpreting a part or the whole of the Work.
-
- A Base Interpreter may depend on external components but these
- are not considered part of the Base Interpreter provided that each
- external component clearly identifies itself whenever it is used
- interactively. Unless explicitly specified when applying the
- license to the Work, the only applicable Base Interpreter is a
- `LaTeX-Format' or in the case of files belonging to the
- `LaTeX-format' a program implementing the `TeX language'.
-
-
-
-CONDITIONS ON DISTRIBUTION AND MODIFICATION
-===========================================
-
-1. Activities other than distribution and/or modification of the Work
-are not covered by this license; they are outside its scope. In
-particular, the act of running the Work is not restricted and no
-requirements are made concerning any offers of support for the Work.
-
-2. You may distribute a complete, unmodified copy of the Work as you
-received it. Distribution of only part of the Work is considered
-modification of the Work, and no right to distribute such a Derived
-Work may be assumed under the terms of this clause.
-
-3. You may distribute a Compiled Work that has been generated from a
-complete, unmodified copy of the Work as distributed under Clause 2
-above, as long as that Compiled Work is distributed in such a way that
-the recipients may install the Compiled Work on their system exactly
-as it would have been installed if they generated a Compiled Work
-directly from the Work.
-
-4. If you are the Current Maintainer of the Work, you may, without
-restriction, modify the Work, thus creating a Derived Work. You may
-also distribute the Derived Work without restriction, including
-Compiled Works generated from the Derived Work. Derived Works
-distributed in this manner by the Current Maintainer are considered to
-be updated versions of the Work.
-
-5. If you are not the Current Maintainer of the Work, you may modify
-your copy of the Work, thus creating a Derived Work based on the Work,
-and compile this Derived Work, thus creating a Compiled Work based on
-the Derived Work.
-
-6. If you are not the Current Maintainer of the Work, you may
-distribute a Derived Work provided the following conditions are met
-for every component of the Work unless that component clearly states
-in the copyright notice that it is exempt from that condition. Only
-the Current Maintainer is allowed to add such statements of exemption
-to a component of the Work.
-
- a. If a component of this Derived Work can be a direct replacement
- for a component of the Work when that component is used with the
- Base Interpreter, then, wherever this component of the Work
- identifies itself to the user when used interactively with that
- Base Interpreter, the replacement component of this Derived Work
- clearly and unambiguously identifies itself as a modified version
- of this component to the user when used interactively with that
- Base Interpreter.
-
- b. Every component of the Derived Work contains prominent notices
- detailing the nature of the changes to that component, or a
- prominent reference to another file that is distributed as part
- of the Derived Work and that contains a complete and accurate log
- of the changes.
-
- c. No information in the Derived Work implies that any persons,
- including (but not limited to) the authors of the original version
- of the Work, provide any support, including (but not limited to)
- the reporting and handling of errors, to recipients of the
- Derived Work unless those persons have stated explicitly that
- they do provide such support for the Derived Work.
-
- d. You distribute at least one of the following with the Derived Work:
-
- 1. A complete, unmodified copy of the Work;
- if your distribution of a modified component is made by
- offering access to copy the modified component from a
- designated place, then offering equivalent access to copy
- the Work from the same or some similar place meets this
- condition, even though third parties are not compelled to
- copy the Work along with the modified component;
-
- 2. Information that is sufficient to obtain a complete,
- unmodified copy of the Work.
-
-7. If you are not the Current Maintainer of the Work, you may
-distribute a Compiled Work generated from a Derived Work, as long as
-the Derived Work is distributed to all recipients of the Compiled
-Work, and as long as the conditions of Clause 6, above, are met with
-regard to the Derived Work.
-
-8. The conditions above are not intended to prohibit, and hence do not
-apply to, the modification, by any method, of any component so that it
-becomes identical to an updated version of that component of the Work as
-it is distributed by the Current Maintainer under Clause 4, above.
-
-9. Distribution of the Work or any Derived Work in an alternative
-format, where the Work or that Derived Work (in whole or in part) is
-then produced by applying some process to that format, does not relax or
-nullify any sections of this license as they pertain to the results of
-applying that process.
-
-10. a. A Derived Work may be distributed under a different license
- provided that license itself honors the conditions listed in
- Clause 6 above, in regard to the Work, though it does not have
- to honor the rest of the conditions in this license.
-
- b. If a Derived Work is distributed under a different license, that
- Derived Work must provide sufficient documentation as part of
- itself to allow each recipient of that Derived Work to honor the
- restrictions in Clause 6 above, concerning changes from the Work.
-
-11. This license places no restrictions on works that are unrelated to
-the Work, nor does this license place any restrictions on aggregating
-such works with the Work by any means.
-
-12. Nothing in this license is intended to, or may be used to, prevent
-complete compliance by all parties with all applicable laws.
-
-
-NO WARRANTY
-===========
-
-There is no warranty for the Work. Except when otherwise stated in
-writing, the Copyright Holder provides the Work `as is', without
-warranty of any kind, either expressed or implied, including, but not
-limited to, the implied warranties of merchantability and fitness for a
-particular purpose. The entire risk as to the quality and performance
-of the Work is with you. Should the Work prove defective, you assume
-the cost of all necessary servicing, repair, or correction.
-
-In no event unless required by applicable law or agreed to in writing
-will The Copyright Holder, or any author named in the components of the
-Work, or any other party who may distribute and/or modify the Work as
-permitted above, be liable to you for damages, including any general,
-special, incidental or consequential damages arising out of any use of
-the Work or out of inability to use the Work (including, but not limited
-to, loss of data, data being rendered inaccurate, or losses sustained by
-anyone as a result of any failure of the Work to operate with any other
-programs), even if the Copyright Holder or said author or said other
-party has been advised of the possibility of such damages.
-
-
-MAINTENANCE OF THE WORK
-=======================
-
-The Work has the status `author-maintained' if the Copyright Holder
-explicitly and prominently states near the primary copyright notice in
-the Work that the Work can only be maintained by the Copyright Holder
-or simply that it is `author-maintained'.
-
-The Work has the status `maintained' if there is a Current Maintainer
-who has indicated in the Work that they are willing to receive error
-reports for the Work (for example, by supplying a valid e-mail
-address). It is not required for the Current Maintainer to acknowledge
-or act upon these error reports.
-
-The Work changes from status `maintained' to `unmaintained' if there
-is no Current Maintainer, or the person stated to be Current
-Maintainer of the work cannot be reached through the indicated means
-of communication for a period of six months, and there are no other
-significant signs of active maintenance.
-
-You can become the Current Maintainer of the Work by agreement with
-any existing Current Maintainer to take over this role.
-
-If the Work is unmaintained, you can become the Current Maintainer of
-the Work through the following steps:
-
- 1. Make a reasonable attempt to trace the Current Maintainer (and
- the Copyright Holder, if the two differ) through the means of
- an Internet or similar search.
-
- 2. If this search is successful, then enquire whether the Work
- is still maintained.
-
- a. If it is being maintained, then ask the Current Maintainer
- to update their communication data within one month.
-
- b. If the search is unsuccessful or no action to resume active
- maintenance is taken by the Current Maintainer, then announce
- within the pertinent community your intention to take over
- maintenance. (If the Work is a LaTeX work, this could be
- done, for example, by posting to comp.text.tex.)
-
- 3a. If the Current Maintainer is reachable and agrees to pass
- maintenance of the Work to you, then this takes effect
- immediately upon announcement.
-
- b. If the Current Maintainer is not reachable and the Copyright
- Holder agrees that maintenance of the Work be passed to you,
- then this takes effect immediately upon announcement.
-
- 4. If you make an `intention announcement' as described in 2b. above
- and after three months your intention is challenged neither by
- the Current Maintainer nor by the Copyright Holder nor by other
- people, then you may arrange for the Work to be changed so as
- to name you as the (new) Current Maintainer.
-
- 5. If the previously unreachable Current Maintainer becomes
- reachable once more within three months of a change completed
- under the terms of 3b) or 4), then that Current Maintainer must
- become or remain the Current Maintainer upon request provided
- they then update their communication data within one month.
-
-A change in the Current Maintainer does not, of itself, alter the fact
-that the Work is distributed under the LPPL license.
-
-If you become the Current Maintainer of the Work, you should
-immediately provide, within the Work, a prominent and unambiguous
-statement of your status as Current Maintainer. You should also
-announce your new status to the same pertinent community as
-in 2b) above.
-
-
-WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE
-======================================================
-
-This section contains important instructions, examples, and
-recommendations for authors who are considering distributing their
-works under this license. These authors are addressed as `you' in
-this section.
-
-Choosing This License or Another License
-----------------------------------------
-
-If for any part of your work you want or need to use *distribution*
-conditions that differ significantly from those in this license, then
-do not refer to this license anywhere in your work but, instead,
-distribute your work under a different license. You may use the text
-of this license as a model for your own license, but your license
-should not refer to the LPPL or otherwise give the impression that
-your work is distributed under the LPPL.
-
-The document `modguide.tex' in the base LaTeX distribution explains
-the motivation behind the conditions of this license. It explains,
-for example, why distributing LaTeX under the GNU General Public
-License (GPL) was considered inappropriate. Even if your work is
-unrelated to LaTeX, the discussion in `modguide.tex' may still be
-relevant, and authors intending to distribute their works under any
-license are encouraged to read it.
-
-A Recommendation on Modification Without Distribution
------------------------------------------------------
-
-It is wise never to modify a component of the Work, even for your own
-personal use, without also meeting the above conditions for
-distributing the modified component. While you might intend that such
-modifications will never be distributed, often this will happen by
-accident -- you may forget that you have modified that component; or
-it may not occur to you when allowing others to access the modified
-version that you are thus distributing it and violating the conditions
-of this license in ways that could have legal implications and, worse,
-cause problems for the community. It is therefore usually in your
-best interest to keep your copy of the Work identical with the public
-one. Many works provide ways to control the behavior of that work
-without altering any of its licensed components.
-
-How to Use This License
------------------------
-
-To use this license, place in each of the components of your work both
-an explicit copyright notice including your name and the year the work
-was authored and/or last substantially modified. Include also a
-statement that the distribution and/or modification of that
-component is constrained by the conditions in this license.
-
-Here is an example of such a notice and statement:
-
- %% pig.dtx
- %% Copyright 2005 M. Y. Name
- %
- % This work 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 2005/12/01 or later.
- %
- % This work has the LPPL maintenance status `maintained'.
- %
- % The Current Maintainer of this work is M. Y. Name.
- %
- % This work consists of the files pig.dtx and pig.ins
- % and the derived file pig.sty.
-
-Given such a notice and statement in a file, the conditions
-given in this license document would apply, with the `Work' referring
-to the three files `pig.dtx', `pig.ins', and `pig.sty' (the last being
-generated from `pig.dtx' using `pig.ins'), the `Base Interpreter'
-referring to any `LaTeX-Format', and both `Copyright Holder' and
-`Current Maintainer' referring to the person `M. Y. Name'.
-
-If you do not want the Maintenance section of LPPL to apply to your
-Work, change `maintained' above into `author-maintained'.
-However, we recommend that you use `maintained', as the Maintenance
-section was added in order to ensure that your Work remains useful to
-the community even when you can no longer maintain and support it
-yourself.
-
-Derived Works That Are Not Replacements
----------------------------------------
-
-Several clauses of the LPPL specify means to provide reliability and
-stability for the user community. They therefore concern themselves
-with the case that a Derived Work is intended to be used as a
-(compatible or incompatible) replacement of the original Work. If
-this is not the case (e.g., if a few lines of code are reused for a
-completely different task), then clauses 6b and 6d shall not apply.
-
-
-Important Recommendations
--------------------------
-
- Defining What Constitutes the Work
-
- The LPPL requires that distributions of the Work contain all the
- files of the Work. It is therefore important that you provide a
- way for the licensee to determine which files constitute the Work.
- This could, for example, be achieved by explicitly listing all the
- files of the Work near the copyright notice of each file or by
- using a line such as:
-
- % This work consists of all files listed in manifest.txt.
-
- in that place. In the absence of an unequivocal list it might be
- impossible for the licensee to determine what is considered by you
- to comprise the Work and, in such a case, the licensee would be
- entitled to make reasonable conjectures as to which files comprise
- the Work.
-
diff --git a/macros/latex/contrib/fontspec/README.md b/macros/latex/contrib/fontspec/README.md
deleted file mode 100644
index cd01b539d8..0000000000
--- a/macros/latex/contrib/fontspec/README.md
+++ /dev/null
@@ -1,83 +0,0 @@
-The FONTSPEC package
-====================
-
-The `fontspec` package provides an automatic and unified interface for loading
-fonts in LaTeX. XeTeX and LuaTeX (the latter through the `luaotfload` package)
-allows a direct interface to fonts which may be loaded by their name or filename,
-so no manual font installation is required.
-
-This package also provides access to the large number of font features
-available with OpenType (and other) fonts, including upper and lower case numbers,
-proportional and monospaced numbers, swash letters, ligature control, and many
-many others.
-
-See the documentation `fontspec.pdf` for full information.
-
-
-Summary of user commands
-------------------------
-
-To define commands for selecting fonts efficiently through a document:
-
- \newfontfamily\<font switch>{<font name>}[<font options>]
- \newfontface \<font switch>{<font name>}[<font options>]
-
-To select the default document fonts:
-
- \setmainfont{<font name>}[<font options>]
- \setsansfont{<font name>}[<font options>]
- \setmonofont{<font name>}[<font options>]
-
-To define an ad hoc font family individually:
-
- \fontspec{<font name>}[<font options>]
-
-To specify features to be used for every subsequently defined font:
-
- \defaultfontfeatures{<default font options>}
- \defaultfontfeatures+{<add to default font options>}
-
-To specify features to be used for specific fonts:
-
- \defaultfontfeatures[<font name or switch>]{<default font options>}
- \defaultfontfeatures+[<font name or switch>]{<add to defaults>}
-
-To add features to the font family currently in use:
-
- \addfontfeatures{<font options to add>}
-
-
-Package details
----------------
-
-Release versions of fontspec are available from CTAN:
- <http://www.ctan.org/pkg/fontspec>
-
-Development and historical versions are available from Github:
- <http://github.com/wspr/fontspec>
-
-Please offer suggestions and file bug reports in the issue tracker:
- <http://github.com/wspr/fontspec/issues>
-
-If you are running TeX Live, you can update to the latest version of this package by running
-
- tlmgr install fontspec
-
-If you wish to manually download the latest release version from CTAN, get the pre-built TDS package and extract it into your local texmf tree:
-
- http://mirror.ctan.org/install/macros/latex/contrib/fontspec.tds.zip
-
-If you wish to use the latest development version from Github, either use git to obtain the bleeding edge version with
-
- git clone git://github.com/wspr/fontspec.git
-
-(For bleeding edge versions, see the `working` branch.)
-Having obtained the package from Github, install the package code by running
-
- texlua build.lua install
-
-This will compile the documentation and install all necessary files in your
-local texmf tree. Depending how your TeX distribution is configured
-you may then need to update the filename database with `texhash`.
-
-
diff --git a/macros/latex/contrib/fontspec/fontspec-code-api.dtx b/macros/latex/contrib/fontspec/fontspec-code-api.dtx
deleted file mode 100644
index b0b6b0a87d..0000000000
--- a/macros/latex/contrib/fontspec/fontspec-code-api.dtx
+++ /dev/null
@@ -1,390 +0,0 @@
-%%^^A%% fontspec-code-api.dtx -- part of FONTSPEC <wspr.io/fontspec>
-
-% \section{Programmer's interface}
-%
-% \iffalse
-% \begin{macrocode}
-%<*fontspec>
-% \end{macrocode}
-% \fi
-%
-%
-%
-% These functions are not used directly by fontspec when defining fonts;
-% they are designed to be used by other packages who wish to do font-related
-% things on top of fontspec itself.
-%
-% Because I haven't fully explored how these functions will behave in
-% practise, I am not giving them user-level names. As it becomes more clear
-% which of these should be accessible by document writers, I'll open them up
-% a little more.
-%
-% All functions are defined assuming that the font to be queried is
-% currently selected as a fontspec font. (I.e., via \verb|\fontspec| or
-% from a \verb|\newfontfamily| macro or from \verb|\setmainfont| and so on.)
-%
-% \begin{macro}{\fontspec_if_fontspec_font:TF}
-% Test whether the currently selected font has been loaded by fontspec.
-% \begin{macrocode}
-\prg_new_conditional:Nnn \fontspec_if_fontspec_font: {TF,T,F}
- {
- \cs_if_exist:cTF {g_@@_fontinfo_ \f@family _prop} \prg_return_true: \prg_return_false:
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\fontspec_if_aat_feature:nnTF}
-% Conditional to test if the currently selected font contains the \AAT\
-% feature (|#1|,|#2|).
-% \begin{macrocode}
-\prg_new_conditional:Nnn \fontspec_if_aat_feature:nn {TF,T,F}
- {
- \fontspec_if_fontspec_font:TF
- {
- \@@_set_font_type:N \font
- \bool_if:NTF \l_@@_atsui_bool
- {
- \@@_make_AAT_feature_string:NnnTF \font {#1} {#2}
- \prg_return_true: \prg_return_false:
- }
- {
- \prg_return_false:
- }
- }
- {
- \prg_return_false:
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\fontspec_if_opentype:TF}
-% Test whether the currently selected font is an OpenType font.
-% Always true for LuaTeX fonts.
-% \begin{macrocode}
-\prg_new_conditional:Nnn \fontspec_if_opentype: {TF,T,F}
- {
- \fontspec_if_fontspec_font:TF
- {
- \@@_set_font_type:N \font
- \bool_if:NTF \l_@@_ot_bool \prg_return_true: \prg_return_false:
- }
- {
- \prg_return_false:
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\fontspec_if_feature:nTF}
-% Test whether the currently selected font contains the raw OpenType
-% feature |#1|. E.g.: |\fontspec_if_feature:nTF {pnum} {True} {False}|
-% Returns false if the font is not loaded by fontspec or is not an OpenType
-% font.
-% \begin{macrocode}
-\prg_new_conditional:Nnn \fontspec_if_feature:n {TF,T,F}
- {
- \fontspec_if_fontspec_font:TF
- {
- \@@_set_font_type:N \font
- \bool_if:NTF \l_@@_ot_bool
- {
- \prop_get:cnN {g_@@_fontinfo_ \f@family _prop} {script-num} \l_@@_tmp_tl
- \int_set:Nn \l_@@_script_int {\l_@@_tmp_tl}
-
- \prop_get:cnN {g_@@_fontinfo_ \f@family _prop} {lang-num} \l_@@_tmp_tl
- \int_set:Nn \l_@@_language_int {\l_@@_tmp_tl}
-
- \prop_get:cnN {g_@@_fontinfo_ \f@family _prop} {script-tag} \l_@@_script_tl
- \prop_get:cnN {g_@@_fontinfo_ \f@family _prop} {lang-tag} \l_@@_lang_tl
-
- \@@_check_ot_feat:NnTF \font {#1} {\prg_return_true:} {\prg_return_false:}
- }
- {
- \prg_return_false:
- }
- }
- {
- \prg_return_false:
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\fontspec_if_feature:nnnTF}
-% Test whether the currently selected font with raw OpenType script tag |#1| and
-% raw OpenType language tag |#2| contains the raw OpenType feature tag |#3|.
-% E.g.:\\ | \fontspec_if_feature:nTF {latn} {ROM} {pnum} {True} {False}|
-% Returns false if the font is not loaded by fontspec or is not an OpenType
-% font.
-% \begin{macrocode}
-\prg_new_conditional:Nnn \fontspec_if_feature:nnn {TF,T,F}
- {
- \fontspec_if_fontspec_font:TF
- {
- \@@_set_font_type:N \font
- \bool_if:NTF \l_@@_ot_bool
- {
- \@@_check_ot_feat:NnnnTF \font {#3} {#2} {#1} \prg_return_true: \prg_return_false:
- }
- { \prg_return_false: }
- }
- { \prg_return_false: }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\fontspec_if_script:nTF}
-% Test whether the currently selected font contains the raw OpenType
-% script |#1|. E.g.: |\fontspec_if_script:nTF {latn} {True} {False}|
-% Returns false if the font is not loaded by fontspec or is not an OpenType
-% font.
-% \begin{macrocode}
-\prg_new_conditional:Nnn \fontspec_if_script:n {TF,T,F}
- {
- \fontspec_if_fontspec_font:TF
- {
- \@@_set_font_type:N \font
- \bool_if:NTF \l_@@_ot_bool
- {
- \@@_check_script:NnTF \font {#1} \prg_return_true: \prg_return_false:
- }
- { \prg_return_false: }
- }
- { \prg_return_false: }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\fontspec_if_language:nTF}
-% Test whether the currently selected font contains the raw OpenType language
-% tag |#1|. E.g.: |\fontspec_if_language:nTF {ROM} {True} {False}|.
-% Returns false if the font is not loaded by fontspec or is not an OpenType
-% font.
-% \begin{macrocode}
-\prg_new_conditional:Nnn \fontspec_if_language:n {TF,T,F}
- {
- \fontspec_if_fontspec_font:TF
- {
- \@@_set_font_type:N \font
- \bool_if:NTF \l_@@_ot_bool
- {
- \prop_get:cnN {g_@@_fontinfo_ \f@family _prop} {script-num} \l_@@_tmp_tl
- \int_set:Nn \l_@@_script_int {\l_@@_tmp_tl}
- \prop_get:cnN {g_@@_fontinfo_ \f@family _prop} {script-tag} \l_@@_script_tl
-
- \@@_check_lang:NnTF \font {#1} \prg_return_true: \prg_return_false:
- }
- { \prg_return_false: }
- }
- { \prg_return_false: }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\fontspec_if_language:nnTF}
-% Test whether the currently selected font contains the raw OpenType language
-% tag |#2| in script |#1|. E.g.: |\fontspec_if_language:nnTF {cyrl} {SRB} {True} {False}|.
-% Returns false if the font is not loaded by fontspec or is not an OpenType
-% font.
-% \begin{macrocode}
-\prg_new_conditional:Nnn \fontspec_if_language:nn {TF,T,F}
- {
- \fontspec_if_fontspec_font:TF
- {
- \@@_set_font_type:N \font
- \bool_if:NTF \l_@@_ot_bool
- {
- \@@_check_lang:NnnTF \font {#2} {#1} \prg_return_true: \prg_return_false:
- }
- { \prg_return_false: }
- }
- { \prg_return_false: }
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\fontspec_if_current_script:nTF}
-% Test whether the currently loaded font is using the specified raw
-% OpenType script tag |#1|.
-% \begin{macrocode}
-\prg_new_conditional:Nnn \fontspec_if_current_script:n {TF,T,F}
- {
- \fontspec_if_fontspec_font:TF
- {
- \@@_set_font_type:N \font
- \bool_if:NTF \l_@@_ot_bool
- {
- \prop_get:cnN {g_@@_fontinfo_ \f@family _prop} {script-tag} \l_@@_tmp_tl
- \str_if_eq:nVTF {#1} \l_@@_tmp_tl
- {\prg_return_true:} {\prg_return_false:}
- }
- { \prg_return_false: }
- }
- { \prg_return_false: }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\fontspec_if_current_language:nTF}
-% Test whether the currently loaded font is using the specified raw
-% OpenType language tag |#1|.
-% \begin{macrocode}
-\prg_new_conditional:Nnn \fontspec_if_current_language:n {TF,T,F}
- {
- \fontspec_if_fontspec_font:TF
- {
- \@@_set_font_type:N \font
- \bool_if:NTF \l_@@_ot_bool
- {
- \prop_get:cnN {g_@@_fontinfo_ \f@family _prop} {lang-tag} \l_@@_tmp_tl
- \str_if_eq:nVTF {#1} \l_@@_tmp_tl
- {\prg_return_true:} {\prg_return_false:}
- }
- { \prg_return_false: }
- }
- { \prg_return_false: }
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\fontspec_set_family:Nnn}
-% \darg{family}
-% \darg{fontspec features}
-% \darg{font name}
-% Defines a new font family from given \meta{features} and \meta{font},
-% and stores the name in the variable \meta{family}.
-% See the standard \pkg{fontspec} user commands for applications of this
-% function.
-%
-% We want to store the actual name of the font family within the \meta{family}
-% variable because the actual \LaTeX\ family name is automatically generated
-% by fontspec and it's easier to keep it that way.
-% \begin{macrocode}
-\cs_new:Nn \@@_tl_new_if_free:N { \tl_if_exist:NF #1 { \tl_new:N #1 } }
-\cs_new:Nn \@@_set_family:NnnN
- {
- \tl_set:Nn \l_@@_fontface_cs_tl {\l_fontspec_font} % reset
- \tl_set:Nn \l_@@_family_label_tl {#1}
- \@@_select_font_family:nn {#2} {#3}
- \@@_tl_new_if_free:N #1
- #4 #1 \l_fontspec_family_tl
- \tl_set:Nn \l_@@_fontface_cs_tl {\l_fontspec_font} % reset
- }
-\cs_new:Nn \fontspec_gset_family:Nnn { \@@_set_family:NnnN #1 {#2} {#3} \tl_gset_eq:NN }
-\cs_new:Nn \fontspec_set_family:Nnn { \@@_set_family:NnnN #1 {#2} {#3} \tl_set_eq:NN }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_generate_variant:Nn \fontspec_set_family:Nnn {c}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\fontspec_set_fontface:NNnn}
-% TODO: the round-about approach of using \cs{fontname}
-% means that settings such as fontdimens will be lost.
-% (Discovered in unicode-math.) Investigate!
-% \begin{macrocode}
-\tl_new:N \l_@@_fontface_cs_tl
-\tl_set:Nn \l_@@_fontface_cs_tl {\l_fontspec_font}
-\cs_new:Nn \@@_set_fontface:NNnnN
- {
- \tl_set:Nn \l_@@_fontface_cs_tl {#1}
- \tl_set:Nn \l_@@_family_label_tl {#2}
- \@@_select_font_family:nn {#3} {#4}
- #5 #2 \l_fontspec_family_tl
- \tl_set:Nn \l_@@_fontface_cs_tl {\l_fontspec_font} % reset
- }
-\cs_new:Nn \fontspec_gset_fontface:NNnn { \@@_set_fontface:NNnnN #1 #2 {#3} {#4} \tl_gset_eq:NN }
-\cs_new:Nn \fontspec_set_fontface:NNnn { \@@_set_fontface:NNnnN #1 #2 {#3} {#4} \tl_set_eq:NN }
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\fontspec_font_if_exist:n}
-% \begin{macrocode}
-\prg_new_conditional:Nnn \fontspec_font_if_exist:n {TF,T,F}
- {
- \group_begin:
- \@@_init:
- \@@_if_detect_external:nT {#1} { \@@_font_is_file: }
- \@@_primitive_font_if_exist:nTF { \@@_construct_font_call:nn {#1} {} }
- { \group_end: \prg_return_true: }
- { \group_end: \prg_return_false: }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_set_eq:NN \IfFontExistsTF \fontspec_font_if_exist:nTF
-% \end{macrocode}
-% \end{macro}
-
-% \begin{macro}{\fontspec_if_current_feature:nTF}
-% Test whether the currently loaded font is using the specified raw
-% OpenType feature tag |#1|.
-% \begin{macrocode}
-\prg_new_conditional:Nnn \fontspec_if_current_feature:n {TF,T,F}
- {
-%<debug>\typeout{::~fontspec_if_current_feature:n~{#1}}
-%<debug>\typeout{::::~primitive_font_current_name:~=~\@@_primitive_font_current_name:}
- \exp_args:Nxx \tl_if_in:nnTF
- { \@@_primitive_font_current_name: } { \tl_to_str:n {#1} }
- { \prg_return_true: } { \prg_return_false: }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\fontspec_if_small_caps:TF}
-% \begin{macrocode}
-\prg_new_conditional:Nnn \fontspec_if_small_caps: {TF,T,F}
- {
- \@@_if_merge_shape:nTF {sc}
- {
- \tl_set_eq:Nc \l_@@_smcp_shape_tl { \@@_shape_merge:nn {\f@shape} {sc} }
- }
- {
- \tl_set:Nn \l_@@_smcp_shape_tl {sc}
- }
-
- \cs_if_exist:cTF { \f@encoding/\f@family/\f@series/\l_@@_smcp_shape_tl }
- {
- \tl_if_eq:ccTF
- { \f@encoding/\f@family/\f@series/\l_@@_smcp_shape_tl }
- { \f@encoding/\f@family/\f@series/\shapedefault }
- { \prg_return_false: }
- { \prg_return_true: }
- }
- { \prg_return_false: }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \iffalse
-% \begin{macrocode}
-%</fontspec>
-% \end{macrocode}
-% \fi
-
-
-\endinput
-
-% /©
-% ------------------------------------------------
-% The FONTSPEC package <wspr.io/fontspec>
-% ------------------------------------------------
-% Copyright 2004-2020 Will Robertson, LPPL "maintainer"
-% Copyright 2009-2015 Khaled Hosny
-% Copyright 2013 Philipp Gesang
-% Copyright 2013-2016 Joseph Wright
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% ©/
diff --git a/macros/latex/contrib/fontspec/fontspec-code-closing.dtx b/macros/latex/contrib/fontspec/fontspec-code-closing.dtx
deleted file mode 100644
index 4dca137a7d..0000000000
--- a/macros/latex/contrib/fontspec/fontspec-code-closing.dtx
+++ /dev/null
@@ -1,44 +0,0 @@
-%%^^A%% fontspec-code-closing.dtx -- part of FONTSPEC <wspr.io/fontspec>
-%
-% \section{Closing code}
-%
-% \iffalse
-% \begin{macrocode}
-%<*fontspec>
-% \end{macrocode}
-% \fi
-%
-% \subsection{Finishing up}
-% Now we just want to set up loading the \texttt{.cfg} file, if it exists.
-% \begin{macrocode}
-\bool_if:NT \g_@@_cfg_bool
- {
- \InputIfFileExists{fontspec.cfg}
- {}
- { \typeout{No~ fontspec.cfg~ file~ found;~ no~ configuration~ loaded.} }
- }
-% \end{macrocode}
-%
-% \iffalse
-% \begin{macrocode}
-%</fontspec>
-% \end{macrocode}
-% \fi
-
-
-\endinput
-
-% /©
-% ------------------------------------------------
-% The FONTSPEC package <wspr.io/fontspec>
-% ------------------------------------------------
-% Copyright 2004-2020 Will Robertson, LPPL "maintainer"
-% Copyright 2009-2015 Khaled Hosny
-% Copyright 2013 Philipp Gesang
-% Copyright 2013-2016 Joseph Wright
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% ©/
diff --git a/macros/latex/contrib/fontspec/fontspec-code-enc.dtx b/macros/latex/contrib/fontspec/fontspec-code-enc.dtx
deleted file mode 100644
index 7d30448002..0000000000
--- a/macros/latex/contrib/fontspec/fontspec-code-enc.dtx
+++ /dev/null
@@ -1,158 +0,0 @@
-%%^^A%% fontspec-code-enc.dtx -- part of FONTSPEC <wspr.io/fontspec>
-
-% \section{Extended font encodings}
-%
-% \iffalse
-% \begin{macrocode}
-%<*fontspec>
-% \end{macrocode}
-% \fi
-%
-%
-% \begin{macro}{\EncodingCommand}
-% \begin{macrocode}
-\DeclareDocumentCommand \EncodingCommand { m O{} O{} m }
- {
- \bool_if:NF \l_@@_defining_encoding_bool
- { \@@_error:nn {only-inside-encdef} \EncodingCommand }
- \DeclareTextCommand{#1}{\UnicodeEncodingName}[#2][#3]{#4}
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\EncodingAccent}
-% \begin{macrocode}
-\DeclareDocumentCommand \EncodingAccent {mm}
- {
- \bool_if:NF \l_@@_defining_encoding_bool
- { \@@_error:nn {only-inside-encdef} \EncodingAccent }
- \DeclareTextCommand{#1}{\UnicodeEncodingName}{\add@unicode@accent{#2}}
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\EncodingSymbol}
-% \begin{macrocode}
-\DeclareDocumentCommand \EncodingSymbol {mm}
- {
- \bool_if:NF \l_@@_defining_encoding_bool
- { \@@_error:nn {only-inside-encdef} \EncodingSymbol }
- \DeclareTextSymbol{#1}{\UnicodeEncodingName}{#2}
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\EncodingComposite}
-% \begin{macrocode}
-\DeclareDocumentCommand \EncodingComposite {mmm}
- {
- \bool_if:NF \l_@@_defining_encoding_bool
- { \@@_error:nn {only-inside-encdef} \EncodingComposite }
- \DeclareTextComposite{#1}{\UnicodeEncodingName}{#2}{#3}
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\EncodingCompositeCommand}
-% \begin{macrocode}
-\DeclareDocumentCommand \EncodingCompositeCommand {mmm}
- {
- \bool_if:NF \l_@@_defining_encoding_bool
- { \@@_error:nn {only-inside-encdef} \EncodingCompositeCommand }
- \DeclareTextCompositeCommand{#1}{\UnicodeEncodingName}{#2}{#3}
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\DeclareUnicodeEncoding}
-% \begin{macrocode}
-\DeclareDocumentCommand \DeclareUnicodeEncoding {mm}
- {
- \DeclareFontEncoding{#1}{}{}
- \DeclareFontSubstitution{#1}{lmr}{m}{n}
- \DeclareFontFamily{#1}{lmr}{}
-
- \DeclareFontShape{#1}{lmr}{m}{n}
- {<->\UnicodeFontFile{lmroman10-regular}{\UnicodeFontTeXLigatures}}{}
- \DeclareFontShape{#1}{lmr}{m}{it}
- {<->\UnicodeFontFile{lmroman10-italic}{\UnicodeFontTeXLigatures}}{}
- \DeclareFontShape{#1}{lmr}{m}{sc}
- {<->\UnicodeFontFile{lmromancaps10-regular}{\UnicodeFontTeXLigatures}}{}
- \DeclareFontShape{#1}{lmr}{bx}{n}
- {<->\UnicodeFontFile{lmroman10-bold}{\UnicodeFontTeXLigatures}}{}
- \DeclareFontShape{#1}{lmr}{bx}{it}
- {<->\UnicodeFontFile{lmroman10-bolditalic}{\UnicodeFontTeXLigatures}}{}
-
- \tl_set_eq:NN \l_@@_prev_unicode_name_tl \UnicodeEncodingName
- \tl_set:Nn \UnicodeEncodingName {#1}
- \bool_set_true:N \l_@@_defining_encoding_bool
- #2
- \bool_set_false:N \l_@@_defining_encoding_bool
- \tl_set_eq:NN \UnicodeEncodingName \l_@@_prev_unicode_name_tl
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\UndeclareSymbol}
-% \begin{macro}{\UndeclareAccent}
-% \begin{macro}{\UndeclareCommand}
-% Synonyms for each other but all included for completeness.
-% \begin{macrocode}
-\DeclareDocumentCommand \UndeclareSymbol {m}
- {
- \bool_if:NF \l_@@_defining_encoding_bool
- { \@@_error:nn {only-inside-encdef} \UndeclareSymbol }
- \UndeclareTextCommand {#1} {\UnicodeEncodingName}
- }
-\DeclareDocumentCommand \UndeclareAccent {m}
- {
- \bool_if:NF \l_@@_defining_encoding_bool
- { \@@_error:nn {only-inside-encdef} \UndeclareAccent }
- \UndeclareTextCommand {#1} {\UnicodeEncodingName}
- }
-\DeclareDocumentCommand \UndeclareCommand {m}
- {
- \bool_if:NF \l_@@_defining_encoding_bool
- { \@@_error:nn {only-inside-encdef} \UndeclareCommand }
- \UndeclareTextCommand {#1} {\UnicodeEncodingName}
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\UndeclareComposite}
-% \begin{macrocode}
-\DeclareDocumentCommand \UndeclareComposite {mm}
- {
- \bool_if:NF \l_@@_defining_encoding_bool
- { \@@_error:nn {only-inside-encdef} \UndeclareComposite }
- \cs_undefine:c
- { \c_backslash_str \UnicodeEncodingName \token_to_str:N #1 - \tl_to_str:n {#2} }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \iffalse
-% \begin{macrocode}
-%</fontspec>
-% \end{macrocode}
-% \fi
-
-
-\endinput
-
-% /©
-% ------------------------------------------------
-% The FONTSPEC package <wspr.io/fontspec>
-% ------------------------------------------------
-% Copyright 2004-2020 Will Robertson, LPPL "maintainer"
-% Copyright 2009-2015 Khaled Hosny
-% Copyright 2013 Philipp Gesang
-% Copyright 2013-2016 Joseph Wright
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% ©/
diff --git a/macros/latex/contrib/fontspec/fontspec-code-feat-aat.dtx b/macros/latex/contrib/fontspec/fontspec-code-feat-aat.dtx
deleted file mode 100644
index cf9736c035..0000000000
--- a/macros/latex/contrib/fontspec/fontspec-code-feat-aat.dtx
+++ /dev/null
@@ -1,243 +0,0 @@
-%%^^A%% fontspec-code-feat-aat.dtx -- part of FONTSPEC <wspr.io/fontspec>
-
-% \section{AAT feature definitions}
-%
-% These are only defined for \XeTeX.
-%
-% \iffalse
-% \begin{macrocode}
-%<*fontspec&XE>
-% \end{macrocode}
-% \fi
-
-% \subsection{Ligatures}
-% \begin{macrocode}
-\@@_define_aat_feature_group:n {Ligatures}
-\@@_define_aat_feature:nnnn {Ligatures} {Required} {1} {0}
-\@@_define_aat_feature:nnnn {Ligatures} {NoRequired} {1} {1}
-\@@_define_aat_feature:nnnn {Ligatures} {Common} {1} {2}
-\@@_define_aat_feature:nnnn {Ligatures} {NoCommon} {1} {3}
-\@@_define_aat_feature:nnnn {Ligatures} {Rare} {1} {4}
-\@@_define_aat_feature:nnnn {Ligatures} {NoRare} {1} {5}
-\@@_define_aat_feature:nnnn {Ligatures} {Discretionary} {1} {4}
-\@@_define_aat_feature:nnnn {Ligatures} {NoDiscretionary} {1} {5}
-\@@_define_aat_feature:nnnn {Ligatures} {Logos} {1} {6}
-\@@_define_aat_feature:nnnn {Ligatures} {NoLogos} {1} {7}
-\@@_define_aat_feature:nnnn {Ligatures} {Rebus} {1} {8}
-\@@_define_aat_feature:nnnn {Ligatures} {NoRebus} {1} {9}
-\@@_define_aat_feature:nnnn {Ligatures} {Diphthong} {1} {10}
-\@@_define_aat_feature:nnnn {Ligatures} {NoDiphthong} {1} {11}
-\@@_define_aat_feature:nnnn {Ligatures} {Squared} {1} {12}
-\@@_define_aat_feature:nnnn {Ligatures} {NoSquared} {1} {13}
-\@@_define_aat_feature:nnnn {Ligatures} {AbbrevSquared} {1} {14}
-\@@_define_aat_feature:nnnn {Ligatures} {NoAbbrevSquared} {1} {15}
-\@@_define_aat_feature:nnnn {Ligatures} {Icelandic} {1} {32}
-\@@_define_aat_feature:nnnn {Ligatures} {NoIcelandic} {1} {33}
-% \end{macrocode}
-% Emulate CM extra ligatures.
-% \begin{macrocode}
-\keys_define:nn {fontspec-aat}
- {
- Ligatures / TeX .code:n =
- {
- \tl_set:Nn \l_@@_mapping_tl { tex-text }
- }
- }
-% \end{macrocode}
-%
-% \subsection{Letters}
-% \begin{macrocode}
-\@@_define_aat_feature_group:n {Letters}
-\@@_define_aat_feature:nnnn {Letters} {Normal} {3} {0}
-\@@_define_aat_feature:nnnn {Letters} {Uppercase} {3} {1}
-\@@_define_aat_feature:nnnn {Letters} {Lowercase} {3} {2}
-\@@_define_aat_feature:nnnn {Letters} {SmallCaps} {3} {3}
-\@@_define_aat_feature:nnnn {Letters} {InitialCaps} {3} {4}
-% \end{macrocode}
-%
-% \subsection{Numbers}
-%
-% These were originally separated into \feat{NumberCase} and
-% \feat{NumberSpacing} following \AAT, but it makes more sense to
-% combine them.
-%
-% Both naming conventions are offered to select the number case.
-%
-% \begin{macrocode}
-\@@_define_aat_feature_group:n {Numbers}
-\@@_define_aat_feature:nnnn {Numbers} {Monospaced} {6} {0}
-\@@_define_aat_feature:nnnn {Numbers} {Proportional} {6} {1}
-\@@_define_aat_feature:nnnn {Numbers} {Lowercase} {21} {0}
-\@@_define_aat_feature:nnnn {Numbers} {OldStyle} {21} {0}
-\@@_define_aat_feature:nnnn {Numbers} {Uppercase} {21} {1}
-\@@_define_aat_feature:nnnn {Numbers} {Lining} {21} {1}
-\@@_define_aat_feature:nnnn {Numbers} {SlashedZero} {14} {5}
-\@@_define_aat_feature:nnnn {Numbers} {NoSlashedZero} {14} {4}
-% \end{macrocode}
-%
-% \subsection{Contextuals}
-% \begin{macrocode}
-\@@_define_aat_feature_group:n {Contextuals}
-\@@_define_aat_feature:nnnn {Contextuals} {WordInitial} {8} {0}
-\@@_define_aat_feature:nnnn {Contextuals} {NoWordInitial} {8} {1}
-\@@_define_aat_feature:nnnn {Contextuals} {WordFinal} {8} {2}
-\@@_define_aat_feature:nnnn {Contextuals} {NoWordFinal} {8} {3}
-\@@_define_aat_feature:nnnn {Contextuals} {LineInitial} {8} {4}
-\@@_define_aat_feature:nnnn {Contextuals} {NoLineInitial} {8} {5}
-\@@_define_aat_feature:nnnn {Contextuals} {LineFinal} {8} {6}
-\@@_define_aat_feature:nnnn {Contextuals} {NoLineFinal} {8} {7}
-\@@_define_aat_feature:nnnn {Contextuals} {Inner} {8} {8}
-\@@_define_aat_feature:nnnn {Contextuals} {NoInner} {8} {9}
-% \end{macrocode}
-%
-% \subsection{Diacritics}
-% \begin{macrocode}
-\@@_define_aat_feature_group:n {Diacritics}
-\@@_define_aat_feature:nnnn {Diacritics} {Show} {9} {0}
-\@@_define_aat_feature:nnnn {Diacritics} {Hide} {9} {1}
-\@@_define_aat_feature:nnnn {Diacritics} {Decompose} {9} {2}
-% \end{macrocode}
-%
-%
-% \subsection{Vertical position}
-% \begin{macrocode}
-\@@_define_aat_feature_group:n {VerticalPosition}
-\@@_define_aat_feature:nnnn {VerticalPosition} {Normal} {10} {0}
-\@@_define_aat_feature:nnnn {VerticalPosition} {Superior} {10} {1}
-\@@_define_aat_feature:nnnn {VerticalPosition} {Inferior} {10} {2}
-\@@_define_aat_feature:nnnn {VerticalPosition} {Ordinal} {10} {3}
-% \end{macrocode}
-%
-% \subsection{Fractions}
-% \begin{macrocode}
-\@@_define_aat_feature_group:n {Fractions}
-\@@_define_aat_feature:nnnn {Fractions} {On} {11} {1}
-\@@_define_aat_feature:nnnn {Fractions} {Off} {11} {0}
-\@@_define_aat_feature:nnnn {Fractions} {Diagonal} {11} {2}
-% \end{macrocode}
-%
-% \subsection{Alternate}
-% \begin{macrocode}
-\@@_define_aat_feature_group:n { Alternate }
-\keys_define:nn {fontspec-aat}
- {
- Alternate .default:n = {0} ,
- Alternate / unknown .code:n =
- {
- \clist_map_inline:nn {#1}
- {
- \@@_make_AAT_feature:nn {17}{##1}
- }
- }
- }
-% \end{macrocode}
-%
-%
-% \subsection{Variant / StylisticSet}
-% \begin{macrocode}
-\@@_define_aat_feature_group:n {Variant}
-\keys_define:nn {fontspec-aat}
- {
- Variant .default:n = {0} ,
- Variant / unknown .code:n =
- {
- \clist_map_inline:nn {#1}
- { \@@_make_AAT_feature:nn {18}{##1} }
- }
- }
-\aliasfontfeature{Variant}{StylisticSet}
-% \end{macrocode}
-%
-%
-%
-% \begin{macrocode}
-\@@_define_aat_feature_group:n {Vertical}
-\keys_define:nn {fontspec-aat}
- {
- Vertical .choice: ,
- Vertical / RotatedGlyphs .code:n =
- {
- \__fontspec_update_featstr:n {vertical}
- }
- }
-% \end{macrocode}
-%
-%
-% \subsection{Style}
-% \begin{macrocode}
-\@@_define_aat_feature_group:n {Style}
-\@@_define_aat_feature:nnnn {Style} {Italic} {32} {2}
-\@@_define_aat_feature:nnnn {Style} {Ruby} {28} {2}
-\@@_define_aat_feature:nnnn {Style} {Display} {19} {1}
-\@@_define_aat_feature:nnnn {Style} {Engraved} {19} {2}
-\@@_define_aat_feature:nnnn {Style} {Titling} {19} {4}
-\@@_define_aat_feature:nnnn {Style} {TitlingCaps} {19} {4} % backwards compat
-\@@_define_aat_feature:nnnn {Style} {TallCaps} {19} {5}
-% \end{macrocode}
-%
-% \subsection{CJK shape}
-% \begin{macrocode}
-\@@_define_aat_feature_group:n {CJKShape}
-\@@_define_aat_feature:nnnn {CJKShape} {Traditional} {20} {0}
-\@@_define_aat_feature:nnnn {CJKShape} {Simplified} {20} {1}
-\@@_define_aat_feature:nnnn {CJKShape} {JIS1978} {20} {2}
-\@@_define_aat_feature:nnnn {CJKShape} {JIS1983} {20} {3}
-\@@_define_aat_feature:nnnn {CJKShape} {JIS1990} {20} {4}
-\@@_define_aat_feature:nnnn {CJKShape} {Expert} {20} {10}
-\@@_define_aat_feature:nnnn {CJKShape} {NLC} {20} {13}
-% \end{macrocode}
-%
-% \subsection{Character width}
-% \begin{macrocode}
-\@@_define_aat_feature_group:n {CharacterWidth}
-\@@_define_aat_feature:nnnn {CharacterWidth} {Proportional} {22} {0}
-\@@_define_aat_feature:nnnn {CharacterWidth} {Full} {22} {1}
-\@@_define_aat_feature:nnnn {CharacterWidth} {Half} {22} {2}
-\@@_define_aat_feature:nnnn {CharacterWidth} {Third} {22} {3}
-\@@_define_aat_feature:nnnn {CharacterWidth} {Quarter} {22} {4}
-\@@_define_aat_feature:nnnn {CharacterWidth} {AlternateProportional} {22} {5}
-\@@_define_aat_feature:nnnn {CharacterWidth} {AlternateHalf} {22} {6}
-\@@_define_aat_feature:nnnn {CharacterWidth} {Default} {22} {7}
-% \end{macrocode}
-%
-% \subsection{Annotation}
-% \begin{macrocode}
-\@@_define_aat_feature_group:n {Annotation}
-\@@_define_aat_feature:nnnn {Annotation} {Off} {24} {0}
-\@@_define_aat_feature:nnnn {Annotation} {Box} {24} {1}
-\@@_define_aat_feature:nnnn {Annotation} {RoundedBox} {24} {2}
-\@@_define_aat_feature:nnnn {Annotation} {Circle} {24} {3}
-\@@_define_aat_feature:nnnn {Annotation} {BlackCircle} {24} {4}
-\@@_define_aat_feature:nnnn {Annotation} {Parenthesis} {24} {5}
-\@@_define_aat_feature:nnnn {Annotation} {Period} {24} {6}
-\@@_define_aat_feature:nnnn {Annotation} {RomanNumerals} {24} {7}
-\@@_define_aat_feature:nnnn {Annotation} {Diamond} {24} {8}
-\@@_define_aat_feature:nnnn {Annotation} {BlackSquare} {24} {9}
-\@@_define_aat_feature:nnnn {Annotation} {BlackRoundSquare} {24} {10}
-\@@_define_aat_feature:nnnn {Annotation} {DoubleCircle} {24} {11}
-% \end{macrocode}
-%
-% \iffalse
-% \begin{macrocode}
-%</fontspec&XE>
-% \end{macrocode}
-% \fi
-
-
-
-\endinput
-
-% /©
-% ------------------------------------------------
-% The FONTSPEC package <wspr.io/fontspec>
-% ------------------------------------------------
-% Copyright 2004-2020 Will Robertson, LPPL "maintainer"
-% Copyright 2009-2015 Khaled Hosny
-% Copyright 2013 Philipp Gesang
-% Copyright 2013-2016 Joseph Wright
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% ©/
diff --git a/macros/latex/contrib/fontspec/fontspec-code-feat-opentype.dtx b/macros/latex/contrib/fontspec/fontspec-code-feat-opentype.dtx
deleted file mode 100644
index 77d431ccf8..0000000000
--- a/macros/latex/contrib/fontspec/fontspec-code-feat-opentype.dtx
+++ /dev/null
@@ -1,583 +0,0 @@
-%%^^A%% fontspec-code-feat-opentype.dtx -- part of FONTSPEC <wspr.io/fontspec>
-
-% \section{OpenType feature definitions}
-%
-% \iffalse
-% \begin{macrocode}
-%<*fontspec>
-% \end{macrocode}
-% \fi
-%
-%
-% \begin{macrocode}
-\@@_feat_prop_add:nn {salt} { Alternate\,=\,$N$ }
-\@@_feat_prop_add:nn {nalt} { Annotation\,=\,$N$ }
-\@@_feat_prop_add:nn {ornm} { Ornament\,=\,$N$ }
-\@@_feat_prop_add:nn {cvNN} { CharacterVariant\,=\,$N$:$M$ }
-\@@_feat_prop_add:nn {ssNN} { StylisticSet\,=\,$N$ }
-% \end{macrocode}
-%
-% \section{Regular key=val / tag definitions}
-%
-% \subsection{Ligatures}
-% \begin{macrocode}
-\@@_define_opentype_feature_group:n {Ligatures}
-\@@_define_opentype_feature:nnnnn {Ligatures} {ResetAll} {} {}
- {
- +dlig,-dlig,+rlig,-rlig,+liga,-liga,+dlig,-dlig,+clig,-clig,+hlig,-hlig,
-%<XE> mapping = tex-text
-%<LU> +tlig,-tlig
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\@@_define_opentype_onoffreset:nnnnn {Ligatures} {Required} {rlig} {rlig} {}
-\@@_define_opentype_onoffreset:nnnnn {Ligatures} {Common} {liga} {liga} {}
-\@@_define_opentype_onoffreset:nnnnn {Ligatures} {Rare} {dlig} {dlig} {}
-\@@_define_opentype_onoffreset:nnnnn {Ligatures} {Discretionary} {dlig} {dlig} {}
-\@@_define_opentype_onoffreset:nnnnn {Ligatures} {Contextual} {clig} {clig} {}
-\@@_define_opentype_onoffreset:nnnnn {Ligatures} {Historic} {hlig} {hlig} {}
-% \end{macrocode}
-% Emulate CM extra ligatures.
-% \begin{macrocode}
-%<*XE>
-\keys_define:nn {fontspec-opentype}
- {
- Ligatures / TeX .code:n = { \tl_set:Nn \l_@@_mapping_tl {tex-text} },
- Ligatures / TeXOff .code:n = { \tl_clear:N \l_@@_mapping_tl },
- Ligatures / TeXReset .code:n = { \tl_clear:N \l_@@_mapping_tl },
- }
-%</XE>
-%<LU>\@@_define_opentype_onoffreset:nnnnn {Ligatures} {TeX} {} {tlig} {}
-% \end{macrocode}
-%
-% \subsection{Letters}
-% \begin{macrocode}
-\@@_define_opentype_feature_group:n {Letters}
-\@@_define_opentype_feature:nnnnn {Letters} {ResetAll} {} {}
- {
- +case,+smcp,+pcap,+c2sc,+c2pc,+unic,+rand,
- -case,-smcp,-pcap,-c2sc,-c2pc,-unic,-rand
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\@@_define_opentype_onoffreset:nnnnn {Letters} {Uppercase} {case} {case} {}
-\@@_define_opentype_onoffreset:nnnnn {Letters} {SmallCaps} {smcp} {smcp} {+pcap,+unic}
-\@@_define_opentype_onoffreset:nnnnn {Letters} {PetiteCaps} {pcap} {pcap} {+smcp,+unic}
-\@@_define_opentype_onoffreset:nnnnn {Letters} {UppercaseSmallCaps} {c2sc} {c2sc} {+c2pc,+unic}
-\@@_define_opentype_onoffreset:nnnnn {Letters} {UppercasePetiteCaps} {c2pc} {c2pc} {+c2sc,+unic}
-\@@_define_opentype_onoffreset:nnnnn {Letters} {Unicase} {unic} {unic} {}
-\@@_define_opentype_onoffreset:nnnnn {Letters} {Random} {rand} {rand} {}
-% \end{macrocode}
-%
-% \subsection{Numbers}
-% \begin{macrocode}
-\@@_define_opentype_feature_group:n {Numbers}
-\@@_define_opentype_feature:nnnnn {Numbers} {ResetAll} {} {}
- {
- +tnum,-tnum,
- +pnum,-pnum,
- +onum,-onum,
- +lnum,-lnum,
- +zero,-zero,
- +anum,-anum,
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\@@_define_opentype_onoffreset:nnnnn {Numbers} {Monospaced} {tnum} {tnum} {+pnum,-pnum}
-\@@_define_opentype_onoffreset:nnnnn {Numbers} {Proportional} {pnum} {pnum} {+tnum,-tnum}
-\@@_define_opentype_onoffreset:nnnnn {Numbers} {Lowercase} {onum} {onum} {+lnum,-lnum}
-\@@_define_opentype_onoffreset:nnnnn {Numbers} {Uppercase} {lnum} {lnum} {+onum,-onum}
-\@@_define_opentype_onoffreset:nnnnn {Numbers} {SlashedZero} {zero} {zero} {}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\aliasfontfeatureoption {Numbers} {Monospaced} {Tabular}
-\aliasfontfeatureoption {Numbers} {Lowercase} {OldStyle}
-\aliasfontfeatureoption {Numbers} {Uppercase} {Lining}
-% \end{macrocode}
-%
-% |luaotload| provides a custom |anum| feature for replacing Latin
-% (AKA Arabic) numbers with Arabic (AKA Indic-Arabic). The same feature
-% maps to Farsi (Persian) numbers if font language is Farsi.
-% \begin{macrocode}
-%<LU> \@@_define_opentype_onoffreset:nnnnn {Numbers} {Arabic} {anum} {anum} {}
-% \end{macrocode}
-%
-% \subsection{Vertical position}
-% \begin{macrocode}
-\@@_define_opentype_feature_group:n {VerticalPosition}
-\@@_define_opentype_feature:nnnnn {VerticalPosition} {ResetAll} {} {}
- {
- +sups,-sups,
- +subs,-subs,
- +ordn,-ordn,
- +numr,-numr,
- +dnom,-dnom,
- +sinf,-sinf,
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\@@_define_opentype_onoffreset:nnnnn {VerticalPosition} {Superior} {sups} {sups} {+subs,+ordn,+numr,+dnom,+sinf}
-\@@_define_opentype_onoffreset:nnnnn {VerticalPosition} {Inferior} {subs} {subs} {+sups,+ordn,+numr,+dnom,+sinf}
-\@@_define_opentype_onoffreset:nnnnn {VerticalPosition} {Ordinal} {ordn} {ordn} {+sups,+subs,+numr,+dnom,+sinf}
-\@@_define_opentype_onoffreset:nnnnn {VerticalPosition} {Numerator} {numr} {numr} {+sups,+subs,+ordn,+dnom,+sinf}
-\@@_define_opentype_onoffreset:nnnnn {VerticalPosition} {Denominator} {dnom} {dnom} {+sups,+subs,+ordn,+numr,+sinf}
-\@@_define_opentype_onoffreset:nnnnn {VerticalPosition} {ScientificInferior} {sinf} {sinf} {+sups,+subs,+ordn,+numr,+dnom}
-% \end{macrocode}
-%
-% \subsection{Contextuals}
-% \begin{macrocode}
-\@@_define_opentype_feature_group:n {Contextuals}
-\@@_define_opentype_feature:nnnnn {Contextuals} {ResetAll} {} {}
- {
- +cswh,-cswh,
- +calt,-calt,
- +init,-init,
- +fina,-fina,
- +falt,-falt,
- +medi,-medi,
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\@@_define_opentype_onoffreset:nnnnn {Contextuals} {Swash} {cswh} {cswh} {}
-\@@_define_opentype_onoffreset:nnnnn {Contextuals} {Alternate} {calt} {calt} {}
-\@@_define_opentype_onoffreset:nnnnn {Contextuals} {WordInitial} {init} {init} {}
-\@@_define_opentype_onoffreset:nnnnn {Contextuals} {WordFinal} {fina} {fina} {}
-\@@_define_opentype_onoffreset:nnnnn {Contextuals} {LineFinal} {falt} {falt} {}
-\@@_define_opentype_onoffreset:nnnnn {Contextuals} {Inner} {medi} {medi} {}
-% \end{macrocode}
-%
-% \subsection{Diacritics}
-% \begin{macrocode}
-\@@_define_opentype_feature_group:n {Diacritics}
-\@@_define_opentype_feature:nnnnn {Diacritics} {ResetAll} {} {}
- {
- +mark,-mark,
- +mkmk,-mkmk,
- +abvm,-abvm,
- +blwm,-blwm,
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\@@_define_opentype_onoffreset:nnnnn {Diacritics} {MarkToBase} {mark} {mark} {}
-\@@_define_opentype_onoffreset:nnnnn {Diacritics} {MarkToMark} {mkmk} {mkmk} {}
-\@@_define_opentype_onoffreset:nnnnn {Diacritics} {AboveBase} {abvm} {abvm} {}
-\@@_define_opentype_onoffreset:nnnnn {Diacritics} {BelowBase} {blwm} {blwm} {}
-% \end{macrocode}
-%
-% \subsection{Kerning}
-% \begin{macrocode}
-\@@_define_opentype_feature_group:n {Kerning}
-\@@_define_opentype_feature:nnnnn {Kerning} {ResetAll} {} {}
- {
- +cpsp,-cpsp,
- +kern,-kern,
- }
-\@@_define_opentype_onoffreset:nnnnn {Kerning} {Uppercase} {cpsp} {cpsp} {}
-\@@_define_opentype_feature:nnnnn {Kerning} {On} {kern} {+kern} {-kern}
-\@@_define_opentype_feature:nnnnn {Kerning} {Off} {kern} {-kern} {+kern}
-\@@_define_opentype_feature:nnnnn {Kerning} {Reset} {} {} {+kern,-kern}
-% \end{macrocode}
-%
-% \subsection{Fractions}
-% \begin{macrocode}
-\@@_define_opentype_feature_group:n {Fractions}
-\@@_define_opentype_feature:nnnnn {Fractions} {ResetAll} {} {}
- {
- +frac,-frac,
- +afrc,-afrc,
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\@@_define_opentype_feature:nnnnn {Fractions} {On} {frac} {+frac} {}
-\@@_define_opentype_feature:nnnnn {Fractions} {Off} {frac} {-frac} {}
-\@@_define_opentype_feature:nnnnn {Fractions} {Reset} {} {} {+frac,-frac}
-\@@_define_opentype_onoffreset:nnnnn {Fractions} {Alternate} {afrc} {afrc} {-frac}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\@@_define_opentype_feature_group:n {LocalForms}
-\@@_define_opentype_feature:nnnnn {LocalForms} {On} {locl} {+locl} {}
-\@@_define_opentype_feature:nnnnn {LocalForms} {Off} {locl} {-locl} {}
-\@@_define_opentype_feature:nnnnn {LocalForms} {Reset} {} {} {+locl,-locl}
-% \end{macrocode}
-%
-
-% \subsection{Style}
-% \begin{macrocode}
-\@@_define_opentype_feature_group:n {Style}
-\@@_define_opentype_feature:nnnnn {Style} {ResetAll} {} {}
- {
- +salt,-salt,
- +ital,-ital,
- +ruby,-ruby,
- +swsh,-swsh,
- +hist,-hist,
- +titl,-titl,
- +hkna,-hkna,
- +vkna,-vkna,
- +ssty=0,-ssty=0,
- +ssty=1,-ssty=1,
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\@@_define_opentype_onoffreset:nnnnn {Style} {Alternate} {salt} {salt} {}
-\@@_define_opentype_onoffreset:nnnnn {Style} {Italic} {ital} {ital} {}
-\@@_define_opentype_onoffreset:nnnnn {Style} {Ruby} {ruby} {ruby} {}
-\@@_define_opentype_onoffreset:nnnnn {Style} {Swash} {swsh} {swsh} {}
-\@@_define_opentype_onoffreset:nnnnn {Style} {Cursive} {swsh} {curs} {}
-\@@_define_opentype_onoffreset:nnnnn {Style} {Historic} {hist} {hist} {}
-\@@_define_opentype_onoffreset:nnnnn {Style} {Titling} {titl} {titl} {}
-\@@_define_opentype_onoffreset:nnnnn {Style} {TitlingCaps} {titl} {titl} {} % backwards compat
-\@@_define_opentype_onoffreset:nnnnn {Style} {HorizontalKana} {hkna} {hkna} {+vkna,+pkna}
-\@@_define_opentype_onoffreset:nnnnn {Style} {VerticalKana} {vkna} {vkna} {+hkna,+pkna}
-\@@_define_opentype_onoffreset:nnnnn {Style} {ProportionalKana} {pkna} {pkna} {+vkna,+hkna}
-\@@_define_opentype_feature:nnnnn {Style} {MathScript} {ssty} {+ssty=0} {+ssty=1}
-\@@_define_opentype_feature:nnnnn {Style} {MathScriptScript} {ssty} {+ssty=1} {+ssty=0}
-\@@_define_opentype_onoffreset:nnnnn {Style} {Uppercase} {case} {case} {}
-% \end{macrocode}
-%
-% \subsection{CJK shape}
-% \begin{macrocode}
-\@@_define_opentype_feature_group:n {CJKShape}
-\@@_define_opentype_feature:nnnnn {CJKShape} {ResetAll} {} {}
- {
- +trad,-trad,
- +smpl,-smpl,
- +jp78,-jp78,
- +jp83,-jp83,
- +jp90,-jp90,
- +jp04,-jp04,
- +expt,-expt,
- +nlck,-nlck,
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\@@_define_opentype_onoffreset:nnnnn {CJKShape} {Traditional} {trad} {trad} {+smpl,+jp78,+jp83,+jp90,+jp04,+expt,+nlck}
-\@@_define_opentype_onoffreset:nnnnn {CJKShape} {Simplified} {smpl} {smpl} {+trad,+jp78,+jp83,+jp90,+jp04,+expt,+nlck}
-\@@_define_opentype_onoffreset:nnnnn {CJKShape} {JIS1978} {jp78} {jp78} {+trad,+smpl,+jp83,+jp90,+jp04,+expt,+nlck}
-\@@_define_opentype_onoffreset:nnnnn {CJKShape} {JIS1983} {jp83} {jp83} {+trad,+smpl,+jp78,+jp90,+jp04,+expt,+nlck}
-\@@_define_opentype_onoffreset:nnnnn {CJKShape} {JIS1990} {jp90} {jp90} {+trad,+smpl,+jp78,+jp83,+jp04,+expt,+nlck}
-\@@_define_opentype_onoffreset:nnnnn {CJKShape} {JIS2004} {jp04} {jp04} {+trad,+smpl,+jp78,+jp83,+jp90,+expt,+nlck}
-\@@_define_opentype_onoffreset:nnnnn {CJKShape} {Expert} {expt} {expt} {+trad,+smpl,+jp78,+jp83,+jp90,+jp04,+nlck}
-\@@_define_opentype_onoffreset:nnnnn {CJKShape} {NLC} {nlck} {nlck} {+trad,+smpl,+jp78,+jp83,+jp90,+jp04,+expt}
-% \end{macrocode}
-%
-% \subsection{Character width}
-% \begin{macrocode}
-\@@_define_opentype_feature_group:n {CharacterWidth}
-\@@_define_opentype_feature:nnnnn {CharacterWidth} {ResetAll} {} {}
- {
- +pwid,-pwid,
- +fwid,-fwid,
- +hwid,-hwid,
- +twid,-twid,
- +qwid,-qwid,
- +palt,-palt,
- +halt,-halt,
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\@@_define_opentype_onoffreset:nnnnn {CharacterWidth} {Proportional} {pwid} {pwid} {+fwid,+hwid,+twid,+qwid,+palt,+halt}
-\@@_define_opentype_onoffreset:nnnnn {CharacterWidth} {Full} {fwid} {fwid} {+pwid,+hwid,+twid,+qwid,+palt,+halt}
-\@@_define_opentype_onoffreset:nnnnn {CharacterWidth} {Half} {hwid} {hwid} {+pwid,+fwid,+twid,+qwid,+palt,+halt}
-\@@_define_opentype_onoffreset:nnnnn {CharacterWidth} {Third} {twid} {twid} {+pwid,+fwid,+hwid,+qwid,+palt,+halt}
-\@@_define_opentype_onoffreset:nnnnn {CharacterWidth} {Quarter} {qwid} {qwid} {+pwid,+fwid,+hwid,+twid,+palt,+halt}
-\@@_define_opentype_onoffreset:nnnnn {CharacterWidth} {AlternateProportional} {palt} {palt} {+pwid,+fwid,+hwid,+twid,+qwid,+halt}
-\@@_define_opentype_onoffreset:nnnnn {CharacterWidth} {AlternateHalf} {halt} {halt} {+pwid,+fwid,+hwid,+twid,+qwid,+palt}
-% \end{macrocode}
-%
-% \subsection{Vertical}
-% According to spec |vkrn| must also activate |vpal| if available but for simplicity we don't do that here (yet?).
-% \begin{macrocode}
-\@@_define_opentype_feature_group:n {Vertical}
-\@@_define_opentype_onoffreset:nnnnn {Vertical} {RotatedGlyphs} {vrt2} {vrt2} {+vrtr,+vert}
-\@@_define_opentype_onoffreset:nnnnn {Vertical} {AlternatesForRotation} {vrtr} {vrtr} {+vrt2}
-\@@_define_opentype_onoffreset:nnnnn {Vertical} {Alternates} {vert} {vert} {+vrt2}
-\@@_define_opentype_onoffreset:nnnnn {Vertical} {KanaAlternates} {vkna} {vkna} {+hkna}
-\@@_define_opentype_onoffreset:nnnnn {Vertical} {Kerning} {vkrn} {vkrn} {}
-\@@_define_opentype_onoffreset:nnnnn {Vertical} {AlternateMetrics} {valt} {valt} {+vhal,+vpal,+kern}
-\@@_define_opentype_onoffreset:nnnnn {Vertical} {HalfMetrics} {vhal} {vhal} {+valt,+vpal,+kern}
-\@@_define_opentype_onoffreset:nnnnn {Vertical} {ProportionalMetrics} {vpal} {vpal} {+valt,+vhal}
-% \end{macrocode}
-%
-%
-%
-%
-% \section{OpenType features that need numbering}
-%
-% \subsection{Alternate}
-%
-% \begin{macrocode}
-\@@_define_opentype_feature_group:n {Alternate}
-\keys_define:nn {fontspec-opentype}
- {
- Alternate .default:n = {0} ,
- Alternate .groups:n = {opentype},
- Alternate / unknown .code:n =
- {
- \clist_map_inline:nn {#1}
- { \@@_make_OT_feature:nnn {salt}{ +salt = ##1 }{} }
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-%<*LU>
-\keys_define:nn {fontspec-opentype}
- {
- Alternate / Random .code:n =
- { \@@_make_OT_feature:nnn {salt}{ +salt = random }{} } ,
- }
-%</LU>
-% \end{macrocode}
-%
-% \begin{macrocode}
-\aliasfontfeature{Alternate}{StylisticAlternates}
-% \end{macrocode}
-%
-%
-% \subsection{Variant / StylisticSet}
-%
-% \begin{macrocode}
-\@@_define_opentype_feature_group:n {Variant}
-\keys_define:nn {fontspec-opentype}
- {
- Variant .default:n = {0} ,
- Variant .groups:n = {opentype} ,
- Variant / unknown .code:n =
- {
- \clist_map_inline:nn {#1}
- {
- \@@_make_OT_feature:xxx { ss \two@digits {##1} } { +ss \two@digits {##1} } {}
- }
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\aliasfontfeature{Variant}{StylisticSet}
-% \end{macrocode}
-%
-% \subsection{CharacterVariant}
-% \begin{macrocode}
-\@@_define_opentype_feature_group:n {CharacterVariant}
-\use:x
- {
- \cs_new:Npn \exp_not:N \fontspec_parse_cv:w
- ##1 \c_colon_str ##2 \c_colon_str ##3 \exp_not:N \q_nil
- {
- \@@_make_OT_feature:xxx
- { cv \exp_not:N \two@digits {##1} }
- { +cv \exp_not:N \two@digits {##1} = ##2 } {}
- }
- \keys_define:nn {fontspec-opentype}
- {
- CharacterVariant / unknown .code:n =
- {
- \clist_map_inline:nn {##1}
- {
- \exp_not:N \fontspec_parse_cv:w
- ####1 \c_colon_str 0 \c_colon_str \exp_not:N \q_nil
- }
- }
- }
- }
-% \end{macrocode}
-% Possibilities: \verb|a:0:\q_nil| or \verb|a:b:0:\q_nil|.
-%
-%
-% \subsection{Annotation}
-% \begin{macrocode}
-\@@_define_opentype_feature_group:n {Annotation}
-\keys_define:nn {fontspec-opentype}
- {
- Annotation .default:n = {0} ,
- Annotation .groups:n = {opentype},
- Annotation / unknown .code:n =
- {
- \@@_make_OT_feature:nnn {nalt} {+nalt=#1} {}
- }
- }
-% \end{macrocode}
-%
-% \subsection{Ornament}
-%
-% \begin{macrocode}
-\@@_define_opentype_feature_group:n {Ornament}
-\keys_define:nn {fontspec-opentype}
- {
- Ornament .default:n = {0} ,
- Ornament .groups:n = {opentype},
- Ornament / unknown .code:n =
- {
- \@@_make_OT_feature:nnn {ornm} { +ornm=#1 } {}
- }
- }
-% \end{macrocode}
-%
-%
-% \section{Script and Language}
-%
-%
-% \subsection{Script}
-%
-% \begin{macrocode}
-\keys_define:nn {fontspec-opentype}
- {
- Script .choice: ,
- Script .groups:n = {opentype} ,
- }
-\cs_new:Nn \fontspec_new_script:nn
- {
- \keys_define:nn {fontspec-opentype} { Script / #1 .code:n =
- {
-%<debug>\typeout{Trying~[Script=#1]}
- \bool_set_false:N \l_@@_scriptlang_exist_bool
- \clist_map_inline:nn {#2}
- {
- \exp_args:No \@@_check_script:NnT \l_@@_fontface_cs_tl {####1}
- {
-%<debug>\typeout{Script~tag~found:~####1}
- \tl_set:Nn \l_@@_script_name_tl {#1}
- \tl_set:Nn \l_@@_script_tl {####1}
- \int_set:Nn \l_@@_script_int {\l_@@_strnum_int}
- \bool_set_true:N \l_@@_scriptlang_exist_bool
- \tl_gset:Nx \g_@@_single_feat_tl { script=####1 }
- \clist_map_break:
- }
- }
-
- \bool_if:NF \l_@@_scriptlang_exist_bool
- {
-%<debug>\typeout{Script~not~found!}
- \bool_if:nF { \str_if_eq_p:ee {#1} {CustomDefault} }
- {
- \tl_clear:N \l_@@_script_name_tl
- \@@_warning:nxx {no-script} {\l_fontspec_fontname_tl} {#1}
- }
-
- \bool_if:nF
- {
- \str_if_eq_p:ee {#1} {Default} ||
- \str_if_eq_p:ee {#1} {Latin} ||
- \str_if_eq_p:ee {#1} {CustomDefault}
- }
- {
- \keys_set:nn {fontspec-opentype} { Script = CustomDefault }
- }
- }
- }
- }
- }
-% \end{macrocode}
-%
-%
-% \subsection{Language}
-%
-% \begin{macrocode}
-\keys_define:nn {fontspec-opentype}
- {
- Language .choice: ,
- Language .groups:n = {opentype} ,
- }
-\cs_new:Nn \fontspec_new_lang:nn
- {
- \keys_define:nn {fontspec-opentype} { Language / #1 .code:n =
- {
- \bool_set_false:N \l_@@_scriptlang_exist_bool
- \clist_map_inline:nn {#2}
- {
- \exp_args:No \@@_check_lang:NnTF \l_@@_fontface_cs_tl {####1}
- {
- \tl_set:Nn \l_@@_lang_tl {####1}
- \int_set:Nn \l_@@_language_int {\l_@@_strnum_int}
- \tl_gset:Nx \g_@@_single_feat_tl { language=####1 }
- \bool_set_true:N \l_@@_scriptlang_exist_bool
- \clist_map_break:
- }
- }
- \bool_if:NF \l_@@_scriptlang_exist_bool
- {
- \@@_warning:nx {language-not-exist} {#1}
- \keys_set:nn {fontspec-opentype} { Language = Default }
- }
- }
- }
- }
-% \end{macrocode}
-%
-% \paragraph{Language=Default}
-% These are special-cased to avoid the additional logic above.
-% From memory, the OpenType default
-% language is hardcoded to have a zero value,
-% although this might be some \XeTeX-specific thing.
-% \begin{macrocode}
-\@@_keys_define_code:nnn {fontspec-opentype} { Language / Default }
- {
- \tl_set:Nn \l_@@_lang_tl {dflt}
- \int_zero:N \l_@@_language_int
- \tl_gset:Nn \g_@@_single_feat_tl { language=dflt }
- }
-% \end{macrocode}
-%
-%
-% \section{Backwards compatibility}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_ot_compat:nn
- {
- \aliasfontfeatureoption {#1} {#2Off} {No#2}
- }
-\@@_ot_compat:nn {Ligatures} {Rare}
-\@@_ot_compat:nn {Ligatures} {Required}
-\@@_ot_compat:nn {Ligatures} {Common}
-\@@_ot_compat:nn {Ligatures} {Discretionary}
-\@@_ot_compat:nn {Ligatures} {Contextual}
-\@@_ot_compat:nn {Ligatures} {Historic}
-\@@_ot_compat:nn {Numbers} {SlashedZero}
-\@@_ot_compat:nn {Contextuals} {Swash}
-\@@_ot_compat:nn {Contextuals} {Alternate}
-\@@_ot_compat:nn {Contextuals} {WordInitial}
-\@@_ot_compat:nn {Contextuals} {WordFinal}
-\@@_ot_compat:nn {Contextuals} {LineFinal}
-\@@_ot_compat:nn {Contextuals} {Inner}
-\@@_ot_compat:nn {Diacritics} {MarkToBase}
-\@@_ot_compat:nn {Diacritics} {MarkToMark}
-\@@_ot_compat:nn {Diacritics} {AboveBase}
-\@@_ot_compat:nn {Diacritics} {BelowBase}
-% \end{macrocode}
-%
-% \iffalse
-% \begin{macrocode}
-%</fontspec>
-% \end{macrocode}
-% \fi
-
-
-\endinput
-
-% /©
-% ------------------------------------------------
-% The FONTSPEC package <wspr.io/fontspec>
-% ------------------------------------------------
-% Copyright 2004-2020 Will Robertson, LPPL "maintainer"
-% Copyright 2009-2015 Khaled Hosny
-% Copyright 2013 Philipp Gesang
-% Copyright 2013-2016 Joseph Wright
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% ©/
diff --git a/macros/latex/contrib/fontspec/fontspec-code-fontload.dtx b/macros/latex/contrib/fontspec/fontspec-code-fontload.dtx
deleted file mode 100644
index ac403028e1..0000000000
--- a/macros/latex/contrib/fontspec/fontspec-code-fontload.dtx
+++ /dev/null
@@ -1,136 +0,0 @@
-%%^^A%% fontspec-code-fontload.dtx -- part of FONTSPEC <wspr.io/fontspec>
-
-% \section{expl3 interface for primitive font loading}
-%
-% \iffalse
-% \begin{macrocode}
-%<*fontspec>
-% \end{macrocode}
-% \fi
-%
-% \begin{macro}{\@@_primitive_font_set:Nnn,\@@_primitive_font_gset:Nnn}
-% \begin{macrocode}
-\cs_set:Npn \@@_primitive_font_set:Nnn #1#2#3
- {
- \font #1 = #2 ~at~ \dim_eval:n {#3} \scan_stop:
- }
-% \end{macrocode}
-% \begin{macrocode}
-\cs_set:Npn \@@_primitive_font_gset:Nnn #1#2#3
- {
- \global \font #1 = #2 ~at~ \dim_eval:n {#3} \scan_stop:
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_font_suppress_not_found_error:}
-% \begin{macrocode}
-\cs_set:Npn \@@_font_suppress_not_found_error:
- {
- \int_set:Nn \suppressfontnotfounderror {1}
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}[pTF]{\@@_primitive_font_if_null:N}
-% \begin{macrocode}
-\prg_set_conditional:Nnn \@@_primitive_font_if_null:N {p,TF,T,F}
- {
- \ifx #1 \nullfont
- \prg_return_true:
- \else
- \prg_return_false:
- \fi
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}[pTF]{\@@_primitive_font_set:NnnTF,\@@_primitive_font_gset:NnnTF}
-% \begin{macrocode}
-\prg_set_conditional:Nnn \@@_primitive_font_set:Nnn {TF,T,F}
- {
- \@@_primitive_font_set:Nnn #1 {#2} {#3}
- \@@_primitive_font_if_null:NTF #1 {\prg_return_false:} {\prg_return_true:}
- }
-\prg_set_conditional:Nnn \@@_primitive_font_gset:Nnn {TF,T,F}
- {
- \@@_primitive_font_gset:Nnn #1 {#2} {#3}
- \@@_primitive_font_if_null:NTF #1 {\prg_return_false:} {\prg_return_true:}
- }
-\cs_set:Npn \@@_primitive_font_set:Onn { \exp_last_unbraced:No \@@_primitive_font_set:Nnn }
-\cs_set:Npn \@@_primitive_font_set:OnnF { \exp_last_unbraced:No \@@_primitive_font_set:NnnF }
-\cs_set:Npn \@@_primitive_font_gset:Onn { \exp_last_unbraced:No \@@_primitive_font_gset:Nnn }
-\cs_set:Npn \@@_primitive_font_gset:OnnF { \exp_last_unbraced:No \@@_primitive_font_gset:NnnF }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}[TF]{\@@_primitive_font_if_exist:n}
-% \begin{macrocode}
-\prg_set_conditional:Nnn \@@_primitive_font_if_exist:n {TF,T,F}
- {
- \group_begin:
- \@@_font_suppress_not_found_error:
- \@@_primitive_font_set:Nnn \l_@@_primitive_font {#1} { \f@size pt - 1sp }
- \@@_primitive_font_if_null:NTF \l_@@_primitive_font
- { \group_end: \prg_return_false: }
- { \group_end: \prg_return_true: }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_primitive_font_glyph_if_exist:NnTF}
-% \begin{macrocode}
-\prg_new_conditional:Nnn \@@_primitive_font_glyph_if_exist:Nn {p,TF,T,F}
- {
- \tex_iffontchar:D #1 #2 \scan_stop:
- \prg_return_true:
- \else:
- \prg_return_false:
- \fi:
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_primitive_font_set_hyphenchar:Nn}
-% \begin{macrocode}
-\cs_new:Nn \@@_primitive_font_set_hyphenchar:Nn
- {
- \tex_hyphenchar:D #1 = #2 \scan_stop:
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_primitive_font_get_name:N}
-% \begin{macro}{\@@_primitive_font_current_name:}
-% \begin{macrocode}
-\cs_new_eq:NN \@@_primitive_font_get_name:N \fontname
-\cs_new:Npn \@@_primitive_font_current_name:
- {
- \@@_primitive_font_get_name:N \tex_font:D
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \iffalse
-% \begin{macrocode}
-%</fontspec>
-% \end{macrocode}
-% \fi
-
-\endinput
-
-% /©
-% ------------------------------------------------
-% The FONTSPEC package <wspr.io/fontspec>
-% ------------------------------------------------
-% Copyright 2004-2020 Will Robertson, LPPL "maintainer"
-% Copyright 2009-2015 Khaled Hosny
-% Copyright 2013 Philipp Gesang
-% Copyright 2013-2016 Joseph Wright
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% ©/
diff --git a/macros/latex/contrib/fontspec/fontspec-code-graphite.dtx b/macros/latex/contrib/fontspec/fontspec-code-graphite.dtx
deleted file mode 100644
index c840d2af60..0000000000
--- a/macros/latex/contrib/fontspec/fontspec-code-graphite.dtx
+++ /dev/null
@@ -1,128 +0,0 @@
-%%^^A%% fontspec-code-graphite.dtx -- part of FONTSPEC <wspr.io/fontspec>
-
-% \section{Graphite/AAT code}
-%
-% \iffalse
-% \begin{macrocode}
-%<*fontspec&XE>
-% \end{macrocode}
-% \fi
-%
-
-
-% \begin{macro}{\@@_define_aat_feature_group:n}
-% \begin{macrocode}
-\cs_new:Nn \@@_define_aat_feature_group:n
- {
- \keys_define:nn {fontspec-aat} { #1 .multichoice: }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_define_aat_feature:nnnn}
-% \begin{macrocode}
-\cs_new:Nn \@@_define_aat_feature:nnnn
- {
- \keys_define:nn {fontspec-aat}
- {
- #1/#2 .code:n = { \@@_make_AAT_feature:nn {#3}{#4} }
- }
- }
-% \end{macrocode}
-% \end{macro}
-
-% \begin{macro}{\@@_make_AAT_feature:nn}
-% \begin{macrocode}
-\cs_new:Nn \@@_make_AAT_feature:nn
- {
- \tl_if_empty:nTF {#1}
- { \@@_warning:n {aat-feature-not-exist} }
- {
- \exp_args:No \@@_make_AAT_feature_string:NnnTF \l_@@_fontface_cs_tl {#1} {#2}
- {
- \@@_update_featstr:n {\l_fontspec_feature_string_tl}
- }
- {
- \@@_warning:nx {aat-feature-not-exist-in-font} {#1,#2}
- }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_make_AAT_feature_string:NnnTF}
-% This macro takes the numerical codes for a font feature and
-% creates a specified macro containing the string required in the
-% font definition to turn that feature on or off. Used primarily in
-% [...], but also used to check if small caps
-% exists in the requested font (see page~\pageref{mac:makesmallcaps}).
-%
-% For exclusive selectors, it's easy; just grab the string:
-% For \emph{non}-exclusive selectors, it's a little more complex.
-% If the selector is even, it corresponds to switching the feature on.
-% If the selector is \emph{odd}, it corresponds to switching the feature off.
-% But \XeTeX\ doesn't return a selector string for this number, since the
-% feature is defined for the `switching on' value. So we need to check the
-% selector of the previous number, and then prefix the feature string with |!|
-% to denote the switch.
-%
-% Finally, save out the complete feature string in \cmd\l_fontspec_feature_string_tl.
-% \begin{macrocode}
-\prg_new_conditional:Nnn \@@_make_AAT_feature_string:Nnn {TF,T,F}
- {
- \tl_set:Nx \l_@@_tmpa_tl { \XeTeXfeaturename #1 #2 }
- \tl_if_empty:NTF \l_@@_tmpa_tl
- { \prg_return_false: }
- {
- \int_compare:nTF { \XeTeXisexclusivefeature #1 #2 > 0 }
- {
- \tl_set:Nx \l_@@_tmpb_tl {\XeTeXselectorname #1 #2\space #3}
- }
- {
- \int_if_even:nTF {#3}
- {
- \tl_set:Nx \l_@@_tmpb_tl {\XeTeXselectorname #1 #2\space #3}
- }
- {
- \tl_set:Nx \l_@@_tmpb_tl
- {
- \XeTeXselectorname #1 #2\space \numexpr#3-1\relax
- }
- \tl_if_empty:NF \l_@@_tmpb_tl { \tl_put_left:Nn \l_@@_tmpb_tl {!} }
- }
- }
-
- \tl_if_empty:NTF \l_@@_tmpb_tl
- { \prg_return_false: }
- {
- \tl_set:Nx \l_fontspec_feature_string_tl { \l_@@_tmpa_tl = \l_@@_tmpb_tl }
- \prg_return_true:
- }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \iffalse
-% \begin{macrocode}
-%</fontspec&XE>
-% \end{macrocode}
-% \fi
-
-
-\endinput
-
-% /©
-% ------------------------------------------------
-% The FONTSPEC package <wspr.io/fontspec>
-% ------------------------------------------------
-% Copyright 2004-2020 Will Robertson, LPPL "maintainer"
-% Copyright 2009-2015 Khaled Hosny
-% Copyright 2013 Philipp Gesang
-% Copyright 2013-2016 Joseph Wright
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% ©/
diff --git a/macros/latex/contrib/fontspec/fontspec-code-interfaces.dtx b/macros/latex/contrib/fontspec/fontspec-code-interfaces.dtx
deleted file mode 100644
index b5c909fcfc..0000000000
--- a/macros/latex/contrib/fontspec/fontspec-code-interfaces.dtx
+++ /dev/null
@@ -1,296 +0,0 @@
-%%^^A%% fontspec-code-interfaces.dtx -- part of FONTSPEC <wspr.io/fontspec>
-
-% \section{User commands}\label{sec:codeuser}
-%
-% This section contains the definitions of the commands detailed in
-% the user documentation. Only the `top level' definitions of the
-% commands are contained herein; they all use or define macros which
-% are defined or used later on in \vref{sec:codeinternal}.
-%
-% \iffalse
-% \begin{macrocode}
-%<*fontspec>
-% \end{macrocode}
-% \fi
-%
-% \begin{macrocode}
-\NewDocumentCommand \fontspec { O{} m O{} }
- {
- \@@_main_fontspec:nn {#1,#3} {#2}
- \ignorespaces
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\NewDocumentCommand \setmainfont { O{} m O{} }
- {
- \@@_main_setmainfont:nn {#1,#3} {#2}
- \ignorespaces
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\NewDocumentCommand \setsansfont { O{} m O{} }
- {
- \@@_main_setsansfont:nn {#1,#3} {#2}
- \ignorespaces
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\NewDocumentCommand \setmonofont { O{} m O{} }
- {
- \@@_main_setmonofont:nn {#1,#3} {#2}
- \ignorespaces
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\NewDocumentCommand \setmathrm { O{} m O{} }
- {
- \@@_main_setmathrm:nn {#1,#3} {#2}
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\NewDocumentCommand \setboldmathrm { O{} m O{} }
- {
- \@@_main_setboldmathrm:nn {#1,#3} {#2}
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\NewDocumentCommand \setmathsf { O{} m O{} }
- {
- \@@_main_setmathsf:nn {#1,#3} {#2}
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\NewDocumentCommand \setmathtt { O{} m O{} }
- {
- \@@_main_setmathtt:nn {#1,#3} {#2}
- }
-% \end{macrocode}
-%
-% \begin{macro}{\setromanfont}
-% This is the old name for \cs{setmainfont}, retained \emph{ad infinitum}
-% for backwards compatibility. It was deprecated in 2010.
-% \begin{macrocode}
-\NewDocumentCommand \setromanfont { O{} m O{} }
- {
- \@@_main_setmainfont:nn {#1,#3} {#2}
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-\NewDocumentCommand \newfontfamily { m O{} m O{} }
- {
- \@@_main_newfontfamily:NnnN #1 {#2,#4} {#3} \NewDocumentCommand
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\NewDocumentCommand \renewfontfamily { m O{} m O{} }
- {
- \@@_main_newfontfamily:NnnN #1 {#2,#4} {#3} \RenewDocumentCommand
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\NewDocumentCommand \setfontfamily { m O{} m O{} }
- {
- \@@_main_newfontfamily:NnnN #1 {#2,#4} {#3} \DeclareDocumentCommand
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\NewDocumentCommand \providefontfamily { m O{} m O{} }
- {
- \@@_main_newfontfamily:NnnN #1 {#2,#4} {#3} \ProvideDocumentCommand
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\NewDocumentCommand \newfontface { m O{} m O{} }
- {
- \@@_main_newfontface:NnnN #1 {#2,#4} {#3} \NewDocumentCommand
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\NewDocumentCommand \renewfontface { m O{} m O{} }
- {
- \@@_main_newfontface:NnnN #1 {#2,#4} {#3} \RenewDocumentCommand
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\NewDocumentCommand \setfontface { m O{} m O{} }
- {
- \@@_main_newfontface:NnnN #1 {#2,#4} {#3} \DeclareDocumentCommand
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\NewDocumentCommand \providefontface { m O{} m O{} }
- {
- \@@_main_newfontface:NnnN #1 {#2,#4} {#3} \ProvideDocumentCommand
- }
-% \end{macrocode}
-%
-% \begin{macro}{\defaultfontfeatures}
-% This macro takes one argument that consists of all of feature
-% options that will be applied by default to all subsequent \cs{fontspec} commands.
-% \begin{macrocode}
-\NewDocumentCommand \defaultfontfeatures { t+ o m }
- {
- \IfNoValueTF {#2}
- { \@@_set_default_features:nn {#1} {#3} }
- { \@@_set_font_default_features:nnn {#1} {#2} {#3} }
- \ignorespaces
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-\NewDocumentCommand \addfontfeatures {m}
- {
- \@@_main_addfontfeatures:n {#1}
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\NewDocumentCommand \addfontfeature {m}
- {
- \@@_main_addfontfeatures:n {#1}
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\NewDocumentCommand \newfontfeature {mm}
- {
- \@@_main_newfontfeature:nn {#1} {#2}
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\NewDocumentCommand \newAATfeature {mmmm}
- {
- \@@_main_newAATfeature:nnnn {#1} {#2} {#3} {#4}
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\NewDocumentCommand \newopentypefeature {mmm}
- {
- \@@_main_newopentypefeature:nnn {#1} {#2} {#3}
- }
-% \end{macrocode}
-%
-% \begin{macro}{\newICUfeature}
-% Deprecated.
-% \begin{macrocode}
-\NewDocumentCommand \newICUfeature {mmm}
- {
- \@@_main_newopentypefeature:nnn {#1} {#2} {#3}
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-\NewDocumentCommand \aliasfontfeature {mm}
- {
- \@@_main_aliasfontfeature:nn {#1} {#2}
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\NewDocumentCommand \aliasfontfeatureoption {mmm}
- {
- \@@_main_aliasfontfeatureoption:nnn {#1} {#2} {#3}
- }
-% \end{macrocode}
-%
-% \begin{macro}{\newfontscript}
-% Mostly used internally, but also possibly useful for users, to define new OpenType
-% `scripts', mapping logical names to OpenType script tags.
-% \begin{macrocode}
-\NewDocumentCommand \newfontscript {mm}
- {
- \fontspec_new_script:nn {#1} {#2}
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\newfontlanguage}
-% Mostly used internally, but also possibly useful for users, to define new OpenType
-% `languages', mapping logical names to OpenType language tags.
-% \begin{macrocode}
-\NewDocumentCommand \newfontlanguage {mm}
- {
- \fontspec_new_lang:nn {#1} {#2}
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-\NewDocumentCommand \DeclareFontExtensions {m}
- {
- \@@_main_DeclareFontExtensions:n {#1}
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\NewDocumentCommand \IfFontFeatureActiveTF {mmm}
- {
- \@@_main_IfFontFeatureActiveTF:nnn {#1} {#2} {#3}
- }
-% \end{macrocode}
-%
-% \begin{macro}{\oldstylenums}
-% This is performed only after the preamble to overwrite any redefinition by \pkg{textcomp}:
-% \begin{macrocode}
-\AtBeginDocument
- {
- \RenewDocumentCommand \oldstylenums {m}
- {
- \@@_main_oldstylenums:n {#1}
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\liningnums}
-% \begin{macrocode}
-\NewDocumentCommand \liningnums {m}
- {
- \@@_main_liningnums:n {#1}
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \iffalse
-% \begin{macrocode}
-%</fontspec>
-% \end{macrocode}
-% \fi
-
-
-\endinput
-
-% /©
-% ------------------------------------------------
-% The FONTSPEC package <wspr.io/fontspec>
-% ------------------------------------------------
-% Copyright 2004-2020 Will Robertson, LPPL "maintainer"
-% Copyright 2009-2015 Khaled Hosny
-% Copyright 2013 Philipp Gesang
-% Copyright 2013-2016 Joseph Wright
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% ©/
diff --git a/macros/latex/contrib/fontspec/fontspec-code-internal.dtx b/macros/latex/contrib/fontspec/fontspec-code-internal.dtx
deleted file mode 100644
index 375fc7be2e..0000000000
--- a/macros/latex/contrib/fontspec/fontspec-code-internal.dtx
+++ /dev/null
@@ -1,1217 +0,0 @@
-%%^^A%% fontspec-code-internal.dtx -- part of FONTSPEC <wspr.io/fontspec>
-
-% \section{Internals}
-%
-% \iffalse
-% \begin{macrocode}
-%<*fontspec>
-% \end{macrocode}
-% \fi
-%
-% \subsection{The main function for setting fonts}
-%
-% \begin{macro}{\@@_select_font_family:nn}
-% This is the command that defines font families for use, the underlying
-% procedure of all \cmd\fontspec-like commands. Given a
-% list of font features (|#1|) for a requested font (|#2|),
-% it will define an NFSS
-% family for that font and put the family name (globally) into \cs{l_fontspec_family_tl}.
-% The \TeX\ `\cs{font}' command is (globally) stored in \cs{l_fontspec_font}.
-%
-% This macro does its processing inside a group to attempt to restrict the scope of its internal processing.
-% This works to some degree to insulate the internal commands from having to be manually cleared.
-%
-% Some often-used variables to know about:
-% \begin{itemize}
-% \item \cmd{\l_fontspec_fontname_tl} is used as the generic name of the font being defined.
-% \item \cmd{\l_@@_fontid_tl} is the unique identifier of the font with all its features.
-% \item \cmd{\l_@@_fontname_up_tl} is the font specifically to be used as the upright font.
-% \item \cmd{\l_@@_basename_tl} is the (immutable) original argument used for |*|-replacing.
-% \item \cmd{\l_fontspec_font} is the plain \TeX{} font of the upright font requested.
-% \end{itemize}
-% \begin{macrocode}
-\cs_new_protected:Nn \@@_select_font_family:nn
- {
-%<debug>\typeout{^^J^^J::::::::::::::::::::::::::::::^^J:: fontspec_select:nn~ {#1}~ {#2} }
- \group_begin:
- \@@_font_suppress_not_found_error:
- \@@_init:
-
- \@@_sanitise_fontname:Nn \l_fontspec_fontname_tl {#2}
- \@@_sanitise_fontname:Nn \l_@@_fontname_up_tl {#2}
- \@@_sanitise_fontname:Nn \l_@@_basename_tl {#2}
-
- \@@_if_detect_external:nT {#2}
- { \keys_set:nn {fontspec-preparse-external} {Path} }
-
- \keys_set_known:nn {fontspec-preparse-cfg} {#1}
-
- \@@_init_ttc:n {#2}
- \@@_load_external_fontoptions:Nn \l_fontspec_fontname_tl {#2}
-
- \@@_extract_all_features:n {#1}
- \tl_set:Nx \l_@@_fontid_tl { \tl_to_str:N \l_fontspec_fontname_tl-:-\tl_to_str:N \l_@@_all_features_clist }
-
-%<debug>\typeout{fontid: \l_@@_fontid_tl}
-
- \@@_preparse_features:
- \@@_load_font:
- \@@_set_scriptlang:
- \@@_get_features:n {}
- \bool_set_false:N \l_@@_firsttime_bool
-
- \@@_save_family_needed:nTF {#2}
- {
- \@@_save_family:nn {#1} {#2}
-%<debug>\@@_warning:nxx {defining-font} {#1} {#2}
- }
- {
-%<debug>\typeout{Font~ family~ already~ defined.}
- }
- \group_end:
-
- \tl_set_eq:NN \l_fontspec_family_tl \g_@@_nfss_family_tl
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\fontspec_select:nn}
-% This old name has been used by 3rd party packages so for compatibility:
-% \begin{macrocode}
-\cs_set_eq:NN \fontspec_select:nn \@@_select_font_family:nn %% deprecated, for compatibility only
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_sanitise_fontname:Nn}
-% Assigns font name |#2| to token list variable |#1| and strips extension(s) from it in the case of an external font.
-% We strip spaces for luatex for consistency with luaotfload, although I'm not sure this is necessary any more.
-% At one stage this also lowercased the name, but this step has been removed unless someone can remind me why it was necessary.
-% \begin{macrocode}
-\cs_new:Nn \@@_sanitise_fontname:Nn
- {
- \tl_set:Nx #1 {#2}
-%<LU> \tl_remove_all:Nn #1 {~}
- \clist_map_inline:Nn \l_@@_extensions_clist
- {
- \tl_if_in:NnT #1 {##1}
- {
- \tl_remove_once:Nn #1 {##1}
- \tl_set:Nn \l_@@_extension_tl {##1}
- \clist_map_break:
- }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_if_detect_external:nT}
-% Check if either the fontname ends with a known font extension.
-% \begin{macrocode}
-\prg_new_conditional:Nnn \@@_if_detect_external:n {T}
- {
-%<debug> \typeout{:: @@_if_detect_external:n { \exp_not:n {#1} } }
- \clist_map_inline:Nn \l_@@_extensions_clist
- {
- \bool_set_false:N \l_@@_tmpa_bool
- \exp_args:Nx % <- this should be handled earlier
- \tl_if_in:nnT {#1 <= end_of_string} {##1 <= end_of_string}
- { \bool_set_true:N \l_@@_tmpa_bool \clist_map_break: }
- }
- \bool_if:NTF \l_@@_tmpa_bool \prg_return_true: \prg_return_false:
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_init_ttc:n}
-% For TTC fonts we assume they will be loading the italic/bold fonts from the same file,
-% so prepopulate the fontnames to avoid needing to do it manually.
-% \begin{macrocode}
-\cs_new:Nn \@@_init_ttc:n
- {
- \str_if_eq:eeT { \str_lowercase:f {\l_@@_extension_tl} } {.ttc}
- {
- \@@_sanitise_fontname:Nn \l_@@_fontname_it_tl {#1}
- \@@_sanitise_fontname:Nn \l_@@_fontname_bf_tl {#1}
- \@@_sanitise_fontname:Nn \l_@@_fontname_bfit_tl {#1}
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_load_external_fontoptions:Nn}
-% Load a possible \texttt{.fontspec} font configuration file.
-% This file could set font-specific options for the font about to be loaded.
-% \begin{macrocode}
-\cs_new:Nn \@@_load_external_fontoptions:Nn
- {
- \bool_if:NT \l_@@_fontcfg_bool
- {
-%<debug> \typeout{:: @@_load_external_fontoptions:Nn \exp_not:N #1 {#2} }
- \@@_sanitise_fontname:Nn #1 {#2}
- \tl_set:Nx \l_@@_ext_filename_tl {#1.fontspec}
- \tl_remove_all:Nn \l_@@_ext_filename_tl {~}
- \prop_if_in:NVF \g_@@_fontopts_prop #1
- {
- \exp_args:No \file_if_exist:nT { \l_@@_ext_filename_tl }
- { \file_input:n { \l_@@_ext_filename_tl } }
- }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_extract_all_features:}
-% \begin{macrocode}
-\cs_new:Nn \@@_extract_all_features:n
- {
-%<debug> \typeout{:: @@_extract_all_features:n { \unexpanded {#1} } }
- \bool_if:NTF \l_@@_disable_defaults_bool
- {
- \clist_set:Nx \l_@@_all_features_clist {#1}
- }
- {
- \prop_get:NVNF \g_@@_fontopts_prop \l_fontspec_fontname_tl \l_@@_fontopts_clist
- { \clist_clear:N \l_@@_fontopts_clist }
-
- \prop_get:NVNF \g_@@_fontopts_prop \l_@@_family_label_tl \l_@@_family_fontopts_clist
- { \clist_clear:N \l_@@_family_fontopts_clist }
- \tl_clear:N \l_@@_family_label_tl
-
- \clist_set:Nx \l_@@_all_features_clist
- {
- \g_@@_default_fontopts_clist,
- \l_@@_family_fontopts_clist,
- \l_@@_fontopts_clist,
- #1
- }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_preparse_features:}
-% \darg{feature options}
-% \darg{font name}
-% Perform the (multi-step) feature parsing process.
-%
-% Convert the requested features to font definition
-% strings. First the features are parsed for information about font
-% loading (whether it's a named font or external font, etc.), and then
-% information is extracted for the names of the other shape fonts.
-% \begin{macrocode}
-\cs_new:Nn \@@_preparse_features:
- {
-%<debug> \typeout{:: @@_preparse_features:}
-% \end{macrocode}
-% Detect if external fonts are to be used, possibly automatically, and
-% parse fontspec features for bold/italic fonts and their features.
-% \begin{macrocode}
-
- \@@_keys_set_known:nxN {fontspec-preparse-external}
- { \l_@@_all_features_clist }
- \l_@@_keys_leftover_clist
-
-% \end{macrocode}
-% When \cmd{\l_fontspec_fontname_tl} is augmented with a prefix or whatever to create
-% the name of the upright font (\cmd{\l_@@_fontname_up_tl}), this latter is the new `general
-% font name' to use.
-% \begin{macrocode}
- \tl_set_eq:NN \l_fontspec_fontname_tl \l_@@_fontname_up_tl
- \@@_keys_set_known:nxN {fontspec-renderer} {\l_@@_keys_leftover_clist}
- \l_@@_keys_leftover_clist
- \@@_keys_set_known:nxN {fontspec-preparse} {\l_@@_keys_leftover_clist}
- \l_@@_fontfeat_clist
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_load_font:}
-% \begin{macrocode}
-\cs_new:Nn \@@_load_font:
- {
-%<debug>\typeout{:: @@_load_font}
-
-%<debug>\typeout{Set~ base~ font~ for~ preliminary~ analysis: \@@_construct_font_call:nn { \l_@@_fontname_up_tl } {} }
- \@@_primitive_font_set:NnnF \l_@@_test_font
- { \@@_construct_font_call:nn { \l_@@_fontname_up_tl } { \l_@@_pre_feat_sclist } }
- { \f@size pt - 2sp }
- { \@@_error:nx {font-not-found} {\l_@@_fontname_up_tl} }
-
-%<debug>\typeout{Set~ base~ font~ properly: \@@_construct_font_call:nn { \l_@@_fontname_up_tl } {} }
- \@@_set_font_type:N \l_@@_test_font
- \@@_primitive_font_gset:Onn \l_@@_fontface_cs_tl
- { \@@_construct_font_call:nn { \l_@@_fontname_up_tl } { \l_@@_pre_feat_sclist } }
- { \f@size pt + 2sp }
-
- \l_@@_fontface_cs_tl % this is necessary for LuaLaTeX to check the scripts properly
-
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_construct_font_call:nn}
-% Constructs the complete font invocation.
-% \darg{Base name}
-% \darg{Extension}
-% \darg{TTC Index}
-% \darg{Renderer}
-% \darg{Optical size}
-% \darg{Font features}
-% We check if \meta{Font features} are empty and if so don't add in the separator colon.
-% \begin{macrocode}
-\cs_new:Nn \@@_construct_font_call:nnnnnn
- {
-%<XE> " \@@_fontname_wrap:n { #1 #2 #3 }
-%<LU> " \@@_fontname_wrap:n { #1 #2 } #3
- #4 #5
- \str_if_eq:eeF {#6}{} {:#6} "
- }
-% \end{macrocode}
-% In practice, we don't use the six-argument version, since most arguments are constructed on-the-fly:
-% \begin{macrocode}
-\cs_new:Nn \@@_construct_font_call:nn
- {
- \@@_construct_font_call:nnnnnn
- {#1}
- \l_@@_extension_tl
- \l_@@_ttc_index_tl
- \l_@@_renderer_tl
- \l_@@_optical_size_tl
- {#2}
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_font_is_file:,\@@_font_is_name:}
-% The \cs{@@_fontname_wrap:n} command takes the font name and either passes it through unchanged or wraps it in the syntax for loading a font `by filename'.
-% \XeTeX's syntax is followed since \pkg{luaotfload} provides compatibility.
-% \begin{macrocode}
-\cs_new:Nn \@@_font_is_name:
- {
- \cs_set_eq:NN \@@_fontname_wrap:n \use:n
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_font_is_file:
- {
- \cs_set:Npn \@@_fontname_wrap:n ##1 { [ \l_@@_font_path_tl ##1 ] }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_set_scriptlang:}
-% Only necessary for OpenType fonts.
-% First check if the font supports scripts, then apply defaults if
-% none are explicitly requested. Similarly with the language settings.
-% \begin{macrocode}
-\cs_new:Nn \@@_set_scriptlang:
- {
-%<debug> \typeout{:: _set_scriptlang:}
- \bool_if:NT \l_@@_firsttime_bool
- {
- \tl_if_empty:NF \l_@@_script_name_tl
- {
-%<debug> \typeout{:::: Script=\l_@@_script_name_tl, Language=\l_@@_lang_name_tl}
- \keys_set:nx {fontspec-opentype} {Script=\l_@@_script_name_tl}
- \keys_set:nx {fontspec-opentype} {Language=\l_@@_lang_name_tl}
- }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_get_features:Nn}
-% This macro is a wrapper for |\keys_set:nn| which expands and adds a
-% default specification to the original passed options. It begins by
-% initialising the commands used to hold font-feature specific
-% strings.
-% Its argument is any additional features to prepend to the default.
-%
-% Do not set the colour if not explicitly spec'd else \verb|\color| (using
-% specials) will not work.
-% \begin{macrocode}
-\cs_new:Nn \@@_get_features:n
- {
-%<debug> \typeout{:: @@_get_features:Nn { \exp_not:n {#1} } }
- \@@_init_fontface:
- \@@_keys_set_known:nxN {fontspec-renderer} {\l_@@_fontfeat_clist,#1}
- \l_@@_keys_leftover_clist
- \@@_keys_set_known:nxN {fontspec} {\l_@@_keys_leftover_clist} \l_@@_keys_leftover_clist
-%<*XE>
- \bool_if:NTF \l_@@_ot_bool
- {
-%<debug> \typeout{::: Setting~ keys~ for~ OpenType~ font~ features:~"\l_@@_keys_leftover_clist"}
- \keys_set:nV {fontspec-opentype} \l_@@_keys_leftover_clist
- }
- {
-%<debug> \typeout{::: Setting~ keys~ for~ AAT/Graphite~ font~ features:~"\l_@@_keys_leftover_clist"}
- \bool_if:nT { \l_@@_atsui_bool || \l_@@_graphite_bool }
- { \keys_set:nV {fontspec-aat} \l_@@_keys_leftover_clist }
- }
-%</XE>
-%<*LU>
-%<debug> \typeout{::: Setting~ keys~ for~ OpenType~ font~ features:~"\l_@@_keys_leftover_clist"}
- \keys_set:nV {fontspec-opentype} \l_@@_keys_leftover_clist
-%</LU>
-
- \tl_if_empty:NF \l_@@_mapping_tl
- { \@@_update_featstr:n { mapping = \l_@@_mapping_tl } }
-
- \str_if_eq:eeF { \l_@@_hexcol_tl \l_@@_opacity_tl }
- { \c_@@_hexcol_tl \c_@@_opacity_tl }
- { \@@_update_featstr:n { color = \l_@@_hexcol_tl\l_@@_opacity_tl } }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_save_family_needed:nTF}
-% Check if the family is unique and, if so, save its information.
-% (\cs{addfontfeature} and other macros use this data.)
-% Then the font family and its shapes are defined in the NFSS.
-%
-% Now we have a unique (in fact, too unique!) string that contains
-% the family name and every option in abbreviated form. This is used
-% with a counter to create a simple NFSS family name for the font we're
-% selecting.
-%
-% \begin{macrocode}
-\prg_new_conditional:Nnn \@@_save_family_needed:n { TF }
- {
-
-%<debug> \typeout{save~ family:~ #1}
-%<debug> \typeout{== fontid_tl: "\l_@@_fontid_tl".}
-
- \tl_if_empty:NTF \l_@@_nfss_fam_tl
- {
- \prop_get:NVNTF \g_@@_fontid_family_prop \l_@@_fontid_tl \l_@@_tmp_tl
- {
- \tl_gset_eq:NN \g_@@_nfss_family_tl \l_@@_tmp_tl
- \prg_return_false:
- }
- {
- \tl_set:Nx \l_@@_tmp_tl {#1}
- \tl_remove_all:Nn \l_@@_tmp_tl { ~ }
- \@@_save_fontid_family:VV \l_@@_fontid_tl \l_@@_tmp_tl
- \prg_return_true:
- }
- }
- {
- \tl_gset_eq:NN \g_@@_nfss_family_tl \l_@@_nfss_fam_tl
- \cs_undefine:c { g_@@_fontinfo_ \g_@@_nfss_family_tl _prop }
- \prg_return_true:
- }
- }
-% \end{macrocode}
-% \begin{macrocode}
-\cs_new:Nn \@@_save_fontid_family:nn
- {
- \prop_get:NnNTF \g_@@_family_int_prop {#2} \l_@@_tmp_tl
- {
- \tl_set:Nx \l_@@_tmp_tl
- { \int_eval:n { \l_@@_tmp_tl + 1 } }
- }
- { \tl_set:Nn \l_@@_tmp_tl { 0 } }
- \prop_gput:NnV \g_@@_family_int_prop {#2} \l_@@_tmp_tl
- \tl_gset:Nx \g_@@_nfss_family_tl { #2 ( \l_@@_tmp_tl ) }
- \prop_gput:NnV \g_@@_fontid_family_prop {#1} \g_@@_nfss_family_tl
- }
-\cs_generate_variant:Nn \@@_save_fontid_family:nn { VV }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_save_family:nn}
-% Saves the relevant font information for future processing.
-% \begin{macrocode}
-\cs_new:Nn \@@_save_family:nn
- {
- \@@_save_fontinfo:n {#2}
- \@@_find_autofonts:
- \DeclareFontFamily{\g_@@_nfss_enc_tl}{\g_@@_nfss_family_tl}{}
- \@@_set_faces:
- \@@_info:nxx {defining-font} {#1} {#2}
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_save_fontinfo:n}
-% Saves the relevant font information for future processing.
-% \begin{macrocode}
-\cs_new:Nn \@@_save_fontinfo:n
- {
- \prop_new:c {g_@@_fontinfo_ \g_@@_nfss_family_tl _prop}
- \prop_gput:cnx {g_@@_fontinfo_ \g_@@_nfss_family_tl _prop} {fontname} { #1 }
- \prop_gput:cnx {g_@@_fontinfo_ \g_@@_nfss_family_tl _prop} {options} { \l_@@_all_features_clist }
- \prop_gput:cnx {g_@@_fontinfo_ \g_@@_nfss_family_tl _prop} {fontdef}
- {
- \@@_construct_font_call:nn {\l_fontspec_fontname_tl}
- { \l_@@_pre_feat_sclist \g_@@_rawfeatures_sclist }
- }
- \prop_gput:cnV {g_@@_fontinfo_ \g_@@_nfss_family_tl _prop} {script-num} \l_@@_script_int
- \prop_gput:cnV {g_@@_fontinfo_ \g_@@_nfss_family_tl _prop} {lang-num} \l_@@_language_int
- \prop_gput:cnV {g_@@_fontinfo_ \g_@@_nfss_family_tl _prop} {script-tag} \l_@@_script_tl
- \prop_gput:cnV {g_@@_fontinfo_ \g_@@_nfss_family_tl _prop} {lang-tag} \l_@@_lang_tl
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{Setting font shapes in a family}
-%
-% All NFSS specifications take their default values, so if any of them
-% are redefined, the shapes will be selected to fit in with the
-% current state. For example, if \cmd\bfdefault\ is redefined to |b|, all
-% bold shapes defined by this package will also be assigned to |b|.
-%
-% The combination shapes are searched first because they use information that may be redefined in the single cases.
-% E.g., if no bold font is specified then |set_autofont| will attempt to set it.
-% This has subtle/small ramifications on the logic of choosing the bold italic font.
-%
-% \begin{macro}{\@@_find_autofonts:}
-% \begin{macrocode}
-\cs_new:Nn \@@_find_autofonts:
- {
- \bool_if:nF {\l_@@_noit_bool || \l_@@_nobf_bool}
- {
- \@@_set_autofont:Nnn \l_@@_fontname_bfit_tl {\l_@@_fontname_it_tl} {/B}
- \@@_set_autofont:Nnn \l_@@_fontname_bfit_tl {\l_@@_fontname_bf_tl} {/I}
- \@@_set_autofont:Nnn \l_@@_fontname_bfit_tl {\l_fontspec_fontname_tl} {/BI}
- }
-
- \bool_if:NF \l_@@_nobf_bool
- {
- \@@_set_autofont:Nnn \l_@@_fontname_bf_tl {\l_fontspec_fontname_tl} {/B}
- }
-
- \bool_if:NF \l_@@_noit_bool
- {
- \@@_set_autofont:Nnn \l_@@_fontname_it_tl {\l_fontspec_fontname_tl} {/I}
- }
-
- \@@_set_autofont:Nnn \l_@@_fontname_bfsl_tl {\l_@@_fontname_sl_tl} {/B}
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_set_faces:}
-% \begin{macrocode}
-\cs_new:Nn \@@_set_faces:
- {
- \@@_add_nfssfont:nnnn \mddefault \shapedefault \l_fontspec_fontname_tl \l_@@_fontfeat_up_clist
- \@@_add_nfssfont:nnnn \bfdefault \shapedefault \l_@@_fontname_bf_tl \l_@@_fontfeat_bf_clist
- \@@_add_nfssfont:nnnn \mddefault \itdefault \l_@@_fontname_it_tl \l_@@_fontfeat_it_clist
- \@@_add_nfssfont:nnnn \mddefault \sldefault \l_@@_fontname_sl_tl \l_@@_fontfeat_sl_clist
- \@@_add_nfssfont:nnnn \bfdefault \itdefault \l_@@_fontname_bfit_tl \l_@@_fontfeat_bfit_clist
- \@@_add_nfssfont:nnnn \bfdefault \sldefault \l_@@_fontname_bfsl_tl \l_@@_fontfeat_bfsl_clist
- \prop_map_inline:Nn \l_@@_nfssfont_prop { \@@_set_faces_aux:nnnnn ##2 }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_set_faces_aux:nnnnn
- {
- \fontspec_complete_fontname:Nn \l_@@_curr_fontname_tl {#3}
- \@@_make_font_shapes:Nnnnn \l_@@_curr_fontname_tl {#1} {#2} {#4} {#5}
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\fontspec_complete_fontname:Nn}
-% This macro defines |#1| as the input with any |*| tokens of its input
-% replaced by the font name. This lets us define supplementary fonts in full
-% (``\texttt{Baskerville Semibold}'') or in abbreviation (``\texttt{* Semibold}'').
-% \begin{macrocode}
-\cs_new:Nn \fontspec_complete_fontname:Nn
- {
- \tl_set:Nx #1 {#2}
- \tl_replace_all:Nnx #1 {*} {\l_@@_basename_tl}
-%<LU> \tl_remove_all:Nn #1 {~}
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_add_nfssfont:nnnn}
-% \darg{series}
-% \darg{shape}
-% \darg{fontname}
-% \darg{fontspec features}
-% \begin{macrocode}
-\cs_new:Nn \@@_add_nfssfont:nnnn
- {
- \tl_set:Nx \l_@@_this_font_tl {#3}
-
- \tl_if_empty:xTF {#4}
- { \clist_set:Nn \l_@@_sizefeat_clist {Size={-}} }
- { \@@_keys_set_known:nxN {fontspec-preparse-nested} {#4} \l_@@_tmp_tl }
-
- \tl_if_empty:NF \l_@@_this_font_tl
- {
- \prop_put:Nxx \l_@@_nfssfont_prop {#1/#2}
- { {#1}{#2}{\l_@@_this_font_tl}{#4}{\l_@@_sizefeat_clist} }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsubsection{Fonts}
-%
-% \begin{macro}{\@@_set_font_type:N}
-% Now check if the font is to be rendered with \ATSUI\ or Harfbuzz. This will either
-% be automatic (based on the font type), or specified by the user via a font feature.
-%
-% This macro sets booleans
-% accordingly depending if the font in \cmd\l_fontspec_test_font\ is an \AAT\
-% font or an OpenType font or a font with feature axes (either \AAT\ or
-% Multiple Master), respectively.
-% \begin{macrocode}
-\cs_new:Nn \@@_set_font_type:N
- {
-%<debug> \typeout{:: @@_set_font_type:}
-%<*XE>
- \bool_set_false:N \l_@@_tfm_bool
- \bool_set_false:N \l_@@_atsui_bool
- \bool_set_false:N \l_@@_ot_bool
- \bool_set_false:N \l_@@_mm_bool
- \bool_set_false:N \l_@@_graphite_bool
- \ifcase\XeTeXfonttype #1
-%<debug> \typeout{:::: TFM}
- \bool_set_true:N \l_@@_tfm_bool
- \or
-%<debug> \typeout{:::: AAT}
- \bool_set_true:N \l_@@_atsui_bool
- \tl_if_empty:NT \l_@@_renderer_tl { \tl_set:Nn \l_@@_renderer_tl {/AAT} }
- \ifnum\XeTeXcountvariations #1 > 0\relax
-%<debug> \typeout{:::: MM}
- \bool_set_true:N \l_@@_mm_bool
- \fi
- \or
-%<debug> \typeout{:::: OpenType}
- \bool_set_true:N \l_@@_ot_bool
- \tl_if_empty:NT \l_@@_renderer_tl { \tl_set:Nn \l_@@_renderer_tl {/OT} }
- \or
-%<debug> \typeout{:::: Graphite}
- \bool_set_true:N \l_@@_graphite_bool
- \tl_if_empty:NT \l_@@_renderer_tl { \tl_set:Nn \l_@@_renderer_tl {/GR} }
- \fi
-%</XE>
-% \end{macrocode}
-% If automatic, the \cmd{\l_@@_renderer_tl} token list will still be
-% empty (other suffices that could be added will be later in the feature
-% processing), and if it is indeed still empty, assign it a value so that the
-% other weights of the font are specifically loaded with the same renderer.
-%
-% LuaTeX only supports one:
-% \begin{macrocode}
-%<*LU>
- \bool_set_true:N \l_@@_ot_bool
-%</LU>
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_set_autofont:Nnn}
-% \darg{Font name tl}
-% \darg{Base font name}
-% \darg{Font name modifier}
-%
-% This function looks for font with \meta{name} and \meta{modifier} |#2#3|, and if found (i.e., different to font with name |#2|) stores it in tl |#1|. A modifier is something like |/B| to look for a bold font, for example.
-%
-% We can't match external fonts in this way (in \XeTeX\ anyway; todo: test with LuaTeX).
-% If \meta{font name tl} is not empty, then it's already been specified by the user so abort.
-% If \meta{Base font name} is not given, we also abort for obvious reasons.
-%
-% If \meta{font name tl} is empty, then proceed.
-% If not found, \meta{font name tl} remains empty.
-% Otherwise, we have a match.
-% \begin{macrocode}
-\cs_new:Nn \@@_set_autofont:Nnn
- {
- \bool_if:NF \l_@@_external_bool
- {
- \tl_if_empty:xF {#2}
- {
- \tl_if_empty:NT #1
- {
- \@@_if_autofont:nnTF {#2} {#3}
- { \tl_set:Nx #1 {#2#3} }
- { \@@_info:nx {no-font-shape} {#2#3} }
- }
- }
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\prg_new_conditional:Nnn \@@_if_autofont:nn {T,TF}
- {
- \group_begin:
- \@@_primitive_font_set:Nnn \l_@@_tmpa_font { \@@_construct_font_call:nn {#1} { \l_@@_pre_feat_sclist } } { \f@size pt + 1sp }
- \@@_primitive_font_set:Nnn \l_@@_tmpb_font { \@@_construct_font_call:nn {#1#2} { \l_@@_pre_feat_sclist } } { \f@size pt + 1sp }
- \str_if_eq:eeTF { \@@_primitive_font_get_name:N \l_@@_tmpa_font } { \@@_primitive_font_get_name:N \l_@@_tmpb_font }
- { \group_end: \prg_return_false: }
- { \group_end: \prg_return_true: }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_make_font_shapes:Nnnnn}
-% \darg{Font name}
-% \darg{Font series}
-% \darg{Font shape}
-% \darg{Font features}
-% \darg{Size features}
-% This macro eventually uses \cs{DeclareFontShape} to define the font shape in
-% question.
-% \begin{macrocode}
-\cs_new:Nn \@@_make_font_shapes:Nnnnn
- {
- \group_begin:
- \@@_keys_set_known:nxN {fontspec-preparse-external} { #4 } \l_@@_leftover_clist
- \@@_load_fontname:Nn \l_fontspec_fontname_tl {#1}
- \@@_declare_shape:nnxx {#2} {#3} { \l_@@_fontopts_clist, \l_@@_leftover_clist } {#5}
- \group_end:
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_load_fontname:Nn
- {
-%<debug> \typeout{:: @@_load_fontname:Nn \exp_not:N #1 (#1) {#2} }
- \@@_load_external_fontoptions:Nn #1 {#2}
- \prop_get:NVNF \g_@@_fontopts_prop #1 \l_@@_fontopts_clist
- { \clist_clear:N \l_@@_fontopts_clist }
- \keys_set_groups:nnV {fontspec/fontname} {getfontname} \l_@@_fontopts_clist
- \@@_primitive_font_set:OnnF \l_@@_fontface_cs_tl
- { \@@_construct_font_call:nn {#1} { \l_@@_pre_feat_sclist } } { \f@size pt + 2sp }
- { \@@_error:nx {font-not-found} {#2} }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\keys_define:nn {fontspec/fontname}
- {
- Font .tl_set:N = \l_fontspec_fontname_tl ,
- Font .groups:n = {getfontname} ,
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_declare_shape:nnnn}
-% \darg{Font series}
-% \darg{Font shape}
-% \darg{Font features}
-% \darg{Size features}
-% Wrapper for \cmd\DeclareFontShape.
-% And finally the actual font shape declaration using \cmd\l_@@_nfss_tl\ defined above.
-% \cmd\l_@@_postadjust_tl\ is defined in various places to deal with things like the hyphenation
-% character and interword spacing.
-%
-% The main part is to loop through \feat{SizeFeatures} arguments, which are of the form
-% {\par\centering |SizeFeatures={{<one>},{<two>},{<three>}}|.\par}
-% \begin{macrocode}
-\cs_new:Nn \@@_declare_shape:nnnn
- {
-%<debug>\typeout{=~ declare_shape:~{\l_fontspec_fontname_tl}~{#1}~{#2}}
- \tl_build_begin:N \l_@@_nfss_tl
- \tl_build_begin:N \l_@@_nfss_sc_tl
- \tl_set_eq:NN \l_@@_saved_fontname_tl \l_fontspec_fontname_tl
-
- \exp_args:Nx \clist_map_inline:nn {#4} { \@@_setup_single_size:nn {#3} {##1} }
-
- \tl_build_end:N \l_@@_nfss_tl
- \tl_build_end:N \l_@@_nfss_sc_tl
-
- \@@_declare_shapes_normal:nn {#1} {#2}
- \@@_declare_shapes_smcaps:nn {#1} {#2}
- \@@_declare_shape_slanted:nn {#1} {#2}
- \@@_declare_shapes_bx:nn {#1} {#2}
- \@@_declare_shape_loginfo:nn {#1} {#2}
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_generate_variant:Nn \@@_declare_shape:nnnn {nnxx}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_setup_single_size:nn}
-% \begin{macrocode}
-\cs_new:Nn \@@_setup_single_size:nn
- {
- \tl_clear:N \l_@@_size_tl
- \tl_set_eq:NN \l_@@_sizedfont_tl \l_@@_saved_fontname_tl % in case not spec'ed
-
- \keys_set_known:nxN {fontspec-sizing} { \exp_after:wN \use:n #2 }
- \l_@@_sizing_leftover_clist
- \tl_if_empty:NT \l_@@_size_tl { \@@_error:n {no-size-info} }
-%<debug>\typeout{==~ size:~\l_@@_size_tl}
-
- % "normal"
- \@@_load_fontname:Nn \l_fontspec_fontname_tl {\l_@@_sizedfont_tl}
- \@@_setup_nfss:Nnnn \l_@@_nfss_tl {#1} {\l_@@_sizing_leftover_clist} {}
-%<debug> \typeout{===~ sized~ font:~ \l_@@_sizedfont_tl}
-
- % small caps
- \clist_set_eq:NN \l_@@_fontfeat_curr_clist \l_@@_fontfeat_sc_clist
-
- \bool_if:NF \l_@@_nosc_bool
- {
- \tl_if_empty:NTF \l_@@_fontname_sc_tl
- {
- \@@_make_smallcaps:TF
- {
-%<debug>\typeout{====~Small~ caps~ found.}
- \clist_put_left:Nn \l_@@_fontfeat_curr_clist {Letters=SmallCaps}
- }
- {
-%<debug>\typeout{====~Small~ caps~ not~ found.}
- \bool_set_true:N \l_@@_nosc_bool
- }
- }
- { \@@_load_fontname:Nn \l_fontspec_fontname_tl {\l_@@_fontname_sc_tl} }% local for each size
- }
-
- \bool_if:NF \l_@@_nosc_bool
- {
- \@@_setup_nfss:Nnnn \l_@@_nfss_sc_tl
- {#1} {\l_@@_sizing_leftover_clist} {\l_@@_fontfeat_curr_clist}
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_setup_nfss:Nnnn}
-% \begin{macrocode}
-\cs_new:Nn \@@_setup_nfss:Nnnn
- {
-%<debug>\typeout{====~Setup~NFSS~shape:~<\l_@@_size_tl>~\l_fontspec_fontname_tl}
-
- \@@_get_features:n { #2 , #3 , #4 }
-%<debug>\typeout{====~Gathered~features:~\g_@@_rawfeatures_sclist}
-
- \tl_if_empty:NF \l_@@_scale_tl
- {
- \tl_set:Nx \l_@@_scale_tl { s*[\l_@@_scale_tl] }
- }
-
- \tl_build_put_right:Nx #1
- {
- <\l_@@_size_tl> \l_@@_scale_tl
- \@@_construct_font_call:nn { \l_fontspec_fontname_tl }
- { \l_@@_pre_feat_sclist \g_@@_rawfeatures_sclist }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_declare_shapes_normal:nn}
-% \begin{macrocode}
-\cs_new:Nn \@@_declare_shapes_normal:nn
- {
- \@@_DeclareFontShape:xxxxxx {\g_@@_nfss_enc_tl} {\g_@@_nfss_family_tl}
- {#1} {#2} {\l_@@_nfss_tl}{\l_@@_postadjust_tl}
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_declare_shapes_smcaps:nn}
-% \begin{macrocode}
-\cs_new:Nn \@@_declare_shapes_smcaps:nn
- {
- \tl_if_empty:NF \l_@@_nfss_sc_tl
- {
- \@@_DeclareFontShape:xxxxxx {\g_@@_nfss_enc_tl} {\g_@@_nfss_family_tl} {#1}
- { \@@_combo_sc_shape:n {#2} } {\l_@@_nfss_sc_tl} {\l_@@_postadjust_tl}
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_combo_sc_shape:n
- {
- \tl_if_exist:cTF { \@@_shape_merge:nn {#1} {\scdefault} }
- { \tl_use:c { \@@_shape_merge:nn {#1} {\scdefault} } }
- { \scdefault }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_DeclareFontShape:nnnnnn}
-% \begin{macrocode}
-\cs_new:Nn \@@_DeclareFontShape:nnnnnn
- {
-%<debug>\typeout{DeclareFontShape:~{#1}{#2}{#3}{#4}...}
- \group_begin:
- \normalsize
- \cs_undefine:c {#1/#2/#3/#4/\f@size}
- \group_end:
- \DeclareFontShape{#1}{#2}{#3}{#4}{#5}{#6}
- }
-\cs_generate_variant:Nn \@@_DeclareFontShape:nnnnnn {xxxxxx}
-% \end{macrocode}
-%
-% \begin{macro}{\@@_declare_shape_slanted:nn}
-% This extra stuff for the slanted shape substitution is a little bit awkward.
-% We define the slanted shape to be a synonym for it when (a)~we're defining an italic font, but also (b)~when the default slanted shape isn't `it'.
-% (Presumably this turned up once in a test and I realised it caused problems. I doubt this would happen much.)
-%
-% We should test when a slanted font has been specified and not run this code if so, but the \verb|\@@_set_slanted:| code will overwrite this anyway if necessary.
-% \begin{macrocode}
-\cs_new:Nn \@@_declare_shape_slanted:nn
- {
- \bool_if:nT
- {
- \str_if_eq_p:ee {#2} {\itdefault} &&
- !(\str_if_eq_p:ee {\itdefault} {\sldefault})
- }
- {
- \@@_DeclareFontShape:xxxxxx {\g_@@_nfss_enc_tl}{\g_@@_nfss_family_tl}{#1}{\sldefault}
- {<->ssub*\g_@@_nfss_family_tl/#1/\itdefault}{\l_@@_postadjust_tl}
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_declare_shapes_bx:nn}
-% Similar processing for setting up b/bx substitutions.
-% \begin{macrocode}
-\cs_new:Nn \@@_declare_shapes_bx:nn
- {
- \bool_if:nT
- {
- \str_if_eq_p:ee {#1} {\bfdefault} &&
- !(\str_if_eq_p:ee {\bfdefault} {bx})
- }
- {
- % bx/?
- \@@_DeclareFontShape:xxxxxx {\g_@@_nfss_enc_tl} {\g_@@_nfss_family_tl}
- {bx} {#2}
- { <->ssub*\g_@@_nfss_family_tl/\bfdefault/#2 }
- { \l_@@_postadjust_tl }
-
- % bx/sc -> b/sc
- \tl_if_empty:NF \l_@@_nfss_sc_tl
- {
- \@@_DeclareFontShape:xxxxxx {\g_@@_nfss_enc_tl} {\g_@@_nfss_family_tl}
- {bx} { \@@_combo_sc_shape:n {#2} }
- { <->ssub*\g_@@_nfss_family_tl/\bfdefault/#2 }
- { \l_@@_postadjust_tl }
- }
-
- % bx/sl -> bx/it
- \bool_if:nT
- {
- \str_if_eq_p:ee {#2} {\itdefault} &&
- !(\str_if_eq_p:ee {\itdefault} {\sldefault})
- }
- {
- \@@_DeclareFontShape:xxxxxx {\g_@@_nfss_enc_tl} {\g_@@_nfss_family_tl}
- {bx} {\sldefault}
- { <->ssub*\g_@@_nfss_family_tl/bx/\itdefault }
- { \l_@@_postadjust_tl }
- }
-
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_declare_shape_loginfo:nn}
-% Lastly some informative messaging.
-% \begin{macrocode}
-\cs_new:Nn \@@_declare_shape_loginfo:nn
- {
- \tl_gput_right:Nx \g_@@_defined_shapes_tl
- {
- \exp_not:n { \\ }
- -~ \exp_not:N \str_case:nn {#1/#2}
- {
- {\mddefault/\shapedefault} {'normal'~}
- {\bfdefault/\shapedefault} {'bold'~}
- {\mddefault/\itdefault} {'italic'~}
- {\mddefault/\sldefault} {'slanted'~}
- {\bfdefault/\itdefault} {'bold~ italic'~}
- {\bfdefault/\sldefault} {'bold~ slanted'~}
- } (#1/#2)~
- with~ NFSS~ spec.:~
- \l_@@_nfss_tl
- \exp_not:n { \\ }
- -~ \exp_not:N \str_case:nn { #1 / \@@_combo_sc_shape:n {#2} }
- {
- {\mddefault/\scdefault} {'small~ caps'~}
- {\bfdefault/\scdefault} {'bold~ small~ caps'~}
- {\mddefault/\scitdefault} {'italic~ small~ caps'~}
- {\bfdefault/\scitdefault} {'bold~ italic~ small~ caps'~}
- {\mddefault/\scsldefault} {'slanted~ small~ caps'~}
- {\bfdefault/\scsldefault} {'bold~ slanted~ small~ caps'~}
- }~( #1 / \@@_combo_sc_shape:n {#2} )~
- with~ NFSS~ spec.:~
- \l_@@_nfss_sc_tl
- \tl_if_empty:fF {\l_@@_postadjust_tl}
- {
- \exp_not:N \\ and~ font~ adjustment~ code:
- \exp_not:N \\ \l_@@_postadjust_tl
- }
- }
- }
-% \end{macrocode}
-% Maybe |\str_if_eq:eeF| would be better?
-% \end{macro}
-%
-%
-% \subsubsection{Features}
-%
-% \begin{macro}{\l_@@_pre_feat_sclist}
-% These are the features always applied to a font selection before other
-% features.
-% \begin{macrocode}
-\tl_set:Nn \l_@@_pre_feat_sclist
-%<*XE>
- {
- \bool_if:NT \l_@@_ot_bool
- {
- \tl_if_empty:NF \l_@@_script_tl { script = \l_@@_script_tl ; }
- \tl_if_empty:NF \l_@@_lang_tl { language = \l_@@_lang_tl ; }
- }
- }
-%</XE>
-%<*LU>
- {
- mode = \l_@@_mode_tl ;
- \tl_if_empty:NF \l_@@_shaper_tl { shaper = \l_@@_shaper_tl ; }
- \tl_if_empty:NF \l_@@_script_tl { script = \l_@@_script_tl ; }
- \tl_if_empty:NF \l_@@_lang_tl { language = \l_@@_lang_tl ; }
- }
-%</LU>
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\@@_make_ot_smallcaps:TF}
-% \label{mac:makesmallcaps}
-% This macro checks if the font contains small caps.
-% \begin{macrocode}
-%<LU>\cs_new:Nn \@@_make_smallcaps:TF
-%<XE>\cs_new:Nn \@@_make_ot_smallcaps:TF
- {
- \exp_args:No \@@_check_ot_feat:NnTF \l_@@_fontface_cs_tl {smcp} {#1} {#2}
- }
-%<*XE>
-\cs_new:Nn \@@_make_smallcaps:TF
- {
- \bool_if:NTF \l_@@_ot_bool
- { \@@_make_ot_smallcaps:TF {#1} {#2} }
- {
- \bool_if:NT \l_@@_atsui_bool
- {
- \exp_args:No \@@_make_AAT_feature_string:NnnTF
- \l_@@_fontface_cs_tl {3} {3} {#1} {#2}
- }
- }
- }
-%</XE>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_update_featstr:n}
-% \cmd{\g_@@_rawfeatures_sclist} is the string used to define the list of specific
-% font features. Each time another font feature is requested, this
-% macro is used to add that feature to the list. Font features are
-% separated by semicolons.
-% \begin{macrocode}
-\cs_new:Nn \@@_update_featstr:n
- {
-%<debug> \typeout{:::: @@_update_featstr:n {#1}}
- \bool_if:NF \l_@@_firsttime_bool
- {
- \tl_gset:Nx \g_@@_single_feat_tl { #1 }
-%<debug> \typeout{::::~ Adding~ feature.}
- \tl_gput_right:Nx \g_@@_rawfeatures_sclist {#1;}
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_remove_clashing_featstr:n}
-% \begin{macrocode}
-\cs_new:Nn \@@_remove_clashing_featstr:n
- {
-%<debug> \typeout{:::: @@_remove_clashing_featstr:n {#1}}
- \clist_map_inline:nn {#1}
- {
-%<debug> \typeout{::::~ Removing~ feature~ "##1;"}
- \tl_gremove_all:Nn \g_@@_rawfeatures_sclist {##1;}
- }
- }
-\cs_generate_variant:Nn \@@_remove_clashing_featstr:n {x}
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{Initialisation}
-%
-% \begin{macro}{\@@_init:}
-% Initialisations that need to occur once per fontspec font invocation.
-% (Some of these may be redundant.
-% Check whether they're assigned to globally or not.)
-% \begin{macrocode}
-\cs_set:Npn \@@_init:
- {
-%<debug> \typeout{:: @@_init:}
- \bool_set_false:N \l_@@_ot_bool
- \bool_set_true:N \l_@@_firsttime_bool
- \@@_font_is_name:
- \tl_clear:N \l_@@_font_path_tl
- \tl_clear:N \l_@@_optical_size_tl
- \tl_clear:N \l_@@_ttc_index_tl
- \tl_clear:N \l_@@_renderer_tl
- \tl_gclear:N \g_@@_defined_shapes_tl
- \tl_gclear:N \g_@@_curr_series_tl
- \tl_gset_eq:NN \g_@@_nfss_enc_tl \g_fontspec_encoding_tl
-%<*LU>
- \tl_set:Nn \l_@@_mode_tl {node}
- \int_set:Nn \prehyphenchar { `\- } % fixme
- \int_zero:N \posthyphenchar % fixme
- \int_zero:N \preexhyphenchar % fixme
- \int_zero:N \postexhyphenchar % fixme
-%</LU>
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_init_fontface:}
-% Executed in \cs{@@_get_features:Nn}.
-% \begin{macrocode}
-\cs_new:Nn \@@_init_fontface:
- {
- \tl_gclear:N \g_@@_rawfeatures_sclist
- \tl_clear:N \l_@@_scale_tl
- \tl_set_eq:NN \l_@@_opacity_tl \c_@@_opacity_tl
- \tl_set_eq:NN \l_@@_hexcol_tl \c_@@_hexcol_tl
- \tl_set_eq:NN \l_@@_postadjust_tl \c_@@_postadjust_tl
- \tl_clear:N \l_@@_wordspace_adjust_tl
- \tl_clear:N \l_@@_punctspace_adjust_tl
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsection{Miscellaneous}
-%
-% \begin{macro}{\@@_ot_validate_tag:n}
-% This macro takes an OpenType tag and validates it.
-% \begin{macrocode}
-%<*LU>
-% \end{macrocode}
-% \begin{macrocode}
-\cs_new_protected:Nn \@@_ot_validate_tag:n
- {
- \@@_ot_validate_tag:w #1 \q_nil
- }
-\cs_generate_variant:Nn \@@_ot_validate_tag:n {x}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_set:Npn \@@_ot_validate_tag:w #1 #2 \q_nil
- {
- \bool_if:nTF { \str_if_eq_p:nn {#1} {+} || \str_if_eq_p:nn {#1} {-} }
- { \@@_ot_validate_tag_aux:w #2 \c_empty_tl \c_empty_tl \q_nil }
- { \@@_ot_validate_tag_aux:w #1#2 \c_empty_tl \c_empty_tl \q_nil }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_set:Npn \@@_ot_validate_tag_aux:w #1#2#3#4#5 \q_nil
- {
- \int_compare:nT { \tl_count:n {#5} > 2 }
- { \@@_error:nx {ot-tag-too-long} {#1#2#3#4#5} }
- }
-% \end{macrocode}
-% \begin{macrocode}
-%</LU>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_iv_str_to_num:Nn}
-% This macro takes a four character string and converts it to the
-% numerical representation required for \XeTeX\ OpenType script/language/feature
-% purposes. The output is stored in |#1|.
-%
-% This code is not used in Lua\TeX, as the checking for that engine is done via Lua code
-% provided by \pkg{luaotfload}.
-% \begin{macrocode}
-%<*XE>
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_iv_str_to_num:Nn
- {
-%<debug>\typeout{_iv_str_to_num:~#1~/~#2}
- \@@_strip_leading_sign:Nw #1#2 \q_nil
- }
-\cs_generate_variant:Nn \@@_iv_str_to_num:Nn {Nx}
-% \end{macrocode}
-%
-% The input can be of the form of any of these:
-% `|abcd|', `|abc|', `|abc |', `|ab|', `|ab |', \etc.
-% (It is assumed the first two chars are \emph{always} not spaces.) So this macro
-% reads in the string padded with \cmd\@empty s,
-% and anything beyond four chars is snipped. The \cmd\@empty s then are used to reconstruct
-% the spaces in the string to number calculation.
-%
-% For backwards compatibility this code also strips a leading |+| or |-|.
-%
-% \begin{macrocode}
-\cs_set:Npn \@@_strip_leading_sign:Nw #1#2#3 \q_nil
- {
- \bool_if:nTF { \str_if_eq_p:nn {#2} {+} || \str_if_eq_p:nn {#2} {-} }
- { \@@_iv_str_to_num:w #1 \q_nil #3 \c_empty_tl \c_empty_tl \q_nil }
- { \@@_iv_str_to_num:w #1 \q_nil #2#3 \c_empty_tl \c_empty_tl \q_nil }
- }
-% \end{macrocode}
-% If input string (after sign is stripped) is more than 4 chars, \verb|#6| will contain
-% `\meta{excess}\cs{c_empty_tl}\cs{c_empty_tl}'. Therefore use \verb|#6| to verify string length.
-% \begin{macrocode}
-\cs_set:Npn \@@_iv_str_to_num:w #1 \q_nil #2#3#4#5#6 \q_nil
- {
- \int_compare:nT { \tl_count:n {#6} > 2 }
- { \@@_error:nx {ot-tag-too-long} {#2#3#4#5#6} }
-
- \int_set:Nn #1
- {
- `#2 * "1000000
- + `#3 * "10000
- + \ifx \c_empty_tl #4 32 \else `#4 \fi * "100
- + \ifx \c_empty_tl #5 32 \else `#5 \fi
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-%</XE>
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \iffalse
-% \begin{macrocode}
-%</fontspec>
-% \end{macrocode}
-% \fi
-
-
-\endinput
-
-% /©
-% ------------------------------------------------
-% The FONTSPEC package <wspr.io/fontspec>
-% ------------------------------------------------
-% Copyright 2004-2020 Will Robertson, LPPL "maintainer"
-% Copyright 2009-2015 Khaled Hosny
-% Copyright 2013 Philipp Gesang
-% Copyright 2013-2016 Joseph Wright
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% ©/
diff --git a/macros/latex/contrib/fontspec/fontspec-code-keyval.dtx b/macros/latex/contrib/fontspec/fontspec-code-keyval.dtx
deleted file mode 100644
index 87a93c176b..0000000000
--- a/macros/latex/contrib/fontspec/fontspec-code-keyval.dtx
+++ /dev/null
@@ -1,905 +0,0 @@
-%%^^A%% fontspec-code-keyval.dtx -- part of FONTSPEC <wspr.io/fontspec>
-
-% \section{Font loading (\pkg{keyval}) definitions}
-%
-% \iffalse
-% \begin{macrocode}
-%<*fontspec>
-% \end{macrocode}
-% \fi
-%
-% This package uses a large number of keyval modules which operate sequentially on keyval
-% input to ensure priority.
-% \begin{macrocode}
-\clist_gset:Nn \g_@@_all_keyval_modules_clist
- {
- fontspec, fontspec-opentype, fontspec-aat,
- fontspec-preparse, fontspec-preparse-cfg, fontspec-preparse-external, fontspec-preparse-nested,
- fontspec-renderer
- }
-% \end{macrocode}
-%
-% Wrapper function to save some characters in the source:
-% \begin{macrocode}
-\cs_new:Nn \@@_keys_define_code:nnn
- {
- \keys_define:nn {#1} { #2 .code:n = {#3} }
- }
-% \end{macrocode}
-%
-% For catching features that cannot be used in |\addfontfeatures|:
-% \begin{macrocode}
-\cs_new:Nn \@@_aff_error:n
- {
- \@@_keys_define_code:nnn {fontspec-addfeatures} {#1}
- { \@@_error:nx {not-in-addfontfeatures} {#1} }
- }
-% \end{macrocode}
-%
-% \subsection{Pre-pre-parsing stages}
-%
-% These features are extracted from the font feature list before all others.
-%
-% \paragraph{Don't load font config file}
-% \begin{macrocode}
-\@@_keys_define_code:nnn {fontspec-preparse-cfg} {IgnoreFontspecFile}
- {
- \bool_set_false:N \l_@@_fontcfg_bool
- }
-\@@_keys_define_code:nnn {fontspec-preparse-external} {IgnoreFontspecFile}
- {
- \bool_set_false:N \l_@@_fontcfg_bool
- }
-% \end{macrocode}
-%
-% \begin{macro}{Path}
-% For fonts that aren't installed in the system. If no argument is given, the font is located
-% with |kpsewhich|; it's either in the current directory or the \TeX\ tree. Otherwise, the
-% argument given defines the file path of the font.
-% \begin{macrocode}
-\@@_keys_define_code:nnn {fontspec-preparse-external} {Path}
- {
- \bool_set_true:N \l_@@_nobf_bool
- \bool_set_true:N \l_@@_noit_bool
- \bool_set_true:N \l_@@_external_bool
- \tl_set:Nn \l_@@_font_path_tl {#1}
- \@@_font_is_file:
-%<*XE>
- \keys_set:nn {fontspec-renderer} {Renderer=OpenType}
-%</XE>
- }
-\aliasfontfeature{Path}{ExternalLocation}
-\@@_keys_define_code:nnn {fontspec} {Path} {}
-% \end{macrocode}
-% \end{macro}
-%
-% \paragraph{\feat{Extension}}
-% For fonts that aren't installed in the system. Specifies the font extension
-% to use.
-% \begin{macrocode}
-\@@_keys_define_code:nnn {fontspec-preparse-external} {Extension}
- {
- \tl_set:Nn \l_@@_extension_tl {#1}
- \bool_if:NF \l_@@_external_bool
- {
- \keys_set:nn {fontspec-preparse-external} {Path}
- }
- }
-\tl_clear:N \l_@@_extension_tl
-\@@_keys_define_code:nnn {fontspec} {Extension} {}
-% \end{macrocode}
-%
-%
-% \paragraph{\feat{Renderer}}
-% This feature must be processed before all others (the other font shape and features
-% options are also pre-parsed for convenience) because the renderer determines the format
-% of the features and whether certain features are available.
-% \begin{macrocode}
-%<*XE>
-\keys_define:nn {fontspec-renderer}
- {
- Renderer .choices:nn =
- {AAT,ICU,OpenType,Graphite,Full,Basic,Node,Base,HarfBuzz,Harfbuzz}
- {
- \int_compare:nTF {\l_keys_choice_int <= 4}
- {
- \tl_set:Nx \l_@@_renderer_tl
- {
- \int_case:nn \l_keys_choice_int { 1 {/AAT} 2 {/OT} 3 {/OT} 4 {/GR} }
- }
-%<debug>\typeout{Renderer:~ \l_@@_renderer_tl}
- \tl_gset:Nx \g_@@_single_feat_tl { \l_@@_renderer_tl }
- }
- {
- \@@_warning:nx {only-luatex-feature} {Renderer=Full/Basic/Node/Base/HarfBuzz}
- }
- }
- }
-%</XE>
-%<*LU>
-\keys_define:nn {fontspec-renderer}
- {
- Renderer .choices:nn =
- {Full,Node,Basic,Base,HarfBuzz,Harfbuzz,OpenType,AAT,Graphite}
- {
- \int_compare:nT {\l_keys_choice_int >= 5} { \bool_set_true:N \l_@@_harfbuzz_bool }
-
- \tl_set:Nx \l_@@_mode_tl
- {
- \int_case:nn \l_keys_choice_int { 1 {node} 2 {node} 3 {base} 4 {base} 5 {harf} 6 {harf} 7 {harf} 8 {harf} 9 {harf}}
- }
-
- \tl_set:Nx \l_@@_shaper_tl
- {
- \int_case:nn \l_keys_choice_int { 1 {} 2 {} 3 {} 4 {} 5 {} 6 {} 7 {ot} 8 {coretext_aat} 9 {graphite2} }
- }
-
-%<debug>\typeout{Mode:~"\l_@@_mode_tl"~/~Shaper:~"\l_@@_shaper_tl"}
-
- \tl_gset:Nx \g_@@_single_feat_tl
- {
- mode=\l_@@_mode_tl ;
- \tl_if_empty:NF \l_@@_shaper_tl { shaper=\l_@@_shaper_tl}
- }
- } ,
-
- Renderer unknown .code:n =
- {
- \bool_set_true:N \l_@@_harfbuzz_bool
- \@@_warning:nx {unknown-renderer} {#1}
- \tl_set:Nn \l_@@_mode_tl {harf}
- \tl_set:Nn \l_@@_shaper_tl {#1}
- } ,
- }
-%</LU>
-% \end{macrocode}
-%
-% \subsection{Pre-parsed features}
-%
-% \paragraph{OpenType script/language}
-% See later for the resolutions from \pkg{fontspec} features to OpenType definitions.
-% \begin{macrocode}
-\@@_keys_define_code:nnn {fontspec-preparse} {Script}
- {
-%<XE> \keys_set:nn {fontspec-renderer} {Renderer=OpenType}
- \tl_set:Nn \l_@@_script_name_tl {#1}
- }
-% \end{macrocode}
-% Exactly the same:
-% \begin{macrocode}
-\@@_keys_define_code:nnn {fontspec-preparse} {Language}
- {
-%<XE> \keys_set:nn {fontspec-renderer} {Renderer=OpenType}
- \tl_set:Nn \l_@@_lang_name_tl {#1}
- }
-% \end{macrocode}
-%
-%
-% \paragraph{TTC font index}
-% \begin{macrocode}
-\@@_keys_define_code:nnn {fontspec-preparse} {FontIndex}
- {
- \str_if_eq:eeF { \str_lowercase:f {\l_@@_extension_tl} } {.ttc}
- { \@@_warning:n {font-index-needs-ttc} }
-%<XE> \tl_set:Nn \l_@@_ttc_index_tl {:#1}
-%<LU> \tl_set:Nn \l_@@_ttc_index_tl {(#1)}
- }
-\@@_keys_define_code:nnn {fontspec} {FontIndex}
- {
-%<XE> \tl_set:Nn \l_@@_ttc_index_tl {:#1}
-%<LU> \tl_set:Nn \l_@@_ttc_index_tl {(#1)}
- }
-% \end{macrocode}
-%
-% \subsection{Font faces}
-%
-% \paragraph{Upright}
-% \begin{macrocode}
-\@@_keys_define_code:nnn {fontspec-preparse-external} {UprightFont}
- {
- \fontspec_complete_fontname:Nn \l_@@_fontname_up_tl {#1}
- }
-% \end{macrocode}
-%
-% \paragraph{Italic and slanted}
-% \begin{macrocode}
-\@@_keys_define_code:nnn {fontspec-preparse-external} {ItalicFont}
- {
- \tl_if_empty:nTF {#1}
- {
- \bool_set_true:N \l_@@_noit_bool
- }
- {
- \bool_set_false:N \l_@@_noit_bool
- \fontspec_complete_fontname:Nn \l_@@_fontname_it_tl {#1}
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\@@_keys_define_code:nnn {fontspec-preparse-external} {SlantedFont}
- {
- \fontspec_complete_fontname:Nn \l_@@_fontname_sl_tl {#1}
- }
-% \end{macrocode}
-%
-%
-% \paragraph{Bold (NFSS) Series}
-% By default, \pkg{fontspec} uses the default bold series, \cs{bfdefault}.
-% We want to be able to make this extensible. This code is not yet functional!
-% \begin{macrocode}
-%\@@_keys_define_code:nnn {fontspec-preparse-external} {BoldSeries}
-% {
-% \tl_gset:Nx \g_@@_curr_series_tl { #1 }
-% \seq_put_right:Nx \l_@@_bf_series_seq { #1 }
-% }
-% \end{macrocode}
-%
-% \paragraph{Bold}
-% This contains some stubb code to allow more than one bold font to be loaded.
-% \begin{macrocode}
-\@@_keys_define_code:nnn {fontspec-preparse-external} {BoldFont}
- {
- \tl_if_empty:nTF {#1}
- {
- \bool_set_true:N \l_@@_nobf_bool
- }
- {
- \bool_set_false:N \l_@@_nobf_bool
- \fontspec_complete_fontname:Nn \l_@@_curr_bfname_tl {#1}
-
- \seq_if_empty:NT \l_@@_bf_series_seq
- {
- \tl_gset:Nx \g_@@_curr_series_tl {\bfdefault}
- \seq_put_right:Nx \l_@@_bf_series_seq {\bfdefault}
- }
-
- \tl_if_eq:oxT \g_@@_curr_series_tl {\bfdefault}
- {
- \tl_set_eq:NN \l_@@_fontname_bf_tl \l_@@_curr_bfname_tl
- }
-
- \prop_put:NxV \l_@@_nfss_prop {BoldFont-\g_@@_curr_series_tl} \l_@@_curr_bfname_tl
-
-%<debug>\typeout{Setting~bold~font~"\l_@@_curr_bfname_tl"~with~series~"\g_@@_curr_series_tl"}
-
- }
- }
-% \end{macrocode}
-%
-% \paragraph{Bold italic/slanted}
-% \begin{macrocode}
-\@@_keys_define_code:nnn {fontspec-preparse-external} {BoldItalicFont}
- {
- \fontspec_complete_fontname:Nn \l_@@_fontname_bfit_tl {#1}
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\@@_keys_define_code:nnn {fontspec-preparse-external} {BoldSlantedFont}
- {
- \fontspec_complete_fontname:Nn \l_@@_fontname_bfsl_tl {#1}
- }
-% \end{macrocode}
-%
-% \paragraph{Small caps}
-% Small caps isn't pre-parsed because it can vary with others above:
-% \begin{macrocode}
-\@@_keys_define_code:nnn {fontspec} {SmallCapsFont}
- {
- \tl_if_empty:nTF {#1}
- {
- \bool_set_true:N \l_@@_nosc_bool
- }
- {
- \bool_set_false:N \l_@@_nosc_bool
- \fontspec_complete_fontname:Nn \l_@@_fontname_sc_tl {#1}
- }
- }
-% \end{macrocode}
-%
-%
-% \subsubsection{Preparsed font features}
-%
-% \begin{macrocode}
-\@@_keys_define_code:nnn {fontspec-preparse} {UprightFeatures}
- {
- \clist_put_right:Nn \l_@@_fontfeat_up_clist {#1}
- }
-\@@_keys_define_code:nnn {fontspec-preparse} {BoldFeatures}
- {
- \clist_put_right:Nn \l_@@_fontfeat_bf_clist {#1}
-
-% \prop_put:NxV \l_@@_nfss_prop
-% {BoldFont-\g_@@_curr_series_tl} \l_@@_curr_bfname_tl
- }
-\@@_keys_define_code:nnn {fontspec-preparse} {ItalicFeatures}
- {
- \clist_put_right:Nn \l_@@_fontfeat_it_clist {#1}
- }
-\@@_keys_define_code:nnn {fontspec-preparse} {BoldItalicFeatures}
- {
- \clist_put_right:Nn \l_@@_fontfeat_bfit_clist {#1}
- }
-\@@_keys_define_code:nnn {fontspec-preparse} {SlantedFeatures}
- {
- \clist_put_right:Nn \l_@@_fontfeat_sl_clist {#1}
- }
-\@@_keys_define_code:nnn {fontspec-preparse} {BoldSlantedFeatures}
- {
- \clist_put_right:Nn \l_@@_fontfeat_bfsl_clist {#1}
- }
-% \end{macrocode}
-% Note that small caps features can vary by shape, so these in fact \emph{aren't} pre-parsed.
-% \begin{macrocode}
-\@@_keys_define_code:nnn {fontspec} {SmallCapsFeatures}
- {
- \bool_if:NF \l_@@_firsttime_bool
- {
- \clist_put_right:Nn \l_@@_fontfeat_sc_clist {#1}
- }
- }
-% \end{macrocode}
-%
-% \paragraph{Features varying by size}
-% \begin{macrocode}
-\@@_keys_define_code:nnn {fontspec-preparse} {SizeFeatures}
- {
- \clist_set:Nn \l_@@_sizefeat_clist {#1}
- \clist_put_right:Nn \l_@@_fontfeat_up_clist { SizeFeatures = {#1} }
- }
-\@@_keys_define_code:nnn {fontspec-preparse-nested} {SizeFeatures}
- {
- \clist_set:Nn \l_@@_sizefeat_clist {#1}
- \tl_if_empty:NT \l_@@_this_font_tl
- { \tl_set:Nn \l_@@_this_font_tl { -- } } % needs to be non-empty as a flag
- }
-\@@_keys_define_code:nnn {fontspec-preparse-nested} {Font}
- {
- \tl_set:Nn \l_@@_this_font_tl {#1}
- }
-\@@_keys_define_code:nnn {fontspec} {SizeFeatures}
- {
- % dummy
- }
-\@@_keys_define_code:nnn {fontspec} {Font}
- {
- % dummy
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\@@_keys_define_code:nnn {fontspec-sizing} {Size}
- {
- \tl_set:Nn \l_@@_size_tl {#1}
- }
-\@@_keys_define_code:nnn {fontspec-sizing} {Font}
- {
- \fontspec_complete_fontname:Nn \l_@@_sizedfont_tl {#1}
- }
-% \end{macrocode}
-%
-% A hack to fix a test, needs to be investigated why necessary!
-% \begin{macrocode}
-\@@_keys_define_code:nnn {fontspec-opentype} {UprightFont} {}
-\@@_keys_define_code:nnn {fontspec-opentype} {ItalicFont} {}
-\@@_keys_define_code:nnn {fontspec-opentype} {SlantedFont} {}
-\@@_keys_define_code:nnn {fontspec-opentype} {BoldFont} {}
-\@@_keys_define_code:nnn {fontspec-opentype} {BoldItalicFont} {}
-\@@_keys_define_code:nnn {fontspec-opentype} {BoldSlantedFont} {}
-% \end{macrocode}
-%
-%
-%
-% \subsection{General font-independent features}
-%
-% These features can be applied to any font.
-%
-% \paragraph{NFSS encoding}
-% For the very brave.
-% \begin{macrocode}
-\@@_keys_define_code:nnn {fontspec-preparse} {NFSSEncoding}
- {
- \tl_gset:Nx \g_@@_nfss_enc_tl { #1 }
- }
-% \end{macrocode}
-%
-% \paragraph{NFSS family}
-% Interactions with other packages will sometimes require setting the NFSS family explicitly.
-% (By default \pkg{fontspec} auto-generates one based on the font name.)
-% \begin{macrocode}
-\@@_keys_define_code:nnn {fontspec-preparse} {NFSSFamily}
- {
- \tl_set:Nx \l_@@_nfss_fam_tl { #1 }
- }
-% \end{macrocode}
-%
-% \paragraph{NFSS series/shape}
-% This option looks similar in name but has a very different function.
-% \begin{macrocode}
-\@@_keys_define_code:nnn {fontspec-preparse} {FontFace}
- {
- \tl_clear:N \l_@@_this_font_tl
- \clist_set:No \l_@@_arg_clist { \use_iii:nnn #1 }
- \clist_set_eq:NN \l_@@_this_feat_clist \l_@@_arg_clist
- \int_compare:nT { \clist_count:N \l_@@_arg_clist = 1 }
- {
-%<debug>\typeout{FontFace~ parsing:~ one~ clist~ item}
- \tl_if_in:NnF \l_@@_arg_clist {=}
- {
-%<debug>\typeout{FontFace~ parsing:~ no~ equals~ =>~ font~ name~ only}
- \tl_set_eq:NN \l_@@_this_font_tl \l_@@_arg_clist
- \tl_clear:N \l_@@_this_feat_clist
- }
- }
-
- \@@_add_nfssfont:nnnn
- {\use_i:nnn #1} {\use_ii:nnn #1} {\l_@@_this_font_tl} {\l_@@_this_feat_clist}
- }
-% \end{macrocode}
-%
-%
-%
-% \paragraph{Scale}
-% If the input isn't one of the pre-defined string options, then
-% it's gotta be numerical. \cs{fontspec_calc_scale:n} does all the work in
-% the auto-scaling cases.
-% \begin{macrocode}
-\@@_keys_define_code:nnn {fontspec} {Scale}
- {
- \str_case:nnF {#1}
- {
- {MatchLowercase} { \@@_calc_scale:n {5} }
- {MatchUppercase} { \@@_calc_scale:n {8} }
- }
- { \tl_set:Nx \l_@@_scale_tl {#1} }
- }
-% \end{macrocode}
-%
-% \paragraph{ScaleAgain}
-% \begin{macrocode}
-\@@_keys_define_code:nnn {fontspec} {ScaleAgain}
- {
- \tl_if_empty:NT \l_@@_scale_tl { \tl_set:Nn \l_@@_scale_tl {1} }
- \tl_set:Nx \l_@@_scale_tl { \fp_eval:n { #1 * \l_@@_scale_tl } }
- \@@_info:n {set-scale}
- }
-% \end{macrocode}
-%
-% \begin{macro}{\@@_calc_scale:n}
-% This macro calculates the amount of scaling between the default
-% roman font and the (default shape of) the font being selected such
-% that the font dimension that is input is equal for both. The only
-% font dimensions that justify this are 5 (lowercase height)
-% and 8 (uppercase height in \XeTeX).
-%
-% This script is executed for every extra shape, which seems wasteful,
-% but allows alternate italic shapes from a separate font, say, to
-% be loaded and to be auto-scaled correctly. Even if this would be ugly.
-%
-% To begin, change to \cs{rmfamily} but use internal commands in case cs{rmfamily}
-% has been overwritten.
-% (Note that changing \cs{rmfamily} with fontspec resets \cs{encodingdefault}
-% appropriately.)
-% \begin{macrocode}
-\cs_new:Nn \@@_calc_scale:n
- {
- \group_begin:
-
- \fontencoding { \encodingdefault }
- \fontfamily { \familydefault }
- \selectfont
-
- \@@_set_font_dimen:NnN \l_@@_tmpa_dim {#1} \font
- \@@_set_font_dimen:NnN \l_@@_tmpb_dim {#1} \l_@@_fontface_cs_tl
-
- \tl_set:Nx \l_@@_scale_tl
- {
- \fp_eval:n { \dim_to_fp:n {\l_@@_tmpa_dim} /
- \dim_to_fp:n {\l_@@_tmpb_dim} }
- }
-
- \@@_info:n {set-scale}
- \exp_args:NNNx
- \group_end:
- \tl_set:Nx \l_@@_scale_tl { \l_@@_scale_tl }
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\@@_set_font_dimen:NnN}
-% This function sets the dimension |#1| (for font |#3|) to `fontdimen' |#2|
-% for either font dimension 5 (x-height) or 8 (cap-height). If, for some
-% reason, these return an incorrect `zero' value (as \cs{fontdimen8} might
-% for a \texttt{.tfm} font), then we cheat and measure the height of a glyph.
-% We assume in this case that the font contains either an `X' or an `x'.
-% \begin{macrocode}
-\cs_new:Nn \@@_set_font_dimen:NnN
- {
- \dim_set:Nn #1 { \fontdimen #2 #3 }
- \dim_compare:nNnT #1 = {0pt}
- {
- \settoheight #1
- {
- \str_if_eq:nnTF {#3} {\font} \rmfamily #3
- \int_case:nnF #2
- {
- {5} {x} % x-height
- {8} {X} % cap-height
- } {?} % "else" clause; never reached.
- }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \paragraph{Inter-word space}
-% These options set the relevant \cmd\fontdimen s for the
-% font being loaded.
-% \begin{macrocode}
-\@@_keys_define_code:nnn {fontspec} {WordSpace}
- {
- \bool_if:NF \l_@@_firsttime_bool
- { \_fontspec_parse_wordspace:w #1,,,\q_stop }
- }
-\@@_aff_error:n {WordSpace}
-% \end{macrocode}
-%
-% \begin{macro}{\_fontspec_parse_wordspace:w}
-% This macro determines if the input to \feat{WordSpace} is
-% of the form |{X}| or |{X,Y,Z}| and executes the font scaling.
-% If the former input, it executes |{X,X,X}|.
-% \begin{macrocode}
-\cs_set:Npn \_fontspec_parse_wordspace:w #1,#2,#3,#4 \q_stop
- {
- \tl_if_empty:nTF {#4}
- {
- \tl_set:Nn \l_@@_wordspace_adjust_tl
- {
- \fontdimen 2 \font = #1 \fontdimen 2 \font
- \fontdimen 3 \font = #1 \fontdimen 3 \font
- \fontdimen 4 \font = #1 \fontdimen 4 \font
- }
- }
- {
- \tl_set:Nn \l_@@_wordspace_adjust_tl
- {
- \fontdimen 2 \font = #1 \fontdimen 2 \font
- \fontdimen 3 \font = #2 \fontdimen 3 \font
- \fontdimen 4 \font = #3 \fontdimen 4 \font
- }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \paragraph{Punctuation space}
-% Scaling factor for the nominal \cmd\fontdimen \#7.
-% \begin{macrocode}
-\@@_keys_define_code:nnn {fontspec} {PunctuationSpace}
- {
- \str_case_e:nnF {#1}
- {
- {WordSpace}
- {
- \tl_set:Nn \l_@@_punctspace_adjust_tl
- { \fontdimen 7 \font = 0 \fontdimen 2 \font }
- }
- {TwiceWordSpace}
- {
- \tl_set:Nn \l_@@_punctspace_adjust_tl
- { \fontdimen 7 \font = 1 \fontdimen 2 \font }
- }
- }
- {
- \tl_set:Nn \l_@@_punctspace_adjust_tl
- { \fontdimen 7 \font = #1 \fontdimen 7 \font }
- }
- }
-\@@_aff_error:n {PunctuationSpace}
-% \end{macrocode}
-%
-% \paragraph{Secret hook into the font-adjustment code}
-%
-% \begin{macrocode}
-\@@_keys_define_code:nnn {fontspec} {FontAdjustment}
- {
- \tl_put_right:Nx \l_@@_postadjust_tl {#1}
- }
-% \end{macrocode}
-%
-% \paragraph{Letterspacing}
-% \begin{macrocode}
-\@@_keys_define_code:nnn {fontspec} {LetterSpace}
- {
- \@@_update_featstr:n {letterspace=#1}
- }
-% \end{macrocode}
-%
-% \paragraph{Hyphenation character}
-% This feature takes one of three arguments: `\opt{None}',
-% \meta{glyph}, or \meta{slot}. If the input isn't the first,
-% and it's one character, then it's the second; otherwise, it's
-% the third.
-%
-% LuaTeX decouples hyphenation from font settings, so only \verb|HyphenChar=None| works
-% for that engine.
-% \begin{macrocode}
-\@@_keys_define_code:nnn {fontspec} {HyphenChar}
- {
- \str_if_eq:nnTF {#1} {None}
- {
- \tl_put_right:Nn \l_@@_postadjust_tl
- { \@@_primitive_font_set_hyphenchar:Nn \font {-1} }
- }
- {
-%<LU> \@@_warning:nx {only-xetex-feature} {HyphenChar}
-
- \tl_if_single:nTF {#1}
- { \tl_set:Nn \l_@@_hyphenchar_tl {`#1} }
- { \tl_set:Nn \l_@@_hyphenchar_tl { #1} }
-
- \exp_args:No \@@_primitive_font_glyph_if_exist:NnTF \l_@@_fontface_cs_tl {\l_@@_hyphenchar_tl}
- {
- \tl_put_right:Nn \l_@@_postadjust_tl
- { \@@_primitive_font_set_hyphenchar:Nn \font { \l_@@_hyphenchar_tl } }
- }
- { \@@_error:nxx {no-glyph}{\l_fontspec_fontname_tl}{#1} }
-
- }
- }
-\@@_aff_error:n {HyphenChar}
-% \end{macrocode}
-%
-% \paragraph{Color}
-% Hooks into pkg{xcolor}, which names its colours \texttt{\char`\\color@<name>}.
-% \begin{macrocode}
-\@@_keys_define_code:nnn {fontspec} {Color}
- {
- \cs_if_exist:cTF { \token_to_str:N \color@ #1 }
- {
- \convertcolorspec{named}{#1}{HTML}\l_@@_hexcol_tl
- }
- {
- \int_compare:nTF { \tl_count:n {#1} == 6 }
- { \tl_set:Nn \l_@@_hexcol_tl {#1} }
- {
- \int_compare:nTF { \tl_count:n {#1} == 8 }
- { \fontspec_parse_colour:viii #1 }
- {
- \bool_if:NF \l_@@_firsttime_bool
- { \@@_warning:nx {bad-colour} {#1} }
- }
- }
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_set:Npn \fontspec_parse_colour:viii #1#2#3#4#5#6#7#8
- {
- \tl_set:Nn \l_@@_hexcol_tl {#1#2#3#4#5#6}
- \tl_if_eq:NNF \l_@@_opacity_tl \c_@@_opacity_tl
- {
- \bool_if:NF \l_@@_firsttime_bool
- { \@@_warning:nx {opa-twice-col} {#7#8} }
- }
- \tl_set:Nn \l_@@_opacity_tl {#7#8}
- }
-\aliasfontfeature{Color}{Colour}
-% \end{macrocode}
-% \begin{macrocode}
-\@@_keys_define_code:nnn {fontspec} {Opacity}
- {
- \int_set:Nn \l_@@_tmp_int {255}
- \@@_int_mult_truncate:Nn \l_@@_tmp_int { #1 }
- \tl_if_eq:NNF \l_@@_opacity_tl \c_@@_opacity_tl
- {
- \bool_if:NF \l_@@_firsttime_bool
- { \@@_warning:nx {opa-twice} {#1} }
- }
- \tl_set:Nx \l_@@_opacity_tl
- {
- \int_compare:nT { \l_@@_tmp_int <= "F } {0} % zero pad
- \int_to_hex:n { \l_@@_tmp_int }
- }
- }
-% \end{macrocode}
-%
-%
-% \paragraph{Mapping}
-% \begin{macrocode}
-%<*XE>
-\@@_keys_define_code:nnn {fontspec-aat} {Mapping}
- {
- \tl_set:Nn \l_@@_mapping_tl { #1 }
- }
-\@@_keys_define_code:nnn {fontspec-opentype} {Mapping}
- {
- \tl_set:Nn \l_@@_mapping_tl { #1 }
- }
-%</XE>
-%<*LU>
-\@@_keys_define_code:nnn {fontspec-opentype} {Mapping}
- {
- \str_if_eq:nnTF {#1} {tex-text}
- {
- \@@_warning:n {no-mapping-ligtex}
- \msg_redirect_name:nnn {fontspec} {no-mapping-ligtex} {none}
- \keys_set:nn {fontspec-opentype} { Ligatures=TeX }
- }
- { \@@_warning:n {no-mapping} }
- }
-%</LU>
-% \end{macrocode}
-%
-%
-% \subsubsection{Continuous font axes}
-%
-% \begin{macrocode}
-\@@_keys_define_code:nnn {fontspec} {Weight}
- {
- \@@_update_featstr:n{weight=#1}
- }
-\@@_keys_define_code:nnn {fontspec} {Width}
- {
- \@@_update_featstr:n{width=#1}
- }
-\@@_keys_define_code:nnn {fontspec} {OpticalSize}
-%<*XE>
- {
- \bool_if:NTF \l_@@_ot_bool
- {
- \tl_set:Nn \l_@@_optical_size_tl {/ S = #1}
- }
- {
- \bool_if:NT \l_@@_mm_bool
- {
- \@@_update_featstr:n { optical size = #1 }
- }
- }
- \bool_if:nT { !\l_@@_ot_bool && !\l_@@_mm_bool }
- {
- \bool_if:NT \l_@@_firsttime_bool
- { \@@_warning:nx {no-opticals} {\l_fontspec_fontname_tl} }
- }
- }
-%</XE>
-%<*LU>
- {
- \tl_set:Nn \l_@@_optical_size_tl {/ S = #1}
- }
-%</LU>
-% \end{macrocode}
-%
-% \subsubsection{Font transformations}
-% These are to be specified to apply directly to a font shape:
-% \begin{macrocode}
-\keys_define:nn {fontspec}
- {
- FakeSlant .code:n =
- {
- \@@_update_featstr:n {slant=#1}
- },
- FakeSlant .default:n = {0.2}
- }
-\keys_define:nn {fontspec}
- {
- FakeStretch .code:n =
- {
- \@@_update_featstr:n {extend=#1}
- },
- FakeStretch .default:n = {1.2}
- }
-\keys_define:nn {fontspec}
- {
- FakeBold .code:n =
- {
- \@@_update_featstr:n {embolden=#1}
- },
- FakeBold .default:n = {1.5}
- }
-% \end{macrocode}
-% These are to be given to a shape that has no real bold/italic
-% to signal that \pkg{fontspec} should automatically create `fake' shapes.
-%
-% The behaviour is currently that only if both \opt{AutoFakeSlant} \emph{and}
-% \opt{AutoFakeBold} are specified, the bold italic is also faked.
-%
-% These features presently \emph{override} real shapes found in the font;
-% in the future I'd like these features to be ignored in this case, instead.
-% (This is just a bit harder to program in the current design of
-% \pkg{fontspec}.)
-% \begin{macrocode}
-\keys_define:nn {fontspec}
- {
- AutoFakeSlant .code:n =
- {
- \bool_if:NT \l_@@_firsttime_bool
- {
- \tl_set:Nn \l_@@_fake_slant_tl {#1}
- \clist_put_right:Nn \l_@@_fontfeat_it_clist {FakeSlant=#1}
- \tl_set_eq:NN \l_@@_fontname_it_tl \l_fontspec_fontname_tl
- \bool_set_false:N \l_@@_noit_bool
-
- \tl_if_empty:NF \l_@@_fake_embolden_tl
- {
- \clist_put_right:Nx \l_@@_fontfeat_bfit_clist
- {FakeBold=\l_@@_fake_embolden_tl}
- \clist_put_right:Nx \l_@@_fontfeat_bfit_clist {FakeSlant=#1}
- \tl_set_eq:NN \l_@@_fontname_bfit_tl \l_fontspec_fontname_tl
- }
- }
- },
- AutoFakeSlant .default:n = {0.2}
- }
-% \end{macrocode}
-% Same but reversed:
-% \begin{macrocode}
-\keys_define:nn {fontspec}
- {
- AutoFakeBold .code:n =
- {
- \bool_if:NT \l_@@_firsttime_bool
- {
- \tl_set:Nn \l_@@_fake_embolden_tl {#1}
- \clist_put_right:Nn \l_@@_fontfeat_bf_clist {FakeBold=#1}
- \tl_set_eq:NN \l_@@_fontname_bf_tl \l_fontspec_fontname_tl
- \bool_set_false:N \l_@@_nobf_bool
-
- \tl_if_empty:NF \l_@@_fake_slant_tl
- {
- \clist_put_right:Nx \l_@@_fontfeat_bfit_clist
- {FakeSlant=\l_@@_fake_slant_tl}
- \clist_put_right:Nx \l_@@_fontfeat_bfit_clist {FakeBold=#1}
- \tl_set_eq:NN \l_@@_fontname_bfit_tl \l_fontspec_fontname_tl
- }
- }
- },
- AutoFakeBold .default:n = {1.5}
- }
-% \end{macrocode}
-%
-%
-% \subsubsection{Raw feature string}
-% This allows savvy \XeTeX-ers to input font features manually if they have
-% already memorised the OpenType abbreviations and don't mind not having error checking.
-% \begin{macrocode}
-\@@_keys_define_code:nnn {fontspec-opentype} {RawFeature}
- {
- \@@_update_featstr:n {#1}
- }
-\@@_keys_define_code:nnn {fontspec-aat} {RawFeature}
- {
- \@@_update_featstr:n {#1}
- }
-% \end{macrocode}
-%
-%
-%
-%
-% \iffalse
-% \begin{macrocode}
-%</fontspec>
-% \end{macrocode}
-% \fi
-
-
-\endinput
-
-% /©
-% ------------------------------------------------
-% The FONTSPEC package <wspr.io/fontspec>
-% ------------------------------------------------
-% Copyright 2004-2020 Will Robertson, LPPL "maintainer"
-% Copyright 2009-2015 Khaled Hosny
-% Copyright 2013 Philipp Gesang
-% Copyright 2013-2016 Joseph Wright
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% ©/
diff --git a/macros/latex/contrib/fontspec/fontspec-code-lang.dtx b/macros/latex/contrib/fontspec/fontspec-code-lang.dtx
deleted file mode 100644
index f9ea7f6cd7..0000000000
--- a/macros/latex/contrib/fontspec/fontspec-code-lang.dtx
+++ /dev/null
@@ -1,419 +0,0 @@
-%%^^A%% fontspec-code-lang.dtx -- part of FONTSPEC <wspr.io/fontspec>
-
-% \section{Font language definitions}
-%
-% \iffalse
-% \begin{macrocode}
-%<*fontspec>
-% \end{macrocode}
-% \fi
-%
-% \begin{macrocode}
-\newfontlanguage{Abaza}{ABA}
-\newfontlanguage{Abkhazian}{ABK}
-\newfontlanguage{Adyghe}{ADY}
-\newfontlanguage{Afrikaans}{AFK}
-\newfontlanguage{Afar}{AFR}
-\newfontlanguage{Agaw}{AGW}
-\newfontlanguage{Altai}{ALT}
-\newfontlanguage{Amharic}{AMH}
-\newfontlanguage{Arabic}{ARA}
-\newfontlanguage{Aari}{ARI}
-\newfontlanguage{Arakanese}{ARK}
-\newfontlanguage{Assamese}{ASM}
-\newfontlanguage{Athapaskan}{ATH}
-\newfontlanguage{Avar}{AVR}
-\newfontlanguage{Awadhi}{AWA}
-\newfontlanguage{Aymara}{AYM}
-\newfontlanguage{Azeri}{AZE}
-\newfontlanguage{Badaga}{BAD}
-\newfontlanguage{Baghelkhandi}{BAG}
-\newfontlanguage{Balkar}{BAL}
-\newfontlanguage{Baule}{BAU}
-\newfontlanguage{Berber}{BBR}
-\newfontlanguage{Bench}{BCH}
-\newfontlanguage{Bible~Cree}{BCR}
-\newfontlanguage{Belarussian}{BEL}
-\newfontlanguage{Bemba}{BEM}
-\newfontlanguage{Bengali}{BEN}
-\newfontlanguage{Bulgarian}{BGR}
-\newfontlanguage{Bhili}{BHI}
-\newfontlanguage{Bhojpuri}{BHO}
-\newfontlanguage{Bikol}{BIK}
-\newfontlanguage{Bilen}{BIL}
-\newfontlanguage{Blackfoot}{BKF}
-\newfontlanguage{Balochi}{BLI}
-\newfontlanguage{Balante}{BLN}
-\newfontlanguage{Balti}{BLT}
-\newfontlanguage{Bambara}{BMB}
-\newfontlanguage{Bamileke}{BML}
-\newfontlanguage{Breton}{BRE}
-\newfontlanguage{Brahui}{BRH}
-\newfontlanguage{Braj~Bhasha}{BRI}
-\newfontlanguage{Burmese}{BRM}
-\newfontlanguage{Bashkir}{BSH}
-\newfontlanguage{Beti}{BTI}
-\newfontlanguage{Catalan}{CAT}
-\newfontlanguage{Cebuano}{CEB}
-\newfontlanguage{Chechen}{CHE}
-\newfontlanguage{Chaha~Gurage}{CHG}
-\newfontlanguage{Chattisgarhi}{CHH}
-\newfontlanguage{Chichewa}{CHI}
-\newfontlanguage{Chukchi}{CHK}
-\newfontlanguage{Chipewyan}{CHP}
-\newfontlanguage{Cherokee}{CHR}
-\newfontlanguage{Chuvash}{CHU}
-\newfontlanguage{Comorian}{CMR}
-\newfontlanguage{Coptic}{COP}
-\newfontlanguage{Cree}{CRE}
-\newfontlanguage{Carrier}{CRR}
-\newfontlanguage{Crimean~Tatar}{CRT}
-\newfontlanguage{Church~Slavonic}{CSL}
-\newfontlanguage{Czech}{CSY}
-\newfontlanguage{Danish}{DAN}
-\newfontlanguage{Dargwa}{DAR}
-\newfontlanguage{Woods~Cree}{DCR}
-\newfontlanguage{German}{DEU}
-\newfontlanguage{Dogri}{DGR}
-\newfontlanguage{Divehi}{DIV}
-\newfontlanguage{Djerma}{DJR}
-\newfontlanguage{Dangme}{DNG}
-\newfontlanguage{Dinka}{DNK}
-\newfontlanguage{Dungan}{DUN}
-\newfontlanguage{Dzongkha}{DZN}
-\newfontlanguage{Ebira}{EBI}
-\newfontlanguage{Eastern~Cree}{ECR}
-\newfontlanguage{Edo}{EDO}
-\newfontlanguage{Efik}{EFI}
-\newfontlanguage{Greek}{ELL}
-\newfontlanguage{English}{ENG}
-\newfontlanguage{Erzya}{ERZ}
-\newfontlanguage{Spanish}{ESP}
-\newfontlanguage{Estonian}{ETI}
-\newfontlanguage{Basque}{EUQ}
-\newfontlanguage{Evenki}{EVK}
-\newfontlanguage{Even}{EVN}
-\newfontlanguage{Ewe}{EWE}
-\newfontlanguage{French~Antillean}{FAN}
-\newfontlanguage{Farsi}{FAR}
-\newfontlanguage{Parsi}{FAR}
-\newfontlanguage{Persian}{FAR}
-\newfontlanguage{Finnish}{FIN}
-\newfontlanguage{Fijian}{FJI}
-\newfontlanguage{Flemish}{FLE}
-\newfontlanguage{Forest~Nenets}{FNE}
-\newfontlanguage{Fon}{FON}
-\newfontlanguage{Faroese}{FOS}
-\newfontlanguage{French}{FRA}
-\newfontlanguage{Frisian}{FRI}
-\newfontlanguage{Friulian}{FRL}
-\newfontlanguage{Futa}{FTA}
-\newfontlanguage{Fulani}{FUL}
-\newfontlanguage{Ga}{GAD}
-\newfontlanguage{Gaelic}{GAE}
-\newfontlanguage{Gagauz}{GAG}
-\newfontlanguage{Galician}{GAL}
-\newfontlanguage{Garshuni}{GAR}
-\newfontlanguage{Garhwali}{GAW}
-\newfontlanguage{Ge'ez}{GEZ}
-\newfontlanguage{Gilyak}{GIL}
-\newfontlanguage{Gumuz}{GMZ}
-\newfontlanguage{Gondi}{GON}
-\newfontlanguage{Greenlandic}{GRN}
-\newfontlanguage{Garo}{GRO}
-\newfontlanguage{Guarani}{GUA}
-\newfontlanguage{Gujarati}{GUJ}
-\newfontlanguage{Haitian}{HAI}
-\newfontlanguage{Halam}{HAL}
-\newfontlanguage{Harauti}{HAR}
-\newfontlanguage{Hausa}{HAU}
-\newfontlanguage{Hawaiin}{HAW}
-\newfontlanguage{Hammer-Banna}{HBN}
-\newfontlanguage{Hiligaynon}{HIL}
-\newfontlanguage{Hindi}{HIN}
-\newfontlanguage{High~Mari}{HMA}
-\newfontlanguage{Hindko}{HND}
-\newfontlanguage{Ho}{HO}
-\newfontlanguage{Harari}{HRI}
-\newfontlanguage{Croatian}{HRV}
-\newfontlanguage{Hungarian}{HUN}
-\newfontlanguage{Armenian}{HYE}
-\newfontlanguage{Igbo}{IBO}
-\newfontlanguage{Ijo}{IJO}
-\newfontlanguage{Ilokano}{ILO}
-\newfontlanguage{Indonesian}{IND}
-\newfontlanguage{Ingush}{ING}
-\newfontlanguage{Inuktitut}{INU}
-\newfontlanguage{Irish}{IRI}
-\newfontlanguage{Irish~Traditional}{IRT}
-\newfontlanguage{Icelandic}{ISL}
-\newfontlanguage{Inari~Sami}{ISM}
-\newfontlanguage{Italian}{ITA}
-\newfontlanguage{Hebrew}{IWR}
-\newfontlanguage{Javanese}{JAV}
-\newfontlanguage{Yiddish}{JII}
-\newfontlanguage{Japanese}{JAN}
-\newfontlanguage{Judezmo}{JUD}
-\newfontlanguage{Jula}{JUL}
-\newfontlanguage{Kabardian}{KAB}
-\newfontlanguage{Kachchi}{KAC}
-\newfontlanguage{Kalenjin}{KAL}
-\newfontlanguage{Kannada}{KAN}
-\newfontlanguage{Karachay}{KAR}
-\newfontlanguage{Georgian}{KAT}
-\newfontlanguage{Kazakh}{KAZ}
-\newfontlanguage{Kebena}{KEB}
-\newfontlanguage{Khutsuri~Georgian}{KGE}
-\newfontlanguage{Khakass}{KHA}
-\newfontlanguage{Khanty-Kazim}{KHK}
-\newfontlanguage{Khmer}{KHM}
-\newfontlanguage{Khanty-Shurishkar}{KHS}
-\newfontlanguage{Khanty-Vakhi}{KHV}
-\newfontlanguage{Khowar}{KHW}
-\newfontlanguage{Kikuyu}{KIK}
-\newfontlanguage{Kirghiz}{KIR}
-\newfontlanguage{Kisii}{KIS}
-\newfontlanguage{Kokni}{KKN}
-\newfontlanguage{Kalmyk}{KLM}
-\newfontlanguage{Kamba}{KMB}
-\newfontlanguage{Kumaoni}{KMN}
-\newfontlanguage{Komo}{KMO}
-\newfontlanguage{Komso}{KMS}
-\newfontlanguage{Kanuri}{KNR}
-\newfontlanguage{Kodagu}{KOD}
-\newfontlanguage{Korean~Old~Hangul}{KOH}
-\newfontlanguage{Konkani}{KOK}
-\newfontlanguage{Kikongo}{KON}
-\newfontlanguage{Komi-Permyak}{KOP}
-\newfontlanguage{Korean}{KOR}
-\newfontlanguage{Komi-Zyrian}{KOZ}
-\newfontlanguage{Kpelle}{KPL}
-\newfontlanguage{Krio}{KRI}
-\newfontlanguage{Karakalpak}{KRK}
-\newfontlanguage{Karelian}{KRL}
-\newfontlanguage{Karaim}{KRM}
-\newfontlanguage{Karen}{KRN}
-\newfontlanguage{Koorete}{KRT}
-\newfontlanguage{Kashmiri}{KSH}
-\newfontlanguage{Khasi}{KSI}
-\newfontlanguage{Kildin~Sami}{KSM}
-\newfontlanguage{Kui}{KUI}
-\newfontlanguage{Kulvi}{KUL}
-\newfontlanguage{Kumyk}{KUM}
-\newfontlanguage{Kurdish}{KUR}
-\newfontlanguage{Kurukh}{KUU}
-\newfontlanguage{Kuy}{KUY}
-\newfontlanguage{Koryak}{KYK}
-\newfontlanguage{Ladin}{LAD}
-\newfontlanguage{Lahuli}{LAH}
-\newfontlanguage{Lak}{LAK}
-\newfontlanguage{Lambani}{LAM}
-\newfontlanguage{Lao}{LAO}
-\newfontlanguage{Latin}{LAT}
-\newfontlanguage{Laz}{LAZ}
-\newfontlanguage{L-Cree}{LCR}
-\newfontlanguage{Ladakhi}{LDK}
-\newfontlanguage{Lezgi}{LEZ}
-\newfontlanguage{Lingala}{LIN}
-\newfontlanguage{Low~Mari}{LMA}
-\newfontlanguage{Limbu}{LMB}
-\newfontlanguage{Lomwe}{LMW}
-\newfontlanguage{Lower~Sorbian}{LSB}
-\newfontlanguage{Lule~Sami}{LSM}
-\newfontlanguage{Lithuanian}{LTH}
-\newfontlanguage{Luba}{LUB}
-\newfontlanguage{Luganda}{LUG}
-\newfontlanguage{Luhya}{LUH}
-\newfontlanguage{Luo}{LUO}
-\newfontlanguage{Latvian}{LVI}
-\newfontlanguage{Majang}{MAJ}
-\newfontlanguage{Makua}{MAK}
-\newfontlanguage{Malayalam~Traditional}{MAL}
-\newfontlanguage{Mansi}{MAN}
-\newfontlanguage{Marathi}{MAR}
-\newfontlanguage{Marwari}{MAW}
-\newfontlanguage{Mbundu}{MBN}
-\newfontlanguage{Manchu}{MCH}
-\newfontlanguage{Moose~Cree}{MCR}
-\newfontlanguage{Mende}{MDE}
-\newfontlanguage{Me'en}{MEN}
-\newfontlanguage{Mizo}{MIZ}
-\newfontlanguage{Macedonian}{MKD}
-\newfontlanguage{Male}{MLE}
-\newfontlanguage{Malagasy}{MLG}
-\newfontlanguage{Malinke}{MLN}
-\newfontlanguage{Malayalam~Reformed}{MLR}
-\newfontlanguage{Malay}{MLY}
-\newfontlanguage{Mandinka}{MND}
-\newfontlanguage{Mongolian}{MNG}
-\newfontlanguage{Manipuri}{MNI}
-\newfontlanguage{Maninka}{MNK}
-\newfontlanguage{Manx~Gaelic}{MNX}
-\newfontlanguage{Moksha}{MOK}
-\newfontlanguage{Moldavian}{MOL}
-\newfontlanguage{Mon}{MON}
-\newfontlanguage{Moroccan}{MOR}
-\newfontlanguage{Maori}{MRI}
-\newfontlanguage{Maithili}{MTH}
-\newfontlanguage{Maltese}{MTS}
-\newfontlanguage{Mundari}{MUN}
-\newfontlanguage{Naga-Assamese}{NAG}
-\newfontlanguage{Nanai}{NAN}
-\newfontlanguage{Naskapi}{NAS}
-\newfontlanguage{N-Cree}{NCR}
-\newfontlanguage{Ndebele}{NDB}
-\newfontlanguage{Ndonga}{NDG}
-\newfontlanguage{Nepali}{NEP}
-\newfontlanguage{Newari}{NEW}
-\newfontlanguage{Nagari}{NGR}
-\newfontlanguage{Norway~House~Cree}{NHC}
-\newfontlanguage{Nisi}{NIS}
-\newfontlanguage{Niuean}{NIU}
-\newfontlanguage{Nkole}{NKL}
-\newfontlanguage{N'ko}{NKO}
-\newfontlanguage{Dutch}{NLD}
-\newfontlanguage{Nogai}{NOG}
-\newfontlanguage{Norwegian}{NOR}
-\newfontlanguage{Northern~Sami}{NSM}
-\newfontlanguage{Northern~Tai}{NTA}
-\newfontlanguage{Esperanto}{NTO}
-\newfontlanguage{Nynorsk}{NYN}
-\newfontlanguage{Oji-Cree}{OCR}
-\newfontlanguage{Ojibway}{OJB}
-\newfontlanguage{Oriya}{ORI}
-\newfontlanguage{Oromo}{ORO}
-\newfontlanguage{Ossetian}{OSS}
-\newfontlanguage{Palestinian~Aramaic}{PAA}
-\newfontlanguage{Pali}{PAL}
-\newfontlanguage{Punjabi}{PAN}
-\newfontlanguage{Palpa}{PAP}
-\newfontlanguage{Pashto}{PAS}
-\newfontlanguage{Polytonic~Greek}{PGR}
-\newfontlanguage{Pilipino}{PIL}
-\newfontlanguage{Palaung}{PLG}
-\newfontlanguage{Polish}{PLK}
-\newfontlanguage{Provencal}{PRO}
-\newfontlanguage{Portuguese}{PTG}
-\newfontlanguage{Chin}{QIN}
-\newfontlanguage{Rajasthani}{RAJ}
-\newfontlanguage{R-Cree}{RCR}
-\newfontlanguage{Russian~Buriat}{RBU}
-\newfontlanguage{Riang}{RIA}
-\newfontlanguage{Rhaeto-Romanic}{RMS}
-\newfontlanguage{Romanian}{ROM}
-\newfontlanguage{Romany}{ROY}
-\newfontlanguage{Rusyn}{RSY}
-\newfontlanguage{Ruanda}{RUA}
-\newfontlanguage{Russian}{RUS}
-\newfontlanguage{Sadri}{SAD}
-\newfontlanguage{Sanskrit}{SAN}
-\newfontlanguage{Santali}{SAT}
-\newfontlanguage{Sayisi}{SAY}
-\newfontlanguage{Sekota}{SEK}
-\newfontlanguage{Selkup}{SEL}
-\newfontlanguage{Sango}{SGO}
-\newfontlanguage{Shan}{SHN}
-\newfontlanguage{Sibe}{SIB}
-\newfontlanguage{Sidamo}{SID}
-\newfontlanguage{Silte~Gurage}{SIG}
-\newfontlanguage{Skolt~Sami}{SKS}
-\newfontlanguage{Slovak}{SKY}
-\newfontlanguage{Slavey}{SLA}
-\newfontlanguage{Slovenian}{SLV}
-\newfontlanguage{Somali}{SML}
-\newfontlanguage{Samoan}{SMO}
-\newfontlanguage{Sena}{SNA}
-\newfontlanguage{Sindhi}{SND}
-\newfontlanguage{Sinhalese}{SNH}
-\newfontlanguage{Soninke}{SNK}
-\newfontlanguage{Sodo~Gurage}{SOG}
-\newfontlanguage{Sotho}{SOT}
-\newfontlanguage{Albanian}{SQI}
-\newfontlanguage{Serbian}{SRB}
-\newfontlanguage{Saraiki}{SRK}
-\newfontlanguage{Serer}{SRR}
-\newfontlanguage{South~Slavey}{SSL}
-\newfontlanguage{Southern~Sami}{SSM}
-\newfontlanguage{Suri}{SUR}
-\newfontlanguage{Svan}{SVA}
-\newfontlanguage{Swedish}{SVE}
-\newfontlanguage{Swadaya~Aramaic}{SWA}
-\newfontlanguage{Swahili}{SWK}
-\newfontlanguage{Swazi}{SWZ}
-\newfontlanguage{Sutu}{SXT}
-\newfontlanguage{Syriac}{SYR}
-\newfontlanguage{Tabasaran}{TAB}
-\newfontlanguage{Tajiki}{TAJ}
-\newfontlanguage{Tamil}{TAM}
-\newfontlanguage{Tatar}{TAT}
-\newfontlanguage{TH-Cree}{TCR}
-\newfontlanguage{Telugu}{TEL}
-\newfontlanguage{Tongan}{TGN}
-\newfontlanguage{Tigre}{TGR}
-\newfontlanguage{Tigrinya}{TGY}
-\newfontlanguage{Thai}{THA}
-\newfontlanguage{Tahitian}{THT}
-\newfontlanguage{Tibetan}{TIB}
-\newfontlanguage{Turkish}{TRK,TUR}
-\newfontlanguage{Turkmen}{TKM}
-\newfontlanguage{Temne}{TMN}
-\newfontlanguage{Tswana}{TNA}
-\newfontlanguage{Tundra~Nenets}{TNE}
-\newfontlanguage{Tonga}{TNG}
-\newfontlanguage{Todo}{TOD}
-\newfontlanguage{Tsonga}{TSG}
-\newfontlanguage{Turoyo~Aramaic}{TUA}
-\newfontlanguage{Tulu}{TUL}
-\newfontlanguage{Tuvin}{TUV}
-\newfontlanguage{Twi}{TWI}
-\newfontlanguage{Udmurt}{UDM}
-\newfontlanguage{Ukrainian}{UKR}
-\newfontlanguage{Urdu}{URD}
-\newfontlanguage{Upper~Sorbian}{USB}
-\newfontlanguage{Uyghur}{UYG}
-\newfontlanguage{Uzbek}{UZB}
-\newfontlanguage{Venda}{VEN}
-\newfontlanguage{Vietnamese}{VIT}
-\newfontlanguage{Wa}{WA}
-\newfontlanguage{Wagdi}{WAG}
-\newfontlanguage{West-Cree}{WCR}
-\newfontlanguage{Welsh}{WEL}
-\newfontlanguage{Wolof}{WLF}
-\newfontlanguage{Tai~Lue}{XBD}
-\newfontlanguage{Xhosa}{XHS}
-\newfontlanguage{Yakut}{YAK}
-\newfontlanguage{Yoruba}{YBA}
-\newfontlanguage{Y-Cree}{YCR}
-\newfontlanguage{Yi~Classic}{YIC}
-\newfontlanguage{Yi~Modern}{YIM}
-\newfontlanguage{Chinese~Hong~Kong}{ZHH}
-\newfontlanguage{Chinese~Phonetic}{ZHP}
-\newfontlanguage{Chinese~Simplified}{ZHS}
-\newfontlanguage{Chinese~Traditional}{ZHT}
-\newfontlanguage{Zande}{ZND}
-\newfontlanguage{Zulu}{ZUL}
-% \end{macrocode}
-%
-% \iffalse
-% \begin{macrocode}
-%</fontspec>
-% \end{macrocode}
-% \fi
-
-
-\endinput
-
-% /©
-% ------------------------------------------------
-% The FONTSPEC package <wspr.io/fontspec>
-% ------------------------------------------------
-% Copyright 2004-2020 Will Robertson, LPPL "maintainer"
-% Copyright 2009-2015 Khaled Hosny
-% Copyright 2013 Philipp Gesang
-% Copyright 2013-2016 Joseph Wright
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% ©/
diff --git a/macros/latex/contrib/fontspec/fontspec-code-load.dtx b/macros/latex/contrib/fontspec/fontspec-code-load.dtx
deleted file mode 100644
index 7d0501b89e..0000000000
--- a/macros/latex/contrib/fontspec/fontspec-code-load.dtx
+++ /dev/null
@@ -1,72 +0,0 @@
-%%^^A%% fontspec-code-load.dtx -- part of FONTSPEC <wspr.io/fontspec>
-%
-% \section{The \texttt{fontspec.sty} loading file}
-%
-% Before we begin, for the rest of the package we use the \texttt{@@} \textsf{expl3}
-% module syntax with module name `\texttt{fontspec}'.
-% \begin{macrocode}
-%<@@=fontspec>
-% \end{macrocode}
-% The \texttt{fontspec.sty} file is simply set up to load the appropriate
-% \texttt{fontspec-xetex.sty} or \texttt{fontspec-luatex.sty} file.
-% This is performed by the following code.
-%
-% \begin{macrocode}
-%<*load>
-% \end{macrocode}
-%
-% \paragraph{\LuaLaTeX}
-% \begin{macrocode}
-\sys_if_engine_luatex:T
- {
- \RequirePackage{luaotfload}
- \lua_now:e{require("fontspec")}
- \RequirePackageWithOptions{fontspec-luatex}
- \endinput
- }
-% \end{macrocode}
-%
-% \paragraph{\XeLaTeX}
-% \begin{macrocode}
-\sys_if_engine_xetex:T
- {
- \RequirePackageWithOptions{fontspec-xetex}
- \endinput
- }
-% \end{macrocode}
-%
-% \paragraph{Other}
-% If not one of the above, error and exit.
-% \begin{macrocode}
-\msg_new:nnn {fontspec} {cannot-use-pdftex}
- {
- The~ fontspec~ package~ requires~ either~ XeTeX~ or~ LuaTeX.\\\\
- You~ must~ change~ your~ typesetting~ engine~ to,~ e.g.,~
- "xelatex"~ or~ "lualatex" instead~ of~ "latex"~ or~ "pdflatex".
- }
-\msg_fatal:nn {fontspec} {cannot-use-pdftex}
-% \end{macrocode}
-%
-% \paragraph{Closing}
-% That's the end of the \texttt{fontspec.sty} file.
-% \begin{macrocode}
-\endinput
-%</load>
-% \end{macrocode}
-
-\endinput
-
-% /©
-% ------------------------------------------------
-% The FONTSPEC package <wspr.io/fontspec>
-% ------------------------------------------------
-% Copyright 2004-2020 Will Robertson, LPPL "maintainer"
-% Copyright 2009-2015 Khaled Hosny
-% Copyright 2013 Philipp Gesang
-% Copyright 2013-2016 Joseph Wright
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% ©/
diff --git a/macros/latex/contrib/fontspec/fontspec-code-math.dtx b/macros/latex/contrib/fontspec/fontspec-code-math.dtx
deleted file mode 100644
index bbe70ef437..0000000000
--- a/macros/latex/contrib/fontspec/fontspec-code-math.dtx
+++ /dev/null
@@ -1,260 +0,0 @@
-%%^^A%% fontspec-code-math.dtx -- part of FONTSPEC <wspr.io/fontspec>
-%
-% \section{Selecting maths fonts}
-% Here, the fonts used in math mode are redefined to correspond to the
-% default roman, sans serif and typewriter fonts. Unfortunately, you
-% can only define maths fonts in the preamble, otherwise I'd run this
-% code whenever \cs{setmainfont} and friends was run.
-%
-% \iffalse
-% \begin{macrocode}
-%<*fontspec>
-% \end{macrocode}
-% \fi
-%
-% \begin{macro}{\fontspec_setup_maths:}
-% Everything here is performed \cs{AtBeginDocument} in order to
-% overwrite \pkg{euler}'s attempt. This means \pkg{fontspec} must be
-% loaded \emph{after} \pkg{euler}. We set up a conditional to return
-% an error if this rule is violated.
-%
-% Since every maths setup is slightly different, we also take
-% different paths for defining various math glyphs depending which
-% maths font package has been loaded.
-%
-% \begin{macrocode}
-\@ifpackageloaded{euler}
- { \bool_gset_true:N \g_@@_pkg_euler_loaded_bool }
- { \bool_gset_false:N \g_@@_pkg_euler_loaded_bool }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \fontspec_setup_maths:
- {
- \@ifpackageloaded{euler}
- {
- \bool_if:NTF \g_@@_pkg_euler_loaded_bool
- { \bool_gset_true:N \g_@@_math_euler_bool }
- { \@@_error:n {euler-too-late} }
- }
- {}
- \@ifpackageloaded{lucbmath}{ \bool_gset_true:N \g_@@_math_lucida_bool }{}
- \@ifpackageloaded{lucidabr}{ \bool_gset_true:N \g_@@_math_lucida_bool }{}
- \@ifpackageloaded{lucimatx}{ \bool_gset_true:N \g_@@_math_lucida_bool }{}
-% \end{macrocode}
-% Knuth's CM fonts fonts are all squashed together, combining letters,
-% accents, text symbols and maths symbols all in the one font,
-% \texttt{cmr}, plus other things in other fonts. Because we are
-% changing the roman font in the document, we need to redefine all of
-% the maths glyphs in \LaTeX's \texttt{operators} maths font to still
-% go back to the legacy \texttt{cmr} font for all these random glyphs,
-% unless a separate maths font package has been loaded instead.
-%
-% In every case, the maths accents are always taken from the
-% \texttt{operators} font, which is generally the main text
-% font. (Actually, there is a \cmd\hat\ accent in
-% \texttt{EulerFractur}, but it's \emph{ugly}. So I ignore it. Sorry
-% if this causes inconvenience.)
-% \begin{macrocode}
- \DeclareSymbolFont{legacymaths}{OT1}{cmr}{m}{n}
- \SetSymbolFont{legacymaths}{bold}{OT1}{cmr}{bx}{n}
- \DeclareMathAccent{\acute} {\mathalpha}{legacymaths}{19}
- \DeclareMathAccent{\grave} {\mathalpha}{legacymaths}{18}
- \DeclareMathAccent{\ddot} {\mathalpha}{legacymaths}{127}
- \DeclareMathAccent{\tilde} {\mathalpha}{legacymaths}{126}
- \DeclareMathAccent{\bar} {\mathalpha}{legacymaths}{22}
- \DeclareMathAccent{\breve} {\mathalpha}{legacymaths}{21}
- \DeclareMathAccent{\check} {\mathalpha}{legacymaths}{20}
- \DeclareMathAccent{\hat} {\mathalpha}{legacymaths}{94} % too bad, euler
- \DeclareMathAccent{\dot} {\mathalpha}{legacymaths}{95}
- \DeclareMathAccent{\mathring}{\mathalpha}{legacymaths}{23}
-% \end{macrocode}
-% \paragraph{\cmd\colon: what's going on?} Okay, so \verb":" and \cmd\colon\ in maths mode are defined in a few places, so I need to work out what does what. Respectively, we have:
-% \begin{Verbatim}
-% % fontmath.ltx:
-% \DeclareMathSymbol{\colon}{\mathpunct}{operators}{"3A}
-% \DeclareMathSymbol{:}{\mathrel}{operators}{"3A}
-%
-% % amsmath.sty:
-% \renewcommand{\colon}{\nobreak\mskip2mu\mathpunct{}\nonscript
-% \mkern-\thinmuskip{:}\mskip6muplus1mu\relax}
-%
-% % euler.sty:
-% \DeclareMathSymbol{:}\mathrel {EulerFraktur}{"3A}
-%
-% % lucbmath.sty:
-% \DeclareMathSymbol{\@tempb}{\mathpunct}{operators}{58}
-% \ifx\colon\@tempb
-% \DeclareMathSymbol{\colon}{\mathpunct}{operators}{58}
-% \fi
-% \DeclareMathSymbol{:}{\mathrel}{operators}{58}
-% \end{Verbatim}
-% ($\mathrm{3A_{16}}=\mathrm{58_{10}}$) So I think, based on this summary, that it is fair to tell \pkg{fontspec} to `replace' the operators font with legacymaths for this symbol, except when \pkg{amsmath} is loaded since we want to keep its definition.
-%
-%
-% \begin{macrocode}
- \group_begin:
- \mathchardef\@tempa="603A \relax
- \ifx\colon\@tempa
- \DeclareMathSymbol{\colon}{\mathpunct}{legacymaths}{58}
- \fi
- \group_end:
-% \end{macrocode}
-% The following symbols are only defined specifically in \pkg{euler}, so skip them
-% if that package is loaded.
-% \begin{macrocode}
- \bool_if:NF \g_@@_math_euler_bool
- {
- \DeclareMathSymbol{!}{\mathclose}{legacymaths}{33}
- \DeclareMathSymbol{:}{\mathrel} {legacymaths}{58}
- \DeclareMathSymbol{;}{\mathpunct}{legacymaths}{59}
- \DeclareMathSymbol{?}{\mathclose}{legacymaths}{63}
-% \end{macrocode}
-% And these ones are defined both in \pkg{euler} and \pkg{lucbmath},
-% so we only need to run this code if no extra maths package has been
-% loaded.
-% \begin{macrocode}
- \bool_if:NF \g_@@_math_lucida_bool
- {
- \DeclareMathSymbol{0}{\mathalpha}{legacymaths}{`0}
- \DeclareMathSymbol{1}{\mathalpha}{legacymaths}{`1}
- \DeclareMathSymbol{2}{\mathalpha}{legacymaths}{`2}
- \DeclareMathSymbol{3}{\mathalpha}{legacymaths}{`3}
- \DeclareMathSymbol{4}{\mathalpha}{legacymaths}{`4}
- \DeclareMathSymbol{5}{\mathalpha}{legacymaths}{`5}
- \DeclareMathSymbol{6}{\mathalpha}{legacymaths}{`6}
- \DeclareMathSymbol{7}{\mathalpha}{legacymaths}{`7}
- \DeclareMathSymbol{8}{\mathalpha}{legacymaths}{`8}
- \DeclareMathSymbol{9}{\mathalpha}{legacymaths}{`9}
- \DeclareMathSymbol{\Gamma}{\mathalpha}{legacymaths}{0}
- \DeclareMathSymbol{\Delta}{\mathalpha}{legacymaths}{1}
- \DeclareMathSymbol{\Theta}{\mathalpha}{legacymaths}{2}
- \DeclareMathSymbol{\Lambda}{\mathalpha}{legacymaths}{3}
- \DeclareMathSymbol{\Xi}{\mathalpha}{legacymaths}{4}
- \DeclareMathSymbol{\Pi}{\mathalpha}{legacymaths}{5}
- \DeclareMathSymbol{\Sigma}{\mathalpha}{legacymaths}{6}
- \DeclareMathSymbol{\Upsilon}{\mathalpha}{legacymaths}{7}
- \DeclareMathSymbol{\Phi}{\mathalpha}{legacymaths}{8}
- \DeclareMathSymbol{\Psi}{\mathalpha}{legacymaths}{9}
- \DeclareMathSymbol{\Omega}{\mathalpha}{legacymaths}{10}
- \DeclareMathSymbol{+}{\mathbin}{legacymaths}{43}
- \DeclareMathSymbol{=}{\mathrel}{legacymaths}{61}
- \DeclareMathDelimiter{(}{\mathopen} {legacymaths}{40}{largesymbols}{0}
- \DeclareMathDelimiter{)}{\mathclose}{legacymaths}{41}{largesymbols}{1}
- \DeclareMathDelimiter{[}{\mathopen} {legacymaths}{91}{largesymbols}{2}
- \DeclareMathDelimiter{]}{\mathclose}{legacymaths}{93}{largesymbols}{3}
- \DeclareMathDelimiter{/}{\mathord}{legacymaths}{47}{largesymbols}{14}
- \DeclareMathSymbol{\mathdollar}{\mathord}{legacymaths}{36}
- \renewcommand{\hbar}{{\mathchar"AF\mkern-9mu h}}% TODO: test with other fonts
- }
- }
-% \end{macrocode}
-% Finally, we change the font definitions for \cmd\mathrm\ and so
-% on. These are defined using the \cmd\g_@@_mathrm_tl\ (\dots) macros,
-% which default to \cmd\rmdefault\ but may be specified with the
-% \cmd\setmathrm\ (\dots) commands in the preamble.
-%
-% Since \LaTeX\ only generally defines one level of boldness, we omit
-% \cmd\mathbf\ in the \textsf{bold} maths series. It can be specified
-% as per usual with \cmd\setboldmathrm, which stores the appropriate
-% family name in \cmd\g_@@_bfmathrm_tl.
-% \begin{macrocode}
- \DeclareSymbolFont{operators}\g_fontspec_encoding_tl\g_@@_mathrm_tl\mddefault\shapedefault
- \SetSymbolFont{operators}{normal}\g_fontspec_encoding_tl\g_@@_mathrm_tl\mddefault\shapedefault
- \DeclareSymbolFontAlphabet\mathrm{operators}
- \SetMathAlphabet\mathit{normal}\g_fontspec_encoding_tl\g_@@_mathrm_tl\mddefault\itdefault
- \SetMathAlphabet\mathbf{normal}\g_fontspec_encoding_tl\g_@@_mathrm_tl\bfdefault\shapedefault
- \SetMathAlphabet\mathsf{normal}\g_fontspec_encoding_tl\g_@@_mathsf_tl\mddefault\shapedefault
- \SetMathAlphabet\mathtt{normal}\g_fontspec_encoding_tl\g_@@_mathtt_tl\mddefault\shapedefault
- \SetSymbolFont{operators}{bold}\g_fontspec_encoding_tl\g_@@_mathrm_tl\bfdefault\shapedefault
- \tl_if_empty:NTF \g_@@_bfmathrm_tl
- {
- \SetMathAlphabet\mathit{bold}\g_fontspec_encoding_tl\g_@@_mathrm_tl\bfdefault\itdefault
- }
- {
- \SetMathAlphabet\mathrm{bold}\g_fontspec_encoding_tl\g_@@_bfmathrm_tl\mddefault\shapedefault
- \SetMathAlphabet\mathbf{bold}\g_fontspec_encoding_tl\g_@@_bfmathrm_tl\bfdefault\shapedefault
- \SetMathAlphabet\mathit{bold}\g_fontspec_encoding_tl\g_@@_bfmathrm_tl\mddefault\itdefault
- }
- \SetMathAlphabet\mathsf{bold}\g_fontspec_encoding_tl\g_@@_mathsf_tl\bfdefault\shapedefault
- \SetMathAlphabet\mathtt{bold}\g_fontspec_encoding_tl\g_@@_mathtt_tl\bfdefault\shapedefault
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\fontspec_maybe_setup_maths:}
-% We're a little less sophisticated about not executing the maths setup if various other maths font packages are loaded. This list is based on the wonderful `\LaTeX Font Catalogue': \url{http://www.tug.dk/FontCatalogue/mathfonts.html}. I'm sure there are more I've missed. Do the \TeX\ Gyre fonts have maths support yet?
-%
-% Untested: would |\unless\ifnum\Gamma=28672\relax\bool_set_false:N \g_@@_math_bool\fi| be a better test?
-% This needs more cooperation with euler and lucida, I think.
-% \begin{macrocode}
-\cs_new:Nn \fontspec_maybe_setup_maths:
- {
- \@ifpackageloaded{anttor}
- {
- \ifx\define@antt@mathversions a\bool_gset_false:N \g_@@_math_bool\fi
- }{}
- \@ifpackageloaded{arevmath} {\bool_gset_false:N \g_@@_math_bool}{}
- \@ifpackageloaded{eulervm} {\bool_gset_false:N \g_@@_math_bool}{}
- \@ifpackageloaded{mathdesign} {\bool_gset_false:N \g_@@_math_bool}{}
- \@ifpackageloaded{concmath} {\bool_gset_false:N \g_@@_math_bool}{}
- \@ifpackageloaded{cmbright} {\bool_gset_false:N \g_@@_math_bool}{}
- \@ifpackageloaded{mathesf} {\bool_gset_false:N \g_@@_math_bool}{}
- \@ifpackageloaded{gfsartemisia} {\bool_gset_false:N \g_@@_math_bool}{}
- \@ifpackageloaded{gfsneohellenic} {\bool_gset_false:N \g_@@_math_bool}{}
- \@ifpackageloaded{iwona}
- {
- \ifx\define@iwona@mathversions a\bool_set_false:N \g_@@_math_bool\fi
- }{}
- \@ifpackageloaded{kpfonts}{\bool_gset_false:N \g_@@_math_bool}{}
- \@ifpackageloaded{kmath} {\bool_gset_false:N \g_@@_math_bool}{}
- \@ifpackageloaded{kurier}
- {
- \ifx\define@kurier@mathversions a\bool_set_false:N \g_@@_math_bool\fi
- }{}
- \@ifpackageloaded{fouriernc} {\bool_gset_false:N \g_@@_math_bool}{}
- \@ifpackageloaded{fourier} {\bool_gset_false:N \g_@@_math_bool}{}
- \@ifpackageloaded{lmodern} {\bool_gset_false:N \g_@@_math_bool}{}
- \@ifpackageloaded{mathpazo} {\bool_gset_false:N \g_@@_math_bool}{}
- \@ifpackageloaded{mathptmx} {\bool_gset_false:N \g_@@_math_bool}{}
- \@ifpackageloaded{MinionPro} {\bool_gset_false:N \g_@@_math_bool}{}
- \@ifpackageloaded{unicode-math} {\bool_gset_false:N \g_@@_math_bool}{}
- \@ifpackageloaded{breqn} {\bool_gset_false:N \g_@@_math_bool}{}
- \@ifpackageloaded{pxfonts} {\bool_gset_false:N \g_@@_math_bool}{}
- \@ifpackageloaded{txfonts} {\bool_gset_false:N \g_@@_math_bool}{}
- \@ifpackageloaded{newpxmath} {\bool_gset_false:N \g_@@_math_bool}{}
- \@ifpackageloaded{newtxmath} {\bool_gset_false:N \g_@@_math_bool}{}
- \@ifpackageloaded{mtpro2} {\bool_gset_false:N \g_@@_math_bool}{}
- \bool_if:NT \g_@@_math_bool
- {
- \@@_info:n {setup-math}
- \fontspec_setup_maths:
- }
- }
-\AtBeginDocument{\fontspec_maybe_setup_maths:}
-% \end{macrocode}
-% \end{macro}
-%
-% \iffalse
-% \begin{macrocode}
-%</fontspec>
-% \end{macrocode}
-% \fi
-
-
-\endinput
-
-% /©
-% ------------------------------------------------
-% The FONTSPEC package <wspr.io/fontspec>
-% ------------------------------------------------
-% Copyright 2004-2020 Will Robertson, LPPL "maintainer"
-% Copyright 2009-2015 Khaled Hosny
-% Copyright 2013 Philipp Gesang
-% Copyright 2013-2016 Joseph Wright
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% ©/
diff --git a/macros/latex/contrib/fontspec/fontspec-code-msg.dtx b/macros/latex/contrib/fontspec/fontspec-code-msg.dtx
deleted file mode 100644
index f23ec2d85f..0000000000
--- a/macros/latex/contrib/fontspec/fontspec-code-msg.dtx
+++ /dev/null
@@ -1,280 +0,0 @@
-%%^^A%% fontspec-code-msg.dtx -- part of FONTSPEC <wspr.io/fontspec>
-%
-% \section{Error/warning/info messages}
-%
-% \iffalse
-% \begin{macrocode}
-%<*fontspec>
-% \end{macrocode}
-% \fi
-%
-% Shorthands for messages:
-% \begin{macrocode}
-\cs_new:Npn \@@_error:n { \msg_error:nn {fontspec} }
-\cs_new:Npn \@@_error:nn { \msg_error:nnn {fontspec} }
-\cs_new:Npn \@@_error:nx { \msg_error:nnx {fontspec} }
-\cs_new:Npn \@@_warning:n { \msg_warning:nn {fontspec} }
-\cs_new:Npn \@@_warning:nx { \msg_warning:nnx {fontspec} }
-\cs_new:Npn \@@_warning:nxx { \msg_warning:nnxx {fontspec} }
-\cs_new:Npn \@@_info:n { \msg_info:nn {fontspec} }
-\cs_new:Npn \@@_info:nx { \msg_info:nnx {fontspec} }
-\cs_new:Npn \@@_info:nxx { \msg_info:nnxx {fontspec} }
-\cs_new:Npn \@@_trace:n { \msg_trace:nn {fontspec} }
-% \end{macrocode}
-%
-% Allow messages to be written with spaces acting as normal:
-% \begin{macrocode}
-\cs_generate_variant:Nn \msg_new:nnn {nnx}
-\cs_generate_variant:Nn \msg_new:nnnn {nnxx}
-\cs_new:Nn \@@_msg_new:nnn
- { \msg_new:nnx {#1} {#2} { \tl_trim_spaces:n {#3} } }
-\cs_new:Nn \@@_msg_new:nnnn
- { \msg_new:nnxx {#1} {#2} { \tl_trim_spaces:n {#3} } { \tl_trim_spaces:n {#4} } }
-\char_set_catcode_space:n {32}
-% \end{macrocode}
-%
-% \subsection{Errors}
-%
-% \begin{macrocode}
-\@@_msg_new:nnn {fontspec} {only-inside-encdef}
- {
- \exp_not:N#1can only be used in the second argument
- to \string\DeclareUnicodeEncoding.
- }
-\@@_msg_new:nnn {fontspec} {no-size-info}
- {
- Size information must be supplied.\\
- For example, SizeFeatures={Size={8-12},...}.
- }
-\@@_msg_new:nnnn {fontspec} {font-not-found}
- {
- The font "#1" cannot be found.
- }
- {
- A font might not be found for many reasons.\\
- Check the spelling, where the font is installed etc. etc.\\\\
- When in doubt, ask someone for help!
- }
-\@@_msg_new:nnnn {fontspec} {rename-feature-not-exist}
- {
- The feature #1 doesn't appear to be defined.
- }
- {
- It looks like you're trying to rename a feature that doesn't exist.
- }
-\@@_msg_new:nnn {fontspec} {no-glyph}
- {
- '#1' does not contain glyph #2.
- }
-\@@_msg_new:nnnn {fontspec} {euler-too-late}
- {
- The euler package must be loaded BEFORE fontspec.
- }
- {
- fontspec only overwrites euler's attempt to
- define the maths text fonts if fontspec is
- loaded after euler. Type <return> to proceed
- with incorrect \string\mathit, \string\mathbf, etc.
- }
-\@@_msg_new:nnnn {fontspec} {no-xcolor}
- {
- Cannot load named colours without the xcolor package.
- }
- {
- Sorry, I can't do anything to help. Instead of loading
- the color package, use xcolor instead.
- }
-\@@_msg_new:nnnn {fontspec} {unknown-color-model}
- {
- Error loading colour `#1'; unknown colour model.
- }
- {
- Sorry, I can't do anything to help. Please report this error
- to my developer with a minimal example that causes the problem.
- }
-\@@_msg_new:nnnn {fontspec} {not-in-addfontfeatures}
- {
- The "#1" font feature cannot be used in \string\addfontfeatures.
- }
- {
- This is due to how TeX loads fonts; such settings
- are global so adding them mid-document within a group causes
- confusion. You'll need to define multiple font families to achieve
- what you want.
- }
-% \end{macrocode}
-%
-% \subsection{Warnings}
-%
-% \begin{macrocode}
-\@@_msg_new:nnn {fontspec} {tu-clash}
- {
- I have found the tuenc.def encoding definition file but the TU encoding is not
- defined by the LaTeX2e kernel; attempting to correct but you really should update
- to the latest version of LaTeX2e.
- }
-\@@_msg_new:nnn {fontspec} {tu-missing}
- {
- The TU encoding seems to be missing; please update to the latest version of LaTeX2e.
- }
-\@@_msg_new:nnn {fontspec} {addfontfeatures-ignored}
- {
- \string\addfontfeature (s) ignored \msg_line_context:;
- it cannot be used with a font that wasn't selected by a fontspec command.\\
- \\
- The current font is "\use:c{font@name}".\\
- \int_compare:nTF { \clist_count:n {#1} = 1 }
- { The requested feature is "#1". }
- { The requested features are "#1". }
- }
-\@@_msg_new:nnn {fontspec} {feature-option-overwrite}
- {
- Option '#2' of font feature '#1' overwritten.
- }
-\@@_msg_new:nnn {fontspec} {ot-tag-too-long}
- {
- OpenType tag '#1' is too long; script, language, and feature tags must be four characters or fewer.
- }
-\@@_msg_new:nnn {fontspec} {aat-feature-not-exist}
- {
- '\l_keys_key_tl=\l_keys_value_tl' feature not supported
- for AAT font '\l_fontspec_fontname_tl'.
- }
-\@@_msg_new:nnn {fontspec} {aat-feature-not-exist-in-font}
- {
- AAT feature '\l_keys_key_tl=\l_keys_value_tl' (#1) not available
- in font '\l_fontspec_fontname_tl'.
- }
-\@@_msg_new:nnn {fontspec} {icu-feature-not-exist}
- {
- '\l_keys_key_tl=\l_keys_value_tl' feature not supported
- for OpenType font '\l_fontspec_fontname_tl'
- }
-\@@_msg_new:nnn {fontspec} {icu-feature-not-exist-in-font}
- {
- OpenType feature '\l_keys_key_tl=\l_keys_value_tl' (#1) not available
- for font '\l_fontspec_fontname_tl'
- with script '\l_@@_script_name_tl' and language '\l_@@_lang_name_tl'.
- }
-\@@_msg_new:nnn {fontspec} {no-opticals}
- {
- '#1' doesn't appear to have an Optical Size axis.
- }
-\@@_msg_new:nnn {fontspec} {language-not-exist}
- {
- Language '#1' not available
- for font '\l_fontspec_fontname_tl'
- with script '\l_@@_script_name_tl'.
- }
-\@@_msg_new:nnn {fontspec} {only-xetex-feature}
- {
- Ignored XeTeX-only feature: '#1'.
- }
-\@@_msg_new:nnn {fontspec} {only-luatex-feature}
- {
- Ignored LuaTeX-only feature: '#1'.
- }
-\@@_msg_new:nnn {fontspec} {unknown-renderer}
- {
- Renderer '#1' unknown. Assuming Harfbuzz with 'shaper=#1'.
- Please raise a fontspec issue to add this shaper to the interface.
- }
-\@@_msg_new:nnn {fontspec} {no-mapping}
- {
- Input mapping not supported in LuaTeX.
- }
-\@@_msg_new:nnn {fontspec} {no-mapping-ligtex}
- {
- Input mapping not supported in LuaTeX.\\
- Use "Ligatures=TeX" instead of "Mapping=tex-text".
- }
-\@@_msg_new:nnn {fontspec} {cm-default-obsolete}
- {
- The "cm-default" package option is obsolete.
- }
-\@@_msg_new:nnn {fontspec} {font-index-needs-ttc}
- {
- The "FontIndex" feature is only supported by TTC (TrueType Collection) fonts.\\
- Feature ignored.
- }
-\@@_msg_new:nnn {fontspec} {feat-cannot-remove}
- {
- The "#1" feature cannot be deactivated. Request ignored.
- }
-% \end{macrocode}
-%
-% \subsection{Info messages}
-%
-% \begin{macrocode}
-\@@_msg_new:nnn {fontspec} {defining-font}
- {
- Font family '\g_@@_nfss_family_tl' created for font '#2'
- with options [\l_@@_all_features_clist].\\
- \\
- This font family consists of the following NFSS series/shapes:\\
- \g_@@_defined_shapes_tl
- }
-\@@_msg_new:nnn {fontspec} {no-font-shape}
- {
- Could not resolve font "#1" (it probably doesn't exist).
- }
-\@@_msg_new:nnn {fontspec} {set-scale}
- {
- \l_fontspec_fontname_tl\space scale = \l_@@_scale_tl.
- }
-\@@_msg_new:nnn {fontspec} {setup-math}
- {
- Adjusting the maths setup (use [no-math] to avoid this).
- }
-\@@_msg_new:nnn {fontspec} {no-script}
- {
- Font "#1" does not contain requested Script "#2".
- }
-\@@_msg_new:nnn {fontspec} {opa-twice}
- {
- Opacity set twice, in both Colour and Opacity.\\
- Using specification "Opacity=#1".
- }
-\@@_msg_new:nnn {fontspec} {opa-twice-col}
- {
- Opacity set twice, in both Opacity and Colour.\\
- Using an opacity specification in hex of "#1/FF".
- }
-\@@_msg_new:nnn {fontspec} {bad-colour}
- {
- Bad colour declaration "#1".
- Colour must be one of:\\
- * a named xcolor colour\\
- * a six-digit hex colour RRGGBB\\
- * an eight-digit hex colour RRGGBBTT with opacity
- }
-% \end{macrocode}
-%
-% Reset `space' behaviour:
-% \begin{macrocode}
-\char_set_catcode_ignore:n {32}
-% \end{macrocode}
-%
-% \iffalse
-% \begin{macrocode}
-%</fontspec>
-% \end{macrocode}
-% \fi
-
-
-\endinput
-
-% /©
-% ------------------------------------------------
-% The FONTSPEC package <wspr.io/fontspec>
-% ------------------------------------------------
-% Copyright 2004-2020 Will Robertson, LPPL "maintainer"
-% Copyright 2009-2015 Khaled Hosny
-% Copyright 2013 Philipp Gesang
-% Copyright 2013-2016 Joseph Wright
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% ©/
diff --git a/macros/latex/contrib/fontspec/fontspec-code-opening.dtx b/macros/latex/contrib/fontspec/fontspec-code-opening.dtx
deleted file mode 100644
index b8fb02e9e8..0000000000
--- a/macros/latex/contrib/fontspec/fontspec-code-opening.dtx
+++ /dev/null
@@ -1,213 +0,0 @@
-%%^^A%% fontspec-code-opening.dtx -- part of FONTSPEC <wspr.io/fontspec>
-%
-% \section{Opening code}
-%
-% \iffalse
-% \begin{macrocode}
-%<*fontspec>
-% \end{macrocode}
-% \fi
-%
-% \subsection{Package options}
-%
-% \begin{macrocode}
-\DeclareOption{cm-default}
- {
- \@@_warning:n {cm-default-obsolete}
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\DeclareOption {math} { \bool_gset_true:N \g_@@_math_bool }
-\DeclareOption {no-math} { \bool_gset_false:N \g_@@_math_bool }
-\DeclareOption {config} { \bool_gset_true:N \g_@@_cfg_bool }
-\DeclareOption {no-config}{ \bool_gset_false:N \g_@@_cfg_bool }
-\DeclareOption {euenc} { \bool_gset_true:N \g_@@_euenc_bool }
-\DeclareOption {tuenc} { \bool_gset_false:N \g_@@_euenc_bool }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\DeclareOption {quiet}
- {
- \msg_redirect_module:nnn { fontspec } { warning } { info }
- \msg_redirect_module:nnn { fontspec } { info } { none }
- }
-\DeclareOption{silent}
- {
- \msg_redirect_module:nnn { fontspec } { warning } { none }
- \msg_redirect_module:nnn { fontspec } { info } { none }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\ExecuteOptions{config,math,tuenc}
-\ProcessOptions*
-% \end{macrocode}
-%
-%
-%
-%
-% \subsection{Encodings}
-%
-% Soon to be the default, with a just-in-case check:
-% \begin{macrocode}
-\bool_if:NF \g_@@_euenc_bool
- {
- \file_if_exist:nTF {tuenc.def}
- {
- \cs_if_exist:cF {T@TU}
- {
- \@@_warning:n {tu-clash}
- \DeclareFontEncoding{TU}{}{}
- \DeclareFontSubstitution{TU}{lmr}{m}{n}
- }
- }
- {
- \@@_warning:n {tu-missing}
- \bool_gset_true:N \g_@@_euenc_bool
- }
- }
-\bool_if:NTF \g_@@_euenc_bool
- {
-%<XE> \tl_gset:Nn \g_fontspec_encoding_tl {EU1}
-%<LU> \tl_gset:Nn \g_fontspec_encoding_tl {EU2}
- }
- { \tl_gset:Nn \g_fontspec_encoding_tl { TU } }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\tl_set:Nn \rmdefault {lmr}
-\tl_set:Nn \sfdefault {lmss}
-\tl_set:Nn \ttdefault {lmtt}
-\RequirePackage[\g_fontspec_encoding_tl]{fontenc}
-\tl_set_eq:NN \UTFencname \g_fontspec_encoding_tl % for xunicode if needed
-% \end{macrocode}
-% To overcome the encoding changing the current font size, but only if a class has been loaded first:
-% \begin{macrocode}
-\tl_if_in:NnT \@filelist {.cls} { \normalsize }
-% \end{macrocode}
-% Dealing with a couple of the problems introduced by \pkg{babel}:
-% \begin{macrocode}
-\tl_set_eq:NN \cyrillicencoding \g_fontspec_encoding_tl
-\tl_set_eq:NN \latinencoding \g_fontspec_encoding_tl
-\AtBeginDocument
- {
- \tl_set_eq:NN \cyrillicencoding \g_fontspec_encoding_tl
- \tl_set_eq:NN \latinencoding \g_fontspec_encoding_tl
- }
-% \end{macrocode}
-% That latin encoding definition is repeated to suppress font warnings.
-% Something to do with \cmd\select@language\ ending up in the \texttt{.aux}
-% file which is read at the beginning of the document.
-%
-% \begin{macrocode}
-\bool_if:NT \g_@@_euenc_bool
- {
-%<LU> \cs_set_eq:NN \fontspec_tmp: \XeTeXpicfile
-%<LU> \cs_set:Npn \XeTeXpicfile {}
- \RequirePackage{xunicode}
-%<LU> \cs_set_eq:NN \XeTeXpicfile \fontspec_tmp:
- }
-% \end{macrocode}
-%
-%
-% \subsection{Generic functions}
-%
-% \begin{macro}{\FontspecSetCheckBoolTrue}
-% \begin{macro}{\FontspecSetCheckBoolFalse}
-% These strange set functions are to simplify returning code from LuaTeX:
-% \begin{macrocode}
-\cs_new:Npn \FontspecSetCheckBoolTrue { \bool_set_true:N \l_@@_check_bool }
-\cs_new:Npn \FontspecSetCheckBoolFalse { \bool_set_false:N \l_@@_check_bool }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@@_keys_set_known:nnN}
-% \begin{macrocode}
-\cs_new:Nn \@@_keys_set_known:nnN
- {
-%<debug> \typeout{:::: Keys~set:~{#1}~{#2} }
- \keys_set_known:nnN {#1} {#2} #3
-%<debug> \typeout{:::: Leftover:~{#3} }
- }
-\cs_generate_variant:Nn \@@_keys_set_known:nnN {nx}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_int_mult_truncate:Nn}
-% Missing in expl3, IMO.
-% \begin{macrocode}
-\cs_new:Nn \@@_int_mult_truncate:Nn
- {
- \int_set:Nn #1 { \__dim_eval:w #2 #1 \__dim_eval_end: }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_lua_function:ne}
-% \begin{macro}{\@@_lua_function:nee}
-% \begin{macro}{\@@_lua_function:neee}
-% \begin{macro}{\@@_lua_function:neeee}
-% \begin{macrocode}
-%<*LU>
-\cs_set:Npn \@@_lua_function:ne #1#2 { \lua_now:e { fontspec.#1 ("#2") } }
-\cs_set:Npn \@@_lua_function:nee #1#2#3 { \lua_now:e { fontspec.#1 ("#2","#3") } }
-\cs_set:Npn \@@_lua_function:neee #1#2#3#4 { \lua_now:e { fontspec.#1 ("#2","#3","#4") } }
-\cs_set:Npn \@@_lua_function:neeee #1#2#3#4#5 { \lua_now:e { fontspec.#1 ("#2","#3","#4","#5") } }
-%</LU>
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
-%
-% \subsection{\pkg{expl3} variants}
-%
-% \begin{macrocode}
-\cs_generate_variant:Nn \int_set:Nn {Nv}
-\cs_generate_variant:Nn \keys_set:nn {nx}
-\cs_generate_variant:Nn \keys_set_known:nnN {nx}
-\cs_generate_variant:Nn \prop_put:Nnn {Nxx}
-\cs_generate_variant:Nn \prop_put:Nnn {NxV}
-\cs_generate_variant:Nn \prop_gput_if_new:Nnn {NxV}
-\cs_generate_variant:Nn \prop_gput:Nnn {Nxn}
-\cs_generate_variant:Nn \prop_get:NnNT {NxN}
-\cs_generate_variant:Nn \prop_get:NnNTF {NxN}
-\cs_generate_variant:Nn \str_if_eq:nnTF {nv}
-\cs_generate_variant:Nn \tl_if_empty_p:n {e}
-\cs_generate_variant:Nn \tl_if_empty:nTF {x}
-\cs_generate_variant:Nn \tl_if_empty:nF {x}
-\cs_generate_variant:Nn \tl_if_empty:nF {f}
-\cs_generate_variant:Nn \tl_if_eq:nnT {ox}
-\cs_generate_variant:Nn \tl_replace_all:Nnn {Nnx}
-% \end{macrocode}
-%
-%
-%
-%
-% \iffalse
-% \begin{macrocode}
-%</fontspec>
-% \end{macrocode}
-% \fi
-
-
-\endinput
-
-% /©
-% ------------------------------------------------
-% The FONTSPEC package <wspr.io/fontspec>
-% ------------------------------------------------
-% Copyright 2004-2020 Will Robertson, LPPL "maintainer"
-% Copyright 2009-2015 Khaled Hosny
-% Copyright 2013 Philipp Gesang
-% Copyright 2013-2016 Joseph Wright
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% ©/
diff --git a/macros/latex/contrib/fontspec/fontspec-code-opentype.dtx b/macros/latex/contrib/fontspec/fontspec-code-opentype.dtx
deleted file mode 100644
index be0b8be768..0000000000
--- a/macros/latex/contrib/fontspec/fontspec-code-opentype.dtx
+++ /dev/null
@@ -1,478 +0,0 @@
-%%^^A%% fontspec-code-opentype.dtx -- part of FONTSPEC <wspr.io/fontspec>
-
-% \section{OpenType definitions code}
-%
-% \iffalse
-% \begin{macrocode}
-%<*fontspec>
-% \end{macrocode}
-% \fi
-%
-%
-%
-% \begin{macro}{\@@_define_opentype_feature_group:n}
-% \begin{macrocode}
-\cs_new:Nn \@@_define_opentype_feature_group:n
- {
- \keys_define:nn {fontspec-opentype} { #1 .multichoice: , .groups:n = {opentype} }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_define_opentype_feature:nnnnn}
-% \darg{Feature key}
-% \darg{Feature option val}
-% \darg{Check feature --- leave empty for no check}
-% \darg{Exact tag string to activate --- leave empty for disable only}
-% \darg{Tags to remove (clist)}
-% \begin{macrocode}
-\cs_new:Nn \@@_feat_prop_add:nn
- {
- \tl_if_empty:nF {#1}
- {
- \prop_if_in:NnF \g_@@_OT_features_prop {#1}
- {
- \prop_gput:Nnn \g_@@_OT_features_prop {#1} {#2}
- }
- }
- }
-\cs_new:Nn \@@_define_opentype_feature:nnnnn
- {
- \@@_feat_prop_add:nn {#3} {#1\,=\,#2}
- \tl_if_empty:nTF {#4}
- {
- \keys_define:nn {fontspec-opentype}
- {
- #1/#2 .code:n =
- { \@@_remove_clashing_featstr:n {#5} } ,
- #1/#2 .groups:n = {opentype}
- }
- }
- {
- \keys_define:nn {fontspec-opentype}
- {
- #1/#2 .code:n =
- {
-%<debug> \typeout{::::::::fontspec-opentype~#1/#2~=~#3/#4/#5}
- \@@_make_OT_feature:nnn {#3} {#4} {#5}
- } ,
- #1/#2 .groups:n = {opentype}
- }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_define_opentype_onoffreset:nnnnn}
-% \darg{Feature key}
-% \darg{Feature option val}
-% \darg{Check feature}
-% \darg{Tag prefix to activate: \texttt{+\#4} = on, \texttt{-\#4} = off.}
-% \darg{Tags to remove in the on case (clist)}
-% \begin{macrocode}
-\cs_new:Nn \@@_feat_off:n {#1Off}
-\cs_new:Nn \@@_feat_reset:n {#1Reset}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_define_opentype_onoffreset:nnnnn
- {
- \exp_args:Nnx \@@_define_opentype_feature:nnnnn {#1} {#2} {#3} {+#4} {#5}
- \exp_args:Nnx \@@_define_opentype_feature:nnnnn {#1} { \@@_feat_off:n {#2} } {#3} {-#4} {}
- \exp_args:Nnx \@@_define_opentype_feature:nnnnn {#1} { \@@_feat_reset:n {#2} } {} {} {+#4,-#4}
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_define_opentype_onreset:nnnnn}
-% \darg{Feature key}
-% \darg{Feature option val}
-% \darg{Check feature}
-% \darg{Exact tag string to activate}
-% \darg{Tags to remove (clist)}
-% \begin{macrocode}
-\cs_new:Nn \@@_define_opentype_onreset:nnnnn
- {
- \exp_args:Nnx \@@_define_opentype_feature:nnnnn {#1} {#2} {#3} {#4} {#5}
- \exp_args:Nnx \@@_define_opentype_feature:nnnnn {#1} { \@@_feat_reset:n {#2} } {} {} {#4}
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{Adding features when loading fonts}
-%
-% When remove clashing features,
-% \begin{enumerate}
-% \item remove the feature being added (to avoid duplicates);
-% \item remove the inverse of the feature (to avoid cancellation);
-% \item finally remove all clashing features.
-% \end{enumerate}
-% \begin{macrocode}
-\cs_new:Nn \@@_make_OT_feature:nnn
- {
-%<debug> \typeout{:: @@_make_OT_feature:nnn \exp_not:n { {#1}{#2}{#3} } }
-
- \bool_set_true:N \l_@@_proceed_bool
-
- \tl_if_empty:nF {#1}
- {
- \exp_args:No \@@_check_ot_feat:NnF \l_@@_fontface_cs_tl {#1}
- {
- \@@_warning:nx {icu-feature-not-exist-in-font} {#1}
- \bool_set_false:N \l_@@_proceed_bool
- }
- }
-
- \@@_remove_clashing_featstr:x { #2 , \@@_swap_plus_minus:n {#2} , #3 }
-
- \bool_if:NT \l_@@_proceed_bool { \@@_update_featstr:n {#2} }
- }
-\cs_generate_variant:Nn \@@_make_OT_feature:nnn {xxx}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_swap_plus_minus:n { \@@_swap_plus_minus_aux:Nq #1 \q_nil }
-\cs_new:Npn \@@_swap_plus_minus_aux:Nq #1#2 \q_nil
- { \str_case:nn {#1} { {+} {-#2} {-} {+#2} } }
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\@@_check_script:NnTF}
-% This macro takes an OpenType script tag and checks if it exists in the current
-% font. \cmd\l_@@_script_int\ is used to store
-% the number corresponding to the script tag string.
-% \begin{macrocode}
-\prg_new_conditional:Nnn \@@_check_script:Nn {TF,T}
- {
-%<debug>\typeout{:: _check_script:Nn~#1~/~#2}
- \bool_if:NTF \l_@@_never_check_bool
- { \prg_return_true: }
- {
- \bool_if:nTF { \tl_if_empty_p:e {#2} }
- { \prg_return_false: }
- {
-%<*XE>
-%<debug>\typeout{::::~ checking~ script~ #2}
- \@@_iv_str_to_num:Nx \l_@@_strnum_int {#2}
- \int_set:Nn \l_tmpb_int { \XeTeXOTcountscripts #1 }
- \int_zero:N \l_tmpa_int
- \bool_set_false:N \l__fontspec_check_bool
- \bool_until_do:nn { \int_compare_p:nNn \l_tmpa_int = \l_tmpb_int }
- {
- \ifnum \XeTeXOTscripttag #1 \l_tmpa_int = \l_@@_strnum_int
- \bool_set_true:N \l__fontspec_check_bool
- \int_set:Nn \l_tmpa_int {\l_tmpb_int}
- \else
- \int_incr:N \l_tmpa_int
- \fi
- }
- \bool_if:NTF \l__fontspec_check_bool \prg_return_true: \prg_return_false:
-%</XE>
-%<*LU>
- \@@_ot_validate_tag:x {#2}
- \cs_if_eq:NNTF #1 \font
- { \tl_set:Nx \l_@@_tmp_tl {\curr@fontshape/\f@size} }
- { \tl_set:Nx \l_@@_tmp_tl {\cs_to_str:N #1} }
-%<debug>\typeout{::::~ checking:~"\l_@@_tmp_tl",~ "#2"}
- \lua_now:e { fontspec.check_ot_script("\l_@@_tmp_tl", "#2") }
- \bool_if:NTF \l__fontspec_check_bool
- {
-%<debug>\typeout{::::::~ TRUE}
- \prg_return_true:
- }
- {
-%<debug>\typeout{::::::~ FALSE}
- \prg_return_false:
- }
-%</LU>
- }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_check_lang:NnnTF}
-% \begin{macro}{\@@_check_lang:NnTF}
-% This macro takes an OpenType language tag and checks if it exists in the current
-% font/script. \cmd\l_@@_language_int\ is used to store
-% the number corresponding to the language tag string.
-% The script used is whatever's held in \cmd\l_@@_script_int. By default, that's the
-% number corresponding to `|latn|'.
-% \begin{macrocode}
-\prg_new_conditional:Nnn \@@_check_lang:Nn {TF}
- {
- \@@_check_lang:NnnTF #1 {#2} {\l_@@_script_tl} {\prg_return_true:} {\prg_return_false:}
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\prg_new_conditional:Nnn \@@_check_lang:Nnn {TF}
- {
-%<debug>\typeout{:: _check_lang:Nn~#1~/~#2~/~#3~/}
- \bool_if:NTF \l_@@_never_check_bool
- { \prg_return_true: }
- {
- \bool_if:nTF { \tl_if_empty_p:e {#3} }
- { \prg_return_false: }
- {
-%<*XE>
- \@@_iv_str_to_num:Nx \l_@@_strnum_int {#2}
- \@@_iv_str_to_num:Nx \l_@@_script_int {#3}
- \int_set:Nn \l_@@_tmpb_int
- { \XeTeXOTcountlanguages #1 \l_@@_script_int }
- \int_zero:N \l_@@_tmpa_int
- \bool_set_false:N \l__fontspec_check_bool
- \bool_until_do:nn { \int_compare_p:nNn \l_@@_tmpa_int = \l_@@_tmpb_int }
- {
- \int_set:Nn \l_@@_tmpc_int
- { \XeTeXOTlanguagetag #1 \l_@@_script_int \l_@@_tmpa_int }
-
- \int_compare:nNnTF \l_@@_tmpc_int = \l_@@_strnum_int
- {
- \bool_set_true:N \l__fontspec_check_bool
- \int_set:Nn \l_@@_tmpa_int {\l_@@_tmpb_int}
- }
- {
- \int_incr:N \l_@@_tmpa_int
- }
- }
- \bool_if:NTF \l__fontspec_check_bool \prg_return_true: \prg_return_false:
-%</XE>
-%<*LU>
- \@@_ot_validate_tag:x {#2}
- \@@_ot_validate_tag:x {#3}
- \cs_if_eq:NNTF #1 \font
- { \tl_set:Nx \l_@@_tmp_tl {\curr@fontshape/\f@size} }
- { \tl_set:Nx \l_@@_tmp_tl {\cs_to_str:N #1} }
- \@@_lua_function:neee {check_ot_lang} {\l_@@_tmp_tl} {#2} {#3}
- \bool_if:NTF \l__fontspec_check_bool \prg_return_true: \prg_return_false:
-%</LU>
- }
- }
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@@_check_ot_feat:NnTF}
-% \begin{macro}{\@@_check_ot_feat:NnnnTF}
-% This macro takes an OpenType feature tag and checks if it exists in the current
-% font/script/language.
-% \cmd\l_@@_strnum_int\ is used to store the number corresponding to the feature tag string.
-% The script used is whatever's held in \cmd\l_@@_script_int. By default, that's the
-% number corresponding to `|latn|'. The language used is \cmd\l_@@_language_int,
-% by default |0|, the `default language'.
-% \begin{macrocode}
-\prg_new_conditional:Nnn \@@_check_ot_feat:Nn {TF,F}
- {
- \@@_check_ot_feat:NnnnTF #1 {#2} {\l_@@_lang_tl} {\l_@@_script_tl}
- {\prg_return_true:} {\prg_return_false:}
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\prg_new_conditional:Nnn \@@_check_ot_feat:Nnnn {TF,F}
- {
- \bool_if:NTF \l_@@_never_check_bool
- { \prg_return_true: }
- {
- \bool_if:nTF { \tl_if_empty_p:e {#3} || \tl_if_empty_p:e {#4} }
- { \prg_return_false: }
- {
-%<*XE>
-%<debug>\typeout{::~ fontspec_check_ot_feat:nnn~ {#2}{#3}{#4}}
- \@@_iv_str_to_num:Nx \l_@@_strnum_int {#2}
-
- \str_if_eq:eeTF {#3} {dflt}
- { \int_zero:N \l_@@_language_int }
- { \@@_iv_str_to_num:Nx \l_@@_language_int {#3} }
- \@@_iv_str_to_num:Nx \l_@@_script_int {#4}
-
- \int_set:Nn \l_tmpb_int
- { \XeTeXOTcountfeatures #1 \l_@@_script_int \l_@@_language_int }
-
- \int_zero:N \l_tmpa_int
- \bool_set_false:N \l_@@_check_bool
- \bool_until_do:nn { \int_compare_p:nNn \l_tmpa_int = \l_tmpb_int }
- {
- \ifnum\XeTeXOTfeaturetag #1 \l_@@_script_int \l_@@_language_int
- \l_tmpa_int =\l_@@_strnum_int
- \bool_set_true:N \l_@@_check_bool
- \int_set:Nn \l_tmpa_int {\l_tmpb_int}
- \else
- \int_incr:N \l_tmpa_int
- \fi
- }
- \bool_if:NTF \l_@@_check_bool \prg_return_true: \prg_return_false:
-%</XE>
-%<*LU>
-%<debug>\typeout{::~ fontspec_check_ot_feat:n~ {#1}}
- \@@_ot_validate_tag:x {#2}
- \@@_ot_validate_tag:x {#3}
- \@@_ot_validate_tag:x {#4}
- \cs_if_eq:NNTF #1 \font
- { \tl_set:Nx \l_@@_tmp_tl {\curr@fontshape/\f@size} }
- { \tl_set:Nx \l_@@_tmp_tl {\cs_to_str:N #1} }
- \@@_lua_function:neeee {check_ot_feat} {\l_@@_tmp_tl} {#2} {#3} {#4}
- \bool_if:NTF \l_@@_check_bool \prg_return_true: \prg_return_false:
-%</LU>
- }
- }
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \subsection{OpenType feature information}
-%
-% \begin{macrocode}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {aalt}{Access~All~Alternates}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {abvf}{Above-base~Forms}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {abvm}{Above-base~Mark~Positioning}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {abvs}{Above-base~Substitutions}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {afrc}{Alternative~Fractions}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {akhn}{Akhands}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {blwf}{Below-base~Forms}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {blwm}{Below-base~Mark~Positioning}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {blws}{Below-base~Substitutions}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {calt}{Contextual~Alternates}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {case}{Case-Sensitive~Forms}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {ccmp}{Glyph~Composition~/~Decomposition}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {cfar}{Conjunct~Form~After~Ro}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {cjct}{Conjunct~Forms}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {clig}{Contextual~Ligatures}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {cpct}{Centered~CJK~Punctuation}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {cpsp}{Capital~Spacing}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {cswh}{Contextual~Swash}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {curs}{Cursive~Positioning}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {cvNN}{Character~Variant~$N$}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {c2pc}{Petite~Capitals~From~Capitals}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {c2sc}{Small~Capitals~From~Capitals}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {dist}{Distances}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {dlig}{Discretionary~Ligatures}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {dnom}{Denominators}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {dtls}{Dotless~Forms}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {expt}{Expert~Forms}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {falt}{Final~Glyph~on~Line~Alternates}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {fin2}{Terminal~Forms~\#2}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {fin3}{Terminal~Forms~\#3}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {fina}{Terminal~Forms}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {flac}{Flattened~accent~forms}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {frac}{Fractions}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {fwid}{Full~Widths}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {half}{Half~Forms}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {haln}{Halant~Forms}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {halt}{Alternate~Half~Widths}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {hist}{Historical~Forms}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {hkna}{Horizontal~Kana~Alternates}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {hlig}{Historical~Ligatures}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {hngl}{Hangul}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {hojo}{Hojo~Kanji~Forms}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {hwid}{Half~Widths}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {init}{Initial~Forms}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {isol}{Isolated~Forms}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {ital}{Italics}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {jalt}{Justification~Alternates}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {jp78}{JIS78~Forms}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {jp83}{JIS83~Forms}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {jp90}{JIS90~Forms}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {jp04}{JIS2004~Forms}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {kern}{Kerning}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {lfbd}{Left~Bounds}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {liga}{Standard~Ligatures}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {ljmo}{Leading~Jamo~Forms}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {lnum}{Lining~Figures}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {locl}{Localized~Forms}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {ltra}{Left-to-right~alternates}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {ltrm}{Left-to-right~mirrored~forms}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {mark}{Mark~Positioning}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {med2}{Medial~Forms~\#2}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {medi}{Medial~Forms}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {mgrk}{Mathematical~Greek}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {mkmk}{Mark~to~Mark~Positioning}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {mset}{Mark~Positioning~via~Substitution}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {nalt}{Alternate~Annotation~Forms}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {nlck}{NLC~Kanji~Forms}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {nukt}{Nukta~Forms}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {numr}{Numerators}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {onum}{Oldstyle~Figures}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {opbd}{Optical~Bounds}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {ordn}{Ordinals}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {ornm}{Ornaments}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {palt}{Proportional~Alternate~Widths}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {pcap}{Petite~Capitals}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {pkna}{Proportional~Kana}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {pnum}{Proportional~Figures}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {pref}{Pre-Base~Forms}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {pres}{Pre-base~Substitutions}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {pstf}{Post-base~Forms}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {psts}{Post-base~Substitutions}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {pwid}{Proportional~Widths}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {qwid}{Quarter~Widths}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {rand}{Randomize}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {rclt}{Required~Contextual~Alternates}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {rkrf}{Rakar~Forms}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {rlig}{Required~Ligatures}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {rphf}{Reph~Forms}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {rtbd}{Right~Bounds}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {rtla}{Right-to-left~alternates}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {rtlm}{Right-to-left~mirrored~forms}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {ruby}{Ruby~Notation~Forms}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {rvrn}{Required~Variation~Alternates}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {salt}{Stylistic~Alternates}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {sinf}{Scientific~Inferiors}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {size}{Optical~size}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {smcp}{Small~Capitals}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {smpl}{Simplified~Forms}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {ssNN}{Stylistic~Set~$N$}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {ssty}{Math~script~style~alternates}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {stch}{Stretching~Glyph~Decomposition}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {subs}{Subscript}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {sups}{Superscript}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {swsh}{Swash}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {titl}{Titling}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {tjmo}{Trailing~Jamo~Forms}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {tnam}{Traditional~Name~Forms}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {tnum}{Tabular~Figures}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {trad}{Traditional~Forms}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {twid}{Third~Widths}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {unic}{Unicase}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {valt}{Alternate~Vertical~Metrics}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {vatu}{Vattu~Variants}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {vert}{Vertical~Writing}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {vhal}{Alternate~Vertical~Half~Metrics}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {vjmo}{Vowel~Jamo~Forms}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {vkna}{Vertical~Kana~Alternates}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {vkrn}{Vertical~Kerning}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {vpal}{Proportional~Alternate~Vertical~Metrics}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {vrt2}{Vertical~Alternates~and~Rotation}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {vrtr}{Vertical~Alternates~for~Rotation}
-\prop_gput:Nnn \g_@@_all_opentype_feature_names_prop {zero}{Slashed~Zero}
-% \end{macrocode}
-% TODO: move the above elsewhere!!
-%
-% \iffalse
-% \begin{macrocode}
-%</fontspec>
-% \end{macrocode}
-% \fi
-
-
-
-\endinput
-
-% /©
-% ------------------------------------------------
-% The FONTSPEC package <wspr.io/fontspec>
-% ------------------------------------------------
-% Copyright 2004-2020 Will Robertson, LPPL "maintainer"
-% Copyright 2009-2015 Khaled Hosny
-% Copyright 2013 Philipp Gesang
-% Copyright 2013-2016 Joseph Wright
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% ©/
diff --git a/macros/latex/contrib/fontspec/fontspec-code-scripts.dtx b/macros/latex/contrib/fontspec/fontspec-code-scripts.dtx
deleted file mode 100644
index 32e861f566..0000000000
--- a/macros/latex/contrib/fontspec/fontspec-code-scripts.dtx
+++ /dev/null
@@ -1,194 +0,0 @@
-%%^^A%% fontspec-code-scripts.dtx -- part of FONTSPEC <wspr.io/fontspec>
-
-% \section{Font script definitions}
-%
-% \iffalse
-% \begin{macrocode}
-%<*fontspec>
-% \end{macrocode}
-% \fi
-%
-% \begin{macrocode}
-\newfontscript{Adlam}{adlm}
-\newfontscript{Ahom}{ahom}
-\newfontscript{Anatolian~Hieroglyphs}{hluw}
-\newfontscript{Arabic}{arab}
-\newfontscript{Armenian}{armn}
-\newfontscript{Avestan}{avst}
-\newfontscript{Balinese}{bali}
-\newfontscript{Bamum}{bamu}
-\newfontscript{Bassa~Vah}{bass}
-\newfontscript{Batak}{batk}
-\newfontscript{Bengali}{bng2,beng}
-\newfontscript{Bhaiksuki}{bhks}
-\newfontscript{Bopomofo}{bopo}
-\newfontscript{Brahmi}{brah}
-\newfontscript{Braille}{brai}
-\newfontscript{Buginese}{bugi}
-\newfontscript{Buhid}{buhd}
-\newfontscript{Byzantine~Music}{byzm}
-\newfontscript{Canadian~Syllabics}{cans}
-\newfontscript{Carian}{cari}
-\newfontscript{Caucasian~Albanian}{aghb}
-\newfontscript{Chakma}{cakm}
-\newfontscript{Cham}{cham}
-\newfontscript{Cherokee}{cher}
-\newfontscript{CJK~Ideographic}{hani}
-\newfontscript{Coptic}{copt}
-\newfontscript{Cypriot~Syllabary}{cprt}
-\newfontscript{Cyrillic}{cyrl}
-\newfontscript{Default}{DFLT}
-\newfontscript{CustomDefault}{latn,DFLT}
-\newfontscript{Deseret}{dsrt}
-\newfontscript{Devanagari}{dev2,deva}
-\newfontscript{Dogra}{dogr}
-\newfontscript{Duployan}{dupl}
-\newfontscript{Egyptian~Hieroglyphs}{egyp}
-\newfontscript{Elbasan}{elba}
-\newfontscript{Ethiopic}{ethi}
-\newfontscript{Georgian}{geor}
-\newfontscript{Glagolitic}{glag}
-\newfontscript{Gothic}{goth}
-\newfontscript{Grantha}{gran}
-\newfontscript{Greek}{grek}
-\newfontscript{Gujarati}{gjr2,gujr}
-\newfontscript{Gunjala~Gondi}{gong}
-\newfontscript{Gurmukhi}{gur2,guru}
-\newfontscript{Hangul~Jamo}{jamo}
-\newfontscript{Hangul}{hang}
-\newfontscript{Hanifi~Rohingya}{rohg}
-\newfontscript{Hanunoo}{hano}
-\newfontscript{Hatran}{hatr}
-\newfontscript{Hebrew}{hebr}
-\newfontscript{Hiragana~and~Katakana}{kana}
-\newfontscript{Imperial~Aramaic}{armi}
-\newfontscript{Inscriptional~Pahlavi}{phli}
-\newfontscript{Inscriptional~Parthian}{prti}
-\newfontscript{Javanese}{java}
-\newfontscript{Kaithi}{kthi}
-\newfontscript{Kannada}{knd2,knda}
-\newfontscript{Kayah~Li}{kali}
-\newfontscript{Kharosthi}{khar}
-\newfontscript{Khmer}{khmr}
-\newfontscript{Khojki}{khoj}
-\newfontscript{Khudawadi}{sind}
-\newfontscript{Lao}{lao~}
-\newfontscript{Latin}{latn}
-\newfontscript{Lepcha}{lepc}
-\newfontscript{Limbu}{limb}
-\newfontscript{Linear~A}{lina}
-\newfontscript{Linear~B}{linb}
-\newfontscript{Lisu}{lisu}
-\newfontscript{Lycian}{lyci}
-\newfontscript{Lydian}{lydi}
-\newfontscript{Mahajani}{mahj}
-\newfontscript{Makasar}{maka}
-\newfontscript{Malayalam}{mlm2,mlym}
-\newfontscript{Mandaic}{mand}
-\newfontscript{Manichaean}{mani}
-\newfontscript{Marchen}{marc}
-\newfontscript{Masaram Gondi}{gonm}
-\newfontscript{Math}{math}
-\newfontscript{Medefaidrin}{medf}
-\newfontscript{Meitei~Mayek}{mtei}
-\newfontscript{Mende~Kikakui}{mend}
-\newfontscript{Meroitic~Cursive}{merc}
-\newfontscript{Meroitic~Hieroglyphs}{mero}
-\newfontscript{Miao}{plrd}
-\newfontscript{Modi}{modi}
-\newfontscript{Mongolian}{mong}
-\newfontscript{Mro}{mroo}
-\newfontscript{Multani}{mult}
-\newfontscript{Musical~Symbols}{musc}
-\newfontscript{Myanmar}{mym2,mymr}
-\newfontscript{N'Ko}{nko~}
-\newfontscript{Nabataean}{nbat}
-\newfontscript{Newa}{newa}
-\newfontscript{Nushu}{nshu}
-\newfontscript{Odia}{ory2,orya}
-\newfontscript{Ogham}{ogam}
-\newfontscript{Ol~Chiki}{olck}
-\newfontscript{Old~Italic}{ital}
-\newfontscript{Old~Hungarian}{hung}
-\newfontscript{Old~North~Arabian}{narb}
-\newfontscript{Old~Permic}{perm}
-\newfontscript{Old~Persian~Cuneiform}{xpeo}
-\newfontscript{Old~Sogdian}{sogo}
-\newfontscript{Old~South~Arabian}{sarb}
-\newfontscript{Old~Turkic}{orkh}
-\newfontscript{Osage}{osge}
-\newfontscript{Osmanya}{osma}
-\newfontscript{Pahawh~Hmong}{hmng}
-\newfontscript{Palmyrene}{palm}
-\newfontscript{Pau~Cin~Hau}{pauc}
-\newfontscript{Phags-pa}{phag}
-\newfontscript{Phoenician}{phnx}
-\newfontscript{Psalter~Pahlavi}{phlp}
-\newfontscript{Rejang}{rjng}
-\newfontscript{Runic}{runr}
-\newfontscript{Samaritan}{samr}
-\newfontscript{Saurashtra}{saur}
-\newfontscript{Sharada}{shrd}
-\newfontscript{Shavian}{shaw}
-\newfontscript{Siddham}{sidd}
-\newfontscript{Sign~Writing}{sgnw}
-\newfontscript{Sinhala}{sinh}
-\newfontscript{Sogdian}{sogd}
-\newfontscript{Sora~Sompeng}{sora}
-\newfontscript{Sumero-Akkadian~Cuneiform}{xsux}
-\newfontscript{Sundanese}{sund}
-\newfontscript{Syloti~Nagri}{sylo}
-\newfontscript{Syriac}{syrc}
-\newfontscript{Tagalog}{tglg}
-\newfontscript{Tagbanwa}{tagb}
-\newfontscript{Tai~Le}{tale}
-\newfontscript{Tai~Lu}{talu}
-\newfontscript{Tai~Tham}{lana}
-\newfontscript{Tai~Viet}{tavt}
-\newfontscript{Takri}{takr}
-\newfontscript{Tamil}{tml2,taml}
-\newfontscript{Tangut}{tang}
-\newfontscript{Telugu}{tel2,telu}
-\newfontscript{Thaana}{thaa}
-\newfontscript{Thai}{thai}
-\newfontscript{Tibetan}{tibt}
-\newfontscript{Tifinagh}{tfng}
-\newfontscript{Tirhuta}{tirh}
-\newfontscript{Ugaritic~Cuneiform}{ugar}
-\newfontscript{Vai}{vai~}
-\newfontscript{Warang~Citi}{wara}
-\newfontscript{Yi}{yi~~}
-\newfontscript{Zanabazar~Square}{zanb}
-% \end{macrocode}
-% For convenience or backwards compatibility:
-% \begin{macrocode}
-\newfontscript{CJK}{hani}
-\newfontscript{Kana}{kana}
-\newfontscript{Maths}{math}
-\newfontscript{N'ko}{nko~}
-\newfontscript{Oriya}{ory2,orya}
-% \end{macrocode}
-%
-% \iffalse
-% \begin{macrocode}
-%</fontspec>
-% \end{macrocode}
-% \fi
-
-
-\endinput
-
-% /©
-% ------------------------------------------------
-% The FONTSPEC package <wspr.io/fontspec>
-% ------------------------------------------------
-% Copyright 2004-2020 Will Robertson, LPPL "maintainer"
-% Copyright 2009-2015 Khaled Hosny
-% Copyright 2013 Philipp Gesang
-% Copyright 2013-2016 Joseph Wright
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% ©/
diff --git a/macros/latex/contrib/fontspec/fontspec-code-user.dtx b/macros/latex/contrib/fontspec/fontspec-code-user.dtx
deleted file mode 100644
index a4a754d598..0000000000
--- a/macros/latex/contrib/fontspec/fontspec-code-user.dtx
+++ /dev/null
@@ -1,552 +0,0 @@
-%%^^A%% fontspec-code-user.dtx -- part of FONTSPEC <wspr.io/fontspec>
-
-% \section{User command internals}
-% \label{sec:codeinternal}
-%
-% \iffalse
-% \begin{macrocode}
-%<*fontspec>
-% \end{macrocode}
-% \fi
-%
-%
-% \subsection{Font selection}
-%
-% \begin{macro}{\@@_main_fontspec:nn}
-% This is the main command of the package that
-% selects fonts with various features. It takes two arguments: the
-% font name and the optional requested features of that
-% font.
-% \begin{macrocode}
-\cs_new:Nn \@@_main_fontspec:nn
- {
- \fontspec_set_family:Nnn \f@family {#1} {#2}
- \fontencoding { \g_@@_nfss_enc_tl }
- \selectfont
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\rmfamily}
-% \begin{macro}{\sffamily}
-% \begin{macro}{\ttfamily}
-% Add an encoding switch to the three family commands.
-% \begin{macrocode}
-\cs_if_exist:NTF \@rmfamilyhook
- {
- \tl_put_right:Nn \@rmfamilyhook {\fontencoding \l_@@_rmfamily_encoding_tl}
- \tl_put_right:Nn \@sffamilyhook {\fontencoding \l_@@_sffamily_encoding_tl}
- \tl_put_right:Nn \@ttfamilyhook {\fontencoding \l_@@_ttfamily_encoding_tl}
- }
- {
- \tl_replace_all:cnn { rmfamily~ } { \fontfamily }
- { \fontencoding \l_@@_rmfamily_encoding_tl \fontfamily }
- \tl_replace_all:cnn { sffamily~ } { \fontfamily }
- { \fontencoding \l_@@_sffamily_encoding_tl \fontfamily }
- \tl_replace_all:cnn { ttfamily~ } { \fontfamily }
- { \fontencoding \l_@@_ttfamily_encoding_tl \fontfamily }
- }
-\tl_set:Nn \l_@@_rmfamily_encoding_tl { \encodingdefault }
-\tl_set:Nn \l_@@_sffamily_encoding_tl { \encodingdefault }
-\tl_set:Nn \l_@@_ttfamily_encoding_tl { \encodingdefault }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\setmainfont}
-% The following three macros perform equivalent operations setting
-% the default font for a particular family: `roman', sans serif, or typewriter
-% (monospaced).
-%
-% They end with |\normalfont| so that if they're
-% used in the document, the change registers immediately.
-% \begin{macrocode}
-\cs_new:Nn \@@_main_setmainfont:nn
- {
- \ifdefined\DeclareFontSeriesDefault
- \DeclareFontSeriesDefault[rm]{bf}{\bfdefault}
- \fi
- \fontspec_set_family:Nnn \l_@@_rmfamily_family_tl {#1} {#2}
- \tl_set_eq:NN \rmdefault \l_@@_rmfamily_family_tl
- \tl_set_eq:NN \l_@@_rmfamily_encoding_tl \g_@@_nfss_enc_tl
- \str_if_eq:eeT {\familydefault} {\rmdefault}
- { \tl_set_eq:NN \encodingdefault \g_@@_nfss_enc_tl }
- \@@_setmainfont_hook:nn {#1} {#2} % for unicode-math only
- \normalfont
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\setsansfont}
-% Same as above.
-% \begin{macrocode}
-\cs_new:Nn \@@_main_setsansfont:nn
- {
- \ifdefined\DeclareFontSeriesDefault
- \DeclareFontSeriesDefault[sf]{bf}{\bfdefault}
- \fi
- \fontspec_set_family:Nnn \l_@@_sffamily_family_tl {#1} {#2}
- \tl_set_eq:NN \sfdefault \l_@@_sffamily_family_tl
- \tl_set_eq:NN \l_@@_sffamily_encoding_tl \g_@@_nfss_enc_tl
- \str_if_eq:eeT {\familydefault} {\sfdefault}
- { \tl_set_eq:NN \encodingdefault \g_@@_nfss_enc_tl }
- \@@_setsansfont_hook:nn {#1} {#2} % for unicode-math only
- \normalfont
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\setmonofont}
-% Same as above.
-% \begin{macrocode}
-\cs_new:Nn \@@_main_setmonofont:nn
- {
- \ifdefined\DeclareFontSeriesDefault
- \DeclareFontSeriesDefault[tt]{bf}{\bfdefault}
- \fi
- \fontspec_set_family:Nnn \l_@@_ttfamily_family_tl {#1} {#2}
- \tl_set_eq:NN \ttdefault \l_@@_ttfamily_family_tl
- \tl_set_eq:NN \l_@@_ttfamily_encoding_tl \g_@@_nfss_enc_tl
- \str_if_eq:eeT {\familydefault} {\ttdefault}
- { \tl_set_eq:NN \encodingdefault \g_@@_nfss_enc_tl }
- \@@_setmonofont_hook:nn {#1} {#2} % for unicode-math only
- \normalfont
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-% \begin{macro}{\setmathrm}
-% These commands are analogous to \cmd\setmainfont\ and others,
-% but for selecting the font used for \cmd\mathrm, \etc. They
-% can only be used in the preamble of the
-% document. \cmd\setboldmathrm\ is used for specifying which
-% fonts should be used in \cmd\boldmath.
-% \begin{macrocode}
-\cs_new:Nn \@@_main_setmathrm:nn
- {
-%<XE> \fontspec_gset_family:Nnn \g_@@_mathrm_tl {#1} {#2}
-%<LU> \fontspec_gset_family:Nnn \g_@@_mathrm_tl {Renderer=Basic,#1} {#2}
- \@@_setmathrm_hook:nn {#1} {#2} % for unicode-math only
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\setboldmathrm}
-% \begin{macrocode}
-\cs_new:Nn \@@_main_setboldmathrm:nn
- {
-%<XE> \fontspec_gset_family:Nnn \g_@@_bfmathrm_tl {#1} {#2}
-%<LU> \fontspec_gset_family:Nnn \g_@@_bfmathrm_tl {Renderer=Basic,#1} {#2}
- \@@_setboldmathrm_hook:nn {#1} {#2} % for unicode-math only
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\setmathsf}
-% \begin{macrocode}
-\cs_new:Nn \@@_main_setmathsf:nn
- {
-%<XE> \fontspec_gset_family:Nnn \g_@@_mathsf_tl {#1} {#2}
-%<LU> \fontspec_gset_family:Nnn \g_@@_mathsf_tl {Renderer=Basic,#1} {#2}
- \@@_setmathsf_hook:nn {#1} {#2} % for unicode-math only
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\setmathtt}
-% \begin{macrocode}
-\cs_new:Nn \@@_main_setmathtt:nn
- {
-%<XE> \fontspec_gset_family:Nnn \g_@@_mathtt_tl {#1} {#2}
-%<LU> \fontspec_gset_family:Nnn \g_@@_mathtt_tl {Renderer=Basic,#1} {#2}
- \@@_setmathtt_hook:nn {#1} {#2} % for unicode-math only
- }
-% \end{macrocode}
-% \end{macro}
-%
-% Hooks:
-% \begin{macrocode}
-\cs_set_eq:NN \@@_setmainfont_hook:nn \use_none:nn
-\cs_set_eq:NN \@@_setsansfont_hook:nn \use_none:nn
-\cs_set_eq:NN \@@_setmonofont_hook:nn \use_none:nn
-\cs_set_eq:NN \@@_setmathrm_hook:nn \use_none:nn
-\cs_set_eq:NN \@@_setmathsf_hook:nn \use_none:nn
-\cs_set_eq:NN \@@_setmathtt_hook:nn \use_none:nn
-\cs_set_eq:NN \@@_setboldmathrm_hook:nn \use_none:nn
-% \end{macrocode}
-%
-% Hmm, this isn't necessary with \pkg{unicode-math}; oh well:
-% \begin{macrocode}
-\@onlypreamble\setmathrm
-\@onlypreamble\setboldmathrm
-\@onlypreamble\setmathsf
-\@onlypreamble\setmathtt
-% \end{macrocode}
-%
-% If the commands above are not executed, then \cmd\rmdefault\ (\etc)
-% will be used.
-% \begin{macrocode}
-\tl_gset:Nn \g_@@_mathrm_tl {\rmdefault}
-\tl_gset:Nn \g_@@_mathsf_tl {\sfdefault}
-\tl_gset:Nn \g_@@_mathtt_tl {\ttdefault}
-% \end{macrocode}
-%
-% \begin{macro}{\@@_main_newfontfamily:NnnN}
-% The inner fontspec workings define a font family, which is then used in a typical
-% NFSS \cmd\fontfamily\ declaration, saved in the macro name specified.
-% The fourth argument determines which xparse function to set the macro with (new/renew/etc).
-% \begin{macrocode}
-\cs_new:Nn \@@_main_newfontfamily:NnnN
- {
- \fontspec_set_family:cnn { l_@@_ \cs_to_str:N #1 _family_tl } {#2} {#3}
- \use:x
- {
- \exp_not:N #4 \exp_not:N #1 {}
- {
- \exp_not:N \fontfamily { \use:c { l_@@_ \cs_to_str:N #1 _family_tl } }
- \exp_not:N \fontencoding { \g_@@_nfss_enc_tl }
- \exp_not:N \selectfont
- }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_main_newfontface:NnnN}
-% \cmd\newfontface\ uses the fact that if the argument to \feat{BoldFont}, etc., is empty (\ie, |BoldFont={}|), then no bold font is searched for.
-% \begin{macrocode}
-\cs_new:Nn \@@_main_newfontface:NnnN
- {
- \@@_main_newfontfamily:NnnN #1 { BoldFont={},ItalicFont={},SmallCapsFont={},#2 } {#3} #4
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{Font feature selection}
-%
-% \begin{macro}{\@@_set_default_features:nn}
-% \begin{macrocode}
-\cs_new:Nn \@@_set_default_features:nn
- {
- \IfBooleanTF {#1} \clist_gput_right:Nn \clist_gset:Nn
- \g_@@_default_fontopts_clist {#2}
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_set_font_default_features:nnn}
-% The optional argument |#2| specifies font identifier(s).
-% Branch for either (a)~single token input such as \verb|\rmdefault|, or (b)~otherwise assume its a fontname.
-% In that case, strip spaces and file extensions and lower-case to ensure consistency.
-% \begin{macrocode}
-\cs_new:Nn \@@_set_font_default_features:nnn
- {
-%<debug> \typeout{\unexpanded{_set_font_default_features:nnn:{#1}{#2}{#3}}}
- \clist_map_inline:nn {#2}
- {
- \tl_if_single:nTF {##1}
- { \tl_set:No \l_@@_tmp_tl { \cs:w l_@@_ \cs_to_str:N ##1 _family_tl\cs_end: } }
- { \@@_sanitise_fontname:Nn \l_@@_tmp_tl {##1} }
-
- \IfBooleanTF {#1}
- {
- \prop_get:NVNF \g_@@_fontopts_prop \l_@@_tmp_tl \l_@@_tmpb_tl
- { \tl_clear:N \l_@@_tmpb_tl }
- \tl_put_right:Nn \l_@@_tmpb_tl {#3,}
- \prop_gput:NVV \g_@@_fontopts_prop \l_@@_tmp_tl \l_@@_tmpb_tl
- }
- {
- \tl_if_empty:nTF {#3}
- { \prop_gremove:NV \g_@@_fontopts_prop \l_@@_tmp_tl }
- { \prop_gput:NVn \g_@@_fontopts_prop \l_@@_tmp_tl {#3,} }
- }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\addfontfeatures}
-% In order to be able to extend the feature selection of
-% a given font, two things need to be known: the currently selected
-% features, and the currently selected font. Every time a font
-% family is created, this information is saved inside a control
-% sequence with the name of the font family itself.
-%
-% This macro extracts this information, then appends the requested
-% font features to add to the already existing ones, and calls the
-% font again with the top level \cs{fontspec} command.
-%
-% The default options are \emph{not} applied (which is why
-% \cs{g_fontspec_default_fontopts_tl} is emptied inside the group; this is allowed
-% as \cmd\l_fontspec_family_tl\ is globally defined in \cmd\@@_select_font_family:nn), so this
-% means that the only added features to the font are strictly those
-% specified by this command.
-%
-% \cs{addfontfeature} is defined as an alias, as I found that I
-% often typed this instead when adding only a single font feature.
-% \begin{macrocode}
-\cs_new:Nn \@@_main_addfontfeatures:n
- {
-%<debug> \typeout{^^J::::::::::::::::::::::::::::::::::^^J: addfontfeatures}
- \fontspec_if_fontspec_font:TF
- {
- \group_begin:
- \keys_set_known:nnN {fontspec-addfeatures} {#1} \l_@@_tmp_tl
- \prop_get:cnN {g_@@_fontinfo_ \f@family _prop} {options} \l_@@_options_tl
- \prop_get:cnN {g_@@_fontinfo_ \f@family _prop} {fontname} \l_@@_fontname_tl
- \bool_set_true:N \l_@@_disable_defaults_bool
-%<debug> \typeout{ \@@_select_font_family:nn { \l_@@_options_tl , #1 } {\l_@@_fontname_tl} }
- \use:x
- {
- \@@_select_font_family:nn
- { \l_@@_options_tl , #1 } {\l_@@_fontname_tl}
- }
- \group_end:
- \fontfamily \g_@@_nfss_family_tl \selectfont
- }
- {
- \@@_warning:nx {addfontfeatures-ignored} {#1}
- }
- \ignorespaces
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{Defining new font features}
-%
-% \begin{macro}{\newfontfeature}
-% \cs{newfontfeature} takes two arguments: the name of the feature
-% tag by which to reference it, and the string that is used to
-% select the font feature.
-% \begin{macrocode}
-\cs_new:Nn \@@_main_newfontfeature:nn
- {
- \keys_define:nn { fontspec }
- {
- #1 .code:n = { \@@_update_featstr:n {#2} }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\newAATfeature}
-% This command assigns a new AAT feature by its code (|#2|,|#3|) to a new name (|#1|).
-% Better than \cmd\newfontfeature\ because it checks if the feature exists in the
-% font it's being used for.
-% \begin{macrocode}
-\cs_new:Nn \@@_main_newAATfeature:nnnn
- {
- \keys_if_exist:nnF { fontspec } {#1}
- { \@@_define_aat_feature_group:n {#1} }
-
- \keys_if_choice_exist:nnnT {fontspec} {#1} {#2}
- { \@@_warning:nxx {feature-option-overwrite} {#1} {#2} }
-
- \@@_define_aat_feature:nnnn {#1}{#2}{#3}{#4}
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\newopentypefeature}
-% This command assigns a new OpenType feature by its abbreviation (|#2|) to a new name (|#1|).
-% Better than \cmd\newfontfeature\ because it checks if the feature exists in the
-% font it's being used for.
-% \begin{macrocode}
-\cs_new:Nn \@@_main_newopentypefeature:nnn
- {
- \keys_if_exist:nnF { fontspec / options } {#1}
- { \@@_define_opentype_feature_group:n {#1} }
-
- \keys_if_choice_exist:nnnT {fontspec} {#1} {#2}
- { \@@_warning:nxx {feature-option-overwrite} {#1} {#2} }
-
- \exp_args:Nnnx \@@_define_opentype_feature:nnnnn
- {#1} {#2} { \@@_strip_plus_minus:n {#3} } {#3} {}
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_strip_plus_minus:n { \@@_strip_plus_minus_aux:Nq #1 \q_nil }
-\cs_new:Npn \@@_strip_plus_minus_aux:Nq #1#2 \q_nil
- {
- \str_case:nnF {#1} { {+} {#2} {-} {#2} } {#1#2}
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\aliasfontfeature}
-% User commands for renaming font features and font feature options.
-% \begin{macrocode}
-\cs_new:Nn \@@_main_aliasfontfeature:nn
- {
-%<debug> \typeout{::::::::::::::::::::^^J:: aliasfontfeature{#1}{#2}}
- \bool_set_false:N \l_@@_alias_bool
-
- \clist_map_inline:Nn \g_@@_all_keyval_modules_clist
- {
- \keys_if_exist:nnT {##1} {#1}
- {
-%<debug> \typeout{:::: Key~exists~##1~/~#1}
- \bool_set_true:N \l_@@_alias_bool
- \keys_define:nn {##1}
- { #2 .code:n = { \keys_set:nn {##1} { #1 = {####1} } } }
- }
- }
-
- \bool_if:NF \l_@@_alias_bool
- { \@@_warning:nx {rename-feature-not-exist} {#1} }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\aliasfontfeatureoption}
-% \begin{macrocode}
-\cs_new:Nn \@@_main_aliasfontfeatureoption:nnn
- {
- \bool_set_false:N \l_@@_alias_bool
-
- \clist_map_inline:Nn \g_@@_all_keyval_modules_clist
- {
- \keys_if_exist:nnT { ##1 / #1 } {#2}
- {
-%<debug> \typeout{:::: Keyval~exists~##1~/~#1~=~#2}
- \bool_set_true:N \l_@@_alias_bool
- \keys_define:nn { ##1 / #1 }
- { #3 .code:n = { \keys_set:nn {##1} { #1 = {#2} } } }
- }
-
- \keys_if_exist:nnT { ##1 / #1 } {#2Reset}
- {
-%<debug> \typeout{:::: Keyval~exists~##1~/~#1~=~#2Reset}
- \keys_define:nn { ##1 / #1 }
- { #3Reset .code:n = { \keys_set:nn {##1} { #1 = {#2Reset} } } }
- }
-
- \keys_if_exist:nnT { ##1 / #1 } {#2Off}
- {
-%<debug> \typeout{:::: Keyval~exists~##1~/~#1~=~#2Off}
- \keys_define:nn { ##1 / #1 }
- { #3Off .code:n = { \keys_set:nn {##1} { #1 = {#2Off} } } }
- }
- }
-
- \bool_if:NF \l_@@_alias_bool
- { \@@_warning:nx {rename-feature-not-exist} {#1/#2} }
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\@@_main_DeclareFontExtensions:n}
-% \begin{macrocode}
-\cs_new:Nn \@@_main_DeclareFontExtensions:n
- {
- \clist_set:Nn \l_@@_extensions_clist { #1 }
- }
-% \end{macrocode}
-% Defaults:
-% \begin{macrocode}
-\@@_main_DeclareFontExtensions:n {.otf,.ttf,.OTF,.TTF,.ttc,.TTC,.dfont}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsection{High level conditionals}
-%
-%
-% \begin{macro}{\IfFontFeatureActiveTF}
-% \begin{macrocode}
-\cs_new:Nn \@@_main_IfFontFeatureActiveTF:nnn
- {
-%<debug> \typeout{^^J:::::::::::::::::::::::::::::::::::::::::::::::}
-%<debug> \typeout{:IfFontFeatureActiveTF \exp_not:n{{#1}{#2}{#3}}}
- \@@_if_font_feature:nTF {#1} {#2} {#3}
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\prg_new_conditional:Nnn \@@_if_font_feature:n {TF}
- {
- \tl_gclear:N \g_@@_single_feat_tl
- \group_begin:
- \@@_font_suppress_not_found_error:
- \@@_init:
- \bool_set_true:N \l_@@_ot_bool
- \bool_set_true:N \l_@@_never_check_bool
- \bool_set_false:N \l_@@_firsttime_bool
- \clist_clear:N \l_@@_fontfeat_clist
- \@@_get_features:n {#1}
- \group_end:
-
-%<debug> \typeout{:::> \exp_not:N\g_@@_rawfeatures_sclist->~{\g_@@_rawfeatures_sclist}}
-%<debug> \typeout{:::> \exp_not:N\g_@@_single_feat_tl->~{\g_@@_single_feat_tl}}
-
- \tl_if_empty:NTF \g_@@_single_feat_tl { \prg_return_false: }
- {
- \exp_args:NV \fontspec_if_current_feature:nTF \g_@@_single_feat_tl
- { \prg_return_true: } { \prg_return_false: }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsection{\cs{oldstylenums} and \cs{liningnums}}
-%
-% \begin{macro}{\oldstylenums}
-% \begin{macro}{\liningnums}
-% This command needs a redefinition.
-% And we may as well provide the reverse command.
-% \begin{macrocode}
-\cs_new_protected:Nn \@@_main_oldstylenums:n
- {
- \group_begin:
- \addfontfeature{Numbers=OldStyle}
- #1
- \group_end:
- }
-\cs_new_protected:Nn \@@_main_liningnums:n
- {
- \group_begin:
- \addfontfeature{Numbers=Lining}
- #1
- \group_end:
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-%
-%
-% \iffalse
-% \begin{macrocode}
-%</fontspec>
-% \end{macrocode}
-% \fi
-
-
-\endinput
-
-% /©
-% ------------------------------------------------
-% The FONTSPEC package <wspr.io/fontspec>
-% ------------------------------------------------
-% Copyright 2004-2020 Will Robertson, LPPL "maintainer"
-% Copyright 2009-2015 Khaled Hosny
-% Copyright 2013 Philipp Gesang
-% Copyright 2013-2016 Joseph Wright
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% ©/
diff --git a/macros/latex/contrib/fontspec/fontspec-code-vars.dtx b/macros/latex/contrib/fontspec/fontspec-code-vars.dtx
deleted file mode 100644
index 6350d24cc5..0000000000
--- a/macros/latex/contrib/fontspec/fontspec-code-vars.dtx
+++ /dev/null
@@ -1,336 +0,0 @@
-%%^^A%% fontspec-code-vars.dtx -- part of FONTSPEC <wspr.io/fontspec>
-%
-% \section{Declaration of variables}
-%
-% \iffalse
-% \begin{macrocode}
-%<*fontspec>
-% \end{macrocode}
-% \fi
-%
-% This file consists solely of declaration of variables used by \pkg{fontspec}.
-% In some cases these variables are also initialised with default values.
-% In time I would like to move these initialisations
-%
-% \paragraph{Booleans}
-%
-% \begin{macro}{\l_@@_firsttime_bool}
-% As \cs{keys_set:nn} is run multiple times, some of its
-% information storing only occurs once while we decide if the font family
-% has been defined or not. When the later processing is occuring per-shape
-% this no longer needs to happen; this is indicated by the `firsttime'
-% conditional.
-% \begin{macrocode}
-\bool_new:N \l_@@_firsttime_bool
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-\bool_new:N \l_@@_nobf_bool
-\bool_new:N \l_@@_noit_bool
-\bool_new:N \l_@@_nosc_bool
-\bool_new:N \l_@@_check_bool
-% \end{macrocode}
-%
-% \begin{macrocode}
-\bool_new:N \l_@@_tfm_bool
-\bool_new:N \l_@@_atsui_bool
-\bool_new:N \l_@@_ot_bool
-\bool_new:N \l_@@_mm_bool
-\bool_new:N \l_@@_harfbuzz_bool
-\bool_new:N \l_@@_graphite_bool
-\bool_new:N \l_@@_fontcfg_bool
-\bool_set_true:N \l_@@_fontcfg_bool
-% \end{macrocode}
-% For dealing with legacy maths:
-% \begin{macrocode}
-\bool_new:N \g_@@_math_euler_bool
-\bool_new:N \g_@@_math_lucida_bool
-\bool_new:N \g_@@_pkg_euler_loaded_bool
-% \end{macrocode}
-% For package options:
-% \begin{macrocode}
-\bool_new:N \g_@@_cfg_bool
-\bool_new:N \g_@@_math_bool
-\bool_new:N \g_@@_euenc_bool
-% \end{macrocode}
-%
-% \begin{macrocode}
-\bool_new:N \l_@@_tmpa_bool
-\bool_new:N \l_@@_disable_defaults_bool
-\bool_new:N \l_@@_alias_bool
-\bool_new:N \l_@@_external_bool
-\bool_new:N \l_@@_defining_encoding_bool
-\bool_new:N \l_@@_scriptlang_exist_bool
-\bool_new:N \g_@@_em_normalise_slant_bool
-\bool_new:N \l_@@_proceed_bool
-% \end{macrocode}
-%
-% \begin{macro}{\l_@@_never_check_bool}
-% It is used to disable checking opentype script, language, and tags
-% when running checking code that has a user-defined return path we want to allow the higher-level
-% code to dictate the logic.
-% TODO: tidy this up!
-% \begin{macrocode}
-\bool_new:N \l_@@_never_check_bool
-% \end{macrocode}
-% \end{macro}
-%
-% \paragraph{Counters}
-% \begin{macrocode}
-\int_new:N \l_@@_script_int
-\int_new:N \l_@@_language_int
-\int_new:N \l_@@_strnum_int
-\int_new:N \l_@@_tmp_int
-\int_new:N \l_@@_tmpa_int
-\int_new:N \l_@@_tmpb_int
-\int_new:N \l_@@_tmpc_int
-\int_new:N \l_@@_em_int
-\int_new:N \l_@@_emdef_int
-\int_new:N \l_@@_strong_int
-\int_new:N \l_@@_strongdef_int
-% \end{macrocode}
-%
-% \paragraph{Floats}
-% \begin{macrocode}
-\fp_new:N \l_@@_tmpa_fp
-\fp_new:N \l_@@_tmpb_fp
-% \end{macrocode}
-%
-% \paragraph{Dimensions}
-% \begin{macrocode}
-\dim_new:N \l_@@_tmpa_dim
-\dim_new:N \l_@@_tmpb_dim
-\dim_new:N \l_@@_tmpc_dim
-% \end{macrocode}
-%
-% \paragraph{Sequences}
-% \begin{macrocode}
-\seq_new:N \l_@@_bf_series_seq
-% \end{macrocode}
-%
-% \paragraph{Comma-lists}
-% \begin{macrocode}
-\clist_new:N \g_@@_default_fontopts_clist
-\clist_new:N \g_@@_all_keyval_modules_clist
-\clist_new:N \l_@@_sizefeat_clist
-\clist_set:Nn \l_@@_sizefeat_clist {Size={-}}
-\clist_new:N \l_@@_extensions_clist
-\clist_new:N \l_@@_fontopts_clist
-\clist_new:N \l_@@_family_fontopts_clist
-\clist_new:N \l_@@_all_features_clist
-\clist_new:N \l_@@_leftover_clist
-\clist_new:N \l_@@_keys_leftover_clist
-\clist_new:N \l_@@_sizing_leftover_clist
-\clist_new:N \l_@@_fontfeat_clist
-\clist_new:N \l_@@_fontfeat_curr_clist
-\clist_new:N \l_@@_arg_clist
-\clist_new:N \l_@@_this_feat_clist
-% \end{macrocode}
-%
-% \begin{macrocode}
-\clist_new:N \l_@@_fontfeat_up_clist
-\clist_new:N \l_@@_fontfeat_bf_clist
-\clist_new:N \l_@@_fontfeat_it_clist
-\clist_new:N \l_@@_fontfeat_bfit_clist
-\clist_new:N \l_@@_fontfeat_sl_clist
-\clist_new:N \l_@@_fontfeat_bfsl_clist
-\clist_new:N \l_@@_fontfeat_sc_clist
-% \end{macrocode}
-%
-% \paragraph{Property lists}
-% \begin{macrocode}
-\prop_new:N \g_@@_fontopts_prop
-\prop_new:N \l_@@_nfss_prop
-\prop_new:N \l_@@_nfssfont_prop
-\prop_new:N \g_@@_OT_features_prop
-\prop_new:N \g_@@_all_opentype_feature_names_prop
-\prop_new:N \g_@@_em_prop
-\prop_new:N \g_@@_strong_prop
-\prop_new:N \g_@@_fontid_family_prop
-\prop_new:N \g_@@_family_int_prop
-% \end{macrocode}
-%
-% \paragraph{Token lists}
-%
-% \paragraph{Visible (perhaps?)}
-%
-% \begin{macrocode}
-\tl_new:N \l_fontspec_family_tl
-\tl_new:N \g_fontspec_encoding_tl
-\tl_new:N \l_fontspec_fontname_tl
-% \end{macrocode}
-%
-% \paragraph{2e interactions}
-%
-% \begin{macrocode}
-\tl_clear_new:N \UTFencname
-\tl_clear_new:N \cyrillicencoding
-\tl_clear_new:N \latinencoding
-% \end{macrocode}
-%
-% \paragraph{Renderer/shaper}
-%
-% \begin{macrocode}
-\tl_new:N \l_@@_renderer_tl
-\tl_new:N \l_@@_mode_tl
-\tl_new:N \l_@@_shaper_tl
-% \end{macrocode}
-%
-% \begin{macrocode}
-\tl_new:N \g_@@_defined_shapes_tl
-\tl_new:N \g_@@_single_feat_tl
-\tl_new:N \l_@@_basename_tl
-\tl_new:N \g_@@_curr_series_tl
-\tl_new:N \l_@@_curr_fontname_tl
-\tl_new:N \l_@@_curr_bfname_tl
-\tl_new:N \l_@@_ext_filename_tl
-\tl_new:N \l_@@_extension_tl
-\tl_new:N \l_@@_font_path_tl
-\tl_new:N \l_@@_fontid_tl
-\tl_new:N \l_@@_fontname_tl
-\tl_new:N \l_@@_options_tl
-\tl_new:N \l_@@_saved_fontname_tl
-\tl_new:N \l_@@_prev_unicode_name_tl
-% \end{macrocode}
-%
-% \begin{macrocode}
-\tl_new:N \g_@@_nfss_enc_tl
-\tl_new:N \g_@@_nfss_family_tl
-\tl_new:N \l_@@_nfss_sc_tl
-\tl_new:N \l_@@_nfss_tl
-\tl_new:N \l_@@_nfss_fam_tl
-% \end{macrocode}
-%
-% \begin{macrocode}
-\tl_new:N \l_@@_size_tl
-\tl_new:N \l_@@_sizedfont_tl
-\tl_new:N \l_@@_this_font_tl
-\tl_new:N \l_@@_ttc_index_tl
-\tl_new:N \l_@@_smcp_shape_tl
-% \end{macrocode}
-%
-% \paragraph{EM and STRONG}
-% \begin{macrocode}
-\tl_new:N \l_@@_emshape_query_tl
-\tl_new:N \l_@@_em_switch_tl
-\tl_new:N \l_@@_strong_switch_tl
-% \end{macrocode}
-%
-% \paragraph{Scratch variables}
-% \begin{macrocode}
-\tl_new:N \l_@@_tmp_tl
-\tl_new:N \l_@@_tmpa_tl
-\tl_new:N \l_@@_tmpb_tl
-\tl_new:N \l_@@_em_tmp_tl
-\tl_new:N \l_@@_strong_tmp_tl
-% \end{macrocode}
-%
-% \paragraph{Maths fonts}
-% \begin{macrocode}
-\tl_new:N \g_@@_mathrm_tl
-\tl_new:N \g_@@_bfmathrm_tl
-\tl_new:N \g_@@_mathsf_tl
-\tl_new:N \g_@@_mathtt_tl
-% \end{macrocode}
-%
-% Defaults: (these are set elsewhere; TODO: check if redundant)
-% \begin{macrocode}
-\tl_gset:Nn \g_@@_mathrm_tl {\rmdefault}
-\tl_gset:Nn \g_@@_mathsf_tl {\sfdefault}
-\tl_gset:Nn \g_@@_mathtt_tl {\ttdefault}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\tl_new:N \l_@@_family_label_tl
-\tl_new:N \l_@@_fake_slant_tl
-\tl_new:N \l_@@_fake_embolden_tl
-% \end{macrocode}
-%
-% \paragraph{Internal font names}
-% \begin{macrocode}
-\tl_new:N \l_@@_fontname_up_tl
-\tl_new:N \l_@@_fontname_bf_tl
-\tl_new:N \l_@@_fontname_it_tl
-\tl_new:N \l_@@_fontname_bfit_tl
-\tl_new:N \l_@@_fontname_sl_tl
-\tl_new:N \l_@@_fontname_bfsl_tl
-\tl_new:N \l_@@_fontname_sc_tl
-% \end{macrocode}
-%
-% \paragraph{Script and Language}
-%
-% \begin{macrocode}
-\tl_new:N \l_@@_script_tl
-\tl_new:N \l_@@_script_name_tl
-\tl_set:Nn \l_@@_script_name_tl {CustomDefault}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\tl_new:N \l_@@_lang_tl
-\tl_new:N \l_@@_lang_name_tl
-\tl_set:Nn \l_@@_lang_name_tl {Default}
-% \end{macrocode}
-%
-% \paragraph{Generic font features}
-%
-% \begin{macrocode}
-\tl_new:N \l_@@_scale_tl
-\tl_new:N \l_@@_hyphenchar_tl
-\tl_new:N \l_@@_hexcol_tl
-\tl_new:N \l_@@_opacity_tl
-\tl_new:N \l_@@_optical_size_tl
-\tl_new:N \l_@@_mapping_tl
-\tl_new:N \l_@@_punctspace_adjust_tl
-\tl_new:N \l_@@_wordspace_adjust_tl
-\tl_new:N \l_@@_postadjust_tl
-% \end{macrocode}
-%
-% \begin{macrocode}
-\tl_const:Nn \c_@@_hexcol_tl {000000}
-\tl_const:Nn \c_@@_opacity_tl {FF~}
-\tl_const:Nn \c_@@_postadjust_tl { \l_@@_wordspace_adjust_tl \l_@@_punctspace_adjust_tl }
-% \end{macrocode}
-%
-% \paragraph{Semi-colon-lists}
-% Not a real data structure but sensible to name accordingly.
-% \begin{macrocode}
-\tl_new:N \g_@@_rawfeatures_sclist
-\tl_new:N \l_@@_pre_feat_sclist
-% \end{macrocode}
-%
-% \paragraph{Font families}
-% \begin{macrocode}
-\tl_new:N \l_@@_rmfamily_family_tl
-\tl_new:N \l_@@_sffamily_family_tl
-\tl_new:N \l_@@_ttfamily_family_tl
-\tl_new:N \l_@@_rmfamily_encoding_tl
-\tl_new:N \l_@@_sffamily_encoding_tl
-\tl_new:N \l_@@_ttfamily_encoding_tl
-% \end{macrocode}
-%
-%
-%
-% \iffalse
-% \begin{macrocode}
-%</fontspec>
-% \end{macrocode}
-% \fi
-
-
-\endinput
-
-% /©
-% ------------------------------------------------
-% The FONTSPEC package <wspr.io/fontspec>
-% ------------------------------------------------
-% Copyright 2004-2020 Will Robertson, LPPL "maintainer"
-% Copyright 2009-2015 Khaled Hosny
-% Copyright 2013 Philipp Gesang
-% Copyright 2013-2016 Joseph Wright
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% ©/
diff --git a/macros/latex/contrib/fontspec/fontspec-code-xfss.dtx b/macros/latex/contrib/fontspec/fontspec-code-xfss.dtx
deleted file mode 100644
index fef300a078..0000000000
--- a/macros/latex/contrib/fontspec/fontspec-code-xfss.dtx
+++ /dev/null
@@ -1,310 +0,0 @@
-%%^^A%% fontspec-code-xfss.dtx -- part of FONTSPEC <wspr.io/fontspec>
-
-% \section{Changes to the NFSS}
-%
-% \begin{macrocode}
-%<*fontspec>
-% \end{macrocode}
-%
-%
-% \subsection{Italic small caps and so on} \label{sec:sishape}
-%
-% \begin{macrocode}
-\providecommand*\scitdefault{\scdefault\itdefault}
-\providecommand*\scsldefault{\scdefault\sldefault}
-% \end{macrocode}
-% \LaTeX's `shape' font axis needs to be overloaded to support italic small caps and slanted small caps.
-% These are the combinations to support:
-% \begin{macrocode}
-\cs_new:Nn \@@_shape_merge:nn { c_@@_shape_#1_#2_tl }
-\cs_new:Nn \@@_merge_default_shapes:
- {
- \tl_const:cn { \@@_shape_merge:nn \itdefault \scdefault } {\scitdefault}
- \tl_const:cn { \@@_shape_merge:nn \sldefault \scdefault } {\scsldefault}
- \tl_const:cn { \@@_shape_merge:nn \scdefault \itdefault } {\scitdefault}
- \tl_const:cn { \@@_shape_merge:nn \scdefault \sldefault } {\scsldefault}
- \tl_const:cn { \@@_shape_merge:nn \scsldefault \itdefault } {\scitdefault}
- \tl_const:cn { \@@_shape_merge:nn \scitdefault \sldefault } {\scsldefault}
- \tl_const:cn { \@@_shape_merge:nn \scitdefault \shapedefault } {\scdefault}
- \tl_const:cn { \@@_shape_merge:nn \scsldefault \shapedefault } {\scdefault}
- }
-\@@_merge_default_shapes:
-% \end{macrocode}
-%
-% The following is rather specific; it only returns true if the merged shape exists,
-% but more importantly also if the merged shape is defined for the current font.
-% \begin{macrocode}
-\prg_new_conditional:Nnn \@@_if_merge_shape:n {TF}
- {
- \bool_lazy_and:nnTF
- { \tl_if_exist_p:c { \@@_shape_merge:nn {\f@shape} {#1} } }
- {
- \cs_if_exist_p:c
- {
- \f@encoding/\f@family/\f@series/
- \tl_use:c { \@@_shape_merge:nn {\f@shape} {#1} }
- }
- }
- \prg_return_true: \prg_return_false:
- }
-% \end{macrocode}
-%
-%
-% \begin{macrocode}
-\cs_if_exist:NTF \DeclareFontSeriesChangeRule
-{
- \cs_set_eq:NN \emfontdeclare \DeclareEmphSequence
-}
-{
-% \end{macrocode}
-%
-% \begin{macro}{\sishape}
-% \begin{macro}{\textsi}
-% These commands for actually selecting italic small caps have been defined for many years; I'm inclined to drop them.
-% They're probably used very infrequently; I personally prefer just writing
-% |\textit{\textsc{...}}| instead.
-%
-% \begin{macrocode}
-\DeclareRobustCommand{\sishape}
- {
- \not@math@alphabet\sishape\relax
- \fontshape{\scitdefault}\selectfont
- }
-\DeclareTextFontCommand{\textsi}{\sishape}
-% \end{macrocode}
-% \end{macro} \end{macro}
-%
-%
-% \begin{macro}{\@@_merge_shape:n}
-% These macros enable the overload on the |\..shape| commands.
-% First, a shape `new+current' (prefix) or `current+new' (suffix) is tried.
-% If not found, fall back on the `new' shape.
-% \begin{macrocode}
-\cs_new:Nn \@@_merge_shape:n
- {
- \@@_if_merge_shape:nTF {#1}
- { \fontshape { \tl_use:c { \@@_shape_merge:nn {\f@shape} {#1} } } \selectfont }
- { \fontshape {#1} \selectfont }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\itshape} \begin{macro}{\scshape} \begin{macro}{\upshape} \begin{macro}{\slshape}
-% The original |\..shape| commands are redefined to use the merge shape macro.
-% \begin{macrocode}
-\DeclareRobustCommand \itshape
- {
- \not@math@alphabet\itshape\mathit
- \@@_merge_shape:n\itdefault
- }
-\DeclareRobustCommand \slshape
- {
- \not@math@alphabet\slshape\relax
- \@@_merge_shape:n\sldefault
- }
-\DeclareRobustCommand \scshape
- {
- \not@math@alphabet\scshape\relax
- \@@_merge_shape:n\scdefault
- }
-\DeclareRobustCommand \upshape
- {
- \not@math@alphabet\upshape\relax
- \@@_merge_shape:n\updefault
- }
-% \end{macrocode}
-% \end{macro} \end{macro} \end{macro} \end{macro}
-%
-%
-%
-% \subsection{Emphasis}
-%
-% \begin{macro}{\emfontdeclare}
-% \begin{macrocode}
-\cs_set_protected:Npn \emfontdeclare #1
- {
- \prop_gclear:N \g_@@_em_prop
- \int_zero:N \l_@@_emdef_int
- \bool_gset_true:N \g_@@_em_normalise_slant_bool
-
- \tl_if_in:nnT {#1} {\slshape}
- {
- \tl_if_in:nnT {#1} {\itshape}
- {
- \bool_gset_false:N \g_@@_em_normalise_slant_bool
- }
- }
-
- \group_begin:
- \normalfont
- \clist_map_inline:nn {\emreset,#1}
- {
- ##1
- \prop_gput_if_new:NxV \g_@@_em_prop { \f@shape } { \l_@@_emdef_int }
- \prop_gput:Nxn \g_@@_em_prop { switch-\int_use:N \l_@@_emdef_int } { ##1 }
- \int_incr:N \l_@@_emdef_int
- }
- \group_end:
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\em}
-% \begin{macrocode}
-\DeclareRobustCommand \em
- {
- \@nomath\em
- \tl_set:Nx \l_@@_emshape_query_tl { \f@shape }
-
- \bool_if:NT \g_@@_em_normalise_slant_bool
- {
- \tl_replace_all:Nnn \l_@@_emshape_query_tl {/sl} {/it}
- }
-
-%<debug> \typeout{Emph~ level:~\int_use:N \l_@@_em_int}
- \prop_get:NxNT \g_@@_em_prop { \l_@@_emshape_query_tl } \l_@@_em_tmp_tl
- {
- \int_set:Nn \l_@@_em_int { \l_@@_em_tmp_tl }
-%<debug> \typeout{Shape~ (\l_@@_emshape_query_tl)~ detected;~ new~ level:~\int_use:N \l_@@_em_int}
- }
-
- \int_incr:N \l_@@_em_int
-
- \prop_get:NxNTF \g_@@_em_prop { switch-\int_use:N \l_@@_em_int } \l_@@_em_switch_tl
- { \l_@@_em_switch_tl }
- {
- \int_zero:N \l_@@_em_int
- \emreset
- }
-
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\emph}
-% \begin{macro}{\emshape}
-% \begin{macro}{\eminnershape}
-% \begin{macro}{\emreset}
-% \begin{macrocode}
-\DeclareTextFontCommand{\emph}{\em}
-\cs_set:Npn \emreset { \upshape }
-\cs_set:Npn \emshape { \itshape }
-\cs_set:Npn \eminnershape { \upshape }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macrocode}
-\emfontdeclare{ \emshape, \eminnershape }
-\cs_new:Nn \fontspec_set_em_level:n { \int_set:Nn \l_@@_em_int {#1} }
-% \end{macrocode}
-%
-% \begin{macrocode}
-}
-% \end{macrocode}
-%
-%
-%
-% \subsection{Strong emphasis}
-%
-% \begin{macro}{\strongfontdeclare}
-% \begin{macrocode}
-\cs_set_protected:Npn \strongfontdeclare #1
- {
- \prop_gclear:N \g_@@_strong_prop
- \int_zero:N \l_@@_strongdef_int
-
- \group_begin:
- \normalfont
- \clist_map_inline:nn {\strongreset,#1}
- {
- ##1
- \prop_gput_if_new:NxV \g_@@_strong_prop { \f@series } { \l_@@_strongdef_int }
- \prop_gput:Nxn \g_@@_strong_prop { switch-\int_use:N \l_@@_strongdef_int } { ##1 }
- \int_incr:N \l_@@_strongdef_int
- }
- \group_end:
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\strongenv}
-% \begin{macrocode}
-\DeclareRobustCommand \strongenv
- {
- \@nomath\strongenv
-
-%<debug> \typeout{Strong~ level:~\int_use:N \l_@@_strong_int}
- \prop_get:NxNT \g_@@_strong_prop { \f@series } \l_@@_strong_tmp_tl
- {
- \int_set:Nn \l_@@_strong_int { \l_@@_strong_tmp_tl }
-%<debug> \typeout{Series~ (\f@series)~ detected;~ new~ level:~\int_use:N \l_@@_strong_int}
- }
-
- \int_incr:N \l_@@_strong_int
-
- \prop_get:NxNTF \g_@@_strong_prop { switch-\int_use:N \l_@@_strong_int } \l_@@_strong_switch_tl
- { \l_@@_strong_switch_tl }
- {
- \int_zero:N \l_@@_strong_int
- \strongreset
- }
-
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\strong}
-% \begin{macro}{\strongreset}
-% \begin{macrocode}
-\DeclareTextFontCommand{\strong}{\strongenv}
-\cs_set:Npn \strongreset {}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\reset@font}
-% Ensure nesting resets when necessary:
-% \begin{macrocode}
-\cs_set:Npn \reset@font
- {
- \normalfont
- \int_zero:N \l_@@_em_int
- \int_zero:N \l_@@_strong_int
- }
-% \end{macrocode}
-% \end{macro}
-%
-% Programmer's interface for setting nesting levels:
-% \begin{macrocode}
-\cs_new:Nn \fontspec_set_strong_level:n { \int_set:Nn \l_@@_strong_int {#1} }
-% \end{macrocode}
-%
-% Defaults:
-% \begin{macrocode}
-\strongfontdeclare{ \bfseries }
-% \end{macrocode}
-%
-% \begin{macrocode}
-%</fontspec>
-% \end{macrocode}
-
-
-\endinput
-
-% /©
-% ------------------------------------------------
-% The FONTSPEC package <wspr.io/fontspec>
-% ------------------------------------------------
-% Copyright 2004-2020 Will Robertson, LPPL "maintainer"
-% Copyright 2009-2015 Khaled Hosny
-% Copyright 2013 Philipp Gesang
-% Copyright 2013-2016 Joseph Wright
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% ©/
diff --git a/macros/latex/contrib/fontspec/fontspec-code.ltx b/macros/latex/contrib/fontspec/fontspec-code.ltx
deleted file mode 100644
index 1dcdea07cb..0000000000
--- a/macros/latex/contrib/fontspec/fontspec-code.ltx
+++ /dev/null
@@ -1,42 +0,0 @@
-%%^^A%% fontspec-code.ltx -- part of FONTSPEC <wspr.io/fontspec>
-
-\ifdefined \XeTeXOTcountscripts \else \makeatletter
- \@latex@error{^^J*** The fontspec documentation can only be typeset with `xelatex` ***\@gobble}\@ehc
-\fi
-
-\documentclass[a4paper]{l3doc}
-\usepackage{fontspec-doc-style}
-\renewcommand\partname{File}
-\begin{document}
-\maketitle
-\tableofcontents
-\newpage
-
-\def\DTX#1{\clearpage\part{#1}\DocInput{#1}}
-\FONTSPECDTX
-
-\clearpage
-\PrintChanges
-
-\clearpage
-\setcounter{IndexColumns}{2}
-\PrintIndex
-
-\end{document}
-
-\endinput
-
-% /©
-% ------------------------------------------------
-% The FONTSPEC package <wspr.io/fontspec>
-% ------------------------------------------------
-% Copyright 2004-2020 Will Robertson, LPPL "maintainer"
-% Copyright 2009-2015 Khaled Hosny
-% Copyright 2013 Philipp Gesang
-% Copyright 2013-2016 Joseph Wright
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% ©/
diff --git a/macros/latex/contrib/fontspec/fontspec-code.pdf b/macros/latex/contrib/fontspec/fontspec-code.pdf
deleted file mode 100644
index 52d9e28cde..0000000000
--- a/macros/latex/contrib/fontspec/fontspec-code.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/fontspec/fontspec-doc-api.tex b/macros/latex/contrib/fontspec/fontspec-doc-api.tex
deleted file mode 100644
index 3ef857e914..0000000000
--- a/macros/latex/contrib/fontspec/fontspec-doc-api.tex
+++ /dev/null
@@ -1,352 +0,0 @@
-%%^^A%% fontspec-doc-api.tex -- part of FONTSPEC <wspr.io/fontspec>
-
-\documentclass[a4paper]{l3doc}
-\usepackage{fontspec-doc-style}
-\showexamplesfalse
-\begin{document}
-
-\part{Customisation and programming interface}
-
-This chapter describes the current interfaces and hooks that use
-\pkg{fontspec} for various macro programming purposes.
-
-
-\section{Defining new features} \label{sec:newfeatures}
-This package cannot hope to contain every possible font
-feature. Three commands are provided for selecting font features
-that are not provided for out of the box. If you are using
-them a lot, chances are I've left something out, so please let me
-know.
-
-\DescribeMacro{\newAATfeature}
-New \AAT\ features may be created with this command:\par
-{\centering\cmd\newAATfeature\marg{feature}\marg{option}\marg{feature code}\marg{selector code}\par}\noindent
-Use the \XeTeX\ file \path{AAT-info.tex} to obtain the code numbers.
-See \exref{newAATfeat}.
-
-\begin{Xexample}{newAATfeat}{Assigning new \AAT\ features.}
- \newAATfeature{Alternate}{HoeflerSwash}{17}{1}
- \fontspec{Hoefler Text Italic}[Alternate=HoeflerSwash]
- This is XeTeX by Jonathan Kew.
-\end{Xexample}
-
-
-\DescribeMacro{\newopentypefeature}
-New OpenType features may be created with this command:\par
-{\centering\cmd\newopentypefeature\marg{feature}\marg{option}\marg{feature tag}\par}
-The synonym \cs{newICUfeature} is deprecated.
-
-Here's what it would look like in practise:
-\begin{Verbatim}
-\newopentypefeature{Style}{NoLocalForms}{-locl}
-\end{Verbatim}
-
-\DescribeMacro{\newfontfeature}
-In case the above commands do not accommodate the desired font feature
-(perhaps a new \XeTeX\ feature that \pkg{fontspec} hasn't been updated
-to support), a command is provided to pass arbitrary input into the
-font selection string:\par
-{\centering\cmd{\newfontfeature}\marg{name}\marg{input string}\par}
-
-For example, Zapfino used to
-contain an AAT feature `Avoid d-collisions'. To access it
-with this package, you could do some like the following:
-
-\begin{Verbatim}
- \newfontfeature{AvoidD} {Special= Avoid d-collisions}
- \newfontfeature{NoAvoidD}{Special=!Avoid d-collisions}
- \fontspec{Zapfino}[AvoidD,Variant=1]
- sockdolager rubdown \\
- \fontspec{Zapfino}[NoAvoidD,Variant=1]
- sockdolager rubdown
-\end{Verbatim}
-
-The advantage to using the \cmd\newAATfeature\ and \cmd\newopentypefeature\
-commands instead of \cs{newfontfeature} is that they check if the selected font actually contains the desired font
-feature at load time. By contrast, \cmd\newfontfeature\ will not give a warning
-for improper input.
-
-
-\section{Defining new scripts and languages}
-\label{sec:newscriptlang}
-
-\DescribeMacro{\newfontscript}
-\DescribeMacro{\newfontlanguage}
-While the scripts and languages listed in \ref{tab:ot-scpt} and \ref{tab:ot-lang}
-are intended to be comprehensive, there may be some missing; alternatively,
-you might wish to use different names to access scripts/languages that are
-already listed.
-Adding scripts and languages can be performed with the \cmd\newfontscript\
-and \cmd\newfontlanguage\ commands. For example,
-\begin{Verbatim}
- \newfontscript{Arabic}{arab}
- \newfontlanguage{Zulu}{ZUL}
-\end{Verbatim}
-The first argument is the \pkg{fontspec} name, the second the OpenType
-tag. The advantage to using these commands rather than \cmd\newfontfeature\
-(see \vref{sec:newfeatures}) is the error-checking that is performed when
-the script or language is requested.
-
-Both commands accept a comma-separated list of OpenType tags in order of preference.
-This permits, for example, supporting both new and old versions of a language tag with
-a common user interface:
-\begin{Verbatim}
- \newfontlanguage{Turkish}{TRK,TUR}
-\end{Verbatim}
-Here, a font that is requested with \verb|Script=Turkish| will first be checked for the
-OpenType language tag \verb|TRK|, which will be selected if available. If not available,
-the \verb|TUR| tag will be queried and used if possible as a fallback.
-
-
-\section{Going behind \pkg{fontspec}'s back}
-
-Expert users may wish not to use \pkg{fontspec}'s feature handling at all,
-while still taking advantage of its \LaTeX\ font selection conveniences. The
-\feat{RawFeature} font feature allows font feature selection using a literal feature
-selection string if you happen to have the OpenType feature tag memorised.
-More importantly, this can be used to enable features for which \pkg{fontspec}
-does not yet have a user interface to.
-
-\begin{Xexample}{raw}{Using raw font features directly.}
- \fontspec{texgyrepagella-regular.otf}[RawFeature=+smcp]
- Pagella small caps
-\end{Xexample}
-
-Multiple features can either be included in a single declaration:\par
-{\centering|[RawFeature=+smcp;+onum]|\par}
-\noindent or with multiple declarations:\par
-{\centering|[RawFeature=+smcp, RawFeature=+onum]|\par}
-
-Note that there is no error-checking when using |RawFeature|. Where a \pkg{fontspec}
-interface exists to a feature it is generally better to use it. If the font lacks the feature
-or if it would clash with another feature, \pkg{fontspec} will attemmpt to warn and/or resolve the issues.
-
-
-\section{Renaming existing features \& options}
-\label{sec:aliasfontfeature}
-
-\DescribeMacro{\aliasfontfeature}
-If you don't like the name of a particular font feature,
-it may be aliased to another with the
-\cs{aliasfontfeature}\marg{existing name}\marg{new name} command,
-such as shown in \exref{alias}.
-
-\begin{Xexample}{alias}{Renaming font features.}
- \aliasfontfeature{ItalicFeatures}{IF}
- \fontspec{Hoefler Text}[IF = {Alternate=1}]
- Roman Letters \itshape And Swash
-\end{Xexample}
-
-Spaces in feature (and option names, see below) \emph{are} allowed. (You may have
-noticed this already in the lists of OpenType scripts and languages).
-
-\DescribeMacro{\aliasfontfeatureoption}
-If you wish to change the name of a font feature option,
-it can be aliased to another with the command
-\cs{aliasfontfeatureoption}\marg{font feature}\marg{existing name}\marg{new name}, such as shown in \exref{aliasopt}.
-
-\begin{Lexample}{aliasopt}{Renaming font feature options.}
- \aliasfontfeature{VerticalPosition}{Vert Pos}
- \aliasfontfeatureoption{VerticalPosition}{ScientificInferior}{Sci Inf}
- \fontspec{LinLibertine_R.otf}[Vert Pos=Sci Inf]
- Scientific Inferior: 12345
-\end{Lexample}
-
-This example demonstrates an important point: when aliasing the feature
-options, the \emph{original} feature name must be used when declaring
-to which feature the option belongs.
-
-Only feature options that exist as sets of fixed strings may be altered in
-this way. That is, \opt{Proportional} can be aliased to \opt{Prop} in the
-\feat{Letters} feature, but \opt{550099BB} cannot be substituted for \opt{Purple}
-in a \feat{Color} specification. For this type of thing, the \cmd\newfontfeature\
-command should be used to declare a new, \eg, \feat{PurpleColor} feature:
-\begin{Verbatim}
- \newfontfeature{PurpleColor}{color=550099BB}
-\end{Verbatim}
-Except that this example was written before support for named colours was
-implemented. But you get the idea.
-
-
-
-
-\section{Programming interface}
-\label{sec:api}
-
-
-\subsection{Variables}
-
-\DescribeMacro{\l_fontspec_family_tl}
-\DescribeMacro{\l_fontspec_font}
-In some cases, it is useful to know what the \LaTeX\ font family
-of a specific \pkg{fontspec} font is. After a \cmd\fontspec-like
-command, this is stored inside the \cmd\l_fontspec_family_tl\ macro.
-Otherwise, \LaTeX's own \cmd\f@family\ macro can be useful here,
-too.
-The raw \TeX\ font that is defined from the `base' font in the family is stored in \cmd{\l_fontspec_font}.
-
-\DescribeMacro{\g_fontspec_encoding_tl}
-Package authors who need to load fonts with legacy \LaTeX\ \NFSS\ commands may also need to know what the default font encoding is.
-Since this has changed from \texttt{EU1}/\texttt{EU2} to \texttt{TU}, it is best to use the variable \cs{g_fontspec_encoding_tl} instead.
-
-\subsection{Functions for loading new fonts and families}
-
-\begin{macro}{\fontspec_gset_family:Nnn}
-\begin{macro}{\fontspec_set_family:Nnn}
-\darg{\LaTeX\ family}
-\darg{fontspec features}
-\darg{font name}
-Defines a new \NFSS\ family from given \meta{features} and \meta{font},
-and stores the family name in the variable \meta{family}.
-This font family can then be selected with standard \LaTeX\ commands
-\cs{fontfamily}\marg{family}\cs{selectfont}.
-See the standard \pkg{fontspec} user commands for applications of this
-function.
-\end{macro}
-\end{macro}
-
-\begin{macro}{\fontspec_gset_fontface:NNnn}
-\begin{macro}{\fontspec_set_fontface:NNnn}
-\darg{primitive font}
-\darg{\LaTeX\ family}
-\darg{fontspec features}
-\darg{font name}
-Variant of the above in which the primitive \TeX\ font command is stored in
-the variable \meta{primitive font}.
-If a family is loaded (with bold and italic shapes) the primitive font
-command will only select the regular face.
-This feature is designed for \LaTeX\ programmers who need to
-perform subsequent font-related tests on the \meta{primitive font}.
-\end{macro}
-\end{macro}
-
-
-\subsection{Conditionals}
-
-The following functions in \pkg{expl3} syntax may be used
-for writing code that interfaces with \pkg{fontspec}-loaded fonts.
-The following conditionals are all provided in |TF|, |T|, and |F| forms.
-
-\subsubsection{Querying font families}
-
-\begin{macro}{\fontspec_font_if_exist:nTF}
-Test whether the `font name' (|#1|) exists or is loadable.
-The syntax of |#1| is a restricted/simplified version of \pkg{fontspec}'s usual font loading syntax; fonts to be loaded by filename are detected by the presence of an appropriate extension (|.otf|, etc.), and paths should be included inline.
-E.g.:
-\begin{Verbatim}
- \fontspec_font_if_exist:nTF {cmr10}{T}{F}
- \fontspec_font_if_exist:nTF {Times~ New~ Roman}{T}{F}
- \fontspec_font_if_exist:nTF {texgyrepagella-regular.otf}{T}{F}
- \fontspec_font_if_exist:nTF {/Users/will/Library/Fonts/CODE2000.TTF}{T}{F}
-\end{Verbatim}
-\end{macro}
-The synonym \cs{IfFontExistsTF} is provided for `document authors'.
-
-
-\begin{macro}{\fontspec_if_fontspec_font:TF}
-Test whether the currently selected font has been loaded by fontspec.
-\end{macro}
-
-
-\begin{macro}{\fontspec_if_opentype:TF}
-Test whether the currently selected font is an OpenType font.
-Always true for \LuaTeX{} fonts.
-\end{macro}
-
-
-\begin{macro}{\fontspec_if_small_caps:TF}
-Test whether the currently selected font has a `small caps' face to be selected
-with |\scshape| or similar.
-Note that testing whether the font has the |Letters=SmallCaps| font feature is
-sufficient but not necessary for this command to return true, since small caps
-can also be loaded from separate font files.
-The logic of this command is complicated by the fact that \pkg{fontspec} will
-merge shapes together (for italic small caps, etc.).
-\end{macro}
-
-
-\subsubsection{Availability of features}
-
-\begin{macro}{\fontspec_if_aat_feature:nnTF}
-Test whether the currently selected font contains the \AAT\
-feature (|#1|,|#2|).
-\end{macro}
-
-
-\begin{macro}{\fontspec_if_feature:nTF}
-Test whether the currently selected font contains the raw OpenType
-feature |#1|. E.g.: |\fontspec_if_feature:nTF {pnum} {True} {False}|.
-Returns false if the font is not loaded by fontspec or is not an OpenType
-font.
-\end{macro}
-
-
-\begin{macro}{\fontspec_if_feature:nnnTF}
-Test whether the currently selected font with raw OpenType script tag |#1| and raw OpenType language tag |#2| contains the raw OpenType feature tag |#3|. E.g.: |\fontspec_if_feature:nnnTF {latn} {ROM} {pnum} {True} {False}|.
-Returns false if the font is not loaded by fontspec or is not an OpenType
-font.
-\end{macro}
-
-
-\begin{macro}{\fontspec_if_script:nTF}
-Test whether the currently selected font contains the raw OpenType
-script |#1|. E.g.: |\fontspec_if_script:nTF {latn} {True} {False}|.
-Returns false if the font is not loaded by fontspec or is not an OpenType
-font.
-\end{macro}
-
-
-\begin{macro}{\fontspec_if_language:nTF}
-Test whether the currently selected font contains the raw OpenType language
-tag |#1|. E.g.: |\fontspec_if_language:nTF {ROM} {True} {False}|.
-Returns false if the font is not loaded by fontspec or is not an OpenType
-font.
-\end{macro}
-
-
-\begin{macro}{\fontspec_if_language:nnTF}
-Test whether the currently selected font contains the raw OpenType language
-tag |#2| in script |#1|. E.g.: |\fontspec_if_language:nnTF {cyrl} {SRB} {True} {False}|.
-Returns false if the font is not loaded by fontspec or is not an OpenType
-font.
-\end{macro}
-
-
-\subsubsection{Currently selected features}
-
-\begin{macro}{\fontspec_if_current_feature:nTF}
-Test whether the currently loaded font is using the specified raw
-OpenType feature tag |#1|.
-The tag string |#1| should be prefixed with |+| to query an active feature, and with a |-| (hyphen) to query a disabled feature.
-\end{macro}
-
-
-\begin{macro}{\fontspec_if_current_script:nTF}
-Test whether the currently loaded font is using the specified raw
-OpenType script tag |#1|.
-\end{macro}
-
-
-\begin{macro}{\fontspec_if_current_language:nTF}
-Test whether the currently loaded font is using the specified raw
-OpenType language tag |#1|.
-\end{macro}
-
-\end{document}
-
-
-% /©
-% ------------------------------------------------
-% The FONTSPEC package <wspr.io/fontspec>
-% ------------------------------------------------
-% Copyright 2004-2020 Will Robertson, LPPL "maintainer"
-% Copyright 2009-2015 Khaled Hosny
-% Copyright 2013 Philipp Gesang
-% Copyright 2013-2016 Joseph Wright
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% ©/
-
diff --git a/macros/latex/contrib/fontspec/fontspec-doc-enc.tex b/macros/latex/contrib/fontspec/fontspec-doc-enc.tex
deleted file mode 100644
index 2a706a6252..0000000000
--- a/macros/latex/contrib/fontspec/fontspec-doc-enc.tex
+++ /dev/null
@@ -1,216 +0,0 @@
-%%^^A%% fontspec-doc-enc.tex -- part of FONTSPEC <wspr.io/fontspec>
-
-\documentclass[a4paper]{l3doc}
-\usepackage{fontspec-doc-style}
-\showexamplesfalse
-\begin{document}
-
-\part{Commands for accents and symbols (`encodings')}
-\label{part:enc}
-
-\textbf{The functionality described in this section is experimental.}
-
-In the pre-Unicode era, significant work was required by \LaTeX\ to ensure that
-input characters in the source could be interpreted correctly depending on file encoding,
-and that glyphs in the output were selected correctly depending on the font encoding.
-With Unicode, we have the luxury of a single file and font encoding that is used for both input
-and output.
-
-While this may provide some illusion that we could get away simply with typing
-Unicode text and receive correct output, this is not always the case.
-For a start, hyphenation in particular is language-specific, so tags should be used
-when switch between languages in a document.
-The \pkg{babel} and \pkg{polyglossia} packages both provide features for this.
-
-Multilingual documents will often use different fonts for different languages,
-not just for style, but for the more pragmatic reason that fonts do not all contain
-the same glyphs. (In fact, only test fonts such as Code2000 provide
-anywhere near the full Unicode coverage.)
-Indeed, certain fonts may be perfect for a certain application but miss a handful
-of necessary diacritics or accented letters.
-In these cases, \pkg{fontspec} can leverage the font encoding technology built
-into \LaTeX2\ to provide on a per-font basis either provide fallback options or
-error messages when a desired accent or symbol is not available.
-However, at present
-these features can only be provided for input using \LaTeX\ commands rather
-than Unicode input; for example, typing |\`e| instead of |è| or |\textcopyright|
-instead of |©| in the source file.
-
-The most widely-used encoding in \LaTeXe\ was |T1| with companion `|TS1|' symbols
-provided by the \pkg{textcomp} package.
-These encodings provided glyphs to typeset text in a variety of western European languages.
-As with most legacy \LaTeXe\ input methods, accents and symbols were input using
-encoding-dependent commands such as |\`e| as described above.
-As of 2017, in \LaTeXe\ on \XeTeX\ and \LuaTeX, the default encoding is |TU|,
-which uses Unicode for input and output.
-The |TU| encoding provides appropriate encoding-dependent definitions for input commands
-to match the coverage of the |T1+TS1| encodings.
-Wider coverage is not provided by default since (a)~each font will provide different glyph coverage, and
-(b)~it is expected that most users will be writing with direct Unicode input.
-
-For those users who do need finer-grained control, \pkg{fontspec} provides an
-interface for a more extensible system.
-
-
-\section{A new Unicode-based encoding from scratch}
-
-Let's say you need to provide support for a document originally written with fonts
-in the |OT2| encoding, which contains encoding-dependent commands for Cyrillic letters.
-An example from the |OT2| encoding definition file (|ot2enc.def|) reads:
-\begin{Verbatim}[numbers=left,firstnumber=57]
-\DeclareTextSymbol{\CYRIE}{OT2}{5}
-\DeclareTextSymbol{\CYRDJE}{OT2}{6}
-\DeclareTextSymbol{\CYRTSHE}{OT2}{7}
-\DeclareTextSymbol{\cyrnje}{OT2}{8}
-\DeclareTextSymbol{\cyrlje}{OT2}{9}
-\DeclareTextSymbol{\cyrdzhe}{OT2}{10}
-\end{Verbatim}
-
-To recreate this encoding in a form suitable for \pkg{fontspec}, create a new file
-named, say, |fontrange-cyr.def| and populate it with
-\begin{Verbatim}
-...
-\DeclareTextSymbol{\CYRIE} {\LastDeclaredEncoding}{"0404}
-\DeclareTextSymbol{\CYRDJE} {\LastDeclaredEncoding}{"0402}
-\DeclareTextSymbol{\CYRTSHE}{\LastDeclaredEncoding}{"040B}
-\DeclareTextSymbol{\cyrnje} {\LastDeclaredEncoding}{"045A}
-\DeclareTextSymbol{\cyrlje} {\LastDeclaredEncoding}{"0459}
-\DeclareTextSymbol{\cyrdzhe}{\LastDeclaredEncoding}{"045F}
-...
-\end{Verbatim}
-The numbers |"0404|, |"0402|, \dots, are the Unicode slots (in hexadecimal)
-of each glyph respectively.
-The \pkg{fontspec} package provides a number of shorthands to simplify this style of input; in this case,
-you could also write
-\begin{Verbatim}
-\EncodingSymbol{\CYRIE}{"0404}
-...
-\end{Verbatim}
-
-To use this encoding in a \pkg{fontspec} font, you would first add this to your preamble:
-\begin{Verbatim}
-\DeclareUnicodeEncoding{unicyr}{
- \input{fontrange-cyr.def}
-}
-\end{Verbatim}
-Then follow it up with a font loading call such as
-\begin{Verbatim}
-\setmainfont{...}[NFSSEncoding=unicyr]
-\end{Verbatim}
-The first argument |unicyr| is the name of the `encoding' to use in the
-font family. (There's nothing special about the name chosen but it must be unique.)
-The second argument to |\DeclareUnicodeEncoding| also allows adjustments to be made
-for per-font changes.
-We'll cover this use case in the next section.
-
-
-\section{Adjusting a pre-existing encoding}
-
-There are three reasons to adjust a pre-existing encoding:
-to add, to remove, and to redefine some symbols, letters, and/or accents.
-
-When adding symbols, etc., simply write
-\begin{Verbatim}
-\DeclareUnicodeEncoding{unicyr}{
- \input{tuenc.def}
- \input{fontrange-cyr.def}
- \EncodingSymbol{\textruble}{"20BD}
-}
-\end{Verbatim}
-Of course if you consistently add a number of symbols to an encoding it would be
-a good idea to create a new |fontrange-XX.def| file to suit your needs.
-
-When removing symbols, use the |\UndeclareSymbol|\marg{cmd} command.
-For example, if you a loading a font that you know is missing, say, the interrobang
-(not that unusual a situation), you might write:
-\begin{Verbatim}
-\DeclareUnicodeEncoding{nobang}{
- \input{tuenc.def}
- \UndeclareSymbol\textinterrobang
-}
-\end{Verbatim}
-Provided that you use the command |\textinterrobang| to typeset this symbol,
-it will appear in fonts with the default encoding, while in any font loaded with
-the |nobang| encoding an attempt to access the symbol will either use the default
-fallback definition or return an error, depending on the symbol being undeclared.
-
-
-The third use case is to redefine a symbol or accent. The most common use case
-in this scenario is to adjust a specific accent command to either fine-tune its placement
-or to `fake' it entirely.
-For example, the underdot diacritic is used in typeset Sanskrit,
-but it is not necessarily included as an accent symbol is all fonts.
-By default the underdot is defined in |TU| as:
-\begin{Verbatim}
-\EncodingAccent{\d}{"0323}
-\end{Verbatim}
-For fonts with a missing (or poorly-spaced) |"0323| accent glyph, the `traditional' \TeX\ fake accent
-construction could be used instead:
-\begin{Verbatim}
-\DeclareUnicodeEncoding{fakeacc}{
- \input{tuenc.def}
- \EncodingCommand{\d}[1]{%
- \hmode@bgroup
- \o@lign{\relax#1\crcr\hidewidth\ltx@sh@ft{-1ex}.\hidewidth}%
- \egroup
- }
-}
-\end{Verbatim}
-This would be set up in a document as such:
-\begin{Verbatim}
-\newfontfamily\sanskitfont{CharisSIL}
-\newfontfamily\titlefont{Posterama}[NFSSEncoding=fakeacc]
-\end{Verbatim}
-Then later in the document, no additional work is needed:
-\begin{Verbatim}
-...{\titlefont kalita\d m}... % <- uses fake accent
-...{\sanskitfont kalita\d m}... % <- uses real accent
-\end{Verbatim}
-To reiterate from above, typing this input with Unicode text (`|kalitaṃ|')
-will \emph{bypass} this encoding mechanism and you will receive only what is contained
-literally within the font.
-
-
-\section{Summary of commands}
-
-The \LaTeXe\ kernel provides the following font encoding commands suitable for Unicode encodings:
-\begin{quote}\obeylines
- \cs{DeclareTextCommand}\marg{command}\marg{encoding}\oarg{num}\oarg{default}\marg{code}
- \cs{DeclareUnicodeAccent}\marg{command}\marg{encoding}\marg{slot}
- \cs{DeclareTextSymbol}\marg{command}\marg{encoding}\marg{slot}
- \cs{DeclareTextComposite}\marg{command}\marg{encoding}\marg{letter}\marg{slot}
- \cs{DeclareTextCompositeCommand}\marg{command}\marg{encoding}\marg{letter}\marg{code}
- \cs{UndeclareTextCommand}\marg{command}\marg{encoding}
-\end{quote}
-See |fntguide.pdf| for full documentation of these.
-As shown above, the following shorthands are provided by \pkg{fontspec} to simplify
-the process of defining Unicode font range encodings:
-\begin{quote}\obeylines
- \cs{EncodingCommand}\marg{command}\oarg{num}\oarg{default}\marg{code}
- \cs{EncodingAccent}\marg{command}\marg{code}
- \cs{EncodingSymbol}\marg{command}\marg{code}
- \cs{EncodingComposite}\marg{command}\marg{letter}\marg{slot}
- \cs{EncodingCompositeCommand}\marg{command}\marg{letter}\marg{code}
- \cs{UndeclareSymbol}\marg{command}
- \cs{UndeclareAccent}\marg{command}
- \cs{UndeclareCommand}\marg{command}
- \cs{UndeclareComposite}\marg{command}\marg{letter}
-\end{quote}
-
-\end{document}
-
-
-% /©
-% ------------------------------------------------
-% The FONTSPEC package <wspr.io/fontspec>
-% ------------------------------------------------
-% Copyright 2004-2020 Will Robertson, LPPL "maintainer"
-% Copyright 2009-2015 Khaled Hosny
-% Copyright 2013 Philipp Gesang
-% Copyright 2013-2016 Joseph Wright
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% ©/
diff --git a/macros/latex/contrib/fontspec/fontspec-doc-featset.tex b/macros/latex/contrib/fontspec/fontspec-doc-featset.tex
deleted file mode 100644
index 90b1019561..0000000000
--- a/macros/latex/contrib/fontspec/fontspec-doc-featset.tex
+++ /dev/null
@@ -1,629 +0,0 @@
-%%^^A%% fontspec-doc-featset.tex -- part of FONTSPEC <wspr.io/fontspec>
-
-\documentclass[a4paper]{l3doc}
-\usepackage{fontspec-doc-style}
-\showexamplesfalse
-\begin{document}
-
-\part{Selecting font features}
-\label{sec:selectingfeature}
-
-The commands discussed so far such as \cs{fontspec} each take an optional argument for
-accessing the font features of the requested font.
-Commands are provided to set default features to be applied for all fonts, and even to change the features that a font is presently loaded with.
-Different font shapes can be loaded with separate features, and different features can even be selected for different sizes that the font appears in.
-This part discusses these options.
-
-\section{Default settings}
-\label{sec:defaults}
-
-\cmdbox{\cmd\defaultfontfeatures\marg{font features}}
-
-It is sometimes useful to define
-font features that are applied to every subsequent font selection command.
-This may be defined with the
-\cmd{\defaultfontfeatures} command, shown in \exref{dff}.
-New calls of \cs{defaultfontfeatures} overwrite previous ones, and defaults can be reset by calling the command with an empty argument.
-
-\begin{Xexample}{dff}{A demonstration of the \cs{defaultfontfeatures} command.}
- \fontspec{texgyreadventor-regular.otf}
- Some default text 0123456789 \\
- \defaultfontfeatures{
- Numbers=OldStyle, Color=888888
- }
- \fontspec{texgyreadventor-regular.otf}
- Now grey, with old-style figures:
- 0123456789
-\end{Xexample}
-
-\cmdbox{\cmd\defaultfontfeatures\oarg{font name}\marg{font features}}
-
-Default font features can be specified on a per-font and per-face basis
-by using the optional argument to \cs{defaultfontfeatures} as shown.
-\begin{Verbatim}
- \defaultfontfeatures[texgyreadventor-regular.otf]{Color=blue}
- \setmainfont{texgyreadventor-regular.otf}% will be blue
-\end{Verbatim}
-Multiple fonts may be affected by using a comma separated list of font names.
-
-\cmdbox{\cmd\defaultfontfeatures\oarg{\cs{font-switch}}\marg{font features}}
-
-\textbf{New in v2.4}.
-Defaults can also be applied to symbolic families such as those created with the |\newfontfamily| command and for |\rmfamily|, |\sffamily|, and |\ttfamily|:
-\begin{Verbatim}
- \defaultfontfeatures[\rmfamily,\sffamily]{Ligatures=TeX}
- \setmainfont{texgyreadventor-regular.otf}% will use standard TeX ligatures
-\end{Verbatim}
-The line above to set \TeX-like ligatures is now activated by \emph{default} in \texttt{fontspec.cfg}.
-To reset default font features, simply call the command with an empty argument:
-\begin{Verbatim}
- \defaultfontfeatures[\rmfamily,\sffamily]{}
- \setmainfont{texgyreadventor-regular.otf}% will no longer use standard TeX ligatures
-\end{Verbatim}
-
-\cmdbox{\cmd\defaultfontfeatures\texttt{+}\marg{font features}\\
- \cmd\defaultfontfeatures\texttt{+}\oarg{font name}\marg{font features}}
-
-\textbf{New in v2.4}.
-Using the |+| form of the command appends the \meta{font features} to any already-selected defaults.
-
-
-\section{Working with the currently selected features}
-\label{sec:addfontfeatures}
-
-
-\cmdbox{\cmd\IfFontFeatureActiveTF\marg{font feature}\marg{true code}\marg{false code}}
-
-This command queries the currently selected font face and executes the appropriate branch based on whether the \meta{font feature} as specified by \pkg{fontspec} is currently active.
-
-For example, the following will print `True':
-\begin{Verbatim}
-\setmainfont{texgyrepagella-regular.otf}[Numbers=OldStyle]
-\IfFontFeatureActiveTF{Numbers=OldStyle}{True}{False}
-\end{Verbatim}
-
-Note that there is no way for \pkg{fontspec} to know what the default features of a font will be. For example, by default the |texgyrepagella| fonts use lining numbers. But in the following example, querying for lining numbers returns false since they have not been explicitly requested:
-\begin{Verbatim}
-\setmainfont{texgyrepagella-regular.otf}
-\IfFontFeatureActiveTF{Numbers=Lining}{True}{False}
-\end{Verbatim}
-
-Please note: At time of writing this function only supports OpenType fonts; AAT/Graphite fonts under the \XeTeX\ engine are not supported.
-
-
-\cmdbox{\cmd\addfontfeatures\marg{font features}}
-
-This command allows font features in an entire font family to
-be changed without knowing what features are currently selected or even what
-font family is being used. A good example of this could be to add a hook to all
-tabular material to use monospaced numbers, as shown in \exref{aff}.
-If you attempt to \emph{change} an already-selected feature, \pkg{fontspec} will try to de-activate any features that clash with the new ones.
-\Eg, the following two invocations are mutually exclusive:
-\begin{Verbatim}
-\addfontfeature{Numbers=OldStyle}...
-\addfontfeature{Numbers=Lining}...
-123
-\end{Verbatim}
-Since |Numbers=Lining| comes last, it takes precedence and deactivates the call |Numbers=OldStyle|.
-
-If you wish to apply the change to only one of the fonts of a family (say, italics only)
-you can write
-\begin{Verbatim}
-\addfontfeature{ItalicFeatures={Numbers=Lowercase}}
-\end{Verbatim}
-
-
-\begin{Lexample}{aff}{A demonstration of the \cs{addfontfeatures} command.}
- \fontspec{texgyreadventor-regular.otf}%
- [Numbers={Proportional,OldStyle}]
- `In 1842, 999 people sailed 97 miles in
- 13 boats. In 1923, 111 people sailed 54
- miles in 56 boats.' \bigskip
-
- {\addfontfeatures{Numbers={Monospaced,Lining}}
- \begin{tabular}{@{} cccc @{}}
- Year & People & Miles & Boats \\
- \hline 1842 & 999 & 75 & 13 \\
- 1923 & 111 & 54 & 56
- \end{tabular}}
-\end{Lexample}
-
-\DescribeMacro{\addfontfeature}
-This command may also be executed under the alias \cmd{\addfontfeature}.
-
-
-\subsection{Priority of feature selection}
-Features defined with \cs{addfontfeatures} override features
-specified by \cs{fontspec}, which in turn override features
-specified by \cs{defaultfontfeatures}. If in doubt, whenever a
-new font is chosen for the first time, an entry is made in the
-transcript (\texttt{.log}) file displaying the font name and the
-features requested.
-
-
-\section{Different features for different font shapes}
-\label{sec:bfit-feat}
-
-\cmdbox{
- \feat{BoldFeatures}\texttt=\marg{features} \\
- \feat{ItalicFeatures}\texttt=\marg{features} \\
- \feat{BoldItalicFeatures}\texttt=\marg{features} \\
- \feat{SlantedFeatures}\texttt=\marg{features} \\
- \feat{BoldSlantedFeatures}\texttt=\marg{features} \\
- \feat{SmallCapsFeatures}\texttt=\marg{features} \\
- \feat{UprightFeatures}\texttt=\marg{features}
-}
-
-It is entirely possible that separate fonts in a family will require
-separate options; \eg, Hoefler Text Italic contains various swash
-feature options that are completely unavailable in the upright shapes.
-
-The font features defined at the top level of the optional \cmd\fontspec\
-argument are applied to \emph{all} shapes of the family.
-Using \feat{Upright-}, \feat{SmallCaps-}, \feat{Bold-},
-\feat{Italic-}, and \feat{BoldItalicFeatures},
-separate font features may be defined to their respective shapes
-\emph{in addition} to, and with precedence over, the `global' font features.
-See \exref{itfeat}.
-
-\begin{Xexample}{itfeat}{Features for, say, just italics.}
-\fontspec{EBGaramond-Regular.otf}%
- [ItalicFont=EBGaramond-Italic.otf]
-\itshape Don’t Ask Victoria! \\
-\addfontfeature{ItalicFeatures={Style=Swash}}
-Don’t Ask Victoria! \\
-\end{Xexample}
-
-Note that because most fonts include their small caps glyphs
-within the main font, features specified with \feat{SmallCapsFeatures} are applied \emph{in addition} to
-any other shape-specific features as defined above, and hence \feat{SmallCapsFeatures}
-can be nested within \feat{ItalicFeatures} and friends. Every combination
-of upright, italic, bold and small caps can thus be assigned individual
-features, as shown in the somewhat ludicrous \exref{scfeat}.
-
-\begin{Xexample}{scfeat}{An example of setting the \feat{SmallCapsFeatures}
-separately for each font shape.}
- \fontspec{texgyretermes}[
- Extension = {.otf},
- UprightFont = {*-regular}, ItalicFont = {*-italic},
- BoldFont = {*-bold}, BoldItalicFont = {*-bolditalic},
- UprightFeatures={Color = 220022,
- SmallCapsFeatures = {Color=115511}},
- ItalicFeatures={Color = 2244FF,
- SmallCapsFeatures = {Color=112299}},
- BoldFeatures={Color = FF4422,
- SmallCapsFeatures = {Color=992211}},
- BoldItalicFeatures={Color = 888844,
- SmallCapsFeatures = {Color=444422}},
- ]
- Upright {\scshape Small Caps}\\
- \itshape Italic {\scshape Italic Small Caps}\\
- \upshape\bfseries Bold {\scshape Bold Small Caps}\\
- \itshape Bold Italic {\scshape Bold Italic Small Caps}
-\end{Xexample}
-
-
-\section{Selecting fonts from TrueType Collections (TTC files)}
-TrueType Collections are multiple fonts contained within a single file.
-Each font within a collection must be explicitly chosen using the \feat{FontIndex} command.
-Since TrueType Collections are often used to contain the italic/bold shapes in a family, \pkg{fontspec} automatically selects the italic, bold, and bold italic fontfaces from the same file.
-For example, to load the macOS system font Optima:
-\begin{Verbatim}
-\setmainfont{Optima.ttc}[
- Path = /System/Library/Fonts/ ,
- UprightFeatures = {FontIndex=0} ,
- BoldFeatures = {FontIndex=1} ,
- ItalicFeatures = {FontIndex=2} ,
- BoldItalicFeatures = {FontIndex=3} ,
-]
-\end{Verbatim}
-Support for TrueType Collections has only been tested in \XeTeX, but should also work with an up-to-date version of \LuaTeX\ and the \pkg{luaotfload} package.
-
-
-\section{Different features for different font sizes}
-\label{sec:sizefeature}
-
-\cmdbox{
-\ttfamily SizeFeatures = \char`\{\\
-\null\quad...\\
-\null\quad\char`\{~Size =
-\rmfamily\meta{size range}\ttfamily
-,
-\rmfamily \meta{font features}\ttfamily
-~\char`\} , \\
-\null\quad\char`\{~Size =
-\rmfamily\meta{size range}\ttfamily
-, Font =
-\rmfamily\meta{font name}\texttt, \meta{font features}\ttfamily
-~\char`\} , \\
-\null\quad... \\
-\char`\}}
-
-The \feat{SizeFeature} feature is a little more complicated
-than the previous features discussed. It allows different fonts
-and different font features to be selected for a given font
-family as the point size varies.
-
-It takes a comma separated list of braced, comma separated lists of features for each size range.
-Each sub-list must contain the \opt{Size} option
-to declare the size range, and optionally \opt{Font} to change the
-font based on size. Other (regular) fontspec features that are added
-are used on top of the font features that would be used anyway.
-A demonstration to clarify these details is shown in \exref{sizefeat}.
-A less trivial example is shown in the context of optical font sizes
-in \vref{sec:opticalsize}.
-
-\begin{Xexample}{sizefeat}{An example of specifying different font features for different sizes of font with \feat{SizeFeatures}.}
- \fontspec{texgyrechorus-mediumitalic.otf}[
- SizeFeatures={
- {Size={-8}, Font=texgyrebonum-italic.otf, Color=AA0000},
- {Size={8-14}, Color=00AA00},
- {Size={14-}, Color=0000AA}} ]
-
- {\scriptsize Small\par} Normal size\par {\Large Large\par}
-\end{Xexample}
-
-To be precise, the \opt{Size} sub-feature accepts arguments in the form shown in \vref{tab:sizing}.
-Braces around the size range are optional. For an exact font size (|Size=X|)
-font sizes chosen near that size will `snap'. For example, for size definitions
-at exactly 11pt and 14pt, if a 12pt font is requested \emph{actually} the
-11pt font will be selected. This is a remnant of the past when fonts were designed
-in metal (at obviously rigid sizes) and later when bitmap fonts were similarly
-designed for fixed sizes.
-
-If additional features are only required for a single size, the other sizes
-must still be specified. As in:
-\begin{Verbatim}
- SizeFeatures={
- {Size=-10,Numbers=Uppercase},
- {Size=10-}}
-\end{Verbatim}
-Otherwise, the font sizes greater than 10 won't be defined at all!
-
-\begin{table}
-\caption{Syntax for specifying the size to apply custom font features.}\label{tab:sizing}
-\centering
-\begin{tabular}{@{}ll@{}}
-\toprule
-Input & Font size, $s$ \\
-\midrule
- |Size = X-| & $s \geq \texttt{X}$ \\
- |Size = -Y| & $s < \texttt{Y}$ \\
- |Size = X-Y| & $\texttt{X} \leq s < \texttt{Y}$ \\
- |Size = X| & $s = \texttt{X}$ \\
-\bottomrule
-\end{tabular}
-\end{table}
-
-\paragraph{Interaction with other features}
-For \feat{SizeFeatures} to work with \feat{ItalicFeatures}, \feat{BoldFeatures}, etc., and \feat{SmallCapsFeatures}, a strict heirarchy is required:
-\begin{Verbatim}
- UprightFeatures =
- {
- SizeFeatures =
- {
- {
- Size = -10,
- Font = ..., % if necessary
- SmallCapsFeatures = {...},
- ... % other features for this size range
- },
- ... % other size ranges
- }
- }
-\end{Verbatim}
-Suggestions on simplifying this interface welcome.
-
-
-\section{Font independent options}
-\label{sec:font-ind-features}
-
-Features introduced in this section may be used with any font.
-
-\subsection{Colour}
-
-\feat{Color} (or \feat{Colour}) uses font specifications to set the colour of
-the text.
-You should think of this as the literal glyphs of the font being coloured in a certain way.
-Notably, this mechanism is different to that of the \pkg{color}/\pkg{xcolor}/\pkg{hyperref}/etc.\ packages, and in fact using \pkg{fontspec} commands to set colour will prevent your text from changing colour using those packages at all!
-For example, if you set the colour in a \verb|\setmainfont| command, \verb|\color{...}| and related commands, including hyperlink colouring, will no longer have any effect on text in this font.)
-Therefore, \pkg{fontspec}'s colour commands are best used to set explicit colours in specific situations, and the \pkg{xcolor} package is recommended for more general colour functionality.
-
-The colour is defined as a triplet of two-digit Hex RGB
-values, with optionally another value for the transparency (where
-|00| is completely transparent and |FF| is opaque.)
-\begin{Lexample}{color}{Selecting colour with transparency.}
- \fontsize{48}{48}
- \fontspec{texgyrebonum-bold.otf}
- {\addfontfeature{Color=FF000099}W}\kern-0.4ex
- {\addfontfeature{Color=0000FF99}S}\kern-0.4ex
- {\addfontfeature{Color=DDBB2299}P}\kern-0.5ex
- {\addfontfeature{Color=00BB3399}R}
-\end{Lexample}
-Transparency is supported by \LuaLaTeX; \XeLaTeX\ with the \texttt{xdvipdfmx} driver
-does not support this feature.
-
-If you load the \pkg{xcolor} package, you may use any named colour instead
-of writing the colours in hexadecimal.
-\begin{Verbatim}
- \usepackage{xcolor}
- ...
- \fontspec[Color=red]{Verdana} ...
- \definecolor{Foo}{rgb}{0.3,0.4,0.5}
- \fontspec[Color=Foo]{Verdana} ...
-\end{Verbatim}
-The \pkg{color} package is \emph{not} supported; use \pkg{xcolor} instead.
-
-You may specify the transparency with a named colour using the \feat{Opacity}
-feature which takes an decimal from zero to one corresponding to
-transparent to opaque respectively:
-\begin{Verbatim}
- \fontspec[Color=red,Opacity=0.7]{Verdana} ...
-\end{Verbatim}
-It is still possible to specify a colour in six-char hexadecimal form
-while defining opacity in this way, if you like.
-
-\subsection{Scale}
-
-\cmdbox{
- \feat{Scale} = \meta{number} \\
- \feat{Scale} = \opt{MatchLowercase} \\
- \feat{Scale} = \opt{MatchUppercase}
-}
-
-In its explicit form, \feat{Scale} takes a single
-numeric argument for linearly scaling the font, as demonstrated
-in \exref{fontload}.
-
-As well as a numerical argument, the \feat{Scale} feature
-also accepts options \opt{MatchLowercase}
-and \opt{MatchUppercase}, which will scale the font being selected to match
-the current default roman font to either the height of the lowercase or
-uppercase letters, respectively; these features are shown in \exref{scale}.
-The amount of scaling used in each instance is reported in the \texttt{.log} file.
-
-\begin{Xexample}{scale}{Automatically calculated scale values.}
- \setmainfont{Georgia}
- \newfontfamily\lc[Scale=MatchLowercase]{Verdana}
- The perfect match {\lc is hard to find.}\\
- \newfontfamily\uc[Scale=MatchUppercase]{Arial}
- L O G O \uc F O N T
-\end{Xexample}
-
-Additional calls to the \feat{Scale} feature overwrite the settings of the former.
-If you want to accumulate scale factors (useful perhaps to fine-tune the settings of
-\opt{MatchLowercase}), the \feat{ScaleAgain} feature can be used as many times as
-necessary. For example:
-\begin{Verbatim}
- [ Scale = 1.1 , Scale = 1.2 ] % -> scale of 1.2
- [ Scale = 1.1 , ScaleAgain = 1.2 ] % -> scale of 1.32
-\end{Verbatim}
-
-Note that when |Scale=MatchLowercase| is used with |\setmainfont|, the new `main'
-font of the document will be scaled to match the old default.
-If you wish to automatically scale all fonts except have the main font use `natural'
-scaling, you may write
-\begin{Verbatim}
- \defaultfontfeatures{ Scale = MatchLowercase }
- \defaultfontfeatures[\rmfamily]{ Scale = 1}
-\end{Verbatim}
-One or both of these lines may be placed into a local |fontspec.cfg| file
-(see \vref{sec:config}) for this behaviour to be effected in your own documents
-automatically.
-(Also see \vref{sec:defaults} for more information on setting font defaults.)
-
-
-
-
-\subsection{Interword space}
-
-While the space between words can be varied on an individual
-basis with the \TeX\ primitive \cmd\spaceskip\ command, it is
-more convenient to specify this information when the font is
-first defined.
-
-The space in between words in a paragraph will be chosen automatically,
-and generally will not need to be adjusted. For those
-times when the precise details are important, the \feat{WordSpace}
-feature is
-provided, which takes either a single scaling factor to scale the
-default value, or a triplet of comma-separated
-values to scale the nominal value, the stretch, and the shrink of the
-interword space by, respectively. (|WordSpace={|$x$|}| is the same as
-|WordSpace={|$x$|,|$x$|,|$x$|}|.)
-
-\begingroup
-\let\centering\relax
-\begin{Xexample}{wordspace}{Scaling the default interword space. An exaggerated value has been chosen to emphasise the effects here.}
- \fontspec{texgyretermes-regular.otf}
- Some text for our example to take
- up some space, and to demonstrate
- the default interword space.
- \bigskip
-
- \fontspec{texgyretermes-regular.otf}%
- [WordSpace = 0.3]
- Some text for our example to take
- up some space, and to demonstrate
- the default interword space.
-\end{Xexample}
-\endgroup
-
-Note that \TeX's optimisations in how it loads fonts means that you cannot
-use this feature in \cs{addfontfeatures}.
-
-\subsection{Post-punctuation space}
-
-If \cmd\frenchspacing\ is \emph{not} in effect, \TeX\ will allow extra
-space after some punctuation in its goal of justifying the lines of text.
-Generally, this is considered old-fashioned, but occasionally in small amounts the
-effect can be justified, pardon the pun.
-
-The \feat{PunctuationSpace} feature takes a scaling factor by which to
-adjust the nominal value chosen for the font; this is demonstrated in
-\exref{punctspace}.
-Note that |PunctuationSpace=0|
-is \emph{not} equivalent to \cmd\frenchspacing, although the difference
-will only be apparent when a line of text is under-full.
-
-\begin{Lexample}{punctspace}{Scaling the default post-punctuation space.}
- \nonfrenchspacing
- \fontspec{texgyreschola-regular.otf}
- Letters, Words. Sentences. \par
- \fontspec{texgyreschola-regular.otf}[PunctuationSpace=2]
- Letters, Words. Sentences. \par
- \fontspec{texgyreschola-regular.otf}[PunctuationSpace=0]
- Letters, Words. Sentences.
-\end{Lexample}
-
-Note that \TeX's optimisations in how it loads fonts means that you cannot
-use this feature in \cs{addfontfeatures}.
-
-
-
-\subsection{The hyphenation character}
-
-The letter used for hyphenation may be chosen with the \feat{HyphenChar}
-feature.
-With one exception (\feat{HyphenChar} \texttt{=} \opt{None}),
-this is a \XeTeX-only feature since \LuaTeX\ cannot set the hyphenation character on a per-font basis;
-see its \cs{prehyphenchar} primitive for further details.
-
-\feat{HyphenChar} takes three types of input, which are chosen according to some
-simple rules. If the input is the string \opt{None}, then hyphenation is
-suppressed for this font.
-
-As part of \texttt{fontspec.cfg}, the default monospaced family (e.g., \verb|\ttfamily|)
-is set up to automatically set \feat{HyphenChar} \texttt{=} \opt{None}.
-
-If the input is a single character, then this character is used.
-Finally, if the input is longer than a single character
-it must be the UTF-8 slot number of the hyphen character you desire.
-
-\begin{Xexample}{hyphchar}{Explicitly choosing the hyphenation character.}
- \def\text{\fbox{\parbox{1.55cm}{%
- EXAMPLE HYPHENATION%
- }}\qquad\qquad\null\par\bigskip}
-
- \fontspec{LinLibertine_R.otf}[HyphenChar=None]
- \text
- \fontspec{LinLibertine_R.otf}[HyphenChar={+}]
- \text
-\end{Xexample}
-
-Note that \TeX's optimisations in how it loads fonts means that you cannot
-use this feature in \cs{addfontfeatures}.
-
-\subsection{Optical font sizes} \label{sec:opticalsize}
-
-Optically scaled fonts thicken out as the font size decreases
-in order to make the glyph shapes more robust (less prone to losing
-detail), which improves legibility. Conversely, at large optical
-sizes the serifs and other small details may be more delicately
-rendered.
-
-OpenType fonts with optical scaling can exist in
-several discrete sizes (in separate font files).
-When loading fonts by name, \XeTeX\ and Lua\TeX\ engines will attempt to
-\emph{automatically} load the appropriate font as determined by the current font size.
-An example of this behaviour is shown in \exref{optsize}, in which some larger text is
-mechanically scaled down to compare the difference for equivalent font sizes.
-
-The \feat{OpticalSize} feature may be used to specify a different optical size.
-With \feat{OpticalSize} set (\exref{optsize0})
-to zero, no optical size font substitution is performed.
-
-\begin{Lexample}{optsize}{A demonstration of automatic optical size selection.}
- \fontspec{Latin Modern Roman}
- Automatic optical size \\
- \scalebox{0.4}{\Huge
- Automatic optical size}
-\end{Lexample}
-
-\begin{Lexample}{optsize0}{Explicit optical size substitution for the Latin Modern Roman family.}
- \fontspec{Latin Modern Roman}[OpticalSize=5]
- Latin Modern optical sizes \\
- \fontspec{Latin Modern Roman}[OpticalSize=8]
- Latin Modern optical sizes \\
- \fontspec{Latin Modern Roman}[OpticalSize=12]
- Latin Modern optical sizes \\
- \fontspec{Latin Modern Roman}[OpticalSize=17]
- Latin Modern optical sizes
-\end{Lexample}
-
-The \feat{SizeFeatures} feature (\vref{sec:sizefeature}) can be
-used to specify exactly which optical sizes will be used for ranges
-of font size. For example, something like:
-\begin{Verbatim}
- \fontspec{Latin Modern Roman}[
- UprightFeatures = { SizeFeatures = {
- {Size=-10, OpticalSize=8 },
- {Size= 10-14, OpticalSize=10},
- {Size= 14-18, OpticalSize=14},
- {Size= 18-, OpticalSize=18}}}
- ]
-\end{Verbatim}
-
-\subsection{Font transformations}
-
-In rare situations users may want to mechanically distort the shapes of the glyphs in the current font such as shown in \exref{fake}. Please don't overuse these features; they are \emph{not} a good alternative to having the real shapes.
-
-\begin{Xexample}{fake}{Articifial font transformations.}
- \fontspec{Quattrocento.otf} \emph{ABCxyz} \quad
- \fontspec{Quattrocento.otf}[FakeSlant=0.2] ABCxyz
-
- \fontspec{Quattrocento.otf} ABCxyz \quad
- \fontspec{Quattrocento.otf}[FakeStretch=1.2] ABCxyz
-
- \fontspec{Quattrocento.otf} \textbf{ABCxyz} \quad
- \fontspec{Quattrocento.otf}[FakeBold=1.5] ABCxyz
-\end{Xexample}
-
-If values are omitted, their defaults are as shown above.
-
-If you want the bold shape to be faked automatically, or the italic shape
-to be slanted automatically, use the \feat{AutoFakeBold} and
-\feat{AutoFakeSlant} features. For example, the following two invocations
-are equivalent:
-\begin{Verbatim}
- \fontspec[AutoFakeBold=1.5]{Charis SIL}
- \fontspec[BoldFeatures={FakeBold=1.5}]{Charis SIL}
-\end{Verbatim}
-If both of the \feat{AutoFake...} features are used, then the bold italic
-font will also be faked.
-
-
-\subsection{Letter spacing}
-Letter spacing, or tracking, is the term given to adding (or subtracting) a small amount of horizontal space in between adjacent characters. It is specified with the \feat{LetterSpace}, which takes a numeric argument,
-shown in \exref{tracking}.
-
-The letter spacing parameter is a normalised additive factor (not a scaling factor); it is defined as a percentage of the font size. That is, for a 10\,pt font, a letter spacing parameter of `|1.0|' will add 0.1\,pt between each letter.
-
-\begin{Xexample}{tracking}{The \feat{LetterSpace} feature.}
- \fontspec{Didot}
- \addfontfeature{LetterSpace=0.0}
- USE TRACKING FOR DISPLAY CAPS TEXT \\
- \addfontfeature{LetterSpace=2.0}
- USE TRACKING FOR DISPLAY CAPS TEXT
-\end{Xexample}
-
-This functionality is not generally used for lowercase text in modern typesetting but does have historic precedent in a variety of situations.
-In particular, small amounts of letter spacing can be very useful, when setting small caps or all caps titles.
-Also see the OpenType \opt{Uppercase} option of the \feat{Letters} feature (\vref{sec:letters}).
-
-\end{document}
-
-% /©
-% ------------------------------------------------
-% The FONTSPEC package <wspr.io/fontspec>
-% ------------------------------------------------
-% Copyright 2004-2020 Will Robertson, LPPL "maintainer"
-% Copyright 2009-2015 Khaled Hosny
-% Copyright 2013 Philipp Gesang
-% Copyright 2013-2016 Joseph Wright
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% ©/
diff --git a/macros/latex/contrib/fontspec/fontspec-doc-fontsel.tex b/macros/latex/contrib/fontspec/fontspec-doc-fontsel.tex
deleted file mode 100644
index 85ad1ea75d..0000000000
--- a/macros/latex/contrib/fontspec/fontspec-doc-fontsel.tex
+++ /dev/null
@@ -1,629 +0,0 @@
-%%^^A%% fontspec-doc-fontsel.tex -- part of FONTSPEC <wspr.io/fontspec>
-
-\documentclass[a4paper]{l3doc}
-\usepackage{fontspec-doc-style}
-\showexamplesfalse
-\begin{document}
-
-\part{General font selection}
-
-\section{Main commands}
-\label{sec:main-cmd}
-
-This section concerns the variety of commands that can be used to select
-fonts.
-
-\bigskip
-\cmdbox{%
- \CMD{\string\setmainfont}\marg{font}\oarg{font features}\\
- \CMD{\string\setsansfont}{\color[gray]{0.5}\marg{font}\oarg{font features}}\\
- \CMD{\string\setmonofont}{\color[gray]{0.5}\marg{font}\oarg{font features}}
-}
-
-These are the main font-selecting commands of this package which select the standard fonts used in a document, as shown in \exref{fontload}.
-Here, the scales of the fonts have been chosen to equalise their
-lowercase letter heights. The \feat{Scale} font feature will be discussed
-further in \vref{sec:font-ind-features}, including methods for automatic
-scaling.
-Note that further options may need to be added to select appropriate bold/italic fonts,
-but this shows the main idea.
-
-Note that while these commands all look and behave largely identically, the default setup for font loading automatically adds the |Ligatures=TeX| feature for the \cs{setmainfont} and \cs{setsansfont} commands.
-These defaults (and further customisations possible) are discussed in \vref{sec:defaults}.
-
-\bigskip
-\cmdbox{%
- \CMD{\string\newfontfamily}\meta{cmd}\marg{font}\oarg{font features}\\
- \CMD{\string\setfontfamily}{\color[gray]{0.5}\meta{cmd}\marg{font}\oarg{font features}}\\
- \CMD{\string\renewfontfamily}{\color[gray]{0.5}\meta{cmd}\marg{font}\oarg{font features}}\\
- \CMD{\string\providefontfamily}{\color[gray]{0.5}\meta{cmd}\marg{font}\oarg{font features}}
-}
-
-These commands define new font family commands (like \cs{rmfamily}).
-The |new| command checks if \meta{cmd} has been defined, and issues an error if so.
-The |renew| command checks if \meta{cmd} has been defined, and issues an error if not.
-The |provide| command checks if \meta{cmd} has been defined, and silently aborts if so.
-The |set| command never checks; use at your own risk.
-
-
-
-\bigskip
-\cmdbox{%
- \CMD{\string\fontspec}\marg{font}\oarg{font features}
-}
-
-The plain \cs{fontspec} command is not generally recommended for document use. It is an
-ad hoc command best suited for testing and loading fonts on a one-off basis.
-
-All of the commands listed above accept comma-separated
-\meta{font feature}=\meta{option} lists; these are described later:
-\begin{itemize}
-\item For general font features, see \vref{sec:font-ind-features}
-\item For OpenType fonts, see Part~\vref{sec:opentype-features}
-\item For \XeTeX-only general font features, see Part~\vref{sec:xetex-features}
-\item For \LuaTeX-only general font features, see Part~\vref{sec:luatex-features}
-\item For features for \AAT\ fonts in \XeTeX, see \vref{sec:aat-features}
-\end{itemize}
-
-\begin{Lexample}{fontload}{Loading the default, sans serif, and monospaced fonts.}
- \setmainfont{texgyrebonum-regular.otf}
- \setsansfont{lmsans10-regular.otf}[Scale=MatchLowercase]
- \setmonofont{Inconsolatazi4-Regular.otf}[Scale=MatchLowercase]
-
- \rmfamily Pack my box with five dozen liquor jugs\par
- \sffamily Pack my box with five dozen liquor jugs\par
- \ttfamily Pack my box with five dozen liquor jugs
-\end{Lexample}
-
-\section{Font selection}
-
-In both \LuaTeX\ and \XeTeX, fonts can be selected (using the \meta{font} argument in \ref{sec:main-cmd}) either by `font name' or by `file name', but there are some differences in how each engine finds and selects fonts --- don't be too surprised if a font invocation in one engine needs correction to work in the other.
-
-
-\subsection{By font name}
-
-Fonts known to \LuaTeX\ or \XeTeX\ may be loaded by their standard names as
-you'd speak them out loud, such as \emph{Times New Roman} or
-\emph{Adobe Garamond}.
-`Known to' in this case generally means `exists in a standard fonts location'
-such as |~/Library/Fonts| on \MacOSX, or |C:\Windows\Fonts| on Windows.
-In \LuaTeX, fonts found in the \textsc{texmf} tree can also be loaded by name.
-In \XeTeX, fonts found in the \textsc{texmf} tree can be loaded in Windows and Linux,
-but not on \MacOSX.
-
-The simplest example might be something like
-\begin{Verbatim}
- \setmainfont{Cambria}[ ... ]
-\end{Verbatim}
-in which the bold and italic fonts will be found automatically
-(if they exist) and are immediately accessible with the usual
-\cs{textit} and \cs{textbf} commands.
-
-The `font name' can be found in various ways, such as by looking in the name listed in a application like \emph{Font Book} on Mac~OS~X.
-Alternatively, \TeX{}Live contains the \texttt{otfinfo} command line program, which can query this information; for example:
-\begin{Verbatim}
- otfinfo -i `kpsewhich lmroman10-regular.otf`
-\end{Verbatim}
-results in a line that reads:
-\begin{Verbatim}
- Preferred family: Latin Modern Roman
-\end{Verbatim}
-(The `preferred family' name is usually better than the `family' name.)
-
-\paragraph{\LuaTeX\ users only}
-In order to load fonts by their name rather than by their filename (\eg,
-`Latin Modern Roman' instead of `ec-lmr10'), you may need to run the script
-\texttt{luaotfload-tool}, which is distributed with the \pkg{luaotfload}
-package. Note that if you do not execute this script beforehand, the first
-time you attempt to typeset the process will pause for (up to) several
-minutes. (But only the first time.)
-Please see the \pkg{luaotfload} documentation for more information.
-
-
-\subsection{By file name}
-\label{sec:by-file-name}
-
-\XeTeX\ and \LuaTeX\ also allow fonts to be loaded by file name instead of font name.
-When you have a very large collection of fonts, you will sometimes not
-wish to have them all installed in your system's font directories.
-In this case, it is more convenient to load them from a different location on your disk.
-This technique is also necessary in \XeTeX\ when loading OpenType fonts that are present within your \TeX\ distribution, such as \path{/usr/local/texlive/2013/texmf-dist/fonts/opentype/public}.
-Fonts in such locations are visible to \XeTeX\ but cannot be loaded by font name, only file name; \LuaTeX\ does not have this restriction.
-
-When selecting fonts by file name, any font that can be found in the default
-search paths may be used directly (including in the current directory)
-without having to explicitly define the location of the font file on disk.
-
-Fonts selected by filename must include bold and italic variants explicitly,
-unless a \texttt{.fontspec} file is supplied for the font family (see \ref{sec:fontspecfile}).
-We'll give some first examples specifying everything explicitly:
-\begin{Verbatim}
- \setmainfont{texgyrepagella-regular.otf}[
- BoldFont = texgyrepagella-bold.otf ,
- ItalicFont = texgyrepagella-italic.otf ,
- BoldItalicFont = texgyrepagella-bolditalic.otf ]
-\end{Verbatim}
-\pkg{fontspec} knows that the font is to be selected by file name by the
-presence of the `|.otf|' extension.
-An alternative is to specify the extension separately, as shown following:
-\begin{Verbatim}
- \setmainfont{texgyrepagella-regular}[
- Extension = .otf ,
- BoldFont = texgyrepagella-bold ,
- ... ]
-\end{Verbatim}
-If desired, an abbreviation can be applied to the font names based on the
-mandatory `font name' argument:
-\begin{Verbatim}
- \setmainfont{texgyrepagella}[
- Extension = .otf ,
- UprightFont = *-regular ,
- BoldFont = *-bold ,
- ... ]
-\end{Verbatim}
-In this case `texgyrepagella' is no longer the name of an actual font,
-but is used to construct the font names for each shape;
-the |*| is replaced by `texgyrepagella'.
-Note in this case that |UprightFont| is required for constructing the font
-name of the normal font to use.
-
-To load a font that is not in one of the default search paths, its location
-in the filesystem must be specified with the |Path| feature:
-\begin{Verbatim}
- \setmainfont{texgyrepagella}[
- Path = /Users/will/Fonts/ ,
- UprightFont = *-regular ,
- BoldFont = *-bold ,
- ... ]
-\end{Verbatim}
-Note that \XeTeX\ and \LuaTeX\ are able to load the font without giving an
-extension, but \pkg{fontspec} must know to search for the file; this can be
-indicated by using the |Path| feature without an argument:
-\begin{Verbatim}
- \setmainfont{texgyrepagella-regular}[
- Path, BoldFont = texgyrepagella-bold,
- ... ]
-\end{Verbatim}
-My preference is to always be explicit and include the extension; this also allows \pkg{fontspec} to automatically identify that the font should be loaded by filename.
-
-In previous versions of the package, the |Path| feature was also provided under the alias |ExternalLocation|, but this latter name is now deprecated and should not be used for new documents.
-
-
-\subsection{By custom file name using a \texttt{.fontspec} file}
-\label{sec:fontspecfile}
-
-When \pkg{fontspec} is first asked to load a font, a font settings file is searched
-for with the name `\meta{fontname}\texttt{.fontspec}'.\footnote{Located in the current folder or within a standard \texttt{texmf} location.}
-If you want to \emph{disable} this feature on a per-font basis, use the \feat{IgnoreFontspecFile} font option.
-
-The contents of this file can be used to specify font shapes and font features without having to have this information present within each document.
-Therefore, it can be more flexible than the alternatives listed above.
-
-When searching for this \texttt{.fontspec} file, \meta{fontname} is stripped of spaces and file extensions are omitted.
-For example, given |\setmainfont{TeX Gyre Adventor}|, the \texttt{.fontspec} file would be
-called \texttt{TeXGyreAdventor.fontspec}.
-If you wanted to transparently load options for |\setmainfont{texgyreadventor-regular.otf}|, the configuration
-file would be \texttt{texgyreadventor-regular.fontspec}.
-
-N.B. that while spaces are stripped, the lettercase of the names should match.
-
-This mechanism can be used to define custom names or aliases for your font collections.
-The syntax within this file follows from the \cs{defaultfontfeatures}, defined in more detail later but mirroring the standard \pkg{fontspec} font loading syntax.
-As an example, suppose we're defining a font family to be loaded with \verb|\setmainfont{My Charis}|.
-The corresponding \texttt{MyCharis.fontspec} file would contain, say,
-\begin{Verbatim}
- \defaultfontfeatures[My Charis]
- {
- Extension = .ttf ,
- UprightFont = CharisSILR,
- BoldFont = CharisSILB,
- ItalicFont = CharisSILI,
- BoldItalicFont = CharisSILBI,
- % <any other desired options>
- }
-\end{Verbatim}
-The optional argument to \cs{defaultfontfeatures} must exactly match that requested by the font loading command (\verb|\setmainfont|, etc.) --- in particular note that spaces are significant here, so |\setmainfont{MyCharis}| will not `see' the default font feature setting within the \texttt{.fontspec} file.
-
-Finally, note that options for individual font faces can also be defined in this way.
-To continue the example above, here we colour the different faces:
-\begin{Verbatim}
- \defaultfontfeatures[CharisSILR]{Color=blue}
- \defaultfontfeatures[CharisSILB]{Color=red}
-\end{Verbatim}
-Such configuration lines could be stored either inline inside \texttt{My Charis.fontspec}
-or within their own \texttt{.fontspec} files; in this way, \pkg{fontspec} is designed to
-handle `nested' configuration options.
-
-Where \cs{defaultfontfeatures} is being used to specify font faces by a custom name,
-the \feat{Font} feature is used to set the filename of the font face. For example:
-\begin{Verbatim}
- \defaultfontfeatures[charis]
- {
- UprightFont = charis-regular,
- % <other desired options for all font faces in the family>
- }
-
- \defaultfontfeatures[charis-regular]
- {
- Font = CharisSILR
- % <other desired options just for the `upright' font>
- }
-\end{Verbatim}
-The \pkg{fontspec} interface here is designed to be flexible to accomodate a variety
-of use cases; there is more than one way to achieve the same outcome when font faces are
-collected together into a larger font family.
-
-
-\subsection{Querying whether a font `exists'}
-
-\cmdbox{
- \CMD{\string\IfFontExistsTF}\marg{font name}\marg{true branch}\marg{false branch}
-}
-
-The conditional \cs{IfFontExistsTF} is provided to test whether the \meta{font name} exists or is loadable.
-If it is, the \meta{true branch} code is executed; otherwise, the \meta{false branch} code is.
-
-This command can be slow since the engine may resort to scanning the filesystem for a missing font.
-Nonetheless, it has been a popular request for users who wish to define `fallback fonts' for their documents for greater portability.
-
-In this command, the syntax for the \meta{font name} is a restricted/simplified version of the font loading syntax used for \cs{fontspec} and so on.
-Fonts to be loaded by filename are detected by the presence of an appropriate extension (|.otf|, etc.), and paths should be included inline.
-E.g.:
-\begin{Verbatim}
- \IfFontExistsTF{cmr10}{T}{F}
- \IfFontExistsTF{Times New Roman}{T}{F}
- \IfFontExistsTF{texgyrepagella-regular.otf}{T}{F}
- \IfFontExistsTF{/Users/will/Library/Fonts/CODE2000.TTF}{T}{F}
-\end{Verbatim}
-
-The \cs{IfFontExistsTF} command is a synonym for the programming interface function \cs{fontspec_font_if_exist:nTF} (\vref{sec:api}).
-
-
-
-\section{Commands to select font families}
-
-For cases when a specific font with a specific
-feature set is going to be re-used many times in a document, it is inefficient
-to keep calling \cs{fontspec} for every use. While the \cs{fontspec} command does not define
-a new font instance after the first call, the feature options must still be
-parsed and processed.
-
-For this reason, new commands can be created for loading a particular font
-family with the \cmd\newfontfamily\ command and variants,
-outlined in \vref{sec:main-cmd} and demonstrated in \exref{nff}.
-This macro should be used to create commands that would be used in
-the same way as \cmd\rmfamily, for example.
-If you would like to create a command that only changes the font
-inside its argument (i.e., the same behaviour as \cs{emph}) define it using regular \LaTeX\
-commands:
-\begin{Verbatim}
- \newcommand\textnote[1]{{\notefont #1}}
- \textnote{This is a note.}
-\end{Verbatim}
-Note that the double braces are intentional; the inner pair is used to
-delimit the scope of the font change.
-
-\begin{Lexample}{nff}{Defining new font families.}
- \newfontfamily\notefont{Kurier}
- \notefont This is a \emph{note}.
-\end{Lexample}
-
-\emph{Comment for advanced users:}
-The commands defined by \cs{newfontfamily} (and \cs{newfontface}; see next section) include
-their encoding information, so even if the document is set to use a
-legacy \TeX\ encoding, such commands will still work correctly. For example,
-\begin{Verbatim}
-\documentclass{article}
-\usepackage{fontspec}
-\newfontfamily\unicodefont{Lucida Grande}
-\usepackage{mathpazo}
-\usepackage[T1]{fontenc}
-\begin{document}
-A legacy \TeX\ font. {\unicodefont A unicode font.}
-\end{document}
-\end{Verbatim}
-
-
-\section{Commands to select single font faces}
-
-\cmdbox{%
- \CMD{\string\newfontface}\meta{cmd}\marg{font}\oarg{font features}\\
- \CMD{\string\setfontface}{\color[gray]{0.5}\meta{cmd}\marg{font}\oarg{font features}}\\
- \CMD{\string\renewfontface}{\color[gray]{0.5}\meta{cmd}\marg{font}\oarg{font features}}\\
- \CMD{\string\providefontface}{\color[gray]{0.5}\meta{cmd}\marg{font}\oarg{font features}}
-}
-
-Sometimes only a specific font face is desired, without accompanying italic or bold variants
-being automatically selected.
-This is common when selecting a fancy italic font, say, that has swash features unavailable
-in the upright forms. \cmd\newfontface\ is used for this purpose, shown
-in \exref{nfface}, which is repeated in \vref{sec:contextuals}.
-
-\begin{Xexample}{nfface}{Defining a single font face.}
- \newfontface\fancy{Hoefler Text Italic}%
- [Contextuals={WordInitial,WordFinal}]
- \fancy where is all the vegemite
- % \emph, \textbf, etc., all don't work
-\end{Xexample}
-
-
-\subsection{More control over font shape selection}
-\label{sec:bfitfonts}
-
-\cmdbox{
- \feat{BoldFont} = \meta{font name} \\
- \feat{ItalicFont} = \meta{font name} \\
- \feat{~BoldItalicFont} = \meta{font name} \\
- \feat{SlantedFont} = \meta{font name} \\
- \feat{BoldSlantedFont} = \meta{font name} \\
- \feat{SmallCapsFont} = \meta{font name} \\
- \feat{UprightFont} = \meta{font name}
-}
-
-The automatic bold, italic, and bold italic font selections will not be
-adequate for the needs of every font: while some fonts mayn't even
-have bold or italic shapes, in which case a skilled (or lucky)
-designer may be able to chose well-matching accompanying shapes from
-a different font altogether, others can have a range of bold and
-italic fonts to chose among. The \feat{BoldFont} and
-\feat{ItalicFont} features are provided for these situations. If only
-one of these is used, the bold italic font is requested as the
-default from the \emph{new} font. See \exref{bff}.
-
-\begin{Xexample}{bff}{Explicit selection of the bold font.}
- \fontspec{Helvetica Neue UltraLight}%
- [BoldFont={Helvetica Neue}]
- Helvetica Neue UltraLight \\
- {\itshape Helvetica Neue UltraLight Italic} \\
- {\bfseries Helvetica Neue } \\
- {\bfseries\itshape Helvetica Neue Italic} \\
-\end{Xexample}
-
-If a bold italic shape is not defined, or you want to specify
-\emph{both} custom bold and italic shapes, the \feat{BoldItalicFont}
-feature is provided.
-
-
-
-\subsubsection{Small caps and slanted font shapes}
-
-When a font family has both slanted \emph{and} italic shapes, these may be specified separately using the analogous features \feat{SlantedFont} and \feat{BoldSlantedFont}.
-Without these, however, the \LaTeX\ font switches for slanted (\cs{textsl}, \cs{slshape}) will default to the italic shape.
-
-For modern OpenType fonts, small caps glyphs are included within a fontface and \pkg{fontspec} will automatically detect them
-for use with the \cs{textsc} and \cs{scshape} commands.
-Pre-OpenType, it was common for font families to be distributed with small caps glyphs in separate fonts, due to the limitations on the number of glyphs allowed in the PostScript Type~1 format.
-Such fonts may be used by declaring the \feat{SmallCapsFont} of the family you are specifying:
-\begin{Verbatim}
- \setmainfont{Minion MM Roman}[
- SmallCapsFont={Minion MM Small Caps & Oldstyle Figures}
- ]
- Roman 123 \\ \textsc{Small caps 456}
-\end{Verbatim}
-In fact, this example is overly simplistic since it does not cover the other shapes in a font family.
-You should specify the small caps font for each individual bold and italic shape as in
-\begin{Verbatim}
- \setmainfont{ <upright> }[
- UprightFeatures = { SmallCapsFont={ <sc> } } ,
- BoldFeatures = { SmallCapsFont={ <bf sc> } } ,
- ItalicFeatures = { SmallCapsFont={ <it sc> } } ,
- BoldItalicFeatures = { SmallCapsFont={ <bf it sc> } } ,
- ]
- Roman 123 \\ \textsc{Small caps 456}
-\end{Verbatim}
-For most modern fonts that have small caps as a font feature, this level of
-control isn't generally necessary.
-
-All of the bold, italic, and small caps fonts can be loaded with different
-font features from the main font. See \ref{sec:bfit-feat} for details.
-When an OpenType font is selected for |SmallCapsFont|, the small caps
-font feature is \emph{not} automatically enabled. In this case, users
-should write instead, if necessary,
-\begin{Verbatim}
- \setmainfont{...}[
- SmallCapsFont={...},
- SmallCapsFeatures={Letters=SmallCaps},
- ]
-\end{Verbatim}
-
-\subsection{Specifically choosing the \NFSS\ family}
-
-In \LaTeX's \NFSS, font families are defined with names such as `\texttt{ppl}' (Palatino), `\texttt{lmr}' (Latin Modern Roman), and so on, which are selected with the \cs{fontfamily} command:
-\begin{Verbatim}
- \fontfamily{ppl}\selectfont
-\end{Verbatim}
-In \pkg{fontspec}, the family names are auto-generated based on the fontname of the font; for example, writing |\fontspec{Times New Roman}| for the first time would generate an internal font family name of `\texttt{TimesNewRoman(1)}'.
-Please note that you should not rely on the name that is generated.
-
-In certain cases it is desirable to be able to choose this internal font family name so it can be re-used elsewhere for interacting with other packages that use the \LaTeX's font selection interface; an example might be
-\begin{Verbatim}
- \usepackage{fancyvrb}
- \fvset{fontfamily=myverbatimfont}
-\end{Verbatim}
-To select a font for use in this way in \pkg{fontspec} use the \feat{NFSSFamily} feature:\footnote{Thanks to Luca Fascione for the example and motivation for finally implementing this feature.}
-\begin{Verbatim}
- \newfontfamily\verbatimfont{Inconsolata}[NFSSFamily=myverbatimfont]
-\end{Verbatim}
-It is then possible to write commands such as:
-\begin{Verbatim}
- \fontfamily{myverbatimfont}\selectfont
-\end{Verbatim}
-which is essentially the same as writing |\verbatimfont|, or to go back to the orginal example:
-\begin{Verbatim}
- \fvset{fontfamily=myverbatimfont}
-\end{Verbatim}
-Only use this feature when necessary; the in-built font switching commands that \pkg{fontspec} generates (such as |\verbatimfont| in the example above) are recommended in all other cases.
-
-If you don't wish to explicitly set the \NFSS\ family but you would like to know what it is, an alternative mechanism for package writers is introduced as part of the \pkg{fontspec} programming interface; see the function \cs{fontspec_set_family:Nnn} for details (\vref{sec:api}).
-
-\subsection{Choosing additional \NFSS\ font faces}
-
-\LaTeX's font selection scheme (\NFSS) is more flexible than the \pkg{fontspec} interface discussed up until this point.
-It assigns to each font face a \emph{family} (discussed above), a \emph{series} such as bold or light or condensed, and a \emph{shape} such as italic or slanted or small caps.
-The \pkg{fontspec} features such as \feat{BoldFont} and so on all assign faces for the default series and shapes of the \NFSS, but it's not uncommon to have font families that have multiple weights and shapes and so on.
-
-If you set up a regular font family with the `standard four' (upright, bold, italic, and bold italic) shapes and then want to use, say, a light font for a certain document element, many users will be perfectly happy to use \cs{newfontface}\cs{\meta{switch}} and use the resulting font \cs{\meta{switch}}.
-In other cases, however, it is more convenient or even necessary to load additional fonts using additional \NFSS\ specifiers.
-
-\cmdbox{
- \texttt{FontFace = }\marg{series}\marg{shape}
- \texttt{\char`\{} \texttt{Font = }\meta{font name} \texttt, \meta{features} \texttt{\char`\}} \\
- \texttt{FontFace = }\marg{series}\marg{shape}\marg{font name}
-}
-
-The font thus specified will inherit the font features of the main font, with optional additional \meta{features} as requested.
-(Note that the optional \marg{features} argument is still surrounded with curly braces.)
-Multiple \feat{FontFace} commands may be used in a single declaration to specify multiple fonts.
-As an example:
-\begin{Verbatim}
- \setmainfont{font1.otf}[
- FontFace = {c}{\shapedefault}{ font2.otf } ,
- FontFace = {c}{m}{ Font = font3.otf , Color = red }
- ]
-\end{Verbatim}
-Writing |\fontseries{c}\selectfont| will result in |font2| being selected, which then followed by |\fontshape{m}\selectfont| will result in |font3| being selected (in red).
-A font face that is defined in terms of a different series but an upright shape (|\shapedefault|, as shown above) will attempt to find a matching small caps feature and define that face as well.
-Conversely, a font face defined in terms of a non-standard font shape will not.
-
-There are some standards for choosing shape and series codes; the \LaTeXe\ font selection guide\footnote{\texttt{texdoc fntguide}} has a comprehensive listing.
-
-The \feat{FontFace} command also interacts properly with the \feat{SizeFeatures} command as follows: (nonsense set of font selection choices)
-\begin{Verbatim}
- FontFace = {c}{n}{
- Font = Times ,
- SizeFeatures = {
- { Size = -10 , Font = Georgia } ,
- { Size = 10-15} , % default "Font = Times"
- { Size = 15- , Font = Cochin } ,
- },
- },
-\end{Verbatim}
-Note that if the first \feat{Font} feature is omitted then each size needs its own inner \feat{Font} declaration.
-
-\subsubsection{An example for \cs{strong}}
-\label{sec:strong-example}
-
-If you wanted to set up a font family to allow nesting of the \cs{strong}
-to easily access increasing font weights, you might use a declaration along the following lines:
-\begin{Verbatim}
-\setmonofont{SourceCodePro}[
- Extension = .otf ,
- UprightFont = *-Light ,
- BoldFont = *-Regular ,
- FontFace = {k}{n}{*-Black} ,
-]
-\strongfontdeclare{\bfseries,\fontseries{k}\selectfont}
-\end{Verbatim}
-
-Further `syntactic sugar' is planned to make this process somewhat easier.
-
-
-\subsection{Math(s) fonts}
-
-When \cmd\setmainfont, \cmd\setsansfont\ and \cmd\setmonofont\ are used in the
-preamble, they also define the fonts to be used in maths mode inside the
-\cmd\mathrm-type commands. This only occurs in the preamble because \LaTeX\
-freezes the maths fonts after this stage of the processing. The \pkg{fontspec}
-package must also be loaded after any maths font packages (\eg, \pkg{euler})
-to be successful. (Actually, it is \emph{only} \pkg{euler} that is the
-problem.\note{Speaking of \pkg{euler}, if you want to use its
-\texttt{[mathbf]} option, it won't work, and you'll need to put this after
-\pkg{fontspec} is loaded instead:
-\ttfamily\cmd\AtBeginDocument\char`\{\cmd\DeclareMathAlphabet\cmd\mathbf\char`\{U\char`\}\char`\{eur\char`\}\char`\{b\char`\}\char`\{n\char`\}\char`\}})
-
-Note that \pkg{fontspec} will not change the font for general mathematics;
-only the upright and bold shapes will be affected.
-To change the font used for the mathematical symbols, see either the
-\pkg{mathspec} package or the \pkg{unicode-math} package.
-
-Note that you may find that loading some maths packages won't be as smooth as
-you expect since \pkg{fontspec} (and \XeTeX\ in general) breaks many of the
-assumptions of \TeX\ as to where maths characters and accents can be found.
-Contact me if you have troubles, but I can't guarantee to be able to fix any
-incompatibilities. The Lucida and Euler maths fonts should be fine; for all
-others keep an eye out for problems.
-
-\cmdbox{
- \cmd{\setmathrm}\marg{font name}\oarg{font features} \\
- \cmd{\setmathsf}\marg{font name}\oarg{font features} \\
- \cmd{\setmathtt}\marg{font name}\oarg{font features} \\
- \cmd{\setboldmathrm}\marg{font name}\oarg{font features}
-}
-
-However, the default text fonts may not necessarily be the ones you
-wish to use when typesetting maths (especially with the use of fancy
-ligatures and so on). For this reason, you may optionally use the
-commands above (in the same way as our other
-\cmd\fontspec-like commands) to explicitly state which fonts to use
-inside such commands as \cmd\mathrm. Additionally, the
-\cmd\setboldmathrm\ command allows you define the font used for
-\cmd\mathrm\ when in bold maths mode (which is activated with, among
-others, \cmd\boldmath).
-
-For example, if you were using Optima with the Euler maths font, you
-might have this in your preamble:
-\begin{Verbatim}
- \usepackage{mathpazo}
- \usepackage{fontspec}
- \setmainfont{Optima}
- \setmathrm{Optima}
- \setboldmathrm[BoldFont={Optima ExtraBlack}]{Optima Bold}
-\end{Verbatim}
-These commands are compatible with the \pkg{unicode-math} package.
-Having said that, \pkg{unicode-math} also defines a more general way of defining fonts to use in maths mode, so you can ignore this subsection if you're already using that package.
-
-
-\section{Miscellaneous font selecting details}
-
-\paragraph{The optional argument --- from v2.4}
-For the first decade of \pkg{fontspec}'s life, optional font features were selected with a bracketed argument before the font name, as in:
-\begin{Verbatim}
- \setmainfont[
- lots and lots ,
- and more and more ,
- an excessive number really ,
- of font features could go here
- ]{myfont.otf}
-\end{Verbatim}
-This always looked like ugly syntax to me, because the most important detail --- the name of the font --- was tucked away at the end.
-The order of these arguments has now been reversed:
-\begin{Verbatim}
- \setmainfont{myfont.otf}[
- lots and lots ,
- and more and more ,
- an excessive number really ,
- of font features could go here
- ]
-\end{Verbatim}
-I hope this doesn't cause any problems.
-\begin{enumerate}
- \item Backwards compatibility has been preserved, so either input method works.
- \item In fact, you can write
- \begin{Verbatim}
- \fontspec[Ligatures=Rare]{myfont.otf}[Color=red]
- \end{Verbatim}
- if you really felt like it and both sets of features would be applied.
-
-\end{enumerate}
-
-\paragraph{Spaces}
-\cmd\fontspec\ and \cmd\addfontfeatures\ ignore trailing spaces as
-if it were a `naked' control sequence; \eg, `|M. \fontspec{...} N|' and
-`|M. \fontspec{...}N|' are the same.
-
-\end{document}
-
-% /©
-% ------------------------------------------------
-% The FONTSPEC package <wspr.io/fontspec>
-% ------------------------------------------------
-% Copyright 2004-2020 Will Robertson, LPPL "maintainer"
-% Copyright 2009-2015 Khaled Hosny
-% Copyright 2013 Philipp Gesang
-% Copyright 2013-2016 Joseph Wright
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% ©/
diff --git a/macros/latex/contrib/fontspec/fontspec-doc-intro.tex b/macros/latex/contrib/fontspec/fontspec-doc-intro.tex
deleted file mode 100644
index 7f32adb009..0000000000
--- a/macros/latex/contrib/fontspec/fontspec-doc-intro.tex
+++ /dev/null
@@ -1,196 +0,0 @@
-%%^^A%% fontspec-doc-intro.tex -- part of FONTSPEC <wspr.io/fontspec>
-
-\documentclass[a4paper]{l3doc}
-\usepackage{fontspec-doc-style}
-\showexamplesfalse
-\begin{document}
-
-\part{Getting started}
-
-\section{History}
-
-This package began life as a \LaTeX\ interface to select system-installed
-\MacOSX\ fonts in \name{Jonathan Kew}'s \XeTeX, the first widely-used
-Unicode extension to \TeX. Over time, \XeTeX\ was extended to support OpenType
-fonts and then was ported into a cross-platform program to run also on Windows
-and Linux.
-
-More recently, \LuaTeX\ is fast becoming the \TeX\ engine of the day; it
-supports Unicode encodings and OpenType fonts and opens up the internals of
-\TeX\ via the Lua programming language. Hans Hagen's Con\TeX t Mk.\,IV is a
-re-write of his powerful typesetting system, taking full advantage of
-\LuaTeX's features including font support; a kernel of his work in this area
-has been extracted to be useful for other \TeX\ macro systems as well, and
-this has enabled \pkg{fontspec} to be adapted for \LaTeX\ when run with the
-\LuaTeX\ engine.
-
-
-
-\section{Introduction}
-
-The \pkg{fontspec} package allows users of either \XeTeX\ or \LuaTeX\ to
-load OpenType fonts in a \LaTeX\ document. No font installation is necessary,
-and font features can be selected and used as desired throughout the document.
-
-Without \pkg{fontspec}, it is necessary to write cumbersome font definition
-files for \LaTeX, since \LaTeX's font selection scheme (known as the
-`\textsc{nfss}') has a lot going on behind the scenes to allow easy
-commands like \cmd\emph\ or \cmd\bfseries. With an uncountable number of
-fonts now available for use, however, it becomes less desirable to have to
-write these font definition (|.fd|) files for every font one wishes to use.
-
-Because \pkg{fontspec} is designed to work in a variety of modes, this
-user documentation is split into separate sections that are designed to be
-relatively independent. Nonetheless, the basic functionality all behaves in
-the same way, so previous users of \pkg{fontspec} under \XeTeX\ should have
-little or no difficulty switching over to \LuaTeX.
-
-This manual can get rather in-depth, as there are a lot of details
-to cover. See the documents \path{fontspec-example.tex} for a complete minimal example
-to get started quickly.
-
-
-\subsection{Acknowledgements}
-
-This package could not have been possible without the early and continued support
-the author of \XeTeX, Jonathan Kew. When I started this package, he steered
-me many times in the right direction.
-
-I've had great
-feedback over the years on feature requests, documentation queries, bug reports, font suggestions, and so on from lots of people all around the world.
-Many thanks to you all.
-
-Thanks to David Perry and Markus B\"ohning for numerous documentation
-improvements and David Perry again for contributing the text for one of the
-sections of this manual.
-
-Special thanks to Khaled Hosny, who was the driving force behind the support for \LuaLaTeX, ultimately leading to version 2.0 of the package.
-
-
-
-\section{Package loading and options}
-
-For basic use, no package options are required:
-\begin{Verbatim}
- \usepackage{fontspec}
-\end{Verbatim}
-Package options will be introduced below; some preliminary details are discussed first.
-
-
-\subsection{Font encodings}
-
-The (default) \texttt{tuenc} package option switches the \textsc{nfss} font encoding to \texttt{TU}.
-\texttt{TU} is a new Unicode font encoding, intended for both \XeTeX\ and \LuaTeX\ engines, and automatically contains support for symbols covered by \LaTeX's traditional \texttt{T1} and \texttt{TS1} font encodings (for example, |\%|, |\textbullet|, |\"u|, and so on).
-Some additional features are provided by \pkg{fontspec} to customise some encoding details; see Part~\vref{part:enc} for further details.
-
-Pre-2017 behaviour can be achieved with the \texttt{euenc} package option.
-This selects the \texttt{EU1} or \texttt{EU2} encoding (\XeTeX/\LuaTeX, resp.) and loads the \pkg{xunicode} package for symbol support.
-Package authors and users who have referred explicitly to the encoding names \texttt{EU1} or \texttt{EU2} should update their code or documents.
-(See internal variable names described in \vref{sec:api} for how to do this properly.)
-
-
-\subsection{Maths fonts adjustments}
-By default, \pkg{fontspec} adjusts \LaTeX's default maths setup in order to maintain the correct Computer Modern symbols when the roman font changes.
-However, it will attempt to avoid doing this if another maths font package is loaded (such as \pkg{mathpazo} or the \pkg{unicode-math} package).
-
-If you find that \pkg{fontspec} is incorrectly changing the maths font when it shouldn't be, apply the |no-math| package option to manually suppress its behaviour here.
-
-
-\subsection{Configuration}
-\label{sec:config}
-
-If you wish to customise any part of the
-\pkg{fontspec} interface, this should be done by creating your own
-\texttt{fontspec.cfg} file,
-which will be automatically loaded if it is found by \XeTeX\ or \LuaTeX.
-A |fontspec.cfg| file is distributed with \pkg{fontspec} with a small number of defaults set up within it.
-
-To customise \pkg{fontspec} to your liking, use the standard |.cfg| file as a starting point or write your own from scratch, then either place it in the same folder as the main document for isolated cases, or in a location
-that \XeTeX\ or \LuaTeX\ searches by default; \eg\ in Mac\TeX: \path{~/Library/texmf/tex/latex/}.
-
-The package option |no-config| will suppress the loading of the |fontspec.cfg| file under all circumstances.
-
-
-\subsection{Warnings}
-\label{sec:quiet-warnings}
-
-This package can give some warnings that can be harmless if you know what
-you're doing. Use the |quiet| package option to write these warnings to the
-transcript (\texttt{.log}) file instead.
-
-Use the |silent| package option to completely suppress these warnings if you
-don't even want the |.log| file cluttered up.
-
-
-
-\section{Interaction with \LaTeXe\ and other packages}
-
-This section documents some areas of adjustment that \pkg{fontspec} makes
-to improve default behaviour with \LaTeXe\ and third-party packages.
-
-
-
-\subsection{Commands for old-style and lining numbers}
-
-\DescribeMacro{\oldstylenums}
-\DescribeMacro{\liningnums}
-\LaTeX's definition of \cs{oldstylenums} relies on strange font encodings.
-We provide a \pkg{fontspec}-compatible alternative and while we're at it
-also throw in the reverse option as well. Use \cs{oldstylenums}\marg{text}
-to explicitly use old-style (or lowercase) numbers in \meta{text}, and
-the reverse for \cs{liningnums}\marg{text}.
-
-
-\subsection{Italic small caps}
-
-Support now provided by \LaTeXe\ in 2020.
-
-
-\subsection{Emphasis and nested emphasis}
-
-Support now provided by \LaTeXe\ in 2020.
-
-
-\subsection{Strong emphasis}
-
-\DescribeMacro{\strong}
-\DescribeMacro{\strongenv}
-The \cs{strong} macro is used analogously to \cs{emph} but produces variations in weight.
-If you need it in environment form, use |\begin{strongenv}...\end{strongenv}|.
-
-As with emphasis, this font-switching command is intended to move through a range
-of font weights. For example, if the fonts are set up correctly it allows usage such as
-|\strong{...\strong{...}}| in which each nested \cs{strong} macro increases the
-weight of the font.
-
-\DescribeMacro{\strongfontdeclare}
-Currently this feature set is somewhat experimental and there is no syntactic sugar
-to easily define a range of font weights using \pkg{fontspec} commands.
-Use, say, the following to define first bold and then black (|k|) font faces for \cs{strong}:
-\begin{Verbatim}
- \strongfontdeclare{\bfseries,\fontseries{k}\selectfont}
-\end{Verbatim}
-
-\DescribeMacro{\strongreset}
-If too many levels of \cs{strong} are reached, \cs{strongreset} is inserted.
-By default this is a no-op and the font will simply remain the same.
-Use \cs{renewcommand}\cs{strongreset}|{\mdseries}| to start again from the beginning if desired.
-
-An example for setting up a font family for use with \cs{strong} is discussed in \vref{sec:strong-example}.
-
-\end{document}
-
-% /©
-% ------------------------------------------------
-% The FONTSPEC package <wspr.io/fontspec>
-% ------------------------------------------------
-% Copyright 2004-2020 Will Robertson, LPPL "maintainer"
-% Copyright 2009-2015 Khaled Hosny
-% Copyright 2013 Philipp Gesang
-% Copyright 2013-2016 Joseph Wright
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% ©/
diff --git a/macros/latex/contrib/fontspec/fontspec-doc-luatex.tex b/macros/latex/contrib/fontspec/fontspec-doc-luatex.tex
deleted file mode 100644
index 7365160b49..0000000000
--- a/macros/latex/contrib/fontspec/fontspec-doc-luatex.tex
+++ /dev/null
@@ -1,94 +0,0 @@
-%%^^A%% fontspec-doc-luatex.tex -- part of FONTSPEC <wspr.io/fontspec>
-
-\documentclass[a4paper]{l3doc}
-\usepackage{fontspec-doc-style}
-\showexamplesfalse
-\begin{document}
-
-\part{\LuaTeX-only font features}
-\label{sec:luatex-features}
-
-\section{Different font technologies and shapers}
-\label{sec:renderer-luatex}
-
-\LuaTeX\ does not directly support any font rendering technologies out of the box, it
-requires additional functionality to be added to properly support and control technologies such as OpenType.
-
-Using the \feat{Renderer} feature, there are a number of options that \pkg{fontspec} can pass to the engine to control which font technology is being used.
-Pre-2019, there were two options provided by \pkg{luaotfload} that generally did not require user intervention.
-
-\begin{itemize}
-\item \feat{Renderer} = \opt{Node} : the default `mode' for typesetting OpenType fonts.
-\item \feat{Renderer} = \opt{Base} : a simplified mode useful only in a limited number of situations such as mathematics typesetting.
-\end{itemize}
-
-From 2019 the possibility of using the Harfbuzz text shaping engine within \LuaTeX\ has
-been developed by Khaled Hosny. When running a suitable \LuaTeX\ engine with Harfbuzz support, \pkg{fontspec} provides the following options:
-
-\begin{itemize}
-\item \feat{Renderer} = \opt{Harfbuzz} : use the Harfbuzz engine without an explicit `shaper'.
-\item \feat{Renderer} = \opt{OpenType} : use the Harfbuzz engine with the OpenType shaper.
-\item \feat{Renderer} = \opt{AAT} : use the Harfbuzz engine with the AAT shaper.
-\item \feat{Renderer} = \opt{Graphite} : use the Harfbuzz engine with the Graphite shaper.
-\item \feat{Renderer} = \meta{foo} : use the Harfbuzz engine with the \meta{foo} shaper.
-\end{itemize}
-
-Support for the Harfbuzz renderer is preliminary and may be improved over time.
-Please treat the interface for Harfbuzz fonts as subject to change.
-
-
-\section{Custom font features}
-
-\LuaTeX, via the \pkg{luaotfload} package, allows the definition and re-definition of custom OpenType features for a selected font. This facility is particularly useful to implement custom substitutions or to disable unwanted but not all ligatures.
-
-Figure~\ref{fig:featurefile} shows an minimal example of this type of functionality.
-This example creates a new OpenType feature, \texttt{oneb}, which substitutes the glyph
-when typesetting `\texttt{1}' for the named glyph \texttt{one.ss01}. The glyph names
-are font specific and can be interrogated with third-party software such as \emph{FontForge}.
-
-A third-party collection of additional examples are maintained in the repository `\texttt{fonts-in-luatex}'\footnote{\url{https://github.com/mewtant/fonts-in-luatex}}.
-These examples are intended to correct or adjust font features in a range of commercial fonts and provide a good introduction to some of the possibilities that \LuaTeX\ affords.
-
-Please refer to the \LuaTeX/\pkg{luaotfload} documentation for more details.
-
-\begin{figure}
-\caption{An example of custom font features.}
-\label{fig:featurefile}
-\hrule
-\begin{Verbatim}
-\documentclass{article}
-\usepackage{fontspec}
-\directlua{
- fonts.handlers.otf.addfeature {
- name = "oneb",
- type = "substitution",
- data = {
- ["1"] = "one.ss01",
- }
- }
-}
-\setmainfont{Vollkorn-Regular.otf}[RawFeature=+oneb]
-\begin{document}
-1234567890
-\end{document}
-\end{Verbatim}
-\hrule
-\end{figure}
-
-\end{document}
-
-% /©
-% ------------------------------------------------
-% The FONTSPEC package <wspr.io/fontspec>
-% ------------------------------------------------
-% Copyright 2004-2020 Will Robertson, LPPL "maintainer"
-% Copyright 2009-2015 Khaled Hosny
-% Copyright 2013 Philipp Gesang
-% Copyright 2013-2016 Joseph Wright
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% ©/
-
diff --git a/macros/latex/contrib/fontspec/fontspec-doc-opentype.tex b/macros/latex/contrib/fontspec/fontspec-doc-opentype.tex
deleted file mode 100644
index fb08645abb..0000000000
--- a/macros/latex/contrib/fontspec/fontspec-doc-opentype.tex
+++ /dev/null
@@ -1,1478 +0,0 @@
-%%^^A%% fontspec-doc-opentype.tex -- part of FONTSPEC <wspr.io/fontspec>
-
-
-\documentclass[a4paper]{l3doc}
-\usepackage{fontspec-doc-style}
-\showexamplesfalse
-\begin{document}
-
-\part{OpenType}
-\label{sec:opentype-features}
-
-\section{Introduction}
-\label{sec:opentype-features-intro}
-
-OpenType fonts (and other `smart' font technologies such as AAT and Graphite) can change the appearance of text in many different ways.
-These changes are referred to as font features.
-When the user applies a feature~--- for example, small capitals~--- to a run of text, the code inside the font makes appropriate substitutions and small capitals appear in place of lowercase letters.
-However, the use of such features does not affect the underlying text.
-In our small caps example, the lowercase letters are still stored in the document; only the appearance has been changed by the OpenType feature.
-This makes it possible to search and copy text without difficulty.
-If the user selected a different font that does not support small caps, the `plain' lowercase letters would appear instead.
-
-Some OpenType features are required to support particular scripts, and these features are often applied automatically.
-The Indic scripts, for example, often require that characters be reshaped and reordered after they are typed by the user, in order to display them in the traditional ways that readers expect.
-Other features can be applied to support a particular language.
-The Junicode font for medievalists uses by default the Old English shape of the letter thorn, while in modern Icelandic thorn has a more rounded shape.
-If a user tags some text as being in Icelandic, Junicode will automatically change to the Icelandic shape through an OpenType feature that localises the shapes of letters.
-
-There are a large group of OpenType features, designed to support high quality typography a multitude of languages and writing scripts.
-Examples of some font features have already been shown in previous sections; the complete set of OpenType font features supported by \pkg{fontspec} is described below in \ref{sec:ot-feat}.
-
-The OpenType specification provides four-letter codes (e.g., \texttt{smcp} for small capitals) for each feature. The four-letter codes are given below along with the \pkg{fontspec} names for various features, for the benefit of people who are already familiar with OpenType. You can ignore the codes if they don't mean anything to you.
-
-
-\subsection{How to select font features}
-
-Font features are selected by a series of \meta{feature}=\meta{option}
-selections. Features are (usually) grouped logically; for example, all
-font features relating to ligatures are accessed by writing \verb|Ligatures={...}| with the appropriate argument(s), which could be \texttt{TeX}, \texttt{Rare}, etc., as shown below in \ref{sec:ot-feat-liga}.
-
-Multiple options may be given to
-any feature that accepts non-numerical input, although doing so will
-not always work. Some options will override others in generally
-obvious ways; \Verb|Numbers={OldStyle,Lining}| doesn't make much
-sense because the two options are mutually exclusive, and \XeTeX\
-will simply use the last option that is specified (in this case
-using \opt{Lining} over \opt{OldStyle}).
-
-If a feature or an option is requested that the font does not have,
-a warning is given in the console output. As mentioned in \vref{sec:quiet-warnings}
-these warnings can be suppressed by selecting the \texttt{[quiet]} package option.
-
-\subsection{How do I know what font features are supported by my fonts?}
-
-Although I've long desired to have a feature within \pkg{fontspec} to display the OpenType features within a font, it's never been high on my priority list.
-One reason for that is the existence of the document |opentype-info.tex|, which is available on \textsc{ctan} or typing |kpsewhich opentype-info.tex| in a Terminal window.
-Make a copy of this file and place it somewhere convenient.
-Then open it in your regular \TeX\ editor and change the font name to the font you'd like to query; after running through plain \XeTeX, the output \textsc{pdf} will look something like this:
-
-\begin{framed}
-
-%%% From OpenType-info.tex %%%
-\DeleteShortVerb\"
-\def\myfontname{[Asana-Math.otf]}
-\font\testfont="\myfontname/OT" at 10pt\relax
-
-\rightskip=0pt plus 1fil
-
-\font\titlefont=ec-lmssbx10 at 12pt
-\font\tenrm=ec-lmss10 at 9pt \tenrm
-\font\tentt=ec-lmtt10 at 9pt
-
-\def\fourcharcode#1{\begingroup
- \count0=#1\count1=\count0
- \ifnum\count0=0
- $\langle$default$\rangle$%
- \else
- \tentt
- '%
- \divide\count0 by "1000000
- \char\count0
- \multiply\count0 by "1000000
- \advance\count1 by -\count0
- \count0=\count1
- \divide\count0 by "10000
- \char\count0
- \multiply\count0 by "10000
- \advance\count1 by -\count0
- \count0=\count1
- \divide\count0 by "100
- \char\count0
- \multiply\count0 by "100
- \advance\count1 by -\count0
- \ifnum\count1=32 \ \else \char\count1 \fi
- '%
- \fi
- \endgroup
-}
-
-\newcount\scriptcount
-\newcount\scriptindex
-\newcount\scripttag
-\newcount\langcount
-\newcount\langindex
-\newcount\langtag
-\newcount\featurecount
-\newcount\featureindex
-\newcount\featuretag
-
-\leftline{\titlefont OpenType Layout features found in `\myfontname'}
-\nobreak
-
-\scriptcount=\XeTeXOTcountscripts\testfont
-\ifnum\scriptcount=0 \noindent None\par\fi
-
-\loop
- \ifnum\scriptindex<\scriptcount
- \smallskip
- \scripttag=\XeTeXOTscripttag\testfont\scriptindex
- \noindent script = \fourcharcode{\scripttag}\endgraf\nobreak
- \langcount=\XeTeXOTcountlanguages\testfont\scripttag
- \advance\langcount by 1 % one extra to get the default language system
- {\loop
- \langtag=\XeTeXOTlanguagetag\testfont\scripttag\langindex
- \indent language = \fourcharcode{\langtag}\endgraf\nobreak
- \featurecount=\XeTeXOTcountfeatures\testfont\scripttag\langtag
- {\indent\indent \hangindent=3\parindent \hangafter=1 features = \loop
- \featuretag=\XeTeXOTfeaturetag\testfont\scripttag\langtag\featureindex
- \fourcharcode{\featuretag}
- \advance\featureindex by 1
- \ifnum\featureindex<\featurecount \repeat\endgraf}
- \advance\langindex by 1
- \ifnum\langindex<\langcount \medskip \repeat}
- \advance\scriptindex by 1
-\repeat
-\end{framed}
-
-\noindent I intentionally picked a font above that by design contains few font features; `regular' text fonts such as Latin Modern Roman contain many more, and I didn't want to clutter up the document too much.
-After finding the scripts, languages, and features contained within the font, you'll then need to cross-check the OpenType tags with the `logical' names used by \pkg{fontspec}.
-
-\paragraph{otfinfo}
-Alternatively, and more simply, you can use the command line tool |otfinfo|, which is distributed with \TeX{}Live.
-Simply type in a Terminal window, say:
-\begin{Verbatim}
- otfinfo -f `kpsewhich lmromandunh10-oblique.otf`
-\end{Verbatim}
-which results in:
-\begin{Verbatim}[frame=single]
-aalt Access All Alternates
-cpsp Capital Spacing
-dlig Discretionary Ligatures
-frac Fractions
-kern Kerning
-liga Standard Ligatures
-lnum Lining Figures
-onum Oldstyle Figures
-pnum Proportional Figures
-size Optical Size
-tnum Tabular Figures
-zero Slashed Zero
-\end{Verbatim}
-
-
-\section{OpenType scripts and languages}\label{sec:ot}
-
-Fonts that include glyphs for various scripts and languages may contain different font features for the different character sets and languages they support, and different font features may behave differently depending on the script or language chosen.
-When multilingual fonts are used, it is important to select which language
-they are being used for, and more importantly what script is being used.
-
-The `script' refers to the alphabet in use; for example, both English
-and French use the Latin script. Similarly, the Arabic script can be used
-to write in both the Arabic and Persian languages.
-
-The
-\feat{Script} and \feat{Language} features are used to designate this information. The possible options are
-tabulated in \vref{tab:ot-scpt} and \vref{tab:ot-lang},
-respectively. When a script or language is requested that is not
-supported by the current font, a warning is printed in the console output.
-See \vref{sec:newscriptlang} for methods to create new \feat{Script} or \feat{Language}
-options if required.
-
-Because these font features can
-change which features are able to be selected for the font, the \feat{Script} and \feat{Language}
-settings are automatically selected
-by \pkg{fontspec} before all others, and, if \XeTeX\ is being used, will
-specifically select the \opt{OpenType}
-renderer for this font, as described in \vref{sec:renderer-xetex}.
-
-OpenType fonts can make available different font features depending on the Script and
-Language chosen.
-In addition, these settings can also set up their own font behaviour
-and glyph selection (one example is differences in style between some of the letters in the
-alphabet used for Bulgarian, Serbian, and Russian).
-The \pkg{fontspec} feature \feat{LocalForms} \texttt{=} \opt{Off} will disable some of
-these substitutions if desired for some reason.
-It is important to note that \feat{LocalForms} \texttt{=} \opt{On} is a default not of \pkg{fontspec}
-but of the underlying font shaping engines in both \XeTeX\ and \LuaTeX/\pkg{otfload}.
-
-
-\subsection{\feat{Script} and \feat{Language} examples}
-
-In the examples shown in \exref{script-lang},
-the Code2000 font\note{\url{http://www.code2000.net/}}
-is used to typeset various input texts with and without the OpenType Script
-applied for various alphabets.
-The text is only rendered correctly in the second case;
-many examples of incorrect diacritic spacing as
-well as a lack of contextual ligatures and rearrangement can be
-seen.
-Thanks to \name{Jonathan Kew}, \name{Yves Codet} and
-\name{Gildas Hamel} for their contributions towards these examples.
-
-\begin{Xexample}[firstline=14,lastline=23]{script-lang}{An example of various Scripts and Languages.}
-\def\testfeature#1#2{%^^A
- \fontspec{\examplefont}#2 & \fontspec[#1]{\examplefont}#2\\[1ex]}
-\def \examplefont{CODE2000.TTF}
-\def \arabictext{العربي}
-\def \devanagaritext{हिन्दी}
-\def \bengalitext{লেখ}
-\def \gujaratitext{મર્યાદા-સૂચક નિવેદન}
-\def \malayalamtext{നമ്മുടെ പാരബര്യ}
-\def \gurmukhitext{ਆਦਿ ਸਚੁ ਜੁਗਾਦਿ ਸਚੁ}
-\def \tamiltext{தமிழ் தேடி}
-\def \hebrewtext{רִדְתָּֽהּ}
-\def \vietnamesetext{cấp số mỗi}
-\begin{tabular}{r@{\quad}l}
- \testfeature{Script=Arabic}{\arabictext}
- \testfeature{Script=Devanagari}{\devanagaritext}
- \testfeature{Script=Bengali}{\bengalitext}
- \testfeature{Script=Gujarati}{\gujaratitext}
- \testfeature{Script=Malayalam}{\malayalamtext}
- \testfeature{Script=Gurmukhi}{\gurmukhitext}
- \testfeature{Script=Tamil}{\tamiltext}
- \testfeature{Script=Hebrew}{\hebrewtext}
- \def\examplefont{DoulosSILR.ttf}
- \testfeature{Language=Vietnamese}{\vietnamesetext}
-\end{tabular}
-\end{Xexample}
-
-
-
-\begin{table}[!hbp]
- \caption{Defined \opt{Script}s for OpenType fonts. Aliased names are shown in adjacent positions marked with red pilcrows ({\sffamily\textcolor{red}{\P}}).}
- \label{tab:ot-scpt}
-\def\dup{\makebox[0pt][r]{\textcolor{red}{\P}}}
-\setlength\columnseprule{0pt}
- \hrule
- \begin{multicols}{4}\setlength\parindent{0pt}
- \sffamily\scriptsize
- Adlam \par
- Ahom \par
- Anatolian Hieroglyphs \par
- Arabic \par
- Armenian \par
- Avestan \par
- Balinese \par
- Bamum \par
- Bassa Vah \par
- Batak \par
- Bengali \par
- Bhaiksuki \par
- Bopomofo \par
- Brahmi \par
- Braille \par
- Buginese \par
- Buhid \par
- Byzantine Music \par
- Canadian Syllabics \par
- Carian \par
- Caucasian Albanian \par
- Chakma \par
- Cham \par
- Cherokee \par
- \dup CJK \par
- \dup CJK Ideographic \par
- Coptic \par
- Cypriot Syllabary \par
- Cyrillic \par
- Default \par
- Deseret \par
- Devanagari \par
- Duployan \par
- Egyptian Hieroglyphs \par
- Elbasan \par
- Ethiopic \par
- Georgian \par
- Glagolitic \par
- Gothic \par
- Grantha \par
- Greek \par
- Gujarati \par
- Gurmukhi \par
- Hangul Jamo \par
- Hangul \par
- Hanunoo \par
- Hatran \par
- Hebrew \par
- \dup Hiragana and Katakana \par
- \dup Kana \par
- Imperial Aramaic \par
- Inscriptional Pahlavi \par
- Inscriptional Parthian \par
- Javanese \par
- Kaithi \par
- Kannada \par
- Kayah Li \par
- Kharosthi \par
- Khmer \par
- Khojki \par
- Khudawadi \par
- Lao \par
- Latin \par
- Lepcha \par
- Limbu \par
- Linear A \par
- Linear B \par
- Lisu \par
- Lycian \par
- Lydian \par
- Mahajani \par
- Malayalam \par
- Mandaic \par
- Manichaean \par
- Marchen \par
- \dup Math \par
- \dup Maths \par
- Meitei Mayek \par
- Mende Kikakui \par
- Meroitic Cursive \par
- Meroitic Hieroglyphs \par
- Miao \par
- Modi \par
- Mongolian \par
- Mro \par
- Multani \par
- Musical Symbols \par
- Myanmar \par
- \dup N'Ko \par
- \dup N'ko \par
- Nabataean \par
- Newa \par
- Ogham \par
- Ol Chiki \par
- Old Italic \par
- Old Hungarian \par
- Old North Arabian \par
- Old Permic \par
- Old Persian Cuneiform \par
- Old South Arabian \par
- Old Turkic \par
- \dup Oriya \par
- \dup Odia \par
- Osage \par
- Osmanya \par
- Pahawh Hmong \par
- Palmyrene \par
- Pau Cin Hau \par
- Phags-pa \par
- Phoenician \par
- Psalter Pahlavi \par
- Rejang \par
- Runic \par
- Samaritan \par
- Saurashtra \par
- Sharada \par
- Shavian \par
- Siddham \par
- Sign Writing \par
- Sinhala \par
- Sora Sompeng \par
- Sumero-Akkadian Cuneiform \par
- Sundanese \par
- Syloti Nagri \par
- Syriac \par
- Tagalog \par
- Tagbanwa \par
- Tai Le \par
- Tai Lu \par
- Tai Tham \par
- Tai Viet \par
- Takri \par
- Tamil \par
- Tangut \par
- Telugu \par
- Thaana \par
- Thai \par
- Tibetan \par
- Tifinagh \par
- Tirhuta \par
- Ugaritic Cuneiform \par
- Vai \par
- Warang Citi \par
- Yi
- \end{multicols}
- \hrule
-\end{table}
-
-\begin{table}[p]
- \vspace*{-3cm}
- \hspace{-3cm}
- \def\dup{\makebox[0pt][r]{\textcolor{red}{\P}}}
- \begin{minipage}{\linewidth+4cm}
- \caption{Defined \opt{Language}s for OpenType fonts. Aliased names are shown in adjacent positions marked with red pilcrows ({\sffamily\textcolor{red}{\P}}).}
- \label{tab:ot-lang}
- \setlength\columnseprule{0pt}
- \hrule
- \begin{multicols}{6}
- \everypar{\setlength\parindent{0pt}\setlength\hangindent{2em}}
- \sffamily\footnotesize\raggedright
- Abaza \par
- Abkhazian \par
- Adyghe \par
- Afrikaans \par
- Afar \par
- Agaw \par
- Altai \par
- Amharic \par
- Arabic \par
- Aari \par
- Arakanese \par
- Assamese \par
- Athapaskan \par
- Avar \par
- Awadhi \par
- Aymara \par
- Azeri \par
- Badaga \par
- Baghelkhandi \par
- Balkar \par
- Baule \par
- Berber \par
- Bench \par
- Bible Cree \par
- Belarussian \par
- Bemba \par
- Bengali \par
- Bulgarian \par
- Bhili \par
- Bhojpuri \par
- Bikol \par
- Bilen \par
- Blackfoot \par
- Balochi \par
- Balante \par
- Balti \par
- Bambara \par
- Bamileke \par
- Breton \par
- Brahui \par
- Braj Bhasha \par
- Burmese \par
- Bashkir \par
- Beti \par
- Catalan \par
- Cebuano \par
- Chechen \par
- Chaha Gurage \par
- Chattisgarhi \par
- Chichewa \par
- Chukchi \par
- Chipewyan \par
- Cherokee \par
- Chuvash \par
- Comorian \par
- Coptic \par
- Cree \par
- Carrier \par
- Crimean Tatar \par
- Church Slavonic \par
- Czech \par
- Danish \par
- Dargwa \par
- Woods Cree \par
- German \par
- Default \par
- Dogri \par
- Divehi \par
- Djerma \par
- Dangme \par
- Dinka \par
- Dungan \par
- Dzongkha \par
- Ebira \par
- Eastern Cree \par
- Edo \par
- Efik \par
- Greek \par
- English \par
- Erzya \par
- Spanish \par
- Estonian \par
- Basque \par
- Evenki \par
- Even \par
- Ewe \par
- French Antillean \par
- \dup Farsi \par
- \dup Parsi \par
- \dup Persian \par
- Finnish \par
- Fijian \par
- Flemish \par
- Forest Nenets \par
- Fon \par
- Faroese \par
- French \par
- Frisian \par
- Friulian \par
- Futa \par
- Fulani \par
- Ga \par
- Gaelic \par
- Gagauz \par
- Galician \par
- Garshuni \par
- Garhwali \par
- Ge'ez \par
- Gilyak \par
- Gumuz \par
- Gondi \par
- Greenlandic \par
- Garo \par
- Guarani \par
- Gujarati \par
- Haitian \par
- Halam \par
- Harauti \par
- Hausa \par
- Hawaiin \par
- Hammer-Banna \par
- Hiligaynon \par
- Hindi \par
- High Mari \par
- Hindko \par
- Ho \par
- Harari \par
- Croatian \par
- Hungarian \par
- Armenian \par
- Igbo \par
- Ijo \par
- Ilokano \par
- Indonesian \par
- Ingush \par
- Inuktitut \par
- Irish \par
- Irish Traditional \par
- Icelandic \par
- Inari Sami \par
- Italian \par
- Hebrew \par
- Javanese \par
- Yiddish \par
- Japanese \par
- Judezmo \par
- Jula \par
- Kabardian \par
- Kachchi \par
- Kalenjin \par
- Kannada \par
- Karachay \par
- Georgian \par
- Kazakh \par
- Kebena \par
- Khutsuri Georgian \par
- Khakass \par
- Khanty-Kazim \par
- Khmer \par
- Khanty-Shurishkar \par
- Khanty-Vakhi \par
- Khowar \par
- Kikuyu \par
- Kirghiz \par
- Kisii \par
- Kokni \par
- Kalmyk \par
- Kamba \par
- Kumaoni \par
- Komo \par
- Komso \par
- Kanuri \par
- Kodagu \par
- Korean Old Hangul \par
- Konkani \par
- Kikongo \par
- Komi-Permyak \par
- Korean \par
- Komi-Zyrian \par
- Kpelle \par
- Krio \par
- Karakalpak \par
- Karelian \par
- Karaim \par
- Karen \par
- Koorete \par
- Kashmiri \par
- Khasi \par
- Kildin Sami \par
- Kui \par
- Kulvi \par
- Kumyk \par
- Kurdish \par
- Kurukh \par
- Kuy \par
- Koryak \par
- Ladin \par
- Lahuli \par
- Lak \par
- Lambani \par
- Lao \par
- Latin \par
- Laz \par
- L-Cree \par
- Ladakhi \par
- Lezgi \par
- Lingala \par
- Low Mari \par
- Limbu \par
- Lomwe \par
- Lower Sorbian \par
- Lule Sami \par
- Lithuanian \par
- Luba \par
- Luganda \par
- Luhya \par
- Luo \par
- Latvian \par
- Majang \par
- Makua \par
- Malayalam Traditional \par
- Mansi \par
- Marathi \par
- Marwari \par
- Mbundu \par
- Manchu \par
- Moose Cree \par
- Mende \par
- Me'en \par
- Mizo \par
- Macedonian \par
- Male \par
- Malagasy \par
- Malinke \par
- Malayalam Reformed \par
- Malay \par
- Mandinka \par
- Mongolian \par
- Manipuri \par
- Maninka \par
- Manx Gaelic \par
- Moksha \par
- Moldavian \par
- Mon \par
- Moroccan \par
- Maori \par
- Maithili \par
- Maltese \par
- Mundari \par
- Naga-Assamese \par
- Nanai \par
- Naskapi \par
- N-Cree \par
- Ndebele \par
- Ndonga \par
- Nepali \par
- Newari \par
- Nagari \par
- Norway House Cree \par
- Nisi \par
- Niuean \par
- Nkole \par
- N'ko \par
- Dutch \par
- Nogai \par
- Norwegian \par
- Northern Sami \par
- Northern Tai \par
- Esperanto \par
- Nynorsk \par
- Oji-Cree \par
- Ojibway \par
- Oriya \par
- Oromo \par
- Ossetian \par
- Palestinian Aramaic \par
- Pali \par
- Punjabi \par
- Palpa \par
- Pashto \par
- Polytonic Greek \par
- Pilipino \par
- Palaung \par
- Polish \par
- Provencal \par
- Portuguese \par
- Chin \par
- Rajasthani \par
- R-Cree \par
- Russian Buriat \par
- Riang \par
- Rhaeto-Romanic \par
- Romanian \par
- Romany \par
- Rusyn \par
- Ruanda \par
- Russian \par
- Sadri \par
- Sanskrit \par
- Santali \par
- Sayisi \par
- Sekota \par
- Selkup \par
- Sango \par
- Shan \par
- Sibe \par
- Sidamo \par
- Silte Gurage \par
- Skolt Sami \par
- Slovak \par
- Slavey \par
- Slovenian \par
- Somali \par
- Samoan \par
- Sena \par
- Sindhi \par
- Sinhalese \par
- Soninke \par
- Sodo Gurage \par
- Sotho \par
- Albanian \par
- Serbian \par
- Saraiki \par
- Serer \par
- South Slavey \par
- Southern Sami \par
- Suri \par
- Svan \par
- Swedish \par
- Swadaya Aramaic \par
- Swahili \par
- Swazi \par
- Sutu \par
- Syriac \par
- Tabasaran \par
- Tajiki \par
- Tamil \par
- Tatar \par
- TH-Cree \par
- Telugu \par
- Tongan \par
- Tigre \par
- Tigrinya \par
- Thai \par
- Tahitian \par
- Tibetan \par
- Turkmen \par
- Temne \par
- Tswana \par
- Tundra Nenets \par
- Tonga \par
- Todo \par
- Turkish \par
- Tsonga \par
- Turoyo Aramaic \par
- Tulu \par
- Tuvin \par
- Twi \par
- Udmurt \par
- Ukrainian \par
- Urdu \par
- Upper Sorbian \par
- Uyghur \par
- Uzbek \par
- Venda \par
- Vietnamese \par
- Wa \par
- Wagdi \par
- West-Cree \par
- Welsh \par
- Wolof \par
- Tai Lue \par
- Xhosa \par
- Yakut \par
- Yoruba \par
- Y-Cree \par
- Yi Classic \par
- Yi Modern \par
- Chinese Hong Kong \par
- Chinese Phonetic \par
- Chinese Simplified \par
- Chinese Traditional \par
- Zande \par
- Zulu
- \end{multicols}
- \hspace{4pt}
- \hrule
- \end{minipage}
-\end{table}
-
-
-\section{OpenType font features}
-\label{sec:ot-feat}
-
-There are a finite set of OpenType font features, and \pkg{fontspec} provides an
-interface to around half of them.
-Full documentation will be presented in the following sections, including how to
-enable and disable individual features, and how they interact.
-
-A brief reference is provided (\vref{tab:all-ot}) but note that this is an incomplete
-listing --- only the `enable' keys are shown, and where alternative interfaces are
-provided for convenience only the first is shown.
-(E.g., |Numbers=OldStyle| is the same as |Numbers=Lowercase|.)
-
-For completeness, the complete list of OpenType features \emph{not} provided with
-a \pkg{fontspec} interface is shown in \vref{tab:none-ot}.
-Features omitted are partially by design and partially by oversight;
-for example, the |aalt| feature is largely useless in \TeX\ since it is designed
-for providing a \textsc{gui} interface for selecting `all alternates' of a glyph.
-Others, such as optical bounds for example, simply haven't yet been considered
-due to a lack of fonts available for testing.
-Suggestions welcome for how/where to add these missing features to the package.
-
-\ExplSyntaxOn
-\def\allOTfeat{
- \prop_map_inline:Nn \g__fontspec_all_opentype_feature_names_prop
- { \opentypefeature{##1}{##2} }
-}
-\newcommand\opentypefeature[2]{
- \prop_get:NnNT \g__fontspec_OT_features_prop {#1} \tmpa
- {
- \raggedright
- \hangindent=5.2cm
- \makebox[1cm][l]{\textsc{#1}}
- \makebox[4.2cm][l]{
- \int_compare:nT { \tl_count:N \tmpa > 25 } {\ttcondensed} {\ttfamily}
- \tmpa
- }
- \textit{#2}
- \par
- \vspace{2pt}
- }
-}
-\ExplSyntaxOff
-
-\begin{table}
-\caption{Summary of OpenType features in \textsf{fontspec}, alphabetic by feature tag.}
-\label{tab:all-ot}
-\centerline{%
-\begin{minipage}{18cm}
-\small
-\hrule\smallskip
-\begin{multicols}{2}
-\parindent =0pt
-\allOTfeat
-\end{multicols}
-\vspace*{-\smallskipamount}
-\hrule
-\end{minipage}}
-\end{table}
-
-\ExplSyntaxOn
-\renewcommand\opentypefeature[2]{
- \prop_get:NnNF \g__fontspec_OT_features_prop {#1} \tmpa
- {
- \raggedright
- \hangindent=0.9cm
- \makebox[0.9cm][l]{\textsc{#1}}%
- \textit{#2}
- \par
- }
-}
-\ExplSyntaxOff
-
-\begin{table}
-\caption{List of \emph{unsupported} OpenType features.}
-\label{tab:none-ot}
-\bigskip
-\centerline{%
-\begin{minipage}{15cm}
-\hrule\smallskip
-\begin{multicols}{3}
-\parindent =0pt
-\allOTfeat
-\end{multicols}
-\vspace*{-\smallskipamount}
-\hrule
-\end{minipage}}
-\end{table}
-
-\subsection{Tag-based features}
-
-
-\subsubsection{Alternates --- \texttt{salt}}
-
-The \feat{Alternate} feature, alias \feat{StylisticAlternates}, is used to access alternate font glyphs when variations exist in the font, such as in \exref{salt}.
-It uses a numerical selection, starting from zero, that will be different for each font.
-Note that the \texttt{Style=Alternate} option is equivalent
-to \texttt{Alternate=0} to access the default case.
-
-\begin{Xexample}[firstline=2]{salt}{The \feat{Alternate} feature.}
- \huge
- \fontspec{LinLibertine_R.otf}
- \textsc{a} \& h \\
- \addfontfeature{Alternate=0}
- \textsc{a} \& h
-\end{Xexample}
-
-Note that the indexing starts from zero.
-With the \LuaTeX\ engine, |Alternate=Random| selects a random alternate.
-
-See \vref{sec:newfeatures} for a way to assign names to alternates if desired.
-
-
-\subsubsection{Character Variants --- \texttt{cvNN}}
-
-`Character Variations' are selected
-numerically to adjust the output of (usually) a single character for the
-particular font. These correspond to the OpenType features |cv01| to |cv99|.
-
-For each character that can be varied, it is possible to select among
-possible options for that particular glyph.
-For example, in the hypothetical example below, variants are chosen for glyphs `4' and `5',
-and the trailing |:|\meta{n} corresponds to which variety to choose.
-\begin{Verbatim}
- \fontspec{CV Font}[CharacterVariant={4,5:2}] \& violet
-\end{Verbatim}
-The numbering is entirely font-specific. Glyph `5' might be the character `v', for example.
-Character variants are specifically designed not to conflict with each
-other, so you can enable them individually per character.
-(Unlike stylistic alternates, say.)
-Note that the indexing starts from zero.
-
-
-\subsubsection{Contextuals}
-This feature refers to substitutions of glyphs that vary `contextually' by their relative position in a word or string of characters;
-features such as contextual swashes are accessed via the options shown in \ref{feat:Contextuals}.
-
-\begin{features}{Contextuals}
-\otf*{Swash}{cswh}
-\otf*{Alternate}{calt}
-\otf*{WordInitial}{init}
-\otf*{WordFinal}{fina}
-\otf*{LineFinal}{falt}
-\otf*{Inner}{medi}
-\cmidrule{2-4}
-\otf{ResetAll}{}
-\end{features}
-
-Historic forms are accessed in OpenType
-fonts via the feature \feat{Style=Historic}; this is generally \emph{not}
-contextual in OpenType, which is why it is not included in this feature.
-
-
-\subsubsection{Diacritics}
-
-Specifies how combining diacritics should be placed.
-These will usually be controlled automatically
-according to the Script setting.
-
-\begin{features}{Diacritics}
-\otf*{MarkToBase}{mark}
-\otf*{MarkToMark}{mkmk}
-\otf*{AboveBase}{abvm}
-\otf*{BelowBase}{blwm}
-\cmidrule{2-4}
-\otf{ResetAll}{}
-\end{features}
-
-
-\subsubsection{Fractions --- \texttt{frac}}
-
-\begin{features}{Fractions}
-\otf{On}{+frac}
-\otf{Off}{-frac}
-\otf{Reset}{}
-\cmidrule{2-4}
-\otf*{Alternate}{afrc}
-\cmidrule{2-4}
-\otf{ResetAll}{}
-\end{features}
-
-Activates the construction of `vulgar' fractions using precomposed glyphs and/or
-subscript and superscript characters from within the font.
-Coverage will vary by font; see \exref{ot-frac}.
-Some (Asian fonts predominantly) also provide for the \opt{Alternate} option.
-
-\begin{Lexample}{ot-frac}{The \feat{Fractions} feature.}
-\setsansfont{Lato}[Fractions=On]
-\setmonofont{IBM Plex Mono}[Fractions=On]
-
-\sffamily 1/2 47/11 1/1000 \par
-\ttfamily 1/2 47/11
-\end{Lexample}
-
-
-
-\subsubsection{Kerning --- \texttt{kern}}
-\label{sec:kerning}
-
-Specifies how inter-glyph spacing should behave.
-Well-made fonts include information for how differing
-amounts of space should be inserted between separate character pairs.
-This kerning space is inserted automatically but in rare
-circumstances you may wish to turn it off.
-
-\begin{features}{Kerning}
-\otf{On}{+kern}
-\otf{Off}{-kern}
-\otf{Reset}{}
-\cmidrule{2-4}
-\otf*{Uppercase}{cpsp}
-\cmidrule{2-4}
-\otf{ResetAll}{}
-\end{features}
-
-As briefly mentioned previously at the end of \vref{sec:letters},
-the \opt{Uppercase} option will add a small amount of tracking between
-uppercase letters, seen in \exref{kernup}, which uses the Romande
-fonts\note{\url{http://arkandis.tuxfamily.org/adffonts.html}}
-(thanks to Clea F. Rees for the suggestion).
-The \opt{Uppercase} option acts separately to the regular kerning
-controlled by the \opt{On}/\opt{Off} options.
-
-\begin{Xexample}[firstline=2]{kernup}{Adding extra kerning for uppercase letters. (The difference is usually very small.)}
- \large
- \fontspec{RomandeADFStd-DemiBold.otf}
- UPPERCASE EXAMPLE \\
- \addfontfeature{Kerning=Uppercase}
- UPPERCASE EXAMPLE
-\end{Xexample}
-
-
-\subsubsection{Letters} \label{sec:letters}
-The \opt{Letters} feature specifies how the letters in the current font
-will look. OpenType fonts may contain the following options:
-\opt{SmallCaps}, \opt{PetiteCaps},
-\opt{UppercaseSmallCaps}, \opt{UppercasePetiteCaps}, and
-\opt{Unicase}.
-
-\begin{features}{Letters}
-\otf*{SmallCaps}{smcp}
-\otf*{PetiteCaps}{pcap}
-\otf*{UppercaseSmallCaps}{c2sc}
-\otf*{UppercasePetiteCaps}{c2pc}
-\otf*{Unicase}{unic}
-\cmidrule{2-4}
-\otf{ResetAll}{}
-\end{features}
-
-Petite caps are smaller than small caps.
-\opt{SmallCaps} and \opt{PetiteCaps}
-turn lowercase letters into the smaller caps letters,
-whereas the \opt{Uppercase...} options turn the \emph{capital} letters into
-the smaller
-caps (good, \eg, for applying to already uppercase acronyms like
-`NASA').
-This difference is shown in \exref{caps}.
-`Unicase' is a weird hybrid of upper and lower case letters.
-
-\begin{Lexample}{caps}{Small caps from lowercase or uppercase letters.}
- \fontspec{texgyreadventor-regular.otf}[Letters=SmallCaps]
- THIS SENTENCE no verb \\
- \fontspec{texgyreadventor-regular.otf}[Letters=UppercaseSmallCaps]
- THIS SENTENCE no verb
-\end{Lexample}
-
-
-
-\subsubsection{Ligatures}
-\label{sec:ot-feat-liga}
-
-\feat{Ligatures} refer to the replacement of two separate characters
-with a specially drawn glyph for functional or \ae sthetic reasons.
-The list of options, of which multiple may be selected at one time,
-is shown in \ref{feat:Ligatures}.
-A demonstration with the Linux Libertine fonts\note{\url{http://www.linuxlibertine.org/}} is shown in \exref{lig}.
-
-Note the additional features accessed with \verb|Ligatures=TeX|. These are
-not actually real OpenType features, but additions provided by \pkg{luaotfload} (i.e., \LuaTeX\ only) to emulate \TeX's behaviour for \textsc{ascii} input of curly quotes and punctuation. In \XeTeX\ this is achieved with the \feat{Mapping} feature (see \vref{sec:mapping}) but for consistency \verb|Ligatures=TeX| will perform the same function as \verb|Mapping=tex-text|.
-
-\begin{features}{Ligatures}
-\otf*{Required}{rlig}
-\otf*{Common}{liga}
-\otf*{Contextual}{clig}
-\otf*{Rare/Discretionary}{dlig}
-\otf*{Historic}{hlig}
-\otf*{TeX}{tlig}
-\cmidrule{2-4}
-\otf{ResetAll}{}
-\end{features}
-
-\begin{Lexample}[firstline=2]{lig}{An example of the \feat{Ligatures} feature.}
- \Huge\centering
- \def\test#1#2{%
- #2 $\to$ {\addfontfeature{#1} #2}\\}
- \fontspec{LinLibertine_R.otf}
- \test{Ligatures=Historic}{strict}
- \test{Ligatures=Rare}{wurtzite}
- \test{Ligatures=CommonOff}{firefly}
-\end{Lexample}
-
-
-\subsubsection{Localised Forms --- \texttt{locl}}
-
-\begin{features}{LocalForms}
-\otf{On}{+locl}
-\otf{Off}{-locl}
-\otf{Reset}{}
-\end{features}
-
-This feature enables and disables glyph substitutions, etc., that are specific to the
-\feat{Language} selected in the font.
-This feature is automatically activated by default when present,
-so it should not be generally necessary to use \feat{LocalForms} \texttt{=} \opt{On}.
-In certain scenarios it may be important to turn it \opt{Off} (although nothing specifically springs to mind).
-
-
-\subsubsection{Numbers}
-
-The \feat{Numbers} feature defines how numbers will look in the
-selected font, accepting options shown in \ref{feat:Numbers}.
-
-\begin{features}{Numbers}
-\otf*{Uppercase}{lnum}
-\otf*{Lowercase}{onum}
-\otf*{Lining}{lnum}
-\otf*{OldStyle}{onum}
-\otf*{Proportional}{pnum}
-\otf*{Monospaced}{tnum}
-\otf*{SlashedZero}{zero}
-\otf*{Arabic}{anum}
-\cmidrule{2-4}
-\otf{ResetAll}{}
-\end{features}
-
-The synonyms
-\opt{Uppercase} and \opt{Lowercase} are equivalent to \opt{Lining} and
-\opt{OldStyle}, respectively.
-The differences have been shown previously
-in \vref{sec:addfontfeatures}.
-The \opt{Monospaced} option is useful for tabular material when digits need
-to be vertically aligned.
-
-The \opt{SlashedZero} option
-replaces the default zero with a slashed version to prevent
-confusion with an uppercase `O', shown in \exref{slashzero}.
-
-\begin{Lexample}{slashzero}{The effect of the \opt{SlashedZero} option.}
- \fontspec[Numbers=Lining]{texgyrebonum-regular.otf}
- 0123456789
- \fontspec[Numbers=SlashedZero]{texgyrebonum-regular.otf}
- 0123456789
-\end{Lexample}
-
-The \opt{Arabic} option (with tag \verb|anum|) maps regular numerals to their Arabic script or Persian equivalents
-based on the current \opt{Language} setting (see \vref{sec:ot}).
-This option is based on a \LuaTeX\ feature of the \pkg{luaotfload} package,
-not an OpenType feature. (Thus, this feature is unavailable in \XeTeX.)
-This feature should be considered deprecated; while there are no plans to remove it from this package,
-if its support is dropped from the font loader it could disappear from \pkg{fontspec} with little notice.
-
-
-\subsubsection{Ornament --- \texttt{ornm}}
-
-Ornaments are selected with the \feat{Ornament} feature (OpenType feature |ornm|),
-selected numerically such as for the \feat{Annotation} feature.
-
-
-\subsubsection{Style}
-\label{sec:ot-feat-style}
-
-\begin{features}{Style}
-\otf*{Alternate}{salt}
-\otf*{Italic}{ital}
-\otf*{Ruby}{ruby}
-\otf*{Swash}{swsh}
-\otf*{Cursive}{curs}
-\otf*{Historic}{hist}
-\otf*{Titling}{titl}
-\otf*{HorizontalKana}{hkna}
-\otf*{VerticalKana}{vkna}
-\cmidrule{2-4}
-\otf{ResetAll}{}
-\end{features}
-
-`Ruby' refers to a small optical size, used in
-Japanese typography for annotations.
-For fonts with multiple |salt| OpenType features,
-use the fontspec \feat{Alternate} feature instead.
-
-\Exref{style-alt} shows an example of a font feature that involves glyph substitution
-for particular letters within an alphabet.
-Other options in these categories operate in similar ways, with the choice of how
-particular substitutions are organised with which feature largely up to the font designer.
-
- \begin{Xexample}[firstline=2]{style-alt}{Example of the \opt{Alternate} option of the \feat{Style} feature.}
- \Large
- \fontspec{Quattrocento.otf}
- M Q W \\
- \addfontfeature{Style=Alternate}
- M Q W
-\end{Xexample}
-
-The \opt{Uppercase} option is designed to select various
-uppercase forms for glyphs such as accents and dashes, such as shown
-in \exref{style-uppercase}; note the raised position of the hyphen
-to better match the surrounding letters.
-It will (probably) not actually map letters to uppercase.
- \note{If you want automatic uppercase letters, look to \LaTeX's
- \cmd\MakeUppercase\ command.}
-This option used to be selected under the \feat{Letters} feature, but moved here
-as it generally does not actually affect the letters themselves.
-The \feat{Kerning} feature also contains an \opt{Uppercase} option,
-which adds a small amount of spacing in between letters (see \vref{sec:kerning}).
-
-\begin{Lexample}{style-uppercase}{An example of the \opt{Uppercase} option of the \feat{Style} feature.}
- \fontspec{LinLibertine_R.otf}
- UPPER-CASE example \\
- \addfontfeature{Style=Uppercase}
- UPPER-CASE example
-\end{Lexample}
-
-
-In other features, larger breadths of changes can be seen, covering
-the style of an entire alphabet.
-See \exref{style-itrub}; here, the \opt{Italic} option affects the Latin text
-and the \opt{Ruby} option the Japanese.
-
-\begin{Xexample}[firstline=2]{style-itrub}{Example of the \opt{Italic} and \opt{Ruby} options of the \feat{Style} feature.}
- \Large \def\kana{ようこそ ワカヨタレソ}
- \fontspec{Hiragino Mincho Pro}
- Latin \kana \\
- \addfontfeature{Style={Italic, Ruby}}
- Latin \kana
-\end{Xexample}
-
-Note the difference here between the default and the horizontal style kana
-in \exref{style-hvkana}: the horizontal style is slightly wider.
-
-\begin{Xexample}[firstline=2]{style-hvkana}{Example of the \opt{HorizontalKana} and \opt{VerticalKana} options of the \feat{Style} feature.}
- \Large \def\kana{ようこそ ワカヨタレソ}
- \fontspec{Hiragino Mincho Pro}
- \kana \\
- {\addfontfeature{Style=HorizontalKana}
- \kana } \\
- {\addfontfeature{Style=VerticalKana}
- \kana }
-\end{Xexample}
-
-
-\subsubsection{Stylistic Set variations --- \texttt{ssNN}}
-\label{sec:ot-ss}
-
-This feature selects a `Stylistic Set' variation,
-which usually corresponds to an alternate glyph style for a range of
-characters (usually an alphabet or subset thereof).
-This feature is specified numerically. These correspond to OpenType
-features |ss01|, |ss02|, etc.
-
-Two demonstrations from the Junicode
-font\note{\url{http://junicode.sf.net}}
-are shown in \exref{ss} and \exref{ss2}; thanks to Adam
-Buchbinder for the suggestion.
-
-\begin{Lexample}{ss}{Insular letterforms, as used in medieval Northern Europe, for the Junicode font accessed with the \feat{StylisticSet} feature.}
- \fontspec{Junicode}
- Insular forms. \\
- \addfontfeature{StylisticSet=2}
- Insular forms. \\
-\end{Lexample}
-
-\begin{Lexample}{ss2}{Enlarged minuscules (capital letters remain unchanged) for the Junicode font, accessed with the \feat{StylisticSet} feature.}
- \fontspec{Junicode}
- ENLARGED Minuscules. \\
- \addfontfeature{StylisticSet=6}
- ENLARGED Minuscules. \\
-\end{Lexample}
-
-Multiple stylistic sets may be selected simultaneously by writing, e.g.,
-|StylisticSet={1,2,3}|.
-
-The |StylisticSet| feature is a synonym of the \feat{Variant} feature for \AAT\ fonts.
-See \vref{sec:newfeatures} for a way to assign names to stylistic sets, which should be done on a per-font basis.
-
-
-\subsubsection{Vertical Position}
-
-\begin{features}{VerticalPosition}
-\otf*{Superior}{sups}
-\otf*{Inferior}{subs}
-\otf*{Numerator}{numr}
-\otf*{Denominator}{dnom}
-\otf*{ScientificInferior}{sinf}
-\otf*{Ordinal}{ordn}
-\cmidrule{2-4}
-\otf{ResetAll}{}
-\end{features}
-
-The \feat{VerticalPosition} feature is used to access things like
-subscript (\opt{Inferior}) and superscript (\opt{Superior}) numbers and
-letters (and a small amount of punctuation, sometimes).
-The \opt{Ordinal} option will only raise characters that are used
-in some languages directly after a number.
-The \opt{ScientificInferior} feature will move glyphs
-further below the baseline than the \opt{Inferior} feature.
-These are shown in \exref{vertpos}
-
-\opt{Numerator} and \opt{Denominator} should only be used for creating
-arbitrary fractions (see next section).
-
-\begin{Lexample}{vertpos}{The \feat{VerticalPosition} feature.}
- \fontspec{LibreCaslonText-Regular.otf}[VerticalPosition=Superior]
- Superior: 1234567890 \\
- \fontspec{LibreCaslonText-Regular.otf}[VerticalPosition=Numerator]
- Numerator: 12345 \\
- \fontspec{LibreCaslonText-Regular.otf}[VerticalPosition=Denominator]
- Denominator: 12345 \\
- \fontspec{LibreCaslonText-Regular.otf}[VerticalPosition=ScientificInferior]
- Scientific Inferior: 12345
-\end{Lexample}
-
-The \pkg{realscripts} package
-(which is also loaded by \pkg{xltxtra} for \XeTeX)
-redefines the \cmd\textsubscript\ and
-\cmd\textsuperscript\ commands to use the above font features automatically,
-including for use in footnote labels.
-If this is the only feature of \pkg{xltxtra} you wish to use, consider
-loading \pkg{realscripts} on its own instead.
-
-
-
-\subsection{CJK features}
-
-This section summarises the features which are largely intending for Chinese, Korean,
-and Japanese typesetting.
-
-
-\subsubsection{Annotation --- \texttt{nalt} }
-
-Some fonts are equipped with an extensive range of
-numbers and numerals in different forms. These are accessed with the
-\feat{Annotation} feature (OpenType feature |nalt|), selected numerically as shown in
-\exref{ot-annot}. Note that the indexing starts from zero.
-
-\begin{Xexample}{ot-annot}{Annotation forms for OpenType fonts.}
- \fontspec{Hiragino Maru Gothic Pro}
- 1 2 3 4 5 6 7 8 9
- \def\x#1{\\{\addfontfeature{Annotation=#1}
- 1 2 3 4 5 6 7 8 9 }}
- \x0\x1\x2\x3\x4\x5\x6\x7\x7\x8\x9
-\end{Xexample}
-
-
-\subsubsection{Character width}\label{sec:CharacterWidth}
-
-Many Asian fonts are equipped with variously spaced characters for
-shoe-horning into their generally monospaced text.
-These are
-accessed through the \feat{CharacterWidth} feature.
-
-\begin{features}{CharacterWidth}
-\otf*{Proportional}{pwid}
-\otf*{Full} {fwid}
-\otf*{Half} {hwid}
-\otf*{Third} {twid}
-\otf*{Quarter} {qwid}
-\otf*{AlternateProportional}{palt}
-\otf*{AlternateHalf}{halt}
-\cmidrule{2-4}
-\otf{ResetAll}{}
-\end{features}
-
-Japanese alphabetic glyphs (in Hiragana or Katakana) may be typeset
-proportionally, to better fit horizontal measures, or monospaced, to
-fit into the rigid grid imposed by ideographic typesetting. In this
-latter case, there are also half-width forms for squeezing more kana
-glyphs (which are less complex than the kanji they are amongst) into
-a given block of space. The same features are given to roman letters
-in Japanese fonts, for typesetting foreign words in the same style
-as the surrounding text.
-
-\begin{Xexample}[firstline=2]{charwdprop}{Proportional or fixed width forms.}
- \def\texta{ようこそ}\def\textb{ワカヨタレソ}
- \def\test{\makebox[2cm][l]{\texta}%
- \makebox[2.5cm][l]{\textb}%
- \makebox[2.5cm][l]{abcdef}}
- \fontspec{Hiragino Mincho Pro}
- {\addfontfeature{CharacterWidth=Proportional}\test}\\
- {\addfontfeature{CharacterWidth=Full}\test}\\
- {\addfontfeature{CharacterWidth=Half}\test}
-\end{Xexample}
-
-The same situation occurs with numbers, which are provided in
-increasingly illegible compressed forms seen in \exref{charwd}.
-
-\begin{Xexample}[firstline=2]{charwd}{Numbers can be compressed significantly.}
- \centering
- \fontspec[Renderer=AAT]{Hiragino Mincho Pro}
- {\addfontfeature{CharacterWidth=Full}
- ---12321---}\\
- {\addfontfeature{CharacterWidth=Half}
- ---1234554321---}\\
- {\addfontfeature{CharacterWidth=Third}
- ---123456787654321---}\\
- {\addfontfeature{CharacterWidth=Quarter}
- ---12345678900987654321---}
-\end{Xexample}
-
-
-\subsubsection{CJK shape}
-
-\begin{features}{CJKShape}
-\otf{Traditional}{trad}
-\otf{Simplified} {smpl}
-\otf{JIS1978} {jp78}
-\otf{JIS1983} {jp83}
-\otf{JIS1990} {jp90}
-\otf{Expert} {expt}
-\otf{NLC} {nlck}
-\end{features}
-
-There have been many standards for how CJK ideographic
-glyphs are `supposed' to look. Some fonts will contain many alternate
-glyphs available in order to be able to display these gylphs
-correctly in whichever form is appropriate. Both \AAT\ and OpenType
-fonts support the following \feat{CJKShape} options:
-\opt{Traditional}, \opt{Simplified}, \opt{JIS1978}, \opt{JIS1983},
-\opt{JIS1990}, and \opt{Expert}. OpenType also supports the \opt{NLC} option.
-
-\begin{Xexample}[firstline=2]{ot-cjk-shape}{Different standards for CJK ideograph presentation.}
- \LARGE\def\text{ 唖噛躯 妍并訝}
- \fontspec{Hiragino Mincho Pro}
- {\addfontfeature{CJKShape=Traditional}
- \text } \\
- {\addfontfeature{CJKShape=NLC}
- \text } \\
- {\addfontfeature{CJKShape=Expert}
- \text }
-\end{Xexample}
-
-
-\subsubsection{Vertical typesetting}
-
-\begin{features}{Vertical}
-\otf*{RotatedGlyphs} {vrt2}
-\otf*{AlternatesForRotation} {vrtr}
-\otf*{Alternates} {vert}
-\otf*{KanaAlternates} {vkna}
-\otf*{Kerning} {vkrn}
-\otf*{AlternateMetrics} {valt}
-\otf*{HalfMetrics} {vhal}
-\otf*{ProportionalMetrics} {vpal}
-\cmidrule{2-4}
-\otf{ResetAll}{}
-\end{features}
-
-OpenType provides a plethora of features for accommodating the varieties of possibilities
-needed for vertical typesetting (CJK and others).
-No capabilities for achieving such vertical typesetting are provided by \pkg{fontspec},
-however; please get in touch if there are improvements that could be made.
-
-
-\end{document}
-
-% /©
-% ------------------------------------------------
-% The FONTSPEC package <wspr.io/fontspec>
-% ------------------------------------------------
-% Copyright 2004-2020 Will Robertson, LPPL "maintainer"
-% Copyright 2009-2015 Khaled Hosny
-% Copyright 2013 Philipp Gesang
-% Copyright 2013-2016 Joseph Wright
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% ©/
diff --git a/macros/latex/contrib/fontspec/fontspec-doc-style.sty b/macros/latex/contrib/fontspec/fontspec-doc-style.sty
deleted file mode 100644
index 751e7a150d..0000000000
--- a/macros/latex/contrib/fontspec/fontspec-doc-style.sty
+++ /dev/null
@@ -1,292 +0,0 @@
-
-
-\ProvidesPackage{fontspec-doc-style}
-
-\input{fontspec.dtx}
-\ExplSyntaxOff
-
-\usepackage{fontspec,booktabs,caption,xcolor,flafter,fancyvrb,hologo,graphicx,
- url,varioref,varwidth,microtype,tocloft,framed,xparse,docmute}
-
-\let\FancyVerbSpace\verbvisiblespace
-
-%% Various labelling commands:
-\newcommand*\name[1]{{#1}}
-\newcommand*\opt[1]{\texttt{#1}}
-\newcommand*\feat[1]{\texttt{#1}}
-
-\let\latin\textit
-\def\eg{\latin{e.g.}}
-\def\ie{\latin{i.e.}}
-\def\Eg{\latin{E.g.}}
-\def\Ie{\latin{I.e.}}
-\def\etc{\@ifnextchar.{\latin{etc}}{\latin{etc.}\@}}
-
-\newcommand\note[1]{\unskip\footnote{#1}}
-
-\def\MacOSX{macOS}
-\def\AAT{\textsc{aat}}
-\def\ATSUI{\textsc{atsui}}
-
-\newcommand\NFSS{\textsc{nfss}}
-\newcommand\XeLaTeX{\hologo{XeLaTeX}}
-\newcommand\LuaLaTeX{\hologo{LuaLaTeX}}
-
-% ToC formatting:
-\setlength\cftsubsecnumwidth{1.4\cftsubsecnumwidth}
-%\def\@cfttocstart{\small\begin{multicols}{2}}
-%\def\@cfttocfinish{\end{multicols}}
-
-\fvset{gobble=0}
-
-\captionsetup[table]{position=above}
-\captionsetup[figure]{position=above}
-
-
-%% Fonts
-
-\defaultfontfeatures{Numbers=OldStyle}
-\IfFontExistsTF{AldusNovaPro-Book.otf}
- {
- \setmainfont{aldus-nova}
- \setsansfont{palatino-sans-light}
- }
- {
-\setmainfont{texgyrepagella}[
- Extension = .otf,
- UprightFont = *-regular ,
- ItalicFont = *-italic ,
- BoldFont = *-bold ,
- BoldItalicFont = *-bolditalic ,
-]
-\setsansfont{texgyreheros}[
- Extension = .otf,
- UprightFont = *-regular ,
- ItalicFont = *-italic ,
- BoldFont = *-bold ,
- BoldItalicFont = *-bolditalic ,
-]
- }
-\setmonofont{lmmono10-regular.otf}[
- Numbers={Lining,SlashedZero},
- ItalicFont=lmmonoslant10-regular.otf,
- BoldFont=lmmonolt10-bold.otf,
- BoldItalicFont=lmmonolt10-boldoblique.otf,
-]
-\newfontfamily\ttcondensed{lmmonoltcond10-regular.otf}
-
-%% (La)TeX font-related declarations:
-\linespread{1.05} % Pagella needs more space between lines
-\frenchspacing % Remove ugly extra space after punctuation
-
-%% ToC
-\def\@dotsep{1000}
-\setcounter{tocdepth}{2}
-\setlength\columnseprule{0.4pt}
-\renewcommand\tableofcontents{\relax
- \begin{multicols}{2}[\section*{\contentsname}]\relax
- \@starttoc{toc}\relax
- \end{multicols}}
-
-
-%% Index
-\setcounter{IndexColumns}{2}
-\renewenvironment{theglossary}
- {\small\list{}{}
- \item\relax
- \glossary@prologue\GlossaryParms
- \let\item\@idxitem \ignorespaces
- \def\pfill{\hspace*{\fill}}}
- {\endlist}
-
-
-
-%% varioref definitions:
-\labelformat{table}{Table~#1}
-\labelformat{section}{Section~#1}
-\labelformat{subsection}{Section~#1}
-
-\definecolor{niceblue}{rgb}{0.1,0.2,0.8}
-
-
-
-
-%% EXAMPLES
-
-\newif\ifshowexamples
-\showexamplestrue
-
-\newsavebox\X
-\newsavebox\Y
-
-\newcounter{example}
-
-\newcommand\exref[1]{Example~\ref{ex:#1}}
-\newcommand\Exref[1]{Example~\ref{ex:#1}}
-
-\newenvironment{Xexample}[3][]
- {\VerbatimEnvironment\begin{Fexample}[#1]{#2}{#3}{X}}
- {\end{Fexample}}
-
-\newenvironment{Lexample}[3][]
- {\VerbatimEnvironment\begin{Fexample}[#1]{#2}{#3}{L}}
- {\end{Fexample}}
-
-\newenvironment{Fexample}[4][]
- {%
- \def\options{#1}%
- \def\filename{#2}%
- \def\captiontext{#3}%
- \def\prefix{#4}
- \refstepcounter{example}%
- \label{ex:\filename}%
- \ifshowexamples
- \IfFileExists{zzz-\theexample-\prefix-\filename.tex}{}{%
- \immediate\write18{rm -f zzz-\theexample-* ;}%
- }%
- \fi
- \VerbatimEnvironment
- \begin{VerbatimOut}{zzz-\theexample-\prefix-\filename.tex}}
-% text in the environment
- {\end{VerbatimOut}
- \begin{figure}
- \setlength\parindent{0pt}%
- \edef\@tempa{[gobble=0,fontsize=\noexpand\small,\options]}%
- \savebox\X{%
- \expandafter\BVerbatimInput
- \@tempa{zzz-\theexample-\prefix-\filename.tex}%
- }%
- \IfFileExists{zzz-\theexample-\prefix-\filename.pdf}{}
- {%
- \edef\XXcmd{%
- \unexpanded{%
- \RequirePackage{luatex85}
- \documentclass[margin=0.2mm]{standalone}
- \usepackage{booktabs,ifthen,graphicx,xcolor,varwidth}
- \usepackage{fontspec}
- \defaultfontfeatures{Ligatures=TeX}
- \begin{document}
- \begin{varwidth}{0.7\linewidth}
- \input} zzz-\theexample-\prefix-\filename.tex
- \unexpanded{
- \end{varwidth}
- \end{document}
- }%
- }%
- \edef\1{%
- \csname prog@\prefix\endcsname "\unexpanded\expandafter{\XXcmd}";
- printf '\@percentchar s' '\unexpanded\expandafter{\XXcmd}' > zzz-\theexample-\prefix-\filename-test.tex;
- }%
- \ifshowexamples
- \immediate\write18{\unexpanded\expandafter{\1}}%
- \fi
- }%
- \savebox\Y{%
- \IfFileExists{zzz-\theexample-\prefix-\filename.pdf}
- {\includegraphics{zzz-\theexample-\prefix-\filename.pdf}}
- {\color{red}\itshape ---Example graphic not generated---}%
- }
- % TYPESETTING
- \rule[0.5\baselineskip]{\columnwidth}{1pt}%
- \vspace{-1.2ex}%
- \def\@tempa{\small\textsf{Example~\theexample:~}}%
- \settowidth\@tempdima{\@tempa\captiontext}%
- \par
- \ifdim\@tempdima>\linewidth
- \settowidth\@tempdima{\@tempa}%
- \@tempa\parbox[t]{\linewidth-\@tempdima}{\small\captiontext}%
- \vspace{0.4\baselineskip}%
- \else
- \parbox{\linewidth}{\centering\@tempa~\captiontext}%
- \fi
- \par\rule[0.4\baselineskip]{\columnwidth}{0.4pt}\par
- \ifdim\dimexpr\wd\X+\wd\Y>\linewidth\relax
- \null\hfill\makebox[0pt][r]{\usebox\Y}\usebox\X
- \else
- \hfill\usebox\Y\hfill\usebox\X
- \fi
- \par\rule[0.5\baselineskip]{\columnwidth}{1pt}
- \end{figure}
-}
-
-\def\prog@X{xelatex
- -jobname=zzz-\theexample-X-\filename\space}
-
-\def\prog@L{lualatex
- -jobname=zzz-\theexample-L-\filename\space}
-
-%%%%%%%%%%%%%%%%%%%%%%
-
-\newcommand*\setexsize[1]{\let\examplesize#1}
-\newcommand*\setverbwidth[1]{\def\auxwidth{#1}}
-
-
-
-\newcounter{argument}
-\g@addto@macro\endmacro{\setcounter{argument}{0}}
-\newcommand*\darg[1]{%
- \stepcounter{argument}%
- \noindent{\ttfamily\char`\#\theargument~:~}#1\par}
-\newcommand*\doarg[1]{%
- \stepcounter{argument}%
- \noindent{\ttfamily\makebox[0pt][r]{[}\char`\#\theargument]:~}#1\par}
-
-\newcommand\unichar[2]{\textsc{\MakeLowercase{u+#1: #2}}}
-
-\newcommand\cmdbox[1]{%
- \smallskip\par\noindent
- \fbox{\begin{varwidth}{\linewidth}
- #1%
- \end{varwidth}}%
- \smallskip
-}
-\def\CMD#1{\texttt{\null#1\unskip}}
-
-
-\NewDocumentCommand \otf {somm} {%
- \featname & #3 & \texttt{#4}
- \IfBooleanT #1 { & \textdagger }
- \\
-}
-\newenvironment{features}[1]{%
- \def\NOTE{}
- \def\thisfeatname{#1}%
- \def\featname{\thisfeatname~~\texttt=~~\null\gdef\featname{}}%
- \begin{table}
- \caption{Options for the OpenType font feature `\thisfeatname'.}
- \edef\@tempa{\noexpand\label{feat:\thisfeatname}}\@tempa
- \centering
- \begin{tabular}{@{}l@{}l@{\hspace{0.5\tabcolsep}}l@{\hspace{0.5\tabcolsep}}l@{}}
- \toprule
- Feature & Option & Tag & \\
- \midrule
-}{
- \bottomrule
- \end{tabular}
- \par\smallskip
- \footnotesize
- \textdagger\ These feature options can be disabled with \texttt{..Off} variants, and reset \\ to default state (neither explicitly on nor off) with \texttt{..Reset}.
- \NOTE
- \end{table}
-}
-
-
-%%%%%%%%%%%
-
-\def \MakePrivateLetters {%
- \catcode `\@ = 11
- \catcode `\_ = 11
- \catcode `\: = 11
-}
-
-%% for LaTeX3 csnames
-\catcode `\_= 11
-
-\renewcommand\partname{Part}
-
-
-% /©
-%
-% (COPYRIGHT GOES HERE)
-%
-% ©/
diff --git a/macros/latex/contrib/fontspec/fontspec-doc-xetex.tex b/macros/latex/contrib/fontspec/fontspec-doc-xetex.tex
deleted file mode 100644
index 5c1e3e3e7d..0000000000
--- a/macros/latex/contrib/fontspec/fontspec-doc-xetex.tex
+++ /dev/null
@@ -1,294 +0,0 @@
-%%^^A%% fontspec-doc-xetex.tex -- part of FONTSPEC <wspr.io/fontspec>
-
-\documentclass[a4paper]{l3doc}
-\usepackage{fontspec-doc-style}
-\showexamplesfalse
-\begin{document}
-
-\part{Fonts and features with \XeTeX}
-\label{sec:xetex-features}
-
-\section{\XeTeX-only font features}
-
-The features described here are available for any font
-selected by \pkg{fontspec}.
-
-\subsection{Mapping}
-\label{sec:mapping}
-
-The \feat{Mapping} feature enables a \XeTeX\ text-mapping scheme, with an example shown in \exref{mapping}.
-
-\begin{Xexample}{mapping}{\XeTeX's \feat{Mapping} feature.}
- \fontspec{texgyrepagella-regular.otf}[Mapping=tex-text]
- ``!`A small amount of---text!''
-\end{Xexample}
-
-Only one mapping can be active at a time and a second call to \feat{Mapping}
-will override the first.
-Using the |tex-text| mapping is also equivalent to writing |Ligatures=TeX|.
-The use of the latter syntax is recommended for better compatibility with
-\LuaTeX\ documents.
-
-
-\subsection{Different font technologies: \AAT, OpenType, and Graphite}\label{sec:renderer-xetex}
-
-\textbf{Note that from 2020 it appears that \XeTeX\ can no longer support \AAT\ fonts in \MacOSX.}
-
-\XeTeX\ supports three rendering technologies for typesetting, selected with
-the \feat{Renderer} font feature. The first, \opt{AAT}, is
-that provided only by \MacOSX.
-The second, \opt{OpenType}, is an open source OpenType interpreter.
-It provides greater support for OpenType features, notably contextual arrangement, over \opt{AAT}.
-The third is \opt{Graphite}, which is an alternative to OpenType with particular features for less-common languages and the capability for more powerful font options.
-Features for \opt{OpenType} have already been discussed in \vref{sec:opentype-features};
-\opt{Graphite} and \opt{AAT} features are discussed later in \vref{sec:graphite-features} and \vref{sec:aat-features}.
-
-Unless you have a particular need, the \feat{Renderer} feature is rarely explicitly required: for OpenType
-fonts, the \opt{OpenType} renderer is used automatically, and for \AAT\ fonts,
-\opt{AAT} is chosen by default. Some fonts, however, will contain font tables
-for multiple rendering technologies, such as the Hiragino Japanese fonts
-distributed with \MacOSX, and in these cases one over the other may be preferred.
-
-Among some other font features only available through a specific renderer,
-\opt{OpenType} provides for the \feat{Script} and \feat{Language} features, which allow
-different font behaviour for different alphabets and languages; see \vref{sec:ot}
-for the description of these features. {\em Because these font features can
-change which features are able to be selected for the font instance, they are selected
-by \pkg{fontspec} before all others and will automatically and without warning
-select the \opt{OpenType} renderer.}
-
-
-\subsection{Optical font sizes} \label{sec:aat-opticalsize}
-
-Multiple Master fonts are parameterised over
-orthogonal font axes, allowing continuous selection along such
-features as weight, width, and optical size.
-Whereas an OpenType font will have only a few separate
-optical sizes, a Multiple Master font's optical size can be
-specified over a continuous range. Unfortunately, this flexibility makes
-it harder to create an automatic interface through \LaTeX, and the
-optical size for a Multiple Master font must always be specified
-explicitly.
-\begin{Verbatim}
- \fontspec{Minion MM Roman}[OpticalSize=11]
- MM optical size test \\
- \fontspec{Minion MM Roman}[OpticalSize=47]
- MM optical size test \\
- \fontspec{Minion MM Roman}[OpticalSize=71]
- MM optical size test \\
-\end{Verbatim}
-
-
-\subsection{Vertical typesetting}
-
-\XeTeX\ provides for vertical typesetting simply with the ability to rotate
-the individual glyphs as a font is used for typesetting, as shown in
-\exref{vert}.
-
-\begin{Xexample}[firstline=2]{vert}{Vertical typesetting.}
- \def\verttext{共産主義者は}
- \fontspec{Hiragino Mincho Pro}
- \verttext
-
- \fontspec{Hiragino Mincho Pro}[Renderer=AAT,Vertical=RotatedGlyphs]
- \rotatebox{-90}{\verttext}% requires the graphicx package
-\end{Xexample}
-
-No actual provision is made for typesetting top-to-bottom
-languages; for an example of how to do this, see the vertical Chinese
-example provided in the \XeTeX\ documentation.
-
-
-\section{The Graphite renderer}
-\label{sec:graphite-features}
-
-Since the Graphite renderer is designed for less common scripts and languages, usually with
-specific or unique requirements, Graphite features are not standard across fonts.
-
-Currently \pkg{fontspec} does not support a convenient interface to select Graphite font
-features and all selection must be done via `raw' font feature selection.
-
-Here's an example:
-\begin{Verbatim}
- \fontspec{Charis SIL}[
- Renderer=Graphite,
- RawFeature={Uppercase Eng alternates=Large eng on baseline}]
- Ŋ
-\end{Verbatim}
-
-Here's another:
-\begin{Verbatim}
-\fontspec{AwamiNastaliq-Regular.ttf}[Renderer=Graphite] ^^^^06b5
-\addfontfeature{RawFeature={Lam with V=V over bowl}} ^^^^06b5
-\end{Verbatim}
-
-
-
-\section{\MacOSX's \AAT\ fonts}
-\label{sec:aat-features}
-
-\begin{quote}\itshape
-\textbf{Warning!}
-\XeTeX's implementation on \MacOSX\ is currently in a state of flux and the information contained below may well be wrong from 2013 onwards.
-There is a good chance that the features described in this section will not be available any more as \XeTeX's completes its transition to a cross-platform--only application.
-All examples in this section have now been removed.
-\end{quote}
-
-\MacOSX's font technology began life before the ubiquitous-OpenType era
-and revolved around the Apple-invented `\AAT' font format. This format
-had some advantages (and other disadvantages) but it never became widely
-popular in the font world.
-
-Nonetheless, this is the font format that was first supported by \XeTeX\
-(due to its pedigree on \MacOSX\ in the first place) and was the first
-font format supported by \pkg{fontspec}. A number of fonts distributed with
-\MacOSX\ are still in the \AAT\ format, such as `Skia'.
-
-\subsection{Ligatures}
-
-\feat{Ligatures} refer to the replacement of two separate characters
-with a specially drawn glyph for functional or \ae sthetic reasons.
-For \AAT\ fonts, you may choose from any combination of \opt{Required},
-\opt{Common}, \opt{Rare} (or \opt{Discretionary}), \opt{Logos}, \opt{Rebus},
-\opt{Diphthong}, \opt{Squared}, \opt{AbbrevSquared}, and \opt{Icelandic}.
-
-Some other Apple \AAT\ fonts have those `Rare' ligatures contained in
-the \opt{Icelandic} feature. Notice also that the old \TeX\ trick of
-splitting up a ligature with an empty brace pair does not work in
-\XeTeX; you must use a 0\,pt kern or \cs{hbox} (\eg, \cs{null}) to
-split the characters up if you do not want a ligature to be performed (the usual examples for when this might be desired are words like `shelf\null full').
-
-\subsection{Letters} \label{sec:aat-letters}
-The \opt{Letters} feature specifies how the letters in the current font
-will look. For \AAT\ fonts, you may choose from \opt{Normal},
-\opt{Uppercase}, \opt{Lowercase}, \opt{SmallCaps}, and
-\opt{InitialCaps}.
-
-
-\subsection{Numbers}
-The \feat{Numbers} feature defines how numbers will look in the
-selected font. For \AAT\ fonts, they may be a
-combination of \opt{Lining} or \opt{OldStyle} and \opt{Proportional} or
-\opt{Monospaced} (the latter is good for tabular material). The synonyms
-\opt{Uppercase} and \opt{Lowercase} are equivalent to \opt{Lining} and
-\opt{OldStyle}, respectively. The differences have been shown previously
-in \vref{sec:addfontfeatures}.
-
-\subsection{Contextuals} \label{sec:contextuals}
-This feature refers to glyph substitution that vary by their position;
-things like contextual swashes are implemented here.
-The options for \AAT\ fonts are
-\opt{WordInitial}, \opt{WordFinal} (\exref{wordcx}), \opt{LineInitial},
-\opt{LineFinal}, and \opt{Inner} (\exref{longsaat}, also called `non-final' sometimes). As
-non-exclusive selectors, like the ligatures, you can turn them off
-by prefixing their name with \opt{No}.
-
-\subsection{Vertical position}
-The \feat{VerticalPosition} feature is used to access things like
-subscript (\opt{Inferior}) and superscript (\opt{Superior}) numbers and
-letters (and a small amount of punctuation, sometimes).
-The \opt{Ordinal} option is (supposed to be)
-contextually sensitive to only raise characters that appear directly
-after a number.
-
-The \pkg{realscripts} package redefines the \cmd\textsubscript\ and
-\cmd\textsuperscript\ commands to use the above font features,
-including for use in footnote labels.
-
-\subsection{Fractions}
-Many fonts come with the capability to typeset various forms of
-fractional material. This is accessed in \pkg{fontspec} with the
-\feat{Fractions} feature, which may be turned \opt{On} or \opt{Off}
-in both \AAT\ and OpenType fonts.
-
-In \AAT\ fonts, the `fraction slash' or solidus character, is
-to be used to create fractions. When \feat{Fractions} are turned
-\opt{On}, then only pre-drawn fractions will be used.
-
-Using the \opt{Diagonal} option (\AAT\ only), the font will attempt
-to create the fraction from superscript and subscript
-characters.
-
-Some (Asian fonts predominantly) also provide for the
-\opt{Alternate} feature.
-
-\subsection{Variants}
-The \feat{Variant} feature takes a single numerical input for
-choosing different alphabetic shapes.
-See \vref{sec:newfeatures} for a way to assign names to variants,
-which should be done on a per-font basis.
-
-\subsection{Alternates}
-Selection of \feat{Alternate}s again must be done numerically.
-See \vref{sec:newfeatures} for a way to assign names to alternates,
-which should be done on a per-font basis.
-
-
-\subsection{Style}
-The options of the \feat{Style} feature
-are defined in \AAT\ as one of the following: \opt{Display},
-\opt{Engraved}, \opt{IlluminatedCaps}, \opt{Italic},
-\opt{Ruby},\footnotemark\ \opt{TallCaps}, or \opt{Titling}.
-\footnotetext{`Ruby' refers to a small optical size, used in
-Japanese typography for annotations.}
-
-Typical examples for these features are shown in \ref{sec:ot-feat-style}.
-
-\subsection{CJK shape}
-There have been many standards for how CJK ideographic
-glyphs are `supposed' to look. Some fonts will contain many alternate
-glyphs in order to be able to display these gylphs
-correctly in whichever form is appropriate. Both \AAT\ and OpenType
-fonts support the following \feat{CJKShape} options:
-\opt{Traditional}, \opt{Simplified}, \opt{JIS1978}, \opt{JIS1983},
-\opt{JIS1990}, and \opt{Expert}. OpenType also supports the \opt{NLC} option.
-
-\subsection{Character width}
-See \vref{sec:CharacterWidth} for relevant examples; the features are
-the same between OpenType and \AAT\ fonts.
-\AAT\ also allows \feat{CharacterWidth}|=|\opt{Default} to return to
-the original font settings.
-
-\subsection{Diacritics}
-Diacritics are marks, such as the acute accent or the tilde, applied to letters; they usually indicate a change in pronunciation.
-In Arabic scripts, diacritics are used to indicate vowels.
-You may either choose
-to \opt{Show}, \opt{Hide} or \opt{Decompose} them in \AAT\ fonts.
-The \opt{Hide} option is for scripts such as Arabic which may be
-displayed either with or without vowel markings. E.g.,
-\verb|\fontspec[Diacritics=Hide]{...}|
-
-Some older fonts distributed with \MacOSX\ included `|O/|' \etc\ as shorthand for writing `\O' under the label of the \feat{Diacritics} feature. If you come across such fonts, you'll
-want to turn this feature off (imagine typing |hello/goodbye| and
-getting `hell\o goodbye' instead!) by decomposing the two characters
-in the diacritic into the ones you actually
-want. I recommend using
-the proper \LaTeX\ input conventions for obtaining such characters
-instead.
-
-
-\subsection{Annotation}
-Various Asian fonts are equipped with a more extensive range of
-numbers and numerals in different forms. These are accessed through
-the \feat{Annotation} feature with the following
-options: \opt{Off},
-\opt{Box}, \opt{RoundedBox}, \opt{Circle}, \opt{BlackCircle},
-\opt{Parenthesis}, \opt{Period}, \opt{RomanNumerals}, \opt{Diamond},
-\opt{BlackSquare}, \opt{BlackRoundSquare}, and \opt{DoubleCircle}.
-
-\end{document}
-
-% /©
-% ------------------------------------------------
-% The FONTSPEC package <wspr.io/fontspec>
-% ------------------------------------------------
-% Copyright 2004-2020 Will Robertson, LPPL "maintainer"
-% Copyright 2009-2015 Khaled Hosny
-% Copyright 2013 Philipp Gesang
-% Copyright 2013-2016 Joseph Wright
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% ©/
diff --git a/macros/latex/contrib/fontspec/fontspec-example.tex b/macros/latex/contrib/fontspec/fontspec-example.tex
deleted file mode 100644
index bf2831b134..0000000000
--- a/macros/latex/contrib/fontspec/fontspec-example.tex
+++ /dev/null
@@ -1,48 +0,0 @@
-%%^^A%% fontspec-example.tex -- part of FONTSPEC <wspr.io/fontspec>
-
-\documentclass{article}
-
-\usepackage{fontspec}
-
-\setmainfont{TeX Gyre Pagella}
-\setsansfont{TeX Gyre Heros}[Scale=MatchLowercase]
-\setmonofont{Inconsolata}[Scale=MatchLowercase]
-
-\begin{document}
-\pagestyle{empty}
-
-\section*{The basics of the \textsf{fontspec} package}
-
-The \textsf{fontspec} package enables automatic font selection
-for \LaTeX{} documents typeset with Xe\TeX{} or Lua\TeX.
-The basic command is
-
-{\centering \verb|\fontspec{font display name}[font features]|.\par}
-
-The default, sans serif, and typewriter fonts may be set with the
-commands \verb|\setmainfont|, \verb|\setsansfont| and \verb|\setmonofont|,
-respectively, as shown in the preamble. They take the
-same syntax as the \verb|\fontspec| package. All expected font
-shapes are available:
-
-\begin{center}
- {\itshape Italics and \scshape small caps\dots}\\
- {\sffamily\bfseries Bold sans serif and \itshape bold italic sans serif\dots}
-\end{center}
-
-Text fonts in maths mode are also changed (e.g., notice the cosine function in
-`$\cos(n\pi)=\pm 1$') but only if the roman and sans serif fonts are set in
-the preamble; \verb|\setmainfont| will not affect these maths mode fonts when
-called mid-document.
-Maths symbols themselves are not affected.
-
-Notice the font features used to load the default fonts in the preamble.
-\verb|Ligatures=TeX| is automatically enabled for the roman and sans font,
-allowing regular \TeX{} ligatures like \verb|``---''| for ``---''.
-\verb|Scale=MatchLowercase| automatically scales the fonts to
-the same x-height.
-
-Please see the complete \textsf{fontspec} documentation for further
-information.
-
-\end{document}
diff --git a/macros/latex/contrib/fontspec/fontspec-lua.dtx b/macros/latex/contrib/fontspec/fontspec-lua.dtx
deleted file mode 100644
index fdbe11e9d1..0000000000
--- a/macros/latex/contrib/fontspec/fontspec-lua.dtx
+++ /dev/null
@@ -1,101 +0,0 @@
-%%^^A%% fontspec-lua.dtx -- part of FONTSPEC <wspr.io/fontspec>
-%
-% \section{Lua module}
-%
-% \begin{macrocode}
-%<*lua>
-% \end{macrocode}
-% \begin{macrocode}
-local err, warn, info, log = luatexbase.provides_module(fontspec.module)
-% \end{macrocode}
-% Some utility functions
-% \begin{macrocode}
-fontspec.log = log or (function (s) luatexbase.module_info("fontspec", s) end)
-fontspec.warning = warn or (function (s) luatexbase.module_warning("fontspec", s) end)
-fontspec.error = err or (function (s) luatexbase.module_error("fontspec", s) end)
-% \end{macrocode}
-%
-% We need a catcode table for tex.sprint(). See issue \#230.
-% TODO: probably time to get rid of the backwards compatibility here:
-% \begin{macrocode}
-local latex
-if luatexbase.registernumber then
- latex = luatexbase.registernumber("catcodetable@latex")
-else
- latex = luatexbase.catcodetables.CatcodeTableLaTeX
-end
-% \end{macrocode}
-%
-% The following are the function that get called from \TeX\ end.
-% \begin{macrocode}
-local function tempswatrue() tex.sprint(latex,[[\FontspecSetCheckBoolTrue ]]) end
-local function tempswafalse() tex.sprint(latex,[[\FontspecSetCheckBoolFalse]]) end
-% \end{macrocode}
-%
-% \begin{macrocode}
-function fontspec.check_ot_script(fnt, script)
- if luaotfload.aux.provides_script(font.id(fnt), script) then
- tempswatrue()
- else
- tempswafalse()
- end
-end
-% \end{macrocode}
-%
-% \begin{macrocode}
-function fontspec.check_ot_lang(fnt, lang, script)
- if luaotfload.aux.provides_language(font.id(fnt), script, lang) then
- tempswatrue()
- else
- tempswafalse()
- end
-end
-% \end{macrocode}
-%
-% \begin{macrocode}
-function fontspec.check_ot_feat(fnt, feat, lang, script)
- for _, f in ipairs { "+trep", "+tlig", "+anum" } do
- if feat == f then
- tempswatrue()
- return
- end
- end
- if luaotfload.aux.provides_feature(font.id(fnt), script, lang, feat) then
- tempswatrue()
- else
- tempswafalse()
- end
-end
-% \end{macrocode}
-%
-% \begin{macrocode}
-function fontspec.mathfontdimen(fnt, str)
- local mathdimens = luaotfload.aux.get_math_dimension(fnt, str)
- if mathdimens then
- tex.sprint(-2,mathdimens)
- tex.sprint(-2,"sp")
- else
- tex.sprint(-2,"0pt")
- end
-end
-% \end{macrocode}
-%
-% \begin{macrocode}
-%</lua>
-% \end{macrocode}
-
-
-% /©
-% ------------------------------------------------
-% The FONTSPEC package <wspr.io/fontspec>
-% ------------------------------------------------
-% Copyright 2004-2020 Will Robertson, LPPL "maintainer"
-% Copyright 2009-2015 Khaled Hosny
-% Copyright 2013 Philipp Gesang
-% Copyright 2013-2016 Joseph Wright
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% ©/
diff --git a/macros/latex/contrib/fontspec/fontspec.cfg b/macros/latex/contrib/fontspec/fontspec.cfg
deleted file mode 100644
index f7dbe9fc68..0000000000
--- a/macros/latex/contrib/fontspec/fontspec.cfg
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-%%% FONTSPEC.CFG %%%
-%
-% This configuration file sets up TeX Ligatures by default for all fonts loaded
-% with `\setmainfont` and `\setsansfont`.
-%
-% In addition, `\setmonofont` has default features to enforce "monospace"
-% settings with regard to space stretchability and shrinkability.
-%
-% Make a copy of this file in your own home TEXMF directory to set up your own
-% defaults.
-
-\defaultfontfeatures
- [\rmfamily,\sffamily]
- {Ligatures=TeX}
-
-\defaultfontfeatures
- [\ttfamily]
- {WordSpace={1,0,0},
- HyphenChar=None,
- PunctuationSpace=WordSpace}
diff --git a/macros/latex/contrib/fontspec/fontspec.dtx b/macros/latex/contrib/fontspec/fontspec.dtx
deleted file mode 100644
index 5d07989465..0000000000
--- a/macros/latex/contrib/fontspec/fontspec.dtx
+++ /dev/null
@@ -1,116 +0,0 @@
-%%^^A%% fontspec.dtx -- part of FONTSPEC <wspr.io/fontspec>
-%%^^A%% Metadata for the package, including files and versioning
-
-% \section{Package declaration}
-%
-% List all \texttt{dtx} files for running the \texttt{ins} file
-% and typesetting the code.
-% \begin{macrocode}
-%<*dtx>
-\gdef\FONTSPECDTX{
- \DTX{fontspec.dtx}
- \DTX{fontspec-code-load.dtx}
- \DTX{fontspec-code-vars.dtx}
- \DTX{fontspec-code-msg.dtx}
- \DTX{fontspec-code-opening.dtx}
- \DTX{fontspec-code-fontload.dtx}
- \DTX{fontspec-code-interfaces.dtx}
- \DTX{fontspec-code-user.dtx}
- \DTX{fontspec-code-api.dtx}
- \DTX{fontspec-code-internal.dtx}
- \DTX{fontspec-code-opentype.dtx}
- \DTX{fontspec-code-graphite.dtx}
- \DTX{fontspec-code-keyval.dtx}
- \DTX{fontspec-code-feat-opentype.dtx}
- \DTX{fontspec-code-scripts.dtx}
- \DTX{fontspec-code-lang.dtx}
- \DTX{fontspec-code-feat-aat.dtx}
- \DTX{fontspec-code-enc.dtx}
- \DTX{fontspec-code-math.dtx}
- \DTX{fontspec-code-closing.dtx}
- \DTX{fontspec-code-xfss.dtx}
-}
-%</dtx>
-% \end{macrocode}
-%
-% Now exit if we're using plain \TeX; this would usually be the case when
-% loading this file with \texttt{fontspec.ins}.
-% \begin{macrocode}
-%<*dtx>
-\def\tmpa{plain}
-\ifx\tmpa\fmtname\expandafter\endinput\fi
-%</dtx>
-% \end{macrocode}
-%
-% Metadata for documentation; the official title and authors of the package.
-% \begin{macrocode}
-%<*dtx>
-\title{
- The \textsf{fontspec} package\\
- Font selection for \XeLaTeX\ and \LuaLaTeX
-}
-\author{
- \textsc{Will Robertson}\\
- With contributions by Khaled Hosny,\\
- Philipp Gesang, Joseph Wright, and others.\\
- \url{http://wspr.io/fontspec/}
-}
-%</dtx>
-% \end{macrocode}
-%
-% Declare the package version and date for each of the \texttt{.sty} files generated.
-% In addition, declare the version and date for this \texttt{.dtx} file.
-% \begin{macrocode}
-%<fontspec>\RequirePackage{xparse}
-%<fontspec&load>\ProvidesExplPackage{fontspec}%
-%<fontspec&XE>\ProvidesExplPackage{fontspec-xetex}%
-%<fontspec&LU>\ProvidesExplPackage{fontspec-luatex}%
-%<*dtx>
-\RequirePackage{xparse}
-\ProvidesExplFile{fontspec.dtx}
-%</dtx>
-%<*fontspec>
- {2020/02/21}{2.7i}{Font selection for XeLaTeX and LuaLaTeX}
-%</fontspec>
-% \end{macrocode}
-%
-% Here the version and date are setup for typesetting the documentation.
-% \begin{macrocode}
-%<*dtx>
-\GetFileInfo{fontspec.dtx}
-\date{\filedate \qquad \fileversion}
-%</dtx>
-% \end{macrocode}
-%
-% \subsection{\textsf{Lua} header}
-%
-% \begin{macrocode}
-%<lua>fontspec = fontspec or {}
-%<lua>local fontspec = fontspec
-%<lua>fontspec.module = {
-%<lua> name = "fontspec",
-%<lua> version = "2.7i",
-%<lua> date = "2020/02/21",
-%<lua> description = "Font selection for XeLaTeX and LuaLaTeX",
-%<lua> author = "Khaled Hosny, Philipp Gesang, Will Robertson",
-%<lua> copyright = "Khaled Hosny, Philipp Gesang, Will Robertson",
-%<lua> license = "LPPL v1.3c"
-%<lua>}
-% \end{macrocode}
-
-\endinput
-
-% /©
-% ------------------------------------------------
-% The FONTSPEC package <wspr.io/fontspec>
-% ------------------------------------------------
-% Copyright 2004-2020 Will Robertson, LPPL "maintainer"
-% Copyright 2009-2015 Khaled Hosny
-% Copyright 2013 Philipp Gesang
-% Copyright 2013-2016 Joseph Wright
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% ©/
diff --git a/macros/latex/contrib/fontspec/fontspec.ins b/macros/latex/contrib/fontspec/fontspec.ins
deleted file mode 100644
index adace502d2..0000000000
--- a/macros/latex/contrib/fontspec/fontspec.ins
+++ /dev/null
@@ -1,60 +0,0 @@
-%%^^A%% fontspec.ins -- part of FONTSPEC <wspr.io/fontspec>
-
-\input fontspec.dtx\relax
-\input l3docstrip.tex\relax
-
-\keepsilent
-\usedir{tex/latex/fontspec}
-\let\MetaPrefix\relax
-\preamble
-------------------------------------------------
-The FONTSPEC package <wspr.io/fontspec>
-------------------------------------------------
-Copyright 2004-2017 Will Robertson, LPPL "maintainer"
-Copyright 2009-2013 Khaled Hosny
-------------------------------------------------
-This package is free software and may be redistributed and/or modified under
-the conditions of the LaTeX Project Public License, version 1.3c or higher
-(your choice): <http://www.latex-project.org/lppl/>.
-------------------------------------------------
-\endpreamble
-\nopostamble
-\askforoverwritefalse
-
-\def\MetaPrefix{-- }
-\generate{\file{fontspec.lua}{
- \from{fontspec.dtx}{lua}
- \from{fontspec-lua.dtx}{lua}
-}}
-
-\let\MetaPrefix\DoubleperCent
-\ifx\FontspecDebug\undefined\def\FSDEBUG{}\else\def\FSDEBUG{,debug}\fi
-
-\generate{\file{fontspec.sty}{
- \from{fontspec.dtx}{fontspec,load\FSDEBUG}
- \from{fontspec-code-load.dtx}{fontspec,load\FSDEBUG}
-}}
-
-\def\DTX#1{\from{#1}{fontspec,XE\FSDEBUG}}
-\generate{\file{fontspec-xetex.sty}{\FONTSPECDTX}}
-
-\def\DTX#1{\from{#1}{fontspec,LU\FSDEBUG}}
-\generate{\file{fontspec-luatex.sty}{\FONTSPECDTX}}
-
-\endbatchfile
-\endinput
-
-% /©
-% ------------------------------------------------
-% The FONTSPEC package <wspr.io/fontspec>
-% ------------------------------------------------
-% Copyright 2004-2020 Will Robertson, LPPL "maintainer"
-% Copyright 2009-2015 Khaled Hosny
-% Copyright 2013 Philipp Gesang
-% Copyright 2013-2016 Joseph Wright
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% ©/
diff --git a/macros/latex/contrib/fontspec/fontspec.ltx b/macros/latex/contrib/fontspec/fontspec.ltx
deleted file mode 100644
index b497948696..0000000000
--- a/macros/latex/contrib/fontspec/fontspec.ltx
+++ /dev/null
@@ -1,40 +0,0 @@
-%%^^A%% fontspec.ltx -- part of FONTSPEC <wspr.io/fontspec>
-
-\ifdefined \XeTeXOTcountscripts \else \makeatletter
- \@latex@error{^^J*** The fontspec documentation can only be typeset with `xelatex` ***\@gobble}\@ehc
-\fi
-
-\documentclass[a4paper]{l3doc}
-\usepackage{fontspec-doc-style}
-\begin{document}
-\maketitle
-\tableofcontents
-\newpage
-
-\include{fontspec-doc-intro}
-\include{fontspec-doc-fontsel}
-\include{fontspec-doc-featset}
-\include{fontspec-doc-opentype}
-\include{fontspec-doc-enc}
-\include{fontspec-doc-luatex}
-\include{fontspec-doc-xetex}
-\include{fontspec-doc-api}
-
-\end{document}
-
-\endinput
-
-% /©
-% ------------------------------------------------
-% The FONTSPEC package <wspr.io/fontspec>
-% ------------------------------------------------
-% Copyright 2004-2020 Will Robertson, LPPL "maintainer"
-% Copyright 2009-2015 Khaled Hosny
-% Copyright 2013 Philipp Gesang
-% Copyright 2013-2016 Joseph Wright
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% ©/
diff --git a/macros/latex/contrib/fontspec/fontspec.pdf b/macros/latex/contrib/fontspec/fontspec.pdf
deleted file mode 100644
index 97e8a293a0..0000000000
--- a/macros/latex/contrib/fontspec/fontspec.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/gentombow/LICENSE b/macros/latex/contrib/gentombow/LICENSE
index c463b620a9..9661ce7b8d 100644
--- a/macros/latex/contrib/gentombow/LICENSE
+++ b/macros/latex/contrib/gentombow/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2016-2019 Hironobu Yamashita
+Copyright (c) 2016-2020 Hironobu Yamashita
All rights reserved.
Redistribution and use in source and binary forms, with or without
diff --git a/macros/latex/contrib/gentombow/Makefile b/macros/latex/contrib/gentombow/Makefile
deleted file mode 100644
index f376d1ade0..0000000000
--- a/macros/latex/contrib/gentombow/Makefile
+++ /dev/null
@@ -1,36 +0,0 @@
-KANJI = -kanji=utf8
-FONTMAP = -f ipaex.map -f ptex-ipaex.map
-TEXMF = $(shell kpsewhich -var-value=TEXMFHOME)
-
-all: bounddvi.pdf bounddvi-en.pdf \
- gentombow.pdf gentombow-ja.pdf #pxgentombow.pdf
-
-.SUFFIXES: .tex .dvi .pdf
-.tex.dvi:
- platex $(KANJI) $<
- platex $(KANJI) $<
- rm *.aux *.log
-.dvi.pdf:
- dvipdfmx $(FONTMAP) $<
-
-bounddvi-en.dvi: bounddvi-en.tex
- latex $<
- latex $<
- rm *.aux *.log
-gentombow.pdf: gentombow.tex
- pdflatex $<
- pdflatex $<
- rm *.aux *.log
-
-.PHONY: install clean
-install:
- mkdir -p ${TEXMF}/doc/latex/gentombow
- cp ./Makefile ${TEXMF}/doc/latex/gentombow/
- cp ./LICENSE ${TEXMF}/doc/latex/gentombow/
- cp ./README.md ${TEXMF}/doc/latex/gentombow/
- cp ./*.pdf ${TEXMF}/doc/latex/gentombow/
- cp ./*.tex ${TEXMF}/doc/latex/gentombow/
- mkdir -p ${TEXMF}/tex/latex/gentombow
- cp ./*.sty ${TEXMF}/tex/latex/gentombow/
-clean:
- rm -f *.dvi *.pdf
diff --git a/macros/latex/contrib/gentombow/README.md b/macros/latex/contrib/gentombow/README.md
index 82fc0584d5..6ea7f2aea5 100644
--- a/macros/latex/contrib/gentombow/README.md
+++ b/macros/latex/contrib/gentombow/README.md
@@ -44,6 +44,6 @@ the 3-clause BSD license (see [LICENSE](./LICENSE)).
## Release Date
-2019-07-21
+2020-09-25
Hironobu Yamashita
diff --git a/macros/latex/contrib/gentombow/bounddvi-en.pdf b/macros/latex/contrib/gentombow/bounddvi-en.pdf
index cbbdb00ef2..fb9647d1ec 100644
--- a/macros/latex/contrib/gentombow/bounddvi-en.pdf
+++ b/macros/latex/contrib/gentombow/bounddvi-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/gentombow/bounddvi-en.tex b/macros/latex/contrib/gentombow/bounddvi-en.tex
index 61e78f985b..82046f888a 100644
--- a/macros/latex/contrib/gentombow/bounddvi-en.tex
+++ b/macros/latex/contrib/gentombow/bounddvi-en.tex
@@ -130,6 +130,7 @@ using \textsf{bounddvi} package.
\item 2016/10/25 v7.1 (HY) Support for p\LaTeXe\ tombow option,
compatibility with \textsf{graphics}/\textsf{color} packages
\item 2016/12/28 v7.2 (HY) Documentation for the new \texttt{dvips} behavior
+ \item 2020/09/25 v8.0 (HY) Support for \LaTeXe/p\LaTeXe~2020-10-01
\end{itemize}
\end{document}
diff --git a/macros/latex/contrib/gentombow/bounddvi.pdf b/macros/latex/contrib/gentombow/bounddvi.pdf
index ca36021fc9..c0a2b20af6 100644
--- a/macros/latex/contrib/gentombow/bounddvi.pdf
+++ b/macros/latex/contrib/gentombow/bounddvi.pdf
Binary files differ
diff --git a/macros/latex/contrib/gentombow/bounddvi.sty b/macros/latex/contrib/gentombow/bounddvi.sty
index 35432df5f0..3e355d63c1 100644
--- a/macros/latex/contrib/gentombow/bounddvi.sty
+++ b/macros/latex/contrib/gentombow/bounddvi.sty
@@ -1,7 +1,7 @@
%
% bounddvi.sty
-% 2016/12/28 v7.2-v7.0 h.y.acetaminophen@gmail.com
-% 2004/12/15 v6.0-v1.0 inoue@ma.ns.tcu.ac.jp
+% 2020/09/25 v8.0-v7.0 h.y.acetaminophen [at] gmail.com
+% 2004/12/15 v6.0-v1.0 inoue [at] ma.ns.tcu.ac.jp
%
% This package, originally written by Koichi Inoue
% and modified by Hironobu Yamashita, is distributed
@@ -10,7 +10,7 @@
%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{bounddvi}[2016/12/28 v7.2 bounddvi]
+\ProvidesPackage{bounddvi}[2020/09/25 v8.0 bounddvi]
% catcode trick to hide \iftombow ... \else ... \fi
% since \iftombow is defined only in pLaTeX.
@@ -50,6 +50,33 @@ Q \fi
% reset catcode trick
\catcode`\Q=11\relax
+%% Since LaTeX2e 2020-10-01, \@begindocumenthook is deprecated
+%% and \UseHook{begindocument} etc. are used.
+%% This code appends papersize special to the _end_ of the hook.
+%% (Note: support for old dvips is removed.)
+\ifx\AddToHook\@undefined\else
+ \AtBeginDocument{\AtBeginDvi{%
+ \begingroup
+ % if \stockwidth/\stockheight are defined & have effective
+ % values, copy them to \paperwidth/\paperheight
+ % for current group
+ \ifx\stockwidth\@undefined\else \ifdim\stockwidth>\z@
+ \paperwidth\stockwidth
+ \fi\fi
+ \ifx\stockheight\@undefined\else \ifdim\stockheight>\z@
+ \paperheight\stockheight
+ \fi\fi
+ % adjust for \mag and emit papersize special
+ \divide\paperwidth\@m\multiply\paperwidth\mag
+ \divide\paperheight\@m\multiply\paperheight\mag
+ \special{papersize=\the\paperwidth,\the\paperheight}%
+ \endgroup}}
+ \expandafter\endinput
+\fi
+
+%% The rest of this package is meant for
+%% LaTeX2e 2020-02-02 PL5 or older.
+
% following code is almost equivalent to
% \AtBeginDocument{\AtBeginDvi{...}}
% however, we append the specification to the _beginning_ of
@@ -59,16 +86,12 @@ Q \fi
\def\@prependto@begindocumenthook{\global\setbox\@begindvibox
\vbox{\csname yoko\endcsname\unvbox\@begindvibox
\begingroup
- % if \stockwidth/\stockheight are defined & have effective
- % values, copy them to \paperwidth/\paperheight
- % for current group
\ifx\stockwidth\@undefined\else \ifdim\stockwidth>\z@
\paperwidth\stockwidth
\fi\fi
\ifx\stockheight\@undefined\else \ifdim\stockheight>\z@
\paperheight\stockheight
\fi\fi
- % adjust for \mag and emit papersize special
\divide\paperwidth\@m\multiply\paperwidth\mag
\divide\paperheight\@m\multiply\paperheight\mag
\special{papersize=\the\paperwidth,\the\paperheight}%
diff --git a/macros/latex/contrib/gentombow/bounddvi.tex b/macros/latex/contrib/gentombow/bounddvi.tex
index b21b9c33a5..198bbb7fb9 100644
--- a/macros/latex/contrib/gentombow/bounddvi.tex
+++ b/macros/latex/contrib/gentombow/bounddvi.tex
@@ -143,6 +143,7 @@ DVIファイルは用紙サイズ情報を含みませんが、PostScriptやPDF
\item 2016/10/25 v7.1 (HY) p\LaTeXe{}のトンボサポート、
2016年の新しい\textsf{graphics}/\textsf{color}に対応
\item 2016/12/28 v7.2 (HY) 新仕様の\texttt{dvips}をドキュメント化
+ \item 2020/09/25 v8.0 (HY) \LaTeXe/p\LaTeXe~2020-10-01(予定)への対応
\end{itemize}
\end{document}
diff --git a/macros/latex/contrib/gentombow/gentombow-ja.pdf b/macros/latex/contrib/gentombow/gentombow-ja.pdf
index 7d26cf32e7..ada6318d41 100644
--- a/macros/latex/contrib/gentombow/gentombow-ja.pdf
+++ b/macros/latex/contrib/gentombow/gentombow-ja.pdf
Binary files differ
diff --git a/macros/latex/contrib/gentombow/gentombow-ja.tex b/macros/latex/contrib/gentombow/gentombow-ja.tex
index ce0d6e767e..763f790020 100644
--- a/macros/latex/contrib/gentombow/gentombow-ja.tex
+++ b/macros/latex/contrib/gentombow/gentombow-ja.tex
@@ -393,6 +393,11 @@ $30\,\mathrm{mm}$にしたいとき\footnote{ここでは「本文の領域以
\end{verbatim}
\end{dangerous}
+なお、\textsf{geometry}パッケージは用紙サイズ
+(\verb+\paperwidth+, \verb+\paperheight+)を変更する場合もあります。
+こうした場合に備え、\textsf{gentombow}パッケージは
+\textsf{geometry}パッケージよりも後に読み込むようにしてください。
+
\section*{雑記}
発端はこの話です。
diff --git a/macros/latex/contrib/gentombow/gentombow.pdf b/macros/latex/contrib/gentombow/gentombow.pdf
index b346075d67..c47dab8edb 100644
--- a/macros/latex/contrib/gentombow/gentombow.pdf
+++ b/macros/latex/contrib/gentombow/gentombow.pdf
Binary files differ
diff --git a/macros/latex/contrib/gentombow/gentombow.tex b/macros/latex/contrib/gentombow/gentombow.tex
index 3f6a1ada64..81be1fe6c5 100644
--- a/macros/latex/contrib/gentombow/gentombow.tex
+++ b/macros/latex/contrib/gentombow/gentombow.tex
@@ -280,6 +280,10 @@ conflict with the feature of \textsf{gentombow} package.
To set page layout correctly, you should adjust \verb+\oddsidemargin+
or \verb+\topmargin+, or leave it to \textsf{geometry} package.
+Note: since the package \textsf{geometry} also has a feature to
+change the paper size (\verb+\paperwidth+, \verb+\paperheight+),
+please load \textsf{gentombow} after \textsf{geometry}.
+
\section*{Change History}
\begin{itemize}
diff --git a/macros/latex/contrib/hyperxmp/README b/macros/latex/contrib/hyperxmp/README
index c5365e41b0..4fb504485d 100644
--- a/macros/latex/contrib/hyperxmp/README
+++ b/macros/latex/contrib/hyperxmp/README
@@ -23,8 +23,8 @@ for specifying PDF metadata. hyperxmp can embed a wide variety of
metadata as XMP, including the list of authors, document title,
contact information (telephone number, postal address, email address,
etc.), copyright statement, keywords, natural language, and much more.
-hyperxmp is compatible with pdflatex, latex+dvips+ps2pdf,
-latex+dvipdfm, xelatex, and lualatex.
+hyperxmp is compatible with pdflatex, lualatex, xelatex,
+latex+dvipdfm, and latex+dvips+Distiller.
Installation
============
diff --git a/macros/latex/contrib/hyperxmp/einstein-xmp.tex b/macros/latex/contrib/hyperxmp/einstein-xmp.tex
index f1b4d2ed06..7fad01f38a 100644
--- a/macros/latex/contrib/hyperxmp/einstein-xmp.tex
+++ b/macros/latex/contrib/hyperxmp/einstein-xmp.tex
@@ -6,45 +6,48 @@
\let\todayISO=\hyxmp@today
\makeatother
-\begin{alltt}
+\begin{Verbatim}[fontsize=\small,commandchars=\\\{\}]
<?xpacket begin="\string\357\string\273\string\277" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
- xmlns:pdf="http://ns.adobe.com/pdf/1.3/"
- xmlns:xmpRights="http://ns.adobe.com/xap/1.0/rights/"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
- xmlns:xmp="http://ns.adobe.com/xap/1.0/"
- xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
- xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
- xmlns:pdfaid="http://www.aiim.org/pdfa/ns/id/"
- xmlns:pdfuaid="http://www.aiim.org/pdfua/ns/id/"
- xmlns:pdfx="http://ns.adobe.com/pdfx/1.3/"
- xmlns:pdfxid="http://www.npes.org/pdfx/ns/id/"
- xmlns:prism="http://prismstandard.org/namespaces/basic/2.1/"
- xmlns:Iptc4xmpCore="http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/"
- xmlns:pdfaExtension="http://www.aiim.org/pdfa/ns/extension/"
- xmlns:pdfaSchema="http://www.aiim.org/pdfa/ns/schema#"
- xmlns:pdfaProperty="http://www.aiim.org/pdfa/ns/property#"
- xmlns:pdfaType="http://www.aiim.org/pdfa/ns/type#"
- xmlns:pdfaField="http://www.aiim.org/pdfa/ns/field#">
+ xmlns:pdf="http://ns.adobe.com/pdf/1.3/"
+ xmlns:xmpRights="http://ns.adobe.com/xap/1.0/rights/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
+ xmlns:xmp="http://ns.adobe.com/xap/1.0/"
+ xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
+ xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
+ xmlns:pdfaid="http://www.aiim.org/pdfa/ns/id/"
+ xmlns:pdfuaid="http://www.aiim.org/pdfua/ns/id/"
+ xmlns:pdfx="http://ns.adobe.com/pdfx/1.3/"
+ xmlns:pdfxid="http://www.npes.org/pdfx/ns/id/"
+ xmlns:prism="http://prismstandard.org/namespaces/basic/3.0/"
+ xmlns:jav="http://www.niso.org/schemas/jav/1.0/"
+ xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/"
+ xmlns:stFnt="http://ns.adobe.com/xap/1.0/sType/Font#"
+ xmlns:Iptc4xmpCore="http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/"
+ xmlns:pdfaExtension="http://www.aiim.org/pdfa/ns/extension/"
+ xmlns:pdfaSchema="http://www.aiim.org/pdfa/ns/schema#"
+ xmlns:pdfaProperty="http://www.aiim.org/pdfa/ns/property#"
+ xmlns:pdfaType="http://www.aiim.org/pdfa/ns/type#"
+ xmlns:pdfaField="http://www.aiim.org/pdfa/ns/field#">
<pdfaExtension:schemas>
<rdf:Bag>
-\end{alltt}
+\end{Verbatim}
\begin{center}
$\vdots$\par
\emph{[over 200 lines of boilerplate definitions not shown]}\par
$\vdots$\par
\end{center}
-\begin{alltt}
+\begin{Verbatim}[fontsize=\small,commandchars=\\\{\}]
</rdf:Bag>
</pdfaExtension:schemas>
<pdf:Keywords>
\metavalue{energy quanta, Hertz effect, quantum physics}
</pdf:Keywords>
<pdf:Producer>
- \metavalue{pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Debian)}
+ \metavalue{LuaHBTeX, Version 1.12.0 (TeX Live 2020)}
</pdf:Producer>
<pdf:PDFVersion>\metavalue{1.5}</pdf:PDFVersion>
<xmpRights:Marked>\metavalue{True}</xmpRights:Marked>
@@ -54,34 +57,28 @@
<dc:format>\metavalue{application/pdf}</dc:format>
<dc:title>
<rdf:Alt>
- <rdf:li xml:lang="en">
- \metavalue{On a heuristic viewpoint concerning the production
- and transformation of light}
- </rdf:li>
<rdf:li xml:lang="x-default">
- \metavalue{On a heuristic viewpoint concerning the production
- and transformation of light}
+ \metavalue{On a heuristic viewpoint concerning the production}
+ \metavalue{and transformation of light}
+ </rdf:li>
+ <rdf:li xml:lang="en">
+ \metavalue{On a heuristic viewpoint concerning the production}
+ \metavalue{and transformation of light}
</rdf:li>
<rdf:li xml:lang="de">
- \metavalue{\"Uber einen die Erzeugung und Verwandlung des Lichtes
- betreffenden heuristischen Gesichtspunkt}
+ \metavalue{\"Uber einen die Erzeugung und Verwandlung des Lichtes}
+ \metavalue{betreffenden heuristischen Gesichtspunkt}
</rdf:li>
</rdf:Alt>
</dc:title>
<dc:description>
<rdf:Alt>
<rdf:li xml:lang="en">\metavalue{photoelectric effect}</rdf:li>
- <rdf:li xml:lang="x-default">\metavalue{photoelectric effect}</rdf:li>
</rdf:Alt>
</dc:description>
<dc:rights>
<rdf:Alt>
- <rdf:li xml:lang="en">
- \metavalue{Copyright (C) 1905, Albert Einstein}
- </rdf:li>
- <rdf:li xml:lang="x-default">
- \metavalue{Copyright (C) 1905, Albert Einstein}
- </rdf:li>
+ <rdf:li xml:lang="en">\metavalue{Copyright (C) 1905, Albert Einstein}</rdf:li>
</rdf:Alt>
</dc:rights>
<dc:publisher>
@@ -122,9 +119,9 @@
\metavalue{Technical Assistant, Level III}
</photoshop:AuthorsPosition>
<photoshop:CaptionWriter>\metavalue{Scott Pakin}</photoshop:CaptionWriter>
- <xmp:CreateDate>\metavalue{2019-03-16T23:07:38-06:00}</xmp:CreateDate>
- <xmp:ModifyDate>\metavalue{2019-03-16T23:07:38-06:00}</xmp:ModifyDate>
- <xmp:MetadataDate>\metavalue{2019-03-16T23:07:38-06:00}</xmp:MetadataDate>
+ <xmp:CreateDate>\metavalue{2020-07-25T21:37:02-06:00}</xmp:CreateDate>
+ <xmp:ModifyDate>\metavalue{2020-07-25T21:37:02-06:00}</xmp:ModifyDate>
+ <xmp:MetadataDate>\metavalue{2020-07-25T21:37:02-06:00}</xmp:MetadataDate>
<xmp:CreatorTool>\metavalue{LaTeX with hyperref package}</xmp:CreatorTool>
<xmpMM:DocumentID>
\metavalue{uuid:6d1ac9ec-4ff2-515a-954b-648eeb4853b0}
@@ -163,10 +160,76 @@
<prism:url>
\metavalue{http://www.physik.uni-augsburg.de/annalen/history/einstein-papers/190517132-148.pdf}
</prism:url>
- <prism:byteCount>\metavalue{59846}</prism:byteCount>
- <prism:pageCount>\metavalue{17}</prism:pageCount>
+ <prism:byteCount>\metavalue{41197}</prism:byteCount>
+ <prism:pageCount>\metavalue{1}</prism:pageCount>
+ <jav:journal_article_version>\metavalue{VoR}</jav:journal_article_version>
+ <xmpTPg:Fonts>
+ <rdf:Bag>
+ <rdf:li rdf:parseType="Resource">
+ <stFnt:fontFace>\metavalue{LMRoman10-Regular}</stFnt:fontFace>
+ <stFnt:fontFamily>\metavalue{LM Roman 10}</stFnt:fontFamily>
+ <stFnt:fontName>\metavalue{LMRoman10-Regular}</stFnt:fontName>
+ <stFnt:versionString>
+ \metavalue{2.004;PS 2.004;hotconv 1.0.49;makeotf.lib2.0.14853}
+ </stFnt:versionString>
+ <stFnt:fontFileName>\metavalue{lmroman10-regular.otf}</stFnt:fontFileName>
+ <stFnt:fontType>\metavalue{opentype}</stFnt:fontType>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stFnt:fontFace>\metavalue{LMRoman17-Regular}</stFnt:fontFace>
+ <stFnt:fontFamily>\metavalue{LM Roman 17}</stFnt:fontFamily>
+ <stFnt:fontName>\metavalue{LMRoman17-Regular}</stFnt:fontName>
+ <stFnt:versionString>
+ \metavalue{2.004;PS 2.004;hotconv 1.0.49;makeotf.lib2.0.14853}
+ </stFnt:versionString>
+ <stFnt:fontFileName>\metavalue{lmroman17-regular.otf}</stFnt:fontFileName>
+ <stFnt:fontType>\metavalue{opentype}</stFnt:fontType>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stFnt:fontFace>\metavalue{LMRoman12-Regular}</stFnt:fontFace>
+ <stFnt:fontFamily>\metavalue{LM Roman 12}</stFnt:fontFamily>
+ <stFnt:fontName>\metavalue{LMRoman12-Regular}</stFnt:fontName>
+ <stFnt:versionString>
+ \metavalue{2.004;PS 2.004;hotconv 1.0.49;makeotf.lib2.0.14853}
+ </stFnt:versionString>
+ <stFnt:fontFileName>\metavalue{lmroman12-regular.otf}</stFnt:fontFileName>
+ <stFnt:fontType>\metavalue{opentype}</stFnt:fontType>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stFnt:fontName>\metavalue{cmr12}</stFnt:fontName>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stFnt:fontName>\metavalue{cmr8}</stFnt:fontName>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stFnt:fontName>\metavalue{cmr6}</stFnt:fontName>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stFnt:fontName>\metavalue{cmmi12}</stFnt:fontName>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stFnt:fontName>\metavalue{cmmi8}</stFnt:fontName>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stFnt:fontName>\metavalue{cmmi6}</stFnt:fontName>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stFnt:fontName>\metavalue{cmsy10}</stFnt:fontName>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stFnt:fontName>\metavalue{cmsy8}</stFnt:fontName>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stFnt:fontName>\metavalue{cmsy6}</stFnt:fontName>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stFnt:fontName>\metavalue{cmex10}</stFnt:fontName>
+ </rdf:li>
+ </rdf:Bag>
+ </xmpTPg:Fonts>
+ <xmpTPg:NPages>\metavalue{1}</xmpTPg:NPages>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end="w"?>
-\end{alltt}
+\end{Verbatim}
diff --git a/macros/latex/contrib/hyperxmp/hyperxmp.dtx b/macros/latex/contrib/hyperxmp/hyperxmp.dtx
index 9861784479..08e6d2fab8 100644
--- a/macros/latex/contrib/hyperxmp/hyperxmp.dtx
+++ b/macros/latex/contrib/hyperxmp/hyperxmp.dtx
@@ -22,7 +22,7 @@
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\ProvidesPackage{hyperxmp}
%<*package>
- [2020/06/19 v5.4 Store hyperref metadata in XMP format]
+ [2020/09/24 v5.5 Store hyperref metadata in XMP format]
%</package>
%
%<*driver>
@@ -39,11 +39,15 @@
\usepackage{microtype}
\usepackage{needspace}
\usepackage{varioref}
-\usepackage{alltt}
+\usepackage{fancyvrb}
\usepackage{multicol}
\usepackage{makeidx}
\usepackage{mmap}
\usepackage{enumitem}
+\usepackage{listings}
+\usepackage[labelformat=simple]{subcaption}
+\renewcommand\thesubfigure{(\alph{subfigure})}
+\usepackage{array}
\usepackage{booktabs}
\usepackage{marginfix}
\usepackage{ifmtarg}
@@ -112,7 +116,7 @@
%</driver>
% \fi
%
-% \CheckSum{2671}
+% \CheckSum{2804}
%
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -174,6 +178,19 @@
% \changes{v5.2}{2020/04/29}{Introduced the \protect\optname{pdfidentifier}
% package option, which enables an author to specify a unique identifier
% for the document}
+% \changes{v5.5}{2020/07/23}{Introduced the \protect\optname{pdfpubstatus}
+% package option, which enables an author to specify the document's
+% publication status. Thanks to Robin Schwab for pointing me to the
+% Journal Article Versions recommendation~\protect\cite{NISO2008:jav}}
+% \changes{v5.5}{2020/07/25}{Automatically assign
+% \protect\optname{pdfnumpages} and \protect\optname{pdfbytes} under
+% \protect\pdfLaTeX\ and \protect\LuaLaTeX}
+% \changes{v5.5}{2020/09/23}{Defer \protect\cs{AtEndPreamble} execution
+% until the end of the document. This enables
+% \protect\pkgname{hyperxmp} itself to be loaded from
+% \protect\cs{AtEndPreamble}, as is done by
+% \protect\pkgname{doclicense}~v2.2.0. Thanks to Tommaso Pecorella
+% for the bug report and help testing}
%
% ^^A \GetFileInfo{hyperxmp.dtx}
%
@@ -325,6 +342,44 @@
% }
% \makeatother
%
+% ^^A Index schemata.
+% \DeleteShortVerb{\|}
+% \makeatletter
+% \newenvironment{schemadesc}[2][]{^^A
+% \@ifmtarg{#1}{^^A
+% \index{#2 schema|(}^^A
+% \index{schemata&#2|(}^^A
+% \def\closeschemedesc{^^A
+% \index{schemata&#2|)}^^A
+% \index{#2 schema|)}^^A
+% }^^A
+% }{^^A
+% \index{#1 schema=#2 schema|(}^^A
+% \index{schemata&#1=#2|(}^^A
+% \def\closeschemedesc{^^A
+% \index{schemata&#1=#2|)}^^A
+% \index{#1 schema=#2 schema|)}^^A
+% }^^A
+% }^^A
+% }{^^A
+% \closeschemedesc
+% }
+% \newcommand{\schema}[2][]{^^A
+% \@ifmtarg{#1}{^^A
+% \kern0pt^^A
+% \index{#2 schema}^^A
+% \index{schemata&#2}^^A
+% #2^^A
+% }{^^A
+% \kern0pt^^A
+% \index{#1 schema=#2 schema}^^A
+% \index{schemata&#1=#2}^^A
+% #2^^A
+% }^^A
+% }
+% \makeatother
+% \MakeShortVerb{\|}
+%
% ^^A Pack figures a bit tighter onto the page.
% \renewcommand{\floatpagefraction}{0.8}
%
@@ -380,9 +435,9 @@
% \end{verbatim}
%
% In the preceding code, the |dc| namespace refers to the
-% \href{http://purl.org/DC/}{Dublin Core schema}, a collection of
-% metadata properties. The \xmpprop{dc:creator} property surrounds the
-% list of authors. The \textsf{rdf} namespace is the
+% \href{http://purl.org/DC/}{\schema{Dublin Core} schema}, a collection
+% of metadata properties. The \xmpprop{dc:creator} property surrounds
+% the list of authors. The \textsf{rdf} namespace is the
% \href{http://www.w3.org/RDF/}{Resource Description Framework}, which
% defines \xmpterm{rdf:Seq} as an ordered list of values. Each author
% is represented by an individual list item (\xmpterm{rdf:li}), making
@@ -393,7 +448,8 @@
% is intended to make it easy for computer applications to identify and
% categorize the document.
%
-% \paragraph{What metadata does \textsf{hyperxmp} process?}
+% \subsection{Supported metadata}
+%
% \pkgname{hyperxmp} knows how to embed all of the following types of
% metadata within a document:
%
@@ -419,6 +475,7 @@
% \item \acro{ISBN} (\xmpprop{prism:isbn})
% \item \acro{ISSN}---both print (\xmpprop{prism:issn}) and electronic (\xmpprop{prism:eIssn})
% \item issue number of parent publication (\xmpprop{prism:number})
+% \item journal article version (\xmpprop{jav:journal\_article\_version})
% \item keywords (\xmpprop{pdf:Keywords} and \xmpprop{dc:subject})
% \item language used (\xmpprop{dc:language})
% \item license \acro{URL} (\xmpprop{xmpRights:WebStatement})
@@ -454,15 +511,16 @@
% \noindent
% More types of metadata may be added in a future release.
%
-% \paragraph{How does \textsf{hyperxmp} compare to the \textsf{xmpincl}
-% package?}
-% The short answer is that \pkgname{xmpincl} is more flexible but
-% \pkgname{hyperxmp} is easier to use. With \pkgname{xmpincl}, the
-% author manually constructs a file of arbitrary \acro{XMP} data and the
-% package merely embeds it within the generated \acro{PDF} file. With
-% \pkgname{hyperxmp}, the author specifies values for various predefined
-% metadata types and the package formats those values as \acro{XMP} and embeds
-% the result within the generated \acro{PDF} file.
+% \subsection{Comparisons with similar packages}
+%
+% \paragraph{\textsf{xmpincl}}
+% In short, \pkgname{xmpincl} is more flexible but \pkgname{hyperxmp} is
+% easier to use. With \pkgname{xmpincl}, the author manually constructs
+% a file of arbitrary \acro{XMP} data and the package merely embeds it
+% within the generated \acro{PDF} file. With \pkgname{hyperxmp}, the
+% author specifies values for various predefined metadata types and the
+% package formats those values as \acro{XMP} and embeds the result
+% within the generated \acro{PDF} file.
%
% \pkgname{xmpincl} can embed \acro{XMP} only when running under \pdfLaTeX\ and
% only when in \acro{PDF}-generating mode. \pkgname{hyperxmp} additionally
@@ -475,6 +533,96 @@
% \pkgname{hyperxmp}, and use \pkgname{xmpincl} to include the modified
% \acro{XMP} code in the \acro{PDF} file.
%
+% \paragraph{\textsf{pdfx}}
+% The main difference between \pkgname{hyperxmp} and \pkgname{pdfx} is
+% that \pkgname{hyperxmp} tries to integrate as seamlessly as possible
+% into an existing document. It leverages \pkgname{hyperref}'s
+% \cs{hypersetup} command and many of \cs{hypersetup}'s options and
+% defines its own options in a compatible manner. In contrast,
+% \pkgname{pdfx} requires the user to create a separate
+% |\jobname.xmpdata| file containing \pkgname{pdfx}-defined commands for
+% each metadata element.
+%
+% \iffalse
+%<*listings>
+% \fi
+\newsavebox{\pdfxbox}
+\begin{lrbox}{\pdfxbox}
+ \begin{lstlisting}[
+ language=tex,
+ columns=fullflexible,
+ linewidth=14pc,
+ frame=single,
+ basicstyle=\footnotesize,
+ showlines,
+ morekeywords={\Title,\Author,\Language,\Keywords,\Publisher,\sep}
+ ]
+
+\Title{Baking through the ages}
+\Author{A. Baker\sep C. Kneader}
+\Language{en-GB}
+\Keywords{cookies\sep muffins\sep cakes}
+\Publisher{Baking International}
+
+ \end{lstlisting}
+\end{lrbox}
+
+\newsavebox{\hyxmpbox}
+\begin{lrbox}{\hyxmpbox}
+ \begin{lstlisting}[
+ language=tex,
+ columns=fullflexible,
+ linewidth=13pc,
+ frame=single,
+ basicstyle=\footnotesize,
+ morekeywords={\hypersetup}
+ ]
+\hypersetup{%
+ pdftitle={Baking through the ages},
+ pdfauthor={A. Baker, C. Kneader},
+ pdflang={en-GB},
+ pdfkeywords={cookies, muffins, cakes},
+ pdfpublisher={Baking International}
+}
+ \end{lstlisting}
+\end{lrbox}
+% \iffalse
+%</listings>
+% \fi
+%
+% Figure~\ref{fig:pdfx-hyxmp} adapts an example appearing in the
+% \pkgname{pdfx} manual to \pkgname{hyperxmp}.
+% \begin{figure}
+% \centering
+% \subcaptionbox{\pkgname{pdfx} (separate \texttt{.xmpdata} file)
+% \label{fig:ph-pdfx}}{%
+% \usebox{\pdfxbox}%
+% }
+% \hfil
+% \subcaptionbox{\pkgname{hyperxmp} (main document)
+% \label{fig:ph-hyxmp}}{%
+% \usebox{\hyxmpbox}}
+% \caption{Comparison of \pkgname{pdfx} and \pkgname{hyperxmp}}
+% \label{fig:pdfx-hyxmp}
+% \end{figure}
+% The two are comparable line-by-line in terms of how one specifies the
+% title, author, document language, keywords, and publisher. However,
+% \pkgname{hyperxmp} implicitly writes a wealth of additional metadata
+% into the \acro{XMP} packet such as the document date, creation date,
+% creator tool, file format, \acro{PDF} version, and unique document and
+% instance IDs. In fact, if a document omits all of the code shown in
+% Figure~\ref{fig:ph-hyxmp}, it will still store the \cs{title} and
+% \cs{author} data in the \acro{XMP} packet.
+%
+% One can therefore summarize the difference between \pkgname{hyperxmp}
+% and \pkgname{pdfx} as follows: \pkgname{pdfx} requires the author to
+% be fully explicit about the document's metadata while
+% \pkgname{hyperxmp} allows some metadata to be specified implicitly,
+% automatically inferring it when possible. In general,
+% \pkgname{hyperxmp} tries to simplify the author's task as much as
+% possible.
+%
+%
% \section{Usage}
%
% \pkgname{hyperxmp} works by postprocessing some of the package options
@@ -540,6 +688,7 @@
% \item \optname{pdfpagerange}
% \item \optname{pdfpublication}
% \item \optname{pdfpublisher}
+% \item \optname{pdfpubstatus}
% \item \optname{pdfpubtype}
% \item \optname{pdfrendition}
% \item \optname{pdfsource}
@@ -615,10 +764,7 @@
% the same as the document language (\pkgname{hyperref}'s
% \moptname{pdflang} option). If neither \optname{pdfmetalang} nor
% \optname{pdflang} is specified, \pkgname{hyperxmp} uses only
-% ``|x-default|'' as the metadata language. Note that ``|x-default|''
-% metadata are always included in addition to the specified metadata
-% language, as the user reading the document may not have specified a
-% language preference.
+% ``\xmpterm{x-default}'' as the metadata language.
%
% \acro{XMP} can include a universally unique identifier (\acro{UUID})
% for each document and for each instance of a given document. By
@@ -700,25 +846,47 @@
% \moptname{pdfpubtype} indicates the type of publication in which the
% document was published. This should be one of the \acro{PRISM}
% aggregation types~\cite{PRISM2012:cont-voc} such as |book|, |journal|,
-% |magazine|, |manual|, |report|, or |whitepaper|. For publications in
-% journals, magazines, and similar periodicals, a document can specify
-% the volume number with \moptname{pdfvolumenum} and the issue number
-% within the volume with \moptname{pdfissuenum}.
+% |magazine|, |manual|, |report|, or |whitepaper|.
+%
+% For publications in journals, magazines, and similar periodicals, a
+% document can specify the volume number with \moptname{pdfvolumenum}
+% and the issue number within the volume with \moptname{pdfissuenum}.
% \moptname{pdfpagerange} indicates the page numbers at which the
% document appears within the publication. The intention is that this
% be a comma-separated list of dash-separated ranges, as in
% |pdfpagerange={1,4-5}|. See Note~\ref{note:page-counting} on
% page~\pageref{note:page-counting} for advice on how to assign
-% \optname{pdfpagerange} semi-automatically. For books,
-% \moptname{pdfbookedition} names the edition of the book. This is
-% specified as text, not a number. As with \optname{pdfpublication}
-% (above), \optname{pdfbookedition} accepts a bracketed language code,
-% as in |pdfbookedition={[en]Second| |edition}|.
-%
-% The number of pages in the published, print version of the document
-% can be expressed with \moptname{pdfnumpages}.
-% Note~\ref{note:page-counting} on page~\pageref{note:page-counting}
-% explains how to automatically assign a value to \optname{pdfnumpages}.
+% \optname{pdfpagerange} semi-automatically. A journal article's
+% publication status can be indicated with \moptname{pdfpubstatus}.
+% This option expects to take one of the values listed in
+% Table~\ref{tbl:jav}. See the \acro{NISO}/\acro{ALPSP} Journal Article
+% Versions recommendation~\cite{NISO2008:jav} for an explanation of each
+% of those values and when to use them.
+%
+% \begin{table}
+% \centering
+% \caption{Valid arguments for \optname{pdfpubstatus}}
+% \label{tbl:jav}
+% \begin{tabular}{@{}>{\ttfamily}ll@{}}
+% \toprule
+% \multicolumn{1}{@{}l}{Value} & Meaning \\
+% \midrule
+% AO & Author's Original \\
+% SMUR & Submitted Manuscript Under Review \\
+% AM & Accepted Manuscript \\
+% P & Proof \\
+% VoR & Version of Record \\
+% CVoR & Corrected Version of Record \\
+% EVoR & Enhanced Version of Record \\
+% \bottomrule
+% \end{tabular}
+% \end{table}
+%
+% For books, \moptname{pdfbookedition} names the edition of the book.
+% This is specified as text, not a number. As with
+% \optname{pdfpublication} (above), \optname{pdfbookedition} accepts a
+% bracketed language code, as in |pdfbookedition={[en]Second|
+% |edition}|.
%
% \acro{XMP} metadata can include a number of dates (in fact,
% timestamps, as they include both date and time components).
@@ -780,43 +948,29 @@
% |\documentclass|, in which case \pkgname{hyperxmp} defaults to
% |draft|.
%
-% The \moptname{pdfbytes} option expresses the document's file size in
-% bytes. The intention is for this to be used to display an estimate of
-% download time to a user or to serve as a quick check on whether a file
-% was transmitted correctly between systems. This feature is easiest to
-% use in conjunction with \pdfTeX's |\pdffilesize| primitive:
-% ``|pdfbytes={\pdffilesize{\jobname.pdf}}|''. Note that this requires
-% a second run of |pdftex| because it queries the size of the \acro{PDF}
-% file from the \emph{previous} run.
-%
% \pkgname{hyperxmp} honors \pkgname{hyperref}'s \moptname{pdftrapped}
% option. A document can indicate whether it employs
% \href{https://en.wikipedia.org/wiki/Trap_(printing)}{color trapping}
% by specifying \optname{pdftrapped}=|True| or
% \optname{pdftrapped}=|False|. (\optname{pdftrapped}=|Unknown| is also
-% allowed.) A current limitation of \pkgname{hyperxmp} is that if a
-% value other than |False| is provided, a document will additionally
-% need to specify \optname{keeppdfinfo}
-% (page~\pageref{page:keeppdfinfo}) to ensure that the \acro{PDF}
-% \pdfterm{Info} dictionary specifies the correct trapping value.
+% allowed.)
%
% \moptname{pdfapart} and \moptname{pdfaconformance}, are used in
% conjunction with \pkgname{hyperref}'s \optname{pdfa} option to claim a
% particular \acro{PDF/A} standard by which the document abides. They
% default to \optname{pdfapart}=|1| and \optname{pdfaconformance}=|B|,
-% indicating the \PDFstd{A}{1}{b}{} standard. These can be
-% changed (with caution) to assert that the document abides by a
-% different standard (e.g.,~\PDFstd{A}{2}{u}{}). A document that
-% conforms to the \acro{PDF/UA} standard can use \moptname{pdfuapart} to
-% indicate the \acro{PDF/UA} conformance level. For example,
-% \optname{pdfuapart}=|1| asserts that the document respects
-% \PDFstd{UA}{1}{}{}. \moptname{pdfxstandard} indicates
-% the particular \acro{PDF/X} standard by which the document abides.
-% Unlike \optname{pdfapart} and \optname{pdfaconformance}, which accept a
-% number and a letter, respectively, \optname{pdfxstandard} expects a
-% textual identification of a standard name. The following are the
-% \acro{PDF/X} standard names that are considered acceptable at the time
-% of this writing.
+% indicating the \PDFstd{A}{1}{b}{} standard. These can be changed
+% (with caution) to assert that the document abides by a different
+% standard (e.g.,~\PDFstd{A}{2}{u}{}). A document that conforms to the
+% \acro{PDF/UA} standard can use \moptname{pdfuapart} to indicate the
+% \acro{PDF/UA} conformance level. For example, \optname{pdfuapart}=|1|
+% asserts that the document respects \PDFstd{UA}{1}{}{}.
+% \moptname{pdfxstandard} indicates the particular \acro{PDF/X} standard
+% by which the document abides. Unlike \optname{pdfapart} and
+% \optname{pdfaconformance}, which accept a number and a letter,
+% respectively, \optname{pdfxstandard} expects a textual identification
+% of a standard name. The following are the acceptable \acro{PDF/X}
+% standard names as of at the time of this writing.
%
% ^^A This list needs to be kept up-to-date with the standards checked
% ^^A by \@pdfxstandard.
@@ -842,16 +996,30 @@
% \PDFstd{X}{4}{p}{}, \PDFstd{X}{5}{n}{}, and \PDFstd{X}{5}{pg}{}
% standards has not been tested.
%
-% A rarely needed option, \moptname{pdfsource}, overrides the name of
-% the \LaTeX\ source file. It defaults to |\jobname.tex| but can be
-% replaced by any other string. If \optname{pdfsource} is given an
-% empty argument, no document source will be specified at all.
+% \subsubsection*{Rarely needed options}
+%
+% \moptname{pdfsource} overrides the name of the \LaTeX\ source file.
+% It defaults to |\jobname.tex| but can be replaced by any other string.
+% If \optname{pdfsource} is given an empty argument, no document source
+% will be specified at all.
+%
+% The number of pages in the published, print version of the document
+% can be expressed with \moptname{pdfnumpages}. This is computed
+% automatically when the document is built using either \pdfLaTeX\ or
+% \LuaLaTeX\@.
+%
+% The \moptname{pdfbytes} option expresses the document's file size in
+% bytes. The intention is for this to be used to display an estimate of
+% download time to a user or to serve as a quick check on whether a file
+% was transmitted correctly between systems. \optname{pdfbytes} is
+% computed automatically by both \pdfLaTeX\ and \LuaLaTeX, using the
+% file size from the previous build of the document.
%
% \bigskip
%
-% It is usually more convenient to provide values for the preceding
-% options using \pkgname{hyperref}'s |\hypersetup| command than on the
-% |\usepackage| command line. See
+% It is usually more convenient to provide values for all of the options
+% presented in this section using \pkgname{hyperref}'s |\hypersetup|
+% command than on the |\usepackage| command line. See
% \href{http://mirrors.ctan.org/macros/latex/contrib/hyperref/hyperref.pdf}{the
% \pkgname{hyperref} manual} for more information.
%
@@ -907,15 +1075,14 @@
% pdfvolumenum={322},
% pdfissuenum={6},
% pdfpagerange={132-148},
-% pdfnumpages={17},
% pdfissn={0003-3804},
% pdfeissn={1521-3889},
+% pdfpubstatus={VoR},
% pdflang={en},
% pdfmetalang={en},
% pdfurl={http://www.physik.uni-augsburg.de/annalen/history/einstein-papers/1905_17_132-148.pdf},
% pdfdoi={10.1002/andp.19053220607},
-% pdfidentifier={info:lccn/50013519},
-% pdfbytes={\pdffilesize{\jobname.pdf}} % Requires pdflatex
+% pdfidentifier={info:lccn/50013519}
% }
% \XMPLangAlt{de}{pdftitle={Über einen die Erzeugung und Verwandlung des
% Lichtes betreffenden heuristischen Gesichtspunkt}}
@@ -937,9 +1104,9 @@
% \begin{itemize}
% \item \pdfLaTeX
% \item \LuaLaTeX
+% \item \XeLaTeX
% \item \LaTeX~$+$ Dvipdfm
% \item \LaTeX~$+$ \Dvips~$+$ Adobe Acrobat Distiller
-% \item \XeLaTeX
% \end{itemize}
%
% \noindent
@@ -1162,7 +1329,7 @@
% document's author(s) as specified by |\author{|\dots|}|.
% \optname{pdfdate} defaults to the current date and time.
% \optname{pdfmetalang} defaults to the same value as \optname{pdflang}
-% if non-empty, ``|x-default|'' otherwise. \pkgname{hyperxmp}
+% if non-empty, ``\xmpterm{x-default}'' otherwise. \pkgname{hyperxmp}
% recognizes some class-specific metadata as well, such as that provided
% via the \Koma\ letter classes (e.g.,~\clsname{scrlttr2}) and the
% \ACMclass\ article class (\clsname{acmart}).
@@ -1248,25 +1415,16 @@
% package in the output file to ensure that any macros used in arguments
% to \pkgname{hyperxmp} options produced the expected output.
%
-% \usagenote{Automatic page counting}
+% \usagenote{Semi-automatic page ranges}
% \label{note:page-counting}
-% Although \optname{pdfnumpages} and \optname{pdfpagerange} are intended
-% to refer to pages in the final, published version of a document, it
-% would be convenient for them to be generated automatically when
-% producing a standalone \acro{PDF} file that is not intended to be
-% incorporated into a book, journal, or other publication (or if it is
-% known that the pages will not be renumbered for publication). One
-% approach is to use the \pkgname{totpages} package to keep track of the
-% number of pages.
-%
-% \begin{verbatim}
-% \hypersetup{%
-% pdfnumpages={\ref*{TotPages}}
-% }
-% \end{verbatim}
-%
-% \pkgname{totpages} can likewise help generate \optname{pdfpagerange}.
-% For documents numbered from~1 to~$n$, a simple
+% Although \optname{pdfpagerange} is intended to refer to pages in the
+% final, published version of a document, it would be convenient for
+% them to be generated automatically when producing a standalone
+% \acro{PDF} file that is not intended to be incorporated into a book,
+% journal, or other publication (or if it is known that the pages will
+% not be renumbered for publication). One approach is to use the
+% \pkgname{totpages} package help generate \optname{pdfpagerange}. For
+% documents numbered from~1 to~$n$, a simple
%
% \begin{verbatim}
% \hypersetup{%
@@ -1294,21 +1452,20 @@
%
% I don't know how unnumbered pages (e.g.,~blank pages and the title
% page) are supposed to be handled. I suppose blank pages can be
-% omitted from \optname{pdfpagerange}, and title page can be either
-% omitted or listed as |title|, for example.
+% omitted from \optname{pdfpagerange}, and the title page can be either
+% omitted or listed as \texttt{title}, for example.
%
% It appears that at least with version~2.00 of \pkgname{totpages}, the
% |TotPages| label is not defined until after the |\begin{document}|.
% Consequently, using |TotPages| within a \cs{hypersetup} invocation in
% the document's preamble will produce ``|??|'' as the page count in the
% \acro{XMP} packet. The solution is either to assign
-% \optname{pdfnumpages} and \optname{pdfpagerange} after the
-% |\begin{document}| or to ask \LaTeX\ to do that on your behalf:
+% \optname{pdfpagerange} after the |\begin{document}| or to ask
+% \LaTeX\ to do that on your behalf:
%
% \begin{verbatim}
% \AtBeginDocument{%
% \hypersetup{%
-% pdfnumpages={\ref*{TotPages}},
% pdfpagerange={1-\ref*{TotPages}}
% }%
% }
@@ -1342,6 +1499,17 @@
% \input{einstein-xmp}
%
% \begin{thebibliography}{99}
+% \bibitem{NISO2008:jav}
+% Beverley Acreman, Claire Bird, Catherine Jones, Peter McCracken, Cliff Morgan,
+% John Ober, Evan Owens, T.~Scott Plutchak, Bernie Rous, and Andrew Wray.
+% \newblock {J}ournal {A}rticle {V}ersions ({JAV}): Recommendations of the
+% {NISO}/{ALPSP} {JAV} {T}echnical {W}orking {G}roup.
+% \newblock Recommended practice, National Information Standards Organization,
+% Baltimore, Maryland, USA, April 2008.
+% \newblock ISBN~\mbox{978-1-880124-79-6}.
+% \newblock Available from
+% \url{https://www.niso.org/sites/default/files/2017-08/RP-8-2008.pdf}.
+%
% \bibitem{Adobe2010:pdfmark}
% Adobe Systems, Inc., San Jose, California.
% \newblock \emph{{A}dobe {A}crobat~{X} {SDK} Help, pdfmark Reference}.
@@ -1491,6 +1659,70 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\hyxmp@set@jobname}
+% Given an expanded \cs{jobname} followed by \cs{relax}, invoke the
+% \cs{hyxmp@set@jobname@dbl} macro if the job name is surrounded by
+% double quotes and the \cs{hyxmp@set@jobname@plain} macro otherwise.
+% \begin{macrocode}
+\def\hyxmp@set@jobname#1\relax{%
+ \@ifnextchar"{\hyxmp@set@jobname@dbl}{\hyxmp@set@jobname@plain}#1\relax
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hyxmp@set@jobname@dbl}
+% \begin{macro}{\hyxmp@jobname}
+% Set \cs{hyxmp@jobname} to to |#1|, discarding the surrounding double
+% quotes.
+% \begin{macrocode}
+\def\hyxmp@set@jobname@dbl"#1"\relax{\xdef\hyxmp@jobname{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\hyxmp@set@jobname@plain}
+% \begin{macro}{\hyxmp@jobname}
+% Set \cs{hyxmp@jobname} to to |#1|.
+% \begin{macrocode}
+\def\hyxmp@set@jobname@plain#1\relax{\xdef\hyxmp@jobname{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% Define \cs{hyxmp@jobname} as a sanitized version of \cs{jobname}. The
+% problem with using \cs{jobname} directly is that it surrounds the
+% filename with double quotes if it contains a space character. For
+% example, a source file named \texttt{my-file.tex} results in a
+% \cs{jobname} of ``\texttt{my-file}'', but a source file named
+% \texttt{my file.tex} results in a \cs{jobname} of ``|"my file"|''.
+% Trying to access |"my file".log| (as is done on
+% page~\pageref{page:jobname-log}) will fail because the filename does
+% not in fact contain literal double quotes.
+% \changes{v5.5}{2020/07/28}{Correctly handle source files with spaces
+% in their name. Thanks to Peter Dyballa for the bug report}
+% \begin{macrocode}
+\expandafter\hyxmp@set@jobname\jobname\relax
+% \end{macrocode}
+%
+% \begin{macro}{\hyxmp@aep@toks}
+% In order for \pkgname{hyperxmp} to be loaded safely during
+% \cs{AtEndPreamble} we need to ensure that we perform no
+% \cs{AtEndPreamble} actions until all top-level macro definitions have
+% been made. The most straightforward approach would be to move all of
+% \pkgname{hyperxmp}'s \cs{AtEndPreamble} stanzas to the end of the
+% package. However, this degrades readability of the source code. For
+% instance, an \cs{AtEndPreamble} stanza related to integration with
+% \pkgname{hyperref} could no longer appear in the ``Integration with
+% \pkgname{hyperref}'' section (Section~\ref{sec:hyperref-int}). Hence,
+% we instead store in a token list, \cs{hyxmp@aep@toks}, each
+% \cs{AtEndPreamble} stanza as we encounter it. This token list is
+% evaluated as one of the package's final actions
+% (Section~\ref{sec:clean-up}).
+% \begin{macrocode}
+\newtoks{\hyxmp@aep@toks}
+% \end{macrocode}
+% \end{macro}
+%
%
% \subsection{Integration with \textsf{hyperref}}
% \label{sec:hyperref-int}
@@ -1531,6 +1763,15 @@
\RequirePackage{ifthen}
% \end{macrocode}
%
+% There are a few places where \pkgname{hyperxmp} can take advantage of
+% \LuaTeX\ features. To simplify the use of \LuaTeX\ we load the
+% \pkgname{luacode} package.
+% \begin{macrocode}
+\ifLuaTeX
+ \RequirePackage{luacode}
+\fi
+% \end{macrocode}
+%
% \begin{macro}{\@ifmtargexp}
% \begin{macro}{\@ifnotmtargexp}
% |\@ifmtarg| and |\@ifnotmtarg| do not expand their first argument.
@@ -1824,7 +2065,7 @@
% \changes{v3.3}{2017/07/16}{Added this macro and the corresponding
% \protect\optname{pdfsource} option, at Niklas Beisert's request}
% \begin{macrocode}
-\edef\@pdfsource{\jobname.tex}
+\edef\@pdfsource{\hyxmp@jobname.tex}
\define@key{Hyp}{pdfsource}{\hyxmp@pdfstringdef\@pdfsource{#1}}
% \end{macrocode}
% \end{macro}
@@ -2030,6 +2271,14 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\@pdfpubstatus}
+% Prepare to store the document's journal article version.
+% \begin{macrocode}
+\def\@pdfpubstatus{}
+\define@key{Hyp}{pdfpubstatus}{\hyxmp@pdfstringdef\@pdfpubstatus{#1}}
+% \end{macrocode}
+% \end{macro}
+%
% The following eight macros---|\@pdfcontactaddress|,
% |\@pdfcontactcity|, |\@pdfcontactregion|, |\@pdfcontactpostcode|,
% |\@pdfcontactcountry|, |\@pdfcontactphone|, |\@pdfcontactemail|, and
@@ -2364,23 +2613,27 @@
% Assume that if the document loaded either \pkgname{babel} or
% \pkgname{polyglossia} it will eventually define one or more languages
% that \pkgname{hyperxmp} can list within a \xmpprop{dc:language}
-% element.
+% element. As explained in Section~\ref{sec:initial-prep}, we defer the
+% invocation of \cs{AtEndPreamble} to the end of the file.
% \begin{macrocode}
\edef\hyxmp@concated@metadata{}
-\AtEndPreamble{%
- \@ifpackageloaded{babel}{%
- \edef\hyxmp@concated@metadata{babel}%
- }{%
- \@ifpackageloaded{polyglossia}{%
- \edef\hyxmp@concated@metadata{polyglossia}%
+\expandafter\hyxmp@aep@toks\expandafter=\expandafter{%
+ \the\hyxmp@aep@toks
+ \AtEndPreamble{%
+ \@ifpackageloaded{babel}{%
+ \edef\hyxmp@concated@metadata{babel}%
}{%
+ \@ifpackageloaded{polyglossia}{%
+ \edef\hyxmp@concated@metadata{polyglossia}%
+ }{%
+ }%
}%
}%
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\hyxmp@find@metadata}
+% \begin{macro}{\hyxmp@warn@if@no@metadata}
% \begin{macro}{\hyxmp@concated@metadata}
% Issue a warning message if the author failed to specify any metadata
% at all. This excludes metadata that is included automatically such as
@@ -2389,7 +2642,7 @@
% with other information. We also don't examine |\@pdfapart| or
% |\@pdfaconformance| because those have nonempty default values.
% \begin{macrocode}
-\newcommand*{\hyxmp@find@metadata}{%
+\newcommand*{\hyxmp@warn@if@no@metadata}{%
\edef\hyxmp@concated@metadata{%
\hyxmp@concated@metadata
\@baseurl
@@ -2434,7 +2687,7 @@
}%
\ifx\hyxmp@concated@metadata\@empty
\PackageWarningNoLine{hyperxmp}{%
- \jobname.tex did not specify any metadata to\MessageBreak
+ \hyxmp@jobname.tex did not specify any metadata to\MessageBreak
include in the XMP packet.\space\space Please see the\MessageBreak
hyperxmp documentation for instructions on how to\MessageBreak
provide metadata values to hyperxmp}%
@@ -2496,54 +2749,25 @@
% \end{macro}
% \end{macro}
%
-% Rather than load \pkgname{hyperref} ourself we let the author do it
-% then verify he actually did. This approach gives the author the
-% flexibility to load \pkgname{hyperxmp} and \pkgname{hyperref} in
-% either order and to call |\hypersetup| anywhere in the document's
-% preamble, not just before \pkgname{hyperxmp} is loaded.
-% \begin{macrocode}
-\AtEndPreamble{%
- \@ifpackageloaded{hyperref}{%
-% \end{macrocode}
-% If \cs{@pdflang} is not set, see if we can detect the document
-% language via either the \pkgname{babel} or \pkgname{polyglossia}
-% packages.
+% Right before we reach the |\begin{document}| we check if
+% \pkgname{hyperref} was loaded. In normal usage, the document will
+% already have done a |\usepackage{hyperref}| because otherwise,
+% \cs{hypersetup} will not have been defined, and only a limited amount
+% of metadata will be included. However, in case the author is relying
+% exclusively on \pkgname{hyperxmp}'s automatically detected metadata,
+% we'll need to load \pkgname{hyperref} now. As explained in
+% Section~\ref{sec:initial-prep}, we defer the invocation of
+% \cs{AtEndPreamble} to the end of the file.
+% \changes{v5.5}{2020/06/24}{Load \protect\pkgname{hyperref} automatically
+% if the document does not do so explicitly, as requested by Robin Schwab}
% \begin{macrocode}
- \@if@def@and@nonempty{@pdflang}{%
- }{%
- \hyxmp@detect@langs
- }%
-% \end{macrocode}
-% Fill in any missing metadata we can using values provided by the author
-% via mechanisms other than the \cs{hypersetup} command.
-% \begin{macrocode}
- \hyxmp@auto@assign@data
-% \end{macrocode}
-% Most \acro{PDF} standards dictate that if the same metadata appear in
-% both the \acro{XMP} packet and the \acro{PDF} \pdfterm{Info}
-% dictionary, the metadata must match. This requirement poses a problem
-% for a user-unspecified \optname{pdfcreationdate} in the context of
-% \XeLaTeX\@. In this case we explicitly define |\@pdfcreationdate| as
-% |\hyxmp@today@pdf| to prevent the \cmdname{xdvipdfmx} back-end
-% processor from detecting a missing \pdfterm{CreationDate} in the
-% \pdfterm{Info} dictionary and adding its own---typically a few seconds
-% after \pkgname{hyperxmp} has constructed an \xmpprop{xmp:CreateDate}
-% for the \acro{XMP} metadata and leading to a metadata mismatch.
-% \begin{macrocode}
- \@ifundefined{XeTeXversion}{}{%
- \@ifmtargexp{\@pdfcreationdate}{%
- \let\@pdfcreationdate=\hyxmp@today@pdf
- }%
- {}%
- }%
-% \end{macrocode}
-% If the document claims to comply with one or more \acro{PDF}
-% standards, check that all of the requisite metadata are present.
-% \begin{macrocode}
- \hyxmp@check@standards
+\expandafter\hyxmp@aep@toks\expandafter=\expandafter{%
+ \the\hyxmp@aep@toks
+ \AtEndPreamble{%
+ \RequirePackage{hyperref}%
% \end{macrocode}
% Older versions of \pkgname{hyperref} write the \pdfterm{Info}
-% dictionary to the \acro{PDF} file at the end of the document. New
+% dictionary to the \acro{PDF} file at the end of the document. Newer
% versions of \pkgname{hyperref} write the \pdfterm{Info} dictionary to
% the \acro{PDF} file at the \emph{beginning} of the document. For
% compatibility with both old and new \pkgname{hyperref} implementations
@@ -2556,39 +2780,44 @@
% \begin{macrocode}
\hyxmp@no@info@lists
% \end{macrocode}
-% We wait until the end of the document to construct the \acro{XMP}
-% packet and write it to the \acro{PDF} document catalog. This gives
-% the author ample opportunity to provide metadata to \pkgname{hyperref}
-% and thereby \pkgname{hyperxmp}.
-% \begin{macrocode}
- \hyxmp@at@end{%
- \hyxmp@find@metadata
- \hyxmp@embed@packet
- }%
- }{%
- \PackageWarningNoLine{hyperxmp}{%
- \jobname.tex failed to include a\MessageBreak
- \string\usepackage\string{hyperref\string}
- in the preamble.\MessageBreak
- Consequently, all hyperxmp functionality will be\MessageBreak
- disabled}%
+% If \optname{pdftitle} is undefined but the author invoked \cs{title},
+% we copy the latter to the former. This addresses two problems:
+% (1)~handling \LaTeX\ classes in which \cs{maketitle} clears \cs{title}
+% and (2)~ensuring that \pkgname{hyperref} writes the same title to the
+% \acro{PDF} \pdfterm{Info} dictionary that \pkgname{hyperxmp} writes to
+% the \acro{XMP} packet. We do likewise for \cs{author}~$\rightarrow$
+% \optname{pdfauthor}.
+%
+% One tricky bit is that the standard \LaTeX\ classes do not define
+% \cs{@title} and \cs{@author} as empty strings but rather as calls to
+% \cs{@latex@warning@no@line} that complain about a missing
+% title/author. Hence, we can't simply test if the title and author are
+% empty because they're not. Instead, we first locally redefine
+% \cs{@latex@warning@no@line} to discard its argument then test if any
+% text remains.
+% \changes{v5.5}{2020/07/24}{Copy \protect\cs{title} to
+% \protect\optname{pdftitle} and \protect\cs{author} to
+% \protect\optname{pdfauthor} at the start of the document to improve
+% consistency between \protect\acro{XMP} and \protect\acro{PDF} metadata}
+% \begin{macrocode}
+ \begingroup
+ \let\@latex@warning@no@line=\@gobble
+ \hyxmp@use@first@valid{pdftitle}{\@pdftitle}{%
+ \scr@subject@var,%
+ \@title
+ }%
+ \hyxmp@use@first@valid{pdfauthor}{\@pdfauthor}{%
+ \scr@fromname@var,%
+ \@author
+ }%
+ \endgroup
}%
}
% \end{macrocode}
%
-% A number of classes either require or recommend that authors declare
-% various class-specific metadata \emph{after} the |\begin{document}|.
-% So where do we invoke \cs{hyxmp@auto@assign@data}? On one hand, we
-% want to invoke it before the |\begin{document}| because this may
-% obviate \pkgname{hyperxmp}'s ``\meta{job name} did not specify any
-% metadata'' warning message. On the other hand, we want to invoke it
-% after the |\begin{document}| so it picks up metadata not specified in
-% the preamble. Our solution is to invoke \cs{hyxmp@auto@assign@data}
-% twice: both before the |\begin{document}| and at the |\end{document}|.
-% We additionally identify here the natural language(s) in use because
-% these aren't known until the end of the document when provided by
-% \pkgname{babel} or \pkgname{polyglossia}. Also, \pkgname{hyperref}
-% forbids changes to \optname{pdflang} past the |\begin{document}|.
+% When we reach the |\end{document}| we need to gather up the metadata
+% specified explicitly by the user, infer additional metadata where
+% possible, and write the \acro{XMP} packet to the \acro{PDF} file.
% \changes{v1.3}{2011/04/25}{Introduced the \protect\optname{pdfmetalang}
% package option, which enables an author to specify the language in which he
% wrote the document's metadata}
@@ -2596,24 +2825,32 @@
% Oberdiek to properly encode \cs{@pdfmetalang}}
% \changes{v3.3}{2017/07/21}{Don't overwrite an existing
% \protect\optname{pdfmetalang} with \protect\optname{pdflang} or
-% \protect\texttt{x-default}. This addresses a bug report by Niklas
+% \protect\xmpterm{x-default}. This addresses a bug report by Niklas
% Beisert}
% \changes{v5.4}{2020/06/18}{Moved the automatic assignment of
% \protect\cs{@pdflang} and \protect\cs{@pdfmetalang} from
% \protect\cs{hyxmp@auto@assign@data} to within a call to
% \protect\cs{hyxmp@at@end}}
+% \changes{v5.5}{2020/07/21}{Move most of the \protect\cs{AtEndPreamble}
+% code to \protect\cs{hyxmp@at@end}}
% \begin{macrocode}
\hyxmp@at@end{%
- \hyxmp@set@dc@lang
- \ifx\@pdfmetalang\@empty
- \ifx\@pdflang\@empty
- \let\@pdfmetalang=\hyxmp@x@default
- \else
- \edef\@pdfmetalang{\@pdflang}%
- \fi
- \fi
- \hyxmp@xmlify\@pdfmetalang
+% \end{macrocode}
+% Fill in any missing metadata we can using values provided by the author
+% via mechanisms other than the \cs{hypersetup} command.
+% \begin{macrocode}
\hyxmp@auto@assign@data
+% \end{macrocode}
+% If the document claims to comply with one or more \acro{PDF}
+% standards, check that all of the requisite metadata are present.
+% \begin{macrocode}
+ \hyxmp@check@standards
+% \end{macrocode}
+% We can finally construct the \acro{XMP} packet and write it to the
+% \acro{PDF} document catalog.
+% \begin{macrocode}
+ \hyxmp@warn@if@no@metadata
+ \hyxmp@embed@packet
}
% \end{macrocode}
%
@@ -2638,23 +2875,29 @@
%
% \begin{macro}{\hyxmp@set@koma@phones}
% \changes{v5.3}{2020/06/07}{Added this macro}
+% \changes{v5.5}{2020/07/08}{Support hyperlinks and other markup in
+% \protect\texttt{frommobilephone} and \protect\texttt{fromphone},
+% as requested by Robin Schwab}
% \begin{macro}{\hyxmp@koma@phones}
% Define \cs{hyxmp@koma@phones} as a comma-separated list of the phone
% numbers provided to a \Koma\ letter class (mobile and landline).
% \begin{macrocode}
\newcommand*{\hyxmp@set@koma@phones}{%
- \@if@def@and@nonempty{scr@frommobilephone@var}{%
- \@if@def@and@nonempty{scr@fromphone@var}{%
- \edef\hyxmp@koma@phones{\scr@frommobilephone@var,\scr@fromphone@var}%
- }{%
- \edef\hyxmp@koma@phones{\scr@frommobilephone@var}%
- }%
- }{%
- \@if@def@and@nonempty{scr@fromphone@var}{%
- \edef\hyxmp@koma@phones{\scr@fromphone@var}%
+ \begingroup
+ \Hy@unicodefalse
+ \@if@def@and@nonempty{scr@frommobilephone@var}{%
+ \@if@def@and@nonempty{scr@fromphone@var}{%
+ \hyxmp@pdfstringdef\hyxmp@koma@phones{\scr@frommobilephone@var,\scr@fromphone@var}%
+ }{%
+ \hyxmp@pdfstringdef\hyxmp@koma@phones{\scr@frommobilephone@var}%
+ }%
}{%
+ \@if@def@and@nonempty{scr@fromphone@var}{%
+ \hyxmp@pdfstringdef\hyxmp@koma@phones{\scr@fromphone@var}%
+ }{%
+ }%
}%
- }%
+ \endgroup
}
% \end{macrocode}
% \end{macro}
@@ -2709,9 +2952,28 @@
% \begin{macrocode}
\newcommand*{\hyxmp@auto@assign@data}{%
% \end{macrocode}
-% If the author left \optname{pdftitle} blank but specified |\title|,
-% use the title for \optname{pdftitle}. Do likewise for various other
-% metadata: identify author-provided information that can be co-opted
+% If \cs{@pdflang} is not set, see if we can detect the document
+% language via either the \pkgname{babel} or \pkgname{polyglossia}
+% packages.
+% \begin{macrocode}
+ \@if@def@and@nonempty{@pdflang}{%
+ \let\hyxmp@dc@lang=\@pdflang
+ }{%
+ \hyxmp@detect@langs
+ }%
+% \end{macrocode}
+% Replace an empty \cs{@pdfmetalang}. If \cs{@pdflang} is defined, use
+% that as the metadata language. Otherwise, use \xmpterm{x-default}.
+% \begin{macrocode}
+ \ifx\@pdfmetalang\@empty
+ \ifx\@pdflang\@empty
+ \let\@pdfmetalang=\hyxmp@x@default
+ \else
+ \edef\@pdfmetalang{\@pdflang}%
+ \fi
+ \fi
+% \end{macrocode}
+% Identify various author-provided information that can be co-opted
% for use as \acro{XMP} metadata.
% \changes{v2.7}{2016/02/01}{Automatically use \cs{title} and \cs{author}
% if \protect\optname{pdftitle} and \protect\optname{pdfauthor} are left
@@ -2719,15 +2981,14 @@
% \changes{v5.3}{2020/05/29}{Consider other author-provided sources of
% metadata. Thanks to Robin Schwab for proposing that
% \protect\pkgname{hyperxmp} use the \Koma\ letter classes's metadata}
+% \changes{v5.5}{2020/07/24}{Moved the language-detection and
+% \protect\XeTeX\ date-detection code here from the
+% \protect\cs{hyxmp@at@end} block}
+% \changes{v5.5}{2020/07/24}{Use \protect\LuaTeX\ mechanisms, when available,
+% to automatically compute the page count}
+% \changes{v5.5}{2020/07/24}{Moved title and author autodetection to the
+% \protect\cs{AtEndPreamble}}
% \begin{macrocode}
- \hyxmp@use@first@valid{pdftitle}{\@pdftitle}{%
- \scr@subject@var,%
- \@title
- }%
- \hyxmp@use@first@valid{pdfauthor}{\@pdfauthor}{%
- \scr@fromname@var,%
- \@author
- }%
\hyxmp@use@first@valid{pdfcontactemail}{\@pdfcontactemail}{%
\scr@fromemail@var
}%
@@ -2752,6 +3013,98 @@
% redefined to do nothing.
% \begin{macrocode}
\hyxmp@parse@acmart
+% \end{macrocode}
+% Most \acro{PDF} standards dictate that if the same metadata appear in
+% both the \acro{XMP} packet and the \acro{PDF} \pdfterm{Info}
+% dictionary, the metadata must match. This requirement poses a problem
+% for a user-unspecified \optname{pdfcreationdate} in the context of
+% \XeLaTeX\@. In this case we explicitly define |\@pdfcreationdate| as
+% |\hyxmp@today@pdf| to prevent the \cmdname{xdvipdfmx} back-end
+% processor from detecting a missing \pdfterm{CreationDate} in the
+% \pdfterm{Info} dictionary and adding its own---typically a few seconds
+% after \pkgname{hyperxmp} has constructed an \xmpprop{xmp:CreateDate}
+% for the \acro{XMP} metadata and leading to a metadata mismatch.
+% \begin{macrocode}
+ \@ifundefined{XeTeXversion}{}{%
+ \@ifmtargexp{\@pdfcreationdate}{%
+ \let\@pdfcreationdate=\hyxmp@today@pdf
+ }%
+ {}%
+ }%
+% \end{macrocode}
+% Query the document currently being built for page and byte counts.
+% \begin{macrocode}
+ \hyxmp@query@self
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \pkgname{hyperxmp} can directly query the page count using
+% \LuaTeX\ features. When any other \TeX\ engine is used,
+% \pkgname{hyperxmp} employs the \pkgname{totpages} package to help
+% tally the total number of pages.
+% \begin{macrocode}
+\ifLuaTeX
+\else
+ \RequirePackage{totpages}
+\fi
+% \end{macrocode}
+%
+% Determine the size of the output file from the \emph{previous} run of
+% \LuaLaTeX\ or \pdfLaTeX\@. This action has to be performed before the
+% |\begin{document}| because at that point the size of the output file
+% is reset to zero. We use |\jobname.pdf| as the name of the output
+% file even in the \LuaLaTeX\ case because |status.output_file_name| is
+% not defined at this point.
+% \begin{macrocode}
+\ifLuaTeX
+ \edef\hyxmp@prev@pdf@size{%
+ \luadirect{%
+local nbytes = lfs.attributes("\hyxmp@jobname.pdf", "size")
+if nbytes then
+ tex.write(nbytes)
+end
+ }%
+ }%
+\else
+ \ifPDFTeX
+ \edef\hyxmp@prev@pdf@size{\pdffilesize{\hyxmp@jobname.pdf}}%
+ \fi
+\fi
+% \end{macrocode}
+%
+% \begin{macro}{\hyxmp@query@self}
+% Query the document currently being built to acquire page and byte counts.
+% \changes{v5.5}{2020/07/25}{Added this macro}
+% \begin{macrocode}
+\newcommand*{\hyxmp@query@self}{%
+% \end{macrocode}
+% \LuaTeX\ exposes via \texttt{status.total\_pages} the number of pages
+% written. We use this mechanism when available to assign
+% \cs{@pdfnumpages}. To finalize the page count we first issue a
+% \cs{clearpage}.
+% \begin{macrocode}
+ \ifLuaTeX
+ \@if@def@and@nonempty{@pdfnumpages}{%
+ }{%
+ \clearpage
+ \xdef\@pdfnumpages{\luadirect{tex.print(status.total_pages)}}%
+ }%
+ \else
+% \end{macrocode}
+% Without \LuaTeX\ we rely on the \pkgname{totpages} package to help
+% count the number of pages. This may require an additional run of
+% \LaTeX, but the user will be notified in that case.
+% \begin{macrocode}
+ \pdfstringdef\@pdfnumpages{\ref*{TotPages}}%
+ \fi
+% \end{macrocode}
+% If \optname{pdfbytes} hasn't been set, set it to the output file's size
+% from the previous run.
+% \begin{macrocode}
+ \hyxmp@use@first@valid{pdfbytes}{\@pdfbytes}{%
+ \hyxmp@prev@pdf@size
+ }%
}
% \end{macrocode}
% \end{macro}
@@ -2979,39 +3332,25 @@
\@ifclassloaded{acmart}{}{\let\hyxmp@parse@acmart=\relax}
% \end{macrocode}
%
-% \begin{macro}{\hyxmp@set@dc@lang}
% \begin{macro}{\hyxmp@dc@lang}
-% \cs{@pdflang} is used in both the \acro{PDF} document catalog (the
-% \pdfterm{Lang} key, written to the \acro{PDF} file by
-% \pkgname{hyperref}) and in the Dublin Core \xmpprop{dc:language} tag
-% (Section~\ref{sec:dublin-core}). Normally, these are the same.
-% However, \pdfterm{Lang} accepts only a single language while
-% \xmpprop{dc:language} accepts multiple languages. If the document
-% loads either \pkgname{babel} or \pkgname{polyglossia} and does not
-% specify \optname{pdflang} in \cs{hypersetup}, \cs{hyxmp@set@dc@lang}
-% is redefined below (in \cs{hyxmp@detect@langs}) to set
-% \cs{hyxmp@dc@lang} to \pkgname{babel}\slash\pkgname{polyglossia}'s
-% list of used languages (once this is known). Otherwise,
-% \cs{hyxmp@set@dc@lang} assigns the language specified by
-% \optname{pdflang} (if any) to \cs{hyxmp@dc@lang}.
+% \cs{hyxmp@dc@lang} is a comma-separated list of all languages used in
+% the document.
% \begin{macrocode}
-\newcommand*{\hyxmp@set@dc@lang}{%
- \let\hyxmp@dc@lang=\@pdflang
-}
+\let\hyxmp@dc@lang=\@empty
% \end{macrocode}
% \end{macro}
-% \end{macro}
%
% \begin{macro}{\hyxmp@detect@langs}
% If \optname{pdflang} was not specified, try to determine the document
% language(s) using either \pkgname{babel}'s or \pkgname{polyglossia}'s
-% definitions. If so, we redefine \cs{hyxmp@set@dc@lang} as a
-% comma-separate list of languages used in the document.
+% definitions.
% \changes{v5.3}{2020/06/08}{Acquire the default language from the
% \protect\pkgname{polyglossia} package, if loaded. Thanks to
% Robin Schwab for bringing that package to my attention}
% \changes{v5.4}{2020/06/16}{Refactored language detection into a
-% separate command}
+% separate command}
+% \changes{v5.5}{2020/07/21}{Set the language(s) immediately instead of
+% deferring them to \protect\cs{hyxmp@set@dc@lang}}
% \begin{macrocode}
\newcommand*{\hyxmp@detect@langs}{%
\@ifundefined{mainbcp47id}{%
@@ -3034,103 +3373,45 @@
\let\@pdflang=\@empty
}{%
% \end{macrocode}
-% Use \pkgname{babel}'s \cs{LocaleForEach} and \cs{getlocaleproperty} to
-% construct a comma-separate list of all document languages. We also
-% set \cs{@pdflang} within \cs{hyxmp@set@dc@lang}.
-% (\cs{hyxmp@detect@langs} should only be called if \cs{@pdflang} is
-% empty.) Unlike \pkgname{polyglossia}, \pkgname{babel} does not
-% provide information about the main language until after the
-% |\begin{document}| so we have to wait until \cs{hyxmp@set@dc@lang} is
-% called to set it.
% \changes{v5.4}{2020/06/17}{Added support for \protect\pkgname{babel}}
+% \changes{v5.5}{2020/07/16}{Store the main language in \protect\cs{@pdflang}.
+% Thanks to Javier Bezos for his help with the \protect\pkgname{hyperxmp}
+% code and for modifying \protect\pkgname{babel} for
+% \protect\pkgname{hyperxmp}'s benefit}
+% \begin{macro}{\hyxmp@dc@lang}
+% \begin{macro}{\hyxmp@lang@tag}
+% \begin{macro}{\hyxmp@lang@name}
+% \begin{macro}{\@pdflang}
+% Use \pkgname{babel}'s \cs{LocaleForEach} and \cs{getlocaleproperty} to
+% set \cs{@pdflang} to the document's main language and
+% \cs{hyxmp@dc@lang} to a comma-separated list of all languages used.
% \begin{macrocode}
\BabelEnsureInfo
- \renewcommand*{\hyxmp@set@dc@lang}{%
- \getlocaleproperty\@pdflang{\bbl@main@language}{identification/tag.bcp47}%
- \hyxmp@write@pdflang
- \let\hyxmp@dc@lang=\relax
- \LocaleForEach{%
- \getlocaleproperty\hyxmp@lang@tag{####1}{identification/tag.bcp47}%
- \ifx\hyxmp@dc@lang\relax
- \edef\hyxmp@dc@lang{\hyxmp@lang@tag}%
- \else
- \edef\hyxmp@dc@lang{\hyxmp@dc@lang,\hyxmp@lang@tag}%
- \fi
- }%
+ \LocaleForEach{%
+ \getlocaleproperty\hyxmp@lang@tag{##1}{identification/tag.bcp47}%
+ \ifx\hyxmp@dc@lang\@empty
+ \xdef\hyxmp@dc@lang{\hyxmp@lang@tag}%
+ \else
+ \xdef\hyxmp@dc@lang{\hyxmp@dc@lang,\hyxmp@lang@tag}%
+ \fi
+ \def\hyxmp@lang@name{##1}%
+ \ifx\hyxmp@lang@name\bbl@main@language
+ \edef\@pdflang{\hyxmp@lang@tag}%
+ \fi
}%
}%
}{%
% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
% Use \pkgname{polyglossia}'s \cs{mainbcp47id} as the document's main
% language and its \cs{xpg@bcp@loaded} as a comma-separated list of all
% document languages.
% \begin{macrocode}
\xdef\@pdflang{\csname mainbcp47id\endcsname}%
- \renewcommand*{\hyxmp@set@dc@lang}{%
- \edef\hyxmp@dc@lang{\xpg@bcp@loaded}%
- }%
- }%
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\hyxmp@write@pdflang}
-% Here's a conundrum: \pkgname{babel} doesn't provide access to
-% information on the document's main language until after the
-% |\begin{document}|. However, \pkgname{hyperref} allows
-% \optname{pdflang} to be set only \emph{before} the |\begin{document}|.
-% So what do we do?
-%
-% Note that the underlying \cs{@pdflang} macro serves two purposes:
-% \pkgname{hyperref} uses it to set the \pdfterm{Lang} entry in the
-% \acro{PDF} document catalog, and \pkgname{hyperxmp} uses it as the
-% default metadata language. The latter is used in \xmpprop{dc:title}
-% and other \acro{XMP} properties that can include per-language
-% variants. We set \cs{@pdflang} once we have the main-language
-% information from \pkgname{babel}. As this is too late for
-% \pkgname{hyperref}, we bypass \pkgname{hyperref} and manually write
-% the \pdfterm{Lang} key into the document catalog. This is a bit
-% kludgy, but we do leverage as much of \pkgname{hyperref}'s
-% infrastructure as possible to increase \cs{hyxmp@write@pdflang}'s
-% robustness.
-% \changes{v5.4}{2020/06/19}{Added this macro}
-% \begin{macrocode}
-\newcommand*{\hyxmp@write@pdflang}{%
- \@ifundefined{pdfmark}{%
- \@ifundefined{@pdfm@mark}{%
- \@ifundefined{pdfcatalog}{%
-% \end{macrocode}
-% We don't recognize the \tex\ engine or \acro{PDF} generator. (This is
-% unexpected.) We therefore issue a warning message and take no further
-% action.
-% \begin{macrocode}
- \PackageWarning{hyperxmp}{Unknown PDF generator; not setting the language (\@pdflang) in the PDF catalog}%
- }{%
-% \end{macrocode}
-% We're running either \pdfTeX\ or \LuaTeX\@. (\pkgname{hyperref}
-% defines \cs{pdfcatalog} in the latter case.)
-% \begin{macrocode}
- \pdfcatalog{/Lang (\@pdflang)}%
- }%
- }{%
-% \end{macrocode}
-% We're running either \XeTeX\ or \tex~+
-% \texttt{dvipdfm}.\SortIndex{dvipdfm}{\texttt{dvipdfm}}.
-% \begin{macrocode}
- \@pdfm@mark{docview << /Lang (\@pdflang) >>}%
- }%
-}{%
-% \end{macrocode}
-% We're running either \tex~+ \Dvips~+ Adobe Acrobat Distiller (or other
-% converter from PostScript to \acro{PDF}).
-% \begin{macrocode}
- \pdfmark{%
- pdfmark=/PUT,Raw={%
- \string{Catalog\string} <<
- /Lang (\@pdflang)
- >>
- }%
- }%
+ \edef\hyxmp@dc@lang{\xpg@bcp@loaded}%
}%
}
% \end{macrocode}
@@ -3659,6 +3940,7 @@
% Case 3: |\filemoddate| is defined (\XeLaTeX).
% In this case, we treat the timestamp of the job's |.log| file as the
% current date/time.
+% \label{page:jobname-log}
% \changes{v5.1}{2020/04/08}{Don't rely on
% \string\cs{jobname}\string\texttt{.aux} existing to query the
% current time under \string\XeLaTeX\string\@. Instead, use
@@ -3666,7 +3948,7 @@
% for the bug report and for her suggestion to use the log file.}
% \begin{macrocode}
\hyxmp@try@today{filemoddate}{%
- \edef\hyxmp@today@xmp{\filemoddate{\jobname.log}}%
+ \edef\hyxmp@today@xmp{\filemoddate{\hyxmp@jobname.log}}%
\edef\next{%
\edef\noexpand\hyxmp@today@xmp{\noexpand\hyxmp@as@xmp@date{\hyxmp@today@xmp}}%
}%
@@ -4244,7 +4526,7 @@
% and typesets the text within the \acro{XML} tag.
% \begin{macrocode}
\newcommand*{\hyxmp@add@simple@lang@i}{%
- \@ifnextchar[\hyxmp@add@simple@lang@ii{\hyxmp@add@simple@lang@ii[]}%
+ \@ifnextchar[\hyxmp@add@simple@lang@ii{\hyxmp@add@simple@lang@ii[\@pdfmetalang]}%
}
% \end{macrocode}
% \end{macro}
@@ -4302,9 +4584,10 @@ ______<#3 xml:lang="#1">\hyxmp@xmlified</#3>^^J%
% \xmpprop{dc:description}, and \xmpprop{dc:rights} (and others? Let me
% know.)---can be expressed in multiple languages. The same text is
% used for both language \optname{pdfmetalang} (default:
-% \optname{pdflang}) and language ``|x-default|''. To express the same
-% metadata in multiple languages, we provide an |\XMPLangAlt| macro to
-% construct a list of alternative forms for a piece of metadata.
+% \optname{pdflang}) and language ``\xmpterm{x-default}''. To express
+% the same metadata in multiple languages, we provide an |\XMPLangAlt|
+% macro to construct a list of alternative forms for a piece of
+% metadata.
%
% \begin{macro}{\hyxmp@alt@title}
% \begin{macro}{\hyxmp@alt@description}
@@ -4572,7 +4855,7 @@ ______<#3 xml:lang="#1">\hyxmp@xmlified</#3>^^J%
% Bug reported by Ga\"etan Leurent}
% \begin{macrocode}
\newcommand*{\hyxmp@def@DocumentID}{%
- \edef\hyxmp@seed@string{\jobname:\@pdftitle:\@pdfauthor:}%
+ \edef\hyxmp@seed@string{\hyxmp@jobname:\@pdftitle:\@pdfauthor:}%
\expandafter\hyxmp@seed@rng\expandafter{\hyxmp@seed@string}%
\edef\hyxmp@rand@num{\the\@tempcnta}%
\hyxmp@create@uuid\hyxmp@DocumentID
@@ -4600,7 +4883,7 @@ ______<#3 xml:lang="#1">\hyxmp@xmlified</#3>^^J%
\newcommand*{\hyxmp@def@InstanceID}{%
\hyxmp@today@xmp@define{\hyxmp@seed@string}%
\edef\hyxmp@seed@string{%
- \jobname:\@pdftitle:\@pdfauthor:\hyxmp@today@xmp:\hyxmp@seed@string
+ \hyxmp@jobname:\@pdftitle:\@pdfauthor:\hyxmp@today@xmp:\hyxmp@seed@string
}%
\expandafter\hyxmp@seed@rng\expandafter{\hyxmp@seed@string}%
\edef\hyxmp@rand@num{\the\@tempcnta}%
@@ -4617,20 +4900,32 @@ ______<#3 xml:lang="#1">\hyxmp@xmlified</#3>^^J%
% An \acro{XMP} packet ``shall consist of the following, in order: a
% header \acro{PI}, the serialized \acro{XMP} data model (the \acro{XMP}
% packet) with optional white-space padding, and a trailer
-% \acro{PI}''~\cite{Adobe2012:XMP}. (``\acro{PI}'' is an abbreviation
-% for ``processing instructions''). The serialized \acro{XMP} includes
-% blocks of \acro{XML} for various \acro{XMP} schemata: Adobe \acro{PDF}
-% (Section~\ref{sec:adobe-pdf}), Dublin Core
-% (Section~\ref{sec:dublin-core}), \acro{XMP} Rights Management
-% (Section~\ref{sec:xmp-rights}), \acro{XMP} Media Management
-% (Section~\ref{sec:xmp-media}), \acro{XMP} Basic
-% (Section~\ref{sec:xmp-basic}), Photoshop
-% (Section~\ref{sec:photoshop}), \acro{IPTC} Photo Metadata
-% (Section~\ref{sec:photo-meta}), and \acro{PDF}\textsc{/*} Identification
-% (Section~\ref{sec:pdfX-id}). The |\hyxmp@construct@packet| macro
-% (Section~\ref{sec:combining-schemata}) constructs the \acro{XMP}
-% packet into |\hyxmp@xml|. It first writes the appropriate \acro{XML}
-% header, then calls the various schema-writing macros, then injects
+% \acro{PI}''~\cite{Adobe2012:XMP}. (``\acro{PI}'' is an abbreviation for
+% ``processing instructions''). The serialized \acro{XMP} includes blocks
+% of \acro{XML} for various \acro{XMP} schemata:
+% ^^A
+% \schema[Adobe PDF]{Adobe \protect\acro{PDF}} (Section~\ref{sec:adobe-pdf}),
+% \schema{Dublin Core} (Section~\ref{sec:dublin-core}),
+% \schema[XMP Rights Management]{\protect\acro{XMP} Rights Management} (Section~\ref{sec:xmp-rights}),
+% \schema[XMP Media Management]{\protect\acro{XMP} Media Management} (Section~\ref{sec:xmp-media}),
+% \schema[XMP Basic]{\protect\acro{XMP} Basic} (Section~\ref{sec:xmp-basic}),
+% \schema{Photoshop} (Section~\ref{sec:photoshop}),
+% \index{PDF/A Identification schema=\acro {PDF/A} Identification schema}
+% \index{PDF/X Identification schema=\acro {PDF/X} Identification schema}
+% \index{PDF/UA Identification schema=\acro {PDF/UA} Identification schema}
+% \index{schemata&PDF/A Identification=\acro {PDF/A} Identification}
+% \index{schemata&PDF/X Identification=\acro {PDF/X} Identification}
+% \index{schemata&PDF/UA Identification=\acro {PDF/UA} Identification}
+% \acro{PDF}\textsc{/*} Identification (Section~\ref{sec:pdfX-id}),
+% \schema[IPTC Photo Metadata]{\protect\acro{IPTC} Photo Metadata} (Section~\ref{sec:photo-meta}),
+% \schema[PRISM Basic Metadata]{\protect\acro{PRISM} Basic Metadata} (Section~\ref{sec:prism-meta}),
+% \schema{Journal Article Versions} (Section~\ref{sec:niso-jav-meta}), and
+% \schema[XMP Paged-Text]{\protect\acro{XMP} Paged-Text} (Section~\ref{sec:xmp-paged-text}).
+% ^^A
+% The |\hyxmp@construct@packet| macro
+% (Section~\ref{sec:combining-schemata}) constructs the \acro{XMP} packet
+% into |\hyxmp@xml|. It first writes the appropriate \acro{XML} header,
+% then calls the various schema-writing macros, then injects
% |\hyxmp@padding| as padding, and finally writes the appropriate
% \acro{XML} trailer.
%
@@ -4705,8 +5000,8 @@ _______________________________________________________________^^J%
% \end{macro}
%
% \begin{macro}{\hyxmp@x@default}
-% Define an |x-default| string that we can use in comparisons with
-% |\@pdfmetalang|.
+% Define an \xmpterm{x-default} string that we can use in comparisons
+% with |\@pdfmetalang|.
% \begin{macrocode}
\newcommand*{\hyxmp@x@default}{x-default}
% \end{macrocode}
@@ -4716,6 +5011,8 @@ _______________________________________________________________^^J%
% \subsubsection{The Adobe PDF schema}
% \label{sec:adobe-pdf}
%
+% \begin{schemadesc}[Adobe PDF]{Adobe \protect\acro{PDF}}
+%
% Older versions of \pkgname{hyperref} defined a default producer; newer
% versions do not. Instead, they let the \tex\ engine define the
% producer itself. This poses a problem for \acro{PDF/A} compliance
@@ -4891,20 +5188,44 @@ _______________________________________________________________^^J%
% \end{macrocode}
% \end{macro}
%
+% \end{schemadesc}
+%
%
% \subsubsection{The Dublin Core schema}
% \label{sec:dublin-core}
%
+% \begin{schemadesc}{Dublin Core}
+%
+% \begin{macro}{\ifhyxmp@multi@langs}
+% \begin{macro}{\hyxmp@multi@langstrue}
+% \begin{macro}{\hyxmp@multi@langsfalse}
+% These macros are used locally to \cs{hyxmp@rdf@dc}. If the property
+% being processed has values in different languages,
+% \cs{ifhyxmp@multi@langs} evaluates to \textsc{true}. If it has a
+% value in only a single language, \cs{ifhyxmp@multi@langs} evaluates to
+% \textsc{false}.
+% \begin{macrocode}
+\newif\ifhyxmp@multi@langs
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
% \begin{macro}{\hyxmp@rdf@dc}
% Given an optional |\if|\meta{something} statement (|#1|), a Dublin Core
% property~(|#2|) and a macro containing some |\pdfstringdef|-defined
% text~(|#3|), append the appropriate block of \acro{XML} to the |\hyxmp@xml|
% macro.
-% \changes{v1.4}{2011/06/12}{Included metadata in the \texttt{x-default}
+% \changes{v1.4}{2011/06/12}{Included metadata in the \xmpterm{x-default}
% language regardless of the specified metadata language}
% \changes{v3.3}{2017/07/22}{Bug fix: Output the metadata language as
% correct \noexpand\acro{XML} even when \noexpand\pkgname{hyperref} is
% loaded with the \noexpand\optname{unicode} option}
+% \changes{v5.5}{2020/07/17}{List \protect\xmpterm{x-default} alternatives
+% before language-specific alternatives, as dictated by the
+% \protect\acro{XMP} specification~\protect\cite{Adobe2012:XMP}}
+% \changes{v5.5}{2020/07/21}{Rewrite the core part of this macro to
+% divide it into four, cleanly defined cases}
% \begin{macrocode}
\newcommand*{\hyxmp@rdf@dc}[3][\iffalse]{%
% \end{macrocode}
@@ -4930,27 +5251,90 @@ _______________________________________________________________^^J%
______<dc:#2>^^J%
________<rdf:Alt>^^J%
}%
+% \end{macrocode}
+% Record whether property~|#2| has definitions in multiple languages.
+% \begin{macrocode}
+ \@if@def@and@nonempty{hyxmp@alt@#2}{%
+ \hyxmp@multi@langstrue
+ }{%
+ \hyxmp@multi@langsfalse
+ }%
+% \end{macrocode}
+% There are now four cases to consider: the cross product of
+% \{\optname{pdfmetalang}~$=$ ``\xmpterm{x-default}'',
+% \optname{pdfmetalang}~$\neq$ ``\xmpterm{x-default}''\} and
+% \{\cs{XMPLangAlt} was specified, \cs{XMPLangAlt} was not specified\}.
+% We handle each of these in turn.
+% \begin{macrocode}
\ifx\@pdfmetalang\hyxmp@x@default
+ \ifhyxmp@multi@langs
+% \end{macrocode}
+% \textbf{Case~1}: No \optname{pdfmetalang} but \cs{XMPLangAlt}.
+% We consider this an error because the \xmpterm{x-default} language will
+% not have a matching non-default language, in violation of the
+% \acro{XMP} specification's guidance~\cite[p.~23]{Adobe2012:XMP}:
+%
+% \begin{quote}
+% \sffamily
+%
+% An \textbf{xml:lang} value of ``x-default'' may be used to
+% explicitly denote a default item. If used, the ``x-default'' item
+% shall be first in the array and its simple text value should be
+% repeated in another item in which \textbf{xml:lang} specifies its
+% actual language. However, an ``x-default'' item may be the only
+% item, in which case there is only a default value in no defined
+% language.
+% \end{quote}
+% \begin{macrocode}
+ \PackageError{hyperxmp}%
+ {\string\XMPLangAlt\space was used without specifying
+ pdfmetalang\MessageBreak
+ or pdflang}%
+ {Be sure to assign a language code to the pdfmetalang key and/or a
+ document\MessageBreak
+ language to the pdflang key (e.g., \string\hypersetup{pdfmetalang={en}}).}%
+ \else
+% \end{macrocode}
+% \textbf{Case~2}: No \optname{pdfmetalang} and no \cs{XMPLangAlt}.
+% Here we specify only \xmpterm{x-default} as the language, as per the
+% guidance quoted above.
+% \begin{macrocode}
+ \hyxmp@add@to@xml{%
+__________<rdf:li xml:lang="\hyxmp@x@default">\hyxmp@value</rdf:li>^^J%
+ }%
+ \fi
\else
- \hyxmp@xmlify{\@pdfmetalang}%
- \hyxmp@add@to@xml{%
-__________<rdf:li xml:lang="\hyxmp@xmlified">\hyxmp@value</rdf:li>^^J%
- }%
- \fi
- \hyxmp@add@to@xml{%
+ \ifhyxmp@multi@langs
+% \end{macrocode}
+% \textbf{Case~3}: Both \optname{pdfmetalang} and \cs{XMPLangAlt}. In
+% this case, we include an \xmpterm{x-default} followed by the
+% \optname{pdfmetalang} language, followed by all of the language
+% alternatives.
+% \begin{macrocode}
+ \hyxmp@xmlify{\@pdfmetalang}%
+ \hyxmp@add@to@xml{%
__________<rdf:li xml:lang="\hyxmp@x@default">\hyxmp@value</rdf:li>^^J%
- }%
+__________<rdf:li xml:lang="\hyxmp@xmlified">\hyxmp@value</rdf:li>^^J%
+ }%
+ \def\do##1##2{
+ \hyxmp@xmlify{##2}%
+ \hyxmp@add@to@xml{%
+ __________<rdf:li xml:lang="##1">\hyxmp@xmlified</rdf:li>^^J%
+ }%
+ }%
+ \csname hyxmp@alt@#2\endcsname
+ \else
% \end{macrocode}
-% Include variants of the text expressed in other languages, as specified by
-% the author using |\XMPLangAlt| (Section~\ref{sec:lang-alt}).
+% \textbf{Case~4}: \optname{pdfmetalang} but no \cs{XMPLangAlt}. To
+% reduce redundancy we omit the \xmpterm{x-default} and include the
+% single language in which the text appears.
% \begin{macrocode}
- \def\do##1##2{
- \hyxmp@xmlify{##2}%
- \hyxmp@add@to@xml{%
-__________<rdf:li xml:lang="##1">\hyxmp@xmlified</rdf:li>^^J%
- }%
- }%
- \csname hyxmp@alt@#2\endcsname
+ \hyxmp@xmlify{\@pdfmetalang}%
+ \hyxmp@add@to@xml{%
+__________<rdf:li xml:lang="\hyxmp@xmlified">\hyxmp@value</rdf:li>^^J%
+ }%
+ \fi
+ \fi
% \end{macrocode}
% Complete this \acro{XMP} element.
% \begin{macrocode}
@@ -5118,9 +5502,14 @@ ______</dc:#2>^^J%
% \end{macrocode}
% \end{macro}
%
+% \end{schemadesc}
+%
+%
% \subsubsection{The XMP Rights Management schema}
% \label{sec:xmp-rights}
%
+% \begin{schemadesc}[XMP Rights Management]{\protect\acro{XMP} Rights Management}
+%
% \begin{macro}{\hyxmp@xmpRights@schema}
% Add properties defined by the \acro{XMP} Rights Management schema to the
% |\hyxmp@xml| macro. Currently, these are only the
@@ -5169,10 +5558,14 @@ ______</dc:#2>^^J%
% \end{macro}
% \end{macro}
%
+% \end{schemadesc}
+%
%
% \subsubsection{The XMP Media Management schema}
% \label{sec:xmp-media}
%
+% \begin{schemadesc}[XMP Media Management]{\protect\acro{XMP} Media Management}
+%
% \begin{macro}{\hyxmp@mm@schema}
% Add properties defined by the \acro{XMP} Media Management schema to
% the |\hyxmp@xml| macro. According to the \acro{XMP} specification,
@@ -5203,10 +5596,14 @@ ______</dc:#2>^^J%
% \end{macrocode}
% \end{macro}
%
+% \end{schemadesc}
+%
%
% \subsubsection{The XMP Basic schema}
% \label{sec:xmp-basic}
%
+% \begin{schemadesc}[XMP Basic]{\protect\acro{XMP} Basic}
+
% \begin{macro}{\hyxmp@xmp@basic@schema}
% Add properties defined by the \acro{XMP} Basic schema to the
% |\hyxmp@xml| macro. These include a bunch of dates (all set to the
@@ -5265,10 +5662,14 @@ ______</dc:#2>^^J%
% \end{macrocode}
% \end{macro}
%
+% \end{schemadesc}
+%
%
% \subsubsection{The Photoshop schema}
% \label{sec:photoshop}
%
+% \begin{schemadesc}{Photoshop}
+%
% \begin{macro}{\hyxmp@photoshop@schema}
% \changes{v2.0}{2012/08/26}{Simplified using
% \texttt{\string\string\string\hyxmp@add@simple}}
@@ -5287,10 +5688,16 @@ ______</dc:#2>^^J%
% \end{macro}
% \end{macro}
%
+% \end{schemadesc}
+%
%
% \subsubsection{PDF/* Identification schemata}
% \label{sec:pdfX-id}
%
+% \begin{schemadesc}[PDF/A Identification]{\protect\acro{PDF/A} Identification}
+% \begin{schemadesc}[PDF/X Identification]{\protect\acro{PDF/X} Identification}
+% \begin{schemadesc}[PDF/UA Identification]{\protect\acro{PDF/UA} Identification}
+%
% \begin{macro}{\hyxmp@pdfa@id@schema}
% Add properties defined by the \acro{PDF/A} Identification
% schema~\cite{PDFA2008:xmp-props} to the |\hyxmp@xml| macro. These
@@ -5350,10 +5757,16 @@ ______</dc:#2>^^J%
% \end{macrocode}
% \end{macro}
%
+% \end{schemadesc}
+% \end{schemadesc}
+% \end{schemadesc}
+%
%
% \subsubsection{The IPTC Photo Metadata schema}
% \label{sec:photo-meta}
%
+% \begin{schemadesc}[IPTC Photo Metadata]{\protect\acro{IPTC} Photo Metadata}
+%
% \begin{macro}{\xmplinesep}
% Lines in multiline fields are separated by |\xmplinesep| in the
% generated \acro{XML}. This defaults to an \acro{LF} (|^^J|) character
@@ -5486,9 +5899,14 @@ ______</Iptc4xmpCore:CreatorContactInfo>^^J%
% \end{macro}
% \end{macro}
%
+% \end{schemadesc}
+%
+%
% \subsubsection{The PRISM Basic Metadata schema}
% \label{sec:prism-meta}
%
+% \begin{schemadesc}[PRISM Basic Metadata]{\protect\acro{PRISM} Basic Metadata}
+%
% \begin{macro}{\hyxmp@prism@schema}
% \changes{v4.0}{2019/03/10}{Added this macro}
% Add properties defined by the \acro{PRISM} Basic Metadata
@@ -5517,6 +5935,110 @@ ______</Iptc4xmpCore:CreatorContactInfo>^^J%
% \end{macrocode}
% \end{macro}
%
+% \end{schemadesc}
+%
+%
+% \subsubsection{The Journal Article Versions (JAV) schema}
+% \label{sec:niso-jav-meta}
+%
+% \begin{schemadesc}{Journal Article Versions}
+%
+% \begin{macro}{\hyxmp@jav@schema}
+% \changes{v5.5}{2020/07/23}{Added this macro}
+% Add properties defined by the \acro{NISO}/\acro{ALPSP} Journal Article
+% Versions schema~\cite{NISO2008:jav}.
+% \begin{macrocode}
+\newcommand*{\hyxmp@jav@schema}{%
+ \hyxmp@add@simple{jav:journal_article_version}{\@pdfpubstatus}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \end{schemadesc}
+%
+% \subsubsection{The XMP Paged-Text schema}
+% \label{sec:xmp-paged-text}
+%
+% \begin{schemadesc}[XMP Paged-Text]{\protect\acro{XMP} Paged-Text}
+%
+% \begin{macro}{\hyxmp@xmptpg@schema}
+% The \acro{XMP} Paged-Text schema~\cite{Adobe2012:XMP} includes
+% properties related to the construction of the \acro{PDF} file itself.
+% We acquire most of this information through \LuaTeX\ mechanisms and
+% therefore include much less information when run from other \TeX\ engines.
+% \changes{v5.5}{2020/07/25}{Added this macro}
+% \begin{macrocode}
+\newcommand*{\hyxmp@xmptpg@schema}{%
+ \ifLuaTeX
+ \luadirect{write_xmp_font_list(\the\hyxmp@cct)}%
+ \fi
+ \hyxmp@add@simple{xmpTPg:NPages}{\@pdfnumpages}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hyxmp@cct}
+% We store the current category-code table to ensure that
+% |write_xmp_font_list|'s output uses our redefined category codes.
+% \begin{macrocode}
+\ifLuaTeX
+ \newcatcodetable\hyxmp@cct
+ \savecatcodetable\hyxmp@cct
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% Here we define a Lua\index{Lua} function, |write_xmp_font_list|, that
+% writes font information to the \acro{XMP} packet.
+% \begin{macrocode}
+\ifLuaTeX
+ \begin{luacode*}
+function write_xmp_font_list (cct)
+ local function show_field(name, ...)
+ for i = 1, select("#", ...) do
+ local val = select(i, ...)
+ if val then
+ local xml = string.gsub(val, "&", "&amp;")
+ xml = string.gsub(xml, "<", "&lt;")
+ xml = string.gsub(xml, ">", "&gt;")
+ tex.print(cct, "____________<stFnt:" .. name .. ">" ..
+ val .. "</stFnt:" .. name .. ">^^J%")
+ return
+ end
+ end
+ end
+ tex.print(cct, "\\hyxmp@add@to@xml{%")
+ tex.print(cct, "______<xmpTPg:Fonts>^^J%")
+ tex.print(cct, "________<rdf:Bag>^^J%")
+ for i, f in font.each() do
+ tex.print(cct, "__________<rdf:li rdf:parseType=\"Resource\">^^J%")
+ if f.filename then
+ local info = fontloader.info(f.filename)
+ show_field("fontFace", info.fullname)
+ show_field("fontFamily", info.familyname)
+ show_field("fontName", info.fontname)
+ show_field("versionString", info.version)
+ local baseName = string.gsub(f.filename, ".*[/\\](.*)", "%1")
+ show_field("fontFileName", baseName)
+ else
+ show_field("fontName", f.psname, f.fullname, f.name)
+ end
+ if f.format and f.format ~= "unknown" then
+ show_field("fontType", f.format)
+ end
+ tex.print(cct, "__________</rdf:li>^^J%")
+ end
+ tex.print(cct, "________</rdf:Bag>^^J%")
+ tex.print(cct, "______</xmpTPg:Fonts>^^J%")
+ tex.print(cct, "}")
+end
+ \end{luacode*}
+\fi
+% \end{macrocode}
+%
+% \end{schemadesc}
+%
+%
% \subsubsection{XMP extension schemata}
% \label{sec:extension-schemata}
%
@@ -5529,13 +6051,11 @@ ______</Iptc4xmpCore:CreatorContactInfo>^^J%
% declare only those schemata we actually use.
%
% \begin{macro}{\hyxmp@check@iptc@data}
+% \begin{macro}{\hyxmp@iptc@data}
% Define |\hyxmp@iptc@data| as the concatenation of all \acro{IPTC}
% photo metadata supplied by the document.
% \begin{macrocode}
\newcommand*{\hyxmp@check@iptc@data}{%
-% \end{macrocode}
-% \begin{macro}{\hyxmp@iptc@data}
-% \begin{macrocode}
\edef\hyxmp@iptc@data{%
\@pdfcontactaddress
\@pdfcontactcity
@@ -5552,13 +6072,11 @@ ______</Iptc4xmpCore:CreatorContactInfo>^^J%
% \end{macro}
%
% \begin{macro}{\hyxmp@check@prism@data}
+% \begin{macro}{\hyxmp@prism@data}
% Define |\hyxmp@prism@data| as the concatenation of all \acro{PRISM}
% metadata supplied by the document.
% \begin{macrocode}
\newcommand*{\hyxmp@check@prism@data}{%
-% \end{macrocode}
-% \begin{macro}{\hyxmp@prism@data}
-% \begin{macrocode}
\edef\hyxmp@prism@data{%
\@pdfbookedition
\@pdfbytes
@@ -5580,6 +6098,20 @@ ______</Iptc4xmpCore:CreatorContactInfo>^^J%
% \end{macro}
% \end{macro}
%
+% \begin{macro}{\hyxmp@check@jav@data}
+% \begin{macro}{\hyxmp@jav@data}
+% Define |\hyxmp@jav@data| as the concatenation of all \acro{JAV}
+% metadata supplied by the document.
+% \begin{macrocode}
+\newcommand*{\hyxmp@check@jav@data}{%
+ \edef\hyxmp@jav@data{%
+ \@pdfpubstatus
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
% \begin{macro}{\hyxmp@begin@extension@decls}
% Begin a block of \acro{XML} tags that indicates we're declaring one or
% more extension schemata.
@@ -5701,6 +6233,9 @@ ______________________</rdf:li>^^J%
% \begin{macro}{\hyxmp@mm@extensions}
% Declare the \acro{XMP} Media Management schema.
% \changes{v4.0}{2019/03/15}{Added this macro}
+% \changes{v5.5}{2020/07/23}{Corrected the type of
+% \protect\xmpprop{xmpMM:RenditionClass}. Thanks to Thorsten Wi{\ss}mann
+% for the bug report and patch}
% \begin{macrocode}
\newcommand*{\hyxmp@mm@extensions}{%
\hyxmp@begin@ext@decl
@@ -5722,6 +6257,7 @@ ______________________</rdf:li>^^J%
{internal}%
{Document version identifier}%
\hyxmp@declare@property
+ [RenditionClass]%
{RenditionClass}%
{internal}%
{The manner in which a document is rendered}%
@@ -5909,7 +6445,7 @@ __________</rdf:li>^^J%
\hyxmp@begin@ext@decl
{PRISM Basic Metadata}%
{prism}%
- {http://prismstandard.org/namespaces/basic/2.1/}%
+ {http://prismstandard.org/namespaces/basic/3.0/}%
\hyxmp@declare@property
{complianceProfile}%
{internal}%
@@ -5978,6 +6514,29 @@ __________</rdf:li>^^J%
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\hyxmp@jav@extensions}
+% \changes{v5.5}{2020/07/23}{Added this macro}
+% Because \acro{JAV} metadata are not recognized by the \acro{PDF/A}
+% standard, \acro{PDF/A} conversion would normally fail for documents
+% that utilize \acro{JAV} metadata. Declaring the \acro{JAV} metadata
+% we support enables the document to be converted to \acro{PDF/A}
+% format.
+% \begin{macrocode}
+\newcommand*{\hyxmp@jav@extensions}{%
+ \hyxmp@begin@ext@decl
+ {NISO/ALPSP Journal Article Versions}%
+ {jav}%
+ {http://www.niso.org/schemas/jav/1.0/}%
+ \hyxmp@declare@property
+ [Closed Choice of Text]%
+ {journal_article_version}%
+ {external}%
+ {Article status, one of "AO", "SMUR", "AM", "P", "VoR", "CVoR", or "EVoR"}%
+ \hyxmp@end@ext@decl
+}%
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\hyxmp@declare@extensions}
% Declare all \acro{XMP} extension schemata. We'll always have at least
% one, the \acro{XMP} Media Management extensions, because we
@@ -6034,6 +6593,13 @@ __________</rdf:li>^^J%
\hyxmp@prism@extensions
\fi
% \end{macrocode}
+% Conditionally declare \acro{JAV} metadata.
+% \begin{macrocode}
+ \ifx\hyxmp@jav@data\@empty
+ \else
+ \hyxmp@jav@extensions
+ \fi
+% \end{macrocode}
% \begin{macrocode}
\hyxmp@end@extension@decls
}
@@ -6098,7 +6664,10 @@ _____________________xmlns:pdfaid="http://www.aiim.org/pdfa/ns/id/"^^J%
_____________________xmlns:pdfuaid="http://www.aiim.org/pdfua/ns/id/"^^J%
_____________________xmlns:pdfx="http://ns.adobe.com/pdfx/1.3/"^^J%
_____________________xmlns:pdfxid="http://www.npes.org/pdfx/ns/id/"^^J%
-_____________________xmlns:prism="http://prismstandard.org/namespaces/basic/2.1/"^^J%
+_____________________xmlns:prism="http://prismstandard.org/namespaces/basic/3.0/"^^J%
+_____________________xmlns:jav="http://www.niso.org/schemas/jav/1.0/"^^J%
+_____________________xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/"^^J%
+_____________________xmlns:stFnt="http://ns.adobe.com/xap/1.0/sType/Font\hyxmp@hash"^^J%
_____________________xmlns:Iptc4xmpCore="http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/"^^J%
_____________________xmlns:pdfaExtension="http://www.aiim.org/pdfa/ns/extension/"^^J%
_____________________xmlns:pdfaSchema="http://www.aiim.org/pdfa/ns/schema\hyxmp@hash"^^J%
@@ -6111,6 +6680,7 @@ _____________________xmlns:pdfaField="http://www.aiim.org/pdfa/ns/field\hyxmp@ha
% \begin{macrocode}
\hyxmp@check@iptc@data
\hyxmp@check@prism@data
+ \hyxmp@check@jav@data
\hyxmp@declare@extensions
% \end{macrocode}
% Insert all the metadata we know how to insert.
@@ -6126,6 +6696,8 @@ _____________________xmlns:pdfaField="http://www.aiim.org/pdfa/ns/field\hyxmp@ha
\hyxmp@mm@schema
\hyxmp@iptc@schema
\hyxmp@prism@schema
+ \hyxmp@jav@schema
+ \hyxmp@xmptpg@schema
\hyxmp@add@to@xml{%
____</rdf:Description>^^J%
__</rdf:RDF>^^J%
@@ -6171,7 +6743,7 @@ __</rdf:RDF>^^J%
\@ifundefined{pdfmark}{%
\PackageWarningNoLine{hyperxmp}{%
Unrecognized hyperref driver `\Hy@driver'.\MessageBreak
- \jobname.tex's XMP metadata will *not* be\MessageBreak
+ \hyxmp@jobname.tex's XMP metadata will *not* be\MessageBreak
embedded in the resulting file}%
}{%
\hyxmp@embed@packet@pdfmark
@@ -6402,6 +6974,15 @@ __</rdf:RDF>^^J%
% \subsection{Final clean-up}
% \label{sec:clean-up}
%
+% As explained in Section~\ref{sec:initial-prep}, all invocations of
+% \cs{AtEndPreamble} have been stored in \cs{hyxmp@aep@toks} rather than
+% executed. Now that \pkgname{hyperxmp} has been initialized
+% completely, it is finally safe to execute the accumulated
+% \cs{AtEndPreamble} stanzas.
+% \begin{macrocode}
+\the\hyxmp@aep@toks
+% \end{macrocode}
+%
% Having saved the category code of
% ``\,{\fontencoding{T1}\selectfont\textquotedbl}\,'' at the start of
% the package code (Section~\ref{sec:initial-prep}), we now restore that
diff --git a/macros/latex/contrib/hyperxmp/hyperxmp.ins b/macros/latex/contrib/hyperxmp/hyperxmp.ins
index 7a81974604..81db9d155a 100644
--- a/macros/latex/contrib/hyperxmp/hyperxmp.ins
+++ b/macros/latex/contrib/hyperxmp/hyperxmp.ins
@@ -5,9 +5,9 @@
%% the LaTeX Project Public License, either version 1.3c 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.3c or later is part of all distributions of LaTeX version
%% 2008/05/04 or later.
%%
diff --git a/macros/latex/contrib/hyperxmp/hyperxmp.pdf b/macros/latex/contrib/hyperxmp/hyperxmp.pdf
index 998059c14e..713d57a2b6 100644
--- a/macros/latex/contrib/hyperxmp/hyperxmp.pdf
+++ b/macros/latex/contrib/hyperxmp/hyperxmp.pdf
Binary files differ
diff --git a/macros/latex/contrib/polyglossia/README.md b/macros/latex/contrib/polyglossia/README.md
deleted file mode 100644
index 79b922ef93..0000000000
--- a/macros/latex/contrib/polyglossia/README.md
+++ /dev/null
@@ -1,42 +0,0 @@
-# THE POLYGLOSSIA PACKAGE v1.49
-## Multilingual typesetting with XeLaTeX and LuaLaTeX
-
-This package provides an alternative to Babel for users of XeLaTeX and LuaLaTeX
-(with a few languages incompletely supported for the latter). This version
-includes support for over 70 different languages, some of which in different
-regional or national varieties, or using a different writing system.
-
-Polyglossia makes it possible to automate the following tasks:
-
-* Loading the appropriate hyphenation patterns.
-* Setting the script and language tags of the current font (if possible and
- available), using the package fontspec.
-* Switching to a font assigned by the user to a particular script or language.
-* Adjusting some typographical conventions in function of the current language
- (such as afterindent, frenchindent, spaces before or after punctuation marks,
- etc.).
-* Redefining the document strings (like “chapter”, “figure”, “bibliography”).
-* Adapting the formatting of dates (for non-gregorian calendars via external
- packages bundled with polyglossia: currently the Hebrew, Islamic and Farsi
- calendars are supported).
-* For languages that have their own numeration system, modifying the formatting
- of numbers appropriately.
-* Ensuring the proper directionality if the document contains languages
- written from right to left (via the packages bidi and luabidi, available
- separately).
-
-# LICENCE
-
-Copyright (c) 2008-2010 François Charette, 2013 Élie Roux, 2011-2020 Arthur Reutenauer,
-Copyright (c) 2019-2020 Bastien Roucariès, 2019-2020 Jürgen Spitzmüller
-
-Except where otherwise noted, Polyglossia is placed under the terms of the MIT licence
-(https://opensource.org/licenses/MIT).
-
-# BUGS
-
-If you run into a bug, or suspect you do, or you have a request or comment, please
-use the GitHub issue tracker: http://github.com/reutenauer/polyglossia/issues
-
-This is more efficient than contacting the maintainer by email as it allows me
-to track the issues and follow progress.
diff --git a/macros/latex/contrib/polyglossia/polyglossia.dtx b/macros/latex/contrib/polyglossia/polyglossia.dtx
deleted file mode 100644
index 246c37edb0..0000000000
--- a/macros/latex/contrib/polyglossia/polyglossia.dtx
+++ /dev/null
@@ -1,20295 +0,0 @@
-%\iffalse
-% polyglossia.dtx generated using mkpolyglossiadtx.pl
-% (derived from makedtx.pl version 1.49 (c) Nicola Talbot)
-%
-% To extract the files, use xetex polyglossia.dtx or luatex polyglossia.dtx
-%
-%<*internal>
-\iffalse
-%</internal>
-%<*README>
-# THE POLYGLOSSIA PACKAGE v1.49
-## Multilingual typesetting with XeLaTeX and LuaLaTeX
-
-This package provides an alternative to Babel for users of XeLaTeX and LuaLaTeX
-(with a few languages incompletely supported for the latter). This version
-includes support for over 70 different languages, some of which in different
-regional or national varieties, or using a different writing system.
-
-Polyglossia makes it possible to automate the following tasks:
-
-* Loading the appropriate hyphenation patterns.
-* Setting the script and language tags of the current font (if possible and
- available), using the package fontspec.
-* Switching to a font assigned by the user to a particular script or language.
-* Adjusting some typographical conventions in function of the current language
- (such as afterindent, frenchindent, spaces before or after punctuation marks,
- etc.).
-* Redefining the document strings (like “chapter”, “figure”, “bibliography”).
-* Adapting the formatting of dates (for non-gregorian calendars via external
- packages bundled with polyglossia: currently the Hebrew, Islamic and Farsi
- calendars are supported).
-* For languages that have their own numeration system, modifying the formatting
- of numbers appropriately.
-* Ensuring the proper directionality if the document contains languages
- written from right to left (via the packages bidi and luabidi, available
- separately).
-
-# LICENCE
-
-Copyright (c) 2008-2010 François Charette, 2013 Élie Roux, 2011-2020 Arthur Reutenauer,
-Copyright (c) 2019-2020 Bastien Roucariès, 2019-2020 Jürgen Spitzmüller
-
-Except where otherwise noted, Polyglossia is placed under the terms of the MIT licence
-(https://opensource.org/licenses/MIT).
-
-# BUGS
-
-If you run into a bug, or suspect you do, or you have a request or comment, please
-use the GitHub issue tracker: http://github.com/reutenauer/polyglossia/issues
-
-This is more efficient than contacting the maintainer by email as it allows me
-to track the issues and follow progress.
-%</README>
-%<*internal>
-\fi
-%</internal>
-%
-%<*internal>
-\begingroup
-%</internal>
-%<*batchfile>
-\input docstrip.tex
-\keepsilent
-\let\MetaPrefix\relax
-\preamble
- ____________________________
-
- The polyglossia package
- (C) 2008–2010 François Charette
- (C) 2011–2020 Arthur Reutenauer
- (C) 2013 Elie Roux
- (C) 2019 Bastien Roucariès
- (C) 2019–2020 Jürgen Spitzmüller
- License information appended
-
-
-\endpreamble
-\postamble
-
- Copyright (C) 2020 by Arthur Reutenauer <arthur 'dot' reutenauer 'at' normalesup 'dot' org>
-
- This work may be distributed and/or modified under the
- conditions of the LaTeX Project Public License, either version 1.3
- of this license of (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 2005/12/01 or later.
-
- This work has the LPPL maintenance status `maintained'.
-
- The Current Maintainer of this work is Arthur Reutenauer.
-
-
-\endpostamble
-\let\MetaPrefix\DoubleperCent
-\askforoverwritefalse
-\generate{\file{gloss-acadien.ldf}{\from{polyglossia.dtx}{gloss-acadien.ldf}}}
-\generate{\file{gloss-aeb.ldf}{\from{polyglossia.dtx}{gloss-aeb.ldf}}}
-\generate{\file{gloss-af.ldf}{\from{polyglossia.dtx}{gloss-af.ldf}}}
-\generate{\file{gloss-afb.ldf}{\from{polyglossia.dtx}{gloss-afb.ldf}}}
-\generate{\file{gloss-afrikaans.ldf}{\from{polyglossia.dtx}{gloss-afrikaans.ldf}}}
-\generate{\file{gloss-albanian.ldf}{\from{polyglossia.dtx}{gloss-albanian.ldf}}}
-\generate{\file{gloss-am.ldf}{\from{polyglossia.dtx}{gloss-am.ldf}}}
-\generate{\file{gloss-american.ldf}{\from{polyglossia.dtx}{gloss-american.ldf}}}
-\generate{\file{gloss-amharic.ldf}{\from{polyglossia.dtx}{gloss-amharic.ldf}}}
-\generate{\file{gloss-apd.ldf}{\from{polyglossia.dtx}{gloss-apd.ldf}}}
-\generate{\file{gloss-ar-IQ.ldf}{\from{polyglossia.dtx}{gloss-ar-IQ.ldf}}}
-\generate{\file{gloss-ar-JO.ldf}{\from{polyglossia.dtx}{gloss-ar-JO.ldf}}}
-\generate{\file{gloss-ar-LB.ldf}{\from{polyglossia.dtx}{gloss-ar-LB.ldf}}}
-\generate{\file{gloss-ar-MR.ldf}{\from{polyglossia.dtx}{gloss-ar-MR.ldf}}}
-\generate{\file{gloss-ar-PS.ldf}{\from{polyglossia.dtx}{gloss-ar-PS.ldf}}}
-\generate{\file{gloss-ar-SY.ldf}{\from{polyglossia.dtx}{gloss-ar-SY.ldf}}}
-\generate{\file{gloss-ar-YE.ldf}{\from{polyglossia.dtx}{gloss-ar-YE.ldf}}}
-\generate{\file{gloss-ar.ldf}{\from{polyglossia.dtx}{gloss-ar.ldf}}}
-\generate{\file{gloss-arabic.ldf}{\from{polyglossia.dtx}{gloss-arabic.ldf}}}
-\generate{\file{gloss-armenian.ldf}{\from{polyglossia.dtx}{gloss-armenian.ldf}}}
-\generate{\file{gloss-arq.ldf}{\from{polyglossia.dtx}{gloss-arq.ldf}}}
-\generate{\file{gloss-ary.ldf}{\from{polyglossia.dtx}{gloss-ary.ldf}}}
-\generate{\file{gloss-arz.ldf}{\from{polyglossia.dtx}{gloss-arz.ldf}}}
-\generate{\file{gloss-ast.ldf}{\from{polyglossia.dtx}{gloss-ast.ldf}}}
-\generate{\file{gloss-asturian.ldf}{\from{polyglossia.dtx}{gloss-asturian.ldf}}}
-\generate{\file{gloss-australian.ldf}{\from{polyglossia.dtx}{gloss-australian.ldf}}}
-\generate{\file{gloss-austrian.ldf}{\from{polyglossia.dtx}{gloss-austrian.ldf}}}
-\generate{\file{gloss-ayl.ldf}{\from{polyglossia.dtx}{gloss-ayl.ldf}}}
-\generate{\file{gloss-bahasa.ldf}{\from{polyglossia.dtx}{gloss-bahasa.ldf}}}
-\generate{\file{gloss-bahasai.ldf}{\from{polyglossia.dtx}{gloss-bahasai.ldf}}}
-\generate{\file{gloss-bahasam.ldf}{\from{polyglossia.dtx}{gloss-bahasam.ldf}}}
-\generate{\file{gloss-basque.ldf}{\from{polyglossia.dtx}{gloss-basque.ldf}}}
-\generate{\file{gloss-be-tarask.ldf}{\from{polyglossia.dtx}{gloss-be-tarask.ldf}}}
-\generate{\file{gloss-be.ldf}{\from{polyglossia.dtx}{gloss-be.ldf}}}
-\generate{\file{gloss-belarusian.ldf}{\from{polyglossia.dtx}{gloss-belarusian.ldf}}}
-\generate{\file{gloss-bengali.ldf}{\from{polyglossia.dtx}{gloss-bengali.ldf}}}
-\generate{\file{gloss-bg.ldf}{\from{polyglossia.dtx}{gloss-bg.ldf}}}
-\generate{\file{gloss-bn.ldf}{\from{polyglossia.dtx}{gloss-bn.ldf}}}
-\generate{\file{gloss-bo.ldf}{\from{polyglossia.dtx}{gloss-bo.ldf}}}
-\generate{\file{gloss-bosnian.ldf}{\from{polyglossia.dtx}{gloss-bosnian.ldf}}}
-\generate{\file{gloss-br.ldf}{\from{polyglossia.dtx}{gloss-br.ldf}}}
-\generate{\file{gloss-brazil.ldf}{\from{polyglossia.dtx}{gloss-brazil.ldf}}}
-\generate{\file{gloss-breton.ldf}{\from{polyglossia.dtx}{gloss-breton.ldf}}}
-\generate{\file{gloss-british.ldf}{\from{polyglossia.dtx}{gloss-british.ldf}}}
-\generate{\file{gloss-bs.ldf}{\from{polyglossia.dtx}{gloss-bs.ldf}}}
-\generate{\file{gloss-bulgarian.ldf}{\from{polyglossia.dtx}{gloss-bulgarian.ldf}}}
-\generate{\file{gloss-ca.ldf}{\from{polyglossia.dtx}{gloss-ca.ldf}}}
-\generate{\file{gloss-canadian.ldf}{\from{polyglossia.dtx}{gloss-canadian.ldf}}}
-\generate{\file{gloss-canadien.ldf}{\from{polyglossia.dtx}{gloss-canadien.ldf}}}
-\generate{\file{gloss-catalan.ldf}{\from{polyglossia.dtx}{gloss-catalan.ldf}}}
-\generate{\file{gloss-ckb-Arab.ldf}{\from{polyglossia.dtx}{gloss-ckb-Arab.ldf}}}
-\generate{\file{gloss-ckb-Latn.ldf}{\from{polyglossia.dtx}{gloss-ckb-Latn.ldf}}}
-\generate{\file{gloss-ckb.ldf}{\from{polyglossia.dtx}{gloss-ckb.ldf}}}
-\generate{\file{gloss-cop.ldf}{\from{polyglossia.dtx}{gloss-cop.ldf}}}
-\generate{\file{gloss-coptic.ldf}{\from{polyglossia.dtx}{gloss-coptic.ldf}}}
-\generate{\file{gloss-croatian.ldf}{\from{polyglossia.dtx}{gloss-croatian.ldf}}}
-\generate{\file{gloss-cy.ldf}{\from{polyglossia.dtx}{gloss-cy.ldf}}}
-\generate{\file{gloss-cz.ldf}{\from{polyglossia.dtx}{gloss-cz.ldf}}}
-\generate{\file{gloss-czech.ldf}{\from{polyglossia.dtx}{gloss-czech.ldf}}}
-\generate{\file{gloss-da.ldf}{\from{polyglossia.dtx}{gloss-da.ldf}}}
-\generate{\file{gloss-danish.ldf}{\from{polyglossia.dtx}{gloss-danish.ldf}}}
-\generate{\file{gloss-de-AT-1901.ldf}{\from{polyglossia.dtx}{gloss-de-AT-1901.ldf}}}
-\generate{\file{gloss-de-AT-1996.ldf}{\from{polyglossia.dtx}{gloss-de-AT-1996.ldf}}}
-\generate{\file{gloss-de-AT.ldf}{\from{polyglossia.dtx}{gloss-de-AT.ldf}}}
-\generate{\file{gloss-de-CH-1901.ldf}{\from{polyglossia.dtx}{gloss-de-CH-1901.ldf}}}
-\generate{\file{gloss-de-CH-1996.ldf}{\from{polyglossia.dtx}{gloss-de-CH-1996.ldf}}}
-\generate{\file{gloss-de-CH.ldf}{\from{polyglossia.dtx}{gloss-de-CH.ldf}}}
-\generate{\file{gloss-de-DE-1901.ldf}{\from{polyglossia.dtx}{gloss-de-DE-1901.ldf}}}
-\generate{\file{gloss-de-DE-1996.ldf}{\from{polyglossia.dtx}{gloss-de-DE-1996.ldf}}}
-\generate{\file{gloss-de-DE.ldf}{\from{polyglossia.dtx}{gloss-de-DE.ldf}}}
-\generate{\file{gloss-de-Latf-AT-1901.ldf}{\from{polyglossia.dtx}{gloss-de-Latf-AT-1901.ldf}}}
-\generate{\file{gloss-de-Latf-AT-1996.ldf}{\from{polyglossia.dtx}{gloss-de-Latf-AT-1996.ldf}}}
-\generate{\file{gloss-de-Latf-AT.ldf}{\from{polyglossia.dtx}{gloss-de-Latf-AT.ldf}}}
-\generate{\file{gloss-de-Latf-CH-1901.ldf}{\from{polyglossia.dtx}{gloss-de-Latf-CH-1901.ldf}}}
-\generate{\file{gloss-de-Latf-CH-1996.ldf}{\from{polyglossia.dtx}{gloss-de-Latf-CH-1996.ldf}}}
-\generate{\file{gloss-de-Latf-CH.ldf}{\from{polyglossia.dtx}{gloss-de-Latf-CH.ldf}}}
-\generate{\file{gloss-de-Latf-DE-1901.ldf}{\from{polyglossia.dtx}{gloss-de-Latf-DE-1901.ldf}}}
-\generate{\file{gloss-de-Latf-DE-1996.ldf}{\from{polyglossia.dtx}{gloss-de-Latf-DE-1996.ldf}}}
-\generate{\file{gloss-de-Latf-DE.ldf}{\from{polyglossia.dtx}{gloss-de-Latf-DE.ldf}}}
-\generate{\file{gloss-de-Latf.ldf}{\from{polyglossia.dtx}{gloss-de-Latf.ldf}}}
-\generate{\file{gloss-de.ldf}{\from{polyglossia.dtx}{gloss-de.ldf}}}
-\generate{\file{gloss-divehi.ldf}{\from{polyglossia.dtx}{gloss-divehi.ldf}}}
-\generate{\file{gloss-dsb.ldf}{\from{polyglossia.dtx}{gloss-dsb.ldf}}}
-\generate{\file{gloss-dutch.ldf}{\from{polyglossia.dtx}{gloss-dutch.ldf}}}
-\generate{\file{gloss-dv.ldf}{\from{polyglossia.dtx}{gloss-dv.ldf}}}
-\generate{\file{gloss-el-monoton.ldf}{\from{polyglossia.dtx}{gloss-el-monoton.ldf}}}
-\generate{\file{gloss-el-polyton.ldf}{\from{polyglossia.dtx}{gloss-el-polyton.ldf}}}
-\generate{\file{gloss-el.ldf}{\from{polyglossia.dtx}{gloss-el.ldf}}}
-\generate{\file{gloss-en-AU.ldf}{\from{polyglossia.dtx}{gloss-en-AU.ldf}}}
-\generate{\file{gloss-en-CA.ldf}{\from{polyglossia.dtx}{gloss-en-CA.ldf}}}
-\generate{\file{gloss-en-GB.ldf}{\from{polyglossia.dtx}{gloss-en-GB.ldf}}}
-\generate{\file{gloss-en-NZ.ldf}{\from{polyglossia.dtx}{gloss-en-NZ.ldf}}}
-\generate{\file{gloss-en-US.ldf}{\from{polyglossia.dtx}{gloss-en-US.ldf}}}
-\generate{\file{gloss-en.ldf}{\from{polyglossia.dtx}{gloss-en.ldf}}}
-\generate{\file{gloss-english.ldf}{\from{polyglossia.dtx}{gloss-english.ldf}}}
-\generate{\file{gloss-eo.ldf}{\from{polyglossia.dtx}{gloss-eo.ldf}}}
-\generate{\file{gloss-es-ES.ldf}{\from{polyglossia.dtx}{gloss-es-ES.ldf}}}
-\generate{\file{gloss-es-MX.ldf}{\from{polyglossia.dtx}{gloss-es-MX.ldf}}}
-\generate{\file{gloss-es.ldf}{\from{polyglossia.dtx}{gloss-es.ldf}}}
-\generate{\file{gloss-esperanto.ldf}{\from{polyglossia.dtx}{gloss-esperanto.ldf}}}
-\generate{\file{gloss-estonian.ldf}{\from{polyglossia.dtx}{gloss-estonian.ldf}}}
-\generate{\file{gloss-et.ldf}{\from{polyglossia.dtx}{gloss-et.ldf}}}
-\generate{\file{gloss-eu.ldf}{\from{polyglossia.dtx}{gloss-eu.ldf}}}
-\generate{\file{gloss-fa.ldf}{\from{polyglossia.dtx}{gloss-fa.ldf}}}
-\generate{\file{gloss-farsi.ldf}{\from{polyglossia.dtx}{gloss-farsi.ldf}}}
-\generate{\file{gloss-fi.ldf}{\from{polyglossia.dtx}{gloss-fi.ldf}}}
-\generate{\file{gloss-finnish.ldf}{\from{polyglossia.dtx}{gloss-finnish.ldf}}}
-\generate{\file{gloss-fr-CA.ldf}{\from{polyglossia.dtx}{gloss-fr-CA.ldf}}}
-\generate{\file{gloss-fr-CH.ldf}{\from{polyglossia.dtx}{gloss-fr-CH.ldf}}}
-\generate{\file{gloss-fr-FR.ldf}{\from{polyglossia.dtx}{gloss-fr-FR.ldf}}}
-\generate{\file{gloss-fr.ldf}{\from{polyglossia.dtx}{gloss-fr.ldf}}}
-\generate{\file{gloss-french.ldf}{\from{polyglossia.dtx}{gloss-french.ldf}}}
-\generate{\file{gloss-friulan.ldf}{\from{polyglossia.dtx}{gloss-friulan.ldf}}}
-\generate{\file{gloss-friulian.ldf}{\from{polyglossia.dtx}{gloss-friulian.ldf}}}
-\generate{\file{gloss-fur.ldf}{\from{polyglossia.dtx}{gloss-fur.ldf}}}
-\generate{\file{gloss-ga.ldf}{\from{polyglossia.dtx}{gloss-ga.ldf}}}
-\generate{\file{gloss-gaelic.ldf}{\from{polyglossia.dtx}{gloss-gaelic.ldf}}}
-\generate{\file{gloss-galician.ldf}{\from{polyglossia.dtx}{gloss-galician.ldf}}}
-\generate{\file{gloss-gd.ldf}{\from{polyglossia.dtx}{gloss-gd.ldf}}}
-\generate{\file{gloss-georgian.ldf}{\from{polyglossia.dtx}{gloss-georgian.ldf}}}
-\generate{\file{gloss-german.ldf}{\from{polyglossia.dtx}{gloss-german.ldf}}}
-\generate{\file{gloss-germanb.ldf}{\from{polyglossia.dtx}{gloss-germanb.ldf}}}
-\generate{\file{gloss-gl.ldf}{\from{polyglossia.dtx}{gloss-gl.ldf}}}
-\generate{\file{gloss-grc.ldf}{\from{polyglossia.dtx}{gloss-grc.ldf}}}
-\generate{\file{gloss-greek.ldf}{\from{polyglossia.dtx}{gloss-greek.ldf}}}
-\generate{\file{gloss-he.ldf}{\from{polyglossia.dtx}{gloss-he.ldf}}}
-\generate{\file{gloss-hebrew.ldf}{\from{polyglossia.dtx}{gloss-hebrew.ldf}}}
-\generate{\file{gloss-hi.ldf}{\from{polyglossia.dtx}{gloss-hi.ldf}}}
-\generate{\file{gloss-hindi.ldf}{\from{polyglossia.dtx}{gloss-hindi.ldf}}}
-\generate{\file{gloss-hr.ldf}{\from{polyglossia.dtx}{gloss-hr.ldf}}}
-\generate{\file{gloss-hsb.ldf}{\from{polyglossia.dtx}{gloss-hsb.ldf}}}
-\generate{\file{gloss-hu.ldf}{\from{polyglossia.dtx}{gloss-hu.ldf}}}
-\generate{\file{gloss-hungarian.ldf}{\from{polyglossia.dtx}{gloss-hungarian.ldf}}}
-\generate{\file{gloss-hy.ldf}{\from{polyglossia.dtx}{gloss-hy.ldf}}}
-\generate{\file{gloss-ia.ldf}{\from{polyglossia.dtx}{gloss-ia.ldf}}}
-\generate{\file{gloss-icelandic.ldf}{\from{polyglossia.dtx}{gloss-icelandic.ldf}}}
-\generate{\file{gloss-id.ldf}{\from{polyglossia.dtx}{gloss-id.ldf}}}
-\generate{\file{gloss-interlingua.ldf}{\from{polyglossia.dtx}{gloss-interlingua.ldf}}}
-\generate{\file{gloss-irish.ldf}{\from{polyglossia.dtx}{gloss-irish.ldf}}}
-\generate{\file{gloss-is.ldf}{\from{polyglossia.dtx}{gloss-is.ldf}}}
-\generate{\file{gloss-it.ldf}{\from{polyglossia.dtx}{gloss-it.ldf}}}
-\generate{\file{gloss-italian.ldf}{\from{polyglossia.dtx}{gloss-italian.ldf}}}
-\generate{\file{gloss-ja.ldf}{\from{polyglossia.dtx}{gloss-ja.ldf}}}
-\generate{\file{gloss-japanese.ldf}{\from{polyglossia.dtx}{gloss-japanese.ldf}}}
-\generate{\file{gloss-ka.ldf}{\from{polyglossia.dtx}{gloss-ka.ldf}}}
-\generate{\file{gloss-kannada.ldf}{\from{polyglossia.dtx}{gloss-kannada.ldf}}}
-\generate{\file{gloss-khmer.ldf}{\from{polyglossia.dtx}{gloss-khmer.ldf}}}
-\generate{\file{gloss-km.ldf}{\from{polyglossia.dtx}{gloss-km.ldf}}}
-\generate{\file{gloss-kmr-Arab.ldf}{\from{polyglossia.dtx}{gloss-kmr-Arab.ldf}}}
-\generate{\file{gloss-kmr-Latn.ldf}{\from{polyglossia.dtx}{gloss-kmr-Latn.ldf}}}
-\generate{\file{gloss-kmr.ldf}{\from{polyglossia.dtx}{gloss-kmr.ldf}}}
-\generate{\file{gloss-kn.ldf}{\from{polyglossia.dtx}{gloss-kn.ldf}}}
-\generate{\file{gloss-ko.ldf}{\from{polyglossia.dtx}{gloss-ko.ldf}}}
-\generate{\file{gloss-korean.ldf}{\from{polyglossia.dtx}{gloss-korean.ldf}}}
-\generate{\file{gloss-ku-Arab.ldf}{\from{polyglossia.dtx}{gloss-ku-Arab.ldf}}}
-\generate{\file{gloss-ku-Latn.ldf}{\from{polyglossia.dtx}{gloss-ku-Latn.ldf}}}
-\generate{\file{gloss-ku.ldf}{\from{polyglossia.dtx}{gloss-ku.ldf}}}
-\generate{\file{gloss-kurdish.ldf}{\from{polyglossia.dtx}{gloss-kurdish.ldf}}}
-\generate{\file{gloss-kurmanji.ldf}{\from{polyglossia.dtx}{gloss-kurmanji.ldf}}}
-\generate{\file{gloss-la-x-classic.ldf}{\from{polyglossia.dtx}{gloss-la-x-classic.ldf}}}
-\generate{\file{gloss-la-x-ecclesia.ldf}{\from{polyglossia.dtx}{gloss-la-x-ecclesia.ldf}}}
-\generate{\file{gloss-la-x-medieval.ldf}{\from{polyglossia.dtx}{gloss-la-x-medieval.ldf}}}
-\generate{\file{gloss-la.ldf}{\from{polyglossia.dtx}{gloss-la.ldf}}}
-\generate{\file{gloss-lao.ldf}{\from{polyglossia.dtx}{gloss-lao.ldf}}}
-\generate{\file{gloss-latex.ldf}{\from{polyglossia.dtx}{gloss-latex.ldf}}}
-\generate{\file{gloss-latin.ldf}{\from{polyglossia.dtx}{gloss-latin.ldf}}}
-\generate{\file{gloss-latinclassic.ldf}{\from{polyglossia.dtx}{gloss-latinclassic.ldf}}}
-\generate{\file{gloss-latinecclesiastic.ldf}{\from{polyglossia.dtx}{gloss-latinecclesiastic.ldf}}}
-\generate{\file{gloss-latinmedieval.ldf}{\from{polyglossia.dtx}{gloss-latinmedieval.ldf}}}
-\generate{\file{gloss-latvian.ldf}{\from{polyglossia.dtx}{gloss-latvian.ldf}}}
-\generate{\file{gloss-lithuanian.ldf}{\from{polyglossia.dtx}{gloss-lithuanian.ldf}}}
-\generate{\file{gloss-lo.ldf}{\from{polyglossia.dtx}{gloss-lo.ldf}}}
-\generate{\file{gloss-lowersorbian.ldf}{\from{polyglossia.dtx}{gloss-lowersorbian.ldf}}}
-\generate{\file{gloss-lsorbian.ldf}{\from{polyglossia.dtx}{gloss-lsorbian.ldf}}}
-\generate{\file{gloss-lt.ldf}{\from{polyglossia.dtx}{gloss-lt.ldf}}}
-\generate{\file{gloss-lv.ldf}{\from{polyglossia.dtx}{gloss-lv.ldf}}}
-\generate{\file{gloss-macedonian.ldf}{\from{polyglossia.dtx}{gloss-macedonian.ldf}}}
-\generate{\file{gloss-magyar.ldf}{\from{polyglossia.dtx}{gloss-magyar.ldf}}}
-\generate{\file{gloss-malay.ldf}{\from{polyglossia.dtx}{gloss-malay.ldf}}}
-\generate{\file{gloss-malayalam.ldf}{\from{polyglossia.dtx}{gloss-malayalam.ldf}}}
-\generate{\file{gloss-marathi.ldf}{\from{polyglossia.dtx}{gloss-marathi.ldf}}}
-\generate{\file{gloss-mk.ldf}{\from{polyglossia.dtx}{gloss-mk.ldf}}}
-\generate{\file{gloss-ml.ldf}{\from{polyglossia.dtx}{gloss-ml.ldf}}}
-\generate{\file{gloss-mn.ldf}{\from{polyglossia.dtx}{gloss-mn.ldf}}}
-\generate{\file{gloss-mongolian.ldf}{\from{polyglossia.dtx}{gloss-mongolian.ldf}}}
-\generate{\file{gloss-mr.ldf}{\from{polyglossia.dtx}{gloss-mr.ldf}}}
-\generate{\file{gloss-naustrian.ldf}{\from{polyglossia.dtx}{gloss-naustrian.ldf}}}
-\generate{\file{gloss-nb.ldf}{\from{polyglossia.dtx}{gloss-nb.ldf}}}
-\generate{\file{gloss-newzealand.ldf}{\from{polyglossia.dtx}{gloss-newzealand.ldf}}}
-\generate{\file{gloss-ngerman.ldf}{\from{polyglossia.dtx}{gloss-ngerman.ldf}}}
-\generate{\file{gloss-nko.ldf}{\from{polyglossia.dtx}{gloss-nko.ldf}}}
-\generate{\file{gloss-norsk.ldf}{\from{polyglossia.dtx}{gloss-norsk.ldf}}}
-\generate{\file{gloss-norwegian.ldf}{\from{polyglossia.dtx}{gloss-norwegian.ldf}}}
-\generate{\file{gloss-nswissgerman.ldf}{\from{polyglossia.dtx}{gloss-nswissgerman.ldf}}}
-\generate{\file{gloss-nynorsk.ldf}{\from{polyglossia.dtx}{gloss-nynorsk.ldf}}}
-\generate{\file{gloss-occitan.ldf}{\from{polyglossia.dtx}{gloss-occitan.ldf}}}
-\generate{\file{gloss-persian.ldf}{\from{polyglossia.dtx}{gloss-persian.ldf}}}
-\generate{\file{gloss-piedmontese.ldf}{\from{polyglossia.dtx}{gloss-piedmontese.ldf}}}
-\generate{\file{gloss-polish.ldf}{\from{polyglossia.dtx}{gloss-polish.ldf}}}
-\generate{\file{gloss-polutonikogreek.ldf}{\from{polyglossia.dtx}{gloss-polutonikogreek.ldf}}}
-\generate{\file{gloss-portuges.ldf}{\from{polyglossia.dtx}{gloss-portuges.ldf}}}
-\generate{\file{gloss-portuguese.ldf}{\from{polyglossia.dtx}{gloss-portuguese.ldf}}}
-\generate{\file{gloss-romanian.ldf}{\from{polyglossia.dtx}{gloss-romanian.ldf}}}
-\generate{\file{gloss-romansh.ldf}{\from{polyglossia.dtx}{gloss-romansh.ldf}}}
-\generate{\file{gloss-russian.ldf}{\from{polyglossia.dtx}{gloss-russian.ldf}}}
-\generate{\file{gloss-sami.ldf}{\from{polyglossia.dtx}{gloss-sami.ldf}}}
-\generate{\file{gloss-samin.ldf}{\from{polyglossia.dtx}{gloss-samin.ldf}}}
-\generate{\file{gloss-sanskrit.ldf}{\from{polyglossia.dtx}{gloss-sanskrit.ldf}}}
-\generate{\file{gloss-scottish.ldf}{\from{polyglossia.dtx}{gloss-scottish.ldf}}}
-\generate{\file{gloss-serbian.ldf}{\from{polyglossia.dtx}{gloss-serbian.ldf}}}
-\generate{\file{gloss-serbianc.ldf}{\from{polyglossia.dtx}{gloss-serbianc.ldf}}}
-\generate{\file{gloss-slovak.ldf}{\from{polyglossia.dtx}{gloss-slovak.ldf}}}
-\generate{\file{gloss-slovene.ldf}{\from{polyglossia.dtx}{gloss-slovene.ldf}}}
-\generate{\file{gloss-slovenian.ldf}{\from{polyglossia.dtx}{gloss-slovenian.ldf}}}
-\generate{\file{gloss-sorbian.ldf}{\from{polyglossia.dtx}{gloss-sorbian.ldf}}}
-\generate{\file{gloss-spanish.ldf}{\from{polyglossia.dtx}{gloss-spanish.ldf}}}
-\generate{\file{gloss-spanishmx.ldf}{\from{polyglossia.dtx}{gloss-spanishmx.ldf}}}
-\generate{\file{gloss-swedish.ldf}{\from{polyglossia.dtx}{gloss-swedish.ldf}}}
-\generate{\file{gloss-swissgerman.ldf}{\from{polyglossia.dtx}{gloss-swissgerman.ldf}}}
-\generate{\file{gloss-syriac.ldf}{\from{polyglossia.dtx}{gloss-syriac.ldf}}}
-\generate{\file{gloss-tamil.ldf}{\from{polyglossia.dtx}{gloss-tamil.ldf}}}
-\generate{\file{gloss-telugu.ldf}{\from{polyglossia.dtx}{gloss-telugu.ldf}}}
-\generate{\file{gloss-thai.ldf}{\from{polyglossia.dtx}{gloss-thai.ldf}}}
-\generate{\file{gloss-tibetan.ldf}{\from{polyglossia.dtx}{gloss-tibetan.ldf}}}
-\generate{\file{gloss-turkish.ldf}{\from{polyglossia.dtx}{gloss-turkish.ldf}}}
-\generate{\file{gloss-turkmen.ldf}{\from{polyglossia.dtx}{gloss-turkmen.ldf}}}
-\generate{\file{gloss-ukrainian.ldf}{\from{polyglossia.dtx}{gloss-ukrainian.ldf}}}
-\generate{\file{gloss-uppersorbian.ldf}{\from{polyglossia.dtx}{gloss-uppersorbian.ldf}}}
-\generate{\file{gloss-urdu.ldf}{\from{polyglossia.dtx}{gloss-urdu.ldf}}}
-\generate{\file{gloss-usorbian.ldf}{\from{polyglossia.dtx}{gloss-usorbian.ldf}}}
-\generate{\file{gloss-vietnamese.ldf}{\from{polyglossia.dtx}{gloss-vietnamese.ldf}}}
-\generate{\file{gloss-welsh.ldf}{\from{polyglossia.dtx}{gloss-welsh.ldf}}}
-\generate{\file{arabicdigits.map}{\from{polyglossia.dtx}{arabicdigits.map}}}
-\generate{\file{bengalidigits.map}{\from{polyglossia.dtx}{bengalidigits.map}}}
-\generate{\file{devanagaridigits.map}{\from{polyglossia.dtx}{devanagaridigits.map}}}
-\generate{\file{farsidigits.map}{\from{polyglossia.dtx}{farsidigits.map}}}
-\generate{\file{thaidigits.map}{\from{polyglossia.dtx}{thaidigits.map}}}
-\def\MetaPrefix{-- }
-\generate{\file{polyglossia-french.lua}{\from{polyglossia.dtx}{polyglossia-french.lua}}}
-\generate{\file{polyglossia-korean.lua}{\from{polyglossia.dtx}{polyglossia-korean.lua}}}
-\generate{\file{polyglossia-latin.lua}{\from{polyglossia.dtx}{polyglossia-latin.lua}}}
-\generate{\file{polyglossia-punct.lua}{\from{polyglossia.dtx}{polyglossia-punct.lua}}}
-\generate{\file{polyglossia-sanskrit.lua}{\from{polyglossia.dtx}{polyglossia-sanskrit.lua}}}
-\generate{\file{polyglossia-tibt.lua}{\from{polyglossia.dtx}{polyglossia-tibt.lua}}}
-\generate{\file{polyglossia.lua}{\from{polyglossia.dtx}{polyglossia.lua}}}
-\let\MetaPrefix\DoubleperCent
-%</batchfile>
-%<batchfile>\endbatchfile
-%<*internal>
-\generate{\file{polyglossia.ins}{\from{polyglossia.dtx}{batchfile}}}
-\nopreamble\nopostamble
-\generate{\file{../README.md}{\from{polyglossia.dtx}{../README.md}}}
-\generate{\file{Changelog}{\from{polyglossia.dtx}{Changelog}}}
-\generate{\file{examples.tex}{\from{polyglossia.dtx}{examples.tex}}}
-\generate{\file{example-arabic.tex}{\from{polyglossia.dtx}{example-arabic.tex}}}
-\generate{\file{example-thai.tex}{\from{polyglossia.dtx}{example-thai.tex}}}
-\endgroup
-%</internal>
-%
-%<*driver>
-% !TeX spellcheck = en_US
-% !TeX TS-program = xelatex
-\documentclass[11pt]{ltxdoc}
-\usepackage{color}
-\usepackage{xspace,fancyvrb,longtable,booktabs}
-\usepackage[neverdecrease]{paralist}
-\usepackage[format=hang,labelfont=bf,labelsep=period]{caption}
-\definecolor{xpgblue}{rgb}{0.02,0.04,0.48}
-\definecolor{lightblue}{rgb}{0.61,.8,.8}
-\definecolor{xpgred}{rgb}{0.65,0.04,0.07}
-\usepackage[
- unicode=true,
- bookmarks=true,
- colorlinks=true,
- linkcolor=xpgblue,
- urlcolor=xpgblue,
- citecolor=xpgblue,
- hyperindex=false,
- hyperfootnotes=false,
- pdftitle={Polyglossia: Modern multilingual typesetting with XeLaTeX and LuaLaTeX},
- pdfauthor={F Charette, A Reutenauer, B Roucariès, J Spitzmüller},
- pdfkeywords={xetex, xelatex, luatex, lualatex, multilingual, babel, hyphenation}
- ]{hyperref}
-\usepackage{metalogo}
-\let\XeTeX\undefined
-\let\XeLaTeX\undefined
-\usepackage[babelshorthands]{polyglossia}
-\usepackage{farsical}
-\setmainlanguage[variant=british,ordinalmonthday=false]{english}
-\setotherlanguages{arabic,armenian,hebrew,syriac,greek,russian,serbian,catalan,georgian}
-\usepackage[protrusion]{microtype}
-\newcommand*\Cmd[1]{\cmd{#1}\DescribeMacro{#1}\xspace}
-\newcommand*\pkg[1]{\textsf{\color{xpgblue}#1}}
-\newcommand*\file[1]{\texttt{\color{xpgblue}#1}}
-\newcommand*\TR[1]{\textcolor{xpgred}{#1}}
-\newcommand*\TX[1]{\hyperref[#1]{\textcolor{xpgred}{#1}}}
-\newcommand*\TA[1]{\textsc{\color{xpgblue}#1}}
-\newcommand*\link[1]{\href{#1}{#1}}
-\renewcommand*\meta[1]{\texttt{⟨#1⟩}}
-\def\eg{\textit{e.g.,}\xspace}
-\def\ie{\textit{i.e.,}\xspace}
-\def\ca{\textit{ca.}\@\xspace}
-\def\Eg{\textit{E.g.,}\xspace}
-\def\Ie{\textit{I.e.,}\xspace}
-\def\etc{\@ifnextchar.{\textit{etc}}{\textit{etc.}\@\xspace}}
-
-%% Commands for documenting options
-\newcommand*\xpgoption[1]{\textcolor{xpgblue}{\ttfamily\bfseries #1}}
-\newcommand*\xpgvalue[1]{\texttt{#1}}
-\newcommand*\xpgpresetvalue[1]{\texttt{\textit{#1}}}
-\newcommand*\xpgdefaultvalue[1]{\texttt{*#1}}
-
-% arguments: #1 version number, #2 key name, #3 footnote, #4 possible values
-\NewDocumentCommand\xpgchoicekey{omom}{%
- \xpgoption{#2}\IfValueT{#3}{\footnote{#3}}%
- \IfValueT{#1}{\new{#1}} \xpgvalue{=} #4\par%
-}
-
-% arguments: #1 version number, #2 key name, #3 footnote
-\NewDocumentCommand\xpgboolkey{omo}{\xpgchoicekey[#1]{#2}[#3]{\xpgdefaultvalue{true} or \xpgvalue{false}}}
-\NewDocumentCommand\xpgboolkeytrue{omo}{\xpgchoicekey[#1]{#2}[#3]{\xpgdefaultvalue{\xpgpresetvalue{true}} or \xpgvalue{false}}}
-\NewDocumentCommand\xpgboolkeyfalse{omo}{\xpgchoicekey[#1]{#2}[#3]{\xpgdefaultvalue{true} or \xpgpresetvalue{false}}}
-
-% arguments: #1 version number, #2 key name, #3 default code
-\NewDocumentCommand\xpgcodekey{omv}{%
- \xpgoption{#2}\IfValueT{#1}{\new{#1}}
- \xpgvalue{=} \meta{code} (default value: \texttt{#3})\par%
-}
-
-%% Sidenotes << copied from fontspec.dtx
-\newcommand\new[1]{%
- \edef\thisversion{v#1}%
- \ifhmode\unskip~\fi{\ifx\thisversion\fileversion\color{blue}\else\color[gray]{0.5}\fi
- $\leftarrow$}%
- \marginpar{\centering
- \small\ifx\thisversion\fileversion\color{blue}\else\color[gray]{0.5}\fi
- \textsf{v#1}}}
-\newcommand\displaycmd[2]{%
- \\\DescribeMacro{#2}\centerline{\cmd{#1}}}
-\renewenvironment{itemize}{\begin{compactitem}[\char"2023]}%[{\fontspec{DejaVu Sans}\char"25BB}]}%
- {\end{compactitem}}
-\renewenvironment{enumerate}{\begin{compactenum}}{\end{compactenum}}
-\newenvironment{shorthands}{%
- \begin{list}{}%
- {\settowidth{\labelwidth}{MM}%
- \setlength{\leftmargin}{\labelwidth}%
- \addtolength{\leftmargin}{\labelsep}%
- \renewcommand{\makelabel}[1]{##1\hfil}}}%
- {\end{list}}
-
-% This is to prevent page breaks too short after subsections
-\def\condbreak#1{%
- \vskip 0pt plus #1\pagebreak[3]\vskip 0pt plus -#1\relax}
-\pretocmd{\subsection}{\condbreak{2\baselineskip}}{}{}
-
-%% fontspec declarations:
-\setmainfont{Linux Libertine O}[Numbers=OldStyle]
-\setsansfont{Linux Biolinum O}
-\setmonofont[Scale=MatchLowercase]{DejaVu Sans Mono}
-\newfontfamily\arabicfont[Script=Arabic]{Amiri}
-\newfontfamily\armenianfont[Script=Armenian]{DejaVu Sans}
-\newfontfamily\syriacfont[Script=Syriac]{Serto Jerusalem}
-\newfontfamily\hebrewfont[Script=Hebrew]{Ezra SIL}
-\newfontfamily\georgianfont{DejaVu Serif}
-
-\linespread{1.05}
-\frenchspacing
-\EnableCrossrefs
-\CodelineIndex
-\RecordChanges
-% COMMENT THE NEXT LINE TO INCLUDE THE CODE
-\AtBeginDocument{\OnlyDescription}
-
-
-\begin{document}
-\ifxetex
- \DocInput{polyglossia.dtx}
-\fi
-\end{document}
-%</driver>
-%
-% \fi
-%
-% \errorcontextlines=999
-% \makeatletter
-%
-% \hyphenation{Kha-li-ghi Reu-ten-auer new-zea-land}
-% \GetFileInfo{polyglossia.sty}
-%
-% \title{\textcolor{lightblue}{\Huge\fontspec[LetterSpace=40]{GFS Ambrosia} Πολυγλωσσια}
-% \\[16pt]
-% \color{xpgblue}Polyglossia: Modern multilingual typesetting with \XeLaTeX\ and \LuaLaTeX}
-% \author{\TA{François Charette} \and \TA{Arthur Reutenauer}\thanks{Current maintainer}
-% \and \TA{Bastien Roucariès} \and \TA{Jürgen Spitzmüller}}
-% \date{\filedate \qquad \fileversion\\
-% \footnotesize (\textsc{pdf} file generated on \today)}
-%
-% \maketitle
-% \tableofcontents
-%
-% \condbreak{4\baselineskip}
-%
-%
-% \DeleteShortVerb{\|}
-% \MakeShortVerb{\¦}
-%
-% ^^A\begin{abstract}
-% ^^ABlablabla
-% ^^A\end{abstract}
-%
-%
-% \section{Introduction}
-%
-% \pkg{Polyglossia} is a package for facilitating multilingual typesetting with
-% \XeLaTeX\ and (with some exceptions) \LuaLaTeX. Basically, it
-% can be used as an alternative to \pkg{babel} for performing the following
-% tasks automatically:
-%
-% \begin{enumerate}
-% \item Loading the appropriate hyphenation patterns.
-% \item Setting the script and language tags of the current font (if possible and
-% available), via the package \pkg{fontspec}.
-% \item Switching to a font assigned by the user to a particular script or language.
-% \item Adjusting some typographical conventions according to the current language
-% (such as afterindent, frenchindent, spaces before or after punctuation marks,
-% etc.).
-% \item Redefining all document strings (like “chapter”, “figure”, “bibliography”).
-% \item Adapting the formatting of dates (for non-Gregorian calendars via external
-% packages bundled with polyglossia: currently the Hebrew, Islamic and Farsi
-% calendars are supported).
-% \item For languages that have their own numbering system, modifying the formatting
-% of numbers appropriately (this also includes redefining the alphabetic sequence
-% for non-Latin alphabets).\footnote{%
-% This is done by bundled sub-packages such as \pkg{arabicnumbers}.}
-% \item Ensuring proper directionality if the document contains languages
-% that are written from right to left (via the package \pkg{bidi},
-% available separately).
-% \end{enumerate}
-% ^^A
-% Several features of \pkg{babel} that do not make sense in the \XeTeX\ world (like font
-% encodings, shorthands, etc.) are not supported.
-% Generally speaking, \pkg{polyglossia} aims to remain as compatible as possible
-% with the fundamental features of \pkg{babel} while being cleaner, light-weight,
-% and modern. The package \pkg{antomega} has been very beneficial in our attempt to
-% reach this objective.
-%
-% \paragraph{Requirements} The current version of \pkg{polyglossia} makes use of some convenient
-% macros defined in the \pkg{etoolbox} package by \TA{Philipp Lehmann} and \TA{Joseph Wright}.
-% Being designed for \XeLaTeX\ and \LuaLaTeX, it obviously also relies on \pkg{fontspec} by
-% \TA{Will Robertson}. For languages written from right to left, it needs the package \pkg{bidi}
-% (for \XeTeX) or \pkg{luabidi} (for \LuaTeX) by \TA{Vafa Khalighi} (\textarabic{وفا خليقي}) and
-% the \pkg{bidi-tex GitHub Organisation}.
-% Polyglossia also bundles three packages for calendaric computations (\pkg{hebrewcal},
-% \pkg{hijrical}, and \pkg{farsical}).
-%
-%
-% \section{Setting up multilingual documents}
-%
-% \subsection{Activating languages}
-%
-% The default language of a document is specified by means of the command
-% \displaycmd{\setdefaultlanguage\oarg{options}\marg{lang}}{\setdefaultlanguage}
-% (or, equivalently, \Cmd\setmainlanguage).
-% Secondary languages are specified with
-% \displaycmd{\setotherlanguage\oarg{options}\marg{lang}.}{\setotherlanguage}
-% All these commands allow you to set language-specific options.\footnote{%
-% Section~\ref{specific} documents these options for the respective languages.}
-% It is also possible to load a series of secondary languages at once (but without options)
-% using
-% \displaycmd{\setotherlanguages\marg{lang1⟩,⟨lang2⟩,⟨lang3⟩,⟨…}.}{\setotherlanguages}
-% ^^A
-% All language-specific options can be modified locally by means of the
-% language-switching commands described in section \ref{languageswitching}.
-%
-% \paragraph{Note} In general, it is advisable to activate the languages \emph{after} all
-% packages have been loaded. This is particularly important if you use right-to-left scripts
-% or languages with babel shorthands.
-%
-%
-% \subsection{Supported languages}
-%
-% Table~\ref{tab:lang} lists all languages currently supported.
-% Those in \TR{red} have specific options and/or commands
-% that are explained in section \ref{specific} below.
-%
-% \begin{table}[ht]\centering
-% \caption{\label{tab:lang}Languages currently supported in \pkg{polyglossia}}
-% ^^A Produced with tools/insert-language-list.rb -- JS, 2019-11-01
-% ^^A Edited by hand -- JS, 2019-11-01
-% \begin{tabular}{lllll}
-% \toprule
-% \TX{afrikaans} & danish & \TX{hungarian} & \TX{marathi} & \TX{slovenian} \\
-% albanian & divehi & icelandic & \TX{mongolian} & \TX{sorbian} \\
-% amharic & \TX{dutch} & interlingua & nko & \TX{spanish} \\
-% \TX{arabic} & \TX{english} & \TX{italian} & \TX{norwegian} & swedish \\
-% \TX{armenian} & \TX{esperanto} & japanese & occitan & \TX{syriac} \\
-% asturian & estonian & kannada & \TX{persian} & tamil \\
-% basque & \TX{finnish} & khmer & piedmontese & telugu \\
-% \TX{belarusian} & \TX{french} & \TX{korean} & polish & \TX{thai} \\
-% \TX{bengali} & friulian & \TX{kurdish} & \TX{portuguese} & \TX{tibetan} \\
-% bosnian & \TX{gaelic} & \TX{lao} & romanian & turkish \\
-% breton & galician & \TX{latin} & romansh & turkmen \\
-% bulgarian & \TX{georgian} & latvian & \TX{russian} & \TX{ukrainian} \\
-% \TX{catalan} & \TX{german} & lithuanian & \TX{sami} & urdu \\
-% coptic & \TX{greek} & macedonian & \TX{sanskrit} & vietnamese \\
-% \TX{croatian} & \TX{hebrew} & \TX{malay} & \TX{serbian} & \TX{welsh} \\
-% \TX{czech} & \TX{hindi} & malayalam & \TX{slovak} & \\
-% \bottomrule
-% \end{tabular}
-%
-% \end{table}
-%
-% \paragraph{Version Notes} The support for Amharic\new{1.0.1} should be considered an experimental attempt to
-% port the package \pkg{ethiop}; feedback is welcome.
-% Version 1.1.1\new{1.1.1} added support for Asturian, %\footnote{ Provided by Kevin Godby and Xuacu Saturio.},
-% Lithuanian, %\footnote{ Provided by Kevin Godby and Paulius Sladkevičius.},
-% and Urdu. %\footnote{ Provided by Kamal Abdali.}
-% ^^A
-% Version 1.2\new{1.2.0} introduced Armenian, Occitan, Bengali,
-% Lao, Malayalam, Marathi, Tamil, Telugu, and Turkmen.\footnote{%
-% See acknowledgements at the end for due credit to the various contributors.}
-% Version 1.43\new{1.43} brought basic support for Japanese (this
-% is considered experimental, feedback is appreciated).
-% In version 1.45\new{1.45}, support for Kurdish and Mongolian as well as some new
-% variants (Canadian French and English) have been added. Furthermore, for consistency reasons, some language have
-% been renamed (\emph{farsi}\textrightarrow\emph{persian}, \emph{friulan}\textrightarrow\emph{friulian},
-% \emph{magyar}\textrightarrow\emph{hungarian}, \emph{portuges}\textrightarrow\emph{portuguese},
-% \emph{samin}\textrightarrow\emph{sami}) or merged (\emph{bahasai}\slash\emph{bahasam}\textrightarrow\emph{malay},
-% \emph{brazil}\slash\emph{portuges}\textrightarrow\emph{portuguese},
-% \emph{lsorbian}\slash\emph{usorbian}\textrightarrow\emph{sorbian},
-% \emph{irish}\slash\emph{scottish}\textrightarrow\emph{gaelic},
-% \emph{norsk}\slash\emph{nynorsk}\textrightarrow\emph{norwegian}). The old names are still supported for backwards
-% compatibility reasons.
-% Version 1.46\new{1.46} introduces support for Afrikaans, Belarusian, Bosnian and Georgian.
-%
-%
-% \subsection{Relation to and use of Babel language names}\label{sec:babelnames}
-%
-% If you are familiar with the \pkg{babel} package, you will note that \pkg{polyglossia}'s language naming
-% slightly differs. Whereas \pkg{babel} has a unique name for each language variety (\eg\emph{american} and \emph{british}),
-% \pkg{polyglossia} differentiates language varieties via language options (\eg \emph{english}, ¦variant=american¦).
-%
-% Furthermore, \pkg{babel} sometimes uses abbreviated language names (\eg\emph{bahasam} for Bahasa Malayu) as well
-% as endonyms, \ie language names coming from the designated languages (such as \emph{bahasa}, \emph{canadien} or \emph{magyar}).
-% As opposed to this, \pkg{polyglossia} always uses spelled-out (lower-cased) English language names.
-% Please refer to table~\ref{tab:bbllang} for the differing language names in both packages.
-%
-% \begin{table}
-% \caption{\label{tab:bbllang}Babel-polyglossia language name matching}
-%
-% \begin{minipage}[t]{1\columnwidth}
-% \small\centering
-% \begin{tabular}{lll}
-% \toprule
-% \textbf{Babel name} & \textbf{Polyglossia name} & \textbf{Polyglossia options}\tabularnewline
-% \midrule
-% acadien & french & variant=acadian \\
-% american & english & variant=american [\emph{default}] \\
-% australian & english & variant=australian \\
-% austrian & german & variant=austrian, spelling=old \\
-% bahasa & malay & variant=indonesian [\emph{default}] \\
-% bahasam & malay & variant=malaysian \\
-% brazil & portuguese & variant=brazilian \\
-% british & english & variant=british \\
-% canadian & english & variant=canadian \\
-% canadien & french & variant=canadian \\
-% classiclatin\footnote{In \pkg{babel} currently only selectable via dot modifier (\emph{latin.classic}).}
-% & latin & variant=classic \\
-% farsi & persian & \\
-% ecclesiasticlatin\footnote{In \pkg{babel} currently only selectable via dot modifier (\emph{latin.ecclesiastic}).}
-% & latin & variant=ecclesiastic \\
-% friulan & friulian & \\
-% german\footnote{Due to the name conflict only available in \pkg{polyglossia} as \emph{germanb} (which is a \pkg{babel} synonym).}
-% & german & spelling=old \\
-% irish & gaelic & variant=irish [\emph{default}] \\
-% kurmanji & kurdish & variant=kurmanji \\
-% lowersorbian & sorbian & variant=lower \\
-% magyar & hungarian & \\
-% medievallatin\footnote{In \pkg{babel} currently only selectable via dot modifier (\emph{latin.medieval}).}
-% & latin & variant=medieval \\
-% naustrian & german & variant=austrian \\
-% newzealand & english & variant=newzealand \\
-% ngerman & german & variant=german [\emph{default}] \\
-% norsk & norwegian & variant=bokmal \\
-% nswissgerman & german & variant=swiss \\
-% nynorsk & norwegian & variant=nynorsk [\emph{default}] \\
-% polutonikogreek & greek & variant=polytonic \\
-% portuges & portuguese & variant=portuguese [\emph{default}] \\
-% samin & sami & \\
-% scottish & gaelic & variant=scottish \\
-% serbianc & serbian & script=Cyrillic \\
-% slovene & slovenian & \\
-% spanishmx & spanish & variant=mexican \\
-% swissgerman & german & variant=swiss, spelling=old \\
-% uppersorbian & sorbian & variant=upper [\emph{default}] \\
-% \bottomrule
-% \end{tabular}
-% \end{minipage}
-%
-% \end{table}
-%
-% For convenience reasons, \pkg{polyglossia} also supports the use of babel names\new{1.46} (for the few justified
-% exceptions, please refer to the notes in table~\ref{tab:bbllang}).
-% The babel names listed in table~\ref{tab:bbllang} can be used instead of the corresponding polyglossia
-% name\slash options in \cmd\setdefaultlanguage\ and \cmd\setotherlanguage\ as well as in the \pkg{polyglossia} and
-% \pkg{babel} language switching commands\slash environments documented in section~\ref{sec:langcmds} and
-% \ref{sec:babelcmds} (\eg \cmd\textaustrian\ is synonymous to ¦\textgerman[variant=austrian,spelling=old]¦).
-% However, unless you have special reasons, we strongly encourage you to use the \pkg{polyglossia} names.
-%
-%
-% \subsection{Using IETF language tags}\label{sec:langtags}
-%
-% \pkg{Polyglossia}\new{1.47} also supports the use of language tags that conform to the IETF BCP-47
-% \emph{Best Current Practice}.\footnote{Please refer to \url{https://tools.ietf.org/html/bcp47} and
-% \url{https://en.wikipedia.org/wiki/IETF_language_tag} for details.}
-% Thus, you can use tags such as ¦en-GB¦ (for British English) or ¦de-AT-1901¦ (for Austrian German, old spelling)
-% in \cmd\setdefaultlanguage\ and \cmd\setotherlanguage\ as well as in the language switching command
-% \cmd{\textlang\marg{tag}}, the environment \cmd{\begin\{lang\}\marg{tag}} \ldots\ \cmd{\end\{lang\}} and the \pkg{babel}
-% language switching commands\slash environments documented in section~\ref{sec:babelcmds}.
-% Table~\ref{tab:BCP47-polyglossia} lists the currently supported tags.
-%
-% \bgroup\small\addfontfeatures{Numbers={Monospaced,Lining}}
-% \begin{longtable}[c]{lll}
-% \caption{\label{tab:BCP47-polyglossia}BCP47-polyglossia language name matching}\\
-% \toprule
-% \textbf{BCP-47 tag} & \textbf{Polyglossia name} & \textbf{Polyglossia options}\\
-% \midrule
-% \endfirsthead
-% \caption[]{BCP47-polyglossia language name matching (\emph{continued})}\\
-% \toprule
-% \textbf{BCP-47 tag} & \textbf{Polyglossia name} & \textbf{Polyglossia options}\\
-% \midrule
-% \endhead
-% aeb & arabic & locale=tunisia \\
-% af & afrikaans & \\
-% afb & arabic & locale=default \\
-% am & amharic & \\
-% apd & arabic & locale=default \\
-% ar & arabic & \\
-% ar-IQ & arabic & locale=mashriq \\
-% ar-JO & arabic & locale=mashriq \\
-% ar-LB & arabic & locale=mashriq \\
-% ar-MR & arabic & locale=mauritania \\
-% ar-PS & arabic & locale=mashriq \\
-% ar-SY & arabic & locale=mashriq \\
-% ar-YE & arabic & locale=default \\
-% arq & arabic & locale=algeria \\
-% ary & arabic & locale=morocco \\
-% arz & arabic & locale=default \\
-% ast & asturian & \\
-% ayl & arabic & locale=libya \\
-% be & belarusian & \\
-% be-tarask & belarusian & spelling=classic \\
-% bg & bulgarian & \\
-% bn & bengali & \\
-% bo & tibetan & \\
-% br & breton & \\
-% bs & bosnian & \\
-% ca & catalan & \\
-% ckb & kurdish & variant=sorani [\emph{default}] \\
-% ckb-Arab & kurdish & variant=sorani, script=Arabic [\emph{default}] \\
-% ckb-Latn & kurdish & variant=sorani, script=Latin \\
-% cop & coptic & \\
-% cy & welsh & \\
-% cz & czech & \\
-% da & danish & \\
-% de & german & \\
-% de-AT & german & variant=austrian, spelling=new \\
-% de-AT-1901 & german & variant=austrian, spelling=old \\
-% de-AT-1996 & german & variant=austrian, spelling=new \\
-% de-CH & german & variant=swiss, spelling=new \\
-% de-CH-1901 & german & variant=swiss, spelling=old \\
-% de-CH-1996 & german & variant=swiss, spelling=new \\
-% de-DE & german & variant=german, spelling=new \\
-% de-DE-1901 & german & variant=german, spelling=old \\
-% de-DE-1996 & german & variant=german, spelling=new [\emph{default}] \\
-% de-Latf & german & script=blackletter \\
-% de-Latf-AT & german & variant=austrian, spelling=new, script=blackletter \\
-% de-Latf-AT-1901 & german & variant=austrian, spelling=old, script=blackletter \\
-% de-Latf-AT-1996 & german & variant=austrian, spelling=new, script=blackletter \\
-% de-Latf-CH & german & variant=swiss, spelling=new, script=blackletter \\
-% de-Latf-CH-1901 & german & variant=swiss, spelling=old, script=blackletter \\
-% de-Latf-CH-1996 & german & variant=swiss, spelling=new, script=blackletter \\
-% de-Latf-DE & german & variant=german, spelling=new, script=blackletter \\
-% de-Latf-DE-1901 & german & variant=german, spelling=old, script=blackletter \\
-% de-Latf-DE-1996 & german & variant=german, spelling=new, script=blackletter \\
-% dsb & sorbian & variant=lower \\
-% dv & divehi & \\
-% el & greek & \\
-% el-monoton & greek & variant=monotonic [\emph{default}] \\
-% el-polyton & greek & varant=polytonic \\
-% en & english & \\
-% en-AU & english & variant=australian \\
-% en-CA & english & variant=canadian \\
-% en-GB & english & variant=british \\
-% en-NZ & english & variant=newzealand \\
-% en-US & english & variant=us [\emph{default}] \\
-% eo & esperanto & \\
-% es & spanish & \\
-% es-ES & spanish & variant=spanish [\emph{default}] \\
-% es-MX & spanish & variant=mexican \\
-% et & estonian & \\
-% eu & basque & \\
-% fa & persian & \\
-% fi & finnish & \\
-% fr & french & \\
-% fr-CA & french & variant=canadian \\
-% fr-CH & french & variant=swiss \\
-% fr-FR & french & variant=french [\emph{default}] \\
-% fur & friulian & \\
-% ga & gaelic & variant=irish [\emph{default}] \\
-% gd & gaelic & variant=scottish \\
-% gl & galician & \\
-% grc & greek & variant=ancient \\
-% he & hebrew & \\
-% hi & hindi & \\
-% hr & croatian & \\
-% hsb & sorbian & variant=upper [\emph{default}] \\
-% hu & hungarian & \\
-% hy & armenian & \\
-% ia & interlingua & \\
-% id & malay & variant=indonesian \\
-% is & icelandic & \\
-% it & italian & \\
-% ja & japanese & \\
-% ka & georgian & \\
-% km & khmer & \\
-% kmr & kurdish & variant=kurmanji \\
-% kmr-Arab & kurdish & variant=kurmanji, script=Arabic \\
-% kmr-Latn & kurdish & variant=kurmanji, script=Latin \\
-% kn & kannada & \\
-% ko & korean & \\
-% ku & kurdish & \\
-% ku-Arab & kurdish & script=Arabic \\
-% ku-Latn & kurdish & script=Latin \\
-% la & latin & \\
-% la-x-classic & latin & variant=classic \\
-% la-x-ecclesia & latin & variant=ecclesiastic \\
-% la-x-medieval & latin & variant=medieval \\
-% lo & lao & \\
-% lt & lithuanian & \\
-% lv & latvian & \\
-% mk & macedonian & \\
-% ml & malayalam & \\
-% mn & mongolian & \\
-% mr & marathi & \\
-% nb & norwegian & variant=bokmal \\
-% nko & nko & \\
-% nl & dutch & \\
-% nn & norwegian & variant=nynorsk [\emph{default}] \\
-% oc & occitan & \\
-% pl & polish & \\
-% pms & piedmontese & \\
-% pt & portuguese & \\
-% pt-BR & portuguese & variant=brazilian \\
-% pt-PT & portuguese & variant=portuguese [\emph{default}] \\
-% rm & romansh & \\
-% ro & romanian & \\
-% ru & russian & \\
-% ru-luna1918 & russian & spelling=modern [\emph{default}] \\
-% ru-petr1708 & russian & spelling=old \\
-% sa & sanskrit & \\
-% sa-Beng & sanskrit & script=Bengali \\
-% sa-Deva & sanskrit & script=Devanagari [\emph{default}] \\
-% sa-Gujr & sanskrit & script=Gujarati \\
-% sa-Knda & sanskrit & script=Kannada \\
-% sa-Mlym & sanskrit & script=Malayalam \\
-% sa-Telu & sanskrit & script=Telugu \\
-% se & sami & \\
-% sk & slovak & \\
-% sl & slovenian & \\
-% sq & albanian & \\
-% sr & serbian & \\
-% sr-Cyrl & serbian & script=Cyrillic \\
-% sr-Latn & serbian & script=Latin [\emph{default}] \\
-% sv & swedish & \\
-% syr & syriac & \\
-% ta & tamil & \\
-% te & telugu & \\
-% th & thai & \\
-% tk & turkmen & \\
-% tr & turkish & \\
-% uk & ukrainian & \\
-% ur & urdu & \\
-% vi & vietnamese & \\
-% zsm & malay & variant=malaysian [\emph{default}] \\
-% \bottomrule
-% \end{longtable}
-% \egroup
-%
-% \subsection{Global options}
-%
-% \pkg{Polyglossia} can be loaded with the following global package options:
-%
-% \begin{itemize}
-% \item \xpgboolkeyfalse[1.1.1]{babelshorthands}
-% Globally activates \pkg{babel} shorthands whenever available. Currently
-% shorthands are implemented for Afrikaans, Belarusian, Catalan, Croatian,
-% Czech, Dutch, Finnish, Georgian, German, Italian, Latin, Mongolian,
-% Russian, Slovak, and Ukrainian. Please refer to the respective language descriptions
-% (sec.~\ref{specific}) for details.
-%
-% \item \xpgboolkeyfalse{localmarks} redefines the internal \LaTeX\ macros \cmd\markboth\ and
-% \cmd\markright\ to the effect that the header text is explicitly set in the currently
-% active language (\ie wrapped into \cmd\foreignlanguage\{\meta{lang}\}\{\meta{\ldots}\}).
-%
-% In earlier versions of \pkg{polyglossia},\new{1.2.0} this
-% option was enabled by default, but we now realize that it causes more problems
-% than it helps (since it breaks if a package or class redefines \cmd\markboth\ or
-% \cmd\markright), so it is now disabled by default. For backwards compatibility, the
-% option \xpgoption{nolocalmarks} which used to switch off the previous default, and
-% now equals the default, is still available.
-%
-% \item \xpgoption{quiet} turns off most info messages and some of the warnings issued
-% by \LaTeX, \pkg{fontspec} and \pkg{polyglossia}.
-% \end{itemize}
-%
-% \pagebreak
-% \section{Language-switching commands}\label{languageswitching}
-%
-% \subsection{Recommended commands}\label{sec:langcmds}
-% For each activated language the command
-% \cmd{\text\meta{lang}\oarg{options}\marg{…}} \DescribeMacro{\text\meta{lang}}
-% (as well as the synonymous \DescribeMacro{\textlang}%
-% \cmd{\textlang\oarg{options}\marg{lang}\marg{…}}\new{1.46})
-% becomes available for short insertions of text in that language.
-%
-% For example ¦\textrussian{\today}¦ and ¦\textlang{russian}{\today}¦ yield \textrussian{\today}
-% The commands switch to the correct hyphenation patterns, they activate
-% some extra features for the selected language (such as extra spacing before
-% punctuation in French), and they translate the date when using \cmd\today.
-% They do not, however, translate so-called \textit{caption strings}, \ie
-% ``chapter'', ``figure'' etc., to the local language (these remain in the currently active `outer'
-% language).
-%
-% The\DescribeEnv{\meta{lang}}\ environment \meta{lang}, which is also available for any activated language
-% (as well as the equivalent \DescribeMacro{lang}%
-% \cmd{\begin\{lang\}\oarg{options}\marg{lang}} \dots{} \cmd{\end\{lang\}}\new{1.47}),
-% is meant for longer passages of text. It behaves slightly different than the \cmd{\text\meta{lang}} and
-% \cmd\textlang\ commands: It does everything the latter do, but additionally, the caption strings
-% are translated as well, and the language is also passed to auxiliary files, the table of contents
-% and the lists of figures/tables.
-% Like the commands, the environment provides the possibility of setting language options locally.
-% For instance the following allows us to quote the beginning
-% of Homer’s \textit{Iliad}:
-%
-% \begin{Verbatim}[formatcom=\color{xpgblue}]
-% \begin{quote}
-% \begin{greek}[variant=ancient]
-% μῆνιν ἄειδε θεὰ Πηληϊάδεω Ἀχιλῆος οὐλομένην, ἣ μυρί' Ἀχαιοῖς
-% ἄλγε' ἔθηκε, πολλὰς δ' ἰφθίμους ψυχὰς Ἄϊδι προί̈αψεν ἡρώων,
-% αὐτοὺς δὲ ἑλώρια τεῦχε κύνεσσιν οἰωνοῖσί τε πᾶσι, Διὸς δ'
-% ἐτελείετο βουλή, ἐξ οὗ δὴ τὰ πρῶτα διαστήτην ἐρίσαντε Ἀτρεί̈δης
-% τε ἄναξ ἀνδρῶν καὶ δῖος Ἀχιλλεύς.
-% \end{greek}
-% \end{quote}
-% \end{Verbatim}
-%
-% \vspace{-.5\baselineskip}
-%
-% \begin{quote}
-% \begin{greek}[variant=ancient]
-% μῆνιν ἄειδε θεὰ Πηληϊάδεω Ἀχιλῆος οὐλομένην, ἣ μυρί' Ἀχαιοῖς ἄλγε' ἔθηκε,
-% πολλὰς δ' ἰφθίμους ψυχὰς Ἄϊδι προί̈αψεν ἡρώων, αὐτοὺς δὲ ἑλώρια τεῦχε κύνεσσιν
-% οἰωνοῖσί τε πᾶσι, Διὸς δ' ἐτελείετο βουλή, ἐξ οὗ δὴ τὰ πρῶτα διαστήτην ἐρίσαντε
-% Ἀτρεί̈δης τε ἄναξ ἀνδρῶν καὶ δῖος Ἀχιλλεύς.
-% \end{greek}
-% \end{quote}
-%
-% \noindent\DescribeEnv{Arabic} Note that for Arabic one cannot use the environment ¦arabic¦,
-% as \cmd\arabic\ is defined internally by \LaTeX. In this case
-% we need to use the environment ¦Arabic¦ instead.
-%
-% \subsection{Babel commands}\label{sec:babelcmds}
-% Some macros defined in \pkg{babel}’s \file{hyphen.cfg} (and thus usually
-% compiled into the \XeLaTeX\ and \LuaLaTeX\ format) are redefined, but keep a
-% similar behaviour.
-% \begin{itemize}
-% \item \DescribeMacro{\selectlanguage}\cmd{\selectlanguage\oarg{options}\marg{lang}}
-% \item \DescribeMacro{\foreignlanguage}\cmd{\foreignlanguage\oarg{options}\marg{lang}\marg{…}}
-% \item \DescribeEnv{otherlanguage}\cmd{\begin\{otherlanguage\}\oarg{options}\marg{lang}} \dots{} \cmd{\end\{otherlanguage\}}
-% \item \DescribeEnv{otherlanguage*}\cmd{\begin\{otherlanguage*\}\oarg{options}\marg{lang}} \dots{} \cmd{\end\{otherlanguage*\}}
-% \end{itemize}
-% ^^A
-% \cmd\selectlanguage\marg{lang} and the ¦otherlanguage¦ environment are identical to the
-% the \meta{lang} environment, except that \cmd\selectlanguage\marg{lang}
-% does not need to be explicitly closed. The command \cmd\foreinlanguage\marg{lang}\marg{…} and the ¦otherlanguage*¦
-% environment are identical with the use of the \cmd\text\meta{lang} or \cmd\textlang\ command, with the one
-% notable exception that they do not translate the date with \cmd\today.
-%
-% Since the \XeLaTeX\ and \LuaLaTeX\ format incorporate \pkg{babel}’s \file{hyphen.cfg},
-% the low-level commands for hyphenation and language switching
-% defined there are also accessible.
-%
-% \subsection{Other commands}
-% The following commands are probably of lesser interest to the end user, but
-% ought to be mentioned here.
-% \begin{itemize}
-% \item \DescribeMacro{\selectbackgroundlanguage}\cmd{\selectbackgroundlanguage\marg{lang}}:
-% this selects the global font setup and the numbering definitions for the default language.
-%
-% \item \DescribeMacro{\resetdefaultlanguage}\cmd{\resetdefaultlanguage\oarg{options}\marg{lang}} (experimental):
-% completely switches the default language
-% to another one in the middle of a document: \textit{this may have adverse effects}!
-%
-% \item \Cmd\normalfontlatin: in an environment where \cmd\normalfont\ has been redefined
-% to a non-latin script, this will reset to the font defined with \cmd\setmainfont\ etc.
-% In a similar vein, it is possible to use \Cmd\rmfamilylatin, \Cmd\sffamilylatin,
-% and \Cmd\ttfamilylatin.
-%
-% \item \Cmd\latinalph: Representation of counter as a lower-case letter: 1 = a, 2 = b, etc.
-%
-% \item \Cmd\latinAlph: Representation of counter as a upper-case letter: 1 = A, 2 = B, etc.
-% \end{itemize}
-%
-%
-% \subsection{Setting up alias commands}
-%
-% By means of the macro
-% \displaycmd{\setlanguagealias\oarg{options}\marg{language}\marg{alias}}{\setlanguagealias}\new{1.46}
-% you can define alias commands for specific language (variants). \Eg
-%
-% \begin{quote}
-% \begin{verbatim}
-% \setlanguagealias[variant=austrian]{german}{AT}
-% \end{verbatim}
-% \end{quote}
-% ^^A
-% will define a command \cmd{\textAT} as well as an environment ¦{AT}¦ which will link towards
-% the command ¦\textgerman[variant=austrian]¦ and the environment ¦{german}[variant=austrian]¦,
-% respectively. The aliases can also be used in the language switching commands described in
-% section~\ref{sec:langcmds} and \ref{sec:babelcmds}.
-% Note, though, that the usual restrictions for command names apply, so something such as
-% ¦de-AT¦ or ¦de_AT¦ will not work since ¦-¦ and ¦_¦ are not allowed in command names (the same
-% holds true for any non-ASCII character and for digits).
-%
-% For the latter case, and for the case where an alias would clash with an existing command
-% (\eg ¦\fi¦) or a \cmd{\text\meta{\ldots}} command (\eg \cmd\textit), a starred version \Cmd{\setlanguagealias*}
-% is provided which does neither define a \cmd{\text\meta{alias}} command nor an \meta{alias} environment,
-% but which will set up the alias for everything else, including \cmd{\textlang\marg{alias}}
-% and \cmd{\begin\{lang\}\marg{alias}}.
-%
-% \pkg{Polyglossia} comes with some aliases predefined, namely aliases for \pkg{babel} language names
-% (see sec.~\ref{sec:babelnames}) and for IETF BCP-47 language tags (the latter via \cmd{\setlanguagealias*};
-% see sec.~\ref{sec:langtags}).
-%
-% \section{Font setup}
-%
-% With polyglossia it is possible to associate a specific font with any script or language
-% that occurs in the document. That font should always be defined as
-% \cmd{\⟨script⟩font}\ or \cmd{\⟨language⟩font}.
-% For instance, if the default font defined by \cmd\setmainfont\
-% does not support Greek, then one can define the font used to display Greek with:\\
-% \centerline{ \cmd\newfontfamily\cmd{\greekfont[Script=Greek,\meta{…}]\marg{font}}. }
-% Note that polyglossia will use the font defined as is, so assure to do all necessary settings
-% (please refer to the \pkg{fontspec} documentation for details).
-% For instance, if \cmd\arabicfont\ is explicitly defined, then the option ¦Script=Arabic¦ should
-% be included in that definition.
-%
-% If a specific sans serif or monospace (`teletype') font is needed for a particular script or language,
-% it can be defined by means of \new{1.2.0}
-% \cmd{\⟨script⟩fontsf} or \cmd{\⟨language⟩fontsf} and \cmd{\⟨script⟩fonttt} or \cmd{\⟨language⟩fonttt}, respectively.
-%
-% Whenever a new language is activated, \pkg{polyglossia} will first check whether
-% a font has been defined for that language or – for languages in non-Latin scripts –
-% for the script it uses. If it is not defined, it will use the currently active font
-% and – in the case of OpenType fonts – will attempt to turn on the appropriate
-% OpenType tags for the script and language used, in case these are available in
-% the font, by means of \pkg{fontspec}’s \cmd\addfontfeature. If the current font
-% does not appear to support the script of that language, an error message is
-% displayed.
-%
-% \section{Adapting hyphenation}
-%
-% \subsection{Hyphenation exceptions}
-%
-% \TeX\ provides the command \cmd\hyphenation\marg{exceptions} to globally define hyphenation exceptions
-% which override the hyphenation patterns for specified words. The command takes as argument a space-separated
-% list of words where hyphenation points are marked by a dash (if no dash is used, the respective word is not
-% hyphenated at all):
-% \begin{Verbatim}
-% \hyphenation{%
-% po-ly-glos-sia
-% LaTeX
-% }
-% \end{Verbatim}
-% ^^A
-% These exceptions, however, apply to all languages. In addition to this, \pkg{polyglossia} provides
-% the command\new{1.45}
-% \displaycmd{\xpghyphenation\oarg{options}\marg{lang}\marg{exceptions}}{\xpghyphenation}
-% which can be used to define exceptions that only apply to a specific language or language variant,
-% respectively.
-%
-% \subsection{Hyphenation disabling}
-%
-% In some very specific contexts (such as music score creation), \TeX{} hyphenation
-% is something to avoid as it may cause troubles. \pkg{polyglossia} provides two
-% functions: \Cmd\disablehyphenation\ and \Cmd\enablehyphenation. Note that if
-% you select a new language while hyphenation is disabled, it will remain disabled.
-% If you re-enable it, the hyphenation patterns of the currently selected language
-% will be activated.
-%
-% \section{Language-specific options and commands}\label{specific}
-%
-% This section gives a list of all languages for which options and end-user
-% commands are defined. Note the following conventions:
-% \begin{itemize}
-% \item The preset value of each option (\ie the setting that applies by default,
-% if the option is not explicitly set) is given in \xpgpresetvalue{italics}.
-% \item If an option key may be used without a value, the value that applies
-% for value-less keys is marked by a preceding \xpgdefaultvalue{asterisk}.
-% \end{itemize}
-% For instance, \texttt{babelshorthands = *true} or \texttt{\textit{false}} means that
-% \xpgvalue{babelshorthands} is \xpgvalue{false} by default in the respective language,
-% and that passing \xpgvalue{babelshorthands} (without value) is equivalent to passing
-% \xpgvalue{babelshorthands=true}.
-%
-% \subsection{afrikaans}\label{afrikaans}
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgboolkeyfalse[1.1.1]{babelshorthands}
-% If this is turned on, the following shorthands defined for fine-tuning hyphenation and
-% micro-typography of Afrikaans words are activated:
-% \begin{shorthands}
-% \item[¦"-¦] adds a hyphenation point that does still allow for hyphenation at the points preset
-% in the hyphenation patterns (as opposed to \cmd\- in default \TeX).
-% \item[\texttt{"\textasciitilde}] for a hyphen sign without a breakpoint. Useful for
-% cases where the hyphen should stick at the following syllable.
-% \item[¦"|¦] disables a ligature at this position.
-% \item[¦""¦] allows for a line break at this position (without hyphenation sign).
-% \item[¦"/¦] a slash that allows for a subsequent line break. As opposed to \cmd\slash,
-% hyphenation at the breakpoints preset in the hyphenation patterns is still allowed.
-% \end{shorthands}
-% \end{itemize}
-%
-% \subsection{arabic}\label{arabic}
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgchoicekey{calendar}{\xpgpresetvalue{gregorian} or \xpgvalue{islamic} (= \xpgvalue{hijri})}
-% \item \xpgchoicekey{locale}{\xpgpresetvalue{default}\footnote{ %
-% For Egypt, Sudan, Yemen and the Gulf states.},
-% \xpgvalue{mashriq}\footnote{ %
-% For Iraq, Syria, Jordan, Lebanon and Palestine.},
-% \xpgvalue{libya}, \xpgvalue{algeria}, \xpgvalue{tunisia}, \xpgvalue{morocco}, \xpgvalue{mauritania}}
-% This setting influences the spelling of the month names for the Gregorian calendar,
-% as well as the form of the numerals (unless overriden by the following option).
-% \item \xpgchoicekey{numerals}{\xpgpresetvalue{mashriq} or \xpgvalue{maghrib}}
-% The latter is the default when \xpgvalue{locale=algeria}, \xpgvalue{tunisia}, or \xpgvalue{morocco}.
-% \item \xpgboolkeyfalse[1.0.3]{abjadjimnotail}
-% Set this to true if you want the \textit{abjad} form of the number three to be \textarabic{ج‍} – as in the manuscript tradition – instead of the modern usage \textarabic{ج}.
-% \end{itemize}
-% \paragraph*{Commands:}
-% \begin{itemize}
-% \item \Cmd\abjad and \Cmd\abjadmaghribi (see section \ref{abjad})
-% \item \Cmd\aemph to emphasize text with \cmd\overline.\new{1.2.0}
-% ¦\textarabic{\aemph{اب}}¦ yields \textarabic{\aemph{اب}}.
-% This command is also available for Farsi, Urdu, etc.
-% \end{itemize}
-%
-% \subsection{armenian}\label{armenian}
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgchoicekey[1.45]{variant}{\xpgvalue{eastern} or \xpgpresetvalue{western}}
-% \item \xpgchoicekey[1.45]{numerals}{\xpgvalue{armenian} or \xpgpresetvalue{arabic}}
-% \end{itemize}
-%
-% \subsection[belarusian]{belarusian\new{1.46}}\label{belarusian}
-%
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgboolkeyfalse{babelshorthands}
-% If this is turned on, the following shorthands are activated:
-% \begin{shorthands}
-% \item[¦"-¦] adds a hyphenation point that does still allow for hyphenation at the points preset
-% in the hyphenation patterns (as opposed to \cmd\-).
-% \item[\texttt{"\textasciitilde}] for a hyphen sign without a breakpoint. Useful for
-% cases where the hyphen should stick at the following syllable.
-% \item[¦"|¦] disables a ligature at this position.
-% \item[¦""¦] allows for a line break at this position (without hyphenation sign).
-% \item[¦"---¦] Cyrillic emdash in plain text.
-% \item[¦"--~¦] Cyrillic emdash in compound names (surnames).
-% \item[¦"--*¦] Cyrillic emdash for denoting direct speech.
-% \item[¦",¦] thinspace for initials with a breakpoint in following surname.
-% \item[¦"‘¦] for German left double quotes (looks like ,,).
-% \item[¦"’¦] for German right double quotes (looks like “).
-% \item[¦"<¦] for French left double quotes (looks like <<).
-% \item[¦">¦] for French right double quotes (looks like >>).
-% \end{shorthands}
-% \item \xpgchoicekey{numerals}{\xpgpresetvalue{arabic}, \xpgvalue{cyrillic-alph} or \xpgvalue{cyrillic-trad}}
-% Uses either Arabic numerals or Cyrillic alphanumerical numbering. The two Cyrillic variants differ as follows:
-% \begin{itemize}
-% \item \xpgvalue{cyrillic-alph} steps through the Cyrillic alphabet. Thus it can only be used up to 30.
-% \item \xpgvalue{cyrillic-trad} (= \xpgvalue{cyrillic}) uses a traditional Cyrillic alphanumeric system.%
-% \footnote{See \url{https://en.wikipedia.org/wiki/Cyrillic_numerals}.}
-% It supports numbers up to 999\,999.
-% \end{itemize}
-% \item \xpgchoicekey{spelling}{\xpgpresetvalue{modern} or \xpgvalue{classic} (= \xpgvalue{tarask})}
-% With ¦spelling=classic¦, captions and dates adhere to the Taraškievica (or
-% Belarusian classical) orthography rather than the standard orthography.
-% \end{itemize}
-% ^^A
-% \paragraph*{Commands:}
-% \begin{itemize}
-% \item \Cmd\Asbuk: produces uppercased Cyrillic alphanumerals, for environments such as ¦enumerate¦.
-% It steps through the Cyrillic alphabet and thus it can only be used up to 30.
-% The command takes a counter as argument, \eg ¦\textbelarusian{\Asbuk{page}}¦ produces \textrussian{\Asbuk{page}}.
-% \item \Cmd\asbuk: same as \cmd\Asbuk\ but in lowercase.
-% \item \Cmd\AsbukTrad: same as \cmd\Asbuk\ but using the traditional Cyrillic alphanumeric numbering which supports
-% numbers up to 999\,999.\\
-% \Eg ¦\textbelarusian{\AsbukTrad{page}}¦ produces \textrussian{\AsbukTrad{page}}.
-% \item \Cmd\asbukTrad: same as \cmd\AsbukTrad\ but in lowercase.
-% \end{itemize}
-%
-% \subsection[bengali]{bengali\new{1.2.0}}\label{bengali}
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgchoicekey{numerals}{\xpgvalue{Western}, \xpgvalue{Bengali}, or \xpgpresetvalue{Devanagari}}
-% \item \xpgboolkeyfalse{changecounternumbering}
-% Use specified numerals for headings and page numbers.
-% \end{itemize}
-%
-% \subsection{catalan}\label{catalan}
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgboolkeyfalse[1.1.1]{babelshorthands}
-% Activates the shorthands \texttt{"l} and \texttt{"L} to type geminated l or L.
-% \end{itemize}
-%
-% \paragraph*{Commands:}
-% \begin{itemize}
-% \item \Cmd{\l.l} and \Cmd{\L.L}\new{1.1.1} can be used to type a geminated l, as in \textit{co\l.laborar},
-% similar to \pkg{babel} (the glyph U+00B7 MIDDLE DOT is used as a geminating sign).
-% \end{itemize}
-%
-% \subsection{croatian}\label{croatian}
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgboolkeyfalse[1.47]{babelshorthands}
-% If this is turned on, the following shorthands for fine-tuning hyphenation and micro-typography
-% of Croatian words are activated.
-% \begin{shorthands}
-% \item[¦"|¦] disables a ligature at this position.
-% \item[¦"=¦] for an explicit hyphen with a breakpoint, allowing for hyphenation at the
-% other points preset in the hyphenation patterns (as opposed to plain ¦-¦).
-% \item[\texttt{"\textasciitilde}] for a hyphen sign without a breakpoint. Useful for
-% cases where the hyphen should stick at the following syllable.
-% \item[¦"-¦] adds a hyphenation point that does still allow for hyphenation at the points preset
-% in the hyphenation patterns (as opposed to \cmd\-).
-% \item[¦""¦] allows for a line break at this position (without hyphenation sign).
-% \item[¦"/¦] a slash that allows for a subsequent line break. As opposed to \cmd\slash, hyphenation
-% at the breakpoints preset in the hyphenation patterns is still allowed.
-% \end{shorthands}
-% Furthermore, the following shorthands generate easy access to Croatian digraphs (ligatures):
-% \begin{shorthands}
-% \item[¦"dz¦] Generates the ligature \charifavailable{01C6}{dž}\ if the font provides it. If not, the
-% two characters are output separately. Also available for ¦"Dz¦ (\charifavailable{01C5}{Dž})
-% and ¦"DZ¦ (\charifavailable{01C4}{DŽ}).
-% \item[¦"lj¦] Generates the ligature \charifavailable{01C9}{lj}\ if the font provides it. If not, the
-% two characters are output separately. Also available for ¦"Lj¦ (\charifavailable{01C8}{Lj})
-% and ¦"LJ¦ (\charifavailable{01C7}{LJ}).
-% \item[¦"nj¦] Generates the ligature \charifavailable{01CC}{nj}\ if the font provides it. If not, the
-% two characters are output separately. Also available for ¦"Nj¦ (\charifavailable{01CB}{Nj})
-% and ¦"NJ¦ (\charifavailable{01CA}{NJ}).
-% \end{shorthands}
-%
-% Finally, there are also four shorthands for quotation marks:
-% \begin{shorthands}
-% \item[¦"`¦] for Croatian left double quotes („).
-% \item[¦"'¦] for Croatian right double quotes (”).
-% \item[¦">¦] for Croatian left guillemets (»).
-% \item[¦"<¦] for Croatian right guillemets («).
-% \end{shorthands}
-% \item \xpgboolkeyfalse[1.47]{disableligatures}
-% If this is \xpgvalue{true}, all Croatian ligatures (for digraphs such as
-% \charifavailable{01C6}{dž}) will be replaced by single characters. This can
-% be useful if the ligatures on your font are broken (if the font does not
-% have them, they are automatically replaced).
-% \end{itemize}
-%
-% \subsection{czech}\label{czech}
-%
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgboolkeyfalse[1.45]{babelshorthands}
-% If this is turned on, the following shorthands for Czech are activated:
-% \begin{shorthands}
-% \item[¦"=¦] for an explicit hyphen sign which is repeated at the beginning
-% of the next line when hyphenated, as common in Czech typesetting
-% (only needed with ¦splithyphens=false¦).
-% \item[¦"‘¦] for Czech left double quotes („).
-% \item[¦"’¦] for Czech right double quotes (“).
-% \item[¦">¦] for Czech left double guillemets (»).
-% \item[¦"<¦] for Czech right double guillemets («).
-% \end{shorthands}
-% \item \xpgboolkeytrue[1.45]{splithyphens}
-% According to Czech typesetting conventions, if a word with a hard hyphen (such as \emph{je-li})
-% is hyphenated at this hyphen, a second hyphenation character is to be inserted at the beginning
-% of the line that follows the hyphenation (\emph{je-/-li}).
-% By default, this is done automatically\new{1.46} (if you are using \LuaTeX, the \pkg{luavlna} package is
-% loaded to achieve this).
-% Set this option to ¦false¦ to disable the feature.
-% \item \xpgboolkeytrue[1.45]{vlna}
-% According to Czech typesetting conventions, single-letter words (non-syllable prepositions)
-% must not occur at line ends.
-% \pkg{Polyglossia} takes care of this automatically by default\new{1.46} (if you are using \LuaTeX, the
-% \pkg{luavlna} package is loaded to achieve this).
-% Set this option to ¦false¦ to disable the feature.
-% \end{itemize}
-%
-% \subsection{dutch}\label{dutch}
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgboolkeyfalse[1.1.1]{babelshorthands}
-% If this is turned on, the following shorthands defined for fine-tuning hyphenation and
-% micro-typography of Dutch words are activated:
-% \begin{shorthands}
-% \item[¦"-¦] adds a hyphenation point that does still allow for hyphenation at the points preset
-% in the hyphenation patterns (as opposed to \cmd\- in default \TeX).
-% \item[\texttt{"\textasciitilde}] for a hyphen sign without a breakpoint. Useful for
-% cases where the hyphen should stick at the following syllable.
-% \item[¦"|¦] disables a ligature at this position.
-% \item[¦""¦] allows for a line break at this position (without hyphenation sign).
-% \item[¦"/¦] a slash that allows for a subsequent line break. As opposed to \cmd\slash,
-% hyphenation at the breakpoints preset in the hyphenation patterns is still allowed.
-% \end{shorthands}
-% In addition, the macro \Cmd\- is redefined to allow hyphens in the rest of the word (equivalent to ¦"-¦).
-% \end{itemize}
-%
-% \subsection{english}\label{english}
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgchoicekey{variant}{\xpgpresetvalue{american} (= \xpgvalue{us}), \xpgvalue{usmax} (same as \xpgvalue{american} but with additional hyphenation patterns),
-% \xpgvalue{british} (= \xpgvalue{uk}), \xpgvalue{australian}, \xpgvalue{canadian}\new{1.45}, or \xpgvalue{newzealand}}
-% \item \xpgboolkeyfalse{ordinalmonthday}
-% The default value is true for \xpgvalue{variant=british}.
-% \end{itemize}
-%
-% \subsection{esperanto}\label{esperanto}
-% \paragraph*{Commands:}
-% \begin{itemize}
-% \item \Cmd\hodiau\ and \Cmd\hodiaun are special forms of \cmd\today. The former produces the date in Esperanto
-% preceded by the article (\emph{la}), which is the most common date format.
-% The latter produces the same date format in accusative case.
-% \end{itemize}
-%
-% \subsection{finnish}\label{finnish}
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgboolkeyfalse[1.45]{babelshorthands}
-% If this is turned on, the following shorthands for fine-tuning hyphenation
-% and micro-typography of Finnish words are activated:
-% \begin{shorthands}
-% \item[¦"-¦] adds a hyphenation point that does still allow for hyphenation at the points preset
-% in the hyphenation patterns (as opposed to \cmd\-).
-% \item[\texttt{"\textasciitilde}] for a hyphen sign without a breakpoint. Useful for
-% cases where the hyphen should stick at the following syllable.
-% \item[¦"|¦] disables a ligature at this position.
-% \item[¦""¦] allows for a line break at this position (without hyphenation sign).
-% \item[¦"/¦] a slash that allows for a subsequent line break. As opposed to \cmd\slash,
-% hyphenation at the breakpoints preset in the hyphenation patterns is still allowed.
-% \end{shorthands}
-% \end{itemize}
-%
-% \subsection{french}\label{french}
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgchoicekey{variant}{\xpgpresetvalue{french} or \xpgvalue{canadian} (=~\xpgvalue{acadian})\new{1.45}, \xpgvalue{swiss}\new{1.47}}
-% Currently, the only difference between the four variants is that \xpgvalue{swiss}
-% uses \xpgvalue{thincolonspace=true} by default since this conforms to the Swiss
-% conventions.
-% \item \xpgboolkeytrue{autospacing}
-% One of the most distinct features of French typography is the addition of
-% extra spacing around punctuation and quotation marks (guillemets). By
-% default, polyglossia adds these spaces automatically, so you don't need
-% to enter them. This options allows you to switch this feature off
-% globally.
-% \item \xpgboolkeyfalse[1.46]{thincolonspace}
-% With \xpgvalue{variant=swiss}, the default value is \xpgvalue{true}. If \xpgvalue{false}, a full
-% (non-breaking) interword space is inserted before a colon. If \xpgvalue{true}, a
-% thinner space -- as before \texttt{;}, \texttt{!}, and \texttt{?} -- is
-% used. Note that this option must be set after the ¦variant¦ option.
-% \item \xpgboolkeytrue{autospaceguillemets}[Up to version 1.44, the option was
-% called \xpgvalue{automaticspacesaroundguillemets}. For backwards compatibility
-% reasons, the more verbose old option is still supported.]
-% If you only want to disable the automatic addition of spacing after
-% opening and before closing guillemets (and not at punctuation), set this
-% to \textit{false}. Note that the more general option \textit{autospacing}
-% overrides this.
-% \item \xpgboolkeyfalse[1.45]{autospacetypewriter}[Babel's syntax \xpgvalue{OriginalTypewriter}
-% is also supported.]
-% By default, automatic spacing is disabled in typewriter font. If this is
-% enabled, spacing in typewriter context is the same as with roman and sans
-% serif font, depending on the \xpgvalue{autospacing} and
-% \xpgvalue{autospaceguillemets} settings (note that this was the default up
-% to v.~1.44).
-% \item \xpgboolkeyfalse{frenchfootnote}
-% If \xpgvalue{true}, footnotes start with a non-superscripted number
-% followed by a dot, as common in French typography. Note that this might
-% interfere with the specific footnote handling of classes or packages.
-% Also note that this option is only functional (by design) if French is
-% the main language.
-% \item \xpgboolkeyfalse[1.46]{frenchitemlabels}
-% If \textit{true}, itemize item labels use em-dashes throughout, as common
-% in French typography. Note that this option is only functional (by
-% design) if French is the main language. Also, it might interfere with
-% list packages such as \pkg{enumitem}.
-% \item \xpgcodekey[1.46]{itemlabels}¦\textemdash¦
-% If \emph{frenchitemlabels} is true, you can customize here the used item
-% label of all levels.
-% \item \xpgcodekey[1.46]{itemlabeli}¦\textemdash¦
-% If \emph{frenchitemlabels} is true, you can customize here the used item
-% label of the first level.
-% \item \xpgcodekey[1.46]{itemlabelii}¦\textemdash¦
-% If \emph{frenchitemlabels} is true, you can customize here the used item
-% label of the second level.
-% \item \xpgcodekey[1.46]{itemlabeliii}¦\textemdash¦
-% If \emph{frenchitemlabels} is true, you can customize here the used item
-% label of the third level.
-% \item \xpgcodekey[1.46]{itemlabeliv}¦\textemdash¦
-% If \emph{frenchitemlabels} is true, you can customize here the used item
-% label of the fourth level.
-% \end{itemize}
-% \paragraph*{Commands:}
-% \begin{itemize}
-% \item \Cmd\NoAutoSpacing\new{1.45} disables automatic spacing around punctuation and quotation marks in all following text. The command can also be used locally if braces are used for grouping: ¦{\NoAutoSpacing foo:bar}¦
-% \item \Cmd\AutoSpacing\new{1.45} enables automatic spacing around punctuation and quotation marks in all following text. The command can also be used locally if braces are used for grouping: ¦{\AutoSpacing regarde!}¦
-% \end{itemize}
-%
-% \subsection[gaelic]{gaelic\new{1.45}}\label{gaelic}
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgchoicekey{variant}{\xpgpresetvalue{irish} or \xpgvalue{scottish}}
-% \end{itemize}
-%
-% \subsection[georgian]{georgian\new{1.46}}\label{georgian}
-%
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgboolkeyfalse{babelshorthands}
-% If this is turned on, the following shorthands are activated:
-% \begin{shorthands}
-% \item[¦"-¦] adds a hyphenation point that does still allow for
-% hyphenation at the points preset in the hyphenation patterns (as opposed
-% to \cmd\-).
-% \item[\texttt{"\textasciitilde}] for a hyphen sign without a breakpoint. Useful for
-% cases where the hyphen should stick at the following syllable.
-% \item[¦"|¦] disables a ligature at this position.
-% \item[¦""¦] allows for a line break at this position (without hyphenation sign).
-% \item[¦"---¦] Cyrillic emdash in plain text.
-% \item[¦"--~¦] Cyrillic emdash in compound names (surnames).
-% \item[¦"--*¦] Cyrillic emdash for denoting direct speech.
-% \item[¦",¦] thinspace for initials with a breakpoint in following surname.
-% \item[¦"‘¦] for German left double quotes (looks like ,,).
-% \item[¦"’¦] for German right double quotes (looks like “).
-% \item[¦"<¦] for French left double quotes (looks like <<).
-% \item[¦">¦] for French right double quotes (looks like >>).
-% \end{shorthands}
-% \item \xpgchoicekey{numerals}{\xpgpresetvalue{arabic} or \xpgvalue{georgian}}
-% Uses either Arabic numerals or Georgian alphanumerical numbering.
-% \item \xpgboolkeyfalse{oldmonthnames}
-% Uses traditional Georgian month names.
-% \end{itemize}
-%
-% \subsection{german}\label{german}
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgchoicekey{variant}{\xpgpresetvalue{german}, austrian, or swiss\new{1.33.4}}
-% Setting \xpgvalue{variant=austrian} or \xpgvalue{variant=swiss} uses some lexical variants.
-% With \xpgvalue{spelling=old}, \xpgvalue{variant=swiss} furthermore loads specific hyphenation
-% patterns.
-% \item \xpgchoicekey{spelling}{\xpgpresetvalue{new} (= \xpgvalue{1996}) or \xpgvalue{old} (= \xpgvalue{1901})}
-% Indicates whether hyphenation patterns for traditional (1901) or reformed
-% (1996) orthography should be used. The latter is the default.
-% \item \xpgboolkeyfalse[1.0.3]{babelshorthands}
-% If this is turned on, all shorthands defined in \pkg{babel}
-% for fine-tuning hyphenation and micro-typography of German words are activated.
-% \begin{shorthands}
-% \item[¦"ck¦] for ¦ck¦ to be hyphenated as ¦k-k¦ (1901 spelling).
-% \item[¦"ff¦] for ¦ff¦ to be hyphenated as ¦ff-f¦ (1901 spelling); this is also available
-% for the letters l, m, n, p, r and t.
-% \item[¦"|¦] disables a ligature at this position (\eg ¦Auf"|lage¦).
-% \item[¦"=¦] for an explicit hyphen with a breakpoint, allowing for hyphenation at the
-% other points preset in the hyphenation patterns (as opposed to plain ¦-¦).
-% \item[\texttt{"\textasciitilde}] for a hyphen sign without a breakpoint. Useful for
-% cases where the hyphen should stick at the following syllable, \eg ¦bergauf und "~ab¦.
-% \item[¦"-¦] adds a hyphenation point that does still allow for hyphenation at the points preset
-% in the hyphenation patterns (as opposed to \cmd\-).
-% \item[¦""¦] allows for a line break at this position (without hyphenation sign);
-% \eg ¦(pseudo"~)""wissenschaftlich¦.
-% \item[¦"/¦] a slash that allows for a subsequent line break. As opposed to \cmd\slash, hyphenation at the breakpoints
-% preset in the hyphenation patterns is still allowed.
-% \end{shorthands}
-%
-% There are also four shorthands for quotation signs:
-% \begin{shorthands}
-% \item[¦"`¦] for German left double quotes („)
-% \item[¦"'¦] for German right double quotes (“)
-% \item[¦"<¦] for French left double quotes («)
-% \item[¦">¦] for French right double quotes (»).
-% \end{shorthands}
-% \item \xpgchoicekey[1.2.0]{script}{\xpgpresetvalue{latin} or \xpgvalue{blackletter}\new{1.46} (= \xpgvalue{fraktur})}
-% Setting ¦script=blackletter¦ adapts the captions for typesetting German in blackletter type (using the long s (ſ)
-% where appropriate).
-% \end{itemize}
-%
-% \subsection{greek}\label{greek}
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgchoicekey{variant}{\xpgpresetvalue{monotonic} (= \xpgvalue{mono}), \xpgvalue{polytonic} (= \xpgvalue{poly}), or \xpgvalue{ancient}}
-% \item \xpgchoicekey{numerals}{\xpgpresetvalue{greek} or \xpgvalue{arabic}}
-% \item \xpgboolkeyfalse{attic}
-% \end{itemize}
-% \paragraph*{Commands:}
-% \begin{itemize}
-% \item \Cmd\Greeknumber and \Cmd\greeknumber \ (see section \ref{abjad}).
-% \item The command \Cmd\atticnumeral (= \Cmd\atticnum) (activated with
-% the option ¦attic=true¦), displays numbers using the acrophonic
-% numbering system (defined in the Unicode range
-% \textsf{U+10140–U+10174}).\footnote{ %
-% See the documentation of the \pkg{xgreek} package for more details.}
-% \end{itemize}
-%
-% \subsection{hebrew}\label{hebrew}
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgchoicekey{numerals}{\xpgvalue{hebrew} or \xpgpresetvalue{arabic}}
-% \item \xpgchoicekey{calendar}{\xpgvalue{hebrew} or \xpgpresetvalue{gregorian}}
-% \item \xpgboolkeyfalse{marcheshvan}
-% If \xpgvalue{true}, the second month of the civil year will be output as
-% \texthebrew{מרחשון} (Marcheshvan) rather than \texthebrew{חשון} (Heshvan),
-% which is the default.
-% \end{itemize}
-% \paragraph*{Commands:}
-% \begin{itemize}
-% \item \Cmd\hebrewnumeral\ (= \Cmd\hebrewalph) (see section \ref{abjad}).
-% \item \Cmd\aemph (see section \ref{arabic}).
-% \end{itemize}
-%
-% \subsection[hindi]{hindi\new{1.2.0}}\label{hindi}
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgchoicekey{numerals}{\xpgvalue{Western} or \xpgpresetvalue{Devanagari}}
-% \end{itemize}
-%
-% \subsection{hungarian}\label{hungarian}
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgchoicekey[1.46]{swapstrings}{\xpgdefaultvalue{\xpgpresetvalue{all}},
-% \xpgvalue{captions}, \xpgvalue{headings}, \xpgvalue{headers}, \xpgvalue{hheaders}, or \xpgvalue{none}}
-% In Hungarian, some caption strings need to be in a different order than in other languages
-% (\eg \emph{1. fejezet} instead of \emph{Chapter 1}). By default, \pkg{polyglossia} tries hard to
-% provide the correct order for different classes and packages (standard classes, \pkg{KOMA-script},
-% \pkg{memoir}, and \pkg{titlesec} package should work, as well as \pkg{fancyhdr} and \pkg{caption}).
-% However, since the definition of these strings is not standardized, the redefinitions might not work
-% and even interfere badly if you use specific classes or packages that redefine the respective strings
-% themselves. In this case, you can disable some or all changes.
-% The possibilities are:
-% \begin{itemize}
-% \item ¦all¦: Redefine figure and table captions, part and chapter headings, and running headers (=~default setting)
-% \item ¦captions¦: Redefine figure and table captions only
-% \item ¦headings¦: Redefine part and chapter headings only
-% \item ¦headers¦: Redefine running headers only
-% \item ¦hheaders¦: Redefine part and chapter headings as well as running headers
-% \item ¦none¦: Do not redefine anything
-% \end{itemize}
-% \end{itemize}
-% \paragraph*{Commands:}
-% \begin{itemize}
-% \item \Cmd\ontoday\ (= \Cmd\ondatehungarian): special form of \cmd\today\ which produces a slightly different
-% date format as used in prepositional phrases (such as ‘on February 10th’) in Hungarian.
-% \end{itemize}
-%
-% \subsection{italian}\label{italian}
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgboolkeyfalse[1.2.0cc]{babelshorthands}% TODO: check version
-% Activates the ¦"¦ character as a switch to perform etymological
-% hyphenation when followed by a letter. Furthermore, the following shorthands are activated:
-% \begin{shorthands}
-% \item[¦""¦] double raised open quotes (the Italian keyboard misses the backtick).
-% \item[¦"<¦] open guillemet (looks like <<).
-% \item[¦">¦] closing guillemet (looks like >>).
-% \item[¦"/¦] a slash that allows for a subsequent line break. As opposed to \cmd\slash,
-% hyphenation at the breakpoints preset in the hyphenation patterns is still allowed.
-% \item[¦"-¦] adds a hyphenation point that does still allow for hyphenation at the points preset
-% in the hyphenation patterns (as opposed to \cmd\-).
-% \end{shorthands}
-% \end{itemize}
-%
-% \subsection[korean]{korean\new{1.40.0}}\label{korean}
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgchoicekey{variant}{\xpgpresetvalue{plain}, \xpgvalue{classic}, or \xpgvalue{modern}}
-% These variants control spacing before/after CJK punctuations.
-% \begin{itemize}
-% \item ¦plain¦: Do nothing
-% \item ¦classic¦: Suitable for text with no interword spaces.
-% This option forces CJK punctuations to half-width, and
-% inserts half-width glue around them.
-% \item ¦modern¦: Suitable for text with interword spaces.
-% This option forces CJK punctuations to half-width, and
-% inserts small (half of interword space) glue around them.
-% \end{itemize}
-% \item \xpgchoicekey{captions}{\xpgpresetvalue{hangul} or \xpgvalue{hanja}}
-% \item \xpgchoicekey[1.47]{swapstrings}{\xpgdefaultvalue{\xpgpresetvalue{all}},
-% \xpgvalue{headers}, \xpgvalue{headings}, or \xpgvalue{none}}
-% With this option, Korean-style part and chapter headings, and
-% running headers are available.
-% It is similar to Hungarian (see \ref{hungarian}) except that
-% figure and table captions are not touched.
-% \begin{itemize}
-% \item ¦all¦: Redefine part and chapter headings, and running headers
-% (=~default setting)
-% \item ¦headings¦: Redefine part and chapter headings only
-% \item ¦headers¦: Redefine running headers only
-% \item ¦none¦: Do not redefine anything
-% \end{itemize}
-% \end{itemize}
-%
-% \subsection[kurdish]{kurdish\new{1.45}}\label{kurdish}
-%
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgchoicekey{variant}{\xpgvalue{kurmanji} or \xpgpresetvalue{sorani}}
-% \item \xpgchoicekey{script}{\xpgvalue{Arabic} or \xpgvalue{Latin}}
-% Defaults are \xpgvalue{Arabic} for Sorani and \xpgvalue{Latin} for Kurmanji.
-% \item \xpgchoicekey{numerals}{\xpgvalue{western} or \xpgvalue{eastern}}
-% Defaults are \xpgvalue{western} for Latin and \xpgvalue{eastern} for Arabic script, depending
-% on the selection above.
-% \item \xpgboolkeyfalse{abjadjimnotail}
-% Set this to true if you want the \textit{abjad} form of the number three to
-% be \textarabic{ج‍} – as in the manuscript tradition – instead of the
-% modern usage \textarabic{ج}.
-% ^^A \item \xpgchoicekey{locale}{} (not yet implemented)
-% ^^A \item \xpgchoicekey{calendar}{} (not yet implemented)
-% \end{itemize}
-% \condbreak{2\baselineskip}
-% \paragraph*{Commands:}
-% \begin{itemize}
-% \item \Cmd\ontoday: special form of \cmd\today\ which produces a slightly different
-% date format as used in prepositional phrases (as in ‘on February 10th’). Only available for Latin script.
-% \item \Cmd\abjad (see section \ref{abjad})
-% \item \Cmd\aemph (see section \ref{arabic})
-% \end{itemize}
-%
-% \subsection[lao]{lao\new{1.2.0}}\label{lao}
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgchoicekey{numerals}{\xpgvalue{lao} or \xpgpresetvalue{arabic}}
-% \end{itemize}
-%
-% \subsection{latin}\label{latin}
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgchoicekey{variant}{\xpgvalue{classic}, \xpgvalue{medieval}, \xpgpresetvalue{modern}, or \xpgvalue{ecclesiastic}\new{1.46}}
-% These variants refer to different spelling conventions. The \xpgvalue{classic}
-% and the \xpgvalue{medieval} variant do not use the letters \emph{U} and
-% \emph{v}, but only \emph{V} and \emph{u}. This concerns predefined terms like
-% month names as well as the behaviour of the \cmd\MakeUppercase\ and the
-% \cmd\MakeLowercase\ command. The ¦medieval¦ and the
-% ¦ecclesiastic¦ variant use the ligatures \emph{\ae} and \emph{\oe}.
-% See table \ref{tab:latin-spelling} for examples.
-%
-% Furthermore, the \xpgvalue{ecclesiastic} variant takes care for a punctuation
-% spacing similar to French, but with smaller spaces, as provided for
-% PDF\TeX\ by the \pkg{ecclesiastic} package.
-% \begin{table}
-% \centering
-% \caption{\label{tab:latin-spelling}Spelling differences between the Latin
-% language variants.\newline The capitalization of month names and the use of
-% \emph{i/j} may be affected by the \xpgvalue{capitalizemonth} and the
-% \xpgvalue{usej} option.}
-% \begin{tabular}{llll}
-% \toprule
-% \textbf{classic} & \textbf{medieval} & \textbf{modern} & \textbf{ecclesiastic} \\
-% \midrule
-% Ianuarii & Ianuarii & Ianuarii & ianuarii \\
-% Nouembris & Nouembris & Novembris & novembris \\
-% Praefatio & Præfatio & Praefatio & Præfatio \\
-% \addlinespace\multicolumn{4}{@{}l}{\cmd{\MakeUppercase\{Iulius\}} yields:} \\
-% IVLIVS & IVLIVS & IULIUS & IULIUS \\
-% \bottomrule
-% \end{tabular}
-% \end{table}
-% \item \xpgchoicekey[1.46]{hyphenation}{\xpgvalue{classic}, \xpgvalue{modern}, or \xpgvalue{liturgical}}
-% There are three different sets of hyphenation patterns for Latin. Separate
-% documention for them is available on the
-% Internet.\footnote{\url{https://github.com/gregorio-project/hyphen-la/blob/master/doc/README.md\#hyphenation-styles}}
-% Each of the four variants mentioned above has its default set of hyphenation
-% patterns as indicated by table \ref{tab:latin-hyphenation}. Use the
-% ¦hyphenation¦ option if the default style does not fit your needs.
-% Note that the liturgical hyphenation patterns are the default of none of the
-% language variants. To use them, you have to say
-% \xpgvalue{hyphenation=liturgical} in any case.
-% \begin{table}
-% \caption{\label{tab:latin-hyphenation}Latin default hyphenation styles}
-% \centering
-% \begin{tabular}{ll}
-% \toprule
-% \textbf{Language variant} & \textbf{Default hyphenation style} \\
-% \midrule
-% classic & classic \\
-% medieval & modern \\
-% modern & modern \\
-% ecclesiastic & modern \\
-% \bottomrule
-% \end{tabular}
-% \end{table}
-% \item \xpgboolkeyfalse[1.46]{ecclesiasticfootnotes}
-% Use footnotes as provided by the \pkg{ecclesiastic} package, which typesets
-% 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 ¦ecclesiastic¦ variant.
-%
-% Note that this option is only possible if Latin is the main language of your
-% document.
-% \item \xpgboolkeyfalse[1.46]{usej}
-% Use \emph{J/j} in predefined terms. The letter \emph{j} is not of ancient
-% origin. In early modern times, it was used to distinguish the consonantic
-% \emph{i} from the vocalic~\emph{i}. Nowadays, the use of \emph{j} has
-% disappeared from most Latin publications. So ¦false¦ is the default
-% value for all four language variants. Use this option if you prefer
-% \emph{Januarii} and \emph{Maji} to \emph{Ianuarii} and \emph{Maii}.
-% \item \xpgboolkey[1.46]{capitalizemonth}
-% Capitalize the month name when printing dates (using the \cmd\today\
-% command). Traditionally, month names are capitalized. However, in recent
-% liturgical books they are lowercase. So ¦true¦ is the default value for
-% the variants ¦classic¦, ¦medieval¦, and ¦modern¦,
-% whereas ¦false¦ is the default value for the ¦ecclesiastic¦
-% variant.
-% \item \xpgboolkeyfalse{babelshorthands}
-% Enable the following shorthands inherited from \pkg{babel-latin} and the
-% \pkg{ecclesiastic} package.
-% \begin{shorthands}
-% \item[¦"<¦] for « (left guillemet)
-% \item[¦">¦] for » (right guillemet)
-% \item[¦"¦] If no other shorthand applies, ¦"¦ before any letter
-% character defines an optional break point allowing further break points
-% within the same word (as opposed to the \cmd\- command).
-% \item[¦"|¦] the same as ¦"¦, but also possible before non-letter
-% characters
-% \item[¦'a¦] for á (a with acute), also available for é, í, ó, ú, ý, ǽ, and
-% \'œ
-% \item[¦'A¦] for Á (A with acute), also available for É, Í, Ó, Ú, \'V, Ý, Ǽ,
-% and \'Œ
-% \end{shorthands}
-% The following shorthands are only available for the ¦medieval¦ and the
-% ¦ecclesiastic¦ variant.
-% \begin{shorthands}
-% \item[¦"ae¦] for æ (ae ligature), also available for œ
-% \item[¦"Ae¦] for Æ (AE ligature), also available for Œ
-% \item[¦"AE¦] for Æ (AE ligature), also available for Œ
-% \item[¦'ae¦] for ǽ (ae ligature with acute), also available for \'œ
-% \item[¦'Ae¦] for Ǽ (AE ligature with acute), also available for \'Œ
-% \item[¦'AE¦] for Ǽ (AE ligature with acute), also available for \'Œ
-% \end{shorthands}
-% \item \xpgboolkeyfalse[1.46]{prosodicshorthands}
-% Enable shorthands for prosodic marks (macrons and breves) very similiar to
-% those provided by \pkg{babel-latin} using the ¦withprosodicmarks¦
-% modifier.
-% Note that the active ¦=¦ character used for macrons will cause problems with
-% commands using \texttt{key=value} interfaces, such as the command
-% ¦\includegraphics[scale=2]{...}¦. Use \cmd{\shorthandoff\{=\}} before
-% such commands (and \cmd{\shorthandon\{=\}} thereafter) within every
-% environment with prosodic shorthands enabled.
-%
-% The following shorthands are available.
-% \begin{shorthands}
-% \item[¦=a¦] for ā (a with macron), also available for ē, ī, ō, ū, and ȳ
-% \item[¦=A¦] for Ā (A with macron), also available for Ē, Ī, Ō, Ū, V̄, and Ȳ.
-% Note that a macron above the letter V is only displayed if your font
-% supports the Unicode character ¦0304¦ (\emph{combining macron}).
-% \item[¦=ae¦] for a͞e (ae diphthong with macron), also available for a͞u, e͞u,
-% and o͞e. Note that macrons above diphthongs are only displayed if your font
-% supports the Unicode character ¦035E¦ (\emph{combining double
-% macron}).
-% \item[¦=Ae¦] for A͞e (Ae diphthong with macron), also available for A͞u, E͞u,
-% and O͞e.
-% \item[¦=AE¦] for A͞E (AE diphthong with macron), also available for A͞U, E͞U,
-% and O͞E.
-% \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 ¦0306¦ (\emph{combining
-% breve}).
-% \item[¦\textasciicircum A¦] Ă (A with breve), also available for Ĕ, Ĭ, Ŏ,
-% Ŭ, V̆, and Y̆. Note that breves above the letters V and Y are only displayed
-% if your font supports the Unicode character ¦0306¦ (\emph{combining
-% breve}).
-% \end{shorthands}
-% \end{itemize}
-%
-% \subsection{malay}\label{malay}
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgchoicekey[1.45]{variant}{\xpgpresetvalue{indonesian} or \xpgvalue{malaysian}}
-% \end{itemize}
-%
-% \subsection{marathi}\label{marathi}
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgchoicekey{numerals}{\xpgpresetvalue{Devanagari} or \xpgvalue{Western}}
-% \end{itemize}
-%
-% \subsection[mongolian]{mongolian\new{1.45}}\label{mongolian}
-% Currently, only the Khalkha variety in Cyrillic script is supported.
-%
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgboolkeyfalse{babelshorthands}
-% If this is turned on, the following shorthands are activated:
-% \begin{shorthands}
-% \item[¦"-¦] adds a hyphenation point that does still allow for hyphenation at the points preset
-% in the hyphenation patterns (as opposed to \cmd\-).
-% \item[\texttt{"\textasciitilde}] for a hyphen sign without a breakpoint. Useful for
-% cases where the hyphen should stick at the following syllable.
-% \item[¦"|¦] disables a ligature at this position.
-% \item[¦""¦] allows for a line break at this position (without hyphenation sign).
-% \item[¦"---¦] Cyrillic emdash in plain text.
-% \item[¦"--~¦] Cyrillic emdash in compound names (surnames).
-% \item[¦"--*¦] Cyrillic emdash for denoting direct speech.
-% \item[¦",¦] thinspace for initials with a breakpoint in following surname.
-% \item[¦"‘¦] for German left double quotes (looks like ,,).
-% \item[¦"’¦] for German right double quotes (looks like “).
-% \item[¦"<¦] for French left double quotes (looks like <<).
-% \item[¦">¦] for French right double quotes (looks like >>).
-% \end{shorthands}
-% \item \xpgchoicekey{numerals}{\xpgpresetvalue{arabic}, \xpgvalue{cyrillic-alph} or \xpgvalue{cyrillic-trad}}
-% Uses either Arabic numerals or Cyrillic alphanumerical numbering. The two Cyrillic variants differ as follows:
-% \begin{itemize}
-% \item \xpgvalue{cyrillic-alph} steps through the Cyrillic alphabet. Thus it can only be used up to 30.
-% \item \xpgvalue{cyrillic-trad} (= \xpgvalue{cyrillic}) uses a traditional Cyrillic alphanumeric system.%
-% \footnote{See \url{https://en.wikipedia.org/wiki/Cyrillic_numerals}.}
-% It supports numbers up to 999\,999.
-% \end{itemize}
-% \end{itemize}
-% ^^A
-% \paragraph*{Commands:}
-% \begin{itemize}
-% \item \Cmd\Asbuk: produces uppercased Cyrillic alphanumerals, for environments such as ¦enumerate¦.
-% It steps through the Cyrillic alphabet and thus it can only be used up to 30.
-% The command takes a counter as argument, \eg ¦\textmongolian{\Asbuk{section}}¦ produces \textrussian{\Asbuk{section}}.
-% \item \Cmd\asbuk: same as \cmd\Asbuk\ but in lowercase.
-% \item \Cmd\AsbukTrad: same as \cmd\Asbuk\ but using the traditional Cyrillic alphanumeric numbering which supports
-% numbers up to 999\,999.\\
-% \Eg ¦\textmongolian{\AsbukTrad{section}}¦ produces \textrussian{\AsbukTrad{section}}.
-% \item \Cmd\asbukTrad: same as \cmd\AsbukTrad\ but in lowercase.
-% \end{itemize}
-%
-% \subsection{norwegian}\label{norwegian}
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgchoicekey[1.45]{variant}{\xpgvalue{bokmal} or \xpgpresetvalue{nynorsk}}
-% \end{itemize}
-%
-% \subsection{persian}\label{persian}
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgchoicekey{numerals}{\xpgvalue{western} or \xpgpresetvalue{eastern}}
-% \item \xpgboolkeyfalse[1.0.3]{abjadjimnotail}
-% Set this to \xpgvalue{true} if you want the \textit{abjad} form of the number three to
-% be \textarabic{ج‍} – as in the manuscript tradition – instead of the
-% modern usage \textarabic{ج}.
-% ^^A \item \xpgchoicekey{locale}{} (not yet implemented)
-% ^^A \item \xpgchoicekey{calendar}{} (not yet implemented)
-% \end{itemize}
-% \paragraph*{Commands:}
-% \begin{itemize}
-% \item \Cmd\abjad (see section \ref{abjad})
-% \item \Cmd\aemph (see section \ref{arabic}).
-% \end{itemize}
-%
-% \subsection{portuguese}\label{portuguese}
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgchoicekey[1.45]{variant}{\xpgvalue{brazilian} or \xpgpresetvalue{portuguese}}
-% \end{itemize}
-%
-% \subsection{russian}\label{russian}
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgboolkeyfalse{babelshorthands}
-% If this is turned on, the following shorthands are activated:
-% \begin{shorthands}
-% \item[¦"-¦] adds a hyphenation point that does still allow for hyphenation at the points preset
-% in the hyphenation patterns (as opposed to \cmd\-).
-% \item[\texttt{"\textasciitilde}] for a hyphen sign without a breakpoint. Useful for
-% cases where the hyphen should stick at the following syllable.
-% \item[¦"|¦] disables a ligature at this position.
-% \item[¦""¦] allows for a line break at this position (without hyphenation sign).
-% \item[¦"---¦] Cyrillic emdash in plain text.
-% \item[¦"--~¦] Cyrillic emdash in compound names (surnames).
-% \item[¦"--*¦] Cyrillic emdash for denoting direct speech.
-% ^^A These are commented out in gloss-russian
-% ^^A \item[¦",¦] thinspace for initials with a breakpoint in following surname.
-% ^^A \item[¦"‘¦] for German left double quotes (looks like ,,).
-% ^^A \item[¦"’¦] for German right double quotes (looks like “).
-% ^^A \item[¦"<¦] for French left double quotes (looks like <<).
-% ^^A \item[¦">¦] for French right double quotes (looks like >>).
-% \end{shorthands}
-% \item \xpgboolkeytrue[1.46]{indentfirst}
-% By default, all paragraphs are indented in Russian, also those after a
-% chapter or section heading. If this option is false, the latter paragraphs
-% are not indented, as normal in \LaTeX.
-% \item \xpgchoicekey{spelling}{\xpgpresetvalue{modern} or \xpgvalue{old}}
-% This option is for captions and date only, not for hyphenation.
-% \item \xpgchoicekey{numerals}{\xpgpresetvalue{arabic}, \xpgvalue{cyrillic-alph} or \xpgvalue{cyrillic-trad}}
-% Uses either Arabic numerals or Cyrillic alphanumerical numbering. The two Cyrillic variants differ as follows:
-% \begin{itemize}
-% \item \xpgvalue{cyrillic-alph} steps through the Cyrillic alphabet. Thus it can only be used up to 30.
-% \item \xpgvalue{cyrillic-trad} (= \xpgvalue{cyrillic}) uses a traditional Cyrillic alphanumeric system.%
-% \footnote{See \url{https://en.wikipedia.org/wiki/Cyrillic_numerals}.}
-% It supports numbers up to 999\,999.
-% \end{itemize}
-% \end{itemize}
-% ^^A
-% \paragraph*{Commands:}
-% \begin{itemize}
-% \item \Cmd\Asbuk: produces uppercased Cyrillic alphanumerals, for environments such as ¦enumerate¦.
-% It steps through the Cyrillic alphabet and thus it can only be used up to 30.
-% The command takes a counter as argument, \eg ¦\textrussian{\Asbuk{section}}¦ produces \textrussian{\Asbuk{section}}.
-% \item \Cmd\asbuk: same as \cmd\Asbuk\ but in lowercase.
-% \item \Cmd\AsbukTrad: same as \cmd\Asbuk\ but using the traditional Cyrillic alphanumeric numbering which supports
-% numbers up to 999\,999.\\
-% \Eg ¦\textrussian{\AsbukTrad{page}}¦ produces \textrussian{\AsbukTrad{page}}.
-% \item \Cmd\asbukTrad: same as \cmd\AsbukTrad\ but in lowercase.
-% \end{itemize}
-%
-% \subsection[sami]{sami\new{1.45}}\label{sami}
-% Currently support for Sami is limited to Northern Sami.
-%
-% \subsection{sanskrit}\label{sanskrit}
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgchoicekey[1.0.2]{script}{\xpgpresetvalue{Devanagari}, \xpgvalue{Gujarati},
-% \xpgvalue{Malayalam}, \xpgvalue{Bengali}, \xpgvalue{Kannada}, \xpgvalue{Telugu}, or \xpgvalue{Latin}}
-% The value is passed to \pkg{fontspec} in cases where the respective
-% \cmd{\⟨script⟩font} is not defined. This can be useful if you typeset Sanskrit
-% texts in scripts other than Devanagari.
-% \item \xpgchoicekey[1.45]{numerals}{\xpgpresetvalue{Devanagari} or \xpgvalue{Western}}
-% \end{itemize}
-%
-% \subsection{serbian}\label{serbian}
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgchoicekey{script}{\xpgpresetvalue{Cyrillic} or \xpgvalue{Latin}}
-% \item \xpgchoicekey{numerals}{\xpgpresetvalue{arabic}, \xpgvalue{cyrillic-alph} or \xpgvalue{cyrillic-trad}}
-% Uses either Arabic numerals or Cyrillic alphanumerical numbering. The two Cyrillic variants differ as follows:
-% \begin{itemize}
-% \item \xpgvalue{cyrillic-alph} steps through the Cyrillic alphabet. Thus it can only be used up to 30.
-% \item \xpgvalue{cyrillic-trad} (= \xpgvalue{cyrillic}) uses a traditional Cyrillic alphanumeric system.%
-% \footnote{See \url{https://en.wikipedia.org/wiki/Cyrillic_numerals}.}
-% It supports numbers up to 999\,999.
-% \end{itemize}
-% \end{itemize}
-% ^^A
-% \paragraph*{Commands:}
-% \begin{itemize}
-% \item \Cmd\Asbuk: produces uppercased Cyrillic alphanumerals, for environments such as ¦enumerate¦.
-% It steps through the Cyrillic alphabet and thus it can only be used up to 30.
-% The command takes a counter as argument, \eg ¦\textserbian{\Asbuk{section}}¦ produces \textrussian{\Asbuk{section}}.
-% \item \Cmd\asbuk: same as \cmd\Asbuk\ but in lowercase.
-% \item \Cmd\AsbukTrad: same as \cmd\Asbuk\ but using the traditional Cyrillic alphanumeric numbering which supports
-% numbers up to 999\,999.\\
-% \Eg ¦\textserbian{\AsbukTrad{page}}¦ produces \textrussian{\AsbukTrad{page}}.
-% \item \Cmd\asbukTrad: same as \cmd\AsbukTrad\ but in lowercase.
-% \end{itemize}
-%
-%
-% \subsection{slovak}\label{slovak}
-%
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgboolkeyfalse[1.46]{babelshorthands}
-% If this is turned on, the following shorthands for Slovak are activated:
-% \begin{shorthands}
-% \item[¦"=¦] for an explicit hyphen sign which is repeated at the beginning
-% of the next line when hyphenated, as common in Slovak typesetting
-% (only needed with ¦splithyphens=false¦).
-% \item[¦"|¦] disables a ligature at this position.
-% \item[\texttt{"\textasciitilde}] for a hyphen sign without a breakpoint. Useful for
-% cases where the hyphen should stick at the following syllable.
-% \item[¦"-¦] adds a hyphenation point that does still allow for hyphenation at the points preset
-% in the hyphenation patterns (as opposed to \cmd\-).
-% \item[¦""¦] allows for a line break at this position (without hyphenation sign).
-% \item[¦"/¦] a slash that allows for a subsequent line break. As opposed to \cmd\slash, hyphenation at the breakpoints
-% preset in the hyphenation patterns is still allowed.
-% \item[¦"‘¦] for Slovak left double quotes (looks like ,,).
-% \item[¦"’¦] for Slovak right double quotes (looks like “).
-% \item[¦">¦] for Slovak left double guillemets (looks like >>).
-% \item[¦"<¦] for Slovak right double guillemets (looks like <<).
-% \end{shorthands}
-% \item \xpgboolkeytrue[1.46]{splithyphens}
-% According to Slovak typesetting conventions, if a word with a hard hyphen (such as \emph{je-li})
-% is hyphenated at this hyphen, a second hyphenation character is to be inserted at the beginning
-% of the line that follows the hyphenation (\emph{je-/-li}).
-% By default, this is done automatically (if you are using \LuaTeX, the \pkg{luavlna} package is
-% loaded to achieve this).
-% Set this option to ¦false¦ to disable the feature.
-% \item \xpgboolkeytrue[1.46]{vlna}
-% According to Slovak typesetting conventions, single-letter words (non-syllable prepositions)
-% must not occur at line ends.
-% \pkg{Polyglossia} takes care of this automatically by default (if you are using \LuaTeX, the
-% \pkg{luavlna} package is loaded to achieve this).
-% Set this option to ¦false¦ to disable the feature.
-% \end{itemize}
-%
-% \subsection{slovenian}\label{slovenian}
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgboolkeyfalse{localalph}
-% If \xpgvalue{true}, alpha-numeric counters will use a localized version including characters with caron
-% (a, b, c, č, d, \ldots).
-% \end{itemize}
-%
-% \subsection{sorbian}\label{sorbian}
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgchoicekey[1.45]{variant}{\xpgvalue{lower} or \xpgpresetvalue{upper}}
-% \item \xpgboolkeyfalse[1.45]{olddate}
-% If \xpgvalue{true}, \cmd\today\ will use traditional Sorbian month names (\ie it will be
-% synonymous to \cmd\oldtoday\ below).
-% \end{itemize}
-% \paragraph*{Commands:}
-% \begin{itemize}
-% \item \Cmd\oldtoday: outputs the current date using traditional Sorbian month names, even if
-% \xpgvalue{olddate} is \xpgvalue{false}.
-% \end{itemize}
-%
-% \subsection{spanish}\label{spanish}
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgchoicekey[1.46]{variant}{\xpgpresetvalue{spanish} or \xpgvalue{mexican}}
-% \item \xpgchoicekey[1.46]{spanishoperators}{\xpgdefaultvalue{all}, \xpgvalue{accented},
-% \xpgvalue{spaced}, \xpgvalue{none}, or \xpgpresetvalue{false}}
-% Determines of and how math operators are localized to Spanish.
-% \begin{itemize}
-% \item ¦accented¦ causes some math operators to use accents where usual in Spanish (\emph{lím},
-% \emph{lím\,sup}, \emph{lím\,inf}, \emph{máx}, \emph{mín}, \emph{ínf}, \emph{mód}).
-% \item ¦spaced¦ causes some math operators to use spaces where usual in Spanish (\emph{arc\,cos},
-% \emph{arc\,sen}, \emph{arc\,tg}).
-% \item ¦all¦ activates ¦accented¦ and ¦spaced¦ and furthermore provides Spanish localizations of
-% \cmd\sin\ (\emph{sen}), \cmd\tan\ (\emph{tg}), \cmd\sinh\ (\emph{senh}), and \cmd\tanh\ (\emph{tgh}).
-% \item ¦none¦ does no localization at all (default setting).
-% \end{itemize}
-% \end{itemize}
-% \paragraph*{\color{black}Commands:}\new{1.46}
-% \begin{itemize}
-% \item \Cmd\arcsen: alias to \cmd\arcsin\ (\pkg{babel} compatibility)
-% \item \Cmd\arctg: alias to \cmd\arctan\ (\pkg{babel} compatibility)
-% \item \Cmd\sen: alias to \cmd\sin\ (\pkg{babel} compatibility)
-% \item \Cmd\senh: alias to \cmd\sinh\ (\pkg{babel} compatibility)
-% \item \Cmd\tg: alias to \cmd\tan\ (\pkg{babel} compatibility)
-% \item \Cmd\tgh: alias to \cmd\tanh\ (\pkg{babel} compatibility)
-% \item \Cmd\spanishoperator: allows you to define further localized operators. For instance, ¦\spanishoperator{cotg}¦
-% defines a command \cmd\cotg\ that outputs \emph{cotg} in math. The optional argument of the command lets you specify the
-% spelling, if needed, \eg ¦\spanishoperator[arc\,ctg]{arcctg}¦.
-% \end{itemize}
-%
-% \subsection{syriac}\label{syriac}
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgchoicekey[1.0.1]{numerals}{\xpgpresetvalue{western} (\ie 1234567890), \xpgvalue{eastern}
-% (for which the Oriental Arabic numerals are used: \textarabic{١٢٣٤٥٦٧٨٩٠}), or
-% \xpgvalue{abjad}}
-% \end{itemize}
-% \paragraph*{Commands:}
-% \begin{itemize}
-% \item \Cmd\abjadsyriac (see section \ref{abjad})
-% \item \Cmd\aemph (see section \ref{arabic}).
-% \end{itemize}
-%
-% \subsection{thai}\label{thai}
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgchoicekey{numerals}{\xpgvalue{thai} or \xpgpresetvalue{arabic}}
-% \end{itemize}
-% ^^A
-% To insert word breaks, you need to use an external processor.
-% See the documentation to \pkg{thai-latex} and the file \file{testthai.tex}
-% that comes with this package.
-%
-% \subsection{tibetan}\label{tibetan}
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgchoicekey{numerals}{\xpgvalue{tibetan} or \xpgpresetvalue{arabic}}
-% \end{itemize}
-%
-% \subsection{ukrainian}\label{ukrainian}
-%
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgboolkeyfalse{babelshorthands}
-% If this is turned on, the following shorthands are activated:
-% \begin{shorthands}
-% \item[¦"-¦] adds a hyphenation point that does still allow for hyphenation at the points preset
-% in the hyphenation patterns (as opposed to \cmd\-).
-% \item[\texttt{"\textasciitilde}] for a hyphen sign without a breakpoint. Useful for
-% cases where the hyphen should stick at the following syllable.
-% \item[¦"|¦] disables a ligature at this position.
-% \item[¦""¦] allows for a line break at this position (without hyphenation sign).
-% \item[¦"---¦] Cyrillic emdash in plain text.
-% \item[¦"--~¦] Cyrillic emdash in compound names (surnames).
-% \item[¦"--*¦] Cyrillic emdash for denoting direct speech.
-% ^^A These are commented out in gloss-ukrainian
-% ^^A \item[¦",¦] thinspace for initials with a breakpoint in following surname.
-% ^^A \item[¦"‘¦] for German left double quotes (looks like ,,).
-% ^^A \item[¦"’¦] for German right double quotes (looks like “).
-% ^^A \item[¦"<¦] for French left double quotes (looks like <<).
-% ^^A \item[¦">¦] for French right double quotes (looks like >>).
-% \end{shorthands}
-% \item \xpgchoicekey{numerals}{\xpgpresetvalue{arabic}, \xpgvalue{cyrillic-alph} or \xpgvalue{cyrillic-trad}}
-% Uses either Arabic numerals or Cyrillic alphanumerical numbering. The two Cyrillic variants differ as follows:
-% \begin{itemize}
-% \item \xpgvalue{cyrillic-alph} steps through the Cyrillic alphabet. Thus it can only be used up to 30.
-% \item \xpgvalue{cyrillic-trad} (= \xpgvalue{cyrillic}) uses a traditional Cyrillic alphanumeric system.%
-% \footnote{See \url{https://en.wikipedia.org/wiki/Cyrillic_numerals}.}
-% It supports numbers up to 999\,999.
-% \end{itemize}
-% \end{itemize}
-% ^^A
-% \paragraph*{Commands:}
-% \begin{itemize}
-% \item \Cmd\Asbuk: produces uppercased Cyrillic alphanumerals, for environments such as ¦enumerate¦.
-% It steps through the Cyrillic alphabet and thus it can only be used up to 30.
-% The command takes a counter as argument, \eg ¦\textukrainian{\Asbuk{section}}¦ produces \textrussian{\Asbuk{section}}.
-% \item \Cmd\asbuk: same as \cmd\Asbuk\ but in lowercase.
-% \item \Cmd\AsbukTrad: same as \cmd\Asbuk\ but using the traditional Cyrillic alphanumeric numbering which supports
-% numbers up to 999\,999.\\
-% \Eg ¦\textukrainian{\AsbukTrad{page}}¦ produces \textrussian{\AsbukTrad{page}}.
-% \item \Cmd\asbukTrad: same as \cmd\AsbukTrad\ but in lowercase.
-% \end{itemize}
-%
-% \subsection{welsh}\label{welsh}
-% \paragraph*{Options:}
-% \begin{itemize}
-% \item \xpgchoicekey{date}{\xpgvalue{long} or \xpgpresetvalue{short}}
-% \end{itemize}
-%
-%
-% \section{Modifying or extending captions, date formats and language settings}
-%
-% \pkg{Polyglossia} uses the following macros to define language-specific captions
-% (\ie strings such as ``chapter''), date formats and additional language settings
-% (\meta{lang} is to be replaces with the respective language name):
-%
-% \begin{itemize}
-% \item \Cmd{\captions\meta{lang}} stores definitions of caption strings
-% (such as, in the case of English, ¦\def\chaptername{Chapter}¦)
-% \item \Cmd{\date\meta{lang}} stores definitions of date formats (usually redefinitions
-% of \cmd\today, in some cases also definitions of additional date commands)
-% \item \Cmd{\blockextras\meta{lang}} stores macros that are to be executed when the language
-% \meta{lang} is activated via \cmd\selectlanguage command or the \meta{lang} environment
-% \item \Cmd{\inlineextras\meta{lang}} stores macros that are to be executed when the language
-% \meta{lang} is activated locally via \cmd\text\meta{lang} command
-% \item \Cmd{\noextras\meta{lang}} stores macros that are to be executed when the language
-% \meta{lang} is closed
-% \end{itemize}
-% ^^A
-% In order to redefine internal macros, we recommend to use the command \cmd\gappto.
-% For compatibility with \pkg{babel} the command \cmd\addto\ is also available
-% to the same effect. For instance, to change the \cmd\chaptername\ for language ¦lingua¦,
-% you can do this:
-% \begin{verbatim}
-% \gappto\captionslingua{\def\chaptername{Caput}}
-% \end{verbatim}
-% ^^A
-% Note that this needs to be done after the respective language has been loaded with
-% \cmd\setmainlanguage\ or \cmd\setotherlanguage.
-%
-% Specifically for package authors, analogous commands are provided which are only executed
-% if a specific language \emph{variety} is used. As opposed to the macros above, these refer
-% to babel names. Other than that, the function is identical:
-%
-% \begin{itemize}
-% \item \Cmd{\captions@bbl@\meta{babelname}}
-% \item \Cmd{\date@bbl@\meta{babelname}}
-% \item \Cmd{\blockextras@bbl@\meta{babelname}}
-% \item \Cmd{\inlineextras@bbl@\meta{babelname}}
-% \item \Cmd{\noextras@bbl@\meta{babelname}}
-% \end{itemize}
-% ^^A
-% By default, these macros are undefined. If they are defined (\eg by an external package),
-% they will be executed after their respective \meta{lang} counterpart and thus can be used to
-% overwrite definitions of the former. Again, use \cmd\gappto\ to define\slash modify these macros.
-% For instance, to add a new caption \cmd\footnotename\ to the Swiss variety of German (babel name
-% ¦nswissgerman¦), you can do this:
-% \begin{verbatim}
-% \gappto\captions@bbl@nswissgerman{\def\footnotename{Fussnote}}
-% \end{verbatim}
-% ^^A
-% If you do this in a document preamble rather than in a package, you need to embrace the redefinition
-% by \cmd\makeatletter\ and \cmd\makeatother\ due to the ¦@¦ in the macro names.
-%
-% Finally, as soon as the language has been switched (either inline or as a block), \pkg{polyglossia}
-% executes the (by default empty) hook
-% \begin{itemize}
-% \item \Cmd{\polyglossia@language@switched}
-% \end{itemize}
-% to which you can append arbitrary code (via \cmd\gappto) that should be executed if (a particular)
-% language is being activated. This is done before any of the above
-% macros are issued (so you can still alter them), but at a point where \cmd\languagename, \cmd\babelname\
-% and \cmd\languageid\ are already set, so you can condition on specific languages in your code.
-% This hook is particularly provided for package authors.
-%
-% \section{Script-specific numbering}
-%
-% Languages and scripts have specific numbering conventions. Some use decimal digits
-% (\eg Arabic numerals), some use alphabetic or alphanumerical notation (\eg Roman numbering).
-% In some cases, different conventions are available (\eg Mashriq or Maghrib numbering
-% in Arabic script, Arabic or Hebrew [=~alphanumeric] numbering in Hebrew).
-%
-% If the latter is the case, \pkg{polyglossia} provides language options which allow you to select
-% or switch to the suitable convention. With the appropriate language option set, \pkg{polyglossia}
-% will automatically convert the output of internal \LaTeX\ counters to their
-% localized forms, for instance to display page, chapter and section numbers.
-%
-% For manual input of numbers, macros are provided. These convert Arabic numeric input to the respective
-% local decimal digit (see sec.~\ref{sec:decdigit}), alphanumeric representation (see sec.~\ref{abjad})
-% or whatever is appropriate (see sec.~\ref{sec:localnumber}). The possibilities are described in turn.
-%
-% \subsection{General localization of numbering}\label{sec:localnumber}
-%
-% As of 1.45,\new{1.45} \pkg{polyglossia} provides a generic macro \Cmd\localnumeral\ which converts numbers
-% to the current local form (which might be script-specific decimal digit, an alphabetic numbering or something else).
-% For instance in an Arabic environment
-% ¦\localnumeral{42}¦ yields \textarabic{\localnumeral{42}}, whereas in an Hebrew environment, it
-% results in \texthebrew[numerals=hebrew]{\localnumeral{42}} with ¦numerals=hebrew¦, and \texthebrew{\localnumeral{42}}
-% with ¦numerals=arabic¦. Note that, as opposed to the various ¦digits¦ macros (described in sec.~\ref{sec:decdigit}),
-% the argument of \cmd\localnumeral\ must consist of numbers only.
-%
-% For\new{1.45} the conversion of counters, the starred version \Cmd{\localnumeral*} is provided. This takes a counter as argument.
-% For instance in an Arabic environment ¦\localnumeral*{page}¦ yields \textarabic{\localnumeral*{page}}.
-%
-% For scripts with alphanumeric numbering, the variants \Cmd{\Localnumeral} and \Cmd{\Localnumeral*} provide the uppercased
-% versions.\medskip
-%
-% \noindent All these macros provide the following options:
-%
-% \begin{itemize}
-% \item \DescribeMacro{[lang=]}\xpgchoicekey{lang}{\xpgpresetvalue{local}, \xpgvalue{main},
-% or \xpgvalue{\meta{language}}}
-% Output number in the local form of the currently active language for
-% ¦local¦, the main language of the document for ¦main¦, and any (loaded)
-% language for \meta{language} (\eg ¦\localnumeral[lang=arabic]{42}}¦).
-% \end{itemize}
-%
-% \subsection{Non-Western decimal digits}\label{sec:decdigit}
-%
-% In addition\new{1.1.1} to the generic macros described above, \pkg{polyglossia} provides language-specific conversion macros
-% which can be used if the generic ones do not suit the need.\footnote{%
-% A third method are so-called TECKit fontmappings.
-% Those can be activated with the \pkg{fontspec} ¦Mapping¦ option,
-% using ¦arabicdigits¦, ¦farsidigits¦ or ¦thaidigits¦.
-% For instance if \cmd\arabicfont\ is defined with the option ¦Mapping=arabicdigits¦,
-% typing \cmd{\textarabic\{2010\}} results in \textarabic{٢٠١٠}. Note that this method has some drawbacks, though,
-% for instance when the value of a counter has to be written and read from auxiliary files.
-% So please use this with care.}
-% The macros have the form \cmd{\⟨script⟩digits}. They convert Arabic numerical input and leave every other input untouched.
-% In an Arabic context, for instance, ¦\arabicdigits{9182/738543-X}¦ yields \textarabic{\arabicdigits{9182/738543-X}}.
-%
-% Currently, the following macros are provided:
-%
-% \begin{itemize}
-% \item \Cmd\arabicdigits
-% \item \Cmd\bengalidigits
-% \item \Cmd\devanagaridigits
-% \item \Cmd\farsidigits
-% \item \Cmd\kannadadigits
-% \item \Cmd\khmerdigits
-% \item \Cmd\laodigits
-% \item \Cmd\nkodigits
-% \item \Cmd\thaidigits
-% \item \Cmd\tibetandigits
-% \end{itemize}
-%
-%
-% \subsection{Non-Latin alphabetic numbering}\label{abjad}
-%
-% For languages which use special (non-Latin) alphanumerical notation\footnote{%
-% For instance, see \url{http://en.wikipedia.org/wiki/Greek_numerals},
-% \url{http://en.wikipedia.org/wiki/Abjad_numerals},
-% \url{http://en.wikipedia.org/wiki/Hebrew_numerals},
-% and \url{http://en.wikipedia.org/wiki/Syriac_alphabet}.}, dedicated macros are provided.
-%
-% They work in a similar way than the \cmd{\⟨script⟩digits} macros described above: They take Arabic numerical input
-% and output the respective value in the local alphabetic numbering scheme (most of these macros are equivalent
-% to \cmd\localnumeral\ and \cmd\Localnumeral\ in the respective context).
-%
-% The following macros are provided:
-%
-% \begin{itemize}
-% \item \Cmd\abjad outputs Arabic \textit{abjad} numbers according to the Mashriq varieties.
-% Example: ¦\abjad{1863}¦ yields \textarabic{\abjad{1863}}.
-%
-% \item \Cmd\abjadmaghribi outputs Arabic \textit{abjad} numbers according to the Maghrib varieties.
-% Example: ¦\abjadmaghribi{1863}¦ yields \textarabic{\abjadmaghribi{1863}}.
-%
-% \item \Cmd\abjadsyriac outputs Syriac abjad numerals.\footnote{%
-% A fine guide to numerals in Syriac can be found at \link{http://www.garzo.co.uk/documents/syriac-numerals.pdf}.}\\
-% Example: ¦\abjadsyriac{463}¦ yields \textsyriac{\abjadsyriac{463}}.
-%
-% \item \Cmd\armeniannumeral produces Armenian alphabetic numbering.
-% Example: ¦\armeniannumeral{1863}¦ yields \textarmenian{\armeniannumeral{1863}}.
-%
-% \item \Cmd\belarusiannumeral produces Belarusian numbering, with uppercased variant (for alphanumerical variant) via \Cmd\Belarusiannumeral.
-% Depending on the ¦numerals¦ option in the Belarusian language selection, this is either Arabic digit or Cyrillic
-% alphanumercial output.\\
-% Example: With ¦numerals=latin¦ ¦\belarusiannumeral{19}¦ yields \textrussian{\russiannumeral{19}},
-% with ¦numerals=cyrillic-trad¦ ¦\belarusiannumeral{19}¦ results in \textrussian[numerals=cyrillic-trad]{\russiannumeral{19}},\\
-% with ¦numerals=cyrillic-alph¦ ¦\belarusiannumeral{19}¦ results in \textrussian[numerals=cyrillic-alph]{\russiannumeral{19}}.
-%
-% \item \Cmd\georgiannumeral produces Georgian alphabetic numbering.\\
-% Example: ¦\georgiannumeral{1863}¦ yields \textgeorgian{\georgiannumeral{1863}}.
-%
-% \item \Cmd\greeknumeral produces Greek alphabetic numbering, \Cmd\Greeknumeral outputs uppercased variants.
-% Example: ¦\greeknumeral{1863}¦ yields \textgreek{\greeknumeral{1863}},
-% ¦\Greeknumeral{1863}¦ results in \textgreek{\Greeknumeral{1863}}.
-%
-% \item \Cmd\hebrewnumeral, \Cmd\Hebrewnumeral and \Cmd\Hebrewnumeralfinal generate variants of Hebrew alphanumeric numerals.
-% The commands behave exactly as they do in \pkg{babel}: \cmd\hebrewnumeral\ outputs the numbers without any decoration,
-% \cmd\Hebrewnumeral\ adds \textit{gereshayim} before the last letter, \cmd\Hebrewnumeralfinal\ uses in addition the final forms of Hebrew letters.
-% Examples:
-% ¦\hebrewnumeral{1750}¦ yields \texthebrew{\hebrewnumeral{1750}},
-% ¦\Hebrewnumeral{1750}¦ yields \texthebrew{\Hebrewnumeral{1750}},
-% and ¦\Hebrewnumeralfinal{1750}¦ yields \texthebrew{\Hebrewnumeralfinal{1750}}.
-%
-% \item \Cmd\mongoliannumeral produces Mongolian numbering, with uppercased variant (for alphanumerical variant) via \Cmd\Mongoliannumeral.
-% Depending on the ¦numerals¦ option in the Mongolian language selection, this is either Arabic digit or Cyrillic
-% alphanumercial output.\\
-% Example: With ¦numerals=latin¦ ¦\mongoliannumeral{19}¦ yields \textrussian{\russiannumeral{19}},
-% with ¦numerals=cyrillic-trad¦ ¦\mongoliannumeral{19}¦ results in \textrussian[numerals=cyrillic-trad]{\russiannumeral{19}},\\
-% with ¦numerals=cyrillic-alph¦ ¦\mongoliannumeral{19}¦ results in \textrussian[numerals=cyrillic-alph]{\russiannumeral{19}}.
-%
-% \item \Cmd\russiannumeral produces Russian numbering, with uppercased variant (for alphanumerical variant) via \Cmd\Russiannumeral.
-% Depending on the ¦numerals¦ option in the Russian language selection, this is either Arabic digit or Cyrillic
-% alphanumercial output.\\
-% Example: With ¦numerals=latin¦ ¦\russiannumeral{19}¦ yields \textrussian{\russiannumeral{19}},
-% with ¦numerals=cyrillic-trad¦ ¦\russiannumeral{19}¦ results in \textrussian[numerals=cyrillic-trad]{\russiannumeral{19}},\\
-% with ¦numerals=cyrillic-alph¦ ¦\russiannumeral{19}¦ results in \textrussian[numerals=cyrillic-alph]{\russiannumeral{19}}.
-%
-% \item \Cmd\serbiannumeral produces Serbian numbering, with uppercased variant (for alphanumerical variant) via \Cmd\Serbiannumeral.
-% Depending on the ¦numerals¦ option in the Serbian language selection, this is either Arabic digit or Cyrillic
-% alphanumercial output.\\
-% Example: With ¦numerals=latin¦ ¦\serbiannumeral{19}¦ yields \textrussian{\serbiannumeral{19}},
-% with ¦numerals=cyrillic-trad¦ ¦\serbiannumeral{19}¦ results in \textrussian[numerals=cyrillic-trad]{\serbiannumeral{19}},\\
-% with ¦numerals=cyrillic-alph¦ ¦\serbiannumeral{19}¦ results in \textrussian[numerals=cyrillic-alph]{\serbiannumeral{19}}.
-%
-% \item \Cmd\ukrainiannumeral produces Ukrainian numbering, with uppercased variant (for alphanumerical variant) via \Cmd\Ukrainiannumeral.
-% Depending on the ¦numerals¦ option in the Ukrainian language selection, this is either Arabic digit or Cyrillic
-% alphanumercial output.\\
-% Example: With ¦numerals=latin¦ ¦\ukrainiannumeral{19}¦ yields \textrussian{\russiannumeral{19}},
-% with ¦numerals=cyrillic-trad¦ ¦\ukrainiannumeral{19}¦ results in \textrussian[numerals=cyrillic-trad]{\russiannumeral{19}},\\
-% with ¦numerals=cyrillic-alph¦ ¦\ukrainiannumeral{19}¦ results in \textrussian[numerals=cyrillic-alph]{\russiannumeral{19}}.
-% \end{itemize}
-%
-%
-% \section{Footnotes in right-to-left context}
-%
-% With languages that use right-to-left scripts, footnote apparatuses are usually placed at the right side of the page bottom.
-% Consequently, the footnote rule also is to be placed right. Things get more tricky, though, if right-to-left and left-to-right
-% scripts are mixed. Then you might want to put the footnotes on some pages left, on some right, or even mix positions on a page.
-% Thus, footnote handling in right-to-left context sometimes needs manual intervention. This is described in what follows.
-%
-% \subsection{Horizontal footnote position}
-%
-% When right-to-left languages are used, the \cmd\footnote\ command becomes sensitive to the text directionality. The footnote is
-% always placed on the side that is currently the origin of direction: on the left side of the page in LTR paragraphs and
-% on the right in RTL paragraphs.
-%
-% For cases where this is not desired, two additional footnote commands are provided: \Cmd\RTLfootnote and \Cmd\LTRfootnote.
-% \cmd\LTRfootnote\ always places the footnote on the left side, notwithstanding the current
-% directionality. Likewise, \cmd\RTLfootnote\ always places it on the right side. Like \cmd\footnote, \cmd\RTLfootnote\
-% and \cmd\LTRfootnote\ provide an optional argument to customize the number.
-%
-%
-% \subsection{Footnote rule length and position}
-%
-% The default placement of the footnote rule differs in \XeTeX\ and \LuaTeX\ output (this is due to differences in the \textsf{bidi}
-% and \textsf{luabidi} packages). With \XeTeX, footnote rules are always placed left, which is often wrong in RTL context.
-% With \LuaTeX, by contrast, the rule is placed always right if the main language is a right-to-left language, and always left
-% if the main language is a left-to-right language, which is the right thing in many cases.
-%
-% In both cases, you can change the default behavior as follows:
-% \begin{itemize}
-% \item Put \Cmd\leftfootnoterule in the preamble to have all rules left-aligned.
-% \item Put \Cmd\rightfootnoterule in the preamble to have all rules right-aligned.
-% \item Put \Cmd\autofootnoterule in the preamble to have automatic placement depending on the context (see below for elaboration).
-% \item Put \Cmd\textwidthfootnoterule in the preamble to have a rule that spans the whole text width.
-% \end{itemize}
-% With \cmd\autofootnoterule, the first footnote on the current page determines the placement. Note that this automatic can fail with
-% footnotes at page boundaries that differ in directionality from the first footnote on the page. You can work around such cases by switching to \cmd\rightfootnoterule\ or \cmd\leftfootnoterule\ on these pages.
-%
-% Note also that the rule switches might interfere in bad ways with packages or classes that redefine footnotes themselves. This is also the reason
-% why \cmd\autofootnoterule\ is not used by default.
-%
-% \condbreak{5\baselineskip}
-% \section{Calendars}
-%
-% \subsection{Hebrew calendar (hebrewcal.sty)}
-% The package \file{hebrewcal.sty} is almost a verbatim copy of \file{hebcal.sty}
-% that comes with \pkg{babel}.
-% The command \Cmd\Hebrewtoday\ formats the current date in the Hebrew calendar
-% (depending of the current writing direction this will automatically set either
-% in Hebrew script or in roman transliteration).
-%
-% \subsection{Islamic calendar (hijrical.sty)}
-% This package computes dates in the lunar Islamic (Hijra) calendar.\footnote{ %
-% It makes use of the arithmetical algorithm in chapter 6 of
-% Reingold \& Gershowitz, \textit{Calendrical calculation: the Millenium edition}
-% (Cambridge University Press, 2001).\label{reingold}}
-% It provides two macros for the end-user.
-% The command
-% \displaycmd{\HijriFromGregorian\marg{year}\marg{month}\marg{day}}{\HijriFromGregorian}
-% sets the counters ¦Hijriday¦, ¦Hijrimonth¦ and ¦Hijriyear¦.
-% \Cmd\Hijritoday\ formats the Hijri date for the current day.
-% This command is now locale-aware\new{1.1.1}: its output will differ depending on the
-% currently active language. Presently \pkg{polyglossia}’s language definition files
-% for Arabic, Farsi, Urdu, Turkish and Malay provide a localized version of \cmd\Hijritoday.
-% If the formatting macro for the current language is undefined, the Hijri date will be formatted
-% in Arabic or in roman transliteration, depending of the current writing direction.
-% You can define a new format or redefine one with the command
-% \displaycmd{\DefineHijriDateFormat\marg{lang}\marg{code}.}{\DefineHijriDateFormat}
-%
-% The command \cmd\Hijritoday\ also accepts an optional argument to add or subtract a correction
-% (in days) to the date computed by the arithmetical algorithm.\footnote{ %
-% The Islamic calendar is indeed a purely lunar calendar based on the observation
-% of the first visibility of the lunar crescent at the beginning of the lunar month,
-% so there can be differences between different localities, as well as between
-% civil and religious authorities.}
-% For instance if \cmd\Hijritoday\ yields the date “7 Rajab 1429” (which is the date that was
-% displayed on the front page of \href{http://www.aljazeera.net}{aljazeera.net} on
-% 11th July 2008), ¦\Hijritoday[1]¦ would rather print “8 Rajab 1429” (the date
-% indicated the same day on the site \href{http://www.gulfnews.com}{gulfnews.com}).
-%
-% \subsection{Farsi (jalālī) calendar (farsical.sty)}
-% This package is an almost verbatim copy of ¦Arabiftoday.sty¦ (in the \pkg{Arabi} package),
-% itself a slight modification of ¦ftoday.sty¦ in Farsi\TeX.\footnote{ %
-% One day we may rewrite \pkg{farsical} from scratch using the algorithm in
-% Reingold \& Gershowitz (ref.~n.\,\ref{reingold}).}
-% Here we have renamed the command \cmd\ftoday\ to
-% \Cmd\Jalalitoday.
-% Example: today is \Jalalitoday.
-%
-%
-% \section{Auxiliary commands}
-%
-% The macro \displaycmd{\charifavailable\marg{char code}\marg{substitution}}{\charifavailable}\new{1.47} checks whether
-% the character with the specified \meta{char code} (\ie unicode utf-16 code without preceding ¦0x¦) exists in
-% the current font. If so, the character is printed, if not, the \meta{substitution} is printed.
-%
-% Example: ¦\charifavailable{1E9E}{SS}¦ prints the capital version of the German letter ⟨ß⟩ if available
-% (\ie \charifavailable{1E9E}{SS}), else it prints the substitution digraph SS.
-%
-%
-% \section{Accessing language information}
-%
-% The following is specifically relevant to package authors who need information about the languages in use.
-% In order to get such information, \pkg{polyglossia} provides the following macros:
-%
-% \begin{itemize}
-% \item \Cmd\languagename\ stores the currently active (polyglossia) language name.
-% \item \Cmd\mainlanguagename\ stores the (polyglossia) language name of the main document language.
-% \item \Cmd\languagevariant\ stores the language variant if set. The macro is empty if no variant has been set.
-% \item \Cmd\mainlanguagevariant\ stores the language variant of the main document language if set.
-% The macro is empty if no variant has been set.
-% \item \Cmd\babelname\ stores the corresponding name of the currently active language (variant) in \pkg{babel}.
-% This might not only be useful if you want to support both \pkg{babel} and \pkg{polyglossia}, but also
-% since this name is unique for a given language variety (\eg ngerman, german, swissgerman etc.).
-% Note that this macro is also defined for languages that are not supported in \pkg{babel}. In that
-% case, they are equal to the polyglossia language name.
-% \item \Cmd\mainbabelname\ analogously stores the name of document's main language (variant) in \pkg{babel}.
-% \item \Cmd{\languageid\marg{type}}\new{1.47} stores the identifier tag of the current language. Currently supported \meta{types}:
-% \begin{itemize}
-% \item ¦bcp-47¦ (alias ¦bcp47¦): IETF BCP-47 language identifier
-% \end{itemize}
-% \item \Cmd{\mainlanguageid\marg{type}}\new{1.47} stores identifier tag of the main language. Currently supported \meta{types}:
-% see \cmd\languageid.
-% \end{itemize}
-% \bigskip
-%
-% \noindent If you want to have a full list of loaded languages/variants, use the following macros:
-% \begin{itemize}
-% \item \Cmd{\xpg@loaded}\ stores a comma-separated list of all loaded languages (polyglossia name)
-% \item \Cmd{\xpg@vloaded}\ stores a comma-separated list of all loaded variants
-% \item \Cmd{\xpg@bloaded}\ stores a comma-separated list of \pkg{babel} names of all language variants
-% \item \Cmd{\xpg@bcp@loaded}\new{1.47}\ stores a comma-separated list of the BCP-47 IDs of all language variants
-% \end{itemize}
-% \bigskip
-%
-% \noindent Whether a language is loaded can be tested by
-% \displaycmd{\iflanguageloaded\marg{lang}\marg{true}\marg{false}}{\iflanguageloaded}
-% where \texttt{\meta{lang}} is a \pkg{polyglossia} language name, by
-% \displaycmd{\ifbabellanguageloaded\marg{lang}\marg{true}\marg{false}}{\ifbabellanguageloaded}
-% where \texttt{\meta{lang}} is a \pkg{babel} language name (see table~\ref{tab:bbllang} on p.~\pageref{tab:bbllang}), or by
-% \displaycmd{\iflanguageidloaded\marg{type}\marg{id}\marg{true}\marg{false}}{\iflanguageidloaded}\new{1.47}
-% where \meta{type} is a supported language id type (such as ¦bcp-47¦) and \meta{id} is a language id
-% (such as ¦en-US¦; see table~\ref{tab:BCP47-polyglossia} on p.~\pageref{tab:BCP47-polyglossia}).
-% \bigskip
-%
-% \noindent Finally, if you want to know whether a specific language option has been set, you can use
-% \displaycmd{\iflanguageoption\marg{lang}\marg{opt. key}\marg{opt. value}\marg{true}\marg{false}}{\iflanguageoption}\new{1.47}
-%
-% \section{Acknowledgements (by François Charette)}
-% \pkg{Polyglossia} is notable for being a recycle box of previous contributions
-% by other people. I take this opportunity to thank the following individuals,
-% whose splendid work has made my task almost trivial in comparision: \TA{Johannes
-% Braams} and the numerous contributors to the \pkg{babel} package (in particular
-% \TA{Boris Lavva} and others for its Hebrew support), \TA{Alexej Kryukov} (\pkg{antomega}),
-% \TA{Will Robertson} (\pkg{fontspec}), \TA{Apostolos Syropoulos} (\pkg{xgreek}), \TA{Youssef Jabri}
-% (\pkg{arabi}), and \TA{Vafa Khalighi} (\pkg{xepersian} and \pkg{bidi}).
-% The work of \TA{Mojca Miklavec} and \TA{Arthur Reutenauer} on hyphenation patterns with their package
-% \pkg{hyph-utf8} is of course invaluable. I should also thank other
-% individuals for their assistance in supporting specific languages: \TA{Yves Codet}
-% (Sanskrit), \TA{Zdenĕk Wagner} (Hindi), \TA{Mikhal Oren} (Hebrew), \TA{Sergey Astanin} (Russian),
-% \TA{Khaled Hosny} (Arabic), \TA{Sertaç Ö. Yıldız} (Turkish), \TA{Kamal Abdali} (Urdu),
-% and several other members of the \XeTeX\ user community, notably \TA{Enrico Gregorio}, who
-% has sent me many useful suggestions and corrections and contributed the \cmd\newXeTeXintercharclass\
-% mechanism in xelatex.ini which is now used by polyglossia.
-% More recently, \TA{Kevin Godby} of the \href{http://ubuntu-manual.org}{Ubuntu Manual} project has
-% contributed very useful feedback, bug hunting and, with the help of translators,
-% new language definition files for Asturian, Lithuanian, Occitan, Bengali, Malayalam, Marathi, Tamil, and Telugu.
-% It is particularly heartening to realize that this package is used to typeset a widely-read
-% document in dozens of different languages!
-% Support for Lao was also added thanks to \TA{Brian Wilson}.
-% I also thank \TA{Alan Munn} for kindly proof-reading the penultimate version of this documentation.
-% And of course my gratitude also goes to \TA{Jonathan Kew}, the formidable author of \XeTeX!
-%
-% \section{More acknowledgements (by the current development team)}
-% Many thanks to all the people who have contributed bugfixes and new features to \pkg{polyglossia}
-% since we took over.
-% In alphabetical order: \TA{Ignas Anikevicius}, \TA{Sina Ahmadi}, \TA{Wouter Bolsterlee}, \TA{Christian Buhtz},
-% \TA{Zgarbul Andrey}, \TA{Oleg Domanov}, \TA{Philipp Gesang}, \TA{Kevin Godby}, \TA{Enrico Gregorio},
-% \TA{Khaled Hosny}, \TA{Najib Idrissi}, user \TA{julroy67}, \TA{Dohyun Kim}, \TA{Phil Kime}, \TA{Mike Kroutikov},
-% \TA{Ivan Kokan}, \TA{Caleb Maclennan}, \TA{José Mancera}, \TA{Yevgen Pogribnyi}, \TA{Will Robertson}, \TA{Maïeul Rouquette},
-% \TA{Elie Roux}, \TA{Hugo Roy}, \TA{Guy Rutenberg}, \TA{Philipp Stephani}, \TA{Niranjan Tambe}, \TA{Keno Wehr},
-% \TA{Dominik Wujastyk}, \TA{Sertaç Ö. Yıldız}, \TA{Maksim Zholudev}, \TA{Yan Zhou}, and \TA{Stefan Zlatinov}.
-% Their respective contributions can be identified from the contributor statistics on
-% \href{https://github.com/reutenauer/polyglossia/graphs/contributors}{GitHub}.
-%
-% Among the ones who sent contributions directly to us we would like to especially thank
-% \TA{Claudio Beccari}, the indefatigable champion of Romance languages, and beyond! Furthermore,
-% kudos go to \TA{Moritz Wemheuer} (of \pkg{biblatex}) who has helped a lot to improve \pkg{polyglossia} interaction
-% with \pkg{biblatex} and \pkg{csquotes}.
-%
-% Not at least, we are very grateful for all bug reports and feature enhancement requests we received from
-% the numerous users we cannot list all here (but again, you can find all names on \href{https://github.com/reutenauer/polyglossia/issues?utf8=%E2%9C%93&q=is%3Aissue}{GitHub}).
-% Please go on with that, you are keeping \pkg{polyglossia} running!
-%
-%
-%
-%
-% \StopEventually{}
-% \section{Implementation}
-% \iffalse
-%<*gloss-acadien.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-acadien.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-acadien.ldf}[polyglossia: module for canadian (acadian) french]
-
-% We provide this as a babel alias
-
-\xpg@load@master@language{french}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-acadien.ldf>
-%<*gloss-aeb.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-aeb.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-aeb.ldf}[polyglossia: module for aeb (arabic)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{arabic}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-aeb.ldf>
-%<*gloss-af.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-af.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-af.ldf}[polyglossia: module for af (afrikaans)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{afrikaans}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-af.ldf>
-%<*gloss-afb.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-afb.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-afb.ldf}[polyglossia: module for afb (arabic)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{arabic}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-afb.ldf>
-%<*gloss-afrikaans.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-afrikaans.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-afrikaans.ldf}[polyglossia: module for afrikaans]
-
-\PolyglossiaSetup{afrikaans}{
- bcp47=af,
- hyphennames={afrikaans,dutch},
- hyphenmins={2,2},
- langtag=AFK,
- frenchspacing=true,
- fontsetup=true,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{afrikaans}{af}
-
-\define@boolkey{afrikaans}[afrikaans@]{babelshorthands}[true]{}
-
-% Register default options
-\xpg@initialize@gloss@options{afrikaans}{babelshorthands=false}
-
-\ifsystem@babelshorthands
- \setkeys{afrikaans}{babelshorthands=true}
-\else
- \setkeys{afrikaans}{babelshorthands=false}
-\fi
-
-\ifcsundef{initiate@active@char}{%
- \input{babelsh.def}%
- \initiate@active@char{"}%
- \shorthandoff{"}%
-}{}
-
-\def\afrikaans@shorthands{%
- \bbl@activate{"}%
- \def\language@group{afrikaans}%
- \declare@shorthand{afrikaans}{"-}{\nobreak-\bbl@allowhyphens}
- \declare@shorthand{afrikaans}{"~}{\textormath{\leavevmode\hbox{-}}{-}}
- \declare@shorthand{afrikaans}{"|}{%
- \textormath{\discretionary{-}{}{\kern.03em}}{}}
- \declare@shorthand{afrikaans}{""}{\hskip\z@skip}
- \declare@shorthand{afrikaans}{"/}{\textormath
- {\bbl@allowhyphens\discretionary{/}{}{/}\bbl@allowhyphens}{}}%
- \def\-{\bbl@allowhyphens\discretionary{-}{}{}\bbl@allowhyphens}%
-}
-
-\def\noafrikaans@shorthands{%
- \@ifundefined{initiate@active@char}{}{\bbl@deactivate{"}}%
-}
-
-\def\captionsafrikaans{%
- \def\prefacename{Voorwoord}%
- \def\refname{Verwysings}%
- \def\abstractname{Samevatting}%
- \def\bibname{Bibliografie}%
- \def\chaptername{Hoofstuk}%
- \def\appendixname{Bylae}%
- \def\contentsname{Inhoudsopgawe}%
- \def\listfigurename{Lys van figure}%
- \def\listtablename{Lys van tabelle}%
- \def\indexname{Inhoud}%
- \def\figurename{Figuur}%
- \def\tablename{Tabel}%
- \def\partname{Deel}%
- \def\enclname{Bylae(n)}%
- \def\ccname{a.\,a.}%
- \def\headtoname{Aan}%
- \def\pagename{Bladsy}%
- \def\seename{sien}%
- \def\alsoname{sien ook}%
- \def\proofname{Bewys}%
-% \def\glossaryname{}%
-}
-
-\def\dateafrikaans{%
- \def\today{\number\day~\ifcase\month\or
- Januarie\or Februarie\or Maart\or April\or Mei\or Junie\or
- Julie\or Augustus\or September\or Oktober\or November\or
- Desember\fi
- \space \number\year}%
-}
-
-\def\noextras@afrikaans{%
- \noafrikaans@shorthands%
-}
-
-\def\blockextras@afrikaans{%
- \ifafrikaans@babelshorthands\afrikaans@shorthands\fi%
-}
-
-\def\inlineextras@afrikaans{%
- \ifafrikaans@babelshorthands\afrikaans@shorthands\fi%
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-afrikaans.ldf>
-%<*gloss-albanian.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-albanian.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-albanian.ldf}[polyglossia: module for albanian]
-
-\PolyglossiaSetup{albanian}{
- bcp47=sq,
- hyphennames={albanian},
- langtag=SQI,
- hyphenmins={2,2},
- indentfirst=true,
- fontsetup=true,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{albanian}{sq}
-
-\def\captionsalbanian{%
- \def\refname{Referencat}%
- \def\abstractname{Përmbledhja}%
- \def\bibname{Bibliografia}%
- \def\prefacename{Parathenia}%
- \def\chaptername{Kapitulli}%
- \def\appendixname{Shtesa}%
- \def\contentsname{Përmbajta}%
- \def\listfigurename{Figurat}%
- \def\listtablename{Tabelat}%
- \def\indexname{Indeksi}%
- \def\figurename{Figura}%
- \def\tablename{Tabela}%
- %\def\thepart{}%
- \def\partname{Pjesa}%
- \def\pagename{Faqe}%
- \def\seename{shiko}%
- \def\alsoname{shiko dhe}%
- %\def\enclname{}%
- %\def\ccname{}%
- %\def\headtoname{}%
- \def\proofname{Vërtetim}%
- \def\glossaryname{Përhasja e Fjalëve}%
- }
-\def\datealbanian{%
- \def\today{{\number\day~\ifcase\month\or
- Janar\or Shkurt\or Mars\or Prill\or Maj\or
- Qershor\or Korrik\or Gusht\or Shtator\or Tetor\or Nëntor\or
- Dhjetor\fi \space \number\year}}}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-albanian.ldf>
-%<*gloss-am.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-am.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-am.ldf}[polyglossia: module for am (amharic)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{amharic}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-am.ldf>
-%<*gloss-american.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-american.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-american.ldf}[polyglossia: module for american english]
-
-% We provide this as a babel alias
-
-\xpg@load@master@language{english}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-american.ldf>
-%<*gloss-amharic.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-amharic.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-amharic.ldf}[polyglossia: module for amharic]
-\PolyglossiaSetup{amharic}{
- bcp47=am,
- script=Ethiopic,
- scripttag=ethi,
- langtag=AMH,
- hyphennames={amharic,nohyphenation},
- %hyphenmins={2,2},
- fontsetup=true,
- %TODO localalph=ethnum
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{amharic}{am}
-
-\def\captionsamharic{%
- \def\refname{የነሥ ጹሁፍ ምንጭ}%
- \def\abstractname{አኅጽተሮ ጽሁፍ}%
- \def\bibname{ቢዋ መጽሃፍት}%
- \def\prefacename{መቅድም}%
- \def\chaptername{ክፍል}%
- \def\appendixname{መድበል}%
- \def\contentsname{ይዘት}%
- \def\listfigurename{የሥዕችሎ ማውጫ}%
- \def\listtablename{የሰንጠዥረ ማውጫ}%
- \def\indexname{ምህጻር ቃል}%
- \def\figurename{ሥዕል}%
- \def\tablename{ሰንጠረዥ}%
- %\def\thepart{}%
- \def\partname{ንዑስ ክፍል}%
- \def\pagename{ገጽ}%
- \def\seename{ይመልከቱ}%
- \def\alsoname{ይህምን ይመልከቱ}%
- \def\enclname{አባሪዎች}%
- \def\ccname{ግልባጭ}%
- \def\headtoname{ለ}%
- \def\proofname{ማረጋገጫ}%
- %\def\glossaryname{<++>}%
- }
-
-\newcommand{\eth@monthname}[1]{\ifcase#1\or
- መስከረም\or
- ጥቅምት\or
- ህዳር\or
- ታህሳስ\or
- ጥር\or
- የካቲት\or
- መጋቢት\or
- ሚያዝያ\or
- ግንቦት\or
- ሰኔ\or
- ሐምሌ\or
- ነሐሴ\or
- ጰጉሜን\fi
-}
-\newcount\ethcnt@temp
-\newcount\ethcnt@modtemp
-\newcount\ethcnt@leap
-\newcount\ethcnt@yminone
-\newcount\ethcnt@days
-\newcount\ethcnt@jdn
-\newcount\ethcnt@cycle
-\newcount\ethcnt@ethdays
-\newcount\ethcnt@ethyear
-\newcount\ethcnt@ethmonth
-\newcount\ethcnt@ethday
-\newcommand{\eth@modulo}[2]{%
- \ethcnt@modtemp=#1%
- \divide\ethcnt@modtemp by #2%
- \multiply\ethcnt@modtemp by #2%
- \advance#1 by -\ethcnt@modtemp
-}
-\def\dateamharic{%
- \def\today{{%
- \ethcnt@yminone=\year
- \advance\ethcnt@yminone by -1
- \ethcnt@leap=\year
- \divide\ethcnt@leap by 4
- \ethcnt@temp=\ethcnt@yminone
- \divide\ethcnt@temp by 4
- \advance\ethcnt@leap by -\ethcnt@temp
- \ethcnt@temp=\year
- \divide\ethcnt@temp by 100
- \advance\ethcnt@leap by -\ethcnt@temp
- \ethcnt@temp=\ethcnt@yminone
- \divide\ethcnt@temp by 100
- \advance\ethcnt@leap by \ethcnt@temp
- \ethcnt@temp=\year
- \divide\ethcnt@temp by 400
- \advance\ethcnt@leap by \ethcnt@temp
- \ethcnt@temp=\ethcnt@yminone
- \divide\ethcnt@temp by 400
- \advance\ethcnt@leap by -\ethcnt@temp
- \ifnum\month<3
- \ethcnt@days=\month
- \advance\ethcnt@days by -1
- \multiply\ethcnt@days by 31
- \advance\ethcnt@days by \day
- \advance\ethcnt@days by -1
- \else
- \ethcnt@days=\month
- \advance\ethcnt@days by -1
- \multiply\ethcnt@days by 30
- \advance\ethcnt@days by \day
- \advance\ethcnt@days by \ethcnt@leap
- \advance\ethcnt@days by -3
- \ethcnt@temp=\month
- \multiply\ethcnt@temp by 3
- \advance\ethcnt@temp by -2
- \divide\ethcnt@temp by 5
- \advance\ethcnt@days by \ethcnt@temp
- \fi
- \ethcnt@jdn=\ethcnt@days
- \advance\ethcnt@jdn by 1721426
- \ethcnt@temp=\ethcnt@yminone
- \multiply\ethcnt@temp by 365
- \advance\ethcnt@jdn by \ethcnt@temp
- \ethcnt@temp=\ethcnt@yminone
- \divide\ethcnt@temp by 4
- \advance\ethcnt@jdn by \ethcnt@temp
- \ethcnt@temp=\ethcnt@yminone
- \divide\ethcnt@temp by 100
- \advance\ethcnt@jdn by -\ethcnt@temp
- \ethcnt@temp=\ethcnt@yminone
- \divide\ethcnt@temp by 400
- \advance\ethcnt@jdn by \ethcnt@temp
- \ethcnt@cycle=\ethcnt@jdn
- \advance\ethcnt@cycle by -1723856
- \eth@modulo{\ethcnt@cycle}{1461}%
- \ethcnt@ethdays=\ethcnt@cycle
- \eth@modulo{\ethcnt@ethdays}{365}%
- \ethcnt@temp=\ethcnt@cycle
- \divide\ethcnt@temp by 1460
- \multiply\ethcnt@temp by 365
- \advance\ethcnt@ethdays by \ethcnt@temp
- \ethcnt@ethyear=\ethcnt@jdn
- \advance\ethcnt@ethyear by -1723856
- \divide\ethcnt@ethyear by 1461
- \multiply\ethcnt@ethyear by 4
- \ethcnt@temp=\ethcnt@cycle
- \divide\ethcnt@temp by 365
- \advance\ethcnt@ethyear by \ethcnt@temp
- \divide\ethcnt@cycle by 1460
- \advance\ethcnt@ethyear by -\ethcnt@cycle
- \ethcnt@ethmonth=\ethcnt@ethdays
- \divide\ethcnt@ethmonth by 30
- \advance\ethcnt@ethmonth by 1
- \ethcnt@ethday=\ethcnt@ethdays
- \eth@modulo{\ethcnt@ethday}{30}%
- \advance\ethcnt@ethday by 1%
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \eth@monthname{\ethcnt@ethmonth}\relax\space%
- \number\ethcnt@ethday\relax\space%
- \number\ethcnt@ethyear%
- }}%
-}
-
-\def\ethiop#1{\expandafter\@ethiop\csname c@#1\endcsname}
-\def\@ethiop#1{{%
- \ifnum#1<1\relax\ethnum@err{#1}%
- \else\ifnum#1<10\relax\expandafter\ethnum@one\number #1%
- \else\ifnum#1<100\relax\expandafter\ethnum@two\number #1%
- \else\ifnum#1<1000\relax\expandafter\ethnum@three\number #1%
- \else\ifnum#1<10000\relax\expandafter\ethnum@four\number #1%
- \else\ifnum#1<100000\relax\expandafter\ethnum@five\number #1%
- \else\ifnum#1<1000000\relax\expandafter\ethnum@six\number #1%
- \else%
- \ethnum@err%
- \number#1%
- \fi\fi\fi\fi\fi\fi\fi%
-}}
-\let\ethnum\@ethiop
-\newcommand{\ethnum@tens}[1]{%
- \ifcase#1\or ፲\or ፳\or ፴%
- \or ፵\or ፶\or ፷%
- \or ፸\or ፹\or ፺\fi%
-}%
-\newcommand{\ethnum@one}[1]{%
- \ifcase#1\or ፩\or ፪\or ፫%
- \or ፬\or ፭\or ፮%
- \or ፯\or ፰\or ፱\fi%
-}%
-\newcommand{\ethnum@two}[1]{%
- \ethnum@tens#1%
- \ethnum@one%
-}
-\newcommand{\ethnum@three}[1]{%
- \ifnum#1>1\relax\ethnum@one#1\fi%
- \ifnum#1>0\relax ፻\fi%
- \ethnum@two%
-}
-\newcommand{\ethnum@four}[1]{%
- \ethnum@tens#1%
- \ifnum#1>0\relax ፻\fi%
- \ethnum@three%
-}
-\newcommand{\ethnum@five}[1]{%
- \ifnum#1>1\relax\ethnum@one#1\fi%
- \ifnum#1>0\relax ፼\fi%
- \ethnum@four%
-}
-\newcommand{\ethnum@six}[1]{%
- \ethnum@tens#1%
- \ifnum#1>0\relax ፼\fi%
- \ethnum@five%
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-amharic.ldf>
-%<*gloss-apd.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-apd.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-apd.ldf}[polyglossia: module for apd (arabic)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{arabic}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-apd.ldf>
-%<*gloss-ar-IQ.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-ar-IQ.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-ar-IQ.ldf}[polyglossia: module for ar-IQ (arabic)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{arabic}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-ar-IQ.ldf>
-%<*gloss-ar-JO.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-ar-JO.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-ar-JO.ldf}[polyglossia: module for ar-JO (arabic)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{arabic}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-ar-JO.ldf>
-%<*gloss-ar-LB.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-ar-LB.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-ar-LB.ldf}[polyglossia: module for ar-LB (arabic)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{arabic}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-ar-LB.ldf>
-%<*gloss-ar-MR.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-ar-MR.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-ar-MR.ldf}[polyglossia: module for ar-MR (arabic)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{arabic}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-ar-MR.ldf>
-%<*gloss-ar-PS.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-ar-PS.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-ar-PS.ldf}[polyglossia: module for ar-PS (arabic)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{arabic}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-ar-PS.ldf>
-%<*gloss-ar-SY.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-ar-SY.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-ar-SY.ldf}[polyglossia: module for ar-SY (arabic)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{arabic}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-ar-SY.ldf>
-%<*gloss-ar-YE.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-ar-YE.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-ar-YE.ldf}[polyglossia: module for ar-YE (arabic)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{arabic}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-ar-YE.ldf>
-%<*gloss-ar.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-ar.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-ar.ldf}[polyglossia: module for ar (arabic)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{arabic}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-ar.ldf>
-%<*gloss-arabic.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-arabic.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-arabic.ldf}[polyglossia: module for arabic]
-\ifluatex
- \xpg@warning{Arabic is not supported with LuaTeX.\MessageBreak
-I will proceed with the compilation, but\MessageBreak
-the output is not guaranteed to be correct\MessageBreak
-and may look very wrong.}
-\fi
-\RequireBidi
-\RequirePackage{arabicnumbers}
-\RequirePackage{hijrical}
-
-\PolyglossiaSetup{arabic}{
- bcp47=ar,
- script=Arabic,
- direction=RL,
- langtag=ARA,
- scripttag=arab,
- hyphennames={nohyphenation},
- fontsetup=true,
- envname=Arabic,
- localnumeral=arabicnumerals
- %TODO localalph={abjad,abjad}
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{arabic}{ar}
-\setlanguagealias*[locale=mashriq]{arabic}{ar-IQ}
-\setlanguagealias*[locale=default]{arabic}{ar-YE}
-\setlanguagealias*[locale=mashriq]{arabic}{ar-LB}
-\setlanguagealias*[locale=mashriq]{arabic}{ar-JO}
-\setlanguagealias*[locale=default]{arabic}{afb}
-\setlanguagealias*[locale=mauritania]{arabic}{ar-MR}
-\setlanguagealias*[locale=default]{arabic}{arz}
-\setlanguagealias*[locale=morocco]{arabic}{ary}
-\setlanguagealias*[locale=algeria]{arabic}{arq}
-\setlanguagealias*[locale=tunisia]{arabic}{aeb}
-\setlanguagealias*[locale=mashriq]{arabic}{ar-SY}
-\setlanguagealias*[locale=libya]{arabic}{ayl}
-\setlanguagealias*[locale=default]{arabic}{apd}
-\setlanguagealias*[locale=mashriq]{arabic}{ar-PS}
-
-\newif\ifeastern@numerals
-\def\tmp@mashriq{mashriq}
-\def\tmp@maghrib{maghrib}
-\define@key{arabic}{numerals}[mashriq]{%
- \def\@tmpa{#1}%
- \ifx\@tmpa\tmp@mashriq%
- \eastern@numeralstrue%
- \else
- \ifx\@tmpa\tmp@maghrib\eastern@numeralsfalse\fi%
- \fi}
-
-%this is needed for \abjad in arabicnumbers.sty
-\def\tmp@true{true}
-\define@key{arabic}{abjadjimnotail}[true]{%
- \def\@tmpa{#1}%
- \ifx\@tmpa\tmp@true\abjad@jim@notailtrue%
- \else
- \abjad@jim@notailfalse
- \fi}
-
-\def\tmp@morocco{morocco}
-\def\tmp@algeria{algeria}
-\define@key{arabic}{locale}[default]{%
- \def\@tmpa{#1}%
- \ifx\@tmpa\tmp@morocco%
- \eastern@numeralsfalse%
- \SetLanguageKeys{arabic}{bcp47=ary}%
- \else
- \ifx\@tmpa\tmp@algeria%
- \eastern@numeralsfalse%
- \SetLanguageKeys{arabic}{bcp47=arq}%
- \fi%
- \fi%
- \gdef\@@arabic@month{\@arabic@month{#1}}}
-
-\newif\if@hijrical
-\def\tmp@hijri{hijri}
-\def\tmp@islamic{islamic}
-\define@key{arabic}{calendar}[gregorian]{%
- \def\@tmpa{#1}%
- \ifx\@tmpa\tmp@hijri\@hijricaltrue%
- \else
- \ifx\@tmpa\tmp@islamic\@hijricaltrue%
- \else\@hijricalfalse%
- \fi
- \fi}
-
-\define@key{arabic}{hijricorrection}[0]{%
- \gdef\@hijri@correction{#1}}%
-
-% Register default options
-\xpg@initialize@gloss@options{arabic}{locale=default,calendar=gregorian,numerals=mashriq,hijricorrection=0,abjadjimnotail=false}
-% Register alias options
-\xpg@set@alias@values{arabic}{calendar}{islamic}{hijri}
-
-\def\arabicgregmonth@default#1{\ifcase#1%
- % Egypt, Sudan, Yemen and Golf states
- \or يناير\or فبراير\or مارس\or أبريل\or مايو\or يونيو\or يوليو\or أغسطس\or سبتمبر\or أكتوبر\or نوفمبر\or ديسمبر\fi}
-\def\arabicgregmonth@mashriq#1{\ifcase#1%
- % Iraq Syria Jordan Lebanon Palestine
- \or كانون الثاني\or شباط\or آذار\or نيسان\or أيار\or حزيران\or تموز\or آب\or أيلول\or تشرين الأول\or تشرين الثاني\or كانون الأول\fi}
-\def\arabicgregmonth@libya#1{\ifcase#1%
- %Lybia «تعرف في ليبيا بأسماء عربية وضعها معمر القذافي ترمز إلى فصول السنة وبعض الشخصيات التاريخية» (ar.wikipedia.org)
- \or أي النار\or النوار\or الربيع\or الطير\or الماء\or الصيف\or ناصر\or هانيبال\or الفاتح\or التمور\or الحرث\or الكانون\fi}
-\def\arabicgregmonth@morocco#1{\ifcase#1%
- \or يناير\or فبراير\or مارس\or أبريل\or ماي\or يونيو\or يوليوز\or غشت\or شتنبر\or أكتوبر\or نونبر\or دجنبر\fi}
-\def\arabicgregmonth@algeria#1{\ifcase#1%
- % Tunisia and Algeria
- \or جانفي\or فيفري\or مارس\or أفريل\or ماي\or جوان\or جويلية\or أوت\or سبتمبر\or أكتوبر\or نوفمبر\or ديسمبر\fi}
-\let\arabicgregmonth@tunisia\arabicgregmonth@algeria
-\def\arabicgregmonth@mauritania#1{\ifcase#1%
- \or يناير\or فبراير\or مارس\or إبريل\or مايو\or يونيو\or يوليو\or أغشت\or شتمبر\or أكتوبر\or نوفمبر\or دجمبر\fi}
-
-\def\@arabic@month#1{\ifcsdef{arabicgregmonth@#1}{\expandafter\csname arabicgregmonth@#1\endcsname}%
-{\xpg@warning{Option `locale=#1' is not defined for Arabic: using `default' instead}%
-\arabicgregmonth@default}}
-
-%\Hijritoday is now locale-aware and will format the date with this macro:
-\DefineFormatHijriDate{arabic}{\@ensure@RTL{\arabicnumber{\value{Hijriday}}%
- \space\HijriMonthArabic{\value{Hijrimonth}}\space\arabicnumber{\value{Hijriyear}}}}
-
-\def\captionsarabic{%
- \def\prefacename{\@ensure@RTL{مدخل}}%
- \def\refname{\@ensure@RTL{المراجع}}%
- \def\abstractname{\@ensure@RTL{ملخص}}%
- \def\bibname{\@ensure@RTL{المصادر}}%
- \def\chaptername{\@ensure@RTL{باب}}%
- \def\appendixname{\@ensure@RTL{الملاحق}}%
- \def\contentsname{\@ensure@RTL{المحتويات}}%
- %\def\contentsname{\@ensure@RTL{الفهرس}}%
- \def\listfigurename{\@ensure@RTL{قائمة الأشكال}}%
- \def\listtablename{\@ensure@RTL{قائمة الجداول}}%
- \def\indexname{\@ensure@RTL{الفهرس}}%
- \def\figurename{\@ensure@RTL{شكل}}%
- \def\tablename{\@ensure@RTL{جدول}}%
- \def\partname{\@ensure@RTL{القسم}}%
- \def\enclname{\@ensure@RTL{المرفقات}}%<-- Needs translation
- \def\ccname{\@ensure@RTL{نسخة ل‬}}% <<
- \def\headtoname{\@ensure@RTL{إلى}}%<-- Needs translation
- \def\pagename{\@ensure@RTL{صفحة}}%
- \def\seename{\@ensure@RTL{راجع}}%\alefhamza\nun\za\ra
- \def\alsoname{\@ensure@RTL{راجع أيضًا}}%<<\alefhamza\nun\za\ra
- \def\proofname{\@ensure@RTL{برهان}}%
- \def\glossaryname{\@ensure@RTL{قاموس}}%<<
-}
-\def\datearabic{%
- \def\today{%
- \if@hijrical%
- \Hijritoday[\@hijri@correction]%
- \else%
- \if@RTL%
- \arabicnumber\day\space\@@arabic@month{\month}%
- \space\arabicnumber\year%
- \else% in LR environment we format the gregorian date within \textenglish
- \ifcsdef{english@loaded}{\textenglish{\today}}%else US format
- {\normalfontlatin\ifcase\month\or January\or February\or March\or April\or May\or June\or%
- July\or August\or September\or October\or November\or December\fi%
- \space\number\day,\space\number\year}%
- \fi%
- \fi}}
-
-
-\newcommand{\arabicnumerals}[2]{\arabicnumber{#2}}
-
-\def\arabicnumber#1{%
- \ifeastern@numerals
- \@ensure@dir{\arabicdigits{\number#1}}%
- \else
- \number#1%
- \fi}
-
-\def\@ornatebracearabic#1{\RL{\char"FD3F\@arabic#1\char"FD3E}}
-\def\@ornatebracealph#1{\RL{\char"FD3F\@alph#1\char"FD3E}}
-
-\def\abjadmaghribi#1{%
-\ifnum#1>1999\xpg@ill@value{#1}{abjad}%
-\else
- \ifnum#1<\z@\space\xpg@ill@value{#1}{abjad}%
- \else
- \ifnum#1<10\expandafter\abj@num@i\number#1%
- \else
- \ifnum#1<100\expandafter\abj@maghribi@num@ii\number#1%
- \else
- \ifnum#1<\@m\expandafter\abj@maghribi@num@iii\number#1%
- \else
- \ifnum#1<\@M\expandafter\abj@maghribi@num@iv\number#1%
- \fi
- \fi
- \fi
- \fi
- \fi
-\fi
-}
-
-%maghribi س -> ص ص -> ض ش -> س ض -> ظ ظ -> غ غ -> ش
-\def\abj@maghribi@num@ii#1{%
- \ifcase#1\or ي\or ك\or ل\or م\or ن%
- \or ص\or ع\or ف\or ض\fi
- \ifnum#1=\z@\abjad@zero\fi\abj@num@i}
-\def\abj@maghribi@num@iii#1{%
- \ifcase#1\or ق\or ر\or س\or ت\or ث%
- \or خ\or ذ\or ظ\or غ\fi
- \ifnum#1=\z@\fi\abj@maghribi@num@ii}
-\def\abj@maghribi@num@iv#1{%
- \ifcase#1\or ش\fi
- \ifnum#1=\z@\fi\abj@maghribi@num@iii}
-
-\def\arabic@numbers{%
- \let\@alph\abjad%
- \let\@Alph\abjad%
-}
-
-\def\noarabic@numbers{%
- \let\@alph\latin@alph%
- \let\@Alph\latin@Alph%
-}
-
-% Store original definition
-\let\xpg@save@arabic\@arabic
-
-\def\arabic@globalnumbers{%
- \let\@arabic\arabicnumber%
- \renewcommand\thefootnote{\localnumeral*{footnote}}%
- \renewcommand\theequation{\localnumeral*{equation}}%
-}
-
-\def\noarabic@globalnumbers{%
- \let\@arabic\xpg@save@arabic%
-}
-
-% Save original \MakeUppercase definition
-\let\xpg@save@MakeUppercase\MakeUppercase
-
-\def\blockextras@arabic{%
- \def\MakeUppercase##1{##1}%
- % TODO disable \@Roman and \@roman ?
-}
-
-\def\noextras@arabic{%
- % restore original \MakeUppercase definition
- \let\MakeUppercase\xpg@save@MakeUppercase
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-arabic.ldf>
-%<*gloss-armenian.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-armenian.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-armenian.ldf}[polyglossia: module for armenian]
-
-\PolyglossiaSetup{armenian}{
- bcp47=hy,
- script=Armenian,
- scripttag=armn,
- langtag=HYE,
- hyphennames={armenian},
- hyphenmins={2,2},
- fontsetup=true,
- localnumeral=armeniannumerals
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{armenian}{hy}
-
-\newif\if@eastern@armenian
-\@eastern@armenianfalse
-\define@choicekey*+{armenian}{variant}[\xpg@val\xpg@nr]{western,eastern}[western]{%
- \ifcase\xpg@nr\relax
- % western:
- \@eastern@armenianfalse%
- \or
- % eastern:
- \@eastern@armeniantrue%
- \fi
- \xpg@info{Option: Armenian, variant=\xpg@val}%
-}{\xpg@warning{Unknown Armenian variant `#1'}}
-
-\newif\if@armenian@numerals
-\@armenian@numeralsfalse
-\define@key{armenian}{numerals}[armenian]{%
- \ifstrequal{#1}{arabic}{\@armenian@numeralsfalse}{\@armenian@numeralstrue}%
-}
-
-% Register default options
-\xpg@initialize@gloss@options{armenian}{numerals=armenian,variant=western}
-
-% Taken from ArmTeX. Audit!
-\def\captionsarmenian{%
- \def\refname{Հղումներ}%
- \def\abstractname{Սեղմագիր}%
- \def\bibname{Գրականություն}%
- \def\prefacename{Նախաբան}%
- \def\chaptername{Գլուխ}%
- \def\appendixname{Հավելված}%
- \def\contentsname{Բովանդակություն}%
- \def\listfigurename{Նկարների ցանկ}%
- \def\listtablename{Աղյուսակների ցանկ}%
- \def\indexname{Առարկայական ցանկ}%
- \def\figurename{Նկար}%
- \def\tablename{Աղյուսակ}%
- \def\partname{Մաս}%
- \def\pagename{էջ}%
- \def\seename{տե՛ս}%
- \def\alsoname{տե՛ս նաեւ}%
- \def\enclname{Կից՝}%
- \def\ccname{Կրկնօրինակը՝}%
-% The \headtoname is empty: the typesetter should use the dative (trakan
-% holov) of the recipient's name.
- \def\headtoname{}%
- \def\proofname{Ապացույց}%
- \def\glossaryname{Տերմինների ցանկ}%
-}
-
-\def\date@western@armenian{%
- \def\today{\ifcase\month\or
- Յունուար\or
- Փետրուար\or
- Մարտ\or
- Ապրիլ\or
- Մայիս\or
- Յունիս\or
- Յուլիս\or
- Օգոստոս\or
- Սեպտեմբեր\or
- Հոկտեմբեր\or
- Նոյեմբեր\or
- Դեկտեմբեր\fi
- \number\day,\space\number\year}%
-}
-
-\def\date@eastern@armenian{%
- \def\today{\ifcase\month\or
- Հունվար\or
- Փետրվար\or
- Մարտ\or
- Ապրիլ\or
- Մայիս\or
- Հունիս\or
- Հուլիս\or
- Օգոստոս\or
- Սեպտեմբեր\or
- Հոկտեմբեր\or
- Նոյեմբեր\or
- Դեկտեմբեր\fi
- \number\day,\space\number\year}%
-}
-
-\def\datearmenian{%
- \if@eastern@armenian
- \date@eastern@armenian%
- \else
- \date@western@armenian%
- \fi
-}
-
-\newcommand{\armeniannumerals}[2]{%
- \if@armenian@numerals
- \armeniannumber{#2}%
- \else
- #2%
- \fi%
-}
-
-\def\armenian@numbers{%
- \if@armenian@numerals
- \def\armenian@alph##1{\expandafter\armeniannumeral\expandafter{\the##1}}%
- \let\@alph\armenian@alph%
- \fi%
-}
-
-\def\noarmenian@numbers{%
- \let\@alph\latin@alph%
- \let\armenian@alph\@undefined%
-}
-
-\def\armenian@globalnumbers{%
- \if@armenian@numerals
- \let\@arabic\armeniannumber%
- \renewcommand\thefootnote{\localnumeral*{footnote}}%
- \renewcommand\theequation{\localnumeral*{equation}}%
- \fi
-}
-
-% Store original definition
-\let\xpg@save@arabic\@arabic
-
-\def\noarmenian@globalnumbers{
- \let\@arabic\xpg@save@arabic%
-}
-
-\protected\def\armeniannumber#1{\expandafter\@armeniannumber\expandafter{\number#1}}
-\def\@armeniannumber#1{%
- \ifnum#1<\@ne\space\arm@ill@value{#1}%
- \else
- \ifnum#1<10\expandafter\arm@num@i\number#1%
- \else
- \ifnum#1<100\expandafter\arm@num@ii\number#1%
- \else
- \ifnum#1<\@m\expandafter\arm@num@iii\number#1%
- \else
- \ifnum#1<\@M\expandafter\arm@num@iv\number#1%
- \else
- \space\arm@ill@value{#1}%
- \fi
- \fi
- \fi
- \fi
- \fi
-}
-
-\let\armeniannumeral=\armeniannumber
-\def\arm@num@i#1{%
- \ifcase#1\or Ա\or Բ\or Գ\or Դ\or Ե\or Զ\or Է\or Ը\or Թ\fi}
-\def\arm@num@ii#1{%
- \ifcase#1\or Ժ\or Ի\or Լ\or Խ\or Ծ\or Կ\or Հ\or Ձ\or Ղ\fi
- \arm@num@i}
-\def\arm@num@iii#1{%
- \ifcase#1\or Ճ\or Մ\or Յ\or Ն\or Շ\or Ո\or Չ\or Պ\or Ջ\fi
- \arm@num@ii}
-\def\arm@num@iv#1{%
- \ifcase#1\or Ռ\or Ս\or Վ\or Տ\or Ր\or Ց\or Ւ\or Փ\or Ք\fi
- \arm@num@iii}
-\def\arm@ill@value#1{\xpg@warning{Illegal value (#1) for Armenian numeral}[$#1$]}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-armenian.ldf>
-%<*gloss-arq.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-arq.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-arq.ldf}[polyglossia: module for arq (arabic)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{arabic}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-arq.ldf>
-%<*gloss-ary.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-ary.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-ary.ldf}[polyglossia: module for ary (arabic)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{arabic}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-ary.ldf>
-%<*gloss-arz.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-arz.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-arz.ldf}[polyglossia: module for arz (arabic)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{arabic}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-arz.ldf>
-%<*gloss-ast.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-ast.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-ast.ldf}[polyglossia: module for ast (asturian)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{asturian}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-ast.ldf>
-%<*gloss-asturian.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-asturian.ldf}
-% \begin{macrocode}
-% Translated by Xuacu <xuacusk8 at gmail dot com>
-% Contributed by Kevin Godby <godbyk at gmail dot com>
-%
-\ProvidesFile{gloss-asturian.ldf}[polyglossia: module for asturian]
-\PolyglossiaSetup{asturian}{
- bcp47=ast,
- hyphennames={asturian,catalan},
- hyphenmins={2,2},
- langtag=AST,
- frenchspacing=true,
- indentfirst=true,
- fontsetup=true,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{asturian}{ast}
-
-\def\captionsasturian{%
- \def\prefacename{Entamu}%
- \def\refname{Referencies}%
- \def\abstractname{Sumariu}%
- \def\bibname{Bibliografía}%
- \def\chaptername{Capítulu}%
- \def\appendixname{Apéndiz}%
- \def\contentsname{Conteníu}%
- \def\listfigurename{Llista de figures}%
- \def\listtablename{Llista de tables}%
- \def\indexname{Índiz}%
- \def\figurename{Figura}%
- \def\tablename{Tabla}%
- \def\partname{Parte}%
- \def\enclname{incl.}%
- \def\ccname{cc}%
- \def\headtoname{Pa}%
- \def\pagename{Páxina}%
- \def\seename{ver}%
- \def\alsoname{ver tamién}%
- \def\proofname{Demostración}%
- \def\glossaryname{Glosariu}%
- }
-\def\dateasturian{%
- \def\today{\number\day~\ifcase\month\or
- de~xineru\or de~febreru\or de~marzu\or d'abril\or de~mayu\or de~xunu\or
- de~xunetu\or d'agostu\or de~setiembre\or d'ochobre\or de~payares\or
- d'avientu\fi\space de~\number\year}%
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-asturian.ldf>
-%<*gloss-australian.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-australian.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-australian.ldf}[polyglossia: module for australian english]
-
-% We provide this as a babel alias
-
-\xpg@load@master@language{english}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-australian.ldf>
-%<*gloss-austrian.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-austrian.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-austrian.ldf}[polyglossia: module for austrian german (old spelling)]
-
-% We provide this as a babel alias
-
-\xpg@load@master@language{german}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-austrian.ldf>
-%<*gloss-ayl.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-ayl.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-ayl.ldf}[polyglossia: module for ayl (arabic)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{arabic}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-ayl.ldf>
-%<*gloss-bahasa.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-bahasa.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-bahasa.ldf}[polyglossia: module for bahasa indonesia]
-
-% We provide this as a babel alias
-
-\xpg@load@master@language{malay}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-bahasa.ldf>
-%<*gloss-bahasai.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-bahasai.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-bahasai.ldf}[polyglossia: module for bahasa indonesia]
-
-% We only provide this gloss for babel compatibility. Since bahasai is
-% a malay variety, we use 'malay' with variant 'indonesian' now.
-
-\xpg@load@master@language{malay}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-bahasai.ldf>
-%<*gloss-bahasam.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-bahasam.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-bahasam.ldf}[polyglossia: module for bahasa melayu]
-
-% We only provide this gloss for babel compatibility. Since bahasam is
-% a malay variety, we use 'malay' with variant 'malaysian' now.
-
-\xpg@load@master@language{malay}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-bahasam.ldf>
-%<*gloss-basque.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-basque.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-basque.ldf}[polyglossia: module for basque]
-\PolyglossiaSetup{basque}{
- bcp47=eu,
- hyphennames={basque},
- hyphenmins={2,2},
- langtag=EUQ,
- indentfirst=true,
- fontsetup=true,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{basque}{eu}
-
-\def\captionsbasque{%
- \def\refname{Erreferentziak}%
- \def\abstractname{Laburpena}%
- \def\bibname{Bibliografia}%
- \def\prefacename{Hitzaurrea}%
- \def\chaptername{Kapitulua}%
- \def\appendixname{Eranskina}%
- \def\contentsname{Gaien Aurkibidea}%
- \def\listfigurename{Irudien Zerrenda}%
- \def\listtablename{Taulen Zerrenda}%
- \def\indexname{Kontzeptuen Aurkibidea}%
- \def\figurename{Irudia}%
- \def\tablename{Taula}%
- \def\thepart{}%
- \def\partname{Atala}%
- \def\pagename{Orria}%
- \def\seename{Ikusi}%
- \def\alsoname{Ikusi, halaber}%
- \def\enclname{Erantsia}%
- \def\ccname{Kopia}%
- \def\headtoname{Nori}%
- \def\proofname{Frogapena}%
- \def\glossaryname{Glosarioa}%
- }
-\def\datebasque{%
- \def\today{\number\year.eko\space\ifcase\month\or
- urtarrilaren\or otsailaren\or martxoaren\or apirilaren\or
- maiatzaren\or ekainaren\or uztailaren\or abuztuaren\or
- irailaren\or urriaren\or azaroaren\or
- abenduaren\fi~\number\day}}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-basque.ldf>
-%<*gloss-be-tarask.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-be-tarask.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-be-tarask.ldf}[polyglossia: module for be-tarask (belarusian)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{belarusian}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-be-tarask.ldf>
-%<*gloss-be.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-be.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-be.ldf}[polyglossia: module for be (belarusian)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{belarusian}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-be.ldf>
-%<*gloss-belarusian.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-belarusian.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-belarusian.ldf}[polyglossia: module for belarusian]
-
-\RequirePackage{xpg-cyrillicnumbers}
-
-\PolyglossiaSetup{belarusian}{
- bcp47=be,
- script=Cyrillic,
- scripttag=cyrl,
- langtag=BEL,
- hyphennames={belarusian},
- hyphenmins={2,2},
- frenchspacing=true,
- fontsetup,
- localnumeral=belarusiannumerals,
- Localnumeral=Belarusiannumerals
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*[spelling=classic]{belarusian}{be-tarask}
-\setlanguagealias*{belarusian}{be}
-
-\def\belarusian@spelling{modern}
-\define@choicekey*+{belarusian}{spelling}[\xpg@val\xpg@nr]{modern,classic,tarask}[modern]{%
- \ifcase\xpg@nr\relax
- % modern:
- \def\belarusian@spelling{modern}%
- \SetLanguageKeys{belarusian}{bcp47=be}%
- \or
- % classic:
- \def\belarusian@spelling{tarask}%
- \SetLanguageKeys{belarusian}{bcp47=be-tarask}%
- \or
- % tarask:
- \def\belarusian@spelling{tarask}%
- \SetLanguageKeys{belarusian}{bcp47=be-tarask}%
- \fi
-}{\xpg@warning{Unknown Belarusian spelling `#1'}}
-
-\newif\ifcyrillic@numerals
-\newif\ifcyrillic@asbuk@numerals
-\define@choicekey*+{belarusian}{numerals}[\xpg@val\xpg@nr]{arabic,cyrillic,cyrillic-trad,cyrillic-alph}[arabic]{%
- \ifcase\xpg@nr\relax
- % arabic:
- \cyrillic@numeralsfalse%
- \cyrillic@asbuk@numeralsfalse%
- \or
- % cyrillic:
- \cyrillic@numeralstrue%
- \cyrillic@asbuk@numeralsfalse%
- \or
- % cyrillic-trad:
- \cyrillic@numeralstrue%
- \cyrillic@asbuk@numeralsfalse%
- \or
- % cyrillic-alph:
- \cyrillic@numeralstrue%
- \cyrillic@asbuk@numeralstrue%
- \fi
- \xpg@info{Option: Belarusian, numerals=\xpg@val}%
-}{\xpg@warning{Unknown Belarusian numerals value `#1'}}
-
-\define@boolkey{belarusian}[belarusian@]{babelshorthands}[true]{}
-
-% Register default options
-\xpg@initialize@gloss@options{belarusian}{babelshorthands=false,numerals=arabic,spelling=modern}
-% Register alias options
-\xpg@set@alias@values{belarusian}{spelling}{classic}{tarask}
-
-\ifsystem@babelshorthands
- \setkeys{belarusian}{babelshorthands=true}
-\else
- \setkeys{belarusian}{babelshorthands=false}
-\fi
-
-\ifcsundef{initiate@active@char}{%
- \input{babelsh.def}%
- \initiate@active@char{"}%
- \shorthandoff{"}%
-}{}
-
-\def\belarusian@shorthands{%
- \bbl@activate{"}%
- \def\language@group{belarusian}%
- \declare@shorthand{belarusian}{"`}{„}%
- \declare@shorthand{belarusian}{"'}{“}%
- \declare@shorthand{belarusian}{"<}{«}%
- \declare@shorthand{belarusian}{">}{»}%
- \declare@shorthand{belarusian}{""}{\hskip\z@skip}%
- \declare@shorthand{belarusian}{"~}{\textormath{\leavevmode\hbox{-}}{-}}%
- \declare@shorthand{belarusian}{"=}{\nobreak-\hskip\z@skip}%
- \declare@shorthand{belarusian}{"|}{\textormath{\nobreak\discretionary{-}{}{\kern.03em}\allowhyphens}{}}%
- \declare@shorthand{belarusian}{"-}{%
- \def\belarusian@sh@tmp{%
- \if\belarusian@sh@next-\expandafter\belarusian@sh@emdash%
- \else\expandafter\belarusian@sh@hyphen\fi%
- }%
- \futurelet\belarusian@sh@next\belarusian@sh@tmp%
- }%
- \def\belarusian@sh@hyphen{%
- \nobreak\-\bbl@allowhyphens}%
- \def\belarusian@sh@emdash##1##2{\cdash-##1##2}%
- \def\cdash##1##2##3{\def\tempx@{##3}%
- \def\tempa@{-}\def\tempb@{~}\def\tempc@{*}%
- \ifx\tempx@\tempa@\@Acdash\else
- \ifx\tempx@\tempb@\@Bcdash\else
- \ifx\tempx@\tempc@\@Ccdash\else
- \errmessage{Wrong usage of cdash}\fi\fi\fi}%
- \def\@Acdash{\ifdim\lastskip>\z@\unskip\nobreak\hskip.2em\fi
- \cyrdash\hskip.2em\ignorespaces}%
- \def\@Bcdash{\leavevmode\ifdim\lastskip>\z@\unskip\fi
- \nobreak\cyrdash\penalty\exhyphenpenalty\hskip\z@skip\ignorespaces}%
- \def\@Ccdash{\leavevmode
- \nobreak\cyrdash\nobreak\hskip.35em\ignorespaces}%
- \ifx\cyrdash\undefined
- \def\cyrdash{\hbox to.8em{--\hss--}}%
- \fi
- \declare@shorthand{belarusian}{",}{\nobreak\hskip.2em\ignorespaces}%
-}
-
-\def\nobelarusian@shorthands{%
- \@ifundefined{initiate@active@char}{}{\bbl@deactivate{"}}%
-}
-
-% Taken from babel-belarusian
-\def\captionsbelarusian@modern{%
- \def\prefacename{Прадмова}%
- \def\refname{Спіс літаратуры}%
- \def\abstractname{Анатацыя}%
- \def\bibname{Літаратура}%
- \def\chaptername{Глава}%
- \def\appendixname{Дадатак}%
- \def\contentsname{Змест}%
- \def\listfigurename{Спіс ілюстрацый}%
- \def\listtablename{Спіс табліц}%
- \def\indexname{Прадметны паказальнік}%
- \def\authorname{Паказальнік імён}%
- \def\figurename{Рыс.}%
- \def\tablename{Табліца}%
- \def\partname{Частка}%
- \def\enclname{укл.}%
- \def\ccname{зых.}%
- \def\headtoname{вх.}%
- \def\pagename{с.}%
- \def\seename{гл.}%
- \def\alsoname{гл.\ таксама}%
- \def\proofname{Доказ}%
- \def\glossaryname{Слоўнік тэрмінаў}%
- \def\acronymname{Абрэвіятуры}%
- \def\lstlistingname{Лістынг}%
- \def\lstlistlistingname{Лістынгі}%
- \def\notesname{Нататкі}%
-}
-
-\def\captionsbelarusian@tarask{%
- \def\prefacename{Прадмова}%
- \def\refname{Сьпіс літаратуры}%
- \def\abstractname{Анатацыя}%
- \def\bibname{Літаратура}%
- \def\chaptername{Глава}%
- \def\appendixname{Дадатак}%
- \def\contentsname{Зьмест}%
- \let\tocname=\contentsname
- \def\listfigurename{Сьпіс ілюстрацый}%
- \def\listtablename{Сьпіс табліц}%
- \def\indexname{Прадметны паказальнік}%
- \def\authorname{Паказальнік імён}%
- \def\figurename{Рыс.}%
- \def\tablename{Табліца}%
- \def\partname{Частка}%
- \def\enclname{укл.}%
- \def\ccname{зых.}%
- \def\headtoname{вх.}%
- \def\pagename{с.}%
- \def\seename{гл.}%
- \def\alsoname{гл.\ таксама}%
- \def\proofname{Доказ}%
- \def\glossaryname{Слоўнік тэрмінаў}%
- \def\acronymname{Абрэвіятуры}%
- \def\lstlistingname{Лістынг}%
- \def\lstlistlistingname{Лістынгі}%
- \def\nomname{Азначэньні}%
- \def\notesname{Нататкі}%
-}
-
-\def\captionsbelarusian{%
- \csuse{captionsbelarusian@\belarusian@spelling}%
-}
-
-\def\datebelarusian@modern{%
- \def\today{\number\day~\ifcase\month\or
- студзеня\or
- лютага\or
- сакавіка\or
- красавіка\or
- мая\or
- чэрвеня\or
- ліпеня\or
- жніўня\or
- верасня\or
- кастрычніка\or
- лістапада\or
- снежня\fi
- \space \number\year~г.}%
-}
-
-\def\datebelarusian@tarask{%
- \def\today{\number\day~\ifcase\month\or%
- студзеня\or
- лютага\or
- сакавіка\or
- красавіка\or
- траўня\or
- чэрвеня\or
- ліпеня\or
- жніўня\or
- верасьня\or
- кастрычніка\or
- лістапада\or
- сьнежня\fi%
- \space \number\year~г.}%
-}
-
-\def\datebelarusian{%
- \csuse{datebelarusian@\belarusian@spelling}%
-}
-
-\newcommand{\belarusiannumerals}[2]{\belarusiannumber{#2}}
-\newcommand{\Belarusiannumerals}[2]{\Belarusiannumber{#2}}
-
-\def\belarusiannumber#1{%
- \ifcyrillic@numerals
- \ifcyrillic@asbuk@numerals
- \belarusian@asbuk@alph{#1}%
- \else
- \cyr@alph{#1}%
- \fi
- \else
- \number#1%
- \fi%
-}
-
-\def\Belarusiannumber#1{%
- \ifcyrillic@numerals
- \ifcyrillic@asbuk@numerals
- \belarusian@asbuk@Alph{#1}%
- \else
- \cyr@Alph{#1}%
- \fi
- \else
- \number#1%
- \fi%
-}
-
-\let\belarusiannumeral=\belarusiannumber
-\let\Belarusiannumeral=\Belarusiannumber
-
-\def\Asbuk#1{\expandafter\belarusian@asbuk@Alph\csname c@#1\endcsname}
-\def\asbuk#1{\expandafter\belarusian@asbuk@alph\csname c@#1\endcsname}
-
-\def\AsbukTrad#1{\expandafter\cyr@Alph\csname c@#1\endcsname}
-\def\asbukTrad#1{\expandafter\cyr@alph\csname c@#1\endcsname}
-
-
-% This is a poor man's cyrillic alphanumeric. It just uses the alphabet and
-% thus ends at 30.
-\def\belarusian@asbuk@Alph#1{\ifcase#1\or
- А\or Б\or В\or Г\or Д\or Е\or Ж\or
- З\or И\or К\or Л\or М\or Н\or О\or
- П\or Р\or С\or Т\or У\or Ф\or Х\or
- Ц\or Ч\or Ш\or Щ\or Э\or Ю\or Я%
- \else\xpg@ill@value{#1}{belarusian@asbuk@Alph}\fi%
-}
-
-\def\belarusian@asbuk@alph#1{\ifcase#1\or
- а\or б\or в\or г\or д\or е\or ж\or
- з\or и\or к\or л\or м\or н\or о\or
- п\or р\or с\or т\or у\or ф\or х\or
- ц\or ч\or ш\or щ\or э\or ю\or я%
- \else\xpg@ill@value{#1}{belarusian@asbuk@alph}\fi%
-}
-
-\def\belarusian@numbers{%
- \let\latin@alph\@alph
- \let\latin@Alph\@Alph
- \ifcyrillic@numerals%
- \def\belarusian@alph##1{\expandafter\belarusiannumeral\expandafter{\the##1}}%
- \def\belarusian@Alph##1{\expandafter\belarusiannumeral\expandafter{\the##1}}%
- \let\@alph\belarusian@alph%
- \let\@Alph\belarusian@Alph%
- \fi
-}
-
-\def\nobelarusian@numbers{%
- \let\@alph\latin@alph%
- \let\@Alph\latin@Alph%
-}
-
-\def\noextras@belarusian{%
- \ifcyrillic@numerals\nobelarusian@numbers\fi%
- \nobelarusian@shorthands%
-}
-
-\def\blockextras@belarusian{%
- \ifcyrillic@numerals\belarusian@numbers\fi%
- \ifbelarusian@babelshorthands\belarusian@shorthands\fi%
-}
-
-\def\inlineextras@belarusian{%
- \ifbelarusian@babelshorthands\belarusian@shorthands\fi%
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-belarusian.ldf>
-%<*gloss-bengali.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-bengali.ldf}
-% \begin{macrocode}
-% Translations provided by সাজেদুর রহিম জোয়ারদার <toshazed@gmail.com>
-% TODO implement Bengali calendar
-
-\ProvidesFile{gloss-bengali.ldf}[polyglossia: module for bengali]
-
-\ifluatex
- \xpg@warning{Bengali is not supported with LuaTeX.\MessageBreak
- I will proceed with the compilation, but\MessageBreak
- the output is not guaranteed to be correct\MessageBreak
- and may look very wrong.}
-\fi
-
-\RequirePackage{devanagaridigits}
-\RequirePackage{bengalidigits}
-
-\PolyglossiaSetup{bengali}{
- bcp47=bn,
- script=Bengali,
- scripttag=beng,
- langtag=BEN,
- hyphennames={bengali},
- hyphenmins={2,2},%CHECK
- fontsetup=true,
- localnumeral=bengalinumerals
- %TODO nouppercase=true,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{bengali}{bn}
-
-\newif\ifbengali@devanagari@numerals
-\newif\ifbengali@bengali@numerals
-\define@choicekey*+{bengali}{numerals}[\xpg@val\xpg@nr]{Devanagari,Bengali,Western}[Devanagari]{%
- \ifcase\xpg@nr\relax
- % Devanagari:
- \bengali@bengali@numeralsfalse%
- \bengali@devanagari@numeralstrue%
- \or
- % Bengali:
- \bengali@bengali@numeralstrue%
- \bengali@devanagari@numeralsfalse%
- \or
- % Western:
- \bengali@bengali@numeralsfalse%
- \bengali@devanagari@numeralsfalse%
- \fi
- \xpg@info{Option: Bengali, numerals=\xpg@val}%
-}{\xpg@warning{Unknown Bengali numeral `#1'}}
-
-\def\extras@bengali{}
-\def\noextras@bengali{}
-
-\define@boolkey{bengali}[bengali@]{changecounternumbering}[true]{}
-
-% Register default options
-\xpg@initialize@gloss@options{bengali}{changecounternumbering=false,numerals=Devanagari}
-
-\def\captionsbengali{%
- \def\refname{তথ্যসূত্রসমূহ}%
- \def\abstractname{সারসংক্ষেপ}%
- \def\bibname{তথ্যবিবরণ}%
- \def\prefacename{পূর্বকথা}%
- \def\chaptername{অধ্যায়}%
- \def\appendixname{পরিশিষ্ট}%
- \def\contentsname{সূচীপত্র}%
- \def\listfigurename{ছবি/নকশা সমূহের তালিকা}%
- \def\listtablename{তালিকাসারণী}%
- \def\indexname{সূচক/নির্দেশক}%
- \def\figurename{চিত্র}%
- \def\tablename{সারণী}%
- %\def\thepart{}% TODO
- \def\partname{খন্ড}%
- \def\pagename{পৃষ্ঠা}%
- \def\seename{দেখুন}%
- \def\alsoname{আরও দেখুন}%
- \def\enclname{সংযুক্তি}%
- \def\ccname{অনুলিপি}%
- \def\headtoname{প্রতি}%
- \def\proofname{প্রমাণ}%
- \def\glossaryname{পরিভাষার শব্দসম্ভার}%
-}
-\def\datebengali{%
- \def\bengalimonth{%
- \ifcase\month\or
- জানুয়ারি\or
- ফেব্রুয়ারি\or
- মার্চ\or
- এপ্রিল\or
- মে\or
- জুন\or
- জুলাই\or
- আগস্ট\or
- সেপ্টেম্বর\or
- অক্টোবর\or
- নভেম্বর\or
- ডিসেম্বর\fi}%
- \def\today{\bengalinumber\day\space\bengalimonth\space\bengalinumber\year}%
-}
-
-\newcommand{\bengalinumerals}[2]{\bengalinumber{#2}}
-
-\def\bengalinumber#1{%
- \ifbengali@devanagari@numerals
- \devanagaridigits{\number#1}%
- \else
- \ifbengali@bengali@numerals
- \bengalidigits{\number#1}%
- \else % Assumed Western
- \number#1%
- \fi
- \fi%
-}
-
-% Backwards compatibility. This command was never documented, but
-% some people might use it nevertheless (see #381).
-% This takes a counter.
-\newcommand\bengalinumeral[1]{\localnumeral*[lang=bengali]{#1}}
-
-\def\bengali@globalnumbers{%
- \ifbengali@changecounternumbering
- \let\@arabic\bengalinumber%
- \renewcommand\thefootnote{\localnumeral*{footnote}}%
- \fi
-}
-
-% Store original definition
-\let\xpg@save@arabic\@arabic
-
-\def\nobengali@globalnumbers{%
- \let\@arabic\xpg@save@arabic%
-}
-
-\def\blockextras@bengali{\extras@bengali}
-\def\inlineextras@bengali{\extras@bengali}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-bengali.ldf>
-%<*gloss-bg.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-bg.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-bg.ldf}[polyglossia: module for bg (bulgarian)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{bulgarian}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-bg.ldf>
-%<*gloss-bn.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-bn.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-bn.ldf}[polyglossia: module for bn (bengali)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{bengali}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-bn.ldf>
-%<*gloss-bo.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-bo.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-bo.ldf}[polyglossia: module for bo (tibetan)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{tibetan}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-bo.ldf>
-%<*gloss-bosnian.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-bosnian.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-bosnian.ldf}[polyglossia: module for bosnian]
-
-\PolyglossiaSetup{bosnian}{
- bcp47=bs,
- langtag=BOS,
- hyphennames={bosnian,croatian},
- hyphenmins={2,2}, % adapted from gloss-croatian
- frenchspacing=true, % adapted from gloss-croatian
- indentfirst=false, % adapted from gloss-croatian
- fontsetup=true
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{bosnian}{bs}
-
-% TODO: Add script=Cyrillic
-
-% from babel-bosnian
-\def\captionsbosnian{%
- \def\prefacename{Predgovor}%
- \def\refname{Literatura}%
- \def\abstractname{Sažetak}%
- \def\bibname{Bibliografija}%
- \def\chaptername{Poglavlje}%
- \def\appendixname{Dodatak}%
- \def\contentsname{Sadržaj}%
- \def\listfigurename{Popis slika}%
- \def\listtablename{Popis tablica}%
- \def\indexname{Indeks}%
- \def\figurename{Slika}%
- \def\tablename{Tablica}%
- \def\partname{Dio}%
- \def\enclname{Prilozi}%
- \def\ccname{Kopija}%
- \def\headtoname{Prima}%
- \def\pagename{Stranica}%
- \def\seename{Vidjeti}%
- \def\alsoname{Također vidjeti}%
- \def\proofname{Dokaz}%
- \def\glossaryname{Rječnik}%
-}
-
-\def\datebosnian{%
- \def\today{\number\day.~\ifcase\month\or
- januar\or februar\or mart\or april\or maj\or
- juni\or juli\or august\or septembar\or oktobar\or novembar\or
- decembar\fi \space \number\year.~}%
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-bosnian.ldf>
-%<*gloss-br.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-br.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-br.ldf}[polyglossia: module for br (breton)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{breton}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-br.ldf>
-%<*gloss-brazil.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-brazil.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-brazil.ldf}[polyglossia: module for brazilian portuguese]
-
-% We only provide this gloss for backwards compatibility. The name
-% 'brazil' was selected in accordance with babel.
-% Since brazil is a variety of portuguese, we use 'portuguese' now.
-
-\xpg@load@master@language{portuguese}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-brazil.ldf>
-%<*gloss-breton.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-breton.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-breton.ldf}[polyglossia: module for breton]
-\PolyglossiaSetup{breton}{
- bcp47=br,
- hyphennames={breton},
- hyphenmins={2,2},
- langtag=BRE,
- frenchspacing=true,
- indentfirst=true,
- fontsetup=true,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{breton}{br}
-
-\ifluatex
- % TODO
-\else
- \newXeTeXintercharclass\breton@punctthin % ! ? ;
- \newXeTeXintercharclass\breton@punctthick % :
-\fi
-
-\def\breton@punctthinspace{{\unskip\thinspace}}
-\def\breton@punctthickspace{{\unskip\nobreakspace}}
-
-\def\breton@punctuation{%
- \ifluatex
- % TODO
- \else
- \XeTeXinterchartokenstate=1%
- \XeTeXcharclass `\! \breton@punctthin
- \XeTeXcharclass `\? \breton@punctthin
- \XeTeXcharclass `\; \breton@punctthin
- \XeTeXcharclass `\: \breton@punctthick
- \XeTeXinterchartoks \z@ \breton@punctthin = \breton@punctthinspace
- \XeTeXinterchartoks \z@ \breton@punctthick = \breton@punctthickspace
- \fi
-}
-
-\def\nobreton@punctuation{%
- \ifluatex
- % TODO
- \else
- \XeTeXcharclass `\! \z@
- \XeTeXcharclass `\? \z@
- \XeTeXcharclass `\; \z@
- \XeTeXcharclass `\: \z@
- \XeTeXinterchartokenstate=0%
- \fi
-}
-
-
-\def\captionsbreton{%
- \def\refname{Daveennoù}%
- \def\abstractname{Dvierrañ}%
- \def\bibname{Lennadurezh}%
- \def\prefacename{Rakskrid}%
- \def\chaptername{Pennad}%
- \def\appendixname{Stagadenn}%
- \def\contentsname{Taolenn}%
- \def\listfigurename{Listenn ar Figurennoù}%
- \def\listtablename{Listenn an taolennoù}%
- \def\indexname{Meneger}%
- \def\figurename{Figurenn}%
- \def\tablename{Taolenn}%
- \def\thepart{}%
- \def\partname{Lodenn}%
- \def\pagename{Pajenn}%
- \def\seename{Gwelout}%
- \def\alsoname{Gwelout ivez}%
- \def\enclname{Dielloù kevret}%
- \def\ccname{Eilskrid da}%
- \def\headtoname{evit}%
- \def\proofname{Proof}%
- \def\glossaryname{Glossary}%
- }
-\def\datebreton{%
- \def\today{\ifnum\day=1\relax 1\/\textsuperscript{añ}\else
- \number\day\fi \space a\space viz\space\ifcase\month\or
- Genver\or C'hwevrer\or Meurzh\or Ebrel\or Mae\or Mezheven\or
- Gouere\or Eost\or Gwengolo\or Here\or Du\or Kerzu\fi
- \space\number\year}}
-
-\def\noextras@breton{%
- \nobreton@punctuation%
- }
-
-\def\blockextras@breton{%
- \breton@punctuation%
- }
-
-\def\inlineextras@breton{%
- \breton@punctuation%
- }
-
-% \end{macrocode}
-% \iffalse
-%</gloss-breton.ldf>
-%<*gloss-british.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-british.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-british.ldf}[polyglossia: module for british english]
-
-% We provide this as a babel alias
-
-\xpg@load@master@language{english}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-british.ldf>
-%<*gloss-bs.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-bs.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-bs.ldf}[polyglossia: module for bs (bosnian)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{bosnian}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-bs.ldf>
-%<*gloss-bulgarian.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-bulgarian.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-bulgarian.ldf}[polyglossia: module for bulgarian]
-\PolyglossiaSetup{bulgarian}{
- bcp47=bg,
- script=Cyrillic,
- scripttag=cyrl,
- langtag=BGR,
- hyphennames={bulgarian},
- hyphenmins={2,2},
- frenchspacing=true,
- fontsetup
- %TODO localalph=bulgarian@alph
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{bulgarian}{bg}
-
-\def\bulgarian@Alph#1{%
- \ifcase#1\or
- А\or Б\or В\or Г\or Д\or Е\or Ж\or
- З\or И\or Й\or К\or Л\or М\or Н\or
- О\or П\or Р\or С\or Т\or У\or Ф\or
- Х\or Ц\or Ч\or Ш\or Щ\or Ъ\or
- Ю\or Я\else
- \xpg@ill@value{#1}{bulgarian@Alph}\fi}%
-
-\def\bulgarian@alph#1{%
- \ifcase#1\or
- а\or б\or в\or г\or д\or е\or ж\or
- з\or и\or й\or к\or л\or м\or н\or
- о\or п\or р\or с\or т\or у\or ф\or
- х\or ц\or ч\or ш\or щ\or ъ\or ь\or
- ю\or я\else
- \xpg@ill@value{#1}{bulgarian@alph}\fi}%
-
-\def\bulgarian@numbers{%
- \let\@Alph\bulgarian@Alph%
- \let\@alph\bulgarian@alph%
- }
-
-\def\nobulgarian@numbers{%
- \let\@Alph\latin@Alph%
- \let\@alph\latin@alph%
-}
-
-\def\captionsbulgarian{%
- \def\refname{Литература}%
- \def\abstractname{Абстракт}%
- \def\bibname{Библиография}%
- \def\prefacename{Предговор}%
- \def\chaptername{Глава}%
- \def\appendixname{Приложение}%
- \def\contentsname{Съдържание}%
- \def\listfigurename{Списък на фигурите}%
- \def\listtablename{Списък на таблиците}%
- \def\indexname{Азбучен указател}%
- \def\figurename{Фигура}%
- \def\tablename{Таблица}%
- %\def\thepart{}%
- %\def\partname{}%
- \def\pagename{Стр.}%
- \def\seename{вж.}%
- \def\alsoname{вж.\ също и}%
- \def\enclname{Приложения}%
- \def\ccname{копия}%
- %\def\headtoname{}%
- \def\proofname{Proof}%
- \def\glossaryname{Glossary}%
- }
-\def\datebulgarian{%
- \def\today{\number\day~\ifcase\month\or
- януари\or
- февруари\or
- март\or
- април\or
- май\or
- юни\or
- юли\or
- август\or
- септември\or
- октомври\or
- ноември\or
- декември\fi%
- \ \number\year~г.}%
- \def\month@Roman{\expandafter\@Roman\month}%
- \def\todayRoman{\number\day.\,\month@Roman.\,\number\year~г.}%
- }
-
-% \end{macrocode}
-% \iffalse
-%</gloss-bulgarian.ldf>
-%<*gloss-ca.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-ca.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-ca.ldf}[polyglossia: module for ca (catalan)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{catalan}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-ca.ldf>
-%<*gloss-canadian.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-canadian.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-canadian.ldf}[polyglossia: module for canadian english]
-
-% We provide this as a babel alias
-
-\xpg@load@master@language{english}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-canadian.ldf>
-%<*gloss-canadien.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-canadien.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-canadien.ldf}[polyglossia: module for canadian french]
-
-% We provide this as a babel alias
-
-\xpg@load@master@language{french}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-canadien.ldf>
-%<*gloss-catalan.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-catalan.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-catalan.ldf}[polyglossia: module for catalan]
-\PolyglossiaSetup{catalan}{
- bcp47=ca,
- hyphennames={catalan},
- hyphenmins={2,2},
- langtag=CAT,
- frenchspacing=true,
- indentfirst=true,
- fontsetup=true,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{catalan}{ca}
-
-\define@boolkey{catalan}[catalan@]{babelshorthands}[true]{}
-\ifsystem@babelshorthands
- \setkeys{catalan}{babelshorthands=true}
-\else
- \setkeys{catalan}{babelshorthands=false}
-\fi
-
-% Register default options
-\xpg@initialize@gloss@options{catalan}{babelshorthands=false}
-
-\ifcsundef{initiate@active@char}{%
- \input{babelsh.def}%
- \initiate@active@char{"}%
- \shorthandoff{"}%
-}{}
-
-%%% adapted from Babel's catalan.ldf
-\newdimen\leftllkern \newdimen\rightllkern \newdimen\raiselldim
-
-% we check if char · exists, and use it instead of raised dot:
-\def\xpg@raiseddot{%
- \charifavailable{00B7}{\raise\raiselldim\hbox{.}}%
-}
-
-\def\lgem{%
- \ifmmode
- \csname normal@char\string"\endcsname l%
- \else
- \leftllkern=0pt\rightllkern=0pt\raiselldim=0pt%
- \setbox0\hbox{l}\setbox1\hbox{l\/}%
- \xpg@if@char@available{00B7}%
- {\setbox2\hbox{\char"00B7}}%
- {\setbox2\hbox{.}}%
- \advance\raiselldim by \the\fontdimen5\the\font
- \advance\raiselldim by -\ht2%
- \leftllkern=-.25\wd0%
- \advance\leftllkern by \wd1%
- \advance\leftllkern by -\wd0%
- \rightllkern=-.25\wd0%
- \advance\rightllkern by -\wd1%
- \advance\rightllkern by \wd0%
- \allowhyphens\discretionary{l-}{l}%
- {\hbox{l}\kern\leftllkern\xpg@raiseddot%
- \kern\rightllkern\hbox{l}}\allowhyphens
- \fi
-}
-
-\def\Lgem{%
- \ifmmode
- \csname normal@char\string"\endcsname L%
- \else
- \leftllkern=0pt\rightllkern=0pt\raiselldim=0pt%
- \setbox0\hbox{L}\setbox1\hbox{L\/}%
- \xpg@if@char@available{00B7}%
- {\setbox2\hbox{\char"00B7}}%
- {\setbox2\hbox{.}}%
- \advance\raiselldim by .5\ht0%
- \advance\raiselldim by -.5\ht2%
- \leftllkern=-.125\wd0%
- \advance\leftllkern by \wd1%
- \advance\leftllkern by -\wd0%
- \rightllkern=-\wd0%
- \divide\rightllkern by 6%
- \advance\rightllkern by -\wd1%
- \advance\rightllkern by \wd0%
- \allowhyphens\discretionary{L-}{L}%
- {\hbox{L}\kern\leftllkern\xpg@raiseddot%
- \kern\rightllkern\hbox{L}}\allowhyphens
- \fi
-}
-
-\AtBeginDocument{%
- \let\lslash\l
- \let\Lslash\L
- \DeclareRobustCommand\l{\@ifnextchar.\bbl@l{\@ifnextchar·\bbl@l\lslash}}
- \DeclareRobustCommand\L{\@ifnextchar.\bbl@L{\@ifnextchar·\bbl@L\Lslash}}}
-\def\bbl@l#1#2{\lgem}
-\def\bbl@L#1#2{\Lgem}
-
-\def\catalan@shorthands{%
- \bbl@activate{"}%
- \def\language@group{catalan}%
- \declare@shorthand{catalan}{"l}{\lgem{}}
- \declare@shorthand{catalan}{"L}{\Lgem{}}
-}
-
-\def\nocatalan@shorthands{%
- \@ifundefined{initiate@active@char}{}{\bbl@deactivate{"}}%
-}
-
-\def\captionscatalan{%
- \def\refname{Referències}%
- \def\abstractname{Resum}%
- \def\bibname{Bibliografia}%
- \def\prefacename{Pròleg}%
- \def\chaptername{Capítol}%
- \def\appendixname{Apèndix}%
- \def\contentsname{Índex}%
- \def\listfigurename{Índex de figures}%
- \def\listtablename{Índex de taules}%
- \def\indexname{Índex alfabètic}%
- \def\figurename{Figura}%
- \def\tablename{Taula}%
- %\def\thepart{}%
- \def\partname{Part}%
- \def\pagename{Pàgina}%
- \def\seename{Vegeu}%
- \def\alsoname{Vegeu també}%
- \def\enclname{Adjunt}%
- \def\ccname{Còpies a}%
- \def\headtoname{A}%
- \def\proofname{Demostració}%
- \def\glossaryname{Glossari}%
- }
-\def\datecatalan{%
- \def\today{\number\day~\ifcase\month\or
- de gener\or de febrer\or de març\or d'abril\or de maig\or
- de juny\or de juliol\or d'agost\or de setembre\or d'octubre\or
- de novembre\or de desembre\fi
- \space de~\number\year}}
-
-\def\noextras@catalan{%
- \nocatalan@shorthands%
-}
-
-\def\blockextras@catalan{%
- \ifcatalan@babelshorthands\catalan@shorthands\fi%
-}
-
-\def\inlineextras@catalan{%
- \ifcatalan@babelshorthands\catalan@shorthands\fi%
-}
-% \end{macrocode}
-% \iffalse
-%</gloss-catalan.ldf>
-%<*gloss-ckb-Arab.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-ckb-Arab.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-ckb-Arab.ldf}[polyglossia: module for ckb-Arab (kurdish)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{kurdish}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-ckb-Arab.ldf>
-%<*gloss-ckb-Latn.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-ckb-Latn.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-ckb-Latn.ldf}[polyglossia: module for ckb-Latn (kurdish)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{kurdish}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-ckb-Latn.ldf>
-%<*gloss-ckb.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-ckb.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-ckb.ldf}[polyglossia: module for ckb (kurdish)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{kurdish}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-ckb.ldf>
-%<*gloss-cop.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-cop.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-cop.ldf}[polyglossia: module for cop (coptic)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{coptic}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-cop.ldf>
-%<*gloss-coptic.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-coptic.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-coptic.ldf}[polyglossia: module for coptic]
-\PolyglossiaSetup{coptic}{
- bcp47=cop,
- script=Coptic,
- scripttag=copt,
- langtag=COP,
- hyphennames={coptic},
- hyphenmins={2,2},
- fontsetup=true
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{coptic}{cop}
-
-%\def\captionscoptic{%
-% \def\refname{<++>}%
-% \def\abstractname{<++>}%
-% \def\bibname{<++>}%
-% \def\prefacename{<++>}%
-% \def\chaptername{<++>}%
-% \def\appendixname{<++>}%
-% \def\contentsname{<++>}%
-% \def\listfigurename{<++>}%
-% \def\listtablename{<++>}%
-% \def\indexname{<++>}%
-% \def\figurename{<++>}%
-% \def\tablename{<++>}%
-% \def\thepart{}%
-% \def\partname{<++>}%
-% \def\pagename{<++>}%
-% \def\seename{<++>}%
-% \def\alsoname{<++>}%
-% \def\enclname{<++>}%
-% \def\ccname{<++>}%
-% \def\headtoname{<++>}%
-% \def\proofname{<++>}%
-% \def\glossaryname{<++>}%
-% }
-%\def\datecoptic{%
-% \def\today{<++>}%
-% }
-
-% \end{macrocode}
-% \iffalse
-%</gloss-coptic.ldf>
-%<*gloss-croatian.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-croatian.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-croatian.ldf}[polyglossia: module for croatian]
-\PolyglossiaSetup{croatian}{
- bcp47=hr,
- langtag=HRV,
- hyphennames={croatian},
- hyphenmins={2,2}, % aligned with https://ctan.org/pkg/hrhyph patterns and http://lebesgue.math.hr/~nenad/Diplomski/Maja_Ribaric_2011.pdf
- frenchspacing=true, % recommendation from Damir Bralić
- indentfirst=false, % recommendation from Damir Bralić
- fontsetup=true
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{croatian}{hr}
-
-\define@boolkey{croatian}[croatian@]{babelshorthands}[true]{}
-
-\define@boolkey{croatian}[croatian@]{disableligatures}[true]{}
-
-% Register default options
-\xpg@initialize@gloss@options{croatian}{babelshorthands=false,disableligatures=false}
-
-\ifsystem@babelshorthands
- \setkeys{croatian}{babelshorthands=true}
-\else
- \setkeys{croatian}{babelshorthands=false}
-\fi
-
-\ifcsundef{initiate@active@char}{%
- \input{babelsh.def}%
- \initiate@active@char{"}%
- \shorthandoff{"}%
-}{}
-
-\def\croatian@shorthands{%
- \bbl@activate{"}%
- \def\language@group{croatian}%
- \declare@shorthand{croatian}{"=}{\penalty\@M-\hskip\z@skip}%
- \declare@shorthand{croatian}{""}{\hskip\z@skip}%
- \declare@shorthand{croatian}{"~}{\textormath{\leavevmode\hbox{-}}{-}}%
- \declare@shorthand{croatian}{"-}{\nobreak\-\bbl@allowhyphens}%
- \declare@shorthand{croatian}{"|}{%
- \textormath{\penalty\@M\discretionary{-}{}{\kern.03em}%
- \bbl@allowhyphens}{}%
- }%
- \declare@shorthand{croatian}{"/}{\textormath
- {\bbl@allowhyphens\discretionary{/}{}{/}\bbl@allowhyphens}{}}%
- \declare@shorthand{croatian}{"`}{„}%
- \declare@shorthand{croatian}{"'}{”}%
- \declare@shorthand{croatian}{"<}{«}%
- \declare@shorthand{croatian}{">}{»}%
- \declare@shorthand{croatian}{"D}{\xpg@hr@lig{D}}%
- \declare@shorthand{croatian}{"d}{\xpg@hr@lig{d}}%
- \declare@shorthand{croatian}{"L}{\xpg@hr@lig{L}}%
- \declare@shorthand{croatian}{"l}{\xpg@hr@lig{l}}%
- \declare@shorthand{croatian}{"N}{\xpg@hr@lig{N}}%
- \declare@shorthand{croatian}{"n}{\xpg@hr@lig{n}}%
-}
-
-\def\nocroatian@shorthands{%
- \@ifundefined{initiate@active@char}{}{\bbl@deactivate{"}}%
-}
-
-\newcommand*\hr@charifavailable[2]{%
- \ifcroatian@disableligatures
- \bgroup#2\egroup%
- \else
- \charifavailable{#1}{#2}%
- \fi%
-}
-
-% Provide croatian ligatures if available in current font
-\def\xpg@hr@lig#1#2{%
- \bgroup%
- % 1. DŽ, Dž and dž
- \ifx#1D%
- \ifx#2Z\relax%
- \hr@charifavailable{01C4}{DŽ}%
- \else%
- \ifx#2z\relax
- \hr@charifavailable{01C5}{Dž}%
- \else
- D#2%
- \fi%
- \fi%
- \fi%
- \ifx#1d%
- \ifx#2z\relax
- \hr@charifavailable{01C6}{dž}%
- \else
- d#2%
- \fi%
- \fi%
- % 2. LJ, Lj and lj
- \ifx#1L%
- \ifx#2J\relax%
- \hr@charifavailable{01C7}{LJ}%
- \else%
- \ifx#2j\relax
- \hr@charifavailable{01C8}{Lj}%
- \else
- L#2%
- \fi%
- \fi%
- \fi%
- \ifx#1l%
- \ifx#2j\relax
- \hr@charifavailable{01C9}{lj}%
- \else
- l#2%
- \fi%
- \fi%
- % 2. NJ, Nj and nj
- \ifx#1N%
- \ifx#2J\relax%
- \hr@charifavailable{01CA}{NJ}%
- \else%
- \ifx#2j\relax
- \hr@charifavailable{01CB}{Nj}%
- \else
- N#2%
- \fi%
- \fi%
- \fi%
- \ifx#1n%
- \ifx#2j\relax
- \hr@charifavailable{01CC}{nj}%
- \else
- n#2%
- \fi%
- \fi%
- \egroup%
-}
-
-\def\captionscroatian{%
- \def\prefacename{Predgovor}%
- \def\refname{Literatura}%
- \def\abstractname{Sažetak}%
- \def\bibname{Bibliografija}%
- \def\chaptername{Poglav\hr@charifavailable{01C9}{lj}e}%
- \def\appendixname{Dodatak}%
- \def\contentsname{Sadržaj}%
- \def\listfigurename{Popis slika}%
- \def\listtablename{Popis tablica}%
- \def\indexname{Kazalo}%
- \def\figurename{Slika}%
- \def\tablename{Tablica}%
- \def\partname{Dio}%
- \def\enclname{Prilozi}%
- \def\ccname{Kopija}%
- \def\headtoname{Prima}%
- \def\pagename{Stranica}%
- \def\seename{Vidjeti}%
- \def\alsoname{Također vidjeti}%
- \def\proofname{Dokaz}%
- \def\glossaryname{Pojmovnik}%
-}
-
-\def\datecroatian{%
- \def\today{\number\day.~\ifcase\month\or
- siječnja\or veljače\or ožujka\or travnja\or svibnja\or
- lipnja\or srpnja\or kolovoza\or rujna\or listopada\or studenoga\or
- prosinca\fi \space \number\year.}%
-}
-
-\def\noextras@croatian{%
- \nocroatian@shorthands%
-}
-
-\def\blockextras@croatian{%
- \ifcroatian@babelshorthands\croatian@shorthands\fi%
-}
-
-\def\inlineextras@croatian{%
- \ifcroatian@babelshorthands\croatian@shorthands\fi%
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-croatian.ldf>
-%<*gloss-cy.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-cy.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-cy.ldf}[polyglossia: module for cy (welsh)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{welsh}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-cy.ldf>
-%<*gloss-cz.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-cz.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-cz.ldf}[polyglossia: module for cz (czech)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{czech}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-cz.ldf>
-%<*gloss-czech.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-czech.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-czech.ldf}[polyglossia: module for czech]
-
-\PolyglossiaSetup{czech}{
- bcp47=cz,
- hyphennames={czech},
- hyphenmins={2,2},
- langtag=CSY,
- frenchspacing=true,
- fontsetup=true,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{czech}{cz}
-
-\ifluatex
- \RequirePackage{luavlna}
-\fi
-
-\define@boolkey{czech}[czech@]{babelshorthands}[true]{}
-
-\define@boolkey{czech}[czech@]{splithyphens}[true]{}
-
-\define@boolkey{czech}[czech@]{vlna}[true]{}
-
-% Register default options
-\xpg@initialize@gloss@options{czech}{babelshorthands=false,splithyphens=true,vlna=true}
-
-\ifsystem@babelshorthands
- \setkeys{czech}{babelshorthands=true}
-\else
- \setkeys{czech}{babelshorthands=false}
-\fi
-
-\ifcsundef{initiate@active@char}{%
- \input{babelsh.def}%
- \initiate@active@char{"}%
- \shorthandoff{"}%
-}{}
-
-\def\cs@@splithyphen#1{%
- \ifnum\hyphenchar \font>0%
- \kern\z@\discretionary{-}{\char\hyphenchar\the\font}{#1}%
- \nobreak\hskip\z@%
- \else%
- #1%
- \fi%
-}
-
-\def\cs@splithyphen{%
- \cs@@splithyphen{-}%
-}
-
-\def\czech@shorthands{%
- \bbl@activate{"}%
- \def\language@group{czech}%
- \declare@shorthand{czech}{"=}{\cs@splithyphen}%
- \declare@shorthand{czech}{"`}{„}%
- \declare@shorthand{czech}{"'}{“}%
- \declare@shorthand{czech}{"<}{«}%
- \declare@shorthand{czech}{">}{»}%
-}
-
-\def\noczech@shorthands{%
- \@ifundefined{initiate@active@char}{}{\bbl@deactivate{"}}%
-}
-
-\ifxetex
- % splithyphens
- \newXeTeXintercharclass\czech@hyphen % -
- % vlna
- \newXeTeXintercharclass\czech@openpunctuation
- \newXeTeXintercharclass\czech@nonsyllabicpreposition
- \ifdefined\e@alloc@intercharclass@top
- \chardef\czech@boundary=\e@alloc@intercharclass@top
- \else
- \ifdefined\XeTeXinterwordspaceshaping
- \chardef\czech@boundary=4095 %
- \def\newXeTeXintercharclass{%
- \e@alloc\XeTeXcharclass\chardef
- \xe@alloc@intercharclass\m@ne\@ucharclass@boundary}
- \else
- \chardef\czech@boundary=255
- \fi
- \fi
-\fi
-
-\def\czech@hyphens{%
- \ifluatex
- \AfterPreamble{\enablesplithyphens{czech}}%
- \else
- \XeTeXinterchartokenstate=1
- \XeTeXcharclass `\- \czech@hyphen
- \XeTeXinterchartoks \z@ \czech@hyphen = {\cs@@splithyphen}% "-" -> "\cs@@splithyphen-"
- % necessary if used together with vlna:
- \XeTeXinterchartoks \czech@nonsyllabicpreposition \czech@hyphen = {\cs@@splithyphen}% "-" -> "\cs@@splithyphen-"
- \fi%
-}
-
-\def\noczech@hyphens{%
- \ifluatex
- \AfterPreamble{\disablesplithyphens{czech}}%
- \else
- \XeTeXcharclass `\- \z@
- \fi%
-}
-
-% Add nonbreakable space after single-letter word to
-% prevent them to land at the end of a line
-\def\czech@vlna{%
- \ifluatex
- \preventsingleon
- \else
- % Code taken and adapted from xevlna.sty
- \XeTeXinterchartokenstate=1
- \XeTeXcharclass `\( \czech@openpunctuation
- \XeTeXcharclass `\[ \czech@openpunctuation
- \XeTeXcharclass `\„ \czech@openpunctuation
- \XeTeXcharclass `\» \czech@openpunctuation
- \XeTeXcharclass `\K \czech@nonsyllabicpreposition
- \XeTeXcharclass `\k \czech@nonsyllabicpreposition
- \XeTeXcharclass `\S \czech@nonsyllabicpreposition
- \XeTeXcharclass `\s \czech@nonsyllabicpreposition
- \XeTeXcharclass `\V \czech@nonsyllabicpreposition
- \XeTeXcharclass `\v \czech@nonsyllabicpreposition
- \XeTeXcharclass `\Z \czech@nonsyllabicpreposition
- \XeTeXcharclass `\z \czech@nonsyllabicpreposition
- \XeTeXcharclass `\O \czech@nonsyllabicpreposition
- \XeTeXcharclass `\o \czech@nonsyllabicpreposition
- \XeTeXcharclass `\U \czech@nonsyllabicpreposition
- \XeTeXcharclass `\u \czech@nonsyllabicpreposition
- \XeTeXcharclass `\A \czech@nonsyllabicpreposition
- \XeTeXcharclass `\a \czech@nonsyllabicpreposition
- \XeTeXcharclass `\I \czech@nonsyllabicpreposition
- \XeTeXcharclass `\i \czech@nonsyllabicpreposition
- \XeTeXinterchartoks \czech@boundary \czech@nonsyllabicpreposition {\czech@interchartoks}
- \XeTeXinterchartoks \czech@openpunctuation \czech@nonsyllabicpreposition {\czech@interchartoks}
- \def\czech@nointerchartoks{\let\czech@interchartoks\czech@PreCSpreposition}
- \def\czech@PreCSpreposition{\def\next{}%
- \ifnum\catcode`\ =10 % nothing will be done in verbatim
- \ifmmode % nothing in math
- \else
- \let\czech@interchartoks\czech@nointerchartoks
- \let\next\czech@ExamineCSpreposition
- \fi \fi
- \next%
- }
- \def\czech@ExamineCSpreposition ##1{##1\futurelet\next\czech@ProcessCSpreposition}
- \def\czech@ProcessCSpreposition{\ifx\next\czech@XeTeXspace\nobreak\fi}
- \futurelet\czech@XeTeXspace{ }\czech@nointerchartoks
- \fi
-}
-
-\def\noczech@vlna{%
- \ifluatex
- \preventsingleoff
- \else
- \XeTeXcharclass`\(\z@
- \XeTeXcharclass`\[\z@
- \XeTeXcharclass`\„\z@
- \XeTeXcharclass`\»\z@
- \XeTeXcharclass`\K\z@
- \XeTeXcharclass`\k\z@
- \XeTeXcharclass`\S\z@
- \XeTeXcharclass`\s\z@
- \XeTeXcharclass`\V\z@
- \XeTeXcharclass`\v\z@
- \XeTeXcharclass`\Z\z@
- \XeTeXcharclass`\z\z@
- \XeTeXcharclass`\O\z@
- \XeTeXcharclass`\o\z@
- \XeTeXcharclass`\U\z@
- \XeTeXcharclass`\u\z@
- \XeTeXcharclass`\A\z@
- \XeTeXcharclass`\a\z@
- \XeTeXcharclass`\I\z@
- \XeTeXcharclass`\i\z@
- \fi
-}
-
-
-\def\captionsczech{%
- \def\refname{Reference}%
- \def\abstractname{Abstrakt}%
- \def\bibname{Literatura}%
- \def\prefacename{Předmluva}%
- \def\chaptername{Kapitola}%
- \def\appendixname{Dodatek}%
- \def\contentsname{Obsah}%
- \def\listfigurename{Seznam obrázků}%
- \def\listtablename{Seznam tabulek}%
- \def\indexname{Index}%
- \def\figurename{Obrázek}%
- \def\tablename{Tabulka}%
- %\def\thepart{}%
- \def\partname{Část}%
- \def\pagename{Strana}%
- \def\seename{viz}%
- \def\alsoname{viz}%
- \def\enclname{Příloha}%
- \def\ccname{Na vědomí:}%
- \def\headtoname{Komu}%
- \def\proofname{Důkaz}%
- \def\glossaryname{Slovník}%was Glosář
-}
-
-\def\dateczech{%
- \def\today{\number\day.~\ifcase\month\or
- ledna\or února\or března\or dubna\or května\or
- června\or července\or srpna\or září\or
- října\or listopadu\or prosince\fi
- \space \number\year}%
-}
-
-\def\noextras@czech{%
- \noczech@shorthands%
- \noczech@hyphens%
- \noczech@vlna%
- \ifxetex\XeTeXinterchartokenstate=0\fi%
-}
-
-\def\blockextras@czech{%
- \ifczech@babelshorthands\czech@shorthands\fi%
- \ifczech@vlna\czech@vlna\else\noczech@vlna\fi%
- \ifczech@splithyphens\czech@hyphens\else\noczech@hyphens\fi%
-}
-
-\def\inlineextras@czech{%
- \ifczech@babelshorthands\czech@shorthands\fi%
- \ifczech@vlna\czech@vlna\else\noczech@vlna\fi%
- \ifczech@splithyphens\czech@hyphens\else\noczech@hyphens\fi%
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-czech.ldf>
-%<*gloss-da.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-da.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-da.ldf}[polyglossia: module for da (danish)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{danish}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-da.ldf>
-%<*gloss-danish.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-danish.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-danish.ldf}[polyglossia: module for danish]
-\PolyglossiaSetup{danish}{
- bcp47=da,
- hyphennames={danish},
- hyphenmins={2,3},
- langtag=DAN,
- frenchspacing=true,
- fontsetup=true,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{danish}{da}
-
-\def\captionsdanish{%
- \def\prefacename{Forord}%
- \def\refname{Litteratur}%
- \def\abstractname{Resumé}%
- \def\bibname{Litteratur}%
- \def\chaptername{Kapitel}%
- \def\appendixname{Bilag}%
- \def\contentsname{Indhold}%
- \def\listfigurename{Figurer}%
- \def\listtablename{Tabeller}%
- \def\indexname{Indeks}%
- \def\figurename{Figur}%
- \def\tablename{Tabel}%
- \def\partname{Del}%
- \def\enclname{Vedlagt}%
- \def\ccname{Kopi til}% or Kopi sendt til
- \def\headtoname{Til}% in letter
- \def\pagename{Side}%
- \def\seename{Se}%
- \def\alsoname{Se også}%
- \def\proofname{Bevis}%
- \def\glossaryname{Gloseliste}%
-}
-\def\datedanish{%
- \def\today{\number\day.~\ifcase\month\or
- januar\or februar\or marts\or april\or maj\or juni\or
- juli\or august\or september\or oktober\or november\or december\fi
- \space\number\year}
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-danish.ldf>
-%<*gloss-de-AT-1901.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-de-AT-1901.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-de-AT-1901.ldf}[polyglossia: module for de-AT-1901 (german)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{german}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-de-AT-1901.ldf>
-%<*gloss-de-AT-1996.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-de-AT-1996.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-de-AT-1996.ldf}[polyglossia: module for de-AT-1996 (german)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{german}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-de-AT-1996.ldf>
-%<*gloss-de-AT.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-de-AT.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-de-AT.ldf}[polyglossia: module for de-AT (german)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{german}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-de-AT.ldf>
-%<*gloss-de-CH-1901.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-de-CH-1901.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-de-CH-1901.ldf}[polyglossia: module for de-CH-1901 (german)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{german}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-de-CH-1901.ldf>
-%<*gloss-de-CH-1996.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-de-CH-1996.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-de-CH-1996.ldf}[polyglossia: module for de-CH-1996 (german)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{german}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-de-CH-1996.ldf>
-%<*gloss-de-CH.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-de-CH.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-de-CH.ldf}[polyglossia: module for de-CH (german)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{german}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-de-CH.ldf>
-%<*gloss-de-DE-1901.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-de-DE-1901.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-de-DE-1901.ldf}[polyglossia: module for de-DE-1901 (german)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{german}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-de-DE-1901.ldf>
-%<*gloss-de-DE-1996.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-de-DE-1996.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-de-DE-1996.ldf}[polyglossia: module for de-DE-1996 (german)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{german}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-de-DE-1996.ldf>
-%<*gloss-de-DE.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-de-DE.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-de-DE.ldf}[polyglossia: module for de-DE (german)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{german}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-de-DE.ldf>
-%<*gloss-de-Latf-AT-1901.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-de-Latf-AT-1901.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-de-AT-1901-Latf.ldf}[polyglossia: module for de-AT-1901-Latf (german)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{german}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-de-Latf-AT-1901.ldf>
-%<*gloss-de-Latf-AT-1996.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-de-Latf-AT-1996.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-de-AT-1996-Latf.ldf}[polyglossia: module for de-AT-1996-Latf (german)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{german}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-de-Latf-AT-1996.ldf>
-%<*gloss-de-Latf-AT.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-de-Latf-AT.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-de-AT-Latf.ldf}[polyglossia: module for de-AT-Latf (german)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{german}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-de-Latf-AT.ldf>
-%<*gloss-de-Latf-CH-1901.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-de-Latf-CH-1901.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-de-CH-1901-Latf.ldf}[polyglossia: module for de-CH-1901-Latf (german)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{german}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-de-Latf-CH-1901.ldf>
-%<*gloss-de-Latf-CH-1996.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-de-Latf-CH-1996.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-de-CH-1996-Latf.ldf}[polyglossia: module for de-CH-1996-Latf (german)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{german}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-de-Latf-CH-1996.ldf>
-%<*gloss-de-Latf-CH.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-de-Latf-CH.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-de-CH-Latf.ldf}[polyglossia: module for de-CH-Latf (german)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{german}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-de-Latf-CH.ldf>
-%<*gloss-de-Latf-DE-1901.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-de-Latf-DE-1901.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-de-DE-1901-Latf.ldf}[polyglossia: module for de-DE-1901-Latf (german)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{german}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-de-Latf-DE-1901.ldf>
-%<*gloss-de-Latf-DE-1996.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-de-Latf-DE-1996.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-de-DE-1996-Latf.ldf}[polyglossia: module for de-DE-1996-Latf (german)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{german}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-de-Latf-DE-1996.ldf>
-%<*gloss-de-Latf-DE.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-de-Latf-DE.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-de-DE-Latf.ldf}[polyglossia: module for de-DE-Latf (german)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{german}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-de-Latf-DE.ldf>
-%<*gloss-de-Latf.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-de-Latf.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-de-Latf.ldf}[polyglossia: module for de-Latf (german)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{german}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-de-Latf.ldf>
-%<*gloss-de.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-de.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-de.ldf}[polyglossia: module for de (german)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{german}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-de.ldf>
-%<*gloss-divehi.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-divehi.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-divehi.ldf}[polyglossia: module for divehi]
-\ifluatex
- \xpg@warning{Divehi is not supported with LuaTeX.\MessageBreak
-I will proceed with the compilation, but\MessageBreak
-the output is not guaranteed to be correct\MessageBreak
-and may look very wrong.}
-\fi
-\RequireBidi
-\PolyglossiaSetup{divehi}{
- bcp47=dv,
- script=Thaana,
- scripttag=thaa,
- langtag=DIV,% TODO Support DHV as well?
- direction=RL,
- hyphennames={nohyphenation},
- fontsetup=true
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{divehi}{dv}
-
-%\def\captionsdivehi{%
-% \def\refname{<++>}%
-% \def\abstractname{<++>}%
-% \def\bibname{<++>}%
-% \def\prefacename{<++>}%
-% \def\chaptername{<++>}%
-% \def\appendixname{<++>}%
-% \def\contentsname{<++>}%
-% \def\listfigurename{<++>}%
-% \def\listtablename{<++>}%
-% \def\indexname{<++>}%
-% \def\figurename{<++>}%
-% \def\tablename{<++>}%
-% \def\thepart{}%
-% \def\partname{<++>}%
-% \def\pagename{<++>}%
-% \def\seename{<++>}%
-% \def\alsoname{<++>}%
-% \def\enclname{<++>}%
-% \def\ccname{<++>}%
-% \def\headtoname{<++>}%
-% \def\proofname{<++>}%
-% \def\glossaryname{<++>}%
-% }
-%\def\datedivehi{\def\today{<++>}}
-
-% Save original \MakeUppercase definition
-\let\xpg@save@MakeUppercase\MakeUppercase
-
-\def\blockextras@divehi{%
- \def\MakeUppercase##1{##1}%
-}
-
-\def\noextras@divehi{%
- % restore original \MakeUppercase definition
- \let\MakeUppercase\xpg@save@MakeUppercase%
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-divehi.ldf>
-%<*gloss-dsb.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-dsb.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-dsb.ldf}[polyglossia: module for dsb (sorbian)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{sorbian}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-dsb.ldf>
-%<*gloss-dutch.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-dutch.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-dutch.ldf}[polyglossia: module for dutch]
-\PolyglossiaSetup{dutch}{
- bcp47=nl,
- hyphennames={dutch},
- hyphenmins={2,2},
- langtag=NLD,
- frenchspacing=true,
- fontsetup=true,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{dutch}{nl}
-
-\define@boolkey{dutch}[dutch@]{babelshorthands}[true]{}
-
-% Register default options
-\xpg@initialize@gloss@options{dutch}{babelshorthands=false}
-
-\ifsystem@babelshorthands
- \setkeys{dutch}{babelshorthands=true}
-\else
- \setkeys{dutch}{babelshorthands=false}
-\fi
-
-\ifcsundef{initiate@active@char}{%
- \input{babelsh.def}%
- \initiate@active@char{"}%
- \shorthandoff{"}%
-}{}
-
-\def\dutch@shorthands{%
- \bbl@activate{"}%
- \def\language@group{dutch}%
- \declare@shorthand{dutch}{"-}{\nobreak-\bbl@allowhyphens}
- \declare@shorthand{dutch}{"~}{\textormath{\leavevmode\hbox{-}}{-}}
- \declare@shorthand{dutch}{"|}{%
- \textormath{\discretionary{-}{}{\kern.03em}}{}}
- \declare@shorthand{dutch}{""}{\hskip\z@skip}
- \declare@shorthand{dutch}{"/}{\textormath
- {\bbl@allowhyphens\discretionary{/}{}{/}\bbl@allowhyphens}{}}%
- \def\-{\bbl@allowhyphens\discretionary{-}{}{}\bbl@allowhyphens}%
-}
-
-\def\nodutch@shorthands{%
- \@ifundefined{initiate@active@char}{}{\bbl@deactivate{"}}%
- \def\-{\discretionary{-}{}{}}% << original def in latex.ltx
-}
-
-\def\captionsdutch{%
- \def\prefacename{Voorwoord}%
- \def\refname{Referenties}%
- \def\abstractname{Samenvatting}%
- \def\bibname{Bibliografie}%
- \def\chaptername{Hoofdstuk}%
- \def\appendixname{Bijlage}%
- \def\contentsname{Inhoudsopgave}%
- \def\listfigurename{Lijst van figuren}%
- \def\listtablename{Lijst van tabellen}%
- \def\indexname{Index}%
- \def\figurename{Figuur}%
- \def\tablename{Tabel}%
- \def\partname{Deel}%
- \def\enclname{Bijlage(n)}%
- \def\ccname{cc}%
- \def\headtoname{Aan}%
- \def\pagename{Pagina}%
- \def\seename{zie}%
- \def\alsoname{zie ook}%
- \def\proofname{Bewijs}%
- \def\glossaryname{Verklarende woordenlijst}%
-}
-
-\def\datedutch{%
- \def\today{\number\day~\ifcase\month%
- \or januari\or februari\or maart\or april\or mei\or juni\or
- juli\or augustus\or september\or oktober\or november\or
- december\fi
- \space \number\year}%
-}
-
-\def\noextras@dutch{%
- \nodutch@shorthands%
-}
-
-\def\blockextras@dutch{%
- \ifdutch@babelshorthands\dutch@shorthands\fi%
-}
-
-\def\inlineextras@dutch{%
- \ifdutch@babelshorthands\dutch@shorthands\fi%
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-dutch.ldf>
-%<*gloss-dv.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-dv.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-dv.ldf}[polyglossia: module for dv (divehi)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{divehi}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-dv.ldf>
-%<*gloss-el-monoton.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-el-monoton.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-el-monoton.ldf}[polyglossia: module for el-monoton (greek)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{greek}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-el-monoton.ldf>
-%<*gloss-el-polyton.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-el-polyton.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-el-polyton.ldf}[polyglossia: module for el-polyton (greek)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{greek}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-el-polyton.ldf>
-%<*gloss-el.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-el.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-el.ldf}[polyglossia: module for el (greek)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{greek}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-el.ldf>
-%<*gloss-en-AU.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-en-AU.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-en-AU.ldf}[polyglossia: module for en-AU (english)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{english}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-en-AU.ldf>
-%<*gloss-en-CA.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-en-CA.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-en-CA.ldf}[polyglossia: module for en-CA (english)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{english}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-en-CA.ldf>
-%<*gloss-en-GB.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-en-GB.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-en-GB.ldf}[polyglossia: module for en-GB (english)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{english}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-en-GB.ldf>
-%<*gloss-en-NZ.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-en-NZ.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-en-NZ.ldf}[polyglossia: module for en-NZ (english)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{english}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-en-NZ.ldf>
-%<*gloss-en-US.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-en-US.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-en-US.ldf}[polyglossia: module for en-US (english)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{english}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-en-US.ldf>
-%<*gloss-en.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-en.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-en.ldf}[polyglossia: module for en (english)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{english}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-en.ldf>
-%<*gloss-english.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-english.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-english.ldf}[polyglossia: module for english]
-
-\PolyglossiaSetup{english}{
- bcp47=en-US,
- hyphennames={english,american,usenglish,USenglish},
- hyphenmins={2,3},
- langtag=ENG,
- fontsetup=true,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{english}{en}
-\setlanguagealias*[variant=australian]{english}{en-AU}
-\setlanguagealias*[variant=newzealand]{english}{en-NZ}
-\setlanguagealias*[variant=us]{english}{en-US}
-\setlanguagealias*[variant=british]{english}{en-GB}
-\setlanguagealias*[variant=canadian]{english}{en-CA}
-
-% Babel aliases
-\setlanguagealias[variant=us]{english}{american}
-\setlanguagealias[variant=australian]{english}{australian}
-\setlanguagealias[variant=british]{english}{british}
-\setlanguagealias[variant=canadian]{english}{canadian}
-\setlanguagealias[variant=newzealand]{english}{newzealand}
-
-\providebool{british@hyphen}
-\providebool{english@ordinalmonthday}
-\providebool{british@dateformat}
-
-% US English (\l@english) is default
-% Initialize its settings
-\def\english@variant{english}
-\british@hyphenfalse
-\english@ordinalmonthdayfalse
-\british@dateformatfalse
-
-% Option ordinalmonthday
-\define@boolkey{english}[english@]{ordinalmonthday}[true]{}
-
-\define@choicekey*+{english}{variant}[\xpg@val\xpg@nr]{uk,british,us,american,usmax,australian,newzealand,canadian}[us]{%
- \ifcase\xpg@nr\relax
- % uk:
- \british@hyphentrue
- \british@dateformattrue
- \english@ordinalmonthdaytrue
- \SetLanguageKeys{english}{babelname=british,bcp47=en-GB}%
- \xpg@info{Option: English, variant=british}%
- \or
- % british:
- \british@hyphentrue
- \british@dateformattrue
- \english@ordinalmonthdaytrue
- \SetLanguageKeys{english}{babelname=british,bcp47=en-GB}%
- \xpg@info{Option: english variant=british}%
- \or
- % us:
- \british@hyphenfalse
- \british@dateformatfalse
- \english@ordinalmonthdayfalse
- \SetLanguageKeys{english}{babelname=american,bcp47=en-US}%
- \xpg@info{Option: English, variant=american}%
- \or
- % american:
- \british@hyphenfalse
- \british@dateformatfalse
- \english@ordinalmonthdayfalse
- \SetLanguageKeys{english}{babelname=american,bcp47=en-US}%
- \xpg@info{Option: English, variant=american}%
- \or
- % usmax:
- \british@hyphenfalse
- \british@dateformatfalse
- \english@ordinalmonthdayfalse
- \SetLanguageKeys{english}{babelname=american,bcp47=en-US}%
- \xpg@info{Option: english variant=american (with additional patterns)}%
- \xpg@ifdefined{usenglishmax}{}%
- {\xpg@warning{No hyphenation patterns were loaded for "US English Max"\MessageBreak
- I will use the standard patterns for US English instead}%
- \adddialect\l@usenglishmax\l@english\relax%
- }%
- \def\english@variant{usenglishmax}%
- \or
- % australian:
- % These use the british hyphenation patterns
- % but date formats without ordinals
- \british@hyphentrue
- \british@dateformattrue
- \english@ordinalmonthdayfalse
- \SetLanguageKeys{english}{babelname=australian,bcp47=en-AU}%
- \xpg@info{Option: English, variant=australian}%
- \adddialect\l@australian\l@english%
- \or
- % newzealand:
- % These use the british hyphenation patterns
- % but date formats without ordinals
- \british@hyphentrue
- \british@dateformattrue
- \english@ordinalmonthdayfalse
- \SetLanguageKeys{english}{babelname=newzealand,bcp47=en-NZ}%
- \xpg@info{Option: English, variant=newzealand}%
- \adddialect\l@newzealand\l@english%
- \or
- % canadian:
- % This is currently equivalent to usenglish (as in babel)
- \british@hyphenfalse
- \british@dateformatfalse
- \english@ordinalmonthdayfalse
- \SetLanguageKeys{english}{babelname=canadian,bcp47=en-CA}%
- \xpg@info{Option: English, variant=american}%
- \adddialect\l@canadian\l@english%
- \fi
- \ifbritish@hyphen
- \xpg@ifdefined{ukenglish}{}%
- {\xpg@warning{No hyphenation patterns were loaded for British English\MessageBreak
- I will use the patterns for US English instead}%
- \adddialect\l@ukenglish\l@english\relax%
- }%
- \def\english@variant{ukenglish}%
- \fi
-}{\xpg@warning{Unknown English variant `#1'}}
-
-% Register default options
-\xpg@initialize@gloss@options{english}{variant=us,ordinalmonthday=false}
-% Register alias options
-\xpg@set@alias@values{english}{variant}{us}{american}
-\xpg@set@alias@values{english}{variant}{uk}{british}
-
-\ifxetex
- % Check if \l@english is defined. If not, try to set it to some variety
- % (specific order as in the csv list below), or null language if everything fails
- \xpg@ifdefined{english}{}{%
- \def\do##1{%
- \xpg@ifdefined{#1}%
- {\csletcs{l@english}{l@#1}\listbreak}%
- {%
- \xpg@warning{No hyphenation patterns for English found"\MessageBreak
- I will use the 'null' language instead}%
- \adddialect\l@english0
- }%
- }%
- \docsvlist{british, american, usenglishmax, australian, newzealand}
- \xpg@ifdefined{english}{}{}
- }%
-\fi
-
-\def\english@language{%
- \polyglossia@setup@language@patterns{\english@variant}%
-}%
-
-\def\captionsenglish{%
- \def\prefacename{Preface}%
- \def\refname{References}%
- \def\abstractname{Abstract}%
- \def\bibname{Bibliography}%
- \def\chaptername{Chapter}%
- \def\appendixname{Appendix}%
- \def\contentsname{Contents}%
- \def\listfigurename{List of Figures}%
- \def\listtablename{List of Tables}%
- \def\indexname{Index}%
- \def\figurename{Figure}%
- \def\tablename{Table}%
- \def\partname{Part}%
- \def\enclname{encl}%
- \def\ccname{cc}%
- \def\headtoname{To}%
- \def\pagename{Page}%
- \def\seename{see}%
- \def\alsoname{see also}%
- \def\proofname{Proof}%
-}
-\def\dateenglish{%
- \def\english@day{%
- \ifenglish@ordinalmonthday
- \ifcase\day\or
- 1st\or 2nd\or 3rd\or 4th\or 5th\or
- 6th\or 7th\or 8th\or 9th\or 10th\or
- 11th\or 12th\or 13th\or 14th\or 15th\or
- 16th\or 17th\or 18th\or 19th\or 20th\or
- 21st\or 22nd\or 23rd\or 24th\or 25th\or
- 26th\or 27th\or 28th\or 29th\or 30th\or
- 31st\fi
- \else\number\day\fi}%
- \def\english@month{\ifcase\month\or
- January\or February\or March\or April\or May\or June\or
- July\or August\or September\or October\or November\or December\fi}%
- \def\today{%
- \ifbritish@dateformat
- \english@day\space\english@month\space\number\year
- \else
- \english@month\space\english@day,\space\number\year
- \fi}%
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-english.ldf>
-%<*gloss-eo.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-eo.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-eo.ldf}[polyglossia: module for eo (esperanto)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{esperanto}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-eo.ldf>
-%<*gloss-es-ES.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-es-ES.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-es-ES.ldf}[polyglossia: module for es-ES (spanish)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{spanish}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-es-ES.ldf>
-%<*gloss-es-MX.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-es-MX.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-es-MX.ldf}[polyglossia: module for es-MX (spanish)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{spanish}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-es-MX.ldf>
-%<*gloss-es.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-es.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-es.ldf}[polyglossia: module for es (spanish)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{spanish}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-es.ldf>
-%<*gloss-esperanto.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-esperanto.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-esperanto.ldf}[polyglossia: module for esperanto]
-\PolyglossiaSetup{esperanto}{
- bcp47=eo,
- hyphennames={esperanto},
- hyphenmins={2,2},
- langtag=NTO,
- fontsetup=true,
- %TODO localalph={esperanto@alph,esperanto@Alph}
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{esperanto}{eo}
-
-\def\captionsesperanto{%
- \def\refname{Citaĵoj}%
- \def\abstractname{Resumo}%
- \def\bibname{Bibliografio}%
- \def\prefacename{Antaŭparolo}%
- \def\chaptername{Ĉapitro}%
- \def\appendixname{Apendico}%
- \def\contentsname{Enhavo}%
- \def\listfigurename{Listo de figuroj}%
- \def\listtablename{Listo de tabeloj}%
- \def\indexname{Indekso}%
- \def\figurename{Figuro}%
- \def\tablename{Tabelo}%
- %\def\thepart{}%
- %\def\partname{}%
- \def\pagename{Paĝo}%
- \def\seename{vidu}%
- \def\alsoname{Parto}%
- \def\enclname{Aldono(j)}%
- \def\ccname{Kopie al}%
- \def\headtoname{Al}%
- \def\proofname{Pruvo}%
- \def\glossaryname{Glosaro}%
- }
-\def\dateesperanto{%
- \def\today{\number\day{–a}~de~\ifcase\month\or
- januaro\or februaro\or marto\or aprilo\or majo\or junio\or
- julio\or aŭgusto\or septembro\or oktobro\or novembro\or
- decembro\fi,\space \number\year}%
- \def\hodiau{la \today}%
- \def\hodiaun{la \number\day{–an}~de~\ifcase\month\or
- januaro\or februaro\or marto\or aprilo\or majo\or junio\or
- julio\or aŭgusto\or septembro\or oktobro\or novembro\or
- decembro\fi, \space \number\year}%
- }
-\def\esperanto@alph#1{%
- \ifcase#1\or a\or b\or c\or ĉ\or d\or e\or f\or g\or ĝ\or
- h\or ĥ\or i\or j\or ĵ\or k\or l\or m\or n\or o\or
- p\or r\or s\or ŝ\or t\or u\or ŭ\or v\or z\else\xpg@ill@value{#1}{esperanto@alph}\fi}%
-\def\esperanto@Alph#1{%
- \ifcase#1\or A\or B\or C\or Ĉ\or D\or E\or F\or G\or Ĝ\or
- H\or Ĥ\or I\or J\or Ĵ\or K\or L\or M\or N\or O\or
- P\or R\or S\or Ŝ\or T\or U\or Ŭ\or V\or Z\else\xpg@ill@value{#1}{esperanto@Alph}\fi}%
-
-\def\esperanto@numbers{%
- \let\@Alph\esperanto@Alph%
- \let\@alph\esperanto@alph%
- }
-
-\def\noesperanto@numbers{%
- \let\@Alph\latin@Alph%
- \let\@alph\latin@alph%
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-esperanto.ldf>
-%<*gloss-estonian.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-estonian.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-estonian.ldf}[polyglossia: module for estonian]
-\PolyglossiaSetup{estonian}{
- bcp47=et,
- hyphennames={estonian},
- hyphenmins={2,2},
- langtag=ETI,
- frenchspacing=true,
- fontsetup=true,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{estonian}{et}
-
-\def\captionsestonian{%
- \def\refname{Viited}%
- \def\abstractname{Kokkuvõte}%
- \def\bibname{Kirjandus}%
- \def\prefacename{Sissejuhatus}%
- \def\chaptername{Peatükk}%
- \def\appendixname{Lisa}%
- \def\contentsname{Sisukord}%
- \def\listfigurename{Joonised}%
- \def\listtablename{Tabelid}%
- \def\indexname{Indeks}%
- \def\figurename{Joonis}%
- \def\tablename{Tabel}%
- %\def\thepart{}%
- \def\partname{Osa}%
- \def\pagename{Lk.}%
- \def\seename{vt.}%
- \def\alsoname{vt. ka}%
- \def\enclname{Lisa(d)}%
- \def\ccname{Koopia(d)}%
- %\def\headtoname{}%
- \def\proofname{Korrektuur}%
- \def\glossaryname{Glossary}% <-- need translation
- }
-\def\dateestonian{%
- \def\today{\number\day.\space\ifcase\month\or
- jaanuar\or veebruar\or märts\or aprill\or mai\or juuni\or
- juuli\or august\or september\or oktoober\or november\or
- detsember\fi\space\number\year.\space a.}}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-estonian.ldf>
-%<*gloss-et.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-et.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-et.ldf}[polyglossia: module for et (estonian)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{estonian}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-et.ldf>
-%<*gloss-eu.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-eu.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-eu.ldf}[polyglossia: module for eu (basque)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{basque}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-eu.ldf>
-%<*gloss-fa.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-fa.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-fa.ldf}[polyglossia: module for fa (persian)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{persian}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-fa.ldf>
-%<*gloss-farsi.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-farsi.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-farsi.ldf}[polyglossia: module for farsi]
-
-% We only provide this gloss for babel compatibility.
-% The proper English language name is Persian.
-
-\xpg@load@master@language{persian}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-farsi.ldf>
-%<*gloss-fi.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-fi.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-fi.ldf}[polyglossia: module for fi (finnish)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{finnish}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-fi.ldf>
-%<*gloss-finnish.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-finnish.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-finnish.ldf}[polyglossia: module for finnish]
-\PolyglossiaSetup{finnish}{
- bcp47=fi,
- hyphennames={finnish},
- hyphenmins={2,2},
- langtag=FIN,
- frenchspacing=true,
- fontsetup=true,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{finnish}{fi}
-
-\define@boolkey{finnish}[finnish@]{babelshorthands}[true]{}
-
-% Register default options
-\xpg@initialize@gloss@options{finnish}{babelshorthands=false}
-
-\ifsystem@babelshorthands
- \setkeys{finnish}{babelshorthands=true}
-\else
- \setkeys{finnish}{babelshorthands=false}
-\fi
-
-\ifcsundef{initiate@active@char}{%
- \input{babelsh.def}%
- \initiate@active@char{"}%
- \shorthandoff{"}%
-}{}
-
-\def\finnish@shorthands{%
- \bbl@activate{"}%
- \def\language@group{finnish}%
- \declare@shorthand{finnish}{"-}{\nobreak-\bbl@allowhyphens}
- \declare@shorthand{finnish}{"|}{\textormath{\penalty@M\discretionary{-}{}{\kern.03em}}{}}%
- \declare@shorthand{finnish}{""}{\hskip\z@skip}%
- \declare@shorthand{finnish}{"~}{\textormath{\leavevmode\hbox{-}}{-}}%
- \declare@shorthand{finnish}{"=}{\penalty@M-\hskip\z@skip}%
- \declare@shorthand{finnish}{"/}{\textormath
- {\bbl@allowhyphens\discretionary{/}{}{/}\bbl@allowhyphens}{}}%
-}
-
-\def\nofinnish@shorthands{%
- \@ifundefined{initiate@active@char}{}{\bbl@deactivate{"}}%
-}
-
-\def\captionsfinnish{%
- \def\refname{Viitteet}%
- \def\abstractname{Tiivistelmä}%
- \def\bibname{Kirjallisuutta}%
- \def\prefacename{Esipuhe}%
- \def\chaptername{Luku}%
- \def\appendixname{Liite}%
- \def\contentsname{Sisällys}%
- \def\listfigurename{Kuvat}%
- \def\listtablename{Taulukot}%
- \def\indexname{Hakemisto}%
- \def\figurename{Kuva}%
- \def\tablename{Taulukko}%
- %\def\thepart{}%
- \def\partname{Osa}%
- \def\pagename{Sivu}%
- \def\seename{katso}%
- \def\alsoname{katso myös}%
- \def\enclname{Liitteet}%
- \def\ccname{Jakelu}%
- \def\headtoname{Vastaanottaja}%
- \def\proofname{Todistus}%
- \def\glossaryname{Sanasto}%
-}
-\def\datefinnish{%
- \def\today{\number\day.~\ifcase\month\or
- tammikuuta\or helmikuuta\or maaliskuuta\or huhtikuuta\or
- toukokuuta\or kesäkuuta\or heinäkuuta\or elokuuta\or
- syyskuuta\or lokakuuta\or marraskuuta\or joulukuuta\fi
- \space\number\year}}
-
-\def\noextras@finnish{%
- \nofinnish@shorthands%
-}
-
-\def\blockextras@finnish{%
- \iffinnish@babelshorthands\finnish@shorthands\fi%
-}
-
-\def\inlineextras@finnish{%
- \iffinnish@babelshorthands\finnish@shorthands\fi%
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-finnish.ldf>
-%<*gloss-fr-CA.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-fr-CA.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-fr-CA.ldf}[polyglossia: module for fr-CA (french)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{french}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-fr-CA.ldf>
-%<*gloss-fr-CH.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-fr-CH.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-fr-CH.ldf}[polyglossia: module for fr-CH (french)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{french}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-fr-CH.ldf>
-%<*gloss-fr-FR.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-fr-FR.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-fr-FR.ldf}[polyglossia: module for fr-FR (french)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{french}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-fr-FR.ldf>
-%<*gloss-fr.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-fr.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-fr.ldf}[polyglossia: module for fr (french)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{french}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-fr.ldf>
-%<*gloss-french.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-french.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-french.ldf}[polyglossia: module for french]
-
-\PolyglossiaSetup{french}{%
- bcp47=fr-FR,
- language=French,
- script=Latin,
- langtag=FRA,
- hyphennames={french,francais},
- frenchspacing=true,
- indentfirst=true,
- hyphenmins={2,2},
- fontsetup=true}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{french}{fr}
-\setlanguagealias*[variant=french]{french}{fr-FR}
-\setlanguagealias*[variant=canadian]{french}{fr-CA}
-\setlanguagealias*[variant=swiss]{french}{fr-CH}
-
-% Babel aliases
-\setlanguagealias[variant=acadian]{french}{acadien}
-\setlanguagealias[variant=canadian]{french}{canadien}
-
-\def\french@variant{french}
-\define@choicekey*+{french}{variant}[\xpg@val\xpg@nr]{french,canadian,acadian,swiss}[french]{%
- \ifcase\xpg@nr\relax
- % french:
- \def\french@variant{french}%
- \SetLanguageKeys{french}{babelname=french,bcp47=fr-FR}%
- \french@thincolonspacefalse
- \or
- % canadian:
- \def\french@variant{canadien}%
- \SetLanguageKeys{french}{babelname=canadien,bcp47=fr-CA}%
- \xpg@ifdefined{canadien}{}%
- {\xpg@warning{No hyphenation patterns were loaded for "French (Canada)"\MessageBreak
- I will use the standard patterns for French instead}%
- \adddialect\l@canadien\l@french\relax}%
- \french@thincolonspacefalse
- \or
- % acadian:
- \def\french@variant{acadian}%
- \SetLanguageKeys{french}{babelname=canadien,bcp47=fr-CA}%
- \xpg@ifdefined{acadian}{}%
- {\xpg@warning{No hyphenation patterns were loaded for "French (Canada)"\MessageBreak
- I will use the standard patterns for French instead}%
- \adddialect\l@acadian\l@french\relax}%
- \french@thincolonspacefalse
- \or
- % swiss:
- \def\french@variant{swissfrench}%
- \SetLanguageKeys{french}{babelname=french,bcp47=fr-CH}%
- \adddialect\l@swissfrench\l@french\relax%
- \french@thincolonspacetrue
- \fi
- \xpg@info{Option: French, variant=\xpg@val}%
-}{\xpg@warning{Unknown French variant `#1'}}
-
-
-\def\french@language{%
- \polyglossia@setup@language@patterns{\french@variant}%
-}%
-
-\ifluatex
- \directlua{require('polyglossia-french')}%
-\else
- \newXeTeXintercharclass\french@openbrackets % ( [ {
- \newXeTeXintercharclass\french@closebrackets % ) ] }
- \newXeTeXintercharclass\french@questionexclamation % ! ? et autres
- \newXeTeXintercharclass\french@punctthin % ; (et :)
- \newXeTeXintercharclass\french@punctthick % :
- \newXeTeXintercharclass\french@punctguillstart % « ‹
- \newXeTeXintercharclass\french@punctguillend % » ›
-\fi
-
-\def\xpg@unskip{\ifhmode\ifdim\lastskip>\z@\unskip\fi\fi}
-
-% Save original footnote definition
-% Do this at the end of the preamble to catch other
-% packages' footnote changes (#391)
-\AtEndPreamble{%
- \let\xpg@orig@makefntext\@makefntext
-}
-
-\define@boolkey{french}[french@]{frenchfootnote}[true]{%
- \AfterPreamble{%
- \iffrench@frenchfootnote
- \ifdefstring{\xpg@main@language}{french}{%
- \ifx\@makefntext\undefined\else
- \long\def\french@makefntext##1{%
- \parindent1em \noindent\quad%
- \ifx\@thefnmark\empty\else%
- \@thefnmark.\space\fi ##1%
- }
- \let\@makefntext\french@makefntext
- \fi
- }{\xpg@warning{Option 'frenchfootnote' only supported if French is main language!}}%
- \else
- \let\@makefntext\xpg@orig@makefntext
- \fi
- }%
-}
-
-\define@boolkey{french}[french@]{autospacing}[true]{}
-\french@autospacingtrue
-
-\newif\iffrench@autospaceguillemets
-\define@boolkey{french}[french@]{autospaceguillemets}[true]{}
-\french@autospaceguillemetstrue
-
-\newif\iffrench@thincolonspace
-\define@boolkey{french}[french@]{thincolonspace}[true]{}
-\french@thincolonspacefalse
-
-% Backwards compatibility
-\define@boolkey{french}[french@]{automaticspacesaroundguillemets}[true]{%
- \iffrench@automaticspacesaroundguillemets
- \setkeys{french}{autospaceguillemets=true}%
- \else
- \setkeys{french}{autospaceguillemets=false}%
- \fi
-}
-
-% name is for compatibility with babel
-\let\french@ttfamilyORI\ttfamily
-\DeclareRobustCommand\french@ttfamilyFB{\nofrench@punctuation\french@ttfamilyORI}
-
-% Allow to switch on autospacing in ttfamily context
-\define@boolkey{french}[french@]{autospacetypewriter}[true]{}
-\french@autospacetypewriterfalse
-
-% This is how babel-french has it
-\define@boolkey{french}[french@]{OriginalTypewriter}[true]{%
- \iffrench@OriginalTypewriter
- \setkeys{french}{autospacetypewriter=false}%
- \else
- \setkeys{french}{autospacetypewriter=true}%
- \fi
-}
-
-% Configuration of item labels
-\def\french@itemi{\textemdash}
-\def\french@itemii{\textemdash}
-\def\french@itemiii{\textemdash}
-\def\french@itemiv{\textemdash}
-
-\define@key{french}{itemlabels}[\textemdash]{%
- \def\french@itemi{#1}
- \def\french@itemii{#1}
- \def\french@itemiii{#1}
- \def\french@itemiv{#1}
-}
-
-\define@key{french}{itemlabeli}[\textemdash]{%
- \def\french@itemi{#1}
-}
-
-\define@key{french}{itemlabelii}[\textemdash]{%
- \def\french@itemii{#1}
-}
-
-\define@key{french}{itemlabeliii}[\textemdash]{%
- \def\french@itemiii{#1}
-}
-
-\define@key{french}{itemlabeliv}[\textemdash]{%
- \def\french@itemiv{#1}
-}
-
-\define@boolkey{french}[french@]{frenchitemlabels}[true]{%
- \AfterPreamble{%
- \iffrench@frenchitemlabels
- \ifdefstring{\xpg@main@language}{french}{%
- \renewcommand{\labelitemi}{\french@itemi}%
- \renewcommand{\labelitemii}{\french@itemii}%
- \renewcommand{\labelitemiii}{\french@itemiii}%
- \renewcommand{\labelitemiv}{\french@itemiv}%
- }{\xpg@warning{Option 'frenchitemlabels' only supported if French is main language!}}%
- \else
- \let\@makefntext\xpg@orig@makefntext
- \fi
- }%
-}
-
-% Register default options
-\xpg@initialize@gloss@options{french}{variant=french,autospacing=true,thincolonspace=false,
- autospaceguillemets=true,autospacetypewriter=false,
- frenchfootnote=false,frenchitemlabels=false,
- itemlabels=\textemdash,itemlabeli=\textemdash,itemlabelii=\textemdash,
- itemlabeliii=\textemdash,itemlabeliv=\textemdash}
-% Register alias options
-\xpg@set@alias@values{french}{variant}{canadian}{acadian}
-
-
-\def\french@fontsetup{%
- \unless\iffrench@autospacetypewriter
- \let\ttfamily\french@ttfamilyFB
- \fi
-}
-
-
-\def\nofrench@fontsetup{%
- \let\ttfamily\french@ttfamilyORI
-}
-
-\def\xpg@french@thinsp{\kern 0.5\fontdimen2\font}
-
-\def\french@punctuation{%
- \lccode"2019="2019
- \ifluatex
- \iffrench@thincolonspace
- \iffrench@autospaceguillemets
- \directlua{polyglossia.activate_french_punct(true, true)}%
- \else
- \directlua{polyglossia.activate_french_punct(true, false)}%
- \fi
- \else
- \iffrench@autospaceguillemets
- \directlua{polyglossia.activate_french_punct(false, true)}%
- \else
- \directlua{polyglossia.activate_french_punct(false, false)}%
- \fi
- \fi
- \else
- \XeTeXinterchartokenstate=1
- \XeTeXcharclass `\! \french@questionexclamation
- \XeTeXcharclass `\? \french@questionexclamation
- \XeTeXcharclass `\‼ \french@questionexclamation
- \XeTeXcharclass `\⁇ \french@questionexclamation
- \XeTeXcharclass `\⁈ \french@questionexclamation
- \XeTeXcharclass `\⁉ \french@questionexclamation
- \XeTeXcharclass `\‽ \french@questionexclamation % U+203D (interrobang)
- \XeTeXcharclass `\; \french@punctthin
- \iffrench@thincolonspace
- \XeTeXcharclass `\: \french@punctthin
- \else
- \XeTeXcharclass `\: \french@punctthick
- \fi
- \XeTeXcharclass `\« \french@punctguillstart
- \XeTeXcharclass `\» \french@punctguillend
- \XeTeXcharclass `\‹ \french@punctguillstart
- \XeTeXcharclass `\› \french@punctguillend
- \XeTeXcharclass `\( \french@openbrackets
- \XeTeXcharclass `\) \french@closebrackets
- \XeTeXcharclass `\[ \french@openbrackets
- \XeTeXcharclass `\] \french@closebrackets
- \XeTeXcharclass `\{ \french@openbrackets
- \XeTeXcharclass `\} \french@closebrackets
- \XeTeXcharclass `\⟨ \french@openbrackets
- \XeTeXcharclass `\⟩ \french@closebrackets
- \XeTeXinterchartoks \z@ \french@questionexclamation = {\xpg@french@thinsp}%
- \XeTeXinterchartoks \z@ \french@punctthin = {\xpg@french@thinsp}%
- \XeTeXinterchartoks \z@ \french@punctthick = {\nobreakspace}%
- \XeTeXinterchartoks \xpg@boundaryclass \french@questionexclamation = {\xpg@unskip\xpg@french@thinsp}%
- \XeTeXinterchartoks \xpg@boundaryclass \french@punctthin = {\xpg@unskip\xpg@french@thinsp}%
- \XeTeXinterchartoks \xpg@boundaryclass \french@punctthick = {\xpg@unskip\nobreakspace}%
- \iffrench@autospaceguillemets
- \let\xpg@french@guillspace\xpg@french@thinsp%
- \XeTeXinterchartoks \french@punctguillstart \z@ = {\xpg@french@guillspace}% "«a" -> "«\,a"
- \XeTeXinterchartoks \french@punctguillstart \french@punctguillstart = {\xpg@french@guillspace}% "«‹" -> "«\,‹"
- % \XeTeXinterchartoks \z@ \french@punctguillstart = {\nobreakspace}% "a«" unchanged?
- % \XeTeXinterchartoks \french@punctguillend \z@ = {\nobreakspace}% "»a" unchanged?
- \XeTeXinterchartoks \z@ \french@punctguillend = {\xpg@french@guillspace}% "a»" -> "a\,»"
- \XeTeXinterchartoks \french@punctguillstart \xpg@boundaryclass = {\xpg@french@guillspace\ignorespaces}% "« " -> "«\,"
- \XeTeXinterchartoks \xpg@boundaryclass \french@punctguillend = {\xpg@unskip\xpg@french@guillspace}% " »" -> "\,»"
- \XeTeXinterchartoks \french@closebrackets \french@punctguillend = {\xpg@french@guillspace}% ")»" -> ")\,»"
- \XeTeXinterchartoks \french@questionexclamation \french@punctguillend = {\xpg@french@guillspace}% "?»" -> "?\,»"
- \XeTeXinterchartoks \french@punctthin \french@punctguillend = {\xpg@french@guillspace}% ";»" -> ";\,»"
- \XeTeXinterchartoks \french@punctguillend \french@punctguillend = {\xpg@french@guillspace}% "›»" -> "›\,»"
- \else
- \def\xpg@french@guillspace{}%
- \fi
- \XeTeXinterchartoks \french@punctguillend \french@questionexclamation = {\xpg@french@thinsp}% "»?" -> "»\,?"
- \XeTeXinterchartoks \french@punctguillend \french@punctthin = {\xpg@french@thinsp}% "»;" -> "»\,;"
- \XeTeXinterchartoks \french@punctguillend \french@punctthick = {\nobreakspace}% "»:" -> "» :"
- \XeTeXinterchartoks \french@questionexclamation \french@punctthin = {\xpg@french@thinsp}% "?;" -> "?\,;"
- \XeTeXinterchartoks \french@questionexclamation \french@punctthick = {\xpg@french@thinsp}% "?:" -> "?\,:"
- \XeTeXinterchartoks \french@openbrackets \french@questionexclamation = {\xpg@unskip}% "(?" -> "(?" and not "( ?"
- \XeTeXinterchartoks \french@openbrackets \french@punctthin = {\xpg@unskip}% "(;" -> "(;" and not "( ;"
- \XeTeXinterchartoks \french@punctthin \french@closebrackets = {\xpg@unskip}% "?)" -> "?)" (code not need, just for symetry with previous one)
- \XeTeXinterchartoks \french@closebrackets \french@punctthin = {\xpg@french@thinsp}% ")?" -> ")\,?"
- \XeTeXinterchartoks \french@closebrackets \french@punctthick = {\nobreakspace}% "):" -> ") :"
- \fi
-}
-
-\def\nofrench@punctuation{%
- \lccode"2019=\z@
- \ifluatex
- \directlua{polyglossia.deactivate_french_punct()}%
- \else
- \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
- \fi
-}
-
-\def\captionsfrench{%
- \def\refname{Références}%
- \def\abstractname{Résumé}%
- \def\bibname{Bibliographie}%
- \def\prefacename{Préface}%
- \def\chaptername{Chapitre}%
- \def\appendixname{Annexe}%
- \def\contentsname{Table des matières}%
- \def\listfigurename{Table des figures}%
- \def\listtablename{Liste des tableaux}%
- \def\indexname{Index}%
- \def\figurename{\textsc{Fig.}}%
- \def\tablename{\textsc{Tab.}}%
- \def\@Fpt{\ifcase\value{part}\or Première\or Deuxième\or
- Troisième\or Quatrième\or Cinquième\or Sixième\or
- Septième\or Huitième\or Neuvième\or Dixième\or Onzième\or
- Douzième\or Treizième\or Quatorzième\or Quinzième\or
- Seizième\or Dix-septième\or Dix-huitième\or Dix-neuvième\or
- Vingtième\fi\space}%
- \def\thepart{\@Fpt partie}%
- \def\partname{}%
- \def\pagename{page}%
- \def\seename{\emph{voir}}%
- \def\alsoname{\emph{voir aussi}}%
- \def\enclname{P.~J. }%
- \def\ccname{Copie à }%
- \def\headtoname{}%
- \def\proofname{Démonstration}%
-}
-
-\def\datefrench{%
- \def\today{\ifx\ier\undefined\def\ier{er}\fi
- \ifnum\day=1\relax 1\ier%
- \else \number\day\fi
- \space \ifcase\month%
- \or janvier\or février\or mars\or avril\or mai\or juin\or
- juillet\or août\or septembre\or octobre\or novembre\or
- décembre\fi
- \space \number\year}}
-
-\def\noextras@french{%
- \nofrench@punctuation%
- \nofrench@fontsetup%
-}
-
-\def\blockextras@french{%
- \iffrench@autospacing
- \french@punctuation%
- \fi
- \french@fontsetup%
-}
-
-\def\inlineextras@french{%
- \iffrench@autospacing
- \french@punctuation%
- \fi
- \french@fontsetup%
-}
-
-\def\NoAutoSpacing{%
- \nofrench@punctuation%
-}
-
-\def\AutoSpacing{%
- \french@punctuation%
-}
-
-\def\ier{\textsuperscript{er}}
-\def\iers{\textsuperscript{ers}}
-\def\iere{\textsuperscript{re}}
-\def\ieres{\textsuperscript{res}}
-\def\ieme{\textsuperscript{e}}
-\def\iemes{\textsuperscript{es}}
-\def\nd{\textsuperscript{nd}}
-\def\nds{\textsuperscript{nds}}
-\def\nde{\textsuperscript{nde}}
-\def\ndes{\textsuperscript{ndes}}
-\def\no{\textsuperscript{o}}
-\def\nos{\textsuperscript{os}}
-
-\def\mme{M\textsuperscript{me}\space}
-\def\mmes{M\textsuperscript{mes}\space}
-\def\mr{M.\space}
-\def\mrs{MM.\space}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-french.ldf>
-%<*gloss-friulan.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-friulan.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-friulan.ldf}[polyglossia: module for friulan]
-
-% We only provide this gloss for babel compatibility.
-
-\xpg@load@master@language{friulian}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-friulan.ldf>
-%<*gloss-friulian.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-friulian.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-friulian.ldf}[polyglossia: module for friulian]
-
-\PolyglossiaSetup{friulian}{%
- bcp47=fur,
- language=Friulian,
- babelname=friulan,
- hyphennames={friulan,furlan},
- hyphenmins={2,2},
- langtag=FRL,
- indentfirst=false,
- fontsetup=true,
- frenchspacing=true,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{friulian}{fur}
-
-% Babel and backwards compat. alias
-\setlanguagealias{friulian}{friulan}
-
-\def\captionsfriulian{%
- \def\prefacename{Prefazion}%
- \def\refname{Riferiments}%
- \def\abstractname{Somari}%
- \def\bibname{Bibliografie}%
- \def\chaptername{Cjapitul}%
- \def\appendixname{Zonte}%
- \def\contentsname{Tabele gjenerâl}%
- \def\listfigurename{Liste des figuris}%
- \def\listtablename{Liste des tabelis}%
- \def\indexname{Tabele analitiche}%
- \def\figurename{Figure}%
- \def\tablename{Tabele}%
- \def\partname{Part}%
- \def\enclname{Zonte(is)}%
- \def\ccname{Cun copie a}%
- \def\headtoname{Par}%
- \def\pagename{Pagjine}%
- \def\seename{cjale}%
- \def\alsoname{cjale ancje}%
- \def\proofname{Dimostrazion}%
- \def\glossaryname{Glossari}%
- }
-
-\def\datefriulian{%
- \def\today{\number\day\space di\space\ifcase\month\or
- Genâr\or Fevrâr\or Març\or Avril\or Mai\or Jugn\or
- Lui\or Avost\or Setembar\or Otobar\or Novembar\or Dicembar%
- \fi\space dal\space\number\year}}
-
-\AtEndPreamble{% the user or the class might define different values
- \edef\xpgfu@savedvalues{%
- \clubpenalty=\the\clubpenalty\space
- \@clubpenalty=\the\@clubpenalty\space
- \widowpenalty=\the\widowpenalty\space
- \finalhyphendemerits=\the\finalhyphendemerits}
-}
-
-
-\def\noextras@friulian{%
- \lccode\string"2019=\z@
-}
-
-\def\blockextras@friulian{%
- \lccode\string"2019=\string"2019
- \clubpenalty=3000 \@clubpenalty=3000 \widowpenalty=3000
- \finalhyphendemerits=50000000
-}
-
-\def\inlineextras@friulian{%
- \lccode\string"2019=\string"2019
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-friulian.ldf>
-%<*gloss-fur.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-fur.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-fur.ldf}[polyglossia: module for fur (friulian)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{friulian}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-fur.ldf>
-%<*gloss-ga.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-ga.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-ga.ldf}[polyglossia: module for ga (gaelic)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{gaelic}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-ga.ldf>
-%<*gloss-gaelic.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-gaelic.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-gaelic.ldf}[polyglossia: module for gaelic]
-
-\PolyglossiaSetup{gaelic}{
- bcp47=ga,
- language=Irish,
- babelname=irish,
- hyphennames={irish},
- hyphenmins={2,2},
- langtag=IRI,
- fontsetup=true,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*[variant=irish]{gaelic}{ga}
-\setlanguagealias*[variant=scottish]{gaelic}{gd}
-% Babel aliases
-\setlanguagealias[variant=irish]{gaelic}{irish}
-\setlanguagealias[variant=scottish]{gaelic}{scottish}
-
-\def\gaelic@variant{irish}
-\define@choicekey*+{gaelic}{variant}[\xpg@val\xpg@nr]{irish,scottish}[irish]{%
- \ifcase\xpg@nr\relax
- % irish:
- \gdef\gaelic@variant{irish}%
- \SetLanguageKeys{gaelic}{language=Irish,langtag=IRI,babelname=irish,bcp47=ga}%
- \xpg@fontsetup@latin{gaelic}%
- \or
- % scottish:
- \gdef\gaelic@variant{scottish}%
- \SetLanguageKeys{gaelic}{language=Gaelic,langtag=GAE,babelname=scottish,bcp47=gd}%
- \xpg@fontsetup@latin{gaelic}%
- \fi
- \xpg@info{Option: gaelic, variant=\xpg@val}%
-}{\xpg@warning{Unknown gaelic variant `#1'}}
-
-% Register default options
-\xpg@initialize@gloss@options{gaelic}{variant=irish}
-
-\def\captionsgaelic@irish{%
- \def\refname{Tagairtí}%
- \def\abstractname{Achoimre}%
- \def\bibname{Leabharliosta}%
- \def\prefacename{Réamhrá}% <-- also "Brollach"
- \def\refname{Tagairtí}%
- \def\chaptername{Tagairtí}%
- \def\appendixname{Aguisín}%
- \def\contentsname{Clár Ábhair}%
- \def\listfigurename{Léaráidí}%
- \def\listtablename{Táblaí}%
- \def\indexname{Innéacs}%
- \def\figurename{Léaráid}%
- \def\tablename{Tábla}%
- %\def\thepart{}%
- \def\partname{Cuid}%
- \def\pagename{Leathanach}%
- \def\seename{féach}%
- \def\alsoname{féach freisin}%
- \def\enclname{faoi iamh}%
- \def\ccname{cc}%
- \def\headtoname{Go}%
- \def\proofname{Cruthúnas}%
- \def\glossaryname{Glossary}%
-}
-
-\def\captionsgaelic@scottish{%
- \def\refname{Iomraidh}%
- \def\abstractname{Brìgh}%
- \def\bibname{Leabhraichean}%
- \def\prefacename{Preface}% <-- needs translation
- \def\chaptername{Caibideil}%
- \def\appendixname{Ath-sgr`ıobhadh}%
- \def\contentsname{Clàr-obrach}%
- \def\listfigurename{Liosta Dhealbh}%
- \def\listtablename{Liosta Chlàr}%
- \def\indexname{Clàr-innse}%
- \def\figurename{Dealbh}%
- \def\tablename{Clàr}%
- %\def\thepart{}%
- \def\partname{Cuid}%
- \def\pagename{t.d.}%
- \def\seename{see}% <-- needs translation
- \def\alsoname{see also}% <-- needs translation
- \def\enclname{a-staigh}%
- \def\ccname{lethbhreac gu}%
- \def\headtoname{gu}%
- \def\proofname{Proof}% <-- needs translation
- \def\glossaryname{Glossary}% <-- needs translation
-}
-
-\def\captionsgaelic{%
- \csname captionsgaelic@\gaelic@variant\endcsname%
-}
-
-\def\dategaelic@irish{%
- \def\today{%
- \number\day\space \ifcase\month\or
- Eanáir\or Feabhra\or Márta\or Aibreán\or
- Bealtaine\or Meitheamh\or Iúil\or Lúnasa\or
- Meán Fómhair\or Deireadh Fómhair\or
- Mí na Samhna\or Mí na Nollag\fi
- \space \number\year}%
-}
-
-\def\dategaelic@scottish{%
- \def\today{%
- \number\day\space \ifcase\month\or
- am Faoilteach\or an Gearran\or am Màrt\or an Giblean\or
- an Cèitean\or an t-Òg mhios\or an t-Iuchar\or
- Lùnasdal\or an Sultuine\or an Dàmhar\or
- an t-Samhainn\or an Dubhlachd\fi
- \space \number\year}%
-}
-
-\def\dategaelic{%
- \csname dategaelic@\gaelic@variant\endcsname%
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-gaelic.ldf>
-%<*gloss-galician.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-galician.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-galician.ldf}[polyglossia: module for galician]
-\PolyglossiaSetup{galician}{
- bcp47=gl,
- hyphennames={galician},
- hyphenmins={2,2},
- langtag=GAL,
- indentfirst=true,
- fontsetup=true,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{galician}{gl}
-
-\def\captionsgalician{%
- \def\refname{Referencias}%
- \def\abstractname{Resumo}%
- \def\bibname{Bibliografía}%
- \def\prefacename{Prefacio}%
- \def\chaptername{Capítulo}%
- \def\appendixname{Apéndice}%
- \def\contentsname{Índice Xeral}%
- \def\listfigurename{Índice de Figuras}%
- \def\listtablename{Índice de Táboas}%
- \def\indexname{Índice de Materias}%
- \def\figurename{Figura}%
- \def\tablename{Táboa}%
- %\def\thepart{}%
- \def\partname{Parte}%
- \def\pagename{Páxina}%
- \def\seename{véxase}%
- \def\alsoname{véxase tamén}%
- \def\enclname{Adxunto}%
- \def\ccname{Copia a}%
- \def\headtoname{A}%
- \def\proofname{Demostración}%
- \def\glossaryname{Glosario}%
- }
-\def\dategalician{%
- \def\today{\number\day~de\space\ifcase\month\or
- xaneiro\or febreiro\or marzo\or abril\or maio\or xuño\or
- xullo\or agosto\or setembro\or outubro\or novembro\or decembro\fi
- \space de~\number\year}}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-galician.ldf>
-%<*gloss-gd.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-gd.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-gd.ldf}[polyglossia: module for gd (gaelic)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{gaelic}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-gd.ldf>
-%<*gloss-georgian.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-georgian.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-georgian.ldf}[polyglossia: module for georgian]
-
-\PolyglossiaSetup{georgian}{
- bcp47=ka,
- script=Georgian,
- scripttag=geor,
- langtag=KAT,
- hyphennames={georgian},
- fontsetup=true,
- localnumeral=georgiannumerals
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{georgian}{ka}
-
-\newif\ifgeorgian@numerals
-\define@key{georgian}{numerals}[arabic]{%
- \ifstrequal{#1}{georgian}%
- {\georgian@numeralstrue}%
- {\georgian@numeralsfalse}%
-}
-
-\define@boolkey{georgian}[georgian@]{babelshorthands}[true]{}
-
-\define@boolkey{georgian}[georgian@]{oldmonthnames}[true]{}
-
-% Register default options
-\xpg@initialize@gloss@options{georgian}{babelshorthands=false,oldmonthnames=false,numerals=arabic}
-
-\ifsystem@babelshorthands
- \setkeys{georgian}{babelshorthands=true}
-\else
- \setkeys{georgian}{babelshorthands=false}
-\fi
-
-\ifcsundef{initiate@active@char}{%
- \input{babelsh.def}%
- \initiate@active@char{"}%
- \shorthandoff{"}%
-}{}
-
-\def\georgian@shorthands{%
- \bbl@activate{"}%
- \def\language@group{georgian}%
- \declare@shorthand{georgian}{"`}{„}%
- \declare@shorthand{georgian}{"'}{“}%
- \declare@shorthand{georgian}{"<}{«}%
- \declare@shorthand{georgian}{">}{»}%
- \declare@shorthand{georgian}{""}{\hskip\z@skip}%
- \declare@shorthand{georgian}{"~}{\textormath{\leavevmode\hbox{-}}{-}}%
- \declare@shorthand{georgian}{"=}{\nobreak-\hskip\z@skip}%
- \declare@shorthand{georgian}{"|}{\textormath{\nobreak\discretionary{-}{}{\kern.03em}\allowhyphens}{}}%
- \declare@shorthand{georgian}{"-}{%
- \def\georgian@sh@tmp{%
- \if\georgian@sh@next-\expandafter\georgian@sh@emdash%
- \else\expandafter\georgian@sh@hyphen\fi%
- }%
- \futurelet\georgian@sh@next\georgian@sh@tmp}%
- \def\georgian@sh@hyphen{%
- \nobreak\-\bbl@allowhyphens}%
- \def\georgian@sh@emdash##1##2{\cdash-##1##2}%
- \def\cdash##1##2##3{\def\tempx@{##3}%
- \def\tempa@{-}\def\tempb@{~}\def\tempc@{*}%
- \ifx\tempx@\tempa@\@Acdash\else
- \ifx\tempx@\tempb@\@Bcdash\else
- \ifx\tempx@\tempc@\@Ccdash\else
- \errmessage{Wrong usage of cdash}\fi\fi\fi}%
- \def\@Acdash{\ifdim\lastskip>\z@\unskip\nobreak\hskip.2em\fi
- \cyrdash\hskip.2em\ignorespaces}%
- \def\@Bcdash{\leavevmode\ifdim\lastskip>\z@\unskip\fi
- \nobreak\cyrdash\penalty\exhyphenpenalty\hskip\z@skip\ignorespaces}%
- \def\@Ccdash{\leavevmode
- \nobreak\cyrdash\nobreak\hskip.35em\ignorespaces}%
- \ifx\cyrdash\undefined
- \def\cyrdash{\hbox to.8em{--\hss--}}%
- \fi
- \declare@shorthand{georgian}{",}{\nobreak\hskip.2em\ignorespaces}%
-}
-
-\def\nogeorgian@shorthands{%
- \@ifundefined{initiate@active@char}{}{\bbl@deactivate{"}}%
-}
-
-\def\captionsgeorgian{%
- \def\prefacename{წინასიტყვაობა}%
- \def\refname{ლიტერატურა}%
- \def\abstractname{ანოტაცია}%
- \def\bibname{ლიტერატურა}%
- \def\chaptername{თავი}%
- \def\appendixname{დანართი}%
- \@ifundefined{thechapter}
- {\def\contentsname{შინაარსი}}%
- {\def\contentsname{შინაარსი}}%
- \let\tocname=\contentsname
- \def\listfigurename{სურათი}%
- \def\listtablename{ცხრილი}%
- \def\indexname{საძიებელი}%
- \def\authorname{სახელთა საძიებელი}%
- \def\figurename{სურ.}%
- \def\tablename{ცხრ.}%
- \def\partname{ნაწილი}%
- \def\enclname{ჩათვ.}%
- \def\ccname{წყარ.}%
- \def\headtoname{შ.}%
- \def\pagename{გვ.}%
- \def\seename{იხ.}%
- \def\alsoname{იხ.\ ასევე}%
- \def\proofname{დამტკიცება}%
- \def\glossaryname{ტერმინები}%
-}%
-
-\def\dategeorgian{%
- \def\today{\number\day~\ifcase\month\or
- იანვარი\or
- თებერვალი\or
- მარტი\or
- აპრილი\or
- მაისი\or
- ივნისი\or
- ივლისი\or
- აგვისტო\or
- სექტემბერი\or
- ოქტომბერი\or
- ნოემბერი\or
- დეკემბერი\fi
- \space \number\year~წ.}%
- \ifgeorgian@oldmonthnames
- \dategeorgian@old%
- \fi
-}
-
-\def\dategeorgian@old{%
- \def\today{\number\day~\ifcase\month\or
- აპნისი\or
- სურწყუნისი\or
- მირკანი\or
- იგრიკა\or
- ვარდობისთვე\or
- თიბათვე\or
- მკათათვე\or
- მარიამობისთვე\or
- ახალწლისა ენკენისთვე\or
- ღვინობისთვე\or
- გიორგობისთვე\or
- ქრისტეშობისთვე\fi
- \space \number\year~წ.}%
-}
-
-\def\georgian@numbers{%
- \ifgeorgian@numerals%
- \def\georgian@alph##1{\expandafter\georgiannumeral\expandafter{\the##1}}%
- \let\@alph\georgian@@alph%
- \fi
-}
-
-\def\nogeorgian@numbers{%
- \let\@alph\latin@alph%
- \let\georgian@alph\@undefined%
-}
-
-\def\georgian@globalnumbers{%
- \ifgeorgian@numerals
- \let\@arabic\georgiannumber%
- \renewcommand\thefootnote{\localnumeral*{footnote}}%
- \renewcommand\theequation{\localnumeral*{equation}}%
- \fi
-}
-
-% Store original definition
-\let\xpg@save@arabic\@arabic
-
-\def\nogeorgian@globalnumbers{
- \let\@arabic\xpg@save@arabic%
-}
-
-\newcommand{\georgiannumerals}[2]{%
- \ifgeorgian@numerals
- \georgiannumber{#2}%
- \else
- #2%
- \fi%
-}
-
-\protected\def\georgiannumber#1{\expandafter\@georgiannumber\expandafter{\number#1}}
-\def\@georgiannumber#1{%
- \ifnum#1<\@ne\space\geor@ill@value{#1}%
- \else
- \ifnum#1<10\expandafter\geor@num@i\number#1%
- \else
- \ifnum#1<100\expandafter\geor@num@ii\number#1%
- \else
- \ifnum#1<\@m\expandafter\geor@num@iii\number#1%
- \else
- \ifnum#1<\@M\expandafter\geor@num@iv\number#1%
- \else
- \space\geor@ill@value{#1}%
- \fi
- \fi
- \fi
- \fi
- \fi
-}
-
-\let\georgiannumeral=\georgiannumber
-\def\geor@num@i#1{% 1--9
- \ifcase#1\or ა\or ბ\or გ\or დ\or ე\or ვ\or ზ\or ჱ\or თ\fi}
-\def\geor@num@ii#1{% 10--90
- \ifcase#1\or ი\or კ\or ლ\or მ\or ნ\or ჲ\or ო\or პ\or ჟ\fi
- \geor@num@i}
-\def\geor@num@iii#1{% 100--900
- \ifcase#1\or რ\or ს\or ტ\or ჳ\or ფ\or ქ\or ღ\or ყ\or შ\fi
- \geor@num@ii}
-\def\geor@num@iv#1{% 1000--9000
- \ifcase#1\or ჩ\or ც\or ძ\or წ\or ჭ\or ხ\or ჴ\or ჯ\or ჰ\fi
- \geor@num@iii}
-\def\geor@ill@value#1{\xpg@warning{Illegal value (#1) for Georgian numeral}[$#1$]}
-
-\def\noextras@georgian{%
- \ifgeorgian@numerals\nogeorgian@numbers\fi%
- \nogeorgian@shorthands%
-}
-
-\def\blockextras@georgian{%
- \ifgeorgian@numerals\georgian@numbers\fi%
- \ifgeorgian@babelshorthands\georgian@shorthands\fi%
-}
-
-\def\inlineextras@georgian{%
- \ifgeorgian@babelshorthands\georgian@shorthands\fi%
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-georgian.ldf>
-%<*gloss-german.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-german.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-german.ldf}[polyglossia: module for german]
-
-\PolyglossiaSetup{german}{
- bcp47=de-DE,
- hyphenmins={2,2},
- frenchspacing=true,
- fontsetup=true,
- langtag=DEU,
- babelname=ngerman
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{german}{de}
-\setlanguagealias*[variant=swiss,spelling=new]{german}{de-CH}
-\setlanguagealias*[variant=austrian,spelling=new]{german}{de-AT}
-\setlanguagealias*[variant=german,spelling=new]{german}{de-DE}
-\setlanguagealias*[variant=swiss,spelling=new,script=blackletter]{german}{de-Latf-CH}
-\setlanguagealias*[variant=german,spelling=new,script=blackletter]{german}{de-Latf-DE}
-\setlanguagealias*[variant=austrian,spelling=new,script=blackletter]{german}{de-Latf-AT}
-\setlanguagealias*[variant=austrian,spelling=old]{german}{de-AT-1901}
-\setlanguagealias*[variant=swiss,spelling=new]{german}{de-CH-1996}
-\setlanguagealias*[variant=austrian,spelling=new]{german}{de-AT-1996}
-\setlanguagealias*[variant=german,spelling=old]{german}{de-DE-1901}
-\setlanguagealias*[variant=swiss,spelling=old,script=blackletter]{german}{de-Latf-CH-1901}
-\setlanguagealias*[variant=swiss,spelling=old]{german}{de-CH-1901}
-\setlanguagealias*[variant=austrian,spelling=old,script=blackletter]{german}{de-Latf-AT-1901}
-\setlanguagealias*[variant=swiss,spelling=new,script=blackletter]{german}{de-Latf-CH-1996}
-\setlanguagealias*[script=blackletter]{german}{de-Latf}
-\setlanguagealias*[variant=german,spelling=new]{german}{de-DE-1996}
-\setlanguagealias*[variant=german,spelling=old,script=blackletter]{german}{de-Latf-DE-1901}
-\setlanguagealias*[variant=german,spelling=new,script=blackletter]{german}{de-Latf-DE-1996}
-\setlanguagealias*[variant=austrian,spelling=new,script=blackletter]{german}{de-Latf-AT-1996}
-
-% Babel aliases
-\setlanguagealias[variant=austrian,spelling=old]{german}{austrian}
-\setlanguagealias[variant=austrian,spelling=new]{german}{naustrian}
-\setlanguagealias[variant=german,spelling=old]{german}{germanb}
-\setlanguagealias[variant=german,spelling=new]{german}{ngerman}
-\setlanguagealias[variant=swiss,spelling=old]{german}{swissgerman}
-\setlanguagealias[variant=swiss,spelling=new]{german}{nswissgerman}
-
-\newif\if@german@oldspelling
-\@german@oldspellingfalse
-\define@choicekey*+{german}{spelling}[\xpg@val\xpg@nr]{new,old,1901,1996}[new]{%
- \ifcase\xpg@nr\relax
- % new:
- \@german@oldspellingfalse
- \or
- % old:
- \@german@oldspellingtrue
- \or
- % 1901:
- \@german@oldspellingtrue
- \or
- % 1996:
- \@german@oldspellingfalse
- \fi
- \german@set@babelname%
- \xpg@info{Option: German, spelling=\xpg@val}%
-}{\xpg@warning{Unknown German spelling `#1'}}
-
-\newif\if@austrian@locale
-\@austrian@localefalse
-\newif\if@swiss@locale
-\@swiss@localefalse
-\define@choicekey*+{german}{variant}[\xpg@val\xpg@nr]{german,austrian,swiss}[german]{%
- \ifcase\xpg@nr\relax
- % german:
- \@swiss@localefalse%
- \@austrian@localefalse%
- \or
- % austrian:
- \@austrian@localetrue%
- \@swiss@localefalse%
- \or
- % swiss:
- \@swiss@localetrue%
- \@austrian@localefalse%
- \xpg@ifdefined{swissgerman}{}%
- {%
- \xpg@warning{No hyphenation patterns were loaded for "Swiss German (Old Spelling)"\MessageBreak
- I will use the standard patterns for German (old spelling) instead}%
- \adddialect\l@swissgerman\l@german\relax%
- }%
- \fi
- \german@set@babelname%
- \xpg@info{Option: German, variant=\xpg@val}%
-}{\xpg@warning{Unknown German variant `#1'}}
-
-\def\german@set@babelname{%
- \if@german@oldspelling
- \if@swiss@locale
- \if@german@blackletter
- \SetLanguageKeys{german}{babelname=swissgerman,bcp47=de-Latf-CH-1901}%
- \else
- \SetLanguageKeys{german}{babelname=swissgerman,bcp47=de-CH-1901}%
- \fi
- \else
- \if@austrian@locale
- \if@german@blackletter
- \SetLanguageKeys{german}{babelname=austrian,bcp47=de-Latf-AT-1901}%
- \else
- \SetLanguageKeys{german}{babelname=austrian,bcp47=de-AT-1901}%
- \fi
- \else
- \if@german@blackletter
- \SetLanguageKeys{german}{babelname=german,bcp47=de-Latf-DE-1901}%
- \else
- \SetLanguageKeys{german}{babelname=german,bcp47=de-DE-1901}%
- \fi
- \fi\fi
- \else
- \if@swiss@locale
- \if@german@blackletter
- \SetLanguageKeys{german}{babelname=nswissgerman,bcp47=de-Latf-CH}%
- \else
- \SetLanguageKeys{german}{babelname=nswissgerman,bcp47=de-CH}%
- \fi
- \else
- \if@austrian@locale
- \if@german@blackletter
- \SetLanguageKeys{german}{babelname=naustrian,bcp47=de-Latf-AT}%
- \else
- \SetLanguageKeys{german}{babelname=naustrian,bcp47=de-AT}%
- \fi
- \else
- \if@german@blackletter
- \SetLanguageKeys{german}{babelname=ngerman,bcp47=de-Latf-DE}%
- \else
- \SetLanguageKeys{german}{babelname=ngerman,bcp47=de-DE}%
- \fi
- \fi\fi
- \fi
-}
-
-\newif\if@german@blackletter
-\define@choicekey*+{german}{script}[\xpg@val\xpg@nr]{latin,blackletter,fraktur}[latin]{%
- \ifcase\xpg@nr\relax
- % latin:
- \@german@blackletterfalse%
- \or
- % blackletter:
- \@german@blacklettertrue%
- \or
- % fraktur:
- \@german@blacklettertrue%
- \fi
- \german@set@babelname%
- \xpg@info{Option: German, script=\xpg@val}%
-}{\xpg@warning{Unknown German script `#1'}}
-
-% Option defunc'ed, as bot XeTeX and LuaTeX meanwhile
-% use the experimental German hyphenation patterns by default.
-\define@boolkey{german}[german@]{latesthyphen}[true]{}
-
-\define@boolkey{german}[german@]{babelshorthands}[true]{}
-
-\setkeys{german}{spelling,script,variant}
-
-% Register default options
-\xpg@initialize@gloss@options{german}{variant=german,spelling=new,script=latin,latesthyphen=false,babelshorthands=false}
-% Register alias options
-\xpg@set@alias@values{german}{spelling}{new}{1996}
-\xpg@set@alias@values{german}{spelling}{old}{1901}
-\xpg@set@alias@values{german}{script}{blackletter}{fraktur}
-
-\ifsystem@babelshorthands
- \setkeys{german}{babelshorthands=true}
-\else
- \setkeys{german}{babelshorthands=false}
-\fi
-
-\ifcsundef{initiate@active@char}{%
- \input{babelsh.def}%
- \initiate@active@char{"}%
- \shorthandoff{"}%
-}{}
-
-\def\german@shorthands{%
- \bbl@activate{"}%
- \def\language@group{german}%
- \declare@shorthand{german}{"`}{„}%
- \declare@shorthand{german}{"'}{“}%
- \declare@shorthand{german}{"<}{«}%
- \declare@shorthand{german}{">}{»}%
- \declare@shorthand{german}{"c}{\textormath{\bbl@disc@german ck}{c}}%
- \declare@shorthand{german}{"C}{\textormath{\bbl@disc@german CK}{C}}%
- \declare@shorthand{german}{"F}{\textormath{\bbl@disc@german F{FF}}{F}}%
- \declare@shorthand{german}{"l}{\textormath{\bbl@disc@german l{ll}}{l}}%
- \declare@shorthand{german}{"L}{\textormath{\bbl@disc@german L{LL}}{L}}%
- \declare@shorthand{german}{"m}{\textormath{\bbl@disc@german m{mm}}{m}}%
- \declare@shorthand{german}{"M}{\textormath{\bbl@disc@german M{MM}}{M}}%
- \declare@shorthand{german}{"n}{\textormath{\bbl@disc@german n{nn}}{n}}%
- \declare@shorthand{german}{"N}{\textormath{\bbl@disc@german N{NN}}{N}}%
- \declare@shorthand{german}{"p}{\textormath{\bbl@disc@german p{pp}}{p}}%
- \declare@shorthand{german}{"P}{\textormath{\bbl@disc@german P{PP}}{P}}%
- \declare@shorthand{german}{"r}{\textormath{\bbl@disc@german r{rr}}{r}}%
- \declare@shorthand{german}{"R}{\textormath{\bbl@disc@german R{RR}}{R}}%
- \declare@shorthand{german}{"t}{\textormath{\bbl@disc@german t{tt}}{t}}%
- \declare@shorthand{german}{"T}{\textormath{\bbl@disc@german T{TT}}{T}}%
- \declare@shorthand{german}{"f}{\textormath{\bbl@discff}{f}}%
- \def\bbl@discff{\penalty\@M
- \afterassignment\bbl@insertff \let\bbl@nextff= }%
- \def\bbl@insertff{%
- \if f\bbl@nextff
- \expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
- {\relax\discretionary{ff-}{f}{ff}\allowhyphens}{f\bbl@nextff}}%
- \let\bbl@nextff=f%
- \declare@shorthand{german}{"-}{\nobreak\-\nobreak\hskip\z@skip}%
- \declare@shorthand{german}{"|}{\textormath{\penalty\@M\discretionary{-}{}{\kern.03em}}{}}%
- \declare@shorthand{german}{""}{\hskip\z@skip}%
- \declare@shorthand{german}{"~}{\textormath{\leavevmode\hbox{-}}{-}}%
- \declare@shorthand{german}{"=}{\penalty\@M-\hskip\z@skip}%
- \declare@shorthand{german}{"/}{\textormath
- {\bbl@allowhyphens\discretionary{/}{}{/}\bbl@allowhyphens}{}}%
- \def\ck{\allowhyphens\discretionary{k-}{k}{ck}\allowhyphens}%
-}
-
-\def\nogerman@shorthands{%
- \@ifundefined{initiate@active@char}{}{\bbl@deactivate{"}}%
-}
-
-\def\captions@german{%
- \def\prefacename{Vorwort}%
- \def\refname{Literatur}%
- \def\abstractname{Zusammenfassung}%
- \def\bibname{Literaturverzeichnis}%
- \def\chaptername{Kapitel}%
- \def\appendixname{Anhang}%
- \def\contentsname{Inhaltsverzeichnis}%
- \def\listfigurename{Abbildungsverzeichnis}%
- \def\listtablename{Tabellenverzeichnis}%
- \def\indexname{Index}%
- \def\figurename{Abbildung}%
- \def\tablename{Tabelle}%
- \def\partname{Teil}%
- \def\enclname{Anlage(n)}%
- \def\ccname{Verteiler}%
- \def\headtoname{An}%
- \def\pagename{Seite}%
- \def\seename{siehe}%
- \def\alsoname{siehe auch}%
- \def\proofname{Beweis}%
- \def\glossaryname{Glossar}%
-}
-\def\date@german{%
- \def\today{\number\day.%
- \space \ifcase\month%
- \or\if@austrian@locale Jänner\else Januar\fi\or Februar\or März\or%
- April\or Mai\or Juni\or Juli\or August\or September\or Oktober\or%
- November\or Dezember\fi
- \space \number\year}%
-}
-
-\def\captions@german@austrian{%
- \def\enclname{Beilage(n)}%
-}
-
-\def\captions@german@swiss{%
- \def\enclname{Beilage(n)}%
-}
-
-%%Strings for Fraktur contributed by Gerrit <z0idberg . gmx . de>
-\def\captions@german@blackletter{%
- \captions@german%
- \def\abstractname{Zuſammenfaſſung}%
- \def\seename{ſiehe}%
- \def\alsoname{ſiehe auch}%
- \def\glossaryname{Gloſſar}%
-}
-
-\def\date@german@blackletter{%
- \def\today{\number\day.%
- \space \ifcase\month%
- \or\if@austrian@locale Jänner\else Januar\fi\or Februar\or März\or%
- April\or Mai\or Juni\or Juli\or Auguſt\or September\or Oktober\or%
- November\or Dezember\fi
- \space \number\year}%
-}
-
-\def\captionsgerman{%
- \if@german@blackletter\captions@german@blackletter\else\captions@german\fi
- \if@austrian@locale\captions@german@austrian\fi
- \if@swiss@locale\captions@german@swiss\fi
-}
-
-\def\dategerman{%
- \if@german@blackletter\date@german@blackletter\else\date@german\fi
-}
-
-\def\german@language{%
- \if@german@oldspelling
- \if@swiss@locale
- \polyglossia@setup@language@patterns{swissgerman}%
- \else
- \polyglossia@setup@language@patterns{german}%
- \fi
- \if@austrian@locale
- \adddialect\l@austrian\l@german%
- \fi
- \else
- \polyglossia@setup@language@patterns{ngerman}%
- \if@austrian@locale
- \adddialect\l@naustrian\l@ngerman%
- \fi
- \if@swiss@locale
- \adddialect\l@nswissgerman\l@ngerman%
- \fi
- \fi
-}
-
-\def\noextras@german{%
- \nogerman@shorthands%
-}
-
-\def\blockextras@german{%
- \ifgerman@babelshorthands\german@shorthands\fi
-}
-
-\def\inlineextras@german{%
- \ifgerman@babelshorthands\german@shorthands\fi
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-german.ldf>
-%<*gloss-germanb.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-germanb.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-germanb.ldf}[polyglossia: module for german (old spelling)]
-
-% We provide this as a babel alias
-
-\xpg@load@master@language{german}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-germanb.ldf>
-%<*gloss-gl.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-gl.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-gl.ldf}[polyglossia: module for gl (galician)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{galician}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-gl.ldf>
-%<*gloss-grc.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-grc.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-grc.ldf}[polyglossia: module for grc (greek)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{greek}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-grc.ldf>
-%<*gloss-greek.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-greek.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-greek.ldf}[polyglossia: module for greek]
-
-\PolyglossiaSetup{greek}{
- bcp47=el-monoton,
- script=Greek,
- scripttag=grek,
- langtag=ELL,
- frenchspacing=true,
- indentfirst=true,
- fontsetup=true,
- localnumeral=greeknumerals,
- Localnumeral=Greeknumerals
- %TODO localalph={greek@alph,greek@Alph}
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*[variant=ancient]{greek}{grc}
-\setlanguagealias*[varant=polytonic]{greek}{el-polyton}
-\setlanguagealias*[variant=monotonic]{greek}{el-monoton}
-\setlanguagealias*{greek}{el}
-
-% Babel aliases
-\setlanguagealias[variant=polytonic]{greek}{polutonikogreek}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% The code in this file was initially adapted from the antomega
-%% module for greek. Currently large parts of it derive from the
-%% package xgreek.sty (c) Apostolos Syropoulos
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% this file imported from xgreek fixes the \lccode and \uccode of Greek letters:
-\input{xgreek-fixes.def}
-
-\def\tmp@mono{mono}
-\def\tmp@monotonic{monotonic}
-\def\tmp@poly{poly}
-\def\tmp@polytonic{polytonic}
-\def\tmp@ancient{ancient}
-\def\tmp@ancientgreek{ancientgreek}
-
-\def\greek@variant{monogreek}
-
-\define@key{greek}{variant}[monotonic]{%
- \def\@tmpa{#1}%
- \xpg@ifdefined{greek}{}{%
- \xpg@nopatterns{greek}%
- \adddialect\l@greek\l@nohyphenation
- }%
- \ifx\@tmpa\tmp@poly\def\@tmpa{polytonic}\fi
- \ifx\@tmpa\tmp@ancientgreek\def\@tmpa{ancient}\fi
- \ifx\@tmpa\tmp@polytonic%
- \xpg@ifdefined{polygreek}{}%
- {\xpg@warning{No hyphenation patterns were loaded for Polytonic Greek\MessageBreak
- I will use the patterns loaded for \string\l@greek\space instead}%
- \adddialect\l@polygreek\l@greek\relax}%
- \def\greek@variant{polygreek}%
- \def\captionsgreek{\polygreekcaptions}%
- \def\dategreek{\datepolygreek}%
- \SetLanguageKeys{greek}{babelname=polutonikogreek,bcp47=el-polyton}%
- \xpg@info{Option: Polytonic Greek}%
- \else
- \ifx\@tmpa\tmp@ancient
- \xpg@ifdefined{ancientgreek}{}%
- {\xpg@warning{No hyphenation patterns were loaded for Ancient Greek\MessageBreak
- I will use the patterns loaded for \string\l@greek\space instead}%
- \adddialect\l@ancientgreek\l@greek\relax}%
- \def\greek@variant{ancientgreek}%
- \def\captionsgreek{\ancientgreekcaptions}%
- \def\dategreek{\dateancientgreek}%
- \SetLanguageKeys{greek}{babelname=greek,bcp47=grc}%
- \xpg@info{Option: Ancient Greek}%
- \else %monotonic
- \xpg@ifdefined{monogreek}{}%
- {\xpg@warning{No hyphenation patterns were loaded for Monotonic Greek\MessageBreak
- I will use the patterns loaded for \string\l@greek\space instead}%
- \adddialect\l@monogreek\l@greek\relax}%
- \def\greek@variant{monogreek}% monotonic
- \def\captionsgreek{\monogreekcaptions}%
- \def\dategreek{\datemonogreek}%
- \SetLanguageKeys{greek}{babelname=greek,bcp47=el-monoton}%
- \xpg@info{Option: Monotonic Greek}%
- \fi
- \fi}
-
-\def\greek@language{%
- \polyglossia@setup@language@patterns{\greek@variant}%
-}
-
-
-\newif\if@greek@numerals
-\define@key{greek}{numerals}[greek]{%
- \ifstrequal{#1}{arabic}{\@greek@numeralsfalse}{\@greek@numeralstrue}%
-}
-
-\define@boolkey{greek}{attic}[true]{\xpg@warning{Greek option `attic' is no longer required.}}
-
-% Register default options
-\xpg@initialize@gloss@options{greek}{variant=monotonic,numerals=greek}
-% Register alias options
-\xpg@set@alias@values{greek}{variant}{monotonic}{mono}
-\xpg@set@alias@values{greek}{variant}{polytonic}{poly}
-
-\def\monogreekcaptions{%
- \def\refname{Αναφορές}%
- \def\abstractname{Περίληψη}%
- \def\bibname{Βιβλιογραφία}%
- \def\prefacename{Πρόλογος}%
- \def\chaptername{Κεφάλαιο}%
- \def\appendixname{Παράρτημα}%
- \def\contentsname{Περιεχόμενα}%
- \def\listfigurename{Κατάλογος σχημάτων}%
- \def\listtablename{Κατάλογος πινάκων}%
- \def\indexname{Ευρετήριο}%
- \def\figurename{Σχήμα}%
- \def\tablename{Πίνακας}%
- \def\partname{Μέρος}%
- \def\pagename{Σελίδα}%
- \def\seename{βλέπε}%
- \def\alsoname{βλέπε επίσης}%
- \def\enclname{Συνημμένα}%
- \def\ccname{Κοινοποίηση}%
- \def\headtoname{Προς}%
- \def\proofname{Απόδειξη}%
- \def\glossaryname{Γλωσσάρι}}%
-
-\def\datemonogreek{%
- \def\today{\number\day\space%
- \greek@month%
- \space\number\year}%
- \def\greektoday{\greeknumber\day\space%
- \greek@month%
- \space\greeknumber\year}%
- \def\Greektoday{\Greeknumber\day\space%
- \greek@month%
- \space\Greeknumber\year}%
- \def\greek@month{\ifcase\month\or%
- Ιανουαρίου\or
- Φεβρουαρίου\or
- Μαρτίου\or
- Απριλίου\or
- Μαΐου\or
- Ιουνίου\or
- Ιουλίου\or
- Αυγούστου\or
- Σεπτεμβρίου\or
- Οκτωβρίου\or
- Νοεμβρίου\or
- Δεκεμβρίου\fi}}%
-
-\def\polygreekcaptions{%
- \def\refname{Ἀναφορές}%
- \def\abstractname{Περίληψη}%
- \def\bibname{Βιβλιογραφία}%
- \def\prefacename{Πρόλογος}%
- \def\chaptername{Κεφάλαιο}%
- \def\appendixname{Παράρτημα}%
- \def\contentsname{Περιεχόμενα}%
- \def\listfigurename{Κατάλογος σχημάτων}%
- \def\listtablename{Κατάλογος πινάκων}%
- \def\indexname{Εὑρετήριο}%
- \def\figurename{Σχῆμα}%
- \def\tablename{Πίνακας}%
- \def\partname{Μέρος}%
- \def\pagename{Σελίδα}%
- \def\seename{βλέπε}%
- \def\alsoname{βλέπε ἐπίσης}%
- \def\enclname{Συνημμένα}%
- \def\ccname{Κοινοποίηση}%
- \def\headtoname{Πρὸς}%
- \def\proofname{Ἀπόδειξη}}%
-
-\def\datepolygreek{%
- \def\today{\number\day\space%
- \greek@month%
- \space\number\year}%
- \def\greektoday{\greeknumber\day\space%
- \greek@month%
- \space\greeknumber\year}%
- \def\Greektoday{\Greeknumber\day\space%
- \greek@month%
- \space\Greeknumber\year}%
- \def\greek@month{\ifcase\month\or%
- Ἰανουαρίου\or
- Φεβρουαρίου\or
- Μαρτίου\or
- Ἀπριλίου\or
- Μαΐου\or
- Ἰουνίου\or
- Ἰουλίου\or
- Αὐγούστου\or
- Σεπτεμβρίου\or
- Ὀκτωβρίου\or
- Νοεμβρίου\or
- Δεκεμβρίου\fi}}%
-
-% this is copied verbatim from xgreek.sty:
-\def\ancientgreekcaptions{%
- \def\prefacename{Προοίμιον}%
- \def\refname{Αναφοραί}%
- \def\abstractname{Περίληψις}%
- \def\bibname{Βιβλιογραφία}%
- \def\chaptername{Κεφάλαιον}%
- \def\appendixname{Παράρτημα}%
- \def\contentsname{Περιεχόμενα}%
- \def\listfigurename{Κατάλογος σχημάτων}%
- \def\listtablename{Κατάλογος πινάκων}%
- \def\indexname{Εὑρετήριον}%
- \def\figurename{Σχήμα}%
- \def\tablename{Πίναξ}%
- \def\partname{Μέρος}%
- \def\enclname{Συνημμένως}%
- \def\ccname{Κοινοποίησις}%
- \def\headtoname{Πρὸς}%
- \def\pagename{Σελὶς}%
- \def\seename{ὅρα}%
- \def\alsoname{ὅρα ὡσαύτως}%
- \def\proofname{Ἀπόδειξις}%
- \def\glossaryname{Γλωσσάριον}%
- \def\refname{Ἀναφοραὶ}%
- \def\indexname{Εὑρετήριο}%
- \def\figurename{Σχῆμα}%
- \def\headtoname{Πρὸς}}%
-
-\def\dateancientgreek{%
- \def\today{\number\day\space%
- \greek@month%
- \space\number\year}%
- \def\greektoday{\greeknumber\day\space%
- \greek@month%
- \space\greeknumber\year}%
- \def\Greektoday{\Greeknumber\day\space%
- \greek@month%
- \space\Greeknumber\year}%
- \def\greek@month{\ifcase\month\or%
- Ἰανουαρίου\or
- Φεβρουαρίου\or
- Μαρτίου\or
- Ἀπριλίου\or
- Μαΐου\or
- Ἰουνίου\or
- Ἰουλίου\or
- Αὐγούστου\or
- Σεπτεμβρίου\or
- Ὀκτωβρίου\or
- Νοεμβρίου\or
- Δεκεμβρίου\fi}}
-
-% the code for alphabetic numbers and attic numerals
-\newrobustcmd\anw@print{}
-\newrobustcmd\anw@false{%
- \renewrobustcmd\anw@print{}}
-\newrobustcmd\anw@true{%
- \renewrobustcmd\anw@print{ʹ}}
-\anw@true
-
-\newcommand{\greeknumerals}[2]{\greeknumber{#2}}
-\newcommand{\Greeknumerals}[2]{\Greeknumber{#2}}
-
-\protected\def\greeknumber#1{\expandafter\@greeknumber\expandafter{\number#1}}
-\def\@greeknumber#1{%
- \ifnum#1<\@ne\space\gr@ill@value{#1}%
- \else
- \ifnum#1<10\expandafter\gr@num@i\number#1%
- \else
- \ifnum#1<100\expandafter\gr@num@ii\number#1%
- \else
- \ifnum#1<\@m\expandafter\gr@num@iii\number#1%
- \else
- \ifnum#1<\@M\expandafter\gr@num@iv\number#1%
- \else
- \ifnum#1<100000\expandafter\gr@num@v\number#1%
- \else
- \ifnum#1<1000000\expandafter\gr@num@vi\number#1%
- \else
- \space\gr@ill@value{#1}%
- \fi
- \fi
- \fi
- \fi
- \fi
- \fi
- \fi
-}
-\protected\def\Greeknumber#1{\expandafter\@Greeknumber\expandafter{\number#1}}
-\def\@Greeknumber#1{%
- \ifnum#1<\@ne\space\gr@ill@value{#1}%
- \else
- \ifnum#1<10\expandafter\gr@Num@i\number#1%
- \else
- \ifnum#1<100\expandafter\gr@Num@ii\number#1%
- \else
- \ifnum#1<\@m\expandafter\gr@Num@iii\number#1%
- \else
- \ifnum#1<\@M\expandafter\gr@Num@iv\number#1%
- \else
- \ifnum#1<100000\expandafter\gr@Num@v\number#1%
- \else
- \ifnum#1<1000000\expandafter\gr@Num@vi\number#1%
- \else
- \space\gr@ill@value{#1}%
- \fi
- \fi
- \fi
- \fi
- \fi
- \fi
- \fi
-}
-\let\greeknumeral=\greeknumber
-\let\Greeknumeral=\Greeknumber
-\def\gr@num@i#1{%
- \ifcase#1\or α\or β\or γ\or δ\or ε\or Ϛ\or ζ\or η\or θ\fi
- \ifnum#1=\z@\else\anw@true\fi\anw@print}
-\def\gr@num@ii#1{%
- \ifcase#1\or ι\or κ\or λ\or μ\or ν\or ξ\or ο\or π\or ϟ\fi
- \ifnum#1=\z@\else\anw@true\fi\gr@num@i}
-\def\gr@num@iii#1{%
- \ifcase#1\or ρ\or σ\or τ\or υ\or φ\or χ\or ψ\or ω\or ϡ\fi
- \ifnum#1=\z@\anw@false\else\anw@true\fi\gr@num@ii}
-\def\gr@num@iv#1{%
- \ifnum#1=\z@\else ͵\fi
- \ifcase#1\or α\or β\or γ\or δ\or ε\or Ϛ\or ζ\or η\or θ\fi
- \gr@num@iii}
-\def\gr@num@v#1{%
- \ifnum#1=\z@\else ͵\fi
- \ifcase#1\or ι\or κ\or λ\or μ\or ν\or ξ\or ο\or π\or ϟ\fi
- \gr@num@iv}
-\def\gr@num@vi#1{%
- ͵\ifcase#1\or ρ\or σ\or τ\or υ\or φ\or χ\or ψ\or ω\or ϡ\fi
- \gr@num@v}
-\def\gr@Num@i#1{%
- \ifcase#1 \or Α\or Β\or Γ\or Δ\or Ε\or \MakeUppercase{Ϛ}\or Ζ\or Η\or θ\fi
- \ifnum#1=\z@\else\anw@true\fi\anw@print}
-\def\gr@Num@ii#1{%
- \ifcase#1 \or Ι\or Κ\or Λ\or Μ\or Ν\or Ξ\or Ο\or Π\or \MakeUppercase{ϟ}\fi
- \ifnum#1=\z@\else\anw@true\fi\gr@Num@i}
-\def\gr@Num@iii#1{%
- \ifcase#1 \or Ρ\or Σ\or Τ\or Υ\or Φ\or Χ\or Ψ\or Ω\or \MakeUppercase{ϡ}\fi
- \ifnum#1=\z@\anw@false\else\anw@true\fi\gr@Num@ii}
-\def\gr@Num@iv#1{%
- \ifnum#1=\z@\else ͵\fi
- \ifcase#1 \or Α\or Β\or Γ\or Δ\or Ε\or \MakeUppercase{Ϛ}\or Ζ\or Η\or θ\fi
- \gr@Num@iii}
-\def\gr@Num@v#1{%
- \ifnum#1=\z@\else ͵\fi
- \ifcase#1 \or Ι\or Κ\or Λ\or Μ\or Ν\or Ξ\or Ο\or Π\or \MakeUppercase{ϟ}\fi
-\gr@Num@iv}
- \def\gr@Num@vi#1{%
-͵ \ifcase#1 \or Ρ\or Σ\or Τ\or Υ\or Φ\or Χ\or Ψ\or Ω\or \MakeUppercase{ϡ}\fi
- \gr@Num@v}
-\def\gr@ill@value#1{\xpg@warning{Illegal value (#1) for Greek numeral}[$#1$]}
-
-%%%% Attic numerals (no longer optional)
-\newcount\@attic@num
-\DeclareRobustCommand*{\@@atticnum}[1]{%
- \@attic@num#1\relax
- \ifnum\@attic@num<\@ne%
- \space%
- \xpg@warning{Illegal value (\the\@attic@num) for acrophonic Attic numeral}%
- \else\ifnum\@attic@num>249999%
- \space%
- \xpg@warning{Illegal value (\the\@attic@num) for acrophonic Attic numeral}%
- \else
- \@whilenum\@attic@num>49999\do{%
- \char"10147\advance\@attic@num-50000}%
- \@whilenum\@attic@num>9999\do{%
- M\advance\@attic@num-\@M}%
- \ifnum\@attic@num>4999%
- \char"10146\advance\@attic@num-5000%
- \fi\relax
- \@whilenum\@attic@num>999\do{%
- Χ\advance\@attic@num-\@m}%
- \ifnum\@attic@num>499%
- \char"10145\advance\@attic@num-500%
- \fi\relax
- \@whilenum\@attic@num>99\do{%
- Η\advance\@attic@num-100}%
- \ifnum\@attic@num>49%
- \char"10144\advance\@attic@num-50%
- \fi\relax
- \@whilenum\@attic@num>9\do{%
- Δ\advance\@attic@num by-10}%
- \@whilenum\@attic@num>4\do{%
- Π\advance\@attic@num-5}%
- \ifcase\@attic@num\or Ι\or ΙΙ\or ΙΙΙ\or ΙΙΙΙ\fi%
- \fi\fi}
-\def\@atticnum#1{%
- \expandafter\@@atticnum\expandafter{\the#1}}
-\def\atticnumeral#1{%
- \@attic@num#1\relax
- \@atticnum{\@attic@num}}
-\let\atticnum=\atticnumeral
-
-\def\greek@numbers{%
- \if@greek@numerals
- \def\greek@alph##1{\expandafter\greeknumeral\expandafter{\the##1}}%
- \def\greek@Alph##1{\expandafter\Greeknumeral\expandafter{\the##1}}%
- \let\@alph\greek@alph%
- \let\@Alph\greek@Alph%
- \fi}
-
-\def\nogreek@numbers{%
- \let\@alph\latin@alph%
- \let\@Alph\latin@Alph%
- \let\greek@alph\@undefined%
- \let\greek@Alph\@undefined%
- }
-
-% \end{macrocode}
-% \iffalse
-%</gloss-greek.ldf>
-%<*gloss-he.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-he.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-he.ldf}[polyglossia: module for he (hebrew)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{hebrew}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-he.ldf>
-%<*gloss-hebrew.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-hebrew.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-hebrew.ldf}[polyglossia: module for hebrew]
-\ifluatex
- \xpg@warning{Hebrew is not supported with LuaTeX.\MessageBreak
-I will proceed with the compilation, but\MessageBreak
-the output is not guaranteed to be correct\MessageBreak
-and may look very wrong.}
-\fi
-\RequireBidi
-\RequirePackage{hebrewcal}
-
-\PolyglossiaSetup{hebrew}{
- bcp47=he,
- script=Hebrew,
- direction=RL,
- scripttag=hebr,
- langtag=IWR,
- hyphennames={nohyphenation},
- fontsetup=true,
- localnumeral=hebrewnumerals
- %TODO localalph={hebrewnumeral,Hebrewnumeral}
- %digits = hebrewnumber
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{hebrew}{he}
-
-\newif\if@calendar@hebrew
-\def\tmp@hebrew{hebrew}
-\define@key{hebrew}{calendar}[gregorian]{%
- \message{Setting \string\if@calendar@hebrew}
- \def\@tmpa{#1}%
- \ifx\@tmpa\tmp@hebrew%
- \@calendar@hebrewtrue%
- \else%
- \@calendar@hebrewfalse%
- \fi}
-
-\newif\if@xpg@hebrew@marcheshvan
-\@xpg@hebrew@marcheshvanfalse
-
-\define@boolkey{hebrew}[@xpg@hebrew@]{marcheshvan}[true]{}
-
-% hebrewcal.sty also defines the boolean key fullyear (default=false)
-
-\newif\if@hebrew@numerals
-\def\tmp@hebrew{hebrew}
-\define@key{hebrew}{numerals}[arabic]{%
- \def\@tmpa{#1}%
- \ifx\@tmpa\tmp@hebrew%
- \@hebrew@numeralstrue%
- \else%
- \@hebrew@numeralsfalse%
- \fi}
-
-\setkeys{hebrew}{numerals}
-
-% Register default options
-\xpg@initialize@gloss@options{hebrew}{numerals=arabic,calendar=gregorian,marcheshvan=false}
-
-\def\captionshebrew{%
- \def\prefacename{מבוא}%
- \def\refname{מקורות}%
- \def\abstractname{תקציר}%
- \def\bibname{ביבליוגרפיה}%
- \def\chaptername{פרק}%
- \def\appendixname{נספח}%
- \def\contentsname{תוכן העניינים}%
- \def\listfigurename{רשימת האיורים}%
- \def\listtablename{רשימת הטבלאות}%
- \def\indexname{מפתח}%
- \def\figurename{איור}%
- \def\tablename{טבלה}%
- \def\partname{חלק}%
- \def\enclname{רצ"ב}%
- \def\ccname{העתקים}%
- \def\headtoname{אל}%
- \def\pagename{עמוד}%
- \def\psname{נ.ב.}%
- \def\seename{ראה}%
- \def\alsoname{ראה גם}% check
- \def\proofname{הוכחה}
- \def\glossaryname{מילון מונחים}% check
-}
-\def\datehebrew{%
- \def\today{%
- \if@calendar@hebrew%
- \hebrewtoday%
- \else%
- \hebrewnumber\day%
- \space ב\hebrewgregmonth{\month}\space%
- \hebrewnumber\year%
- \fi}%
-}
-
-\def\hebrewgregmonth#1{\ifcase#1%
- \or ינואר% יאנואר
- \or פברואר\or מרץ% מרס / מארס
- \or אפריל\or מאי% מי
- \or יוני\or יולי\or אוגוסט %אבגוסט
- \or ספטמבר\or אוקטובר\or נובמבר\or דצמבר\fi}
-
-\input{babel-hebrewalph.def}
-
-\newcommand{\hebrewnumerals}[2]{\hebrewnumber{#2}}
-
-\def\hebrewnumber#1{%
- \if@hebrew@numerals
- \hebrewnumeral{#1}%
- \else
- \number#1%
- \fi
-}
-
-% Bidi inserts an RTL mark (0x200f) before any number, forcing numbers to
-% RTL. Hebrew uses LTR numbers, though. So we insert an LTR mark to revert
-% the directionality
-\ifxetex
- \newcommand\xpg@hebrew@DigitsDotDashInterCharToks{\ifbool{@nonlatin}{\char"200E }{}}
-\fi
-
-\def\hebrew@ltr@numbers{%
- \ifxetex
- \XeTeXinterchartoks \bidi@sepmark@charclass \bidi@digits@charclass = {\xpg@hebrew@DigitsDotDashInterCharToks}%
- \fi%
-}
-
-\def\nohebrew@ltr@numbers{%
- \ifxetex
- % This is bidi's original intervention
- \XeTeXinterchartoks \bidi@sepmark@charclass \bidi@digits@charclass = {\DigitsDotDashInterCharToks}%
- \fi%
-}
-
-\def\hebrew@numbers{%
- \let\@alph\hebrewnumeral%
- \let\@Alph\Hebrewnumeral%
- % Prevent bidi from setting the numbers RTL
- \hebrew@ltr@numbers%
-}
-
-\def\nohebrew@numbers{%
- \let\@alph\latin@alph%
- \let\@Alph\latin@Alph%
- % Restore previous bidi numbers definition
- \nohebrew@ltr@numbers
-}
-
-\def\hebrew@globalnumbers{%
- \let\@arabic\hebrewnumber%
- \renewcommand\thefootnote{\localnumeral*{footnote}}%
- % Prevent bidi from setting the numbers RTL
- \hebrew@ltr@numbers%
-}
-
-% Store original definition
-\let\xpg@save@arabic\@arabic
-
-\def\nohebrew@globalnumbers{%
- \let\@arabic\xpg@save@arabic%
-}
-
-% Save original \MakeUppercase definition
-\let\xpg@save@MakeUppercase\MakeUppercase
-
-\def\blockextras@hebrew{%
- \def\MakeUppercase##1{##1}%
-}
-
-\def\noextras@hebrew{%
- % restore original \MakeUppercase definition
- \let\MakeUppercase\xpg@save@MakeUppercase%
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-hebrew.ldf>
-%<*gloss-hi.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-hi.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-hi.ldf}[polyglossia: module for hi (hindi)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{hindi}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-hi.ldf>
-%<*gloss-hindi.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-hindi.ldf}
-% \begin{macrocode}
-% UTF-8 strings kindly provided by Zdenĕk Wagner, 10-03-2008
-% with corrections and additional contributions by Anshuman Pandey
-% TODO: add option for velthuis transliteration with link to
-% Velthuis Devanagari project.
-
-\ProvidesFile{gloss-hindi.ldf}[polyglossia: module for hindi]
-\RequirePackage{devanagaridigits}
-\PolyglossiaSetup{hindi}{
- bcp47=hi,
- script=Devanagari,
- scripttag=deva,
- langtag=HIN,
-%% hyphennames={hindi,!sanskrit}, TODO: implement fallback patterns (with ! prefix)
- fontsetup=true,
- localnumeral=hindinumerals
- %TODO nouppercase=true,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{hindi}{hi}
-
-\ifx\l@hindi\@undefined%
- \ifx\l@sanskrit\@undefined%
- \xpg@nopatterns{Hindi}%
- \adddialect\l@hindi\l@nohyphenation%
- \else
- \xpg@warning{No hyphenation patterns were loaded for Hindi\MessageBreak
- I will use the patterns for Sanskrit instead}
- \adddialect\l@hindi\l@sanskrit%
- \fi
-\fi
-
-\def\hindi@language{%
- \polyglossia@setup@language@patterns{hindi}%
-}
-
-\def\tmp@western{Western}
-\newif\ifhindi@devanagari@numerals
-\hindi@devanagari@numeralstrue
-
-\define@key{hindi}{numerals}[Devanagari]{%
- \def\@tmpa{#1}%
- \ifx\@tmpa\tmp@western
- \hindi@devanagari@numeralsfalse
- \fi%
-}
-
-% Register default options
-\xpg@initialize@gloss@options{hindi}{numerals=Devanagari}
-
-\newcommand{\hindinumerals}[2]{\hindinumber{#2}}
-
-\def\hindinumber#1{%
- \ifhindi@devanagari@numerals
- \devanagaridigits{\number#1}%
- \else
- \number#1%
- \fi}
-
-\def\captionshindi{%
- \def\abstractname{सारांश}%
- \def\appendixname{परिशिष्ट}%
- \def\bibname{संदर्भ ग्रंथ}%
- \def\ccname{}%
- \def\chaptername{अध्याय}%
- \def\contentsname{विषय सूची}%
- \def\enclname{}%
- \def\figurename{चित्र}% रेखाचित्र
- \def\headpagename{पृष्ठ}%
- \def\headtoname{}%
- \def\indexname{सूची}%
- % सूचक
- % अनुक्रमणिका
- % अनुक्रमणि
- \def\listfigurename{चित्रों की सूची}%
- \def\listtablename{तालिकाओं की सूची}%
- \def\pagename{पृष्ठ}%
- \def\partname{खणड}%
- \def\prefacename{प्रस्तावना}% प्राक्कथन
- \def\refname{हवाले}%
- \def\tablename{तालिका}%
- \def\seename{देखिए}%
- \def\alsoname{और देखिए}%
- \def\alsoseename{और देखिए}%
-}
-\def\datehindi{%
- \def\today{\hindinumber\day\space\ifcase\month\or
- जनवरी\or
- फ़रवरी\or
- मार्च\or
- अपरैल\or
- मई\or
- जून\or
- जलाई\or
- अगस्त\or
- सितम्बर\or
- अक्तूबर\or
- नवम्बर\or
- दिसम्बर\fi
- \space\hindinumber\year}%
-}
-
-% Save original \MakeUppercase definition
-\let\xpg@save@MakeUppercase\MakeUppercase
-
-\def\blockextras@hindi{%
- \def\MakeUppercase##1{##1}%
-}
-
-\def\noextras@hindi{%
- % restore original \MakeUppercase definition
- \let\MakeUppercase\xpg@save@MakeUppercase%
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-hindi.ldf>
-%<*gloss-hr.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-hr.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-hr.ldf}[polyglossia: module for hr (croatian)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{croatian}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-hr.ldf>
-%<*gloss-hsb.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-hsb.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-hsb.ldf}[polyglossia: module for hsb (sorbian)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{sorbian}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-hsb.ldf>
-%<*gloss-hu.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-hu.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-hu.ldf}[polyglossia: module for hu (hungarian)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{hungarian}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-hu.ldf>
-%<*gloss-hungarian.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-hungarian.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-hungarian.ldf}[polyglossia: module for hungarian]
-
-\PolyglossiaSetup{hungarian}{
- bcp47=hu,
- babelname=magyar,
- hyphennames={hungarian,magyar},
- langtag=HUN,
- hyphenmins={2,2},
- fontsetup=true,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{hungarian}{hu}
-
-\frenchspacing
-
-% Babel and backwards compat. alias
-\setlanguagealias{hungarian}{magyar}
-
-\newif\if@hungarian@swapcaptions
-\newif\if@hungarian@swapheadings
-\newif\if@hungarian@swapheaders
-\define@choicekey*+{hungarian}{swapstrings}[\xpg@val\xpg@nr]{all,captions,headings,headers,hheaders,none}[all]{%
- \ifcase\xpg@nr\relax
- % all:
- \@hungarian@swapcaptionstrue%
- \@hungarian@swapheadingstrue%
- \@hungarian@swapheaderstrue%
- \or
- % captions:
- \@hungarian@swapcaptionstrue%
- \@hungarian@swapheadingsfalse%
- \@hungarian@swapheadersfalse%
- \or
- % headings:
- \@hungarian@swapcaptionsfalse%
- \@hungarian@swapheadingstrue%
- \@hungarian@swapheadersfalse%
- \or
- % headers:
- \@hungarian@swapcaptionsfalse%
- \@hungarian@swapheadingsfalse%
- \@hungarian@swapheaderstrue%
- \or
- % hheaders:
- \@hungarian@swapcaptionsfalse%
- \@hungarian@swapheadingstrue%
- \@hungarian@swapheaderstrue%
- \or
- % none:
- \@hungarian@swapcaptionsfalse%
- \@hungarian@swapheadingsfalse%
- \@hungarian@swapheadersfalse%
- \fi
- \xpg@info{Option: Hungarian, swapstrings=\xpg@val}%
-}{\xpg@warning{Unknown Hungarian swapstrings value `#1'}}
-
-% Register default options
-\xpg@initialize@gloss@options{hungarian}{swapstrings=all}
-
-\def\hungarian@language{%
- \polyglossia@setup@language@patterns{hungarian}%
- \xpg@ifdefined{hungarian}{\adddialect\l@magyar\l@hungarian}{}%
-}%
-
-\def\captionshungarian{%
- \def\refname{Hivatkozások}%
- \def\abstractname{Kivonat}%
- \def\bibname{Irodalomjegyzék}%
- \def\prefacename{Előszó}%
- \def\chaptername{fejezet}%
- \def\appendixname{Függelék}%
- \def\contentsname{Tartalomjegyzék}%
- \def\listfigurename{Ábrák jegyzéke}%
- \def\listtablename{Táblázatok jegyzéke}%
- \def\indexname{Tárgymutató}%
- \def\figurename{ábra}%
- \def\tablename{táblázat}%
- %\def\thepart{}%
- \def\partname{rész}%
- \def\pagename{oldal}%
- \def\seename{lásd}%
- \def\alsoname{lásd még}%
- \def\enclname{Melléklet}%
- \def\ccname{Körlevél–címzettek}%
- \def\headtoname{Címzett}%
- \def\proofname{Bizonyítás}%
- \def\glossaryname{Szójegyzék}%
-}
-
-\def\datehungarian{%
- \def\today{%
- \number\year.\nobreakspace\ifcase\month\or
- január\or február\or március\or
- április\or május\or június\or
- július\or augusztus\or szeptember\or
- október\or november\or december\fi
- \space\number\day.}%
- \def\ondatehungarian{%
- \number\year.\nobreakspace\ifcase\month\or
- január\or február\or március\or
- április\or május\or június\or
- július\or augusztus\or szeptember\or
- október\or november\or december\fi
- \space\ifcase\day\or
- 1-jén\or 2-án\or 3-án\or 4-én\or 5-én\or
- 6-án\or 7-én\or 8-án\or 9-én\or 10-én\or
- 11-én\or 12-én\or 13-án\or 14-én\or 15-én\or
- 16-án\or 17-én\or 18-án\or 19-én\or 20-án\or
- 21-én\or 22-én\or 23-án\or 24-én\or 25-én\or
- 26-án\or 27-én\or 28-án\or 29-én\or 30-án\or
- 31-én\fi}%
- \let\ontoday\ondatehungarian%
- \let\ondatemagyar\ondatehungarian%
-}
-
-% Save original capsformats
-\let\xpg@save@fnum@table\fnum@table
-\let\xpg@save@fnum@figure\fnum@figure
-
-\def\hungarian@capsformat{%
- %
- % Change captions
- \if@hungarian@swapcaptions
- % change 'ábra x.x' to 'x.x. ábra'
- \def\fnum@figure{\thefigure.~\figurename}
- %
- % change 'táblázat x.x' to 'x.x. táblázat'
- \def\fnum@table{\thetable.~\tablename}
- \fi
- %
- % change chapter and part headings
- \if@hungarian@swapheadings
- % With titlesec
- \ifcsdef{titleformat}{%
- \ifcsdef{@part}{%
- \let\xpg@save@part@format\@part%
- \patchcmd{\@part}%
- {\partname\nobreakspace\thepart}%
- {\thepart.\nobreakspace\partname}%
- {}%
- {\xpg@warning{Failed to patch part for Hungarian}}%
- }{}%
- \ifcsdef{chapter}{%
- \titleformat\chapter[display]%
- {\@ifundefined{ttl@fil}{\raggedright}{\ttl@fil}\ttl@fonts\ttl@sizes6}
- {\thechapter.\space\@chapapp}{.8\baselineskip}{\ttl@sizes\z@\ttl@passexplicit}
- }{}%
- }{% (not \ifdefined\titleformat)
- % With KOMA
- \ifcsdef{sectionformat}{%
- \ifcsdef{partformat}{%
- \let\xpg@save@part@format\partformat%
- \renewcommand{\partformat}{\thepart.~\partname}%
- }{}%
- \ifcsdef{chapterformat}{%
- \let\xpg@save@chap@format\chapterformat%
- \renewcommand{\chapterformat}{\mbox{\thechapter\autodot%
- \IfUsePrefixLine{\nobreakspace\chapapp}{\enskip}}}%
- }{}%
- }{% (not \ifdefined\sectionformat)
- % With memoir
- \ifcsdef{@memptsize}{%
- \ifcsdef{@makechapterhead}{%
- \let\xpg@save@chap@format\@makechapterhead%
- \patchcmd{\@makechapterhead}{\printchaptername \chapternamenum \printchapternum}%
- {\printchapternum.\chapternamenum\printchaptername}%
- {}%
- {\xpg@warning{Failed to patch chapter for Hungarian}}%
- }{}%
- \ifcsdef{@part}{%
- \let\xpg@save@part@format\@part%
- \patchcmd{\@part}{\printpartname \partnamenum \printpartnum}%
- {\printpartnum.\partnamenum\printpartname}%
- {}%
- {\xpg@warning{Failed to patch part for Hungarian}}%
- }{}%
- }{% (not \ifdefined\@memptsize)
- % With standard classes
- \ifcsdef{@makechapterhead}{%
- \let\xpg@save@chap@format\@makechapterhead%
- \patchcmd{\@makechapterhead}%
- {\@chapapp\space \thechapter}%
- {\thechapter.\space \@chapapp}%
- {}%
- {\xpg@warning{Failed to patch chapter for Hungarian}}%
- }{}%
- \ifcsdef{@part}{%
- \let\xpg@save@part@format\@part%
- \patchcmd{\@part}%
- {\partname\nobreakspace\thepart}%
- {\thepart.\nobreakspace\partname}%
- {}%
- {\xpg@warning{Failed to patch part for Hungarian}}%
- }{}% (end \ifdefined\@part)
- }% (end \ifdefined\@memptsize)
- }% (end \ifdefined\sectionformat)
- }% (end \ifdefined\titleformat)
- \fi% (end \if@hungarian@swapheadings)
- %
- % Change running headers
- \if@hungarian@swapheaders
- \ifcsdef{chapterformat}{%
- % With KOMA
- \let\xpg@save@chaptermark@format\chaptermarkformat%
- \renewcommand*\chaptermarkformat{%
- \thechapter\autodot\ \IfChapterUsesPrefixLine{\chapapp\enskip}{}}
- }{% (not \ifdefined\chapterformat)
- \ifcsdef{@memptsize}{%
- % With memoir
- \let\xpg@save@chaptermark@format\chaptermark%
- \renewcommand*\chaptermark[1]{%
- \markboth{\memUChead{%
- \ifnum \c@secnumdepth >\m@ne
- \ifbool{@mainmatter}{%
- \thechapter.\ \@chapapp\ %
- }{}%
- \fi
- ##1}}{}}%
- }{% (not \ifdefined\@memptsize)
- % With standard classes
- \ifcsdef{chaptermark}{%
- \ifpatchable{\chaptermark}%
- {\@chapapp\ \thechapter.}%
- {\let\xpg@save@chaptermark@format\chaptermark%
- \patchcmd{\chaptermark}%
- {\@chapapp\ \thechapter.}%
- {\thechapter.\ \@chapapp}%
- {}%
- {\xpg@warning{Failed to patch chaptermark for Hungarian}}}%
- {}%
- }{}% (end \ifdefined\chaptermark)
- }% (end \ifdefined\@memptsize)
- }% (end \ifdefined\chapterformat)
- \fi% (end \if@hungarian@swapheaders)
-}
-
-\def\nohungarian@capsformat{%
- %
- % Reset changes of \hungarian@capsformat
- \let\fnum@table\xpg@save@fnum@table%
- \let\fnum@figure\xpg@save@fnum@figure%
- %
- % Reset chapter and part heading
- \ifcsdef{titleformat}{%
- % With titlesec
- \ifcsdef{xpg@save@part@format}{%
- \let\@part\xpg@save@part@format
- }{}%
- \ifcsdef{chapter}{%
- \titleformat\chapter[display]%
- {\@ifundefined{ttl@fil}{\raggedright}{\ttl@fil}\ttl@fonts\ttl@sizes6}
- {\@chapapp\space\thechapter}{.8\baselineskip}{\ttl@sizes\z@\ttl@passexplicit}
- }{}%
- }{% (not \ifdefined\titleformat)
- \ifcsdef{sectionformat}{%
- % With KOMA
- \ifcsdef{xpg@save@part@format}{%
- \let\partformat\xpg@save@part@format
- }{}%
- \ifcsdef{xpg@save@chap@format}{%
- \let\chapterformat\xpg@save@chap@format
- }{}%
- }{%
- % With memoir and standard classes
- \ifcsdef{xpg@save@part@format}{%
- \let\@part\xpg@save@part@format
- }{}%
- \ifcsdef{xpg@save@chap@format}{%
- \let\@makechapterhead\xpg@save@chap@format
- }{}%
- }% (end \ifdefined\sectionformat)
- }% (end \ifdefined\titleformat)
- %
- % Reset headers
- \ifcsdef{chaptermarkformat}{%
- % With KOMA
- \ifcsdef{xpg@save@chaptermark@format}{%
- \let\chaptermarkformat\xpg@save@chaptermark@format%
- }{}%
- }{%
- \ifcsdef{chaptermark}{%
- % With memoir and standard classes
- \ifcsdef{xpg@save@chaptermark@format}{%
- \let\chaptermark\xpg@save@chaptermark@format%
- }{}%
- }{}% (end \ifdefined\chaptermark)
- }% (end \ifdefined\chapterformat)
-}
-
-\def\blockextras@hungarian{%
- \hungarian@capsformat%
-}
-
-\def\noextras@hungarian{%
- \nohungarian@capsformat%
- \let\ontoday\@undefined%
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-hungarian.ldf>
-%<*gloss-hy.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-hy.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-hy.ldf}[polyglossia: module for hy (armenian)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{armenian}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-hy.ldf>
-%<*gloss-ia.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-ia.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-ia.ldf}[polyglossia: module for ia (interlingua)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{interlingua}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-ia.ldf>
-%<*gloss-icelandic.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-icelandic.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-icelandic.ldf}[polyglossia: module for icelandic]
-\PolyglossiaSetup{icelandic}{
- bcp47=is,
- hyphennames={icelandic},
- hyphenmins={2,2},
- langtag=ISL,
- fontsetup=true,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{icelandic}{is}
-
-\def\captionsicelandic{%
- \def\refname{Heimildir}%
- \def\abstractname{Útdráttur}%
- \def\bibname{Heimildir}%
- \def\prefacename{Formáli}%
- \def\chaptername{Kafli}%
- \def\appendixname{Viðauki}%
- \def\contentsname{Efnisyfirlit}%
- \def\listfigurename{Myndaskrá}%
- \def\listtablename{Töfluskrá}%
- \def\indexname{Atriðisorðaskrá}%
- \def\figurename{Mynd}%
- \def\tablename{Tafla}%
- %\def\thepart{}%
- \def\partname{Hluti}%
- \def\pagename{Blaðsíða}%
- \def\seename{Sjá}%
- \def\alsoname{Sjá einnig}%
- \def\enclname{Hjálagt}%
- \def\ccname{Samrit}%
- \def\headtoname{Til:}%
- \def\proofname{Sönnun}%
- \def\glossaryname{Orðalisti}%
- }
-
-\def\dateicelandic{%
- \def\today{\number\day.~\ifcase\month\or
- janúar\or febrúar\or mars\or apríl\or maí\or
- júní\or júlí\or ágúst\or september\or
- október\or nóvember\or desember\fi
- \space\number\year}%
- }
-
-% \end{macrocode}
-% \iffalse
-%</gloss-icelandic.ldf>
-%<*gloss-id.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-id.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-id.ldf}[polyglossia: module for id (malay)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{malay}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-id.ldf>
-%<*gloss-interlingua.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-interlingua.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-interlingua.ldf}[polyglossia: module for interlingua]
-\PolyglossiaSetup{interlingua}{
- bcp47=ia,
- hyphennames={interlingua},
- hyphenmins={2,2},
- langtag=INA,
- frenchspacing=true,
- indentfirst=true,
- fontsetup=true,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{interlingua}{ia}
-
-\def\captionsinterlingua{%
- \def\refname{Referentias}%
- \def\abstractname{Summario}%
- \def\bibname{Bibliographia}%
- \def\prefacename{Prefacio}%
- \def\chaptername{Capitulo}%
- \def\appendixname{Appendice}%
- \def\contentsname{Contento}%
- \def\listfigurename{Lista de figuras}%
- \def\listtablename{Lista de tabellas}%
- \def\indexname{Indice}%
- \def\figurename{Figura}%
- \def\tablename{Tabella}%
- \def\partname{Parte}%
- %\def\thepart{}%
- \def\pagename{Pagina}%
- \def\seename{vide}%
- \def\alsoname{vide etiam}%
- \def\enclname{Incluso}%
- \def\ccname{Copia}%
- \def\headtoname{A}%
- \def\proofname{Prova}%
- \def\glossaryname{Glossario}%
- }
-\def\dateinterlingua{%
- \def\today{le~\number\day\space de \ifcase\month\or
- januario\or februario\or martio\or april\or maio\or junio\or
- julio\or augusto\or septembre\or octobre\or novembre\or
- decembre\fi
- \space \number\year}}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-interlingua.ldf>
-%<*gloss-irish.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-irish.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-irish.ldf}[polyglossia: module for irish]
-
-% We only provide this gloss for babel compatibility. Since irish is
-% a gaelic variety, we use 'gaelic' with variant 'irish' now.
-
-\xpg@load@master@language{gaelic}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-irish.ldf>
-%<*gloss-is.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-is.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-is.ldf}[polyglossia: module for is (icelandic)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{icelandic}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-is.ldf>
-%<*gloss-it.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-it.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-it.ldf}[polyglossia: module for it (italian)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{italian}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-it.ldf>
-%<*gloss-italian.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-italian.ldf}
-% \begin{macrocode}
-% !TEX encoding = UTF-8 Unicode
-\ProvidesFile{gloss-italian.ldf}[polyglossia: module for italian]
-\PolyglossiaSetup{italian}{
- bcp47=it,
- hyphennames={italian},
- hyphenmins={2,2},
- langtag=ITA,
- frenchspacing=true,
- indentfirst=true,
- fontsetup=true,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{italian}{it}
-
-
-%%% CHANGES START %%% by Enrico Gregorio
-\define@boolkey{italian}[italian@]{babelshorthands}[true]{}
-
-% Register default options
-\xpg@initialize@gloss@options{italian}{babelshorthands=false}
-
-\ifsystem@babelshorthands
- \setkeys{italian}{babelshorthands=true}
-\else
- \setkeys{italian}{babelshorthands=false}
-\fi
-
-\ifcsundef{initiate@active@char}{%
- \input{babelsh.def}%
- \initiate@active@char{"}%
- \shorthandoff{"}%
-}{}
-
-\def\italian@shorthands{%
- \bbl@activate{"}%
- \def\language@group{italian}%
- \declare@shorthand{italian}{"}{%
- \relax\ifmmode
- \def\xpgit@next{''}%
- \else
- \def\xpgit@next{\futurelet\xpgit@temp\xpgit@cwm}%
- \fi
- \xpgit@next}%
-}
-
-%%% By Enrico Gregorio and Claudio Beccari %%%
-\def\xpgit@@cwm{\nobreak\discretionary{-}{}{}\nobreak\hskip\z@skip}
-\def\xpgit@cwm{\let\xpgit@@next\relax
- \ifcat\noexpand\xpgit@temp a%
- \def\xpgit@@next{\xpgit@@cwm}%
- \else
- \if\noexpand\xpgit@temp \string|%
- \def\xpgit@@next##1{\xpgit@@cwm}%
- \else
- \if\noexpand\xpgit@temp \string<%
- \def\xpgit@@next##1{«\ignorespaces}%
- \else
- \if\noexpand\xpgit@temp \string>%
- \def\xpgit@@next##1{\unskip »}%
- \else
- \if\noexpand\xpgit@temp\string/%
- \def\xpgit@@next##1{\slash}%
- \else
- \ifx\xpgit@temp"%
- \def\xpgit@@next##1{?}%
- \fi
- \fi
- \fi
- \fi
- \fi
- \fi
- \xpgit@@next}
-
-\def\noitalian@shorthands{%
- \@ifundefined{initiate@active@char}{}{\bbl@deactivate{"}}%
-}
-%%% CHANGES END %%%
-
-%%% ORIGINAL %%% by Claudio Beccari
-\def\captionsitalian{%
- \def\prefacename{Prefazione}%
- \def\refname{Riferimenti bibliografici}%
- \def\abstractname{Sommario}%
- \def\bibname{Bibliografia}%
- \def\chaptername{Capitolo}%
- \def\appendixname{Appendice}%
- \def\contentsname{Indice}%
- \def\listfigurename{Elenco delle figure}%
- \def\listtablename{Elenco delle tabelle}%
- \def\indexname{Indice analitico}%
- \def\figurename{Figura}%
- \def\tablename{Tabella}%
- \def\partname{Parte}%
- \def\enclname{Allegati}%
- \def\ccname{e~p.~c.}%
- \def\headtoname{Per}%
- \def\pagename{Pag.}% % in Italian the abbreviation is preferred
- \def\seename{vedi}%
- \def\alsoname{vedi anche}%
- \def\proofname{Dimostrazione}%
- \def\glossaryname{Glossario}%
- }
-\def\dateitalian{%
- \def\today{\number\day~\ifcase\month\or
- gennaio\or febbraio\or marzo\or aprile\or maggio\or giugno\or
- luglio\or agosto\or settembre\or ottobre\or novembre\or
- dicembre\fi\space \number\year}}
-%%% ORIGINAL END %%%
-
-%%% CHANGES START %%% by Enrico Gregorio
-\let\xpgit@savedvalues\empty
-\AtEndPreamble{% the user or the class might define different values
- \edef\xpgit@savedvalues{%
- \clubpenalty=\the\clubpenalty\space
- \@clubpenalty=\the\@clubpenalty\space
- \widowpenalty=\the\widowpenalty\space
- \finalhyphendemerits=\the\finalhyphendemerits}
-}
-
-
-\def\noextras@italian{%
- \lccode\string"2019=\z@
- \noitalian@shorthands
- \xpgit@savedvalues
-}
-
-\def\blockextras@italian{%
- \lccode\string"2019=\string"2019
- \clubpenalty=3000 \@clubpenalty=3000 \widowpenalty=3000
- \finalhyphendemerits=50000000
- \ifitalian@babelshorthands\italian@shorthands\fi
-}
-
-\def\inlineextras@italian{%
- \lccode\string"2019=\string"2019
- \ifitalian@babelshorthands\italian@shorthands\fi
-}
-%%% CHANGES END %%%
-% \end{macrocode}
-% \iffalse
-%</gloss-italian.ldf>
-%<*gloss-ja.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-ja.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-ja.ldf}[polyglossia: module for ja (japanese)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{japanese}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-ja.ldf>
-%<*gloss-japanese.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-japanese.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-japanese.ldf}[polyglossia: module for japanese]
-
-\PolyglossiaSetup{japanese}{
- bcp47=ja,
- script=CJK,
- language=Japanese,
- langtag=JAN,
- hyphennames={nohyphenation},
- frenchspacing=false,
- fontsetup=true,
- localnumeral=japanesenumerals
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{japanese}{ja}
-
-\def\japanese@capsformat{%
- \def\@seccntformat##1{%
- \csname pre##1\endcsname%
- \csname the##1\endcsname%
- \csname post##1\endcsname%
- }%
- \def\postsection{節\space}%
- \def\postsubsection{節\space}%
- \def\postsubsubsection{節\space}%
- \def\presection{第}%
- \def\presubsection{第}%
- \def\presubsubsection{第}%
-}
-
-\def\captionsjapanese{%
- \def\refname{参考文献}%
- \def\abstractname{概要}%
- \def\bibname{文献目録}%
- \def\prefacename{端書き}%
- \def\chaptername##1##2{第##1##2 章}%
- \def\appendixname{付録}%
- \def\contentsname{目次}%
- \def\listfigurename{図目次}%
- \def\listtablename{表目次}%
- \def\indexname{索引}%
- \def\figurename{図}%
- \def\tablename{表}%
- \def\partname##1##2{第##1##2 部}%
- \def\pagename##1##2{第##1##2 頁}%
- \def\seename{参照}%
- \def\alsoname{参照}%
- \def\enclname{添付}%
- \def\ccname{同報}%
- \def\headtoname{宛先}%
- \def\proofname{証明}%
- \def\glossaryname{用語集}%
- }
-
-\newif\if@WameiReki \@WameiRekifalse%
-\newif\if@WameiTosi \@WameiTosifalse%
-\newif\if@WameiTuki \@WameiTukifalse%
-\newif\if@WameiHi \@WameiHifalse%
-\newif\if@IzumoTuki \@IzumoTukifalse%
-\newcount\c@TempJNum%
-
-\def\@JapaneseDigit#1{%
- \ifcase#1\or 一\or 二\or 三\or 四\or 五\or%
- 六\or 七\or 八\or 九\or 十\or%
- 十一\or 十二\or 十三\or 十四\or 十五\or%
- 十六\or 十七\or 十八\or 十九\or 廿\or%
- 廿一\or 廿二\or 廿三\or 廿四\or 廿五\or%
- 廿六\or 廿七\or 廿八\or 廿九\or 丗\or%
- 丗一\or 丗二\or 丗三\or 丗四\or 丗五\or%
- 丗六\or 丗七\or 丗八\or 丗九\or 四十\or%
- 四十一\or 四十二\or 四十三\or 四十四\or 四十五\or%
- 四十六\or 四十七\or 四十八\or 四十九\or 五十\or%
- 五十一\or 五十二\or 五十三\or 五十四\or 五十五\or%
- 五十六\or 五十七\or 五十八\or 五十九\or 六十\or%
- 六十一\or 六十二\or 六十三\or 六十四\or 六十五\or%
- 六十六\or 六十七\or 六十八\or 六十九\or 七十\or%
- 七十一\or 七十二\or 七十三\or 七十四\or 七十五\or%
- 七十六\or 七十七\or 七十八\or 七十九\or 八十\or%
- 八十一\or 八十二\or 八十三\or 八十四\or 八十五\or%
- 八十六\or 八十七\or 八十八\or 八十九\or 九十\or%
- 九十一\or 九十二\or 九十三\or 九十四\or 九十五\or%
- 九十六\or 九十七\or 九十八\or 九十九%
- \else
- \@ctrerr%
- \fi\relax%
-}
-
-\def\@JapaneseNum#1{%
- \c@TempJNum=#1\divide\c@TempJNum by 1000\relax%
- \ifnum\c@TempJNum=\z@\c@TempJNum=#1%
- \divide\c@TempJNum by 100\relax%
- \ifnum\c@TempJNum=\z@\@JapaneseDigit{#1}\relax%
- \else
- \ifcase\c@TempJNum\or 百\or 二百\or 三百\or 四百\or 五百\or
- 六百\or 七百\or 八百\or 九百%
- \fi
- \c@TempJNum=#1\divide\c@TempJNum by 100\multiply\c@TempJNum by -100\advance\c@TempJNum#1\@JapaneseDigit\c@TempJNum\relax%
- \fi%
- \else
- \ifcase\c@TempJNum\or 千\or 二千\or 三千\or 四千\or 五千\or
- 六千\or 七千\or 八千\or 九千%
- \fi
- \c@TempJNum=#1\divide\c@TempJNum by 1000\multiply\c@TempJNum by -1000\advance\c@TempJNum#1\divide\c@TempJNum by 100\relax%
- \ifnum\c@TempJNum=\z@\c@TempJNum=#1%
- \divide\c@TempJNum by 100\multiply\c@TempJNum by -100\advance\c@TempJNum#1\@JapaneseDigit\c@TempJNum\relax%
- \else
- \ifcase\c@TempJNum\or 百\or 二百\or 三百\or 四百\or 五百\or
- 六百\or 七百\or 八百\or 九百%
- \fi
- \c@TempJNum=#1\divide\c@TempJNum by 100\multiply\c@TempJNum by -100\advance\c@TempJNum#1\@JapaneseDigit\c@TempJNum\relax%
- \fi
- \fi
-}
-
-\def\@japanesenumber#1{%
- \@tempcnta=#1%
- \ifnum\@tempcnta=\z@{〇}%
- \else
- \ifnum\@tempcnta<\z@{負}%
- \multiply\@tempcnta by -1%
- \fi
- \@tempcntb=\@tempcnta\divide\@tempcntb by 10000\relax%
- \ifnum\@tempcntb=\z@\@JapaneseNum%
- \@tempcnta%
- \else
- \@tempcntb=\@tempcnta\divide\@tempcntb by 100000000\relax%
- \ifnum\@tempcntb=\z@\@tempcntb=\@tempcnta%
- \divide\@tempcntb by 10000%
- \@JapaneseNum\@tempcntb{万}\@tempcntb=\@tempcnta%
- \divide\@tempcntb by 10000\multiply\@tempcntb by -10000%
- \advance\@tempcntb\@tempcnta\relax\@JapaneseNum\@tempcntb%
- \else
- \@JapaneseNum\@tempcntb{億}\@tempcntb=\@tempcnta%
- \divide\@tempcntb by 100000000\multiply\@tempcntb by -100000000%
- \advance\@tempcntb\@tempcnta\divide\@tempcntb by 10000\relax%
- \ifnum\@tempcntb=\z@%
- \else
- \@JapaneseNum\@tempcntb{万}%
- \fi
- \@tempcntb=\@tempcnta\divide\@tempcntb by 10000%
- \multiply\@tempcntb by -10000\advance\@tempcntb\@tempcnta%
- \@JapaneseNum\@tempcntb%
- \fi
- \fi
- \fi
-}
-
-\def\japanesenumber#1{%
- \expandafter\@japanesenumber\csname c@#1\endcsname%
-}
-
-\newcommand{\japanesenumerals}[2]{\@japanesenumber{#2}}
-
-\def\datejapanese{%
- {%
- \ifnum\year<1868%
- \xdef\the@WarekiCur{}%
- \else
- \ifnum\year<1912%
- \xdef\the@WarekiCur{明治}\advance\year-1867\relax%
- \else
- \ifnum\year<1926%
- \xdef\the@WarekiCur{大正}\advance\year-1911\relax%
- \else
- \ifnum\year<1989%
- \xdef\the@WarekiCur{昭和}\advance\year-1925\relax%
- \else
- \xdef\the@WarekiCur{平成}\advance\year-1988\relax%
- \fi
- \fi
- \fi
- \fi
- \xdef\the@WameiTosi{\the\year}%
- }%
- \def\西暦{\@WameiRekifalse \@WameiTukifalse \@WameiHifalse}%
- \def\和暦{\@WameiRekitrue \@WameiTosifalse \@WameiTukifalse \@WameiHifalse}%
- \def\和名暦{\@WameiTositrue \@WameiTukitrue \@WameiHitrue}%
- \def\数字暦{\@WameiTosifalse \@WameiTukifalse \@WameiHifalse}%
- \def\出雲月{\@IzumoTukitrue}%
- \def\大和月{\@IzumoTukifalse}%
- \def\today{%
- \if@WameiReki%
- \the@WarekiCur%
- \if@WameiTosi%
- \@JapaneseNum\the@WameiTosi%
- \else
- \,\the@WameiTosi%
- \fi
- \else
- \number\year\,%
- \fi
- {年}%
- \if@WameiTuki%
- \ifcase\month\or 睦月\or 如月\or 弥生\or 卯月\or 皐月\or
- 水無月\or 文月\or 葉月\or 長月\or
- \if@IzumoTuki 神在月\else 神無月\fi
- \or 霜月\or 師走%
- \fi
- \else
- \,\number\month\,%
- {月}%
- \fi
- \if@WameiHi%
- \@JapaneseNum\day%
- \else
- \,\number\day\,%
- \fi
- {日}%
- }%
-}
-
-\def\noextras@japanese{%
- \japanese@capsformat%
-}
-
-\def\blockextras@japanese{%
- \japanese@capsformat%
-}
-
-\def\inlineextras@japanese{%
- \japanese@capsformat%
-}
-% Based on contributions of Toru Inagaki, Norio Iwase, François Charette
-
-% \end{macrocode}
-% \iffalse
-%</gloss-japanese.ldf>
-%<*gloss-ka.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-ka.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-ka.ldf}[polyglossia: module for ka (georgian)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{georgian}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-ka.ldf>
-%<*gloss-kannada.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-kannada.ldf}
-% \begin{macrocode}
-%% gloss-kannada.ldf
-%% Copyright 2011 Aravinda VK <hallimanearavind AT gmail.com>,
-%% Shankar Prasad <prasad.mvs AT gmail.com>,
-%% Team Sanchaya <dev AT lists.sanchaya.net>
-%
-% This work 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 2005/12/01 or later.
-%
-% This work has the LPPL maintenance status `maintained'.
-%
-% The Current Maintainer of this work is Aravinda VK <hallimanearavind AT gmail.com>.
-%
-% This work consists of the file gloss-kannada.ldf
-\ProvidesFile{gloss-kannada.ldf}[polyglossia: module for kannada]
-\ifluatex
- \xpg@warning{Kannada is not supported with LuaTeX.\MessageBreak
-I will proceed with the compilation, but\MessageBreak
-the output is not guaranteed to be correct\MessageBreak
-and may look very wrong.}
-\fi
-\PolyglossiaSetup{kannada}{
- bcp47=kn,
- script=Kannada,
- scripttag=knda,
- langtag=KAN,
- hyphennames={kannada},
- hyphenmins={2,2},
- fontsetup=true,
- localnumeral=kannadanumerals
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{kannada}{kn}
-
-%% Defining Kannada digits equivalents to english
-\def\kannadadigits#1{\expandafter\@kannada@digits #1@}
-\def\@kannada@digits#1{%
- \ifx @#1% then terminate
- \else
- \ifx0#1೦\else\ifx1#1೧\else\ifx2#1೨\else\ifx3#1೩\else\ifx4#1೪\else\ifx5#1೫\else\ifx6#1೬\else\ifx7#1೭\else\ifx8#1೮\else\ifx9#1೯\else#1\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
- \expandafter\@kannada@digits
- \fi
-}
-
-%% \kannada@numerals variable will be set to true or false depending on the option provided in \setmainlanguage
-%% \kannada@numerals true by default or when we set \setmainlanguage[numerals=Kannada]{kannada}
-%% \kannada@numerals false when we set \setmainlanguage[numerals=Western]{kannada}
-\def\tmp@western{Western}
-\newif\ifkannada@numerals
-\kannada@numeralstrue
-
-\define@key{kannada}{numerals}[Kannada]{%
- \def\@tmpa{#1}%
- \ifx\@tmpa\tmp@western
- \kannada@numeralsfalse
- \fi}
-
-
-\def\captionskannada{%
- \def\prefacename{ಮುನ್ನುಡಿ}%
- \def\refname{ಉಲ್ಲೇಖಗಳು}%
- \def\abstractname{ಸಾರಾಂಶ}%
- \def\bibname{ಗ್ರಂಥಸೂಚಿ}%
- \def\chaptername{ಅಧ್ಯಾಯ}%
- \def\appendixname{ಅನುಬಂಧ}%
- \def\contentsname{ವಿಷಯಗಳು}%
- \def\listfigurename{ಚಿತ್ರಗಳ ಪಟ್ಟಿ}%
- \def\listtablename{ಕೋಷ್ಟಕಗಳ ಪಟ್ಟಿ}%
- \def\indexname{ಸೂಚಿ}%
- \def\figurename{ಚಿತ್ರ}%
- \def\tablename{ಕೋಷ್ಟಕ}%
- \def\partname{ಭಾಗ}%
- \def\enclname{encl}%
- \def\ccname{cc}%
- \def\headtoname{ಗೆ}%
- \def\pagename{ಪುಟ}%
- \def\seename{ನೋಡು}%
- \def\alsoname{ಇದನ್ನೂ ಸಹ ನೋಡು}%
- \def\proofname{ಕರಡುಪ್ರತಿ}%
-}
-
-\def\datekannada{%
- \def\kannadamonth{%
- \ifcase\month\or
- ಜನವರಿ\or
- ಫೆಬ್ರವರಿ\or
- ಮಾರ್ಚ್\or
- ಏಪ್ರಿಲ್\or
- ಮೇ\or
- ಜೂನ್\or
- ಜುಲೈ\or
- ಆಗಷ್ಟ್\or
- ಸೆಪ್ಟೆಂಬರ್\or
- ಅಕ್ಟೋಬರ್\or
- ನವಂಬರ್\or
- ಡಿಸಂಬರ್\fi}%
- \def\today{\kannadanumber\day\space\kannadamonth\space\kannadanumber\year}%
-}
-
-\newcommand{\kannadanumerals}[2]{\kannadanumber{#2}}
-
-%% Based on the settings displays respective numbers
-\def\kannadanumber#1{%
- \ifkannada@numerals
- \kannadadigits{\number#1}%
- \else
- \number#1%
- \fi
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-kannada.ldf>
-%<*gloss-khmer.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-khmer.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-khmer.ldf}[polyglossia: module for Khmer]
-\PolyglossiaSetup{khmer}{
- bcp47=km,
- script=Khmer,%
- scripttag=khmr,%
- langtag=KHM,%
- hyphennames={nohyphenation},%
- fontsetup=true,%
- localnumeral=khmernumerals%
-}
-\newif\if@khmer@numerals
-\def\tmp@khmer{khmer}
-\define@key{khmer}{numerals}[arabic]{%
- \def\@tmpa{#1}%
- \ifx\@tmpa\tmp@khmer\@khmer@numeralstrue%
- \else\@khmer@numeralsfalse\fi%
-}
-\setkeys{khmer}{numerals}
-\def\captionskhmer{%
- \def\prefacename{អារម្ភកថា}%
- \def\refname{ឯកសារយោង}%
- \def\abstractname{សង្ខេប}%
- \def\bibname{គន្ថនិទ្ទេស}%
- \def\chaptername{ជំពូក}%
- \def\appendixname{សេចក្ដីបន្ថែម}%
- \def\contentsname{មាតិការ}%
- \def\listfigurename{បញ្ជីរូបភាព}%
- \def\listtablename{បញ្ជីតារាង}%
- \def\indexname{សន្ទស្សន៍}%
- \def\figurename{រូប}%
- \def\tablename{តារាង}%
- \def\partname{ផ្នែក}%
- \def\pagename{ទំព័រ}%
- \def\seename{មើល}%
- \def\alsoname{មើលបន្ថែម}%
- \def\enclname{ឯកសារភ្ជាប់}%
- \def\ccname{ចម្លងជួន}%
- \def\headtoname{ផ្ញើរទៅ}%
- \def\proofname{សម្រាយ}%
- \def\glossaryname{សទានុក្រម}%
-}
-\def\datekhmer{%
- \def\khmer@month{%
- \ifcase\month\or%
- មករា\or%
- កុម្ភៈ\or%
- មិនា\or%
- មេសា\or%
- ឧសភា\or%
- មិថុនា\or%
- កក្កដា\or%
- សីហា\or%
- កញ្ញា\or%
- តុលា\or%
- វិច្ឆិកា\or%
- ធ្នូ\fi}%
- \def\today{\khmernumber\day\space\khmer@month\space\khmernumber\year}%
-}
-\def\khmerdigits#1{\expandafter\@khmer@digits #1@}
-\def\@khmer@digits#1{%
- \ifx @#1% then terminate
- \else\ifx0#1០%
- \else\ifx1#1១%
- \else\ifx2#1២%
- \else\ifx3#1៣%
- \else\ifx4#1៤%
- \else\ifx5#1៥%
- \else\ifx6#1៦%
- \else\ifx7#1៧%
- \else\ifx8#1៨%
- \else\ifx9#1៩%
- \else#1\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
- \expandafter\@khmer@digits%
- \fi
-}
-
-\newcommand{\khmernumerals}[2]{\khmernumber{#2}}
-
-\def\khmernumber#1{%
- \if@khmer@numerals%
- \khmerdigits{\number#1}%
- \else%
- \number#1%
- \fi}
-\def\khmer@globalnumbers{%
- \let\orig@arabic\@arabic%
- \let\@arabic\khmernumber%
- \renewcommand{\thefootnote}{\localnumeral*{footnote}}%
-}
-\def\nokhmer@globalnumbers{%
- \let\@arabic\orig@arabic%
-}
-\def\thepart{\arabic{part}}
-\def\@khmeralph#1{%
-\ifcase#1%
-\or ក\or ខ\or គ\or ឃ\or ង%
-\or ច\or ឆ\or ជ\or ឈ\or ញ%
-\or ដ\or ឋ\or ឌ\or ឍ\or ណ%
-\or ត\or ថ\or ទ\or ធ\or ន%
-\or ប\or ផ\or ព\or ភ\or ម%
-\or យ\or រ\or ល\or វ\or ស\or ហ\or ឡ\or អ%
-\else\xpg@ill@value{#1}{@khmeralph}\fi}
-\def\khmerAlph#1{\expandafter\@khmerAlph\csname c@#1\endcsname}
-\def\@khmerAlph#1{%
-\ifcase#1%
-\or ក\or ខ\or គ\or ឃ\or ង%
-\or ច\or ឆ\or ជ\or ឈ\or ញ%
-\or ដ\or ឋ\or ឌ\or ឍ\or ណ%
-\or ត\or ថ\or ទ\or ធ\or ន%
-\or ប\or ផ\or ព\or ភ\or ម%
-\or យ\or រ\or ល\or វ\or ស\or ហ\or ឡ\or អ%
-\else\xpg@ill@value{#1}{@khmeralph}\fi}
-\def\khmer@numbers{%
- \if@khmer@numerals
- \let\@alph\@khmeralph%
- \let\@Alph\@khmerAlph%
- \fi%
-}
-\def\nokhmer@numbers{%
- \let\@alph\latin@alph%
- \let\@Alph\latin@Alph%
-}
-\def\blockextras@khmer{%
- \XeTeXlinebreaklocale "kh" %
- \XeTeXlinebreakskip = 0pt plus 1pt minus 1pt
-% \let\orig@baselinestretch\baselinestretch%
-% \renewcommand{\baselinestretch}{1.2}% not work
-}
-\def\noblockextras@khmer{%
- \XeTeXlinebreaklocale "en"%
-% \let\baselinestretch\orig@baselinestretch%
-}
-\@ifclassloaded{beamer}{%
- \usefonttheme{professionalfonts}%
- \def\factname{ស្វ័យសត្យ}%
- \def\lemmaname{បទគន្លិះ}%
- \def\theoremname{ទ្រឹស្ដីបទ}%
- \def\corollaryname{អនុសាធ្យ}%
- \def\problemname{ចំណោទ}%
- \def\solutionname{ដំណោះស្រាយ}%
- \def\definitionname{និយមន័យ}%
- \def\examplename{ឧទាហរណ៏}%
- \uselanguage{khmer}%
- \languagepath{khmer}%
- \deftranslation[to=khmer]{Fact}{\factname}%
- \deftranslation[to=khmer]{Lemma}{\lemmaname}%
- \deftranslation[to=khmer]{Theorem}{\theoremname}%
- \deftranslation[to=khmer]{Corollary}{\corollaryname}%
- \deftranslation[to=khmer]{Problem}{\problemname}%
- \deftranslation[to=khmer]{Solution}{\solutionname}%
- \deftranslation[to=khmer]{Definition}{\definitionname}%
- \deftranslation[to=khmer]{Definitions}{\definitionname}%
- \deftranslation[to=khmer]{Example}{\examplename}%
- \deftranslation[to=khmer]{Examples}{\examplename}%
- \AtEndDocument{\immediate\write\@auxout{\string\@writefile{nav}%
- {\noexpand\headcommand{\noexpand\def\noexpand%
- \inserttotalframenumber{\localnumeral*{framenumber}}}}}}%
-}{}
-% \end{macrocode}
-% \iffalse
-%</gloss-khmer.ldf>
-%<*gloss-km.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-km.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-km.ldf}[polyglossia: module for km (khmer)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{khmer}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-km.ldf>
-%<*gloss-kmr-Arab.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-kmr-Arab.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-kmr-Arab.ldf}[polyglossia: module for kmr-Arab (kurdish)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{kurdish}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-kmr-Arab.ldf>
-%<*gloss-kmr-Latn.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-kmr-Latn.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-kmr-Latn.ldf}[polyglossia: module for kmr-Latn (kurdish)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{kurdish}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-kmr-Latn.ldf>
-%<*gloss-kmr.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-kmr.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-kmr.ldf}[polyglossia: module for kmr (kurdish)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{kurdish}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-kmr.ldf>
-%<*gloss-kn.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-kn.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-kn.ldf}[polyglossia: module for kn (kannada)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{kannada}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-kn.ldf>
-%<*gloss-ko.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-ko.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-ko.ldf}[polyglossia: module for ko (korean)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{korean}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-ko.ldf>
-%<*gloss-korean.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-korean.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-korean.ldf}[polyglossia: module for Korean]
-
-\PolyglossiaSetup{korean}{
- bcp47=ko,
- script=Hangul,
- scripttag=hang,
- language=Korean,
- langtag=KOR,
- hyphennames={nohyphenation},
- frenchspacing=true,
- fontsetup=true
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{korean}{ko}
-
-% variant : plain (0), classic (1), or modern (2)
-\define@choicekey{korean}{variant}[\xpg@val\xpg@nr]{plain,classic,modern}[plain]{%
- \let\xpg@korean@variant\xpg@nr
-}
-% captions : hangul (0) or hanja (1)
-\define@choicekey{korean}{captions}[\xpg@val\xpg@nr]{hangul,hanja}[hangul]{%
- \let\xpg@korean@captions\xpg@nr
-}
-% swapstrings: all (0), headings (1), headers (2), or none (3)
-\newif\if@korean@swapheadings
-\newif\if@korean@swapheaders
-\define@choicekey*+{korean}{swapstrings}[\xpg@val\xpg@nr]{all,headings,headers,none}[all]{%
- \ifcase\xpg@nr\relax
- % all:
- \@korean@swapheadingstrue%
- \@korean@swapheaderstrue%
- \or
- % headings:
- \@korean@swapheadingstrue%
- \@korean@swapheadersfalse%
- \or
- % headers:
- \@korean@swapheadingsfalse%
- \@korean@swapheaderstrue%
- \or
- % none:
- \@korean@swapheadingsfalse%
- \@korean@swapheadersfalse%
- \fi
- \xpg@info{Option: Korean, swapstrings=\xpg@val}%
-}{\xpg@warning{Unknown Korean swapstrings value `#1'}}
-
-% Register default options
-\xpg@initialize@gloss@options{korean}{variant=plain,swapstrings=all,captions=hangul}
-
-\def\captionskorean{%
- \ifcase\xpg@korean@captions\relax
- \captions@korean@hangul
- \else
- \captions@korean@hanja
- \fi
- \def\seename{$\rightarrow$}%
- \def\alsoname{$\Rightarrow$}%
-}
-\def\captions@korean@hangul{%
- \def\koreanTHEname{제}%
- \def\partname{편}%
- \def\chaptername{장}%
- \def\refname{참고문헌}%
- \def\abstractname{요약}%
- \def\bibname{참고문헌}%
- \def\prefacename{서문}%
- \def\appendixname{부록}%
- \def\contentsname{차례}%
- \def\listfigurename{그림 차례}%
- \def\listtablename{표 차례}%
- \def\indexname{찾아보기}%
- \def\figurename{그림}%
- \def\tablename{표}%
- \def\pagename{페이지}%
- \def\enclname{동봉}%
- \def\proofname{증명}%
- \def\headtoname{수신:}%
- \def\ccname{사본}%
- \def\glossaryname{용어집}%
-}
-\def\captions@korean@hanja{%
- \def\koreanTHEname{第}%
- \def\partname{篇}%
- \def\chaptername{章}%
- \def\refname{參考文獻}%
- \def\abstractname{要約}%
- \def\bibname{參考文獻}%
- \def\prefacename{序文}%
- \def\appendixname{附錄}%
- \def\contentsname{目次}%
- \def\listfigurename{圖版 目次}%
- \def\listtablename{表 目次}%
- \def\indexname{索引}%
- \def\figurename{圖版}%
- \def\tablename{表}%
- \def\pagename{面}%
- \def\enclname{同封}%
- \def\proofname{證明}%
- \def\headtoname{受信:}%
- \def\ccname{寫本}%
- \def\glossaryname{用語集}%
-}
-
-\def\korean@appendix@chapapp{\appendixname}% to exclude appendix
-
-\def\korean@headingsformat{%
- % change chapter and part headings
- \if@korean@swapheadings
- % With titlesec
- \ifdefined\titleformat
- \ifdefined\@part
- \let\xpg@save@part@format\@part
- \patchcmd{\@part}%
- {\partname\nobreakspace\thepart}%
- {\koreanTHEname\nobreakspace \thepart\nobreakspace \partname}%
- {}%
- {\xpg@warning{Failed to patch part for Korean}}%
- \fi
- \ifdefined\chapter
- \titleformat\chapter[display]%
- {\@ifundefined{ttl@fil}{\raggedright}{\ttl@fil}\ttl@fonts\ttl@sizes6}%
- {%
- \ifx\@chapapp\korean@appendix@chapapp
- \appendixname\space \thechapter
- \else
- \koreanTHEname\space \thechapter\space \@chapapp
- \fi
- }{.8\baselineskip}{\ttl@sizes\z@\ttl@passexplicit}%
- \fi
- \else % (not \ifdefined\titleformat)
- % With KOMA
- \ifdefined\sectionformat
- \ifdefined\partformat
- \let\xpg@save@part@format\partformat
- \renewcommand*{\partformat}{\koreanTHEname~\thepart~\partname}%
- \fi
- \ifdefined\chapterformat
- \let\xpg@save@chap@format\chapterformat
- \renewcommand*{\chapterformat}{\mbox{%
- \IfChapterUsesPrefixLine
- {%
- \ifx\@chapapp\korean@appendix@chapapp
- \chapappifchapterprefix\nobreakspace \thechapter\autodot
- \else
- \koreanTHEname\nobreakspace \thechapter\nobreakspace \chapappifchapterprefix{}%
- \fi
- }%
- {\thechapter\autodot\enskip}%
- }}%
- \fi
- \else % (not \ifdefined\sectionformat)
- % With memoir
- \ifdefined\@memptsize
- \ifdefined\@makechapterhead
- \let\xpg@save@chap@format\@makechapterhead
- \patchcmd{\@makechapterhead}%
- {\printchaptername \chapternamenum \printchapternum}%
- {%
- \ifx\@chapapp\korean@appendix@chapapp
- \printchaptername\relax\chapternamenum \printchapternum
- \else
- \printkoreanchapterthe \printchapternum\chapternamenum \printchaptername
- \fi
- }%
- {}%
- {\xpg@warning{Failed to patch chapter for Korean}}%
- \ifdefined\printkoreanchapterthe\else
- \def\printkoreanchapterthe{%
- \ifpatchable\printchaptername\@chapapp
- {\chapnamefont\koreanTHEname\chapternamenum}{}}%
- \fi
- \fi
- \ifdefined\@part
- \let\xpg@save@part@format\@part
- \patchcmd{\@part}%
- {\printpartname \partnamenum \printpartnum}%
- {\printkoreanpartthe \printpartnum\partnamenum \printpartname}%
- {}%
- {\xpg@warning{Failed to patch part for Korean}}%
- \ifdefined\printkoreanpartthe\else
- \def\printkoreanpartthe{\partnamefont\koreanTHEname\partnamenum}%
- \fi
- \fi
- \else % (not \ifdefined\@memptsize)
- % With standard classes
- \ifdefined\@makechapterhead
- \let\xpg@save@chap@format\@makechapterhead
- \patchcmd{\@makechapterhead}%
- {\@chapapp\space \thechapter}%
- {%
- \ifx\@chapapp\korean@appendix@chapapp
- \appendixname\space \thechapter
- \else
- \koreanTHEname\space \thechapter\space \@chapapp
- \fi
- }%
- {}%
- {\xpg@warning{Failed to patch chapter for Korean}}%
- \fi
- \ifdefined\@part
- \let\xpg@save@part@format\@part
- \patchcmd{\@part}%
- {\partname\nobreakspace\thepart}%
- {\koreanTHEname\nobreakspace \thepart\nobreakspace \partname}%
- {}%
- {\xpg@warning{Failed to patch part for Korean}}%
- \fi % (end \ifdefined\@part)
- \fi % (end \ifdefined\@memptsize)
- \fi % (end \ifdefined\sectionformat)
- \fi % (end \ifdefined\titleformat)
- \fi % (end \if@korean@swapheadings)
- %
- % Change running headers
- \if@korean@swapheaders
- \ifdefined\chapterformat
- % With KOMA
- \let\xpg@save@chaptermark@format\chaptermarkformat
- \renewcommand*\chaptermarkformat{%
- \IfChapterUsesPrefixLine
- {%
- \ifx\@chapapp\korean@appendix@chapapp
- \chapappifchapterprefix\ \thechapter\autodot
- \else
- \koreanTHEname\ \thechapter\ \chapappifchapterprefix{}%
- \fi
- }%
- {\thechapter\autodot}%
- \enskip
- }%
- \else % (not \ifdefined\chapterformat)
- \ifdefined\@memptsize
- % With memoir
- \let\xpg@save@chaptermark@format\chaptermark
- \patchcmd{\chaptermark}%
- {\@chapapp\ \@nameuse{thechapter}}%
- {%
- \ifx\@chapapp\korean@appendix@chapapp
- \appendixname\ \@nameuse{thechapter}%
- \else
- \koreanTHEname\ \@nameuse{thechapter}\ \@chapapp
- \fi
- }%
- {}%
- {}%
- \else % (not \ifdefined\@memptsize)
- % With standard classes
- \ifdefined\chaptermark
- \let\xpg@save@chaptermark@format\chaptermark
- \patchcmd{\chaptermark}%
- {\@chapapp\ \thechapter}%
- {%
- \ifx\@chapapp\korean@appendix@chapapp
- \appendixname\ \thechapter
- \else
- \koreanTHEname\ \thechapter\ \@chapapp
- \fi
- }%
- {}%
- {}%
- \fi % (end \ifdefined\chaptermark)
- \fi % (end \ifdefined\@memptsize)
- \fi % (end \ifdefined\chapterformat)
- \fi % (end \if@korean@swapheaders)
-}
-
-\def\nokorean@headingsformat{%
- % Reset chapter and part heading
- \ifdefined\titleformat
- % With titlesec
- \ifdefined\xpg@save@part@format
- \let\@part\xpg@save@part@format
- \fi
- \ifdefined\chapter
- \titleformat\chapter[display]%
- {\@ifundefined{ttl@fil}{\raggedright}{\ttl@fil}\ttl@fonts\ttl@sizes6}%
- {\@chapapp\space\thechapter}{.8\baselineskip}{\ttl@sizes\z@\ttl@passexplicit}%
- \fi
- \else % (not \ifdefined\titleformat)
- \ifdefined\sectionformat
- % With KOMA
- \ifdefined\xpg@save@part@format
- \let\partformat\xpg@save@part@format
- \fi
- \ifdefined\xpg@save@chap@format
- \let\chapterformat\xpg@save@chap@format
- \fi
- \else
- % With memoir and standard classes
- \ifdefined\xpg@save@part@format
- \let\@part\xpg@save@part@format
- \fi
- \ifdefined\xpg@save@chap@format
- \let\@makechapterhead\xpg@save@chap@format
- \fi
- \fi % (end \ifdefined\sectionformat)
- \fi % (end \ifdefined\titleformat)
- %
- % Reset headers
- \ifdefined\chaptermarkformat
- % With KOMA
- \ifdefined\xpg@save@chaptermark@format
- \let\chaptermarkformat\xpg@save@chaptermark@format
- \fi
- \else
- \ifdefined\chaptermark
- % With memoir and standard classes
- \ifdefined\xpg@save@chaptermark@format
- \let\chaptermark\xpg@save@chaptermark@format
- \fi
- \fi % (end \ifdefined\chaptermark)
- \fi % (end \ifdefined\chapterformat)
-}
-
-\def\datekorean{%
- \ifcase\xpg@korean@captions\relax
- \def\today{\the\year 년 \the\month 월 \the\day 일}%
- \else
- \def\today{\the\year 年 \the\month 月 \the\day 日}%
- \fi
-}
-
-\def\koreanAlph#1{\expandafter\@koreanAlph\csname c@#1\endcsname}
-\def\@koreanAlph#1{%
- \ifcase#1\or 가\or 나\or 다\or 라\or 마\or 바\or 사\or 아\or 자\or
- 차\or 카\or 타\or 파\or 하\else\xpg@ill@value{#1}{@koreanAlph}\fi
-}
-
-\def\koreanalph#1{\expandafter\@koreanalph\csname c@#1\endcsname}
-\def\@koreanalph#1{%
- \ifcase#1\or ㄱ\or ㄴ\or ㄷ\or ㄹ\or ㅁ\or ㅂ\or ㅅ\or ㅇ\or ㅈ\or
- ㅊ\or ㅋ\or ㅌ\or ㅍ\or ㅎ\else\xpg@ill@value{#1}{@koreanalph}\fi
-}
-
-\def\korean@numbers{%
- \let\@alph\@koreanalph
- \let\@Alph\@koreanAlph
-}
-\def\nokorean@numbers{%
- \let\@alph\latin@alph
- \let\@Alph\latin@Alph
-}
-\let\nokorean@globalnumbers\nokorean@numbers
-
-\ifxetex
- \def\inlineextras@korean{%
- \ifcase\xpg@korean@variant\relax
- \XeTeXinterchartokenstate\z@
- \XeTeXlinebreakpenalty 50
- \or
- \setvariantkoreaninterchartoks
- \setvariantkoreancharclasses
- \def\XPGKOhalfdim{\dimexpr.5em\relax}%
- \XeTeXinterchartokenstate\@ne
- \XeTeXlinebreakpenalty \z@
- \else
- \setvariantkoreaninterchartoks
- \setvariantkoreancharclasses
- \def\XPGKOhalfdim{\dimexpr.5\fontdimen\tw@\font\relax}%
- \XeTeXinterchartokenstate\@ne
- \XeTeXlinebreakpenalty 50
- \fi
- \XeTeXlinebreakskip 0pt plus.05em minus .01em
- \XeTeXlinebreaklocale "ko"
- }
- \def\noextras@korean{%
- \ifcase\xpg@korean@variant\relax
- \else
- \unsetvariantkoreaninterchartoks
- \unsetvariantkoreancharclasses
- \fi
- \XeTeXinterchartokenstate\z@
- \XeTeXlinebreakpenalty\z@
- \XeTeXlinebreakskip\z@skip
- \XeTeXlinebreaklocale "en"
- \noextras@korean@common
- }
-\else % luatex
- \def\inlineextras@korean{\xpg@attr@korean\xpg@korean@variant\relax}
- \def\noextras@korean{%
- \unsetattribute\xpg@attr@korean
- \noextras@korean@common
- }
-\fi
-
-\def\blockextras@korean{%
- \inlineextras@korean
- \korean@headingsformat
-}
-
-\def\noextras@korean@common{%
- \nokorean@headingsformat
-}
-
-\ifluatex % luatex
-\protected\def\inhibitglue{\hskip\z@skip}
-\ifdefined\newattribute\else
- \let\newattribute\newluatexattribute
- \let\unsetattribute\unsetluatexattribute
-\fi
-\newattribute\xpg@attr@korean
-\newattribute\xpg@attr@autojosa
-% user commands for Josa
-% Josa : particles in Korean grammar that immediately follow a noun or pronoun.
-% Josa might vary depending on previous character.
-\protected\def\rieul{\global\let\xpg@josa@zwang\@ne}
-\protected\def\jung {\global\let\xpg@josa@zwang\tw@}
-\protected\def\jong {\global\let\xpg@josa@zwang\thr@@}
-\protected\def\은{\begingroup\xpg@attr@autojosa\xpg@josa@zwang 은\endgroup\xpg@reset@josa}
-\let\는\은
-\protected\def\을{\begingroup\xpg@attr@autojosa\xpg@josa@zwang 을\endgroup\xpg@reset@josa}
-\let\를\을
-\protected\def\와{\begingroup\xpg@attr@autojosa\xpg@josa@zwang 와\endgroup\xpg@reset@josa}
-\let\과\와
-\protected\def\가{\begingroup\xpg@attr@autojosa\xpg@josa@zwang 가\endgroup\xpg@reset@josa}
-\protected\def\이{\begingroup\xpg@attr@autojosa\xpg@josa@zwang 이\endgroup\xpg@reset@josa}
-\protected\def\라{\이 라}
-\protected\def\으{\begingroup\xpg@attr@autojosa\xpg@josa@zwang 으\endgroup\xpg@reset@josa}
-\protected\def\로{\으 로}
-\def\xpg@reset@josa {\global\let\xpg@josa@zwang\z@}\xpg@reset@josa
-% load lua file for korean
-\directlua{ require "polyglossia-korean" }
-% \end{macrocode}
-% \iffalse
-%</gloss-korean.ldf>
-%<*gloss-ku-Arab.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-ku-Arab.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-ku-Arab.ldf}[polyglossia: module for ku-Arab (kurdish)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{kurdish}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-ku-Arab.ldf>
-%<*gloss-ku-Latn.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-ku-Latn.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-ku-Latn.ldf}[polyglossia: module for ku-Latn (kurdish)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{kurdish}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-ku-Latn.ldf>
-%<*gloss-ku.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-ku.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-ku.ldf}[polyglossia: module for ku (kurdish)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{kurdish}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-ku.ldf>
-%<*gloss-kurdish.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-kurdish.ldf}
-% \begin{macrocode}
-% Created on September 1, 2019
-% Sina Ahmadi (https://sinaahmadi.github.io/)
-\ProvidesFile{gloss-kurdish.ldf}[polyglossia: module for Kurdish]
-
-\RequireBidi
-\RequirePackage{arabicnumbers}
-\RequirePackage{farsical}
-\RequirePackage{hijrical}
-
-\PolyglossiaSetup{kurdish}{
- bcp47=ckb,
- script=Arabic,
- direction=RL,
- scripttag=arab,
- langtag=KUR,
- hyphennames={nohyphenation},
- fontsetup=true,
- localnumeral=kurdishnumerals
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{kurdish}{ku}
-\setlanguagealias*[variant=kurmanji,script=Latin]{kurdish}{kmr-Latn}
-\setlanguagealias*[variant=sorani]{kurdish}{ckb}
-\setlanguagealias*[variant=kurmanji,script=Arabic]{kurdish}{kmr-Arab}
-\setlanguagealias*[script=Latin]{kurdish}{ku-Latn}
-\setlanguagealias*[variant=sorani,script=Arabic]{kurdish}{ckb-Arab}
-\setlanguagealias*[variant=sorani,script=Latin]{kurdish}{ckb-Latn}
-\setlanguagealias*[script=Arabic]{kurdish}{ku-Arab}
-\setlanguagealias*[variant=kurmanji]{kurdish}{kmr}
-
-% Babel aliases
-\setlanguagealias[variant=kurmanji]{kurdish}{kurmanji}
-
-\newif\if@kurdish@kurmanji
-\def\kurdish@variant{sorani}
-\define@choicekey*+{kurdish}{variant}[\xpg@val\xpg@nr]{sorani,kurmanji}[sorani]{%
- \ifcase\xpg@nr\relax
- % sorani:
- \def\kurdish@variant{sorani}%
- \@kurdish@kurmanjifalse%
- \or
- % kurmanji:
- \def\kurdish@variant{kurmanji}%
- \@kurdish@kurmanjitrue%
- \fi
- \kurdish@set@variety%
- \xpg@info{Option: kurdish, variant=\xpg@val}%
-}{\xpg@warning{Unknown Kurdish variant `#1'}}
-
-\newif\if@kurdish@latin
-\newif\if@kurdish@arabic
-\define@choicekey*+{kurdish}{script}[\xpg@val\xpg@nr]{Arabic,Latin}{%
- \ifcase\xpg@nr\relax
- % Arabic:
- \@kurdish@latinfalse%
- \@kurdish@arabictrue%
- \or
- % Latin:
- \@kurdish@latintrue%
- \@kurdish@arabicfalse%
- \fi
- \kurdish@set@variety%
- \xpg@info{Option: kurdish, script=\xpg@val}%
-}{\xpg@warning{Unknown Kurdish script `#1'}}
-
-
-\newif\if@western@numerals
-\newif\if@force@western@numerals
-\def\kurdish@script{arabic}
-\def\kurdish@pattern{nohyphenation}
-
-\def\kurdish@set@variety{%
- \if@kurdish@latin% Latin explicitly set
- \@western@numeralstrue%
- \if@kurdish@kurmanji
- \def\kurdish@pattern{kurmanji}%
- \SetLanguageKeys{kurdish}{script=Latin,direction=LR,scripttag=latn,babelname=kurmanji,bcp47=kmr-Latn}%
- \else
- \SetLanguageKeys{kurdish}{script=Latin,direction=LR,scripttag=latn,babelname=kurdish,bcp47=ckb-Arab}%
- \fi
- \def\kurdish@script{latin}
- \xpg@fontsetup@latin{kurdish}%
- \else
- \if@kurdish@arabic% Arabic explicitly set
- \if@kurdish@kurmanji
- \if@force@western@numerals\else\@western@numeralsfalse\fi%
- \SetLanguageKeys{kurdish}{script=Arabic,direction=RL,scripttag=arab,babelname=kurmanji,bcp47=kmr-Arab}%
- \def\kurdish@script{arabic}%
- \else
- \SetLanguageKeys{kurdish}{script=Arabic,direction=RL,scripttag=arab,babelname=kurdish,bcp47=ckb-Arab}%
- \fi
- \xpg@fontsetup@nonlatin{kurdish}%
- \else% sorani=Arabic, kurmanji=Latin
- \if@kurdish@kurmanji
- \@western@numeralstrue%
- \SetLanguageKeys{kurdish}{script=Latin,direction=LR,scripttag=latn,babelname=kurmanji,bcp47=kmr-Latn}%
- \xpg@fontsetup@latin{kurdish}%
- \def\kurdish@script{latin}
- \else
- \SetLanguageKeys{kurdish}{script=Arabic,direction=RL,scripttag=arab,babelname=kurdish,bcp47=ckb-Arab}%
- \xpg@fontsetup@nonlatin{kurdish}%
- \fi
- \fi
- \fi
-}
-
-\def\tmp@western{western}
-\define@key{kurdish}{numerals}[eastern]{%
- \def\@tmpa{#1}%
- \ifx\@tmpa\tmp@western\@western@numeralstrue\@force@western@numeralstrue\else%
- \@western@numeralsfalse%
- \fi%
-}
-
-%this is needed for \abjad in arabicnumbers.sty
-\def\tmp@true{true}
-\define@key{kurdish}{abjadjimnotail}[true]{%
- \def\@tmpa{#1}%
- \ifx\@tmpa\tmp@true\abjad@jim@notailtrue%
- \else
- \abjad@jim@notailfalse
- \fi%
-}
-
-% NOT YET USED
-\define@key{kurdish}{locale}[default]{%
- \def\@kurdish@locale{#1}}
-
-
-%TODO add option for CALENDAR
-
-% Register default options
-\xpg@initialize@gloss@options{kurdish}{variant=sorani,locale=default,script=Arabic,abjadjimnotail=false,numerals=eastern}
-
-\def\kurdish@language{%
- \polyglossia@setup@language@patterns{\kurdish@pattern}%
-}%
-
-\def\kurdishNativemonth#1{\ifcase#1%
- \or رێبه‌ندان\or ره‌شه‌مێ\or خاكه‌لێوه‌\or گوڵان\or جۆزه‌ردان\or پووشپه‌ڕ\or خه‌رمانان\or گه‌لاوێژ\or ره‌زبه‌ر\or گه‌ڵارێزان\or سه‌رماوه‌ز\or به‌فرانبار\fi}
-\def\kurdishmonth#1{\ifcase#1%
- \or کانونی دووەم\or شوبات\or ئازار\or نیسان\or ئایار\or حوزه‌یران\or ته‌ممووز\or ئاب\or ئه‌یلوول\or تشرینی یه‌كه‌م\or تشرینی دووهه‌م\or كانوونی یه‌كه‌م\fi}
-
-%\Hijritoday is now locale-aware and will format the date with this macro:
-\DefineFormatHijriDate{kurdish}{%
- \@ensure@RTL{%
- \kurdishnumber{\value{Hijriday}}\space\HijriMonthArabic{\value{Hijrimonth}}\space\kurdishnumber{\value{Hijriyear}}%
- }%
-}
-
-\def\captionskurdish@sorani@arabic{%
- \def\prefacename{\@ensure@RTL{پێشه‌كی}}%
- \def\refname{\@ensure@RTL{سه‌رچاوه‌کان}}%
- \def\abstractname{\@ensure@RTL{پوخته‌}}%
- \def\bibname{\@ensure@RTL{کتێبنامه‌}}%
- \def\chaptername{\@ensure@RTL{به‌ندی}}%
- \def\appendixname{\@ensure@RTL{پاشکۆ}}%
- \def\contentsname{\@ensure@RTL{نێوه‌ڕۆک}}%
- \def\listfigurename{\@ensure@RTL{لیستی وێنه‌کان}}%
- \def\listtablename{\@ensure@RTL{لیستی خشته‌کان}}%
- \def\indexname{\@ensure@RTL{پێنوێن}}%
- \def\figurename{\@ensure@RTL{وێنه‌}}%
- \def\tablename{\@ensure@RTL{خشتە}}%
- \def\partname{\@ensure@RTL{به‌شی}}%
- \def\enclname{\@ensure@RTL{هاوپێچ}}%
- \def\ccname{\@ensure@RTL{روونووس}}%
- \def\headtoname{\@ensure@RTL{بۆ}}%
- \def\pagename{\@ensure@RTL{لاپه‌ڕه‌}}%
- \def\seename{\@ensure@RTL{چاو لێکه‌ن}}%
- \def\alsoname{\@ensure@RTL{هه‌روه‌ها چاو لێکه‌ن}}%
- \def\proofname{\@ensure@RTL{سەلماندن}}%
- \def\glossaryname{\@ensure@RTL{فه‌رهه‌نگۆک}}%
-}
-
-\def\captionskurdish@sorani@latin{%
- \def\prefacename{Pêşekî}%
- \def\refname{Serçawekan}%
- \def\abstractname{Puxte}%
- \def\bibname{Kitêbname}%
- \def\chaptername{Bendî}%
- \def\appendixname{Paşko}%
- \def\contentsname{Nêwerrok}%
- \def\listfigurename{Lîstî Wênekan}%
- \def\listtablename{Lîstî Xiştekan}%
- \def\indexname{Pêrrist}%
- \def\figurename{Wêney}%
- \def\tablename{Xiştey}%
- \def\partname{Beşî}%
- \def\enclname{Hawpêç}%
- \def\ccname{Rûnûs}%
- \def\headtoname{Bo}%
- \def\pagename{Laperre}%
- \def\seename{Çaw lêken}%
- \def\alsoname{Herweha çaw lêken}%
- \def\proofname{Selmandin}%
- \def\glossaryname{Ferhengok}%
-}
-
-\def\captionskurdish@kurmanji@latin{%
- \def\prefacename{Peşgotin}%
- \def\refname{Pirtuken bijartî}%
- \def\abstractname{Kurtebîr}%
- \def\bibname{Çavkanîya Pirtukan}%
- \def\chaptername{Serê}%
- \def\appendixname{Tebînîya}%
- \def\contentsname{Navêrok}%
- \def\listfigurename{Hejmara Dimena}%
- \def\listtablename{Hejmara Kevalen}%
- \def\indexname{Endeks}%
- \def\figurename{Dimenê}%
- \def\tablename{Kevala}%
- \def\partname{Bêşa}%
- \def\enclname{Dumahik}%
- \def\ccname{Belavker}%
- \def\headtoname{Ji bo}%
- \def\pagename{Rûpelê}%
- \def\seename{binêra}%
- \def\alsoname{le vêya ji binêra}%
- \def\proofname{Delîl}%
- \def\glossaryname{Çavkanîya lêkolînê}%
-}
-
-\def\captionskurdish@kurmanji@arabic{%
- \def\prefacename{\@ensure@RTL{پێشگۆتن}}%
- \def\refname{\@ensure@RTL{پرتووکێن بژارتی}}%
- \def\abstractname{\@ensure@RTL{کورتەبیر}}%
- \def\bibname{\@ensure@RTL{چاڤکانییا پرتووکان}}%
- \def\chaptername{\@ensure@RTL{سەرێ}}%
- \def\appendixname{\@ensure@RTL{پاشکۆ}}%
- \def\contentsname{\@ensure@RTL{ناڤێرۆک}}%
- \def\listfigurename{\@ensure@RTL{هەژمارا دیمەنا}}%
- \def\listtablename{\@ensure@RTL{هەژمارا کەڤالێن}}%
- \def\indexname{\@ensure@RTL{پێرست}}%
- \def\figurename{\@ensure@RTL{دیمەنێ}}%
- \def\tablename{\@ensure@RTL{کەڤالا}}%
- \def\partname{\@ensure@RTL{بەشا}}%
- \def\enclname{\@ensure@RTL{دوماهک}}%
- \def\ccname{\@ensure@RTL{بەلاڤکەر}}%
- \def\headtoname{\@ensure@RTL{ژ بۆ}}%
- \def\pagename{\@ensure@RTL{رووپەلێ}}%
- \def\seename{\@ensure@RTL{بنێرا}}%
- \def\alsoname{\@ensure@RTL{لە ڤێیا ژ بنێرا}}%
- \def\proofname{\@ensure@RTL{دەلیل}}%
- \def\glossaryname{\@ensure@RTL{چاڤکانییا لێکۆلینێ}}%
-}
-
-\def\captionskurdish{%
- \csname captionskurdish@\kurdish@variant @\kurdish@script\endcsname%
-}
-
-\def\datekurdish@sorani@arabic{%
- \def\today{\@ensure@RTL{\kurdishnumber\day{ی}\space\kurdishmonth{\month}{ی}\space\kurdishnumber\year}}%
-}
-
-\def\datekurdish@sorani@latin{%
- \def\today{%
- \number\day.~\ifcase\month\or
- \januaryname\or \februaryname\or \marchname\or \aprilname\or
- \mayname\or \junename\or \julyname\or \augustname\or
- \septembername\or \octobername\or \novembername\or
- \decembername\or \@ctrerr\fi~\number\year}%
- \def\ontoday{%
- \number\day’ê~\ifcase\month\or
- \januaryname\or \februaryname\or \marchname\or \aprilname\or
- \mayname\or \junename\or \julyname\or \augustname\or
- \septembername\or \octobername\or \novembername\or
- \decembername\or \@ctrerr\fi ê~\number\year}%
- \def\januaryname{Kanûnî Yekem}%
- \def\februaryname{Şubat}%
- \def\marchname{Azar}%
- \def\aprilname{Nîsan}%
- \def\mayname{Ayar}%
- \def\junename{Huzeyran}%
- \def\julyname{Temmûz}%
- \def\augustname{Ab}%
- \def\septembername{Eylûl}%
- \def\octobername{Tişrînî Yekem}%
- \def\novembername{Tişrînî Dûhem}%
- \def\decembername{Kanûnî Dûhem}%
-}
-
-\def\datekurdish@kurmanji@latin{%
- \def\today{%
- \number\day.~\ifcase\month\or
- \januaryname\or \februaryname\or \marchname\or \aprilname\or
- \mayname\or \junename\or \julyname\or \augustname\or
- \septembername\or \octobername\or \novembername\or
- \decembername\or \@ctrerr\fi~\number\year}%
- \def\ontoday{%
- \number\day’ê~\ifcase\month\or
- \januaryname\or \februaryname\or \marchname\or \aprilname\or
- \mayname\or \junename\or \julyname\or \augustname\or
- \septembername\or \octobername\or \novembername\or
- \decembername\or \@ctrerr\fi ê~\number\year}%
- \def\januaryname{Çileya Paşîn}%
- \def\februaryname{Sibat}%
- \def\marchname{Adar}%
- \def\aprilname{Nîsan}%
- \def\mayname{Gulan}%
- \def\junename{Hezîran}%
- \def\julyname{Tîrmeh}%
- \def\augustname{Tebax}%
- \def\septembername{Îlon}%
- \def\octobername{Çiriya Pêşîn}%
- \def\novembername{Çiriya Paşîn}%
- \def\decembername{Çileya Pêşîn}%
-}
-
-\def\datekurdish@kurmanji@arabic{%
- \datekurdish@sorani@arabic% FIXME: correct?
-}
-
-% TODO: babel-kurmanji has these "alternative" month names
-% How to integrate them ("montnames=alternative" is not really good)?
-% It seems the month name question is all but straightforward:
-% https://en.wikipedia.org/wiki/Kurdish_calendar#Names
-%\def\datekurdish@kurmanji@alternate{%
-% \datekurdish@kurmanji
-% \def\januaryname{Rêbendan}%
-% \def\februaryname{Reşemih}%
-% \def\aprilname{Cotan}% % Avrêl
-% \def\junename{Pûşper}%
-% \def\augustname{Gelavêj}%
-% \def\septembername{Gelarezan}% % Rezber
-% \def\octobername{Kewçêr}%
-% \def\novembername{Sermawez}%
-% \def\decembername{Berfandar}%
-%}
-
-\def\datekurdish{%
- \csname datekurdish@\kurdish@variant @\kurdish@script\endcsname%
-}
-
-\newcommand{\kurdishnumerals}[2]{\kurdishnumber{#2}}
-
-\def\kurdishnumber#1{%
- \if@western@numerals
- \number#1%
- \else
- \xpg@if@char@available{06F0}%
- {\farsidigits{\number#1}}%
- {\arabicdigits{\number#1}}%
- \fi
-}
-
-%\def\kurdishnum#1{\expandafter\kurdishnumber\csname c@#1\endcsname}
-%\def\kurdishbracenum#1{(\expandafter\kurdishnumber\csname c@#1\endcsname)}
-%\def\kurdishornatebracenum#1{\char"FD3E\expandafter\kurdishnumber\csname c@#1\endcsname\char"FD3F}
-%\def\kurdishalph#1{\expandafter\@farsialph\csname c@#1\endcsname}
-
-\def\kurdish@numbers{%
- \if@western@numerals%
- \else%
- \let\@alph\abjad%
- \let\@Alph\abjad%
- \fi%
-}
-
-\def\nokurdish@numbers{%
- \let\@alph\@latinalph%
- \let\@Alph\@latinAlph%
-}
-
-\def\kurdish@globalnumbers{%
- \let\@arabic\kurdishnumber%
- \renewcommand\thefootnote{\localnumeral*{footnote}}%
- \renewcommand\theequation{\localnumeral*{equation}}%
-}
-
-% Store original definition
-\let\xpg@save@arabic\@arabic
-
-\def\nokurdish@globalnumbers{
- \let\@arabic\xpg@save@arabic%
- \renewcommand\thefootnote{\protect\number{\c@footnote}}%
-}
-
-% Save original \MakeUppercase definition
-\let\xpg@save@MakeUppercase\MakeUppercase
-
-\def\blockextras@kurdish{%
- \def\MakeUppercase##1{##1}%
-}
-
-\def\noextras@kurdish{%
- \let\MakeUppercase\xpg@save@MakeUppercase%
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-kurdish.ldf>
-%<*gloss-kurmanji.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-kurmanji.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-kurmanji.ldf}[polyglossia: module for kurmanji kurdish]
-
-% We provide this gloss for babel compatibility.
-
-\xpg@load@master@language{kurdish}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-kurmanji.ldf>
-%<*gloss-la-x-classic.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-la-x-classic.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-la-xclassic.ldf}[polyglossia: module for la-xclassic (latin)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{latin}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-la-x-classic.ldf>
-%<*gloss-la-x-ecclesia.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-la-x-ecclesia.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-la-xecclesiastic.ldf}[polyglossia: module for la-xecclesiastic (latin)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{latin}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-la-x-ecclesia.ldf>
-%<*gloss-la-x-medieval.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-la-x-medieval.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-la-xmedieval.ldf}[polyglossia: module for la-xmedieval (latin)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{latin}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-la-x-medieval.ldf>
-%<*gloss-la.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-la.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-la.ldf}[polyglossia: module for la (latin)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{latin}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-la.ldf>
-%<*gloss-lao.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-lao.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-lao.ldf}[polyglossia: module for Lao]
-\ifluatex
- \xpg@warning{Lao is not supported with LuaTeX.\MessageBreak
-I will proceed with the compilation, but\MessageBreak
-the output is not guaranteed to be correct\MessageBreak
-and may look very wrong.}
-\fi
-\PolyglossiaSetup{lao}{
- bcp47=lo,
- script=Lao,
- scripttag=lao,
- langtag=LAO,
- hyphennames={lao},
- hyphenmins={1,1},
- fontsetup=true,
- localnumeral=laonumerals
- %TODO localalph={xxx@alph,xxx@Alph}
- %TODO localdigits=laonumber
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{lao}{lo}
-
-\newif\if@lao@numerals
-\def\tmp@lao{lao}
-\define@key{lao}{numerals}[arabic]{%
- \def\@tmpa{#1}%
- \ifx\@tmpa\tmp@lao\@lao@numeralstrue\else
- \@lao@numeralsfalse\fi
-}
-
-% Register default options
-\xpg@initialize@gloss@options{lao}{numerals=arabic}
-
-% Translations provided by Brian Wilson <bountonw at gmail.com>
-\def\captionslao{%
- \def\prefacename{ຄໍານໍາ}%
- \def\refname{ໜັງສືອ້າງອີງ}%
- \def\abstractname{ບົດຫຍໍ້ຄວາມ}%
- \def\bibname{ເອກະສານອ້າງອີງ}%
- \def\chaptername{ບົດທີ}%
- \def\appendixname{ພາກຄັດຕິດ}%
- \def\contentsname{ສາລະບານ}%
- \def\listfigurename{ສາລະບານຮູບ}%
- \def\listtablename{ສາລະບານຕາຕະລາງ}%
- \def\indexname{ດັດຊະນີ}%
- \def\figurename{ຮູບທີ}%
- \def\tablename{ຕາຕະລາງທີ}%
- \def\partname{ພາກ}%
- \def\pagename{ໜ້າ}%
- \def\seename{ອ່ານ}%
- \def\alsoname{ອ່ານເພີ່ມ}%
- \def\enclname{ເອກະສານປະກອບ}%
- \def\ccname{ສໍາເນົາເຖິງ}%
- \def\headtoname{ຮຽນ}%
- \def\proofname{ຂໍ້ພິສູດ}%
- \def\glossaryname{ປະມວນສັບ}%
-}
-\def\datelao{%
- \def\lao@month{%
- \ifcase\month\or
- ມັງກອນ\or
- ກຸມພາ\or
- ມີນາ\or
- ເມສາ\or
- ພຶດສະພາ\or
- ມິຖຸນາ\or
- ກໍລະກົດ\or
- ສິງຫາ\or
- ກັນຍາ\or
- ຕຸລາ\or
- ພະຈິກ\or
- ທັນວາ\fi}%
- \def\today{\laonumber\day \space \lao@month \space \laonumber\year}%
-}
-
-\def\laodigits#1{\expandafter\@lao@digits #1@}
-\def\@lao@digits#1{%
- \ifx @#1% then terminate
- \else
- \ifx0#1໐\else\ifx1#1໑\else\ifx2#1໒\else\ifx3#1໓\else\ifx4#1໔\else\ifx5#1໕\else\ifx6#1໖\else\ifx7#1໗\else\ifx8#1໘\else\ifx9#1໙\else#1\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
- \expandafter\@lao@digits
- \fi
-}
-
-\newcommand{\laonumerals}[2]{\laonumber{#2}}
-
-\def\laonumber#1{%
- \if@lao@numerals
- \laodigits{\number#1}%
- \else
- \number#1%
- \fi}
-
-\def\lao@globalnumbers{%
- \let\orig@arabic\@arabic%
- \let\@arabic\laonumber%
- \renewcommand{\thefootnote}{\localnumeral*{footnote}}%
-}
-\def\nolao@globalnumbers{%
- \let\@arabic\orig@arabic%
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-lao.ldf>
-%<*gloss-latex.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-latex.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-latex.ldf}[polyglossia: module for default language]
-
-\PolyglossiaSetup{latex}{
- hyphennames={english},
- hyphenmins={2,3},
- langtag=ENG,
- fontsetup=true,
-}
-
-\def\captionslatex{%
- \def\prefacename{Preface}%
- \def\refname{References}%
- \def\abstractname{Abstract}%
- \def\bibname{Bibliography}%
- \def\chaptername{Chapter}%
- \def\appendixname{Appendix}%
- \def\contentsname{Contents}%
- \def\listfigurename{List of Figures}%
- \def\listtablename{List of Tables}%
- \def\indexname{Index}%
- \def\figurename{Figure}%
- \def\tablename{Table}%
- \def\partname{Part}%
- \def\enclname{encl}%
- \def\ccname{cc}%
- \def\headtoname{To}%
- \def\pagename{Page}%
- \def\seename{see}%
- \def\alsoname{see also}%
- \def\proofname{Proof}%
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-latex.ldf>
-%<*gloss-latin.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-latin.ldf}
-% \begin{macrocode}
-\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'.
-% \end{macrocode}
-% \iffalse
-%</gloss-latin.ldf>
-%<*gloss-latinclassic.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-latinclassic.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-latinclassic.ldf}[polyglossia: module for classic latin]
-
-% We provide this as a babel alias
-
-\xpg@load@master@language{latin}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-latinclassic.ldf>
-%<*gloss-latinecclesiastic.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-latinecclesiastic.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-latinecclesiastic.ldf}[polyglossia: module for ecclesiastic latin]
-
-% We provide this as a babel alias
-
-\xpg@load@master@language{latin}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-latinecclesiastic.ldf>
-%<*gloss-latinmedieval.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-latinmedieval.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-latinmedieval.ldf}[polyglossia: module for medieval latin]
-
-% We provide this as a babel alias
-
-\xpg@load@master@language{latin}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-latinmedieval.ldf>
-%<*gloss-latvian.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-latvian.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-latvian.ldf}[polyglossia: module for latvian]
-\PolyglossiaSetup{latvian}{
- bcp47=lv,
- hyphennames={latvian},
- hyphenmins={2,2},
- langtag=LVI,
- fontsetup=true,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{latvian}{lv}
-
-\def\captionslatvian{%
- \def\prefacename{Priekšvārds}%
- \def\refname{Literatūras saraksts}%
- \def\abstractname{Anotācija}%
- \def\bibname{Literatūra}%
- \def\chaptername{Nodaļa}%
- \def\appendixname{Pielikums}%
- \def\contentsname{Saturs}%
- \def\listfigurename{Attēlu saraksts}%
- \def\listtablename{Tabulu saraksts}%
- \def\indexname{Index}%
- \def\figurename{Att.}%
- \def\tablename{Tabula}%
- \def\partname{Daļa}%
- \def\enclname{encl}%
- \def\ccname{cc}%
- \def\headtoname{To}%
- \def\pagename{lpp.}%
- \def\seename{sk.}%
- \def\alsoname{sk. arī}%
- \def\proofname{Pierādījums}%
- }
-\def\datelatvian{%
- \def\today{%
- \number\year.\thinspace gada%
- \space\number\day.\thinspace%
- \ifcase\month\or%
- janvārī\or februārī\or martā\or%
- aprīlī\or maijā\or jūnijā\or%
- jūlijā\or augustā\or septembrī\or%
- oktobrī\or novembrī\or decembrī\fi}}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-latvian.ldf>
-%<*gloss-lithuanian.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-lithuanian.ldf}
-% \begin{macrocode}
-% Translated by Paulius Sladkevičius <komsas@gmail.com>
-
-\ProvidesFile{gloss-lithuanian.ldf}[polyglossia: module for lithuanian]
-\PolyglossiaSetup{lithuanian}{
- bcp47=lt,
- hyphennames={lithuanian},
- hyphenmins={2,2},
- langtag=LTH,
- indentfirst=true, % TODO Dokumentų rengimo taisyklių, patvirtintų Lietuvos vyriausiojo archyvaro 2011 m. liepos 4 d. įsakymu Nr. V-117, 29.1 punktą
- fontsetup=true
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{lithuanian}{lt}
-
-\def\captionslithuanian{%
- \def\prefacename{Pratarmė}%
- \def\refname{Literatūra}%
- \def\abstractname{Santrauka}%
- \def\bibname{Literatūra}%
- \def\chaptername{Skyrius}% TODO letter case
- \def\appendixname{Priedas}%
- \def\contentsname{Turinys}%
- \def\listfigurename{Iliustracijų sąrašas}%
- \def\listtablename{Lentelių sąrašas}%
- \def\indexname{Rodyklė}%
- \def\figurename{pav.}%
- \def\tablename{lentelė}% TODO any special reason for \protect in babel?
- \def\partname{Dalis}%
- \def\enclname{Įdėta}%
- \def\ccname{Kopijos}%
- \def\headtoname{Kam}% TODO empty in babel?
- \def\pagename{puslapis}%
- \def\seename{žiūrėk}%
- \def\alsoname{taip pat}% TODO some other variants are considered in babel?
- \def\proofname{Įrodymas}%
- \def\glossaryname{Terminų žodynas}% TODO some other variants are considered in babel?
-}
-
-\def\datelithuanian{%
- \def\lithuanianmonth{\ifcase\month\or
- sausio\or
- vasario\or
- kovo\or
- balandžio\or
- gegužės\or
- birželio\or
- liepos\or
- rugpjūčio\or
- rugsėjo\or
- spalio\or
- lapkričio\or
- gruodžio\fi}%
- \def\today{\number\year~m.~\lithuanianmonth~\number\day~d.}%
-}
-
-\def\blockextras@lithuanian{%
- \let\fnum@figure@orig\fnum@figure
- \def\fnum@figure{\thefigure\nobreakspace\figurename}%
- \let\fnum@table@orig\fnum@table
- \def\fnum@table{\thetable\nobreakspace\tablename}%
-}
-
-\def\noextras@lithuanian{%
- \let\fnum@figure\fnum@figure@orig
- \let\fnum@table\fnum@table@orig
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-lithuanian.ldf>
-%<*gloss-lo.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-lo.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-lo.ldf}[polyglossia: module for lo (lao)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{lao}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-lo.ldf>
-%<*gloss-lowersorbian.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-lowersorbian.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-lowersorbian.ldf}[polyglossia: module for lower sorbian]
-
-% We provide this as a babel alias
-
-\xpg@load@master@language{sorbian}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-lowersorbian.ldf>
-%<*gloss-lsorbian.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-lsorbian.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-lsorbian.ldf}[polyglossia: module for lower sorbian]
-
-% We only provide this gloss for babel compatibility. Since lsorbian is
-% a sorbian variety, we use 'sorbian' with variant 'lower' now.
-
-\xpg@load@master@language{sorbian}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-lsorbian.ldf>
-%<*gloss-lt.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-lt.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-lt.ldf}[polyglossia: module for lt (lithuanian)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{lithuanian}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-lt.ldf>
-%<*gloss-lv.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-lv.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-lv.ldf}[polyglossia: module for lv (latvian)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{latvian}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-lv.ldf>
-%<*gloss-macedonian.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-macedonian.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-macedonian.ldf}[polyglossia: module for macedonian]
-\PolyglossiaSetup{macedonian}{
- bcp47=mk,
- script=Cyrillic,
- scripttag=cyrl,
- langtag=MKD,
- hyphennames={macedonian},
- hyphenmins={2,2},
- frenchspacing=true,
- fontsetup
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{macedonian}{mk}
-
-\def\macedonian@Alph#1{%
- \ifcase#1\or
- А\or Б\or В\or Г\or Д\or Ѓ\or Е\or
- Ж\or З\or Ѕ\or И\or Ј\or К\or Л\or
- Љ\or М\or Н\or Њ\or О\or П\or Р\or
- С\or Т\or Ќ\or У\or Ф\or Х\or Ц\or
- Ч\or Џ\or Ш\else
- \xpg@ill@value{#1}{macedonian@Alph}\fi}%
-
-\def\macedonian@alph#1{%
- \ifcase#1\or
- а\or б\or в\or г\or д\or ѓ\or е\or
- ж\or з\or ѕ\or и\or ј\or к\or л\or
- љ\or м\or н\or њ\or о\or п\or р\or
- с\or т\or ќ\or у\or ф\or х\or ц\or
- ч\or џ\or ш\else
- \xpg@ill@value{#1}{macedonian@alph}\fi}%
-
-\def\macedonian@numbers{%
- \let\@Alph\macedonian@Alph%
- \let\@alph\macedonian@alph%
- }
-
-\def\nomacedonian@numbers{%
- \let\@Alph\latin@Alph%
- \let\@alph\latin@alph%
-}
-
-\def\captionsmacedonian{%
- \def\refname{Литература}%
- \def\abstractname{Апстракт}%
- \def\bibname{Библиографија}%
- \def\prefacename{Предговор}%
- \def\chaptername{Глава}%
- \def\appendixname{Прилог}%
- \def\contentsname{Содржина}%
- \def\listfigurename{Листа на слики}%
- \def\listtablename{Листа на табели}%
- \def\indexname{Индекс}%
- \def\figurename{Слика}%
- \def\tablename{Табела}%
- %\def\thepart{}%
- \def\partname{Поглавје}%
- \def\pagename{стр.}%
- \def\seename{види}%
- \def\alsoname{види исто така}%
- \def\enclname{Прилог}%
- %\def\ccname{cc}%
- %\def\headtoname{}%
- \def\proofname{Доказ}%
- \def\glossaryname{Терминолошки речник}%
- }
-\def\datemacedonian{%
- \def\today{\number\day~\ifcase\month\or
- јануари\or
- февруари\or
- март\or
- април\or
- мај\or
- јуни\or
- јули\or
- август\or
- септември\or
- октомври\or
- ноември\or
- декември\fi%
- \ \number\year~г.}%
- \def\month@Roman{\expandafter\@Roman\month}%
- \def\todayRoman{\number\day.\,\month@Roman.\,\number\year~г.}%
- }
-
-% \end{macrocode}
-% \iffalse
-%</gloss-macedonian.ldf>
-%<*gloss-magyar.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-magyar.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-magyar.ldf}[polyglossia: module for magyar]
-
-% We only provide this gloss for babel compatibility.
-
-\xpg@load@master@language{hungarian}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-magyar.ldf>
-%<*gloss-malay.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-malay.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-malay.ldf}[polyglossia: module for malay]
-
-\RequirePackage{hijrical}
-
-\PolyglossiaSetup{malay}{%
- bcp47=id,
- language=Malay,
- langtag=MLY,
- hyphennames={malay,melayu,bahasam,bahasai,indonesian,indon,bahasa},
- hyphenmins={2,2},
- fontsetup=true
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*[variant=malaysian]{malay}{zsm}
-\setlanguagealias*[variant=indonesian]{malay}{id}
-
-% Babel aliases
-\setlanguagealias[variant=indonesian]{malay}{bahasai}
-\setlanguagealias[variant=malaysian]{malay}{bahasa}
-
-% Backwards compat. alias
-\setlanguagealias[variant=malaysian]{malay}{bahasam}
-
-\providebool{malay@melayu}
-\malay@melayufalse
-\def\malay@variant{malay}
-\define@choicekey*+{malay}{variant}[\xpg@val\xpg@nr]{indonesian,malaysian}[malaysian]{%
- \ifcase\xpg@nr\relax
- % indonesian:
- \def\malay@variant{indonesian}%
- \malay@melayufalse
- \or
- % malaysian:
- \def\malay@variant{malay}%
- \malay@melayutrue
- \fi
- \ifmalay@melayu
- \SetLanguageKeys{malay}{language=Malay,langtag=MLY,babelname=bahasam,bcp47=zsm}%
- \xpg@fontsetup@latin{malay}%
- % Check if \l@malay is defined. If not, try to set it to some variety
- % (specific order as in the csv list below), or null language if everything fails
- \xpg@ifdefined{malay}{}{%
- \def\do##1{%
- \xpg@ifdefined{##1}%
- {\csletcs{l@malay}{l@##1}\listbreak}%
- {}%
- }%
- \docsvlist{melayu,bahasam,bahasai,indonesian,indon,bahasa}
- \xpg@ifdefined{malay}{}{%
- \xpg@warning{No hyphenation patterns for Malay (Malaysian) found\MessageBreak
- I will use the 'null' language instead}%
- \adddialect\l@malay0%
- }%
- }%
- \else
- \SetLanguageKeys{malay}{language=Indonesian,langtag=IND,babelname=bahasa,bcp47=id}%
- \xpg@fontsetup@latin{malay}%
- % Check if \l@indonesian is defined. If not, try to set it to some variety
- % (specific order as in the csv list below), or null language if everything fails
- \xpg@ifdefined{indonesian}{}{%
- \def\do##1{%
- \xpg@ifdefined{##1}%
- {\csletcs{l@indonesian}{l@##1}\listbreak}%
- {}%
- }%
- \docsvlist{indon,bahasai,bahasam,malay,melayu,bahasa}
- \xpg@ifdefined{indonesian}{}{%
- \xpg@warning{No hyphenation patterns for Malay (Indonesian) found\MessageBreak
- I will use the 'null' language instead}%
- \adddialect\l@indonesian0
- }%
- }%
- \fi
- \xpg@info{Option: malay, variant=\xpg@val}%
-}{\xpg@warning{Unknown malay variant `#1'}}
-
-% Register default options
-\xpg@initialize@gloss@options{malay}{variant=malaysian}
-
-
-\def\malay@language{%
- \polyglossia@setup@language@patterns{\malay@variant}%
-}%
-
-
-\def\captionsmalay@indonesian{%
- \def\refname{Pustaka}%
- \def\abstractname{Ringkasan}%
- \def\bibname{Bibliografi}%
- \def\prefacename{Pendahuluan}%
- \def\chaptername{Bab}%
- \def\appendixname{Lampiran}%
- \def\contentsname{Daftar Isi}%
- \def\listfigurename{Daftar Gambar}%
- \def\listtablename{Daftar Tabel}%
- \def\indexname{Indeks}%
- \def\figurename{Gambar}%
- \def\tablename{Tabel}%
- %\def\thepart{}%
- \def\partname{Bagian}%
- \def\pagename{Halaman}%
- \def\seename{lihat}%
- \def\alsoname{lihat juga}%
- \def\enclname{Lampiran}%
- \def\ccname{cc}%
- \def\headtoname{Kepada}%
- \def\proofname{Bukti}%
- \def\glossaryname{Daftar Istilah}%
-}
-
-\def\captionsmalay@malay{%
- \def\refname{Rujukan}%
- \def\abstractname{Abstrak}%
- \def\bibname{Bibliografi}%
- \def\prefacename{Pendahuluan}%
- \def\chaptername{Bab}%
- \def\appendixname{Lampiran}%
- \def\contentsname{Kandungan}%
- \def\listfigurename{Senarai Rajah}%
- \def\listtablename{Senarai Jadual}%
- \def\indexname{Indeks}%
- \def\figurename{Rajah}%
- \def\tablename{Jadual}%
- \def\thepart{}%
- \def\partname{Bahagian}%
- \def\pagename{Halaman}%
- \def\seename{lihat}%
- \def\alsoname{lihat juga}%
- \def\enclname{Lampiran}%
- \def\ccname{salinan kpd}%
- \def\headtoname{Kepada}%
- \def\proofname{Bukti}%
- \def\glossaryname{Senarai Istilah}%
-}
-
-\def\captionsmalay{%
- \csname captionsmalay@\malay@variant\endcsname%
-}
-
-\def\datemalay@indonesian{%
- \def\today{\number\day~\ifcase\month\or
- Januari\or Pebruari\or Maret\or April\or Mei\or Juni\or
- Juli\or Agustus\or September\or Oktober\or Nopember\or Desember\fi
- \space \number\year}}
-
-\def\datemalay@malay{%
- \def\bahasam@day{%
- \ifcase\day\or%
- 1hb\or 2hb\or 3hb\or 4hb\or 5hb\or%
- 6hb\or 7hb\or 8hb\or 9hb\or 10hb\or%
- 11hb\or 12hb\or 13hb\or 14hb\or 15hb\or%
- 16hb\or 17hb\or 18hb\or 19hb\or 20hb\or%
- 21hb\or 22hb\or 23hb\or 24hb\or 25hb\or%
- 26hb\or 27hb\or 28hb\or 29hb\or 30hb\or%
- 31hb\fi}%
- \def\today{\bahasam@day~\ifcase\month\or
- Januari\or Februari\or Mac\or April\or Mei\or Jun\or
- Julai\or Ogos\or September\or Oktober\or November\or Disember\fi
- \space \number\year}}
-
-\def\datemalay{%
- \csname datemalay@\malay@variant\endcsname%
-}
-
-% Hijri calendar localizations
-\def\hijrimonthmalay@indonesian#1{%
- \ifcase#1%
- \or Muharram\or Safar\or Rabiul awal\or Rabiul akhir\or Jumadil awal\or Jumadil akhir\or Rajab%
- \or Sya'ban\or Ramadhan\or Syawal\or Dzulkaidah\or Dzulhijjah\fi%
-}
-
-\def\hijrimonthmalay@malay#1{%
- \ifcase#1%
- \or Muharram\or Safar\or Rabiulawal\or Rabiulakhir\or Jamadilawal\or Jamadilakhir\or Rejab%
- \or Syaaban\or Ramadan\or Syawal\or Zulkaedah\or Zulhijah\fi%
-}
-
-\def\hijrimonthmalay{%
- \csname hijrimonthmalay@\malay@variant\endcsname%
-}
-
-%\Hijritoday is now locale-aware and will format the date with this macro:
-\DefineFormatHijriDate{malay}{%
- \number\value{Hijriday}\space\hijrimonthmalay{\value{Hijrimonth}}\space\number\value{Hijriyear}}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-malay.ldf>
-%<*gloss-malayalam.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-malayalam.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-malayalam.ldf}[polyglossia: module for malayalam]
-\ifluatex
- \xpg@warning{Malayalam is not supported with LuaTeX.\MessageBreak
-I will proceed with the compilation, but\MessageBreak
-the output is not guaranteed to be correct\MessageBreak
-and may look very wrong.}
-\fi
-% Translations provided by Kevin & Siji, 01-11-2009
-
-\PolyglossiaSetup{malayalam}{
- bcp47=ml,
- script=Malayalam,
- scripttag=mlym,
- langtag=MAL, %FIXME there is also MLR for "Malayalam Reformed"
- hyphennames={malayalam},
- hyphenmins={2,2}, %FIXME
- fontsetup=true,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{malayalam}{ml}
-
-\def\captionsmalayalam{%
- \def\abstractname{സാരാംശം}%
- \def\appendixname{ശിഷ്ടം}%
- \def\bibname{}% (?)
- \def\ccname{}%
- \def\chaptername{അദ്ധ്യായം}%
- \def\contentsname{ഉള്ളടക്കം}%
- \def\enclname{}%
- \def\figurename{ചിത്രം}% रेखाचित्र
- \def\headpagename{}%
- \def\headtoname{}%
- \def\indexname{സൂചിക}%
- \def\listfigurename{ചിത്രസൂചിക}%
- \def\listtablename{പട്ടികകളുടെ സൂചിക}%
- \def\pagename{}%
- \def\partname{ഭാഗം}%
- \def\prefacename{}%
- \def\refname{}%
- \def\tablename{പട്ടിക}%
- \def\seename{കാണുക}%
- \def\alsoname{ഇതും കാണുക}%
- \def\alsoseename{ഇതും കാണുക}%
-}
-\def\datemalayalam{%
- \def\today{\number\year\space\ifcase\month\or
- ജനുവരി\or
- ഫിബ്രുവരി\or
- മാർച്ച്\or
- ഏപ്രിൽ\or
- മെയ്\or
- ജൂൺ\or
- ജൂലായ്\or
- ആഗസ്ത്\or
- സെപ്തംബർ\or
- ഒക്ടോബർ\or
- നവംബർ\or
- ഡിസംബർ\fi
- \space\number\day}%
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-malayalam.ldf>
-%<*gloss-marathi.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-marathi.ldf}
-% \begin{macrocode}
-% Translations provided by Abhijit Navale <abhi_navale@live.in>
-% Ordinals (1-100) added by Niranjan Tambe <niranjanvikastambe@gmail.com> on 14th December, 2019
-% TODO implement Hindu calendar (not used in day-to-day practice)
-
-\ProvidesFile{gloss-marathi.ldf}[polyglossia: module for marathi]
-\ifluatex
- \xpg@warning{Marathi is not supported with LuaTeX.\MessageBreak
-I will proceed with the compilation, but\MessageBreak
-the output is not guaranteed to be correct\MessageBreak
-and may look very wrong.}
-\fi
-\RequirePackage{devanagaridigits}
-
-\PolyglossiaSetup{marathi}{
- bcp47=mr,
- script=Devanagari,
- scripttag=deva,
- langtag=MAR,
- hyphennames={marathi},
- hyphenmins={2,2},%CHECK
- fontsetup=true,
- localnumeral=marathinumerals
- %TODO nouppercase=true,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{marathi}{mr}
-
-\newif\ifmarathi@devanagari@numerals
-\marathi@devanagari@numeralstrue
-
-\define@choicekey*+{marathi}{numerals}[\xpg@val\xpg@nr]{Western,Devanagari}[Devanagari]{%
- \ifcase\xpg@nr\relax
- % Western:
- \marathi@devanagari@numeralsfalse%
- \or
- % Devanagari:
- \marathi@devanagari@numeralstrue%
- \fi
- \xpg@info{Option: Marathi, numerals=\xpg@val}%
-}{\xpg@warning{Unknown Marathi numerals value `#1'}}
-
-% Register default options
-\xpg@initialize@gloss@options{marathi}{numerals=Devanagari}
-
-\newcommand{\marathinumerals}[2]{\marathinumber{#2}}
-
-\def\marathinumber#1{%
- \ifmarathi@devanagari@numerals
- \devanagaridigits{\number#1}%
- \else
- \number#1%
- \fi%
-}
-
-\def\captionsmarathi{%
- \def\refname{संदर्भ}%
- \def\abstractname{सारांश}%
- \def\bibname{संदर्भसूची}%
- \def\prefacename{प्रस्तावना}%
- \def\chaptername{प्रकरण}%
- \def\appendixname{परिशिष्ट}%
- \def\contentsname{अनुक्रमणिका}%
- \def\listfigurename{आकृत्यांची सूची}%
- \def\listtablename{कोष्टक सूची}%
- \def\indexname{सूची}%
- \def\figurename{आकृती}%
- \def\tablename{कोष्टक}%
- \def\partname{खंड}%
- \def\pagename{पृष्ठ}%
- \def\seename{पाहा}%
- \def\alsoname{हेदेखील पाहा}%
- \def\enclname{समाविष्ट}%
- \def\ccname{सी.सी.}%
- \def\headtoname{प्रति}%
- \def\proofname{सिद्धता}%
- \def\glossaryname{संक्षेपसूची}%
- \def\authorsand{आणि}%
-}
-
-\def\datemarathi{%
- \def\marathimonth{%
- \ifcase\month\or
- जानेवारी\or
- फेब्रुवारी\or
- मार्च\or
- एप्रिल\or
- मे\or
- जून\or
- जुलै\or
- ऑगस्ट\or
- सप्टेंबर\or
- ऑक्टोबर\or
- नोव्हेंबर\or
- डिसेंबर%
- \fi%
- }%
- \def\today{%
- \marathinumber\day\space\marathimonth\space\marathinumber\year%
- }%
-}
-
-\def\devanagari@akshar#1{\ifcase#1\or अ\or आ\or इ\or ई\or उ\or ऊ\or ए\or ऐ\or ओ\or औ\or अं\or अः\else\@ctrerr\fi}
-
-\def\devanagari@alph#1{%
- \ifcase#1\or क\or ख\or ग\or घ\or ङ\or च\or छ\or ज\or झ\or ञ\or ट\or ठ\or ड\or ढ\or ण\or त\or थ\or द%
- \or ध\or न\or प\or फ\or ब\or भ\or म\or य\or र\or ल\or व\or श\or ष\or स\or ह\or ळ\else\@ctrerr%
- \fi%
-}
-
-\def\devanagari@letter#1{%
- \ifcase#1\or एक\or दोन\or तीन\or चार\or पाच\or सहा\or सात\or आठ\or नऊ\or दहा\or अकरा\or बारा\or तेरा\or चौदा%
- \or पंधरा\or सोळा\or सतरा\or अठरा\or एकोणीस\or वीसएकवीस\or बावीस\or तेवीस\or चोवीस\or पंचवीस\or सव्वीस\or सत्तावीस\or अठाव्वीस%
- \or एकोणतीस\or तीस\or एकतीस\or बत्तीस\or तेहेत्तीस \or चौतीस \or पस्तीस \or छत्तीस \or सतदिस \or अडतीस \or एकोणचाळीस \or चाळीस %
- \or एक्केचाळीस \or बेचाळीस \or त्रेचाळीस \or चौवेचाळीस\or पंचेचाळीस \or सेहेचाळीस \or सत्तेचाळीस \or अठ्ठेचाळीस \or एकोणपन्नास \or पन्नास %
- \or एक्कावन्न \or बावन्न \or त्रेपन्न \or चोपन्न \or पंचावन्न \or छपन्न\or सत्तावन्न \or अठ्ठावन्न \or एकोणसाठ \or साठ \or एकसष्ठ \or बासष्ठ \or त्रेसष्ट %
- \or चौसष्ठ \or पासष्ठ \or सहासष्ठ \or सदुष्ठ \or अडुसष्ठ \or एकोणसत्तर\or सत्तर \or एकाहत्तर \or बहात्तर \or त्र्याहत्तर \or चौऱ्याहत्तर \or पंच्याहत्तर %
- \or शहात्तर \or सत्याहत्तर \or अठ्याहत्तर \or एकोणऐशी \or ऐंशी\or एक्याऐंशी \or ब्याऐंशी \or त्र्याऐंशी \or चौऱ्याऐंशी \or पंच्याऐंशी \or शह्यांशी \or सत्यांऐंशी %
- \or अठ्ठ्याऐंशी \or एकोणनव्वद \or नव्वद \or एक्याण्णव\or ब्याण्णव \or त्र्याण्णव \or चौऱ्याण्णव \or पंच्याण्णव \or शहाण्णव \or सत्याण्णव \or अठ्याण्णव %
- \or नव्याण्णव \or शंभर\else\@ctrerr%
- \fi%
-}
-
-\let\xpg@save@roman\@roman
-\let\xpg@save@Roman\@Roman
-
-\def\marathi@numbers{%
- \let\@alph\devanagari@akshar
- \let\@Alph\devanagari@letter
- \let\@roman\devanagari@alph
- \let\@Roman\devanagari@letter
-}
-
-\def\nomarathi@numbers{%
- \let\@alph\latin@alph%
- \let\@Alph\latin@Alph%
- \let\@roman\xpg@save@roman
- \let\@Roman\xpg@save@Roman
-}
-
-\def\blockextras@marathi{%
- \let\xpg@orig@baselinestretch\baselinestrech%
- \renewcommand{\baselinestretch}{1.2}%
- \renewcommand{\labelitemii}{$\rightarrow$}%
-}
-
-\let\xpg@orig@labelitemii\labelitemii
-
-\def\noextras@marathi{%
- \let\baselinestrech\xpg@orig@baselinestretch%
- \let\labelitemii\xpg@orig@labelitemii%
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-marathi.ldf>
-%<*gloss-mk.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-mk.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-mk.ldf}[polyglossia: module for mk (macedonian)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{macedonian}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-mk.ldf>
-%<*gloss-ml.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-ml.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-ml.ldf}[polyglossia: module for ml (malayalam)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{malayalam}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-ml.ldf>
-%<*gloss-mn.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-mn.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-mn.ldf}[polyglossia: module for mn (mongolian)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{mongolian}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-mn.ldf>
-%<*gloss-mongolian.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-mongolian.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-mongolian.ldf}[polyglossia: module for mongolian]
-
-\RequirePackage{xpg-cyrillicnumbers}
-
-\PolyglossiaSetup{mongolian}{
- bcp47=mn,
- script=Cyrillic,
- scripttag=cyrl,
- langtag=MNG,
- hyphennames={mongolian},
- hyphenmins={2,2},
- frenchspacing=true,
- fontsetup,
- localnumeral=mongoliannumerals,
- Localnumeral=Mongoliannumerals
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{mongolian}{mn}
-
-% This file is derived from mongolian-babel. which
-% provides support for Mongolian (Khalkha variety)
-% with Cyrillic script
-% TODO: Implement script=mongolian and maybe other
-% variants of Mongolian
-
-\newif\ifcyrillic@numerals
-\newif\ifcyrillic@asbuk@numerals
-\define@choicekey*+{mongolian}{numerals}[\xpg@val\xpg@nr]{arabic,cyrillic,cyrillic-trad,cyrillic-alph}[arabic]{%
- \ifcase\xpg@nr\relax
- % arabic:
- \cyrillic@numeralsfalse%
- \cyrillic@asbuk@numeralsfalse%
- \or
- % cyrillic:
- \cyrillic@numeralstrue%
- \cyrillic@asbuk@numeralsfalse%
- \or
- % cyrillic-trad:
- \cyrillic@numeralstrue%
- \cyrillic@asbuk@numeralsfalse%
- \or
- % cyrillic-alph:
- \cyrillic@numeralstrue%
- \cyrillic@asbuk@numeralstrue%
- \fi
- \xpg@info{Option: Mongolian, numerals=\xpg@val}%
-}{\xpg@warning{Unknown Mongolian numerals value `#1'}}
-
-\define@boolkey{mongolian}[mongolian@]{babelshorthands}[true]{}
-
-% Register default options
-\xpg@initialize@gloss@options{mongolian}{babelshorthands=false,numerals=arabic}
-
-\ifsystem@babelshorthands
- \setkeys{mongolian}{babelshorthands=true}
-\else
- \setkeys{mongolian}{babelshorthands=false}
-\fi
-
-\ifcsundef{initiate@active@char}{%
- \input{babelsh.def}%
- \initiate@active@char{"}%
- \shorthandoff{"}%
-}{}
-
-\def\mongolian@shorthands{%
- \bbl@activate{"}%
- \def\language@group{mongolian}%
- \declare@shorthand{mongolian}{"`}{„}%
- \declare@shorthand{mongolian}{"'}{“}%
- \declare@shorthand{mongolian}{"<}{«}%
- \declare@shorthand{mongolian}{">}{»}%
- \declare@shorthand{mongolian}{""}{\hskip\z@skip}%
- \declare@shorthand{mongolian}{"~}{\textormath{\leavevmode\hbox{-}}{-}}%
- \declare@shorthand{mongolian}{"=}{\nobreak-\hskip\z@skip}%
- \declare@shorthand{mongolian}{"|}{\textormath{\nobreak\discretionary{-}{}{\kern.03em}\allowhyphens}{}}%
- \declare@shorthand{mongolian}{"-}{%
- \def\mongolian@sh@tmp{%
- \if\mongolian@sh@next-\expandafter\mongolian@sh@emdash%
- \else\expandafter\mongolian@sh@hyphen\fi%
- }%
- \futurelet\mongolian@sh@next\mongolian@sh@tmp%
- }%
- \def\mongolian@sh@hyphen{%
- \nobreak\-\bbl@allowhyphens}%
- \def\mongolian@sh@emdash##1##2{\cdash-##1##2}%
- \def\cdash##1##2##3{\def\tempx@{##3}%
- \def\tempa@{-}\def\tempb@{~}\def\tempc@{*}%
- \ifx\tempx@\tempa@\@Acdash\else
- \ifx\tempx@\tempb@\@Bcdash\else
- \ifx\tempx@\tempc@\@Ccdash\else
- \errmessage{Wrong usage of cdash}\fi\fi\fi}%
- \def\@Acdash{\ifdim\lastskip>\z@\unskip\nobreak\hskip.2em\fi
- \cyrdash\hskip.2em\ignorespaces}%
- \def\@Bcdash{\leavevmode\ifdim\lastskip>\z@\unskip\fi
- \nobreak\cyrdash\penalty\exhyphenpenalty\hskip\z@skip\ignorespaces}%
- \def\@Ccdash{\leavevmode
- \nobreak\cyrdash\nobreak\hskip.35em\ignorespaces}%
- \ifx\cyrdash\undefined
- \def\cyrdash{\hbox to.8em{--\hss--}}%
- \fi
- \declare@shorthand{mongolian}{",}{\nobreak\hskip.2em\ignorespaces}%
-}
-
-\def\nomongolian@shorthands{%
- \@ifundefined{initiate@active@char}{}{\bbl@deactivate{"}}%
-}
-
-% Taken from babel-mongolian
-\def\captionsmongolian{%
- \def\prefacename{Өмнөх үг}%
- \def\refname{Ашигласан ном}%
- \def\abstractname{Удиртгал}%
- \def\bibname{Номзүй}%
- \def\chaptername{Бүлэг}%
- \def\appendixname{Хавсралт}%
- \ifcsundef{thechapter}%
- {\def\contentsname{Агуулга}}%
- {\def\contentsname{Гарчиг}}%
- \def\listfigurename{Зургийн жагсаалт}%
- \def\listtablename{Хүснэгтийн жагсаалт}%
- \def\indexname{Товъёг}%
- \def\authorname{Нэрийн хэлхээ}%
- \def\figurename{Зураг}%
- \def\tablename{Хүснэгт}%
- \def\partname{Хэсэг}%
- \def\enclname{Ишлэл}%
- \def\ccname{э.с.}%
- \def\headtoname{}%
- \def\pagename{тал}%
- \def\seename{талд үз}%
- \def\alsoname{мөн талд үз}%
- \def\proofname{Баталгаа}%
-}
-
-\def\datemongolian{%
- \def\today{\number\year~оны \ifcase\month\or
- 1-р\or 2-р\or 3-р\or 4-р\or 5-р\or 6-р\or
- 7-р\or 8-р\or 9-р\or 10-р\or 11-р\or 12-р\fi
- ~сарын \number\day}}
-
-\newcommand{\mongoliannumerals}[2]{\mongoliannumber{#2}}
-\newcommand{\Mongoliannumerals}[2]{\Mongoliannumber{#2}}
-
-\def\mongoliannumber#1{%
- \ifcyrillic@numerals
- \ifcyrillic@asbuk@numerals
- \mongolian@asbuk@alph{#1}%
- \else
- \cyr@alph{#1}%
- \fi
- \else
- \number#1%
- \fi%
-}
-
-\def\Mongoliannumber#1{%
- \ifcyrillic@numerals
- \ifcyrillic@asbuk@numerals
- \mongolian@asbuk@Alph{#1}%
- \else
- \cyr@Alph{#1}%
- \fi
- \else
- \number#1%
- \fi%
-}
-
-\let\mongoliannumeral=\mongoliannumber
-\let\Mongoliannumeral=\Mongoliannumber
-
-\def\Asbuk#1{\expandafter\mongolian@asbuk@Alph\csname c@#1\endcsname}
-\def\asbuk#1{\expandafter\mongolian@asbuk@alph\csname c@#1\endcsname}
-
-\def\AsbukTrad#1{\expandafter\cyr@Alph\csname c@#1\endcsname}
-\def\asbukTrad#1{\expandafter\cyr@alph\csname c@#1\endcsname}
-
-% This is a poor man's cyrillic alphanumeric. It just uses the alphabet and
-% thus ends at 30.
-\def\mongolian@asbuk@Alph#1{\ifcase#1\or
- А\or Б\or В\or Г\or Д\or Е\or Ж\or
- З\or И\or К\or Л\or М\or Н\or О\or
- П\or Р\or С\or Т\or У\or Ф\or Х\or
- Ц\or Ч\or Ш\or Щ\or Э\or Ю\or Я%
- \else\xpg@ill@value{#1}{mongolian@asbuk@Alph}\fi%
-}
-
-\def\mongolian@asbuk@alph#1{\ifcase#1\or
- а\or б\or в\or г\or д\or е\or ж\or
- з\or и\or к\or л\or м\or н\or о\or
- п\or р\or с\or т\or у\or ф\or х\or
- ц\or ч\or ш\or щ\or э\or ю\or я%
- \else\xpg@ill@value{#1}{mongolian@asbuk@alph}\fi%
-}
-
-\def\mongolian@numbers{%
- \let\latin@alph\@alph
- \let\latin@Alph\@Alph
- \ifcyrillic@numerals%
- \def\mongolian@alph##1{\expandafter\mongoliannumeral\expandafter{\the##1}}%
- \def\mongolian@Alph##1{\expandafter\Mongoliannumeral\expandafter{\the##1}}%
- \let\@alph\mongolian@alph%
- \let\@Alph\mongolian@Alph%
- \fi
-}
-
-\def\nomongolian@numbers{%
- \let\@alph\latin@alph%
- \let\@Alph\latin@Alph%
-}
-
-\def\noextras@mongolian{%
- \ifcyrillic@numerals\nomongolian@numbers\fi%
- \nomongolian@shorthands%
-}
-
-\def\blockextras@mongolian{%
- \ifcyrillic@numerals\mongolian@numbers\fi%
- \ifmongolian@babelshorthands\mongolian@shorthands\fi%
-}
-
-\def\inlineextras@mongolian{%
- \ifmongolian@babelshorthands\mongolian@shorthands\fi%
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-mongolian.ldf>
-%<*gloss-mr.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-mr.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-mr.ldf}[polyglossia: module for mr (marathi)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{marathi}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-mr.ldf>
-%<*gloss-naustrian.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-naustrian.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-naustrian.ldf}[polyglossia: module for austrian german (current spelling)]
-
-% We provide this as a babel alias
-
-\xpg@load@master@language{german}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-naustrian.ldf>
-%<*gloss-nb.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-nb.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-nb.ldf}[polyglossia: module for nb (norwegian)]
-
-% We provide this as a bcp47-compliant alias
-
-\xpg@load@master@language{norwegian}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-nb.ldf>
-%<*gloss-newzealand.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-newzealand.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-newzealand.ldf}[polyglossia: module for newzealand english]
-
-% We provide this as a babel alias
-
-\xpg@load@master@language{english}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-newzealand.ldf>
-%<*gloss-ngerman.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-ngerman.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-ngerman.ldf}[polyglossia: module for german (current spelling)]
-
-% We provide this as a babel alias
-
-\xpg@load@master@language{german}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-ngerman.ldf>
-%<*gloss-nko.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-nko.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-nko.ldf}[Polyglossia: module for N’Ko v0.1 2013/05/19]
-\PolyglossiaSetup{nko}{%
- bcp47=nko,
- script=N'ko,
- scripttag=nko~,
- langtag=NKO,
- fontsetup=true,
- hyphennames={nohyphenation},
- direction=RL,
- localnumeral=nkonumerals
-}
-
-\RequirePackage{nkonumbers}%
-
-\newcommand{\nkonumerals}[2]{\nkonumber{#2}}
-
-\def\captionsnko{%
- \def\prefacename{ߢߍߛߓߍ}%
- \def\refname{ߞߐߡߊߛߙߋ}%
- \def\abstractname{ߓߊߕߐߡߐ߲}%
- \def\bibname{ߟߍߙߊߥߙߍߟߐ߲߲}%
- \def\chaptername{ߛߌ߰ߘߊ}%
- \def\appendixname{ߘߋ߬ߙߋ}%
- \def\contentsname{ߞߣߐߘߐ}%
- \def\listfigurename{ߢߊ ߟߎ߬ ߛߙߍߘߍ}%
- \def\listtablename{ߦߌ߬ߘߊ߬ߥߟߊ ߟߎ߬ ߛߙߍߘߍ}%
- \def\indexname{ߛߙߍߘߍ}%
- \def\figurename{ߢߊ}%
- \def\tablename{ߦߌ߬ߘߊ߬ߥߟߊ}%
- \def\partname{ߛߌ߰ߘߊ߬ߙߋ߲}%
- \def\enclname{ߝߍ߬ߕߊ}%
- \def\ccname{ߓߊ ߘߏ߫ ߘߌ߫}%
- \def\headtoname{ߞߊߕߙߍ߬}%
- \def\pagename{ߞߐߜߍ}%
- \def\seename{ߡߊߝߟߍ߫}%
- \def\alsoname{ߝߟߍߡߊߛߊ߬ߦߌ߬}%
- \def\proofname{ߦߌ߬ߘߊ߬ߞߏ}%
- \def\glossaryname{ߞߘߐߝߐߟߊ߲}%
-}%
-
-% In n'ko, this is an example of date :
-% ߂߀߁߃ ߞߏ߲ߞߏߜߍ ߕߟߋ߬ ߁߈ (RTL)
-% ( 18 February 2013 )
-% The word "ߕߟߋ߬" is mandatory between month name and day number.
-% Replace "ߕߟߋ߬" by "ߕߋ߬ߟߋ߫" if and only if day = 2 or day = 3 or day = 9
-% or (day >= 20 and day <= 29).
-
-\newcommand*\nkodayprefix[1]{%
- \ifnum\numexpr#1=2 ߕߋ߬ߟߋ߫\else%
- \ifnum\numexpr#1=3 ߕߋ߬ߟߋ߫\else%
- \ifnum\numexpr#1=9 ߕߋ߬ߟߋ߫\else%
- \ifnum\numexpr#1>19\ifnum\numexpr#1<30 ߕߋ߬ߟߋ߫\else ߕߟߋ߬\fi\else ߕߟߋ߬\fi%
- \fi%
- \fi%
- \fi%
-}
-
-\newcommand*\nkoday[1]{%
- % If day = 1, put above "߁", NKO_COMBINING_SHORT_RISING_TONE
- \ifnum\numexpr#1=1 ߁߭\else%
- \nkonumber{#1}
- \fi
-}
-
-\def\datenko{%
- \def\today{%
- \nkonumber{\year}\space
- \ifcase\month
- \or ߓߌ߲ߠߊߥߎߟߋ߲%
- \or ߞߏ߲ߞߏߜߍ%
- \or ߕߙߊߓߊ%
- \or ߞߏ߲ߞߏߘߌ߬ߓߌ%
- \or ߘߓߊ߬ߕߊ%
- \or ߥߊ߬ߛߌߥߊ߬ߙߊ%
- \or ߞߊ߬ߙߌߝߐ߭%
- \or ߘߓߊ߬ߓߌߟߊ%
- \or ߕߎߟߊߝߌ߲%
- \or ߞߏ߲ߓߌߕߌ߮%
- \or ߣߍߣߍߓߊ%
- \or ߞߏ߬ߟߌ߲߬ߞߏߟߌ߲\fi
- \space\nkodayprefix{\number\day}
- \space\nkoday{\day}
- }%
-}%
-
-% \end{macrocode}
-% \iffalse
-%</gloss-nko.ldf>
-%<*gloss-norsk.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-norsk.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-norsk.ldf}[polyglossia: module for norwegian (bokmal)]
-
-% We only provide this gloss for babel compatibility. Since norsk is
-% actually norwegian bokmal, we use 'norwegian' with variant 'bokmal' now.
-
-\xpg@load@master@language{norwegian}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-norsk.ldf>
-%<*gloss-norwegian.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-norwegian.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-norwegian.ldf}[polyglossia: module for norwegian]
-\PolyglossiaSetup{norwegian}{
- bcp47=nn,
- hyphennames={nynorsk},
- langtag=NYN,
- hyphenmins={2,2},
- frenchspacing=true,
- fontsetup=false,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*[variant=bokmal]{norwegian}{nb}
-\setlanguagealias*[variant=nynorsk]{norwegian}{nn}
-% Babel and backwards compat. aliases
-\setlanguagealias[variant=bokmal]{norwegian}{norsk}
-\setlanguagealias[variant=nynorsk]{norwegian}{nynorsk}
-
-\def\norwegian@variant{nynorsk}
-\define@choicekey*+{norwegian}{variant}[\xpg@val\xpg@nr]{nynorsk,bokmal}[nynorsk]{%
- \ifcase\xpg@nr\relax
- % nynorsk:
- \def\norwegian@variant{nynorsk}%
- \SetLanguageKeys{norwegian}{langtag=NYN,babelname=nynorsk,bcp47=nn}%
- \xpg@fontsetup@latin{norwegian}%
- \or
- % bokmal:
- \def\norwegian@variant{norsk}%
- \SetLanguageKeys{norwegian}{langtag=NOR,babelname=norsk,bcp47=nb}%
- \xpg@fontsetup@latin{norwegian}%
- \fi
- \xpg@info{Option: norwegian, variant=\xpg@val}%
-}{\xpg@warning{Unknown norwegian variant `#1'}}
-
-
-% Register default options
-\xpg@initialize@gloss@options{norwegian}{variant=nynorsk}
-
-
-\def\norwegian@language{%
- \polyglossia@setup@language@patterns{\norwegian@variant}%
-}%
-
-\def\captionsnorwegian@nynorsk{%
- \def\refname{Referansar}%
- \def\abstractname{Sammendrag}%
- \def\bibname{Litteratur}%
- \def\prefacename{Forord}%
- \def\chaptername{Kapittel}%
- \def\appendixname{Tillegg}%
- \def\contentsname{Innhald}%
- \def\listfigurename{Figurar}%
- \def\listtablename{Tabellar}%
- \def\indexname{Register}%
- \def\figurename{Figur}%
- \def\tablename{Tabell}%
- %\def\thepart{}% <<<
- \def\partname{Del}%
- \def\pagename{Side}%
- \def\seename{Sjå}%
- \def\alsoname{Sjå òg}%
- \def\enclname{Vedlegg}%
- \def\ccname{Kopi til}%
- \def\headtoname{Til}%
- \def\proofname{Bevis}%
- \def\glossaryname{Ordliste}%
-}
-
-\def\captionsnorwegian@norsk{%
- \def\refname{Referanser}%
- \def\abstractname{Sammendrag}%
- \def\bibname{Bibliografi}%
- \def\prefacename{Forord}%
- \def\chaptername{Kapittel}%
- \def\appendixname{Tillegg}%
- \def\contentsname{Innhold}%
- \def\listfigurename{Figurer}%
- \def\listtablename{Tabeller}%
- \def\indexname{Register}%
- \def\figurename{Figur}%
- \def\tablename{Tabell}%
- %\def\thepart{}% <<<
- \def\partname{Del}%
- \def\pagename{Side}%
- \def\seename{Se}%
- \def\alsoname{Se også}%
- \def\enclname{Vedlegg}%
- \def\ccname{Kopi sendt}%
- \def\headtoname{Til}%
- \def\proofname{Bevis}%
- \def\glossaryname{Ordliste}%
-}
-
-\def\captionsnorwegian{%
- \csname captionsnorwegian@\norwegian@variant\endcsname%
-}
-
-\def\datenorwegian@nynorsk{%
- \def\today{\number\day.~\ifcase\month\or
- januar\or februar\or mars\or april\or mai\or juni\or
- juli\or august\or september\or oktober\or november\or desember
- \fi\space\number\year}%
-}
-
-\def\datenorwegian@norsk{%
- \def\today{\number\day.~\ifcase\month\or
- januar\or februar\or mars\or april\or mai\or juni\or
- juli\or august\or september\or oktober\or november\or
- desember\fi\space\number\year}%
-}
-
-\def\datenorwegian{%
- \csname datenorwegian@\norwegian@variant\endcsname%
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-norwegian.ldf>
-%<*gloss-nswissgerman.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-nswissgerman.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-nswissgerman.ldf}[polyglossia: module for swiss german (current spelling)]
-
-% We provide this as a babel alias
-
-\xpg@load@master@language{german}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-nswissgerman.ldf>
-%<*gloss-nynorsk.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-nynorsk.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-nynorsk.ldf}[polyglossia: module for norwegian (Nynorsk)]
-
-% We only provide this gloss for babel compatibility. Since nynorsk is
-% a norwegian variety, we use 'norwegian' with variant 'nynorsk' now.
-
-\xpg@load@master@language{norwegian}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-nynorsk.ldf>
-%<*gloss-occitan.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-occitan.ldf}
-% \begin{macrocode}
-%%
-%% This is file `gloss-occitan.ldf',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% gloss-occitan.dtx (with options: `ldf')
-%% ------------------------------------------------------------------
-%% The gloss-occitan module for polyglossia
-%% Copyright (C) 2016 Cédric Valmary
-%% All rights reserved
-%%
-%% Licence information appended
-%%
-%% Created by Cédric Valmary: cvalmary at yahoo dot fr
-%% of Tot en òc <http://www.totenoc.eu/>
-%%
-\ProvidesFile{gloss-occitan.ldf}[2016/02/04 v0.3 polyglossia:
- module for Occitan]
-\PolyglossiaSetup{occitan}{
- bcp47=oc,
- hyphennames={occitan},
- langtag=OCI,
- hyphenmins={2,2},
- frenchspacing=true,
- indentfirst=true,
- fontsetup=true,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{occitan}{oc}
-
-\define@boolkey{occitan}[occitan@]{babelshorthands}[true]{}
-
-\ifsystem@babelshorthands
- \setkeys{occitan}{babelshorthands=true}
-\else
- \setkeys{occitan}{babelshorthands=false}
-\fi
-
-\ifcsundef{initiate@active@char}{%
- \input{babelsh.def}%
- \initiate@active@char{"}%
- \shorthandoff{"}%
-}{}
-
-\def\occitan@shorthands{%
- \bbl@activate{"}%
- \def\language@group{occitan}%
- \declare@shorthand{occitan}{"}{%
- \relax\ifmmode
- \def\xpgoc@next{''}%
- \else
- \def\xpgoc@next{\futurelet\xpgoc@temp\xpgoc@cwm}%
- \fi
- \xpgoc@next}%
-}
-\def\xpgoc@@cwm{\nobreak\discretionary{-}{}{}\nobreak\hskip\z@skip}
-\def\xpgoc@ponchinterior{%
- \nobreak\discretionary{-}{}{\mbox{$\cdot$}}\nobreak\hskip\z@skip}
-\def\xpgoc@cwm{\let\xpgoc@@next\relax
- \ifcat\noexpand\xpgoc@temp a%
- \def\xpgoc@@next{\xpgoc@@cwm}%
- \else
- \if\noexpand\xpgoc@temp \string|%
- \def\xpgoc@@next##1{\xpgoc@@cwm}%
- \else
- \if\noexpand\xpgoc@temp \string<%
- \def\xpgoc@@next##1{«\ignorespaces}%
- \else
- \if\noexpand\xpgoc@temp \string>%
- \def\xpgoc@@next##1{\unskip»}%
- \else
- \if\noexpand\xpgoc@temp\string/%
- \def\xpgoc@@next##1{\slash}%
- \else
- \if\noexpand\xpgoc@temp\string.%
- \def\xpgoc@@next##1{\xpgoc@ponchinterior}%
- \fi
- \fi
- \fi
- \fi
- \fi
- \fi
- \xpgoc@@next}
-\def\nooccitan@shorthands{%
- \@ifundefined{initiate@active@char}{}{\bbl@deactivate{"}}%
-}
-\def\captionsoccitan{%
- \def\refname{Referéncias}%
- \def\abstractname{Resumit}%
- \def\bibname{Bibliografia}%
- \def\prefacename{Prefaci}%
- \def\chaptername{Capítol}%
- \def\appendixname{Annèx}%
- \def\contentsname{Ensenhador}%
- \def\listfigurename{Taula de las figuras}%
- \def\listtablename{Taula dels tablèus}%
- \def\indexname{Indèx}%
- \def\figurename{Figura}%
- \def\tablename{Tablèu}%
- %\def\thepart{}%
- \def\partname{Partida}%
- \def\pagename{Pagina}%
- \def\seename{vejatz}%
- \def\alsoname{vejatz tanben}%
- \def\enclname{Pèça junta}%
- \def\ccname{còpia a}%
- \def\headtoname{A}%
- \def\proofname{Demostracion}%
- \def\glossaryname{Glossari}%
-}
-\def\dateoccitan{%
- \def\occitanmonth{\ifcase\month\or
- de~genièr\or
- de~febrièr\or
- de~març\or
- d'abril\or
- de~mai\or
- de~junh\or
- de~julhet\or
- d'agost\or
- de~setembre\or
- d'octobre\or
- de~novembre\or
- de~decembre\fi
- }%
- \def\occitanday{\ifcase\day\or
- 1èr\else% primièr
- \number\day\fi% all other numbers
- }%
- \def\today{\occitanday\space \occitanmonth\space de~\number\year}%
-}
-\let\xpgoc@savedvalues\empty
-\AtEndPreamble{% the user or the class might define different values
- \edef\xpgoc@savedvalues{%
- \clubpenalty=\the\clubpenalty\space
- \@clubpenalty=\the\@clubpenalty\space
- \widowpenalty=\the\widowpenalty\space
- \finalhyphendemerits=\the\finalhyphendemerits}
-}
-\def\noextras@occitan{%
- \lccode\string"2019=\z@
- \nooccitan@shorthands
- \xpgoc@savedvalues
-}
-\def\blockextras@occitan{%
- \lccode\string"2019=\string"2019
- \clubpenalty=3000 \@clubpenalty=3000 \widowpenalty=3000
- \finalhyphendemerits=50000000
- \ifoccitan@babelshorthands\occitan@shorthands\fi
-}
-
-\def\inlineextras@occitan{%
- \lccode\string"2019=\string"2019
- \ifoccitan@babelshorthands\occitan@shorthands\fi
-}
-%% Distributable under the LaTeX Project Public License,
-%% version 1.3c or higher (your choice). The latest version of
-%% this license is at: http://www.latex-project.org/lppl.txt
-%%
-%% This work is "author-maintained"
-%% The maintainer is Cédric Valmary
-%%
-%%
-%% End of file `gloss-occitan.ldf'.
-% \end{macrocode}
-% \iffalse
-%</gloss-occitan.ldf>
-%<*gloss-persian.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-persian.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-persian.ldf}[polyglossia: module for persian]
-\ifluatex
- \xpg@warning{Persian is not supported with LuaTeX.\MessageBreak
-I will proceed with the compilation, but\MessageBreak
-the output is not guaranteed to be correct\MessageBreak
-and may look very wrong.}
-\fi
-\RequireBidi
-\RequirePackage{arabicnumbers}
-\RequirePackage{farsical}
-\RequirePackage{hijrical}
-\PolyglossiaSetup{persian}{
- bcp47=fa,
- babelname=farsi,
- script=Arabic,
- direction=RL,
- scripttag=arab,
- langtag=FAR,
- hyphennames={nohyphenation},
- fontsetup=true,
- localnumeral=farsinumerals
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{persian}{fa}
-
-% Babel and backwards compat. alias
-\setlanguagealias{persian}{farsi}
-
-\newif\if@western@numerals
-\def\tmp@western{western}
-\define@key{persian}{numerals}[eastern]{%
- \def\@tmpa{#1}%
- \ifx\@tmpa\tmp@western\@western@numeralstrue\else%
- \@western@numeralsfalse%
- \fi}
-
-%this is needed for \abjad in arabicnumbers.sty
-\def\tmp@true{true}
-\define@key{persian}{abjadjimnotail}[true]{%
- \def\@tmpa{#1}%
- \ifx\@tmpa\tmp@true\abjad@jim@notailtrue%
- \else
- \abjad@jim@notailfalse
- \fi}
-
-% NOT YET USED
-\define@key{persian}{locale}[default]{%
- \def\@persian@locale{#1}}
-
-%TODO add option for CALENDAR
-
-% Register default options
-\xpg@initialize@gloss@options{persian}{locale=default,numerals=eastern,abjadjimnotail=false}
-
-\def\farsigregmonth#1{\ifcase#1%
- \or ژانویه\or فوریه\or مارس\or آوریل\or مه\or ژوئن\or ژوئیه\or اوت\or سپتامبر\or اکتبر\or نوامبر\or دسامبر\fi}
-\def\farsimonth#1{\ifcase#1%
- \or کانون ثانی\or شباط\or اذار%%or ادار
- \or نیسان\or ایار\or حزیران\or تموز\or آب\or ایلول\or تشرین اول\or تشرین ثانی\or کانون اول\fi}
-
-%\Hijritoday is now locale-aware and will format the date with this macro:
-\DefineFormatHijriDate{persian}{\@ensure@RTL{%
-\farsinumber{\value{Hijriday}}\space\HijriMonthArabic{\value{Hijrimonth}}\space\farsinumber{\value{Hijriyear}}}}
-
-\def\captionspersian{%
-\def\prefacename{\@ensure@RTL{پیشگفتار}}%
-\def\refname{\@ensure@RTL{مراجع}}%
-\def\abstractname{\@ensure@RTL{چکیده}}%
-\def\bibname{\@ensure@RTL{کتاب‌نامه}}%
-\def\chaptername{\@ensure@RTL{فصل}}%
-\def\appendixname{\@ensure@RTL{پیوست}}%
-\def\contentsname{\@ensure@RTL{فهرست مطالب}}%
-\def\listfigurename{\@ensure@RTL{لیست تصاویر}}%
-\def\listtablename{\@ensure@RTL{لیست جداول}}%
-\def\indexname{\@ensure@RTL{نمایه}}%
-\def\figurename{\@ensure@RTL{شكل}}%
-\def\tablename{\@ensure@RTL{جدول}}%
-\def\partname{\@ensure@RTL{بخش}}%
-\def\enclname{\@ensure@RTL{پیوست}}%
-\def\ccname{\@ensure@RTL{رونوشت}}%
-\def\headtoname{\@ensure@RTL{به}}%
-\def\pagename{\@ensure@RTL{صفحة}}%
-\def\seename{\@ensure@RTL{ببینید}}%
-\def\alsoname{\@ensure@RTL{نیز ببینید}}%
-\def\proofname{\@ensure@RTL{برهان}}%
-\def\glossaryname{\@ensure@RTL{دانش‌نامه}}%
-}
-\def\datepersian{%
- \def\today{\@ensure@RTL{\farsinumber\day\space\farsigregmonth{\month}\space\farsinumber\year}}%
-}
-
-\newcommand{\farsinumerals}[2]{\farsinumber{#2}}
-
-\def\farsinumber#1{%
- \if@western@numerals
- \number#1%
- \else
- \xpg@if@char@available{06F0}%
- {\farsidigits{\number#1}}%
- {\arabicdigits{\number#1}}%
- \fi
-}
-
-%\def\farsinum#1{\expandafter\farsinumber\csname c@#1\endcsname}
-%\def\farsibracenum#1{(\expandafter\farsinumber\csname c@#1\endcsname)}
-%\def\farsiornatebracenum#1{\char"FD3E\expandafter\farsinumber\csname c@#1\endcsname\char"FD3F}
-%\def\farsialph#1{\expandafter\@farsialph\csname c@#1\endcsname}
-
-\def\persian@numbers{%
- \let\@alph\abjad%
- \let\@Alph\abjad%
-}
-
-\def\nopersian@numbers{%
- \let\@alph\@latinalph%
- \let\@Alph\@latinAlph%
-}
-
-\def\persian@globalnumbers{%
- \let\@arabic\farsinumber%
- \renewcommand\thefootnote{\localnumeral*{footnote}}%
- \renewcommand\theequation{\localnumeral*{equation}}%
-}
-
-% Store original definition
-\let\xpg@save@arabic\@arabic
-
-\def\nopersian@globalnumbers{
- \let\@arabic\xpg@save@arabic%
-}
-
-% Save original \MakeUppercase definition
-\let\xpg@save@MakeUppercase\MakeUppercase
-
-\def\blockextras@persian{%
- \def\MakeUppercase##1{##1}%
-}
-
-\def\noextras@persian{%
- % restore original \MakeUppercase definition
- \let\MakeUppercase\xpg@save@MakeUppercase
-}
-% \end{macrocode}
-% \iffalse
-%</gloss-persian.ldf>
-%<*gloss-piedmontese.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-piedmontese.ldf}
-% \begin{macrocode}
-% !TEX encoding = UTF-8 Unicode
-\ProvidesFile{gloss-piedmontese.ldf}[2013/02/12 v1.0 polyglossia: module for piedmontese]
-\makeatletter
-\PolyglossiaSetup{piedmontese}{
- bcp47=pms,
- hyphennames={piedmontese},
- hyphenmins={2,2},
- langtag=PMS,
- frenchspacing=true,
- fontsetup=true,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{piedmontese}{pms}
-
-\define@boolkey{piedmontese}[piedmontese@]{babelshorthands}[true]{}
-
-\ifsystem@babelshorthands
- \setkeys{piedmontese}{babelshorthands=true}
-\else
- \setkeys{piedmontese}{babelshorthands=false}
-\fi
-
-\ifcsundef{initiate@active@char}{%
- \input{babelsh.def}%
- \initiate@active@char{"}%
- \shorthandoff{"}%
-}{}
-
-\def\piedmontese@shorthands{%
- \bbl@activate{"}%
- \def\language@group{piedmontese}%
- \declare@shorthand{piedmontese}{"}{%
- \relax\ifmmode
- \def\xpgpms@next{''}%
- \else
- \def\xpgpms@next{\futurelet\xpgpms@temp\xpgpms@cwm}%
- \fi
- \xpgpms@next}%
-}
-
-\def\xpgpms@@cwm{\nobreak\discretionary{-}{}{}\nobreak\hskip\z@skip}
-\def\xpgpms@cwm{\let\xpgpms@@next\relax
-\ifcat\noexpand\xpgpms@temp a%
- \def\xpgpms@@next{\pms@@cwm}%
-\else
- \ifx\xpgpms@temp/%
- \def\xpgpms@@next{\bbl@allowhyphens/\bbl@allowhyphens\@gobble}%
- \else
- \ifx\xpgpms@temp-%
- \def\xpgpms@@next{\bbl@allowhyphens-\bbl@allowhyphens\@gobble}%
- \else
- \ifx\xpgpms@temp"%
- \def\xpgpms@@next{``\expandafter\@gobble\string}%
- \fi
- \fi
- \fi
-\xpgpms@@next}
-
-\def\nopiedmontese@shorthands{%
- \@ifundefined{initiate@active@char}{}{\bbl@deactivate{"}}%
-}
-\@namedef{captions\CurrentOption}{%
- \def\prefacename{Prefassion}%
- \def\refname{Riferiment}%
- \def\abstractname{Somari}%
- \def\bibname{Bibliografìa}%
- \def\chaptername{Capìtol}%
- \def\appendixname{Gionta}%
- \def\contentsname{Tàula}%
- \def\listfigurename{Lista dle figure}%
- \def\listtablename{Lista dle tabele}%
- \def\indexname{Tàula analìtica}%
- \def\figurename{Figura}%
- \def\tablename{Tabela}%
- \def\partname{Part}%
- \def\enclname{Gionta/e}%
- \def\ccname{Con còpia a}%
- \def\headtoname{Për}%
- \def\pagename{Pàgina}%
- \def\seename{vëd}%
- \def\alsoname{vëd anche}%
- \def\proofname{Dimostrassion}%
- \def\glossaryname{Glossari}%
-}
-\@namedef{date\CurrentOption}{%
- \def\today{\number\day\space\ifcase\month\or
- ëd gené\or ëd fevré\or ëd mars\or d'avril\or ëd maj\or ëd giugn\or
- ëd luj\or d'agost\or dë stèmber\or d'otóber\or ëd novèmber\or dë dzèmber%
- \fi\space dal\space\number\year}}
-
-\AtEndPreamble{%
- \edef\xpgpms@savedvalues{%
- \clubpenalty=\the\clubpenalty\space
- \@clubpenalty=\the\@clubpenalty\space
- \widowpenalty=\the\widowpenalty\space
- \finalhyphendemerits=\the\finalhyphendemerits}
-}
-
-
-\def\noextras@piedmontese{%
- \lccode\string"2019=\z@
- \nopiedmontese@shorthands
- \xpgpms@savedvalues
-}
-
-\def\blockextras@piedmontese{%
- \lccode\string"2019=\string"2019
- \clubpenalty=3000 \@clubpenalty=3000 \widowpenalty=3000
- \finalhyphendemerits=50000000
- \ifpiedmontese@babelshorthands\piedmontese@shorthands\fi
-}
-
-\def\inlineextras@piedmontese{%
- \lccode\string"2019=\string"2019
- \ifpiedmontese@babelshorthands\piedmontese@shorthands\fi
-}
-%%% CHANGES END %%%
-% \end{macrocode}
-% \iffalse
-%</gloss-piedmontese.ldf>
-%<*gloss-polish.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-polish.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-polish.ldf}[polyglossia: module for polish]
-\PolyglossiaSetup{polish}{
- bcp47=pl,
- hyphennames={polish},
- hyphenmins={2,2},
- langtag=PLK,
- frenchspacing=true,
- fontsetup=true,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{polish}{pl}
-
-\def\captionspolish{%
- \def\prefacename{Przedmowa}%
- \def\refname{Literatura}%
- \def\abstractname{Streszczenie}%
- \def\bibname{Bibliografia}%
- \def\chaptername{Rozdział}%
- \def\appendixname{Dodatek}%
- \def\contentsname{Spis treści}%
- \def\listfigurename{Spis rysunków}%
- \def\listtablename{Spis tabel}%
- \def\indexname{Indeks}%
- \def\figurename{Rysunek}%
- \def\tablename{Tabela}%
- \def\partname{Część}%
- \def\enclname{Załącznik}%
- \def\ccname{Kopie:}%
- \def\headtoname{Do}%
- \def\pagename{Strona}%
- \def\seename{Zobacz}%
- \def\alsoname{Zobacz też}%
- \def\proofname{Dowód}%
- \def\glossaryname{Glossary}% <-- Needs translation
- }
-
-\def\datepolish{%
- \def\today{\number\day\space\ifcase\month\or
- stycznia\or lutego\or marca\or kwietnia\or maja\or czerwca\or
- lipca\or sierpnia\or września\or października\or
- listopada\or grudnia\fi\space
- \number\year}%
- }
-
-% \end{macrocode}
-% \iffalse
-%</gloss-polish.ldf>
-%<*gloss-polutonikogreek.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-polutonikogreek.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-polutonikogreek.ldf}[polyglossia: module for polytonic greek]
-
-% We provide this as a babel alias
-
-\xpg@load@master@language{greek}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-polutonikogreek.ldf>
-%<*gloss-portuges.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-portuges.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-portuges.ldf}[polyglossia: module for portuguese]
-
-% We only provide this gloss for backwards compatibility. The name
-% 'portuges' was selected in accordance with babel (which probably
-% introduced it in 8.3 filename times). Since polyglossia uses full
-% English language names, we use 'portuguese' now.
-
-\xpg@load@master@language{portuguese}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-portuges.ldf>
-%<*gloss-portuguese.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-portuguese.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-portuguese.ldf}[polyglossia: module for portuguese]
-
-\PolyglossiaSetup{portuguese}{
- bcp47=pt-PT,
- babelname=portuges,
- hyphennames={portuges,portuguese},
- hyphenmins={2,3},
- langtag=PTG,
- fontsetup=true,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*[variant=portuguese]{portuguese}{pt-PT}
-\setlanguagealias*[variant=brazilian]{portuguese}{pt-BR}
-\setlanguagealias*{portuguese}{pt}
-
-% Babel aliases
-\setlanguagealias[variant=portuguese]{portuguese}{portuges}
-\setlanguagealias[variant=brazilian]{portuguese}{brazil}
-
-\def\portuguese@variant{portuges}
-\define@choicekey*+{portuguese}{variant}[\xpg@val\xpg@nr]{portuguese,brazilian}[portuguese]{%
- \ifcase\xpg@nr\relax
- % portuguese:
- \def\portuguese@variant{portuges}%
- \SetLanguageKeys{portuguese}{babelname=portuges,bcp47=pt-PT}%
- \or
- % brazilian:
- \def\portuguese@variant{brazil}%
- \SetLanguageKeys{portuguese}{babelname=brazil,bcp47=pt-BR}%
- \xpg@ifdefined{brazil}{}%
- {\xpg@warning{No hyphenation patterns were loaded for "Portuguese (Brazil)"\MessageBreak
- I will use the standard patterns for Portuguese instead}%
- \adddialect\l@brazil\l@portuges\relax}%
- \fi
- \xpg@info{Option: portuguese, variant=\xpg@val}%
-}{\xpg@warning{Unknown portuguese variant `#1'}}
-
-
-% Register default options
-\xpg@initialize@gloss@options{portuguese}{variant=portuguese}
-
-
-\def\portuguese@language{%
- \polyglossia@setup@language@patterns{\portuguese@variant}%
-}%
-
-\def\captionsportuguese@portuges{%
- \def\refname{Referências}%
- \def\abstractname{Resumo}%
- \def\bibname{Bibliografia}%
- \def\prefacename{Prefácio}%
- \def\chaptername{Capítulo}%
- \def\appendixname{Apêndice}%
- \def\contentsname{Conteúdo}%
- \def\listfigurename{Lista de Figuras}%
- \def\listtablename{Lista de Tabelas}%
- \def\indexname{Índice}%
- \def\figurename{Figura}%
- \def\tablename{Tabela}%
- \def\partname{Parte}%
- \def\pagename{Página}%
- \def\seename{ver}%
- \def\alsoname{ver também}%
- \def\enclname{Anexo}%
- \def\ccname{Com cópia a}%
- \def\headtoname{Para}%
- \def\proofname{Demonstração}%
- \def\glossaryname{Glossário}%
-}
-
-\def\captionsportuguese@brazil{%
- \def\refname{Referências}%
- \def\abstractname{Resumo}%
- \def\bibname{Referências Bibliográficas}%
- \def\prefacename{Prefácio}%
- \def\chaptername{Capítulo}%
- \def\appendixname{Apêndice}%
- \def\contentsname{Sumário}%
- \def\listfigurename{Lista de Figuras}%
- \def\listtablename{Lista de Tabelas}%
- \def\indexname{Índice Remissivo}%
- \def\figurename{Figura}%
- \def\tablename{Tabela}%
- \def\partname{Parte}%
- \def\pagename{Página}%
- \def\seename{veja}%
- \def\alsoname{veja também}%
- \def\enclname{Anexo}%
- \def\ccname{Cópia para}%
- \def\headtoname{Para}%
- \def\proofname{Demonstração}%
- \def\glossaryname{Glossário}%
-}
-
-\def\captionsportuguese{%
- \csname captionsportuguese@\portuguese@variant\endcsname%
-}
-
-\def\dateportuguese@portuges{%
- \def\today{\number\day\space de\space\ifcase\month\or
- Janeiro\or Fevereiro\or Março\or Abril\or Maio\or Junho\or
- Julho\or Agosto\or Setembro\or Outubro\or Novembro\or Dezembro\fi
- \space de\space\number\year}%
-}
-
-
-\def\dateportuguese@brazil{%
- \def\today{\number\day\space de\space\ifcase\month\or
- janeiro\or fevereiro\or março\or abril\or maio\or junho\or
- julho\or agosto\or setembro\or outubro\or novembro\or dezembro%
- \fi\space de\space\number\year}%
-}
-
-\def\dateportuguese{%
- \csname dateportuguese@\portuguese@variant\endcsname%
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-portuguese.ldf>
-%<*gloss-romanian.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-romanian.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-romanian.ldf}[polyglossia: module for romanian]
-
-\PolyglossiaSetup{romanian}{
- bcp47=ro,
- hyphennames={romanian},
- hyphenmins={2,2},
- langtag=ROM,
- fontsetup=true,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{romanian}{ro}
-
-\def\captionsromanian{%
- \def\refname{Bibliografie}%
- \def\abstractname{Rezumat}%
- \def\bibname{Bibliografie}%
- \def\prefacename{Prefață}%
- \def\chaptername{Capitolul}%
- \def\appendixname{Anexa}%
- \def\contentsname{Cuprins}%
- \def\listfigurename{Listă de figuri}%
- \def\listtablename{Listă de tabele}%
- \def\indexname{Glosar}%
- \def\figurename{Figura}%
- \def\tablename{Tabela}%
- %\def\thepart{}%
- \def\partname{Partea}%
- \def\pagename{Pagina}%
- \def\seename{Vezi}%
- \def\alsoname{Vezi de asemenea}%
- \def\enclname{Anexă}%
- \def\ccname{Copie}%
- \def\headtoname{Pentru}%
- \def\proofname{Demonstrație}%
- \def\glossaryname{Glosar}%
- }
-
-\def\dateromanian{%
- \def\today{\number\day~\ifcase\month\or
- ianuarie\or februarie\or martie\or aprilie\or mai\or
- iunie\or iulie\or august\or septembrie\or octombrie\or
- noiembrie\or decembrie\fi
- \space \number\year}%
- }
-
-% \end{macrocode}
-% \iffalse
-%</gloss-romanian.ldf>
-%<*gloss-romansh.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-romansh.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-romansh.ldf}[polyglossia: module for romansh]
-\makeatletter
-\PolyglossiaSetup{romansh}{%
- bcp47=rm,
- hyphennames={romansh},
- hyphenmins={2,2},
- langtag=RMS,
- indentfirst=true,
- fontsetup=true,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{romansh}{rm}
-
-\def\captionsromansh{%
- \def\prefacename{Prefaziun}%
- \def\refname{Bibliografia}%
- \def\abstractname{Recapitulaziun}%
- \def\bibname{Index bibliografic}%
- \def\chaptername{Chapitel}%
- \def\appendixname{Appendix}%
- \def\contentsname{Tavla dal cuntegn}%
- \def\listfigurename{Tavla da las figuras}%
- \def\listtablename{Tavla da las tabellas}%
- \def\indexname{Register da materias}% Index?
- \def\figurename{Figura}%
- \def\tablename{Tabella}%
- \def\partname{Part}%
- \def\enclname{Agiunta(s)}%
- \def\ccname{Copia a}%
- \def\headtoname{A}%
- \def\pagename{pagina}%
- \def\seename{vesair }%
- \def\alsoname{vesair era}%
- \def\proofname{Demonstraziun}%
- \def\glossaryname{Glossari}%
- }
-
-\def\dateromansh{%
- \def\today{\ifcase\day\or1.\else ils~\number\day\fi~da~%
- \ifcase\month\or
- schaner\or favrer\or mars\or avrigl\or matg\or zercladur\or
- fanadur\or avust\or settember\or october\or november\or
- december\fi\space \number\year}}
-\makeatother
-% \end{macrocode}
-% \iffalse
-%</gloss-romansh.ldf>
-%<*gloss-russian.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-russian.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-russian.ldf}[polyglossia: module for russian]
-
-\RequirePackage{xpg-cyrillicnumbers}
-
-\PolyglossiaSetup{russian}{
- bcp47=ru,
- script=Cyrillic,
- scripttag=cyrl,
- langtag=RUS,
- hyphennames={russian},
- hyphenmins={2,2},
- frenchspacing=true,
- indentfirst=true,
- fontsetup,
- localnumeral=russiannumerals,
- Localnumeral=Russiannumerals
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{russian}{ru}
-\setlanguagealias*[spelling=modern]{russian}{ru-luna1918}
-\setlanguagealias*[spelling=old]{russian}{ru-petr1708}
-
-\newif\if@russian@modern
-\define@key{russian}{spelling}[modern]{%
- \ifstrequal{#1}{old}%
- {\@russian@modernfalse\SetLanguageKeys{russian}{bcp47=ru-petr1708}}%
- {\@russian@moderntrue\SetLanguageKeys{russian}{bcp47=ru}}%
-}
-
-\def\captionsrussian{%
- \if@russian@modern\captionsrussian@modern\else\captionsrussian@old\fi%
-}%
-
-\def\daterussian{%
- \if@russian@modern\daterussian@modern\else\daterussian@old\fi%
-}%
-
-\newif\ifcyrillic@numerals
-\newif\ifcyrillic@asbuk@numerals
-\define@choicekey*+{russian}{numerals}[\xpg@val\xpg@nr]{arabic,cyrillic,cyrillic-trad,cyrillic-alph}[arabic]{%
- \ifcase\xpg@nr\relax
- % arabic:
- \cyrillic@numeralsfalse%
- \cyrillic@asbuk@numeralsfalse%
- \or
- % cyrillic:
- \cyrillic@numeralstrue%
- \cyrillic@asbuk@numeralsfalse%
- \or
- % cyrillic-trad:
- \cyrillic@numeralstrue%
- \cyrillic@asbuk@numeralsfalse%
- \or
- % cyrillic-alph:
- \cyrillic@numeralstrue%
- \cyrillic@asbuk@numeralstrue%
- \fi
- \xpg@info{Option: Russian, numerals=\xpg@val}%
-}{\xpg@warning{Unknown Russian numerals value `#1'}}
-
-\define@boolkey{russian}[russian@]{indentfirst}[true]{
- \ifrussian@indentfirst
- \SetLanguageKeys{russian}{indentfirst=true}
- \else
- \SetLanguageKeys{russian}{indentfirst=false}
- \fi
-}
-
-\define@boolkey{russian}[russian@]{babelshorthands}[true]{}
-
-
-% Register default options
-\xpg@initialize@gloss@options{russian}{babelshorthands=false,spelling=modern,numerals=arabic,indentfirst=false}
-
-
-\ifsystem@babelshorthands
- \setkeys{russian}{babelshorthands=true}
-\else
- \setkeys{russian}{babelshorthands=false}
-\fi
-
-\ifcsundef{initiate@active@char}{%
- \input{babelsh.def}%
- \initiate@active@char{"}%
- \shorthandoff{"}%
-}{}
-
-\def\russian@shorthands{%
- \bbl@activate{"}%
- \def\language@group{russian}%
-% \declare@shorthand{russian}{"`}{„}%
-% \declare@shorthand{russian}{"'}{“}%
-% \declare@shorthand{russian}{"<}{«}%
-% \declare@shorthand{russian}{">}{»}%
- \declare@shorthand{russian}{""}{\hskip\z@skip}%
- \declare@shorthand{russian}{"~}{\textormath{\leavevmode\hbox{-}}{-}}%
- \declare@shorthand{russian}{"=}{\nobreak-\hskip\z@skip}%
- \declare@shorthand{russian}{"|}{\textormath{\nobreak\discretionary{-}{}{\kern.03em}\allowhyphens}{}}%
- \declare@shorthand{russian}{"-}{%
- \def\russian@sh@tmp{%
- \if\russian@sh@next-\expandafter\russian@sh@emdash%
- \else\expandafter\russian@sh@hyphen\fi%
- }%
- \futurelet\russian@sh@next\russian@sh@tmp}%
- \def\russian@sh@hyphen{%
- \nobreak\-\bbl@allowhyphens}%
- \def\russian@sh@emdash##1##2{\cdash-##1##2}%
- \def\cdash##1##2##3{\def\tempx@{##3}%
- \def\tempa@{-}\def\tempb@{~}\def\tempc@{*}%
- \ifx\tempx@\tempa@\@Acdash\else
- \ifx\tempx@\tempb@\@Bcdash\else
- \ifx\tempx@\tempc@\@Ccdash\else
- \errmessage{Wrong usage of cdash}\fi\fi\fi}%
- \def\@Acdash{\ifdim\lastskip>\z@\unskip\nobreak\hskip.2em\fi
- \cyrdash\hskip.2em\ignorespaces}%
- \def\@Bcdash{\leavevmode\ifdim\lastskip>\z@\unskip\fi
- \nobreak\cyrdash\penalty\exhyphenpenalty\hskip\z@skip\ignorespaces}%
- \def\@Ccdash{\leavevmode
- \nobreak\cyrdash\nobreak\hskip.35em\ignorespaces}%
- \ifx\cyrdash\undefined
- \def\cyrdash{\hbox to.8em{--\hss--}}%
- \fi
- \declare@shorthand{russian}{",}{\nobreak\hskip.2em\ignorespaces}%
-}
-
-\def\norussian@shorthands{%
- \@ifundefined{initiate@active@char}{}{\bbl@deactivate{"}}%
-}
-
-
-\def\captionsrussian@modern{%
- \def\prefacename{Предисловие}%
- \def\refname{Список литературы}%
- \def\abstractname{Аннотация}%
- \def\bibname{Литература}%
- \def\chaptername{Глава}%
- \def\appendixname{Приложение}%
- \ifcsundef{thechapter}%
- {\def\contentsname{Содержание}}%
- {\def\contentsname{Оглавление}}%
- \def\listfigurename{Список иллюстраций}%
- \def\listtablename{Список таблиц}%
- \def\indexname{Предметный указатель}%
- \def\authorname{Именной указатель}%
- \def\figurename{Рис.}%
- \def\tablename{Таблица}%
- \def\partname{Часть}%
- \def\enclname{вкл.}%
- \def\ccname{исх.}%
- \def\headtoname{вх.}%
- \def\pagename{с.}%
- \def\seename{см.}%
- \def\alsoname{см.~также}%
- \def\proofname{Доказательство}%
-}
-\def\daterussian@modern{%
- \def\today{\number\day%
- \space\ifcase\month\or%
- января\or
- февраля\or
- марта\or
- апреля\or
- мая\or
- июня\or
- июля\or
- августа\or
- сентября\or
- октября\or
- ноября\or
- декабря\fi%
- \space \number\year\space г.}%
-}
-
-\def\captionsrussian@old{%
- \def\prefacename{Предисловіе}%
- \def\refname{Примѣчанія}%
- \def\abstractname{Аннотація}%
- \def\bibname{Библіографія}%
- \def\chaptername{Глава}%
- \def\appendixname{Приложеніе}%
- \ifcsundef{thechapter}%
- {\def\contentsname{Содержаніе}}%
- {\def\contentsname{Оглавленіе}}%
- \def\listfigurename{Списокъ иллюстрацій}%
- \def\listtablename{Списокъ таблицъ}%
- \def\indexname{Предмѣтный указатель}%
- \def\authorname{Именной указатель}%
- \def\figurename{Рис.}%
- \def\tablename{Таблица}%
- \def\partname{Часть}%
- \def\enclname{вкл.}%
- \def\ccname{исх.}%
- \def\headtoname{вх.}%
- \def\pagename{с.}%
- \def\seename{см.}%
- \def\alsoname{см.~также}%
- \def\proofname{Доказательство}%
-}
-
-\def\daterussian@old{%
- \def\today{\number\day%
- \space\ifcase\month\or%
- января\or
- февраля\or
- марта\or
- апреля\or
- мая\or
- іюня\or
- іюля\or
- августа\or
- сентября\or
- октября\or
- ноября\or
- декабря\fi%
- \space \number\year\space г.}%
-}
-
-% The following is based on some ideas from ruscor.sty
-\def\russian@capsformat{%
- \ifdef{\KOMAScript}{%
- \ifdef{\chapterformat}{%
- \renewcommand{\chapterformat}{\prechapter\thechapter\postchapter}}{}%
- \ifdef{\sectionformat}{%
- \renewcommand{\sectionformat}{\presection\thesection\postsection}}{}%
- \ifdef{\subsectionformat}{%
- \renewcommand{\subsectionformat}{\presubsection\thesubsection\postsubsection}}{}%
- \ifdef{\subsubsectionformat}{%
- \renewcommand{\subsubsectionformat}{\presubsubsection\thesubsubsection\postsubsubsection}}{}%
- \ifdef{\paragraphformat}{%
- \renewcommand{\paragraphformat}{\preparagraph\theparagraph\postparagraph}}{}%
- \ifdef{\subparagraphformat}{%
- \renewcommand{\subparagraphformat}{\presubparagraph\thesubparagraph\postsubparagraph}}{}%
- }{%
- \def\@seccntformat##1{\csname pre##1\endcsname%
- \csname the##1\endcsname%
- \csname post##1\endcsname}%
- }%
- \def\@aftersepkern{\hspace{0.5em}}%
- \def\postchapter{.\@aftersepkern}%
- \def\postsection{.\@aftersepkern}%
- \def\postsubsection{.\@aftersepkern}%
- \def\postsubsubsection{.\@aftersepkern}%
- \def\postparagraph{.\@aftersepkern}%
- \def\postsubparagraph{.\@aftersepkern}%
- \def\prechapter{}%
- \def\presection{}%
- \def\presubsection{}%
- \def\presubsubsection{}%
- \def\preparagraph{}%
- \def\presubparagraph{}%
-}
-
-\newcommand{\russiannumerals}[2]{\russiannumber{#2}}
-\newcommand{\Russiannumerals}[2]{\Russiannumber{#2}}
-
-\def\russiannumber#1{%
- \ifcyrillic@numerals
- \ifcyrillic@asbuk@numerals
- \russian@asbuk@alph{#1}%
- \else
- \cyr@alph{#1}%
- \fi
- \else
- \number#1%
- \fi%
-}
-
-\def\Russiannumber#1{%
- \ifcyrillic@numerals
- \ifcyrillic@asbuk@numerals
- \russian@asbuk@Alph{#1}%
- \else
- \cyr@Alph{#1}%
- \fi
- \else
- \number#1%
- \fi%
-}
-
-\let\russiannumeral=\russiannumber
-\let\Russiannumeral=\Russiannumber
-
-\def\Asbuk#1{\expandafter\russian@asbuk@Alph\csname c@#1\endcsname}
-\def\asbuk#1{\expandafter\russian@asbuk@alph\csname c@#1\endcsname}
-
-\def\AsbukTrad#1{\expandafter\cyr@Alph\csname c@#1\endcsname}
-\def\asbukTrad#1{\expandafter\cyr@alph\csname c@#1\endcsname}
-
-
-% This is a poor man's cyrillic alphanumeric. It just uses the alphabet and
-% thus ends at 30.
-\def\russian@asbuk@Alph#1{\ifcase#1\or
- А\or Б\or В\or Г\or Д\or Е\or Ж\or
- З\or И\or К\or Л\or М\or Н\or О\or
- П\or Р\or С\or Т\or У\or Ф\or Х\or
- Ц\or Ч\or Ш\or Щ\or Э\or Ю\or Я%
- \else\xpg@ill@value{#1}{russian@asbuk@Alph}\fi%
-}
-
-\def\russian@asbuk@alph#1{\ifcase#1\or
- а\or б\or в\or г\or д\or е\or ж\or
- з\or и\or к\or л\or м\or н\or о\or
- п\or р\or с\or т\or у\or ф\or х\or
- ц\or ч\or ш\or щ\or э\or ю\or я%
- \else\xpg@ill@value{#1}{russian@asbuk@alph}\fi%
-}
-
-\def\russian@numbers{%
- \let\latin@alph\@alph
- \let\latin@Alph\@Alph
- \ifcyrillic@numerals%
- \def\russian@alph##1{\expandafter\russiannumeral\expandafter{\the##1}}%
- \def\russian@Alph##1{\expandafter\Russiannumeral\expandafter{\the##1}}%
- \let\@alph\russian@alph%
- \let\@Alph\russian@Alph%
- \fi
-}
-
-\def\norussian@numbers{%
- \let\@alph\latin@alph%
- \let\@Alph\latin@Alph%
-}
-
-\def\noextras@russian{%
- \ifdef{\KOMAScript}{%
- \ifdef{\chapterformat}{%
- \renewcommand{\chapterformat}{\thechapter\autodot\enskip}}{}%
- \ifdef{\sectionformat}{%
- \renewcommand{\sectionformat}{\thesection\autodot\enskip}}{}%
- \ifdef{\subsectionformat}{%
- \renewcommand{\subsectionformat}{\thesubsection\autodot\enskip}}{}%
- \ifdef{\subsubsectionformat}{%
- \renewcommand{\subsubsectionformat}{\thesubsubsection\autodot\enskip}}{}%
- \ifdef{\paragraphformat}{%
- \renewcommand{\paragraphformat}{\theparagraph\autodot\enskip}}{}%
- \ifdef{\subparagraphformat}{%
- \renewcommand{\subparagraphformat}{\thesubparagraph\autodot\enskip}}{}%
- }{%
- \def\@seccntformat##1{\csname the##1\endcsname\quad}% = LaTeX kernel
- }%
- \ifcyrillic@numerals\norussian@numbers\fi%
- \norussian@shorthands%
-}
-
-\def\blockextras@russian{%
- \russian@capsformat%
- \ifcyrillic@numerals\russian@numbers\fi%
- \ifrussian@babelshorthands\russian@shorthands\fi%
-}
-
-\def\inlineextras@russian{%
- \ifrussian@babelshorthands\russian@shorthands\fi%
-}
-
-%%% These lines taken from russianb.ldf, part of babel package.
-% make it optional?
-\def\sh {\mathop{\operator@font sh}\nolimits}
-\def\ch {\mathop{\operator@font ch}\nolimits}
-\def\tg {\mathop{\operator@font tg}\nolimits}
-\def\arctg {\mathop{\operator@font arctg}\nolimits}
-\def\arcctg{\mathop{\operator@font arcctg}\nolimits}
-\def\th {\mathop{\operator@font th}\nolimits}
-\def\ctg {\mathop{\operator@font ctg}\nolimits}
-\def\cth {\mathop{\operator@font cth}\nolimits}
-\def\cosec {\mathop{\operator@font cosec}\nolimits}
-\def\Prob {\mathop{\kern\z@\mathsf{P}}\nolimits}
-\def\Variance{\mathop{\kern\z@\mathsf{D}}\nolimits}
-\def\nod {\mathop{\mathrm{н.о.д.}}\nolimits}
-\def\nok {\mathop{\mathrm{н.о.к.}}\nolimits}
-\def\NOD {\mathop{\mathrm{НОД}}\nolimits}
-\def\NOK {\mathop{\mathrm{НОК}}\nolimits}
-\def\Proj {\mathop{\mathrm{Пр}}\nolimits}
-%\DeclareRobustCommand{\No}{№}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-russian.ldf>
-%<*gloss-sami.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-sami.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-sami.ldf}[polyglossia: module for sami]
-
-\PolyglossiaSetup{sami}{
- bcp47=se,
- babelname=samin,
- hyphennames={samin},
- hyphenmins={2,2},
- language={Northern Sami},
- langtag=NSM,
- fontsetup=true,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{sami}{se}
-
-% Babel and backwards compat. alias
-\setlanguagealias{sami}{samin}
-%\setlanguagealias[variant=northern]{sami}{samin}
-
-% TODO: Add other Sami varieties
-\def\sami@variant{northern}
-%\define@choicekey*+{sami}{variant}[\xpg@val\xpg@nr]{northern}[nothern]{%
-% \ifcase\xpg@nr\relax
-% % northern:
-% \def\sami@variant{samin}%
-% \SetLanguageKeys{sami}{language=Northern Sami,langtag=NSM}%
-% \xpg@fontsetup@latin{sami}%
-% \or
-% % other:
-% \def\sami@variant{}%
-% \SetLanguageKeys{sami}{language= Sami,langtag=}%
-% \xpg@fontsetup@latin{sami}%
-% \fi
-% \xpg@info{Option: sami, variant=\xpg@val}%
-%}{\xpg@warning{Unknown sami variant `#1'}}
-
-
-%\def\sami@language{%
-% \polyglossia@setup@language@patterns{\sami@variant}%
-%}%
-
-\def\captionssami@northern{%
- \def\refname{Čujuhusat}%
- \def\abstractname{Čoahkkáigeassu}%
- \def\bibname{Girjjálašvuohta}%
- \def\prefacename{Ovdasátni}%
- \def\chaptername{Kapihttal}%
- \def\appendixname{Čuovus}%
- \def\contentsname{Sisdoallu}%
- \def\listfigurename{Govvosat}%
- \def\listtablename{Tabeallat}%
- \def\indexname{Registtar}%
- \def\figurename{Govus}%
- \def\tablename{Tabealla}%
- \def\thepart{}%
- \def\partname{Oassi}%
- \def\pagename{Siidu}%
- \def\seename{geahča}%
- \def\alsoname{geahča maiddái}%
- \def\enclname{Mielddus}%
- \def\ccname{Kopia sáddejuvvon}%
- \def\headtoname{Vuostáiváldi}%
- \def\proofname{Duođaštus}%
- \def\glossaryname{Sátnelistu}%
-}
-
-\def\captionssami{%
- \csname captionssami@\sami@variant\endcsname%
-}
-
-\def\datesami@northern{%
- \def\today{\ifcase\month\or
- ođđajagemánu\or
- guovvamánu\or
- njukčamánu\or
- cuoŋománu\or
- miessemánu\or
- geassemánu\or
- suoidnemánu\or
- borgemánu\or
- čakčamánu\or
- golggotmánu\or
- skábmamánu\or
- juovlamánu\fi
- \space\number\day.~b.\space\number\year}%
-}
-
-\def\datesami{%
- \csname datesami@\sami@variant\endcsname%
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-sami.ldf>
-%<*gloss-samin.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-samin.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-samin.ldf}[polyglossia: module for samin]
-
-% We only provide this gloss for babel compatibility. Since samin is
-% a sami variety, we use 'sami' with variant 'northern' now.
-
-\xpg@load@master@language{sami}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-samin.ldf>
-%<*gloss-sanskrit.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-sanskrit.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-sanskrit.ldf}[polyglossia: module for sanskrit]
-\ifluatex
- \xpg@warning{Sanskrit is not supported with LuaTeX.\MessageBreak
-I will proceed with the compilation, but\MessageBreak
-the output is not guaranteed to be correct\MessageBreak
-and may look very wrong.}
-\fi
-
-\RequirePackage{devanagaridigits}
-
-\PolyglossiaSetup{sanskrit}{
- bcp47=sa-Deva,
- langtag=SAN,
- hyphennames={sanskrit,prakrit},
- hyphenmins={1,3},
- frenchspacing=true,
- fontsetup=false, % will be done below
- localnumeral=sanskritnumerals
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{sanskrit}{sa}
-\setlanguagealias*[script=Devanagari]{sanskrit}{sa-Deva}
-\setlanguagealias*[script=Malayalam]{sanskrit}{sa-Mlym}
-\setlanguagealias*[script=Telugu]{sanskrit}{sa-Telu}
-\setlanguagealias*[script=Bengali]{sanskrit}{sa-Beng}
-\setlanguagealias*[script=Kannada]{sanskrit}{sa-Knda}
-\setlanguagealias*[script=Gujarati]{sanskrit}{sa-Gujr}
-\setlanguagealias*[script=Latin]{sanskrit}{sa-Latn}
-
-\define@key{sanskrit}{Script}[Devanagari]{%
- \ifcsdef{fontsetup@sanskrit@#1}%
- {\csname fontsetup@sanskrit@#1\endcsname}%
- {\xpg@error{`#1' is not a valid script for Sanskrit}%
- }%
-}
-
-\define@key{sanskrit}{script}[Devanagari]{\setkeys{sanskrit}{Script=#1}}
-
-\def\fontsetup@sanskrit@Devanagari{%
- \SetLanguageKeys{sanskrit}{scripttag=deva,script=Devanagari,bcp47=sa-Deva}
- \xpg@fontsetup@nonlatin{sanskrit}}
-\def\fontsetup@sanskrit@Gujarati{%
- \SetLanguageKeys{sanskrit}{scripttag=gujr,script=Gujarati,bcp47=sa-Gujr}
- \xpg@fontsetup@nonlatin{sanskrit}}
-\def\fontsetup@sanskrit@Malayalam{%
- \SetLanguageKeys{sanskrit}{scripttag=mlym,script=Malayalam,bcp47=sa-Mlym}
- \xpg@fontsetup@nonlatin{sanskrit}}
-\def\fontsetup@sanskrit@Bengali{%
- \SetLanguageKeys{sanskrit}{scripttag=beng,script=Bengali,bcp47=sa-Beng}
- \xpg@fontsetup@nonlatin{sanskrit}}
-\def\fontsetup@sanskrit@Kannada{%
- \SetLanguageKeys{sanskrit}{scripttag=knda,script=Kannada,bcp47=sa-Knda}
- \xpg@fontsetup@nonlatin{sanskrit}}
-\def\fontsetup@sanskrit@Telugu{%
- \SetLanguageKeys{sanskrit}{scripttag=telu,script=Telugu,bcp47=sa-Relu}
- \xpg@fontsetup@nonlatin{sanskrit}}
-\def\fontsetup@sanskrit@Latin{%
- \SetLanguageKeys{sanskrit}{scripttag=latn,script=Latin,bcp47=sa-Latn}
- \xpg@fontsetup@latin{sanskrit}}
-
-
-\newif\ifsanskrit@devanagari@numerals
-\sanskrit@devanagari@numeralstrue
-\define@choicekey*+{sanskrit}{numerals}[\xpg@val\xpg@nr]{Devanagari,Western}[Devanagari]{%
- \ifcase\xpg@nr\relax
- % Devanagari:
- \sanskrit@devanagari@numeralstrue%
- \or
- % Western:
- \sanskrit@devanagari@numeralsfalse%
- \fi
- \xpg@info{Option: Sanskrit, numerals=\xpg@val}%
-}{\xpg@warning{Unknown Sanskrit numeral `#1'}}
-
-
-% Register default options
-\xpg@initialize@gloss@options{sanskrit}{script=Devanagari,numerals=Devanagari}
-
-
-\newcommand{\sanskritnumerals}[2]{\sanskritnumber{#2}}
-
-\def\sanskritnumber#1{%
- \ifsanskrit@devanagari@numerals
- \devanagaridigits{\number#1}%
- \else
- \number#1%
- \fi%
-}
-
-\ifluatex
- \directlua{require('polyglossia-sanskrit')}%
-\else
- \newXeTeXintercharclass\sanskrit@questionexclamation % ! ? ‼ ⁇ ⁈ ⁉ ‽
- \newXeTeXintercharclass\sanskrit@punctthin % : ; danda double_danda
-\fi
-
-\def\sanskrit@punctthinspace{{\unskip\thinspace}}
-
-\def\sanskrit@punctuation{%
- \ifluatex
- \directlua{polyglossia.activate_sanskrit_punct()}%
- \else
- \XeTeXinterchartokenstate=1%
- \XeTeXcharclass `\! \sanskrit@questionexclamation
- \XeTeXcharclass `\? \sanskrit@questionexclamation
- \XeTeXcharclass `\‼ \sanskrit@questionexclamation
- \XeTeXcharclass `\⁇ \sanskrit@questionexclamation
- \XeTeXcharclass `\⁈ \sanskrit@questionexclamation
- \XeTeXcharclass `\⁉ \sanskrit@questionexclamation
- \XeTeXcharclass `\‽ \sanskrit@questionexclamation % interrobang, U+203D
- \XeTeXcharclass `\: \sanskrit@punctthin
- \XeTeXcharclass `\; \sanskrit@punctthin
- \XeTeXcharclass `\। \sanskrit@punctthin % danda, U+0964
- \XeTeXcharclass `\॥ \sanskrit@punctthin % double danda, U+0965
- \XeTeXinterchartoks \z@ \sanskrit@questionexclamation = \sanskrit@punctthinspace
- \XeTeXinterchartoks \z@ \sanskrit@punctthin = \sanskrit@punctthinspace
- \XeTeXinterchartoks \sanskrit@questionexclamation \sanskrit@punctthin = \sanskrit@punctthinspace
- \fi
-}
-
-\def\nosanskrit@punctuation{%
- \ifluatex
- \directlua{polyglossia.deactivate_sanskrit_punct()}%
- \else
- \XeTeXcharclass `\! \z@
- \XeTeXcharclass `\? \z@
- \XeTeXcharclass `\‼ \z@
- \XeTeXcharclass `\⁇ \z@
- \XeTeXcharclass `\⁈ \z@
- \XeTeXcharclass `\⁉ \z@
- \XeTeXcharclass `\‽ \z@
- \XeTeXcharclass `\: \z@
- \XeTeXcharclass `\; \z@
- \XeTeXcharclass `\। \z@
- \XeTeXcharclass `\॥ \z@
- \XeTeXinterchartokenstate=0%
- \fi
-}
-
-\def\noextras@sanskrit{%
- \nosanskrit@punctuation%
-}
-
-\def\blockextras@sanskrit{%
- \sanskrit@punctuation%
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-sanskrit.ldf>
-%<*gloss-scottish.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-scottish.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-scottish.ldf}[polyglossia: module for scottish]
-
-% We only provide this gloss for babel compatibility. Since scottish is
-% a gaelic variety, we use 'gaelic' with variant 'scottish' now.
-
-\xpg@load@master@language{gaelic}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-scottish.ldf>
-%<*gloss-serbian.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-serbian.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-serbian.ldf}[polyglossia: module for serbian]
-%TODO split into gloss-serbiancyr.ldf and gloss-serbianlat.ldf
-%% load these automatically from polyglossia.sty according to the script option ??
-%% same thing for all languages that have a "script" key !
-%% BETTER APPROACH: see gloss-sanskrit!
-
-\RequirePackage{xpg-cyrillicnumbers}
-
-\PolyglossiaSetup{serbian}{
- bcp47=sr-Latn,
- langtag=SRB,
- hyphennames={serbian},
- hyphenmins={2,2},
- indentfirst=true,
- fontsetup=false,
- localnumeral=serbiannumerals,
- Localnumeral=Serbiannumerals
- %TODO localalph
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{serbian}{sr}
-\setlanguagealias*[script=Cyrillic]{serbian}{sr-Cyrl}
-\setlanguagealias*[script=Latin]{serbian}{sr-Latn}
-
-% Babel aliases
-\setlanguagealias[script=Cyrillic]{serbian}{serbianc}
-
-\newif\if@serbian@cyr
-\define@choicekey*+{serbian}{Script}[\xpg@val\xpg@nr]{cyrillic,latin}[cyrillic]{%
- \ifcase\xpg@nr\relax
- % cyrillic:
- \@serbian@cyrtrue
- \SetLanguageKeys{serbian}{scripttag=cyrl,script=Cyrillic,babelname=serbianc,bcp47=sr-Cyrl}
- \xpg@fontsetup@nonlatin{serbian}%
- \or
- % latin:
- \@serbian@cyrfalse
- \SetLanguageKeys{serbian}{scripttag=latn,script=Latin,bcp47=sr-Latn}
- \xpg@fontsetup@latin{serbian}%
- %TODO \def\serbian@language{\language=\l@serbianlat}%
- % or should we use Croatian patterns as a fallback for the time being???
- \fi
- \xpg@info{Option: Serbian, script=\xpg@val}%
-}{\xpg@warning{Unknown Serbian script `#1'}}
-
-\define@key{serbian}{script}[Cyrillic]{\setkeys{serbian}{Script=#1}}
-
-\newif\ifcyrillic@numerals
-\newif\ifcyrillic@asbuk@numerals
-\define@choicekey*+{serbian}{numerals}[\xpg@val\xpg@nr]{arabic,cyrillic,cyrillic-trad,cyrillic-alph}[arabic]{%
- \ifcase\xpg@nr\relax
- % arabic:
- \cyrillic@numeralsfalse%
- \cyrillic@asbuk@numeralsfalse%
- \or
- % cyrillic:
- \cyrillic@numeralstrue%
- \cyrillic@asbuk@numeralsfalse%
- \or
- % cyrillic-trad:
- \cyrillic@numeralstrue%
- \cyrillic@asbuk@numeralsfalse%
- \or
- % cyrillic-alph:
- \cyrillic@numeralstrue%
- \cyrillic@asbuk@numeralstrue%
- \fi
- \xpg@info{Option: Serbian, numerals=\xpg@val}%
-}{\xpg@warning{Unknown Serbian numerals value `#1'}}
-
-\setkeys{serbian}{Script,numerals}
-
-% Register default options
-\xpg@initialize@gloss@options{serbian}{script=Cyrillic,numerals=arabic}
-
-\def\captionsserbian{%
- \if@serbian@cyr\captionsserbian@cyr\else\captionsserbian@lat\fi
-}
-
-\def\dateserbian{%
- \if@serbian@cyr\dateserbian@cyr\else\dateserbian@lat\fi
-}
-
-\def\captionsserbian@lat{%
- \def\refname{Bibliografija}%
- \def\abstractname{Sažetak}%
- \def\bibname{Literatura}%
- \def\prefacename{Predgovor}%
- \def\chaptername{Glava}%
- \def\appendixname{Dodatak}%
- \def\contentsname{Sadržaj}%
- \def\listfigurename{Spisak slika}%
- \def\listtablename{Spisak tabela}%
- \def\indexname{Registar}%
- \def\figurename{Slika}%
- \def\tablename{Tabela}%
- \def\partname{Deo}%
- \renewcommand\thepart{\ifcase\value{part}\or Prvi\or Drugi\or
- Treći\or Čevrti\or Peti\or Šesti\or Sedmi\or Osmi\or
- Deveti\or Deseti\or Jedanaesti\or Dvanaesti\or Trinaesti\or
- Četrnaesti\or Petnaesti\or Šesnaesti\or Sedamnaesti\or
- Osamnaesti\or Devetnaesti\or Dvadeseti\fi}%
- \def\pagename{Strana}%
- \def\seename{Vidi}%
- \def\alsoname{Vidi takođe}%
- \def\enclname{Prilozi}%
- \def\ccname{Kopije}%
- \def\headtoname{Prima}%
- \def\proofname{Dokaz}%
- \def\glossaryname{Rečnik nepoznatih reči}%
-}
-
-\def\dateserbian@lat{%
- \def\today{\number\day .~\ifcase\month\or
- januar\or februar\or mart\or april\or maj\or
- jun\or jul\or avgust\or septembar\or oktobar\or novembar\or
- decembar\fi \space \number\year.}%
-}
-
-\def\captionsserbian@cyr{%
- \def\refname{Библиографија}%
- \def\abstractname{Сажетак}%
- \def\bibname{Литература}%
- \def\prefacename{Предговор}%
- \def\chaptername{Глава}%
- \def\appendixname{Додатак}%
- \def\contentsname{Садржај}%
- \def\listfigurename{Списак слика}%
- \def\listtablename{Списак табела}%
- \def\indexname{Регистар}%
- \def\figurename{Слика}%
- \def\tablename{Табела}%
- \def\partname{Део}%
- \renewcommand\thepart{\ifcase\value{part}\or Први\or Други\or Трећи\or
- Четврти\or Пети\or Шести\or Седми\or Осми\or Девети\or Десети\or
- Једанаести\or Дванаести\or Тринаести\or Четрнаести\or Петнаести\or
- Шеснаести\or Седамнаести\or Осамнаести\or Деветнаести\or Двадесети\fi}%
- \def\pagename{Страна}%
- \def\seename{Види}%
- \def\alsoname{Види такође}%
- \def\enclname{Прилози}%
- \def\ccname{Копије}%
- \def\headtoname{Прима}%
- \def\proofname{Доказ}%
- \def\glossaryname{Речник непознатих речи}%
-}
-
-\def\dateserbian@cyr{%
- \def\today{\number\day .~\ifcase\month\or
- јануар\or фебруар\or март\or април\or мај\or
- јун\or јул\or август\or септембар\or октобар\or новембар\or
- децембар\fi \space \number\year.}%
-}
-
-
-\newcommand{\serbiannumerals}[2]{\serbiannumber{#2}}
-\newcommand{\Serbiannumerals}[2]{\Serbiannumber{#2}}
-
-\def\serbiannumber#1{%
- \ifcyrillic@numerals
- \ifcyrillic@asbuk@numerals
- \serbian@asbuk@alph{#1}%
- \else
- \cyr@alph{#1}%
- \fi
- \else
- \number#1%
- \fi%
-}
-
-\def\Serbiannumber#1{%
- \ifcyrillic@numerals
- \ifcyrillic@asbuk@numerals
- \serbian@asbuk@Alph{#1}%
- \else
- \cyr@Alph{#1}%
- \fi
- \else
- \number#1%
- \fi%
-}
-
-\let\serbiannumeral=\serbiannumber
-\let\Serbiannumeral=\Serbiannumber
-
-\def\serbian@numbers{%
- \let\latin@alph\@alph
- \let\latin@Alph\@Alph
- \ifcyrillic@numerals
- \def\serbian@alph##1{\expandafter\serbiannumeral\expandafter{\the##1}}%
- \def\serbian@Alph##1{\expandafter\Serbiannumeral\expandafter{\the##1}}%
- \let\@alph\serbian@alph%
- \let\@Alph\serbian@Alph%
- \fi
-}
-
-\def\noserbian@numbers{%
- \let\@alph\latin@alph
- \let\@Alph\latin@Alph
-}
-
-\def\blockextras@serbian{%
- \ifcyrillic@numerals\serbian@numbers\fi
-}
-
-\def\noextras@serbian{%
- \ifcyrillic@numerals\noserbian@numbers\fi
-}
-
-\def\Asbuk#1{\expandafter\serbian@asbuk@Alph\csname c@#1\endcsname}
-\def\asbuk#1{\expandafter\serbian@asbuk@alph\csname c@#1\endcsname}
-
-\def\AsbukTrad#1{\expandafter\cyr@Alph\csname c@#1\endcsname}
-\def\asbukTrad#1{\expandafter\cyr@alph\csname c@#1\endcsname}
-
-% This is a poor man's cyrillic alphanumeric. It just uses the alphabet and
-% thus ends at 30.
-\def\serbian@asbuk@Alph#1{\ifcase#1\or
- А\or Б\or В\or Г\or Д\or Е\or Ж\or
- З\or И\or К\or Л\or М\or Н\or О\or
- П\or Р\or С\or Т\or У\or Ф\or Х\or
- Ц\or Ч\or Ш\or Щ\or Э\or Ю\or Я%
- \else\xpg@ill@value{#1}{serbian@asbuk@Alph}\fi%
-}
-
-\def\serbian@asbuk@alph#1{\ifcase#1\or
- а\or б\or в\or г\or д\or е\or ж\or
- з\or и\or к\or л\or м\or н\or о\or
- п\or р\or с\or т\or у\or ф\or х\or
- ц\or ч\or ш\or щ\or э\or ю\or я%
- \else\xpg@ill@value{#1}{serbian@asbuk@alph}\fi%
-}
-
-
-% \end{macrocode}
-% \iffalse
-%</gloss-serbian.ldf>
-%<*gloss-serbianc.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-serbianc.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-serbianc.ldf}[polyglossia: module for serbian (cyrillic)]
-
-% We provide this as a babel alias
-
-\xpg@load@master@language{serbian}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-serbianc.ldf>
-%<*gloss-slovak.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-slovak.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-slovak.ldf}[polyglossia: module for slovak]
-
-\PolyglossiaSetup{slovak}{
- bcp47=sk,
- hyphennames={slovak},
- hyphenmins={2,2},
- langtag=SKY,
- fontsetup=true,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{slovak}{sk}
-
-\ifluatex
- \RequirePackage{luavlna}
-\fi
-
-\define@boolkey{slovak}[slovak@]{babelshorthands}[true]{}
-
-\define@boolkey{slovak}[slovak@]{splithyphens}[true]{}
-
-\define@boolkey{slovak}[slovak@]{vlna}[true]{}
-
-% Register default options
-\xpg@initialize@gloss@options{slovak}{babelshorthands=false,splithyphens=true,vlna=true}
-
-\ifsystem@babelshorthands
- \setkeys{slovak}{babelshorthands=true}
-\else
- \setkeys{slovak}{babelshorthands=false}
-\fi
-
-\ifcsundef{initiate@active@char}{%
- \input{babelsh.def}%
- \initiate@active@char{"}%
- \shorthandoff{"}%
-}{}
-
-\def\slovak@@splhyphen#1{%
- \ifnum\hyphenchar \font>0%
- \kern\z@\discretionary{-}{\char\hyphenchar\the\font}{#1}%
- \nobreak\hskip\z@%
- \else%
- #1%
- \fi%
-}
-
-\def\slovak@splhyphen{%
- \slovak@@splhyphen{-}%
-}
-
-\def\slovak@shorthands{%
- \bbl@activate{"}%
- \def\language@group{slovak}%
- \declare@shorthand{slovak}{"=}{\slovak@splhyphen}%
- \declare@shorthand{slovak}{""}{\hskip\z@skip}%
- \declare@shorthand{slovak}{"~}{\textormath{\leavevmode\hbox{-}}{-}}%
- \declare@shorthand{slovak}{"-}{\nobreak\-\bbl@allowhyphens}%
- \declare@shorthand{slovak}{"|}{%
- \textormath{\penalty\@M\discretionary{-}{}{\kern.03em}%
- \bbl@allowhyphens}{}%
- }%
- \declare@shorthand{slovak}{"/}{\textormath
- {\bbl@allowhyphens\discretionary{/}{}{/}\bbl@allowhyphens}{}}%
- \declare@shorthand{slovak}{"`}{„}%
- \declare@shorthand{slovak}{"'}{“}%
- \declare@shorthand{slovak}{"<}{«}%
- \declare@shorthand{slovak}{">}{»}%
-}
-
-\def\noslovak@shorthands{%
- \@ifundefined{initiate@active@char}{}{\bbl@deactivate{"}}%
-}
-
-\ifxetex
- % splithyphens
- \newXeTeXintercharclass\slovak@hyphen % -
- % vlna
- \newXeTeXintercharclass\slovak@openpunctuation
- \newXeTeXintercharclass\slovak@nonsyllabicpreposition
- \ifdefined\e@alloc@intercharclass@top
- \chardef\slovak@boundary=\e@alloc@intercharclass@top
- \else
- \ifdefined\XeTeXinterwordspaceshaping
- \chardef\slovak@boundary=4095 %
- \def\newXeTeXintercharclass{%
- \e@alloc\XeTeXcharclass\chardef
- \xe@alloc@intercharclass\m@ne\@ucharclass@boundary}
- \else
- \chardef\slovak@boundary=255
- \fi
- \fi
-\fi
-
-\def\slovak@hyphens{%
- \ifluatex
- \AfterPreamble{\enablesplithyphens{slovak}}%
- \else
- \XeTeXinterchartokenstate=1
- \XeTeXcharclass `\- \slovak@hyphen
- \XeTeXinterchartoks \z@ \slovak@hyphen = {\slovak@@splhyphen}% "-" -> "\slovak@@splhyphen-"
- % necessary if used together with vlna:
- \XeTeXinterchartoks \slovak@nonsyllabicpreposition \slovak@hyphen = {\slovak@@splhyphen}% "-" -> "\slovak@@splhyphen-"
- \fi%
-}
-
-\def\noslovak@hyphens{%
- \ifluatex
- \AfterPreamble{\disablesplithyphens{slovak}}%
- \else
- \XeTeXcharclass `\- \z@
- \fi%
-}
-
-% Add nonbreakable space after single-letter word to
-% prevent them to land at the end of a line
-\def\slovak@vlna{%
- \ifluatex
- \preventsingleon
- \else
- % Code taken and adapted from xevlna.sty
- \XeTeXinterchartokenstate=1
- \XeTeXcharclass `\( \slovak@openpunctuation
- \XeTeXcharclass `\[ \slovak@openpunctuation
- \XeTeXcharclass `\„ \slovak@openpunctuation
- \XeTeXcharclass `\» \slovak@openpunctuation
- \XeTeXcharclass `\K \slovak@nonsyllabicpreposition
- \XeTeXcharclass `\k \slovak@nonsyllabicpreposition
- \XeTeXcharclass `\S \slovak@nonsyllabicpreposition
- \XeTeXcharclass `\s \slovak@nonsyllabicpreposition
- \XeTeXcharclass `\V \slovak@nonsyllabicpreposition
- \XeTeXcharclass `\v \slovak@nonsyllabicpreposition
- \XeTeXcharclass `\Z \slovak@nonsyllabicpreposition
- \XeTeXcharclass `\z \slovak@nonsyllabicpreposition
- \XeTeXcharclass `\O \slovak@nonsyllabicpreposition
- \XeTeXcharclass `\o \slovak@nonsyllabicpreposition
- \XeTeXcharclass `\U \slovak@nonsyllabicpreposition
- \XeTeXcharclass `\u \slovak@nonsyllabicpreposition
- \XeTeXcharclass `\A \slovak@nonsyllabicpreposition
- \XeTeXcharclass `\a \slovak@nonsyllabicpreposition
- \XeTeXcharclass `\I \slovak@nonsyllabicpreposition
- \XeTeXcharclass `\i \slovak@nonsyllabicpreposition
- \XeTeXinterchartoks \slovak@boundary \slovak@nonsyllabicpreposition {\slovak@interchartoks}
- \XeTeXinterchartoks \slovak@openpunctuation \slovak@nonsyllabicpreposition {\slovak@interchartoks}
- \def\slovak@nointerchartoks{\let\slovak@interchartoks\slovak@PreCSpreposition}
- \def\slovak@PreCSpreposition{\def\next{}%
- \ifnum\catcode`\ =10 % nothing will be done in verbatim
- \ifmmode % nothing in math
- \else
- \let\slovak@interchartoks\slovak@nointerchartoks
- \let\next\slovak@ExamineCSpreposition
- \fi \fi
- \next%
- }
- \def\slovak@ExamineCSpreposition ##1{##1\futurelet\next\slovak@ProcessCSpreposition}
- \def\slovak@ProcessCSpreposition{\ifx\next\slovak@XeTeXspace\nobreak\fi}
- \futurelet\slovak@XeTeXspace{ }\slovak@nointerchartoks
- \fi
-}
-
-\def\noslovak@vlna{%
- \ifluatex
- \preventsingleoff
- \else
- \XeTeXcharclass`\(\z@
- \XeTeXcharclass`\[\z@
- \XeTeXcharclass`\„\z@
- \XeTeXcharclass`\»\z@
- \XeTeXcharclass`\K\z@
- \XeTeXcharclass`\k\z@
- \XeTeXcharclass`\S\z@
- \XeTeXcharclass`\s\z@
- \XeTeXcharclass`\V\z@
- \XeTeXcharclass`\v\z@
- \XeTeXcharclass`\Z\z@
- \XeTeXcharclass`\z\z@
- \XeTeXcharclass`\O\z@
- \XeTeXcharclass`\o\z@
- \XeTeXcharclass`\U\z@
- \XeTeXcharclass`\u\z@
- \XeTeXcharclass`\A\z@
- \XeTeXcharclass`\a\z@
- \XeTeXcharclass`\I\z@
- \XeTeXcharclass`\i\z@
- \fi
-}
-
-
-\def\captionsslovak{%
- \def\refname{Referencie}%
- \def\abstractname{Abstrakt}%
- \def\bibname{Literatúra}%
- \def\prefacename{Úvod}%
- \def\chaptername{Kapitola}%
- \def\appendixname{Dodatok}%
- \def\contentsname{Obsah}%
- \def\listfigurename{Zoznam obrázkov}%
- \def\listtablename{Zoznam tabuliek}%
- \def\indexname{Index}%
- \def\figurename{Obrázok}%
- \def\tablename{Tabuľka}%
- %\def\thepart{}%
- \def\partname{Časť}%
- \def\pagename{Strana}%
- \def\seename{viď}%
- \def\alsoname{viď tiež}%
- \def\enclname{Prílohy}%
- \def\ccname{cc.}%
- \def\headtoname{Pre}% was komu
- \def\proofname{Dôkaz}%
- \def\glossaryname{Slovník}%
-}
-
-\def\dateslovak{%
- \def\today{\number\day.~\ifcase\month\or
- januára\or februára\or marca\or apríla\or mája\or
- júna\or júla\or augusta\or septembra\or októbra\or
- novembra\or decembra\fi
- \space \number\year}%
-}
-
-\def\noextras@slovak{%
- \noslovak@shorthands%
- \noslovak@hyphens%
- \noslovak@vlna%
- \ifxetex\XeTeXinterchartokenstate=0\fi%
-}
-
-\def\blockextras@slovak{%
- \ifslovak@babelshorthands\slovak@shorthands\fi%
- \ifslovak@vlna\slovak@vlna\else\noslovak@vlna\fi%
- \ifslovak@splithyphens\slovak@hyphens\else\noslovak@hyphens\fi%
-}
-
-\def\inlineextras@slovak{%
- \ifslovak@babelshorthands\slovak@shorthands\fi%
- \ifslovak@vlna\slovak@vlna\else\noslovak@vlna\fi%
- \ifslovak@splithyphens\slovak@hyphens\else\noslovak@hyphens\fi%
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-slovak.ldf>
-%<*gloss-slovene.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-slovene.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-slovene.ldf}[polyglossia: module for slovenian]
-
-% We provide this as a babel alias
-
-\xpg@load@master@language{slovenian}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-slovene.ldf>
-%<*gloss-slovenian.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-slovenian.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-slovenian.ldf}[polyglossia: module for slovenian]
-
-\PolyglossiaSetup{slovenian}{
- bcp47=sl,
- hyphennames={slovenian,slovene},
- babelname=slovene,
- hyphenmins={2,2},
- langtag=SLV,
- fontsetup=true,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{slovenian}{sl}
-
-% Babel aliases
-\setlanguagealias{slovenian}{slovene}
-
-\define@boolkey{slovenian}[slovenian@]{localalph}[true]{}
-
-% Register default options
-\xpg@initialize@gloss@options{slovenian}{localalph=false}
-
-
-\def\captionsslovenian{%
- \def\refname{Literatura}%
- \def\abstractname{Povzetek}%
- \def\bibname{Literatura}%
- \def\prefacename{Predgovor}%
- \def\chaptername{Poglavje}%
- \def\appendixname{Dodatek}%
- \def\contentsname{Kazalo}%
- \def\listfigurename{Slike}%
- \def\listtablename{Tabele}%
- \def\indexname{Stvarno kazalo}%
- \def\figurename{Slika}%
- \def\tablename{Tabela}%
- %\def\thepart{}%
- \def\partname{Del}%
- \def\pagename{Stran}%
- \def\seename{glej}%
- \def\alsoname{glej tudi}%
- \def\enclname{Priloge}%
- \def\ccname{Kopije}%
- \def\headtoname{Prejme}%
- \def\proofname{Dokaz}%
- \def\glossaryname{Slovar}%
-}
-
-\def\dateslovenian{%
- \def\today{\number\day.~\ifcase\month\or
- januar\or februar\or marec\or april\or maj\or junij\or
- julij\or avgust\or september\or oktober\or november\or december\fi
- \space \number\year}%
-}
-
-\def\slovenian@alph#1{%
- \ifcase#1\or a\or b\or c\or č\or d\or e\or f\or g\or h\or i\or j\or k\or l\or
- m\or n\or o\or p\or r\or s\or š\or t\or u\or v\or z\or ž\else#1\fi
-}
-\def\slovenian@Alph#1{%
- \ifcase#1\or A\or B\or C\or Č\or D\or E\or F\or G\or H\or I\or J\or K\or L\or
- M\or N\or O\or P\or R\or S\or Š\or T\or U\or V\or Z\or Ž\else#1\fi
-}
-
-\def\abeceda#1{\expandafter\slovenian@alph\csname c@#1\endcsname}
-\def\Abeceda#1{\expandafter\slovenian@Alph\csname c@#1\endcsname}
-
-\def\extras@slovenian{%
- \ifslovenian@localalph\let\alph\abeceda\let\Alph\Abeceda\fi%
-}
-
-\def\blockextras@slovenian{\extras@slovenian}
-
-\def\inlineextras@slovenian{\extras@slovenian}
-
-\def\noextras@slovenian{\let\alph\latinalph\let\Alph\latinAlph}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-slovenian.ldf>
-%<*gloss-sorbian.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-sorbian.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-sorbian.ldf}[polyglossia: module for sorbian]
-
-\PolyglossiaSetup{sorbian}{
- bcp47=hsb,
- language=Upper Sorbian,
- babelname=uppersorbian,
- hyphennames={usorbian,uppersorbian},
- langtag=USB,
- hyphenmins={2,2},
- fontsetup=true,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*[variant=upper]{sorbian}{hsb}
-\setlanguagealias*[variant=lower]{sorbian}{dsb}
-% Backwards compat. aliases
-\setlanguagealias[variant=lower]{sorbian}{lsorbian}
-\setlanguagealias[variant=upper]{sorbian}{usorbian}
-
-% Babel aliases
-\setlanguagealias[variant=lower]{sorbian}{lowersorbian}
-\setlanguagealias[variant=upper]{sorbian}{uppersorbian}
-
-\def\sorbian@variant{usorbian}
-\define@choicekey*+{sorbian}{variant}[\xpg@val\xpg@nr]{upper,lower}[upper]{%
- \ifcase\xpg@nr\relax
- % upper:
- \def\sorbian@variant{usorbian}%
- \SetLanguageKeys{sorbian}{language=Upper Sorbian,langtag=USB,babelname=uppersorbian,bcp47=hsb}%
- \xpg@fontsetup@latin{sorbian}%
- % Check if \l@usorbian is defined. If not, try to set it to some variety
- % (specific order as in the csv list below), or null language if everything fails
- \xpg@ifdefined{usorbian}{}{%
- \def\do##1{%
- \xpg@ifdefined{##1}%
- {\csletcs{l@usorbian}{l@##1}\listbreak}%
- {}%
- }%
- \docsvlist{uppersorbian}
- \xpg@ifdefined{usorbian}{}{%
- \xpg@warning{No hyphenation patterns for Upper Sorbian found\MessageBreak
- I will use the 'null' language instead}%
- \adddialect\l@usorbian0%
- }
- }%
- \or
- % lower:
- \def\sorbian@variant{lsorbian}%
- \SetLanguageKeys{sorbian}{language=Lower Sorbian,langtag=LSB,babelname=lowersorbian,bcp47=dsb}%
- \xpg@fontsetup@latin{sorbian}%
- % Check if \l@lsorbian is defined. If not, try to set it to some variety
- % (specific order as in the csv list below), or null language if everything fails
- \xpg@ifdefined{lsorbian}{}{%
- \def\do##1{%
- \xpg@ifdefined{##1}%
- {\csletcs{l@lsorbian}{l@##1}\listbreak}%
- {}%
- }%
- \docsvlist{lowersorbian,Lsorbian,usorbian,uppersorbian}
- \xpg@ifdefined{lsorbian}{}{%
- \xpg@warning{No hyphenation patterns for Lower Sorbian found\MessageBreak
- I will use the 'null' language instead}%
- \adddialect\l@lsorbian0%
- }
- }%
- \fi
- \xpg@info{Option: sorbian, variant=\xpg@val}%
-}{\xpg@warning{Unknown sorbian variant `#1'}}
-
-
-\define@boolkey{sorbian}[sorbian@]{olddate}[true]{}
-
-% Register default options
-\xpg@initialize@gloss@options{sorbian}{variant=upper,olddate=false}
-
-
-\def\sorbian@language{%
- \polyglossia@setup@language@patterns{\sorbian@variant}%
-}%
-
-
-\def\captionssorbian@lsorbian{%
- \def\refname{Referency}%
- \def\abstractname{Abstrakt}%
- \def\bibname{Literatura}%
- \def\prefacename{Zawod}%
- \def\chaptername{Kapitl}%
- \def\appendixname{Dodawki}%
- \def\contentsname{Wopśimjeśe}%
- \def\listfigurename{Zapis wobrazow}%
- \def\listtablename{Zapis tabulkow}%
- \def\indexname{Indeks}%
- \def\figurename{Wobraz}%
- \def\tablename{Tabulka}%
- %\def\thepart{}%
- \def\partname{Źěl}%
- \def\pagename{Strona}%
- \def\seename{gl.}%
- \def\alsoname{gl.~teke}%
- \def\enclname{Pśiłoga}%
- \def\ccname{CC}%
- \def\headtoname{Komu}%
- \def\proofname{Proof}%
- \def\glossaryname{Glossary}%
-}
-
-\def\captionssorbian@usorbian{%
- \def\refname{Referency}%
- \def\abstractname{Abstrakt}%
- \def\bibname{Literatura}%
- \def\prefacename{Zawod}%
- \def\chaptername{Kapitl}%
- \def\appendixname{Dodawki}%
- \def\contentsname{Wobsah}%
- \def\listfigurename{Zapis wobrazow}%
- \def\listtablename{Zapis tabulkow}%
- \def\indexname{Indeks}%
- \def\figurename{Wobraz}%
- \def\tablename{Tabulka}%
- %\def\thepart{}%
- \def\partname{Dźěl}%
- \def\pagename{Strona}%
- \def\seename{hl.}%
- \def\alsoname{hl.~tež}%
- \def\enclname{Přłoha}%
- \def\ccname{CC}%
- \def\headtoname{Komu}%
- \def\proofname{Proof}% <-- needs translation
- \def\glossaryname{Glossary}% <-- needs translation
-}%
-
-\def\captionssorbian{%
- \csname captionssorbian@\sorbian@variant\endcsname%
-}
-
-\def\datesorbian@lsorbian{%
- \def\oldtoday{%
- \number\day.~\ifcase\month\or
- wjelikego rožka\or małego rožka\or nalětnika\or
- jatšownika\or rožownika\or smažnika\or pražnika\or
- žnjeńca\or požnjeńca\or winowca\or nazymnika\or
- godownika\fi\space \number\year}%
- \def\today{%
- \ifsorbian@olddate
- \oldtoday%
- \else
- \number\day.~\ifcase\month\or
- januara\or februara\or měrca\or apryla\or maja\or
- junija\or julija\or awgusta\or septembra\or oktobra\or
- nowembra\or decembra\fi
- \space \number\year%
- \fi
- }%
-}
-
-\def\datesorbian@usorbian{%
- \def\oldtoday{\number\day.~\ifcase\month\or
- wulkeho róžka\or małeho róžka\or nalětnika\or
- jutrownika\or róžownika\or smažnika\or pražnika\or
- žnjenca\or požnjenca\or winowca\or nazymnika\or
- hodownika\fi \space \number\year}%
- \def\today{%
- \ifsorbian@olddate
- \oldtoday%
- \else
- \number\day.~\ifcase\month\or
- januara\or februara\or měrca\or apryla\or meje\or junija\or
- julija\or awgusta\or septembra\or oktobra\or
- nowembra\or decembra\fi
- \space \number\year%
- \fi
- }%
-}
-
-\def\datesorbian{%
- \csname datesorbian@\sorbian@variant\endcsname%
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-sorbian.ldf>
-%<*gloss-spanish.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-spanish.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-spanish.ldf}[polyglossia: module for spanish]
-
-\PolyglossiaSetup{spanish}{
- bcp47=es-ES,
- hyphennames={spanish},
- hyphenmins={2,2},
- totalhyphenmin=5,
- langtag=ESP,
- frenchspacing=true,
- indentfirst=true,
- fontsetup=true,
- babelname=spanish
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{spanish}{es}
-\setlanguagealias*[variant=mexican]{spanish}{es-MX}
-\setlanguagealias*[variant=spanish]{spanish}{es-ES}
-
-% Babel aliases
-\setlanguagealias[variant=mexican]{spanish}{spanishmx}
-
-\newif\if@spanish@mexico
-\@spanish@mexicofalse
-\define@choicekey*+{spanish}{variant}[\xpg@val\xpg@nr]{spanish,mexican}[spanish]{%
- \ifcase\xpg@nr\relax
- % spanish:
- \@spanish@mexicofalse%
- \SetLanguageKeys{spanish}{babelname=spanish,bcp47=es-ES}%
- \or
- % mexican:
- \@spanish@mexicotrue%
- \SetLanguageKeys{spanish}{babelname=spanishmx,bcp47=es-MX}%
- \fi
- \xpg@info{Option: spanish, variant=\xpg@val}%
-}{\xpg@warning{Unknown spanish variant `#1'}}
-
-% Localized math operators à la babel
-\newif\ifspanish@accentedoperators
-\newif\ifspanish@spacedoperators
-\newif\ifspanish@locoperators
-
-\define@choicekey*+{spanish}{spanishoperators}[\xpg@val\xpg@nr]{all,accented,spaced,none}[all]{%
- \ifcase\xpg@nr\relax
- % all:
- \spanish@locoperatorstrue%
- \spanish@accentedoperatorstrue%
- \spanish@spacedoperatorstrue%
- \or
- % accented:
- \spanish@locoperatorsfalse%
- \spanish@accentedoperatorstrue%
- \spanish@spacedoperatorsfalse%
- \or
- % spaced:
- \spanish@locoperatorsfalse%
- \spanish@accentedoperatorsfalse%
- \spanish@spacedoperatorstrue%
- \or
- % none:
- \spanish@locoperatorsfalse%
- \spanish@accentedoperatorsfalse%
- \spanish@spacedoperatorsfalse%
- \fi
- \xpg@info{Option: Spanish, spanishoperators=\xpg@val}%
-}{\xpg@warning{Unknown spanishoperators value `#1'}}
-
-
-% Register default options
-\xpg@initialize@gloss@options{spanish}{variant=spanish,spanishoperators=none}
-
-\let\xpg@save@lim\lim
-\let\xpg@save@limsup\limsup
-\let\xpg@save@liminf\liminf
-\let\xpg@save@max\max
-\let\xpg@save@min\min
-\let\xpg@save@inf\inf
-\let\xpg@save@bmod\bmod
-\let\xpg@save@pmod\pmod
-
-\def\spanish@accentedoperators{%
- \DeclareRobustCommand\lim{\mathop{\operator@font lím}}%
- \DeclareRobustCommand\limsup{\mathop{\operator@font lím\,sup}}%
- \DeclareRobustCommand\liminf{\mathop{\operator@font lím\,inf}}%
- \DeclareRobustCommand\max{\mathop{\operator@font máx}}%
- \DeclareRobustCommand\min{\mathop{\operator@font mín}}%
- \DeclareRobustCommand\inf{\mathop{\operator@font ínf}}%
- \DeclareRobustCommand\bmod{%
- \nonscript\mskip-\medmuskip\mkern5mu%
- \mathbin{\operator@font mód}\penalty900\mkern5mu%
- \nonscript\mskip-\medmuskip}%
- \@ifundefined{@amsmath@err}%
- {\DeclareRobustCommand\pmod[1]{%
- \allowbreak\mkern18mu({\operator@font mód}\,\,##1)}}%
- {\let\xpg@save@mod\mod
- \DeclareRobustCommand\mod[1]{\allowbreak\if@display\mkern18mu
- \else\mkern12mu\fi{\operator@font mód}\,\,##1}%
- \DeclareRobustCommand\pmod[1]{\pod{{\operator@font mód}%
- \mkern6mu##1}}}%
-}
-
-\def\nospanish@accentedoperators{%
- \let\lim\xpg@save@lim%
- \let\limsup\xpg@save@limsup%
- \let\liminf\xpg@save@liminf%
- \let\max\xpg@save@max%
- \let\min\xpg@save@min%
- \let\inf\xpg@save@inf%
- \let\bmod\xpg@save@bmod%
- \let\pmod\xpg@save@pmod%
- \@ifundefined{@amsmath@err}{}{\let\mod\xpg@save@mod}%
-}
-
-\let\xpg@save@arccos\arccos
-\let\xpg@save@arcsin\arcsin
-\let\xpg@save@arctan\arctan
-\let\arcsen\arcsin
-\let\arctg\arctan
-
-
-\def\spanish@spacedoperators{%
- \DeclareRobustCommand\arccos{\mathop{\operator@font arc\,cos}\nolimits}%
- \DeclareRobustCommand\arcsin{\mathop{\operator@font arc\,sen}\nolimits}%
- \DeclareRobustCommand\arctan{\mathop{\operator@font arc\,tg}\nolimits}%
-}
-
-\def\nospanish@spacedoperators{%
- \let\arccos\xpg@save@arccos%
- \let\arcsen\arcsin%
- \let\arctg\arctan%
-}
-
-
-\let\xpg@save@sin\sin
-\let\xpg@save@tan\tan
-\let\xpg@save@sinh\sinh
-\let\xpg@save@tanh\tanh
-\let\sen\sin
-\let\tg\tan
-\let\senh\sinh
-\let\tgh\tanh
-
-\def\spanish@locoperators{%
- \DeclareRobustCommand\sin{\mathop{\operator@font sen}\nolimits}%
- \DeclareRobustCommand\tan{\mathop{\operator@font tg}\nolimits}%
- \DeclareRobustCommand\sinh{\mathop{\operator@font senh}\nolimits}%
- \DeclareRobustCommand\tanh{\mathop{\operator@font tgh}\nolimits}%
-}
-
-\def\nospanish@locoperators{%
- \let\sen\xpg@save@sin%
- \let\tg\xpg@save@tan%
- \let\sinh\xpg@save@sinh%
- \let\tanh\xpg@save@tanh%
- \let\sen\relax%
- \let\tg\relax%
- \let\senh\relax%
- \let\tgh\relax%
-}
-
-\newcommand*\spanishoperator[2][]{%
- \ifx#1\\\\
- \protected@csxdef{#2}{\mathop{\operator@font #2}\nolimits}%
- \else
- \protected@csxdef{#2}{\mathop{\operator@font #1}\nolimits}%
- \fi
-}
-
-\def\captionsspanish{%
- \def\prefacename{Prefacio}%
- \def\refname{Referencias}%
- \def\abstractname{Resumen}%
- \def\bibname{Bibliografía}%
- \def\chaptername{Capítulo}%
- \def\appendixname{Apéndice}%
- \def\contentsname{Índice general}%
- \def\listfigurename{Índice de figuras}%
- \def\listtablename{Índice de cuadros}%
- \def\indexname{Índice alfabético}%
- \def\figurename{Figura}%
- \def\tablename{Cuadro}%
- \def\partname{Parte}%
- \def\enclname{Adjunto(s)}%
- \def\ccname{Copia a}%
- \def\headtoname{A}%
- \def\pagename{Página}%
- \def\seename{véase}%
- \def\alsoname{véase también}%
- \def\proofname{Prueba}%
- \def\glossaryname{Glosario}%
- \if@spanish@mexico
- \captionsspanish@mexico%
- \fi%
-}
-
-\def\captionsspanish@mexico{%
- \def\tablename{Tabla}%
-}
-
-\def\datespanish{%
- \def\today{\number\day~de~\ifcase\month\or
- enero\or febrero\or marzo\or abril\or mayo\or junio\or
- julio\or agosto\or septiembre\or octubre\or noviembre\or
- diciembre\fi\space de~\number\year}%
-}
-
-\def\noextras@spanish{%
- \nospanish@accentedoperators%
- \nospanish@spacedoperators%
- \nospanish@locoperators%
-}
-
-\def\blockextras@spanish{%
- \ifspanish@accentedoperators\spanish@accentedoperators\fi%
- \ifspanish@spacedoperators\spanish@spacedoperators\fi%
- \ifspanish@locoperators\spanish@locoperators\fi%
-}
-
-\def\inlineextras@spanish{%
- \ifspanish@accentedoperators\spanish@accentedoperators\fi%
- \ifspanish@spacedoperators\spanish@spacedoperators\fi%
- \ifspanish@locoperators\spanish@locoperators\fi%
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-spanish.ldf>
-%<*gloss-spanishmx.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-spanishmx.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-spanishmx.ldf}[polyglossia: module for mexican spanish]
-
-% We provide this as a babel alias
-
-\xpg@load@master@language{spanish}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-spanishmx.ldf>
-%<*gloss-swedish.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-swedish.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-swedish.ldf}[polyglossia: module for swedish]
-
-\PolyglossiaSetup{swedish}{
- bcp47=sv,
- hyphennames={swedish},
- hyphenmins={2,2},
- langtag=SVE,
- frenchspacing=true,
- fontsetup=true,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{swedish}{sv}
-
-\def\captionsswedish{%
- \def\refname{Referenser}%
- \def\abstractname{Sammanfattning}%
- \def\bibname{Litteraturförteckning}%
- \def\prefacename{Förord}%
- \def\chaptername{Kapitel}%
- \def\appendixname{Bilaga}%
- \def\contentsname{Innehåll}%
- \def\listfigurename{Figurer}%
- \def\listtablename{Tabeller}%
- \def\indexname{Sakregister}%
- \def\figurename{Figur}%
- \def\tablename{Tabell}%
- %\def\thepart{}%
- \def\partname{Del}%
- \def\pagename{Sida}%
- \def\seename{se}%
- \def\alsoname{se även}%
- \def\enclname{Bil.}%
- \def\ccname{Kopia för kännedom}%
- \def\headtoname{Till}%
- \def\proofname{Bevis}%
- \def\glossaryname{Ordlista}%
- }
-
-\def\dateswedish{%
- \def\today{%
- \number\day~\ifcase\month\or
- januari\or februari\or mars\or april\or maj\or juni\or
- juli\or augusti\or september\or oktober\or november\or
- december\fi
- \space\number\year}%
- \def\datesymd{%
- \def\today{\number\year-\two@digits\month-\two@digits\day}}%
- \def\datesdmy{%
- \def\today{\number\day/\number\month\space\number\year}}%
- }
-
-% \end{macrocode}
-% \iffalse
-%</gloss-swedish.ldf>
-%<*gloss-swissgerman.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-swissgerman.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-swissgerman.ldf}[polyglossia: module for swiss german (old spelling)]
-
-% We provide this as a babel alias
-
-\xpg@load@master@language{german}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-swissgerman.ldf>
-%<*gloss-syriac.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-syriac.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-syriac.ldf}[polyglossia: module for syriac]
-\ifluatex
- \xpg@warning{Syriac is not supported with LuaTeX.\MessageBreak
-I will proceed with the compilation, but\MessageBreak
-the output is not guaranteed to be correct\MessageBreak
-and may look very wrong.}
-\fi
-\RequireBidi
-\RequirePackage{arabicnumbers}
-
-\PolyglossiaSetup{syriac}{
- bcp47=syr,
- script=Syriac,
- scripttag=syrc,
- langtag=SYR,
- direction=RL,
- hyphennames={syriac,nohyphenation},
- fontsetup=true,
- localnumeral=syriacnumerals
- %TODO localalph
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{syriac}{syr}
-
-\def\syriacnumber#1{\@syriacnumber{#1}}%
-
-\newif\if@eastern@numerals
-\def\tmp@eastern{eastern}
-\def\tmp@abjad{abjad}
-\define@key{syriac}{numerals}[western]{%
- \def\@tmpa{#1}%
- \ifx\@tmpa\tmp@abjad
- \let\syriacnumber\abjadsyriac
- \else
- \ifx\@tmpa\tmp@eastern
- \@eastern@numeralstrue
- \else
- \@eastern@numeralsfalse
- \fi
- \fi}
-
-% Register default options
-\xpg@initialize@gloss@options{syriac}{numerals=western}
-
-%\define@key{polyglossia}{syriaclocale}[default]{%
-% \def\@syriac@locale{#1}}
-%
-%\def\captionssyriac{%
-%\def\prefacename{\@ensure@RTL{}}%
-%\def\refname{\@ensure@RTL{}}
-%\def\abstractname{\@ensure@RTL{}}%
-%\def\bibname{\@ensure@RTL{}}%
-%\def\chaptername{\@ensure@RTL{}}%
-%\def\appendixname{\@ensure@RTL{}}%
-%\def\contentsname{\@ensure@RTL{}}
-%\def\listfigurename{\@ensure@RTL{}}%
-%\def\listtablename{\@ensure@RTL{}}%
-%\def\indexname{\@ensure@RTL{}}%
-%\def\figurename{\@ensure@RTL{}}%
-%\def\tablename{\@ensure@RTL{}}%
-%\def\partname{\@ensure@RTL{}}%
-%\def\enclname{\@ensure@RTL{}}%
-%\def\ccname{\@ensure@RTL{}}%
-%\def\headtoname{\@ensure@RTL{}}%
-%\def\pagename{\@ensure@RTL{}}%
-%\def\seename{\@ensure@RTL{}}%
-%\def\alsoname{\@ensure@RTL{}}%
-%\def\proofname{\@ensure@RTL{}}%
-%\def\glossaryname{\@ensure@RTL{}}%
-%}
-
-\def\datesyriac{%
- \def\syriac@month##1{\ifcase##1%
- \or ܟܢܘܢ ܐܚܪܝ\or ܫܒܛ\or ܐܕܪ\or ܢܝܣܢ\or ܐܝܪ\or ܚܙܝܪܢ\or ܬܡܘܙ\or ܐܒ\or ܐܝܠܘܠ% ܐܠܘܠ
- \or ܬܫܪܝܢ ܩܕܡ% ܬܫܪܝܢ ܩܕܝܡ
- \or ܬܫܪܝܢ ܐܚܪܝ\or ܟܢܘܢ ܩܕܡ% ܟܢܘܢ ܩܕܝܡ
- \fi}%
- \def\today{\@ensure@RTL{\syriacnumber\day{\space}%
- \syriac@month{\month}{\space}\syriacnumber\year}}%
-}
-
-\def\syriac@zero{}
-
-\def\abjadsyriac#1{%
-\ifnum#1>9999\xpg@ill@value{#1}{abjadsyriac}%
-\else%
- \ifnum#1<\z@\space\xpg@ill@value{#1}{abjadsyriac}%
- \else%
- \ifnum#1<10\expandafter\abj@syr@num@i\number#1%
- \else%
- \ifnum#1<100\expandafter\abj@syr@num@ii\number#1%
- \else%
- \ifnum#1<1000\expandafter\abj@syr@num@iii\number#1%
- \else%
- \expandafter\abj@syr@num@iv\number#1%
- \fi%
- \fi%
- \fi%
- \fi%
-\fi%
-}
-\def\abj@syr@num@i#1{%
- \ifcase#1\or\char"0710\or\char"0712\or\char"0713\or\char"0715%
- \or\char"0717\or\char"0718\or\char"0719\or\char"071A\or\char"071B\fi
- \ifnum#1=\z@\syriac@zero\fi}
-\def\abj@syr@num@ii#1{%
- \ifcase#1\or\char"071D\or\char"071F\or\char"0720\or\char"0721\or\char"0722%
- \or\char"0723\or\char"0725\or\char"0726\or\char"0728\fi
- \ifnum#1=\z@\fi\abj@syr@num@i}
-\def\abj@syr@num@iii#1{%
- \ifcase#1\or\char"0729\or\char"072A\or\char"072B\or\char"072C%
- \or\char"0722\char"0307\or\char"0723\char"0307\or\char"0725\char"0307%
- \or\char"0726\char"0307\or\char"0728\char"0307\fi
- \ifnum#1=\z@\fi\abj@syr@num@ii}
-\def\abj@syr@num@iv#1{%
- \ifcase#1\or\char"0710\char"0748\or\char"0712\char"0748%
- \or\char"0713\char"0748\or\char"0715\char"0748%
- \or\char"0717\char"0748\or\char"0718\char"0748%
- \or\char"0719\char"0748\or\char"071A\char"0748\or\char"071B\char"0748\fi
- \ifnum#1=\z@\fi\abj@syr@num@iii}
-
-\def\@syriacnumber#1{%
- \if@eastern@numerals
- %%% we test for the presence of one of ١٢٣٤٥٦٧٨٩٠ in the Syriac font,
- %%% else we try \arabicfont if defined (and give a warning),
- %%% else we fall back to the Western numerals.
- \xpg@if@char@available{0661}%
- {\protect\arabicdigits{\number#1}}%
- {\arabicdigits{\number#1}
- \ifcsdef{arabicfont}%
- {\protect\arabicdigits{\number#1}%
- \xpg@warning{You have specified the option numerals=eastern for Syriac, but the Syriac font does not contain the appropriate glyphs:
- I am using \string\arabicfont instead}}%
- {\number#1%%% <---changed from \RL{\protect\reset@font\protect\number#1}%
- \xpg@warning{You have specified the option numerals=eastern for Syriac, but the Syriac font does not contain the appropriate glyphs:
- since \string\arabicfont is not defined, we'll use Western numerals instead}}%
- }%
- \else
- %%\RL{\protect\reset@font\number#1}%
- \number#1%
- \fi%
-}
-
-\def\syriac@numbers{%
- \let\@alph\abjadsyriac%
- \let\@Alph\abjadsyriac%
-}
-
-\def\nosyriac@numbers{%
- \let\@alph\latin@alph%
- \let\@Alph\latin@Alph%
-}
-
-\newcommand{\syriacnumerals}[2]{\syriacnumber{#2}}
-
-% Store original definition
-\let\xpg@save@arabic\@arabic
-
-\def\syriac@globalnumbers{%
- \let\@arabic\syriacnumber%
- \renewcommand\thefootnote{\localnumeral*{footnote}}%
-}
-
-\def\nosyriac@globalnumbers{%
- \let\@arabic\xpg@save@arabic%
-}
-
-% Save original \MakeUppercase definition
-\let\xpg@save@MakeUppercase\MakeUppercase
-
-\def\blockextras@syriac{%
- \def\MakeUppercase##1{##1}%
-}
-
-\def\noextras@syriac{%
- % restore original \MakeUppercase definition
- \let\MakeUppercase\xpg@save@MakeUppercase%
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-syriac.ldf>
-%<*gloss-tamil.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-tamil.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-tamil.ldf}[polyglossia: module for tamil]
-\ifluatex
- \xpg@warning{Tamil is not supported with LuaTeX.\MessageBreak
-I will proceed with the compilation, but\MessageBreak
-the output is not guaranteed to be correct\MessageBreak
-and may look very wrong.}
-\fi
-% Translations provided by Kevin & Siji, 01-11-2009
-
-\PolyglossiaSetup{tamil}{
- bcp47=ta,
- script=Tamil,
- scripttag=taml,
- langtag=TAM,
- hyphennames={tamil},
- hyphenmins={2,2}, %FIXME?
- fontsetup=true,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{tamil}{ta}
-
-\def\captionstamil{%
- \def\abstractname{சாராம்சம்}%
- \def\appendixname{பிற்சேர்க்கை}%பின்னிணைப்பு
- %\def\bibname{}%
- %\def\ccname{}%
- \def\chaptername{அத்தியாயம்}%
- \def\contentsname{உள்ளே}%
- %\def\enclname{}%
- \def\figurename{படம்}%
- %\def\headpagename{}%
- %\def\headtoname{}%
- \def\indexname{சுட்டி}%பொருளடக்க அட்டவணை
- \def\listfigurename{படங்களின் பட்டியல்}%
- \def\listtablename{அட்டவணை பட்டியல்}%
- %\def\pagename{}%
- \def\partname{பகுதி}%
- %\def\prefacename{}%
- %\def\refname{}%
- \def\tablename{அட்டவணை}%
- \def\seename{பார்க்க}%
- %\def\alsoname{}%
- %\def\alsoseename{}%
-}
-\def\datetamil{%
- \def\today{\number\year\space\ifcase\month\or
- ஜனவரி\or
- பிப்ரவரி\or
- மார்ச்\or
- ஏப்ரல்\or
- மே\or
- ஜூன்\or
- ஜூலை\or
- ஆகஸ்ட்\or
- செப்டம்பர்\or
- அக்டோபர்\or
- நவம்பர்\or
- டிசம்பர்\fi
- \space\number\day}%
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-tamil.ldf>
-%<*gloss-telugu.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-telugu.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-telugu.ldf}[polyglossia: module for telugu]
-\ifluatex
- \xpg@warning{Telugu is not supported with LuaTeX.\MessageBreak
-I will proceed with the compilation, but\MessageBreak
-the output is not guaranteed to be correct\MessageBreak
-and may look very wrong.}
-\fi
-% Translations provided by Anmol Sharma <unmole.in@gmail.com>
-
-\PolyglossiaSetup{telugu}{
- bcp47=te,
- script=Telugu,
- scripttag=telu,
- langtag=TEL,
- hyphennames={telugu},
- hyphenmins={2,2}, %FIXME
- fontsetup=true,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{telugu}{te}
-
-\def\captionstelugu{%
- \def\refname{ఆధారాలు}%
- \def\abstractname{సారాంశం}%
- \def\bibname{గ్రంథాల జాబితా}%
- \def\prefacename{ముందుమాట}%
- \def\chaptername{అధ్యాయము}%
- \def\appendixname{అదనంగా}%
- \def\contentsname{విషయాలు}%
- \def\listfigurename{ఆకృతుల జాబితా}%
- \def\listtablename{పట్టికల జాబితా}%
- \def\indexname{విషయ సూచిక}%
- \def\figurename{ఆకృతి}%
- \def\tablename{పట్టిక}%
- %\def\thepart{}%
- \def\partname{భాగం}%
- \def\pagename{పేజి}%
- \def\seename{చూడండి}%
- \def\alsoname{కూడా చూడండి}%
- \def\enclname{ఎంక్లోజర్*}%
- \def\ccname{సిసి}%
- \def\headtoname{కి}%
- \def\proofname{రుజువు}%
- \def\glossaryname{నిఘంటువు}%
-}
-
-\def\datetelugu{%
- \def\telugu@month{%
- \ifcase\month\or
- జనవరి\or
- ఫిబ్రవరి\or
- మార్చ్\or
- ఏప్రిల్\or
- మే\or
- జూన్\or
- జూలై\or
- ఆగస్ట్\or
- సెప్టెంబర్\or
- అక్తోబెర్\or
- నవంబర్\or
- డిసంబర్\fi}%
- \def\today{\telugu@month\space\number\day,\space\number\year}%
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-telugu.ldf>
-%<*gloss-thai.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-thai.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-thai.ldf}[polyglossia: module for thai]
-%% This is partly based on thai-latex for Babel:
-%%%% Copyright (C) 1999 - 2006
-%%%% by Surapant Meknavin,
-%%%% Theppitak Karoonboonyanan (thep at linux.thai.net),
-%%%% Chanop Silpa-Anan (chanop at debian.org),
-%%%% Poonlap Veerathanabutr (poonlap at linux.thai.net)
-%%%% Thai Linux Working Group
-%%%% http://linux.thai.net/
-%%%%
-\ifluatex
- \xpg@warning{Thai is not supported with LuaTeX.\MessageBreak
-I will proceed with the compilation, but\MessageBreak
-the output is not guaranteed to be correct\MessageBreak
-and may look very wrong.}
-\fi
-\PolyglossiaSetup{thai}{
- bcp47=th,
- script=Thai,
- scripttag=thai,
- langtag=THA,
- hyphennames={nohyphenation},
- fontsetup=true,
- localnumeral=thainumerals
- %TODO localalph={xxx@alph,xxx@Alph}
- %TODO localdigits=thainumber
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{thai}{th}
-
-\newif\if@thai@numerals
-\def\tmp@thai{thai}
-\define@key{thai}{numerals}[arabic]{%
- \def\@tmpa{#1}%
- \ifx\@tmpa\tmp@thai\@thai@numeralstrue\else
- \@thai@numeralsfalse\fi
-}
-
-% Register default options
-\xpg@initialize@gloss@options{thai}{numerals=arabic}
-
-\def\captionsthai{%
- \def\refname{หนังสืออ้างอิง}%
- \def\abstractname{บทคัดย่อ}%
- \def\bibname{บรรณานุกรม}%
- \def\prefacename{คำนำ}%
- \def\chaptername{บทที่}%
- \def\appendixname{ภาคผนวก}%
- \def\contentsname{สารบัญ}%
- \def\listfigurename{สารบัญรูป}%
- \def\listtablename{สารบัญตาราง}%
- \def\indexname{ดรรชนี}%
- \def\figurename{รูปที่}%
- \def\tablename{ตารางที่}%
- %\def\thepart{}%
- \def\partname{ภาค}%
- \def\pagename{หน้า}%
- \def\seename{ดู}%
- \def\alsoname{ดูเพิ่มเติม}%
- \def\enclname{สิ่งที่แนบมาด้วย}%
- \def\ccname{สำเนาถึง}%
- \def\headtoname{เรียน}%
- \def\proofname{พิสูจน์}%
- %\def\glossaryname{}%
-}
-\def\datethai{%
- \def\thai@month{%
- \ifcase\month\or
- มกราคม\or กุมภาพันธ์\or มีนาคม\or เมษายน%
- \or พฤษภาคม\or มิถุนายน\or กรกฎาคม\or สิงหาคม%
- \or กันยายน\or ตุลาคม\or พฤศจิกายน\or ธันวาคม\fi}%
- \newcount\thai@year%
- \thai@year=\year%
- \advance\thai@year by 543%
- \def\today{\thainumber\day \space \thai@month\space พ.ศ.~\thainumber\thai@year}%
-}
-
-%NB: thai-latex had "plus 0.6pt", but .4em appears to give better results
-% FIXME to avoid name clashes, rename \wbr to \wordbreak or \thaiworkbreak ?
-\def\wbr{\hskip0pt plus .4em\relax} %%OR \char"200B = ZWSP ? Does not work
-%\catcode"200b=\active
-%\def^^200b{\hskip 0pt plus .4em}
-
-\def\thaidigits#1{\expandafter\@thai@digits #1@}
-\def\@thai@digits#1{%
- \ifx @#1% then terminate
- \else
- \ifx0#1๐\else\ifx1#1๑\else\ifx2#1๒\else\ifx3#1๓\else\ifx4#1๔\else\ifx5#1๕\else\ifx6#1๖\else\ifx7#1๗\else\ifx8#1๘\else\ifx9#1๙\else#1\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
- \expandafter\@thai@digits
- \fi
-}
-
-\newcommand{\thainumerals}[2]{\thainumber{#2}}
-
-\def\thainumber#1{%
- \if@thai@numerals
- \thaidigits{\number#1}%
- %%{\protect\addfontfeature{Mapping=thaidigits}\protect\number#1}
- \else
- \number#1%
- %%{\protect\reset@font\number#1}
- \fi}
-
-\def\@thaialph#1{%
- \ifcase#1\or ก\or ข\or ค\or ง\or จ\or ฉ\or ช\or ซ\or ฌ\or ญ\or ฎ\or
- ฏ\or ฐ\or ฑ\or ฒ\or ณ\or ด\or ต\or ถ\or ท\or ธ\or น\or บ\or ป\or ผ\or
- ฝ\or พ\or ฟ\or ภ\or ม\or ย\or ร\or ล\or ว\or ศ\or ษ\or ส\or ห\or ฬ\or อ\or
- ฮ\else\xpg@ill@value{#1}{@thaialph}\fi}
-\def\thaiAlph#1{\expandafter\@thaiAlph\csname c@#1\endcsname}
-\def\@thaiAlph#1{%
- \ifcase#1\or ก\or ข\or ฃ\or ค\or ฅ\or ฆ\or ง\or จ\or ฉ\or ช\or ซ\or
- ฌ\or ญ\or ฎ\or ฏ\or ฐ\or ฑ\or ฒ\or ณ\or ด\or ต\or ถ\or ท\or ธ\or น\or
- บ\or ป\or ผ\or ฝ\or พ\or ฟ\or ภ\or ม\or ย\or ร\or ฤ\or ล\or ฦ\or ว\or
- ศ\or ษ\or ส\or ห\or ฬ\or อ\or ฮ\else\xpg@ill@value{#1}{@thaialph}\fi}
-
-\def\thai@numbers{%
- \if@thai@numerals
- \let\@alph\@thaialph%
- \let\@Alph\@thaiAlph%
- \fi
-}
-\def\nothai@numbers{%
- \let\@alph\latin@alph%
- \let\@Alph\latin@Alph%
-}
-
-\def\thai@globalnumbers{%
- \let\orig@arabic\@arabic%
- \let\@arabic\thainumber%
- \renewcommand{\thefootnote}{\localnumeral*{footnote}}%
-}
-\def\nothai@globalnumbers{%
- \let\@arabic\orig@arabic%
-}
-
-\def\blockextras@thai{%
-%%TODO \XeTeXlinebreaklocales "th"% uses ICU to find line breaks on the basis of a dictionary lookup-- make this optional? (in case a user might prefer a preprocessor
- \let\orig@baselinestrech\baselinestretch%
- \renewcommand{\baselinestretch}{1.2}%
-}
-\def\noblockextras@thai{%
-%%TODO \XeTeXlinebreaklocales "en"%
- \let\baselinestrech\orig@baselinestretch%
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-thai.ldf>
-%<*gloss-tibetan.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-tibetan.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-tibetan.ldf}[polyglossia: module for tibetan]
-%% Copyright 2013 Elie Roux
-%% Under the CC0 license <http://creativecommons.org/publicdomain/zero/1.0/>
-%%
-%% A good font to make tests is \newfontfamily\tibetanfont{Tibetan Machine Uni}
-%%
-
-\PolyglossiaSetup{tibetan}{
- bcp47=bo,
- script=Tibetan,
- scripttag=tibt,
- langtag=TIB,
- hyphennames={nohyphenation},
- fontsetup=true,
- localnumeral=tibetannumerals
- %TODO localalph={xxx@alph,xxx@Alph}
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{tibetan}{bo}
-
-\newif\if@tibetan@numerals
-\def\tmp@tibetan{tibetan}
-\define@key{tibetan}{numerals}[tibetan]{%
- \def\@tmpa{#1}%
- \ifx\@tmpa\tmp@tibetan\@tibetan@numeralstrue\else
- \@tibetan@numeralsfalse\fi
-}
-
-\ifluatex
- \newluatexattribute\xpg@tibteol %
- \directlua{polyglossia.load_tibt_eol()}%
-\fi
-
-\def\tibetan@eol{%
- \ifluatex %
- \xpg@tibteol=1\relax %
- \directlua{polyglossia.activate_tibt_eol()}%
- \else %
- \XeTeXlinebreaklocale "bo"%
- \XeTeXlinebreakskip=0pt plus 0.1em% doesn't do much, but doesn't harm I guess...
- \fi %
-}
-
-\def\notibetan@eol{%
- \ifluatex %
- \xpg@tibteol=0\relax %
- %\directlua{polyglossia.activate_tibt_eol()}%
- \else %
- \XeTeXlinebreaklocale "en"% en? really?
- \XeTeXlinebreakskip=0pt plus 0pt%
- \fi %
-}
-
-% Register default options
-\xpg@initialize@gloss@options{tibetan}{numerals=tibetan}
-
-% some are known, but very few
-% a few come from "Standardizing Tibetan Terms of Information Technology"
-% from the China Tibetology Research Center
-\def\captionstibetan{%
- %\def\refname{}%
- \def\abstractname{གནད་བསྡུས།}%
- \def\bibname{དཔེ་ཆའི་ཐོ་གཞུང་།}% or dpe deb kyi re'u mig?
- \def\prefacename{དཔེ་དེབ་ཀྱི་གླེང་བརྗོད།}% or gleng brjod 'god pa or ngo sprod?
- \def\chaptername{ལེའུ་}%
- \def\appendixname{ཞར་བྱུང་།}%
- \def\contentsname{དཀར་ཆག།}%
- %\def\listfigurename{}%
- %\def\listtablename{}%
- \def\indexname{གསུལ་བྱང་།}%
- \def\figurename{པར་རིས་}% or dpe ris?
- \def\tablename{རེའུ་མིག་}%
- %\def\thepart{}%
- \def\partname{ཆ་ཤས་}%
- \def\pagename{ཤོག་}%
- %\def\seename{}%
- %\def\alsoname{}%
- %\def\enclname{}%
- \def\ccname{འདྲ་བཤུས་ལེན་མཁན་}%
- %\def\headtoname{}%
- \def\proofname{བདེན་དཔང་།}% not sure about this one...
- \def\glossaryname{མིང་ཚིག་རེའུ་མིག།}%
-}
-\def\datetibetan{%
- \def\tibetan@month{%
- \ifcase\month\or
- ཟླ་དང་པོ\or ཟླ་གཉིས་པ\or ཟླ་གསུམ་པ%
- \or ཟླ་བཞི་པ\or ཟླ་ལྔ་པ\or ཟླ་དྲུག་པ\or ཟླ་བདུན་པ%
- \or ཟླ་བརྒྱད་པ\or ཟླ་དགུ་པ\or ཟླ་བཆུ་པ\or ཟླ་བཆུ་གཅིག་པ\or ཟླ་བཆུ་གཉིས་པ\fi}%
- \def\tibetan@daynum{%
- \ifcase\day\or དང་པོ\or གཉིས་པ\or གསུམ་པ \or བཞི་པ\or ལྔ་པ\or དྲུག་པ\or བདུན་པ\or བརྒྱད་པ\or དགུ་པ\or བཆུ་པ%
- \or བཆུ་གཅིག་པ\or བཆུ་གཉིས་པ\or བཆུ་གསུམ་པ\or བཆུ་བཞི་པ\or བཆུ་ལྔ་པ\or བཆུ་དྲུག་པ\or བཆུ་བདུན་པ\or བཆུ་བརྒྱད་པ\or བཆུ་དགུ་པ\or ཉི་ཤུ་པ%
-
- \or ཉི་ཤུ་རྩ་གཅིག་པ\or ཉི་ཤུ་རྩ་གཉིས་པ\or ཉི་ཤུ་རྩ་གསུམ་པ\or ཉི་ཤུ་རྩ་བཞི་པ\or ཉི་ཤུ་རྩ་ལྔ་པ\or ཉི་ཤུ་རྩ་དྲུག་པ\or ཉི་ཤུ་རྩ་བདུན་པ\or ཉི་ཤུ་རྩ་བརྒྱད་པ\or ཉི་ཤུ་རྩ་དགུ་པ\or སུམ་ཆུ་པ%
- \or སུམ་ཆུ་སོ་གཅིག་པ\fi}%
- % As we use gregorian calendar, it's better to stick with spyi lo
- %\newcount\tibetan@year%
- %\tibetan@year=\year%
- %\advance\tibetan@year by 127% this is bod rgyal lo, the most common, but there are others...
- % I'm not sure the / character is in most tibetan fonts
- %\def\today{\tibetannumber\day /\tibetannumber\day /\tibetannumber\year}%
- \def\today{\tibetannumber\day །\tibetannumber\month །\tibetannumber\year}%
- % this is more litterate, but longer
- %\def\today{སྤྱི་ལོ་\tibetannumber\year ་སྤྱི་\tibetan@month{}་ད་རེས་\tibetan@daynum{}།}%
-}
-
-\def\tibetandigits#1{\expandafter\@tibetan@digits #1@}
-\def\@tibetan@digits#1{%
- \ifx @#1% then terminate
- \else
- \ifx0#1༠\else\ifx1#1༡\else\ifx2#1༢\else\ifx3#1༣\else\ifx4#1༤\else\ifx5#1༥\else\ifx6#1༦\else\ifx7#1༧\else\ifx8#1༨\else\ifx9#1༩\else#1\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
- \expandafter\@tibetan@digits
- \fi
-}
-
-\def\tibetannumber#1{%
- \if@tibetan@numerals
- \tibetandigits{\number#1}%
- %%{\protect\addfontfeature{Mapping=tibetandigits}\protect\number#1}
- \else
- \number#1%
- %%{\protect\reset@font\number#1}
- \fi}
-
-\def\@tibetanalph#1{%
- \ifcase#1\or ཀ\or ཁ\or ག\or ང\or ཅ\or ཆ\or ཇ\or ཉ\or ཏ\or ཐ\or ད\or ན\or པ\or
- ཕ\or བ\or མ\or ཙ\or ཚ\or ཛ\or ཝ\or ཞ\or ཟ\or འ\or ཡ\or ར\or ལ\or ཤ\or ས\or ཧ\or ཨ
- \else\xpg@ill@value{#1}{@tibetanalph}\fi}
-\def\tibetanAlph#1{\expandafter\@tibetanAlph\csname c@#1\endcsname}
-\def\@tibetanAlph#1{%
- \ifcase#1\or ཀ\or ཁ\or ག\or ང\or ཅ\or ཆ\or ཇ\or ཉ\or ཏ\or ཐ\or ད\or ན\or པ\or
- ཕ\or བ\or མ\or ཙ\or ཚ\or ཛ\or ཝ\or ཞ\or ཟ\or འ\or ཡ\or ར\or ལ\or ཤ\or ས\or ཧ\or ཨ
- \else\xpg@ill@value{#1}{@tibetanalph}\fi}
-
-\newcommand{\tibetanumerals}[2]{\tibetannumber{#2}}
-
-\def\tibetan@numbers{%
- \if@tibetan@numerals
- \let\@alph\@tibetanalph%
- \let\@Alph\@tibetanAlph%
- \fi
-}
-\def\notibetan@numbers{%
- \let\@alph\latin@alph%
- \let\@Alph\latin@Alph%
-}
-
-\def\tibetan@globalnumbers{%
- \let\xpg@orig@arabic\@arabic%
- \let\@arabic\tibetannumber%
- \renewcommand{\thefootnote}{\localnumeral*{footnote}}%
-}
-
-\def\notibetan@globalnumbers{%
- \let\@arabic\xpg@orig@arabic%
-}
-
-\def\noextras@tibetan{%
- \notibetan@eol%
- \ifcsname xpg@orig@baselinestretch\endcsname\renewcommand{\baselinestretch}{\xpg@orig@baselinestretch}\fi %
- }
-
-\def\inlineextras@tibetan{%
- \xdef\xpg@orig@baselinestretch{\ifcsname baselinestretch\endcsname \baselinestretch \else 1\fi}%
- \renewcommand{\baselinestretch}{1.2}%
- \tibetan@eol%
- }
-
-\def\blockextras@tibetan{%
- \xdef\xpg@orig@baselinestretch{\ifcsname baselinestretch\endcsname \baselinestretch \else 1\fi}%
- \renewcommand{\baselinestretch}{1.2}%
- \tibetan@eol%
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-tibetan.ldf>
-%<*gloss-turkish.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-turkish.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-turkish.ldf}[polyglossia: module for turkish]
-\RequirePackage{hijrical}
-\PolyglossiaSetup{turkish}{
- bcp47=tr,
- hyphennames={turkish},
- hyphenmins={2,2},
- langtag=TRK,
- frenchspacing=true,
- fontsetup=true
- }
-
-% TODO Add \ifluatex branch everywhere
-\ifxetex
-\newXeTeXintercharclass\turkish@punctthin % ! :
-\newXeTeXintercharclass\turkish@punctthick % =
-\fi
-
-\def\turkish@punctthinspace{{\ifdim\lastskip>\z@\unskip\penalty\@M\thinspace\fi}}
-\def\turkish@punctthickspace{{\unskip\nobreakspace}}
-
-\def\turkish@punctuation{%
- \ifxetex
- \XeTeXinterchartokenstate=1%
- \XeTeXcharclass `\! \turkish@punctthin
- \XeTeXcharclass `\: \turkish@punctthin
- \XeTeXcharclass `\= \turkish@punctthick
- \XeTeXinterchartoks \z@ \turkish@punctthin = \turkish@punctthinspace
- \XeTeXinterchartoks \z@ \turkish@punctthick = \turkish@punctthickspace
- \fi
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{turkish}{tr}
-
-\def\noturkish@punctuation{%
- \ifxetex
- \XeTeXcharclass `\! \z@
- \XeTeXcharclass `\: \z@
- \XeTeXcharclass `\= \z@
- \XeTeXinterchartokenstate=0%
- \fi
-}
-
-\def\turkish@casing{%
- \lccode`\I=`\ı
- \uccode`\i=`\İ
-}
-
-\def\noturkish@casing{%
- \lccode`\I=`\i
- \uccode`\i=`\I
-}
-
-\def\captionsturkish{%
- \def\prefacename{Önsöz}%
- \def\refname{Kaynaklar}%
- \def\abstractname{Özet}%
- \def\bibname{Kaynakça}%
- \def\chaptername{Bölüm}%
- \def\appendixname{Ek}%
- \def\contentsname{İçindekiler}%
- \def\listfigurename{Şekil Listesi}%
- \def\listtablename{Tablo Listesi}%
- \def\indexname{Dizin}%
- \def\figurename{Şekil}%
- \def\tablename{Tablo}%
- \def\partname{Kısım}%
- \def\enclname{İlişik}%
- \def\ccname{Diğer Alıcılar}%
- \def\headtoname{Alıcı}%
- \def\pagename{Sayfa}%
- \def\subjectname{İlgili}%
- \def\seename{bkz.}%
- \def\alsoname{ayrıca bkz.}%
- \def\proofname{Kanıt}%
- \def\glossaryname{Lügatçe}%
- }
-\def\dateturkish{%
- \def\today{\number\day~\ifcase\month\or
- Ocak\or Şubat\or Mart\or Nisan\or Mayıs\or Haziran\or
- Temmuz\or Ağustos\or Eylül\or Ekim\or Kasım\or
- Aralık\fi
- \space\number\year}%
-}
-\def\hijrimonthturkish#1{\ifcase#1%
-\or Muharrem\or Safer\or Rebiülevvel\or Rebiülahir\or Cemaziyelevvel\or Cemaziyelahir\or Recep\or Şaban\or Ramazan\or Şevval\or Zilkade\or Zilhicce\fi}
-%%\Hijritoday is now locale-aware and will format the date with this macro:
-\DefineFormatHijriDate{turkish}{%
-\number\value{Hijriday}\space\hijrimonthturkish{\value{Hijrimonth}}\space\number\value{Hijriyear}}
-
-\def\noextras@turkish{%
- \noturkish@punctuation%
- \noturkish@casing%
-}
-
-\def\blockextras@turkish{%
- \turkish@punctuation%
- \turkish@casing%
-}
-
-\def\inlineextras@turkish{%
- \turkish@punctuation%
- \turkish@casing%
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-turkish.ldf>
-%<*gloss-turkmen.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-turkmen.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-turkmen.ldf}[polyglossia: module for turkmen]
-%% Translations provided by Nazar Annagurban <nazartm at gmail dot com>
-\PolyglossiaSetup{turkmen}{
- bcp47=tk,
- hyphennames={turkmen},
- hyphenmins={2,2},
- langtag=TKM,
- frenchspacing=false,
- fontsetup=true
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{turkmen}{tk}
-
-\def\captionsturkmen{%
- \def\prefacename{Sözbaşy}%
- \def\refname{Çeşmeler}%
- \def\abstractname{Gysgaça manysy}%
- \def\bibname{Çeşmeler}%
- \def\chaptername{Bap}%
- \def\appendixname{Goşmaça}%
- \def\contentsname{Mazmuny}%
- \def\listfigurename{Suratlaryň sanawy}%
- \def\listtablename{Tablisalaryň sanawy}%
- \def\indexname{Indeks}%
- \def\figurename{Surat}%
- \def\tablename{Tablisa}%
- \def\partname{Bölüm}%
- \def\enclname{Goşmaça}%
- \def\ccname{Iberilenler}%
- \def\headtoname{Kime}%
- \def\pagename{Sahypa}%
- \def\subjectname{Tema}%
- \def\seename{ser.}%
- \def\alsoname{şuňa-da ser.}%
- \def\proofname{Delil}%
- \def\glossaryname{Sözlük}%
-}
-\def\dateturkmen{%
- \def\today{\number\day~\ifcase\month\or
- Ýanwar\or Fewral\or Mart\or Aprel\or Maý\or Iýun\or
- Iýul\or Awgust\or Sentýabr\or Oktýabr\or Noýabr\or
- Dekabr\fi
- \space\number\year}%
-}
-% \end{macrocode}
-% \iffalse
-%</gloss-turkmen.ldf>
-%<*gloss-ukrainian.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-ukrainian.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-ukrainian.ldf}[polyglossia: module for ukrainian]
-% Strings taken from Babel
-% and revised by Roman Kyrylych
-
-\RequirePackage{xpg-cyrillicnumbers}
-
-\PolyglossiaSetup{ukrainian}{%
- bcp47=uk,
- script=Cyrillic,
- scripttag=cyrl,
- langtag=UKR,
- hyphennames={ukrainian},
- hyphenmins={2,2},
- frenchspacing=true,
- fontsetup=true,
- localnumeral=ukrainiannumerals,
- Localnumeral=Ukrainiannumerals
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{ukrainian}{uk}
-
-\newif\ifcyrillic@numerals
-\newif\ifcyrillic@asbuk@numerals
-\define@choicekey*+{ukrainian}{numerals}[\xpg@val\xpg@nr]{arabic,cyrillic,cyrillic-trad,cyrillic-alph}[arabic]{%
- \ifcase\xpg@nr\relax
- % arabic:
- \cyrillic@numeralsfalse%
- \cyrillic@asbuk@numeralsfalse%
- \or
- % cyrillic:
- \cyrillic@numeralstrue%
- \cyrillic@asbuk@numeralsfalse%
- \or
- % cyrillic-trad:
- \cyrillic@numeralstrue%
- \cyrillic@asbuk@numeralsfalse%
- \or
- % cyrillic-alph:
- \cyrillic@numeralstrue%
- \cyrillic@asbuk@numeralstrue%
- \fi
- \xpg@info{Option: Ukrainian, numerals=\xpg@val}%
-}{\xpg@warning{Unknown Ukrainian numerals value `#1'}}
-
-
-% Register default options
-\xpg@initialize@gloss@options{ukrainian}{numerals=arabic}
-
-\define@boolkey{ukrainian}[ukrainian@]{babelshorthands}[true]{}
-
-\ifsystem@babelshorthands
- \setkeys{ukrainian}{babelshorthands=true}
-\else
- \setkeys{ukrainian}{babelshorthands=false}
-\fi
-
-\ifcsundef{initiate@active@char}{%
- \input{babelsh.def}%
- \initiate@active@char{"}%
- \shorthandoff{"}%
-}{}
-
-\def\ukrainian@shorthands{%
- \bbl@activate{"}%
- \def\language@group{ukrainian}%
-% \declare@shorthand{ukrainian}{"`}{„}%
-% \declare@shorthand{ukrainian}{"'}{“}%
-% \declare@shorthand{ukrainian}{"<}{«}%
-% \declare@shorthand{ukrainian}{">}{»}%
- \declare@shorthand{ukrainian}{""}{\hskip\z@skip}%
- \declare@shorthand{ukrainian}{"~}{\textormath{\leavevmode\hbox{-}}{-}}%
- \declare@shorthand{ukrainian}{"=}{\nobreak-\hskip\z@skip}%
- \declare@shorthand{ukrainian}{"|}{\textormath{\nobreak\discretionary{-}{}{\kern.03em}\allowhyphens}{}}%
- \declare@shorthand{ukrainian}{"-}{%
- \def\ukrainian@sh@tmp{%
- \if\ukrainian@sh@next-\expandafter\ukrainian@sh@emdash
- \else\expandafter\ukrainian@sh@hyphen\fi
- }%
- \futurelet\ukrainian@sh@next\ukrainian@sh@tmp}%
- \def\ukrainian@sh@hyphen{%
- \nobreak\-\bbl@allowhyphens}%
- \def\ukrainian@sh@emdash##1##2{\cdash-##1##2}%
- \def\cdash##1##2##3{%
- \def\tempx@{##3}%
- \def\tempa@{-}\def\tempb@{~}\def\tempc@{*}%
- \ifx\tempx@\tempa@\@Acdash\else
- \ifx\tempx@\tempb@\@Bcdash\else
- \ifx\tempx@\tempc@\@Ccdash\else
- \errmessage{Wrong usage of cdash}\fi\fi\fi%
- }%
- \def\@Acdash{\ifdim\lastskip>\z@\unskip\nobreak\hskip.2em\fi
- \cyrdash\hskip.2em\ignorespaces}%
- \def\@Bcdash{\leavevmode\ifdim\lastskip>\z@\unskip\fi
- \nobreak\cyrdash\penalty\exhyphenpenalty\hskip\z@skip\ignorespaces}%
- \def\@Ccdash{\leavevmode
- \nobreak\cyrdash\nobreak\hskip.35em\ignorespaces}%
- \ifx\cyrdash\undefined
- \def\cyrdash{\hbox to.8em{--\hss--}}
- \fi
- \declare@shorthand{ukrainian}{",}{\nobreak\hskip.2em\ignorespaces}%
-}
-
-\def\noukrainian@shorthands{%
- \@ifundefined{initiate@active@char}{}{\bbl@deactivate{"}}%
-}
-
-\def\captionsukrainian{%
- \def\refname{Література}%
- \def\abstractname{Анотація}%
- \def\bibname{Бібліоґрафія}%
- \def\prefacename{Вступ}%
- \def\chaptername{Розділ}%
- \def\appendixname{Додаток}%
- \def\contentsname{Зміст}%
- \def\listfigurename{Перелік ілюстрацій}%
- \def\listtablename{Перелік таблиць}%
- \def\indexname{Покажчик}%
- \def\authorname{Іменний покажчик}% babel has "Їменний покажчик"
- \def\figurename{Рис.}%
- \def\tablename{Табл.}%
- %\def\thepart{}%
- \def\partname{Частина}%
- \def\pagename{с.}%
- \def\seename{див.}%
- \def\alsoname{див.\ також}%
- \def\enclname{вкладка}%
- \def\ccname{копія}%
- \def\headtoname{До}%
- \def\proofname{Доведення}%
- \def\glossaryname{Словник термінів}%
-}
-
-\def\dateukrainian{%
- \def\today{\number\day~\ifcase\month\or
- січня\or
- лютого\or
- березня\or
- квітня\or
- травня\or
- червня\or
- липня\or
- серпня\or
- вересня\or
- жовтня\or
- листопада\or
- грудня\fi%
- \space\number\year~р.}%
-}
-
-% The following is based on some ideas from ruscor.sty
-\def\ukrainian@capsformat{%
- \def\@seccntformat##1{\csname pre##1\endcsname%
- \csname the##1\endcsname%
- \csname post##1\endcsname}%
- \def\@aftersepkern{\hspace{0.5em}}%
- \def\postchapter{.\@aftersepkern}%
- \def\postsection{.\@aftersepkern}%
- \def\postsubsection{.\@aftersepkern}%
- \def\postsubsubsection{.\@aftersepkern}%
- \def\postparagraph{.\@aftersepkern}%
- \def\postsubparagraph{.\@aftersepkern}%
- \def\prechapter{}%
- \def\presection{}%
- \def\presubsection{}%
- \def\presubsubsection{}%
- \def\preparagraph{}%
- \def\presubparagraph{}%
-}
-
-\newcommand{\ukrainiannumerals}[2]{\ukrainiannumber{#2}}
-\newcommand{\Ukrainiannumerals}[2]{\Ukrainiannumber{#2}}
-
-\def\ukrainiannumber#1{%
- \ifcyrillic@numerals
- \ifcyrillic@asbuk@numerals
- \serbian@asbuk@alph{#1}%
- \else
- \cyr@alph{#1}%
- \fi
- \else
- \number#1%
- \fi%
-}
-
-\def\Ukrainiannumber#1{%
- \ifcyrillic@numerals
- \ifcyrillic@asbuk@numerals
- \serbian@asbuk@Alph{#1}%
- \else
- \cyr@Alph{#1}%
- \fi
- \else
- \number#1%
- \fi%
-}
-
-\let\ukrainiannumeral=\ukrainiannumber
-\let\Ukrainiannumeral=\Ukrainiannumber
-
-\def\Asbuk#1{\expandafter\ukranian@asbuk@Alph\csname c@#1\endcsname}
-\def\asbuk#1{\expandafter\ukranian@asbuk@alph\csname c@#1\endcsname}
-
-\def\AsbukTrad#1{\expandafter\cyr@Alph\csname c@#1\endcsname}
-\def\asbukTrad#1{\expandafter\cyr@alph\csname c@#1\endcsname}
-
-% This is a poor man's cyrillic alphanumeric. It just uses the alphabet and
-% thus ends at 30.
-\def\ukranian@asbuk@Alph#1{\ifcase#1\or
- А\or Б\or В\or Г\or Д\or Е\or Ж\or
- З\or И\or К\or Л\or М\or Н\or О\or
- П\or Р\or С\or Т\or У\or Ф\or Х\or
- Ц\or Ч\or Ш\or Щ\or Э\or Ю\or Я%
- \else\xpg@ill@value{#1}{ukranian@asbuk@Alph}\fi%
-}
-
-\def\ukranian@asbuk@alph#1{\ifcase#1\or
- а\or б\or в\or г\or д\or е\or ж\or
- з\or и\or к\or л\or м\or н\or о\or
- п\or р\or с\or т\or у\or ф\or х\or
- ц\or ч\or ш\or щ\or э\or ю\or я%
- \else\xpg@ill@value{#1}{ukranian@asbuk@alph}\fi%
-}
-
-\def\ukrainian@numbers{%
- \let\@Alph\ukrainian@Alph%
- \let\@alph\ukrainian@alph%
-}
-
-\def\noukrainian@numbers{%
- \let\@Alph\latin@Alph%
- \let\@alph\latin@alph%
-}
-
-\def\noextras@ukrainian{%
- \def\@seccntformat##1{\csname the##1\endcsname\quad}% = LaTeX kernel
- \ifcyrillic@numerals\noukrainian@numbers\fi
- \noukrainian@shorthands%
-}
-
-\def\blockextras@ukrainian{%
- \ukrainian@capsformat%
- \ifcyrillic@numerals\ukrainian@numbers\fi
- \ifukrainian@babelshorthands\ukrainian@shorthands\fi
-}
-
-\def\inlineextras@ukrainian{%
- \ifukrainian@babelshorthands\ukrainian@shorthands\fi%
-}
-
-%%% stuff from Babel
-% make it optional?
-\def\sh{\mathop{\operator@font sh}\nolimits}
-\def\ch{\mathop{\operator@font ch}\nolimits}
-\def\tg{\mathop{\operator@font tg}\nolimits}
-\def\arctg{\mathop{\operator@font arctg}\nolimits}
-\def\arcctg{\mathop{\operator@font arcctg}\nolimits}
-\def\ctg{\mathop{\operator@font ctg}\nolimits}
-\def\cth{\mathop{\operator@font cth}\nolimits}
-\def\cosec{\mathop{\operator@font cosec}\nolimits}
-\def\Prob{\mathop{\kern\z@\mathsf{P}}\nolimits}
-\def\Variance{\mathop{\kern\z@\mathsf{D}}\nolimits}
-\def\nsd{\mathop{\mathrm{н.с.д.}}\nolimits}
-\def\nsk{\mathop{\mathrm{н.с.к.}}\nolimits}
-\def\NSD{\mathop{\mathrm{НСД}}\nolimits}
-\def\NSK{\mathop{\mathrm{НСК}}\nolimits}
-\def\nod{\mathop{\mathrm{н.о.д.}}\nolimits}
-\def\nok{\mathop{\mathrm{н.о.к.}}\nolimits}
-\def\NOD{\mathop{\mathrm{НОД}}\nolimits}
-\def\NOK{\mathop{\mathrm{НОК}}\nolimits}
-\def\Proj{\mathop{\mathrm{пр}}\nolimits}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-ukrainian.ldf>
-%<*gloss-uppersorbian.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-uppersorbian.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-uppersorbian.ldf}[polyglossia: module for upper sorbian]
-
-% We provide this as a babel alias
-
-\xpg@load@master@language{sorbian}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-uppersorbian.ldf>
-%<*gloss-urdu.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-urdu.ldf}
-% \begin{macrocode}
-%%% Adapted from a file contributed by Kamal Abdali
-\ProvidesFile{gloss-urdu.ldf}[polyglossia: module for Urdu]
-\ifluatex
- \xpg@warning{Urdu is not supported with LuaTeX.\MessageBreak
-I will proceed with the compilation, but\MessageBreak
-the output is not guaranteed to be correct\MessageBreak
-and may look very wrong.}
-\fi
-\RequireBidi
-\RequirePackage{arabicnumbers}
-\RequirePackage{hijrical}
-
-\PolyglossiaSetup{urdu}{
- bcp47=ur,
- script=Arabic,
- direction=RL,
- scripttag=arab,
- langtag=URD,
- hyphennames={urdu,nohyphenation},
- fontsetup=true,
- localnumeral=urdunumerals
- %TODO localalph={abjad,abjad}
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{urdu}{ur}
-
-\newif\if@western@numerals
-\def\tmp@western{western}
-\define@key{urdu}{numerals}[eastern]{%
- \def\@tmpa{#1}%
- \ifx\@tmpa\tmp@western\@western@numeralstrue%
- \else\@western@numeralsfalse%
- \fi}
-
-%% TODO USE boolkey instead !!!
-%this is needed for \abjad in arabicnumbers.sty
-\def\tmp@true{true}
-\define@key{urdu}{abjadjimnotail}[true]{%
- \def\@tmpa{#1}%
- \ifx\@tmpa\tmp@true\abjad@jim@notailtrue%
- \else
- \abjad@jim@notailfalse
- \fi}
-
-\newif\if@hijrical
-\def\tmp@hijri{hijri}
-\define@key{urdu}{calendar}[gregorian]{%
- \def\@tmpa{#1}%
- \ifx\@tmpa\tmp@hijri\@hijricaltrue%
- \else\@hijricalfalse%
- \fi}
-
-\define@key{urdu}{hijricorrection}[0]{%
- \gdef\@hijri@correction{#1}}%
-
-% This should set the defaults
-\setkeys{urdu}{calendar,numerals,hijricorrection}
-
-\def\urdugregmonth#1{\ifcase#1%
- \or جنوری\or فروری\or مارچ\or اپریل\or مئی\or جون\or جولائی\or اگست\or ستمبر\or اکتوبر\or نومبر\or دسمبر\fi}
-
-\def\urduhijrimonth#1{\ifcase#1%
- \or محرّم\or صفر\or ربیع الاوّل\or ربیع الثّانی\or جمادی الاوّل\or جمادی الثّانی\or رجب\or شعبان\or رمضان\or شوّال\or ذیقعدہ\or ذی الحجّہ\fi}
-
-%\Hijritoday is now locale-aware and will format the date with this macro:
-\DefineFormatHijriDate{urdu}{\@ensure@RTL{%
- \urdunumber{\value{Hijriday}}؍\space\urduhijrimonth{\value{Hijrimonth}}\space\urdunumber{\value{Hijriyear}}}}
-
-\def\captionsurdu{%
- \def\refname{\@ensure@RTL{حوالہ جات}}%
- \def\abstractname{\@ensure@RTL{ملخّص}}%
- \def\bibname{\@ensure@RTL{کتابیات}}%
- \def\prefacename{\@ensure@RTL{دیباچہ}}%
- \def\chaptername{\@ensure@RTL{باب}}%
- \def\appendixname{\@ensure@RTL{ضمیمہ}}%
- \def\contentsname{\@ensure@RTL{فہرست عنوانات}}%
- \def\listfigurename{\@ensure@RTL{فہرست اشکال}}%
- \def\listtablename{\@ensure@RTL{فہرست جداول}}%
- \def\indexname{\@ensure@RTL{اشاریہ}}%
- \def\figurename{\@ensure@RTL{شكل}}%
- \def\tablename{\@ensure@RTL{جدول}}%
- %\def\thepart{}%
- \def\partname{\@ensure@RTL{حصّہ}}%
- \def\pagename{\@ensure@RTL{صفحہ}}%
- \def\seename{\@ensure@RTL{ملاحظہ ہو}}%
- \def\alsoname{\@ensure@RTL{ایضاً}}%
- \def\enclname{\@ensure@RTL{منسلک}}%
- \def\ccname{\@ensure@RTL{نقل}}%
- \def\headtoname{\@ensure@RTL{بملاحظہ}}%
- \def\proofname{\@ensure@RTL{ثبوت}}%
- \def\glossaryname{\@ensure@RTL{لغت}}%
- \def\sectionname{\@ensure@RTL{فصل}}%
-}
-
-\def\dateurdu{%
- \def\today{%
- \if@hijrical
- \Hijritoday[\@hijri@correction]%
- \else
- \@ensure@RTL{\urdunumber\day؍\space\urdugregmonth{\month}%
- \space\urdunumber\year}%
- \fi}%
-}
-
-\def\urdunumber#1{%
- \if@western@numerals
- \number#1%
- \else
- %%FIXME use farsidigits instead???
- \protect\arabicdigits{\number#1}%
- \fi}
-
-\def\urdu@numbers{%
- \let\@alph\abjad%
- \let\@Alph\abjad%
-}
-
-\def\nourdu@numbers{%
- \let\@alph\latin@alph%
- \let\@Alph\latin@Alph%
-}
-
-\newcommand{\urdunumerals}[2]{\urdunumber{#2}}
-
-% Store original definition
-\let\xpg@save@arabic\@arabic
-
-\def\urdu@globalnumbers{%
- \let\@arabic\urdunumber%
- % For some reason \thefootnote needs to be set separately:
- \renewcommand\thefootnote{\localnumeral*{footnote}}%
-}
-
-\def\nourdu@globalnumbers{
- \let\@arabic\xpg@save@arabic%
-}
-
-% Save original \MakeUppercase definition
-\let\xpg@save@MakeUppercase\MakeUppercase
-
-\def\blockextras@urdu{%
- \def\MakeUppercase##1{##1}%
-}
-
-\def\noextras@urdu{%
- % restore original \MakeUppercase definition
- \let\MakeUppercase\xpg@save@MakeUppercase%
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-urdu.ldf>
-%<*gloss-usorbian.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-usorbian.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-usorbian.ldf}[polyglossia: module for upper sorbian]
-
-% We only provide this gloss for babel compatibility. Since usorbian is
-% a sorbian variety, we use 'sorbian' with variant 'upper' now.
-
-\xpg@load@master@language{sorbian}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-usorbian.ldf>
-%<*gloss-vietnamese.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-vietnamese.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-vietnamese.ldf}[polyglossia: module for vietnamese]
-%% Strings contributed by Daniel Owens < dhowens . pmbx . net >
-
-\PolyglossiaSetup{vietnamese}{
- bcp47=vi,
- hyphennames={nohyphenation},
- hyphenmins={2,2},
- langtag=VIT,
- frenchspacing=true,
- fontsetup=true,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{vietnamese}{vi}
-
-\def\captionsvietnamese{%
- \def\refname{Tài liệu}%
- \def\abstractname{Tóm tắt nội dung}%
- \def\bibname{Tài liệu tham khảo}%
- \def\prefacename{Lời nói đầu}%
- \def\chaptername{Chương}%
- \def\appendixname{Phụ lục}%
- \def\contentsname{Mục lục}%
- \def\listfigurename{Danh sách hình vẽ}%
- \def\listtablename{Danh sách bảng}%
- \def\indexname{Chỉ mục}%
- \def\figurename{Hình}%
- \def\tablename{Bảng}%
- \def\partname{Phần}%
- \def\pagename{Trang}%
- \def\seename{Xem}%
- \def\alsoname{Xem thêm}%
- \def\enclname{Kèm theo}%
- \def\ccname{Cùng gửi}%
- \def\headtoname{Gửi}%
- \def\proofname{Chứng minh}%
- \def\glossaryname{Từ điển chú giải}%
- }
-
-\def\datevietnamese{%
- \def\today{%
- Ngày \number\day\space
- tháng \number\month\space
- năm \number\year}%
- }
-
-% \end{macrocode}
-% \iffalse
-%</gloss-vietnamese.ldf>
-%<*gloss-welsh.ldf>
-% \fi
-% \clearpage
-%
-% \subsection{gloss-welsh.ldf}
-% \begin{macrocode}
-\ProvidesFile{gloss-welsh.ldf}[polyglossia: module for welsh]
-
-\PolyglossiaSetup{welsh}{
- bcp47=cy,
- hyphennames={welsh},
- hyphenmins={2,3},
- langtag=WEL,
- fontsetup=true,
-}
-
-% BCP-47 compliant aliases
-\setlanguagealias*{welsh}{cy}
-
-\providebool{welsh@formaldate}
-
-\define@choicekey*+{welsh}{date}[\xpg@val\xpg@nr]{long,short}[short]{%
- \ifcase\xpg@nr\relax
- % long:
- \welsh@formaldatetrue
- \or
- % accented:
- \welsh@formaldatefalse
- \fi
- \xpg@info{Option: Welsh, date=\xpg@val}%
-}{\xpg@warning{Unknown date value `#1'}}
-
-% Register default options
-\xpg@initialize@gloss@options{welsh}{date=short}
-
-\def\captionswelsh{%
- \def\refname{Cyfeiriadau}%
- \def\abstractname{Crynodeb}%
- \def\bibname{Llyfryddiaeth}%
- \def\prefacename{Rhagair}%
- \def\chaptername{Pennod}%
- \def\appendixname{Atodiad}%
- \def\contentsname{Cynnwys}%
- \def\listfigurename{Rhestr Ddarluniau}%
- \def\listtablename{Rhestr Dablau}%
- \def\indexname{Mynegai}%
- \def\figurename{Darlun}%
- \def\tablename{Taflen}%
- %\def\thepart{}%
- \def\partname{Rhan}%
- \def\pagename{tudalen}%
- \def\seename{gweler}%
- \def\alsoname{gweler hefyd}%
- \def\enclname{amgaeëdig}%
- \def\ccname{copïau}%
- \def\headtoname{At}% ‘at’ on letters meaning ‘to (a person)’;
- % ‘to (a place)’ is ‘i’ in Welsh
- \def\proofname{Prawf}%
- \def\glossaryname{Rhestr termau}%
- }
-
-\newif\ifwelsh@first
-\def\welsh@article#1{\welsh@firsttrue y\expandafter\welsh@article@do#1}
-\def\welsh@article@do#1{\ifwelsh@first\welsh@isvowel#1\ifwelsh@vowel r\space\welsh@vowelfalse\else\space\fi#1\welsh@firstfalse\fi}
-\newif\ifwelsh@vowel
-\def\welsh@isvowel#1{\show#1\ifx#1a\welsh@voweltrue\else\ifx#1u\welsh@voweltrue\else\ifx#1w\welsh@voweltrue\fi\fi\fi}% FIXME Add the other vowels, just for good measure
-
-\def\welsh@ordinal@long#1{%
- \ifcase#1\or cyntaf\or ail\or trydydd\or pedwerydd\or
- pumed\or chweched\or seithfed\or wythfed\or nawfed\or degfed\or unfed ar ddeg\or deuddegfed\or trydydd ar ddeg\or pedwerydd ar ddeg\or pymthegfed\or unfed ar bymtheg\or ail ar bymtheg\or deunawfed\or pedwerydd ar bymtheg\or ugeinfed\else\expandafter\welsh@ordinalplusxx@long#1\fi}
-
-\def\welsh@ordinalplusxx@long#1{%
- \let\dday=#1\advance\dday by -20\relax\welsh@ordinal@long\dday\space ar hugain%
-}
-
-\def\datewelsh{%
- \def\today{\ifwelsh@formaldate\formaltoday\else\standardtoday\fi}
- \def\standardtoday{%
- \ifcase\day\or 1af\or 2ail\or 3ydd\or 4ydd\or 5ed\or 6ed%
- \or 7fed\or 8fed\or 9fed\or 10fed\or 11eg\or 12fed\or 13eg\or
- 14eg\or 15fed\or 16eg\or 17eg\or 18fed\or 19eg\or
- 20fed\else\number\day ain\fi\space\ifcase\month\or
- Ionawr\or Chwefror\or Mawrth\or Ebrill\or
- Mai\or Mehefin\or Gorffennaf\or Awst\or
- Medi\or Hydref\or Tachwedd\or Rhagfyr\fi%
- \space\number\year}%
- \def\formaltoday{%
- \expandafter\welsh@article\welsh@ordinal@long\day\space o\space\ifcase\month\or
- Ionawr\or Chwefror\or Fawrth\or Ebrill\or Fai\or Fehefin\or Orffenaf\or Awst\or
- Fedi\or Hydref\or Dachwedd\or Ragfyr\fi%
- \space\number\year}%
-}
-
-% \end{macrocode}
-% \iffalse
-%</gloss-welsh.ldf>
-%<*arabicdigits.map>
-% \fi
-% \clearpage
-%
-% \subsection{arabicdigits.map}
-% \begin{macrocode}
-; FC ...
-LHSName "Digits"
-RHSName "ArabicDigits"
-
-pass(Unicode)
-U+0030 <> U+0660 ;
-U+0031 <> U+0661 ;
-U+0032 <> U+0662 ;
-U+0033 <> U+0663 ;
-U+0034 <> U+0664 ;
-U+0035 <> U+0665 ;
-U+0036 <> U+0666 ;
-U+0037 <> U+0667 ;
-U+0038 <> U+0668 ;
-U+0039 <> U+0669 ;
-
-% \end{macrocode}
-% \iffalse
-%</arabicdigits.map>
-%<*bengalidigits.map>
-% \fi
-% \clearpage
-%
-% \subsection{bengalidigits.map}
-% \begin{macrocode}
-; FC ...
-LHSName "Digits"
-RHSName "BengaliDigits"
-
-pass(Unicode)
-U+0030 <> U+09E6 ;
-U+0031 <> U+09E7 ;
-U+0032 <> U+09E8 ;
-U+0033 <> U+09E9 ;
-U+0034 <> U+09EA ;
-U+0035 <> U+09EB ;
-U+0036 <> U+09EC ;
-U+0037 <> U+09ED ;
-U+0038 <> U+09EE ;
-U+0039 <> U+09EF ;
-
-% \end{macrocode}
-% \iffalse
-%</bengalidigits.map>
-%<*devanagaridigits.map>
-% \fi
-% \clearpage
-%
-% \subsection{devanagaridigits.map}
-% \begin{macrocode}
-; FC ...
-LHSName "Digits"
-RHSName "DevanagariDigits"
-
-pass(Unicode)
-U+0030 <> U+0966 ;
-U+0031 <> U+0967 ;
-U+0032 <> U+0968 ;
-U+0033 <> U+0969 ;
-U+0034 <> U+096A ;
-U+0035 <> U+096B ;
-U+0036 <> U+096C ;
-U+0037 <> U+096D ;
-U+0038 <> U+096E ;
-U+0039 <> U+096F ;
-
-% \end{macrocode}
-% \iffalse
-%</devanagaridigits.map>
-%<*farsidigits.map>
-% \fi
-% \clearpage
-%
-% \subsection{farsidigits.map}
-% \begin{macrocode}
-; FC ...
-LHSName "Digits"
-RHSName "FarsiDigits"
-
-pass(Unicode)
-U+0030 <> U+06F0 ;
-U+0031 <> U+06F1 ;
-U+0032 <> U+06F2 ;
-U+0033 <> U+06F3 ;
-U+0034 <> U+06F4 ;
-U+0035 <> U+06F5 ;
-U+0036 <> U+06F6 ;
-U+0037 <> U+06F7 ;
-U+0038 <> U+06F8 ;
-U+0039 <> U+06F9 ;
-
-% \end{macrocode}
-% \iffalse
-%</farsidigits.map>
-%<*thaidigits.map>
-% \fi
-% \clearpage
-%
-% \subsection{thaidigits.map}
-% \begin{macrocode}
-; FC ...
-LHSName "Digits"
-RHSName "ThaiDigits"
-
-pass(Unicode)
-U+0030 <> U+0E50 ;
-U+0031 <> U+0E51 ;
-U+0032 <> U+0E52 ;
-U+0033 <> U+0E53 ;
-U+0034 <> U+0E54 ;
-U+0035 <> U+0E55 ;
-U+0036 <> U+0E56 ;
-U+0037 <> U+0E57 ;
-U+0038 <> U+0E58 ;
-U+0039 <> U+0E59 ;
-
-% \end{macrocode}
-% \iffalse
-%</thaidigits.map>
-%<*polyglossia-french.lua>
-% \fi
-% \clearpage
-%
-% \subsection{polyglossia-french.lua}
-% \begin{macrocode}
-require('polyglossia-punct')
-
-local function set_left_space(lang, char, kern, rubber)
- polyglossia.add_left_spaced_character(lang, char, kern, "space", rubber)
-end
-
-local function set_right_space(lang, char, kern, rubber)
- polyglossia.add_right_spaced_character(lang, char, kern, "space", rubber)
-end
-
-local function activate_french_punct(thincolonspace, autospaceguillemets)
- -- We need different language tags here to make switching of options possible
- -- within a paragraph.
- local lang = "french"
- if thincolonspace then
- lang = lang.."-thincolon"
- end
- if autospaceguillemets then
- lang = lang.."-autospace"
- end
-
- polyglossia.activate_punct(lang)
- polyglossia.clear_spaced_characters(lang)
-
- if thincolonspace then
- set_left_space(lang, ':', 0.5)
- else
- set_left_space(lang, ':', 1, true) -- stretchable and shrinkable space
- end
-
- set_left_space(lang, '!', 0.5)
- set_left_space(lang, '?', 0.5)
- set_left_space(lang, ';', 0.5)
- set_left_space(lang, '‼', 0.5)
- set_left_space(lang, '⁇', 0.5)
- set_left_space(lang, '⁈', 0.5)
- set_left_space(lang, '⁉', 0.5)
- set_left_space(lang, '‽', 0.5) -- U+203D (interrobang)
-
- if autospaceguillemets then
- set_left_space(lang, '»', 0.5)
- set_left_space(lang, '›', 0.5)
- set_right_space(lang, '«', 0.5)
- set_right_space(lang, '‹', 0.5)
- end
-end
-
-local function deactivate_french_punct()
- polyglossia.deactivate_punct()
-end
-
-polyglossia.activate_french_punct = activate_french_punct
-polyglossia.deactivate_french_punct = deactivate_french_punct
-% \end{macrocode}
-% \iffalse
-%</polyglossia-french.lua>
-%<*polyglossia-korean.lua>
-% \fi
-% \clearpage
-%
-% \subsection{polyglossia-korean.lua}
-% \begin{macrocode}
---
--- polyglossia-korean.lua
---
-
-local glyph_id = node.id"glyph"
-local hbox_id = node.id"hlist"
-local vbox_id = node.id"vlist"
-local glue_id = node.id"glue"
-local penalty_id = node.id"penalty"
-local disc_id = node.id"disc"
-
---
--- attr_korean: variant = plain (0), classic (1), modern (2)
---
-local attr_korean = luatexbase.attributes["xpg@attr@korean"]
-local attr_josa = luatexbase.attributes["xpg@attr@autojosa"]
-
---
--- characters after which linebreak is not allowed
---
-local nobr_after = {
- [0x28] = 1, -- ( LEFT PARENTHESIS
- [0x3C] = 1, -- < LESS-THAN SIGN
- [0x5B] = 1, -- [ LEFT SQUARE BRACKET
- [0x60] = 1, -- ` GRAVE ACCENT
- [0x7B] = 1, -- { LEFT CURLY BRACKET
- [0xAB] = 1, -- « LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
- [0x2018] = 1, -- ‘ LEFT SINGLE QUOTATION MARK
- [0x201C] = 1, -- “ LEFT DOUBLE QUOTATION MARK
- [0x2329] = 1, -- 〈 LEFT-POINTING ANGLE BRACKET
- [0x3008] = 1, -- 〈 LEFT ANGLE BRACKET
- [0x300A] = 1, -- 《 LEFT DOUBLE ANGLE BRACKET
- [0x300C] = 1, -- 「 LEFT CORNER BRACKET
- [0x300E] = 1, -- 『 LEFT WHITE CORNER BRACKET
- [0x3010] = 1, -- 【 LEFT BLACK LENTICULAR BRACKET
- [0x3014] = 1, -- 〔 LEFT TORTOISE SHELL BRACKET
- [0x3016] = 1, -- 〖 LEFT WHITE LENTICULAR BRACKET
- [0x3018] = 1, -- 〘 LEFT WHITE TORTOISE SHELL BRACKET
- [0x301A] = 1, -- 〚 LEFT WHITE SQUARE BRACKET
- [0x301D] = 1, -- 〝 REVERSED DOUBLE PRIME QUOTATION MARK
- [0xFE17] = 1, -- ︗ PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET
- [0xFE35] = 1, -- ︵ PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
- [0xFE37] = 1, -- ︷ PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
- [0xFE39] = 1, -- ︹ PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
- [0xFE3B] = 1, -- ︻ PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
- [0xFE3D] = 1, -- ︽ PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
- [0xFE3F] = 1, -- ︿ PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
- [0xFE41] = 1, -- ﹁ PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
- [0xFE43] = 1, -- ﹃ PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
- [0xFE47] = 1, -- ﹇ PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET
- [0xFE59] = 1, -- ﹙ SMALL LEFT PARENTHESIS
- [0xFE5B] = 1, -- ﹛ SMALL LEFT CURLY BRACKET
- [0xFE5D] = 1, -- ﹝ SMALL LEFT TORTOISE SHELL BRACKET
- [0xFF08] = 1, -- ( FULLWIDTH LEFT PARENTHESIS
- [0xFF3B] = 1, -- [ FULLWIDTH LEFT SQUARE BRACKET
- [0xFF5B] = 1, -- { FULLWIDTH LEFT CURLY BRACKET
- [0xFF5F] = 1, -- ⦅ FULLWIDTH LEFT WHITE PARENTHESIS
- [0xFF62] = 1, -- 「 HALFWIDTH LEFT CORNER BRACKET
-}
-
---
--- characters before which linebreak is not allowed
--- (currently, not much differences among the followings)
--- 1: normal chars
--- 2: hangul jamo vowels and trailing consonants
--- 3: kana small letters
--- 0: dashes (supress visible spacing)
---
-local nobr_before = setmetatable({
- [0x21] = 1, -- ! EXCLAMATION MARK
- [0x22] = 1, -- " QUOTATION MARK
- [0x27] = 1, -- ' APOSTROPHE
- [0x29] = 1, -- ) RIGHT PARENTHESIS
- [0x2C] = 1, -- , COMMA
- [0x2D] = 0, -- - HYPHEN-MINUS
- [0x2E] = 1, -- . FULL STOP
- [0x2F] = 0, -- / SOLIDUS
- [0x3A] = 0, -- : COLON
- [0x3B] = 1, -- ; SEMICOLON
- [0x3E] = 1, -- > GREATER-THAN SIGN
- [0x3F] = 1, -- ? QUESTION MARK
- [0x5C] = 0, -- \ REVERSE SOLIDUS
- [0x5D] = 1, -- ] RIGHT SQUARE BRACKET
- [0x7D] = 1, -- } RIGHT CURLY BRACKET
- [0x7E] = 0, -- ~ TILDE
- [0xB7] = 1, -- · MIDDLE DOT
- [0xBB] = 1, -- » RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
- [0x2013] = 0, -- – EN DASH
- [0x2014] = 0, -- — EM DASH
- [0x2015] = 1, -- ― HORIZONTAL BAR
- [0x2019] = 1, -- ’ RIGHT SINGLE QUOTATION MARK
- [0x201D] = 1, -- ” RIGHT DOUBLE QUOTATION MARK
- [0x2025] = 1, -- ‥ TWO DOT LEADER
- [0x2026] = 1, -- … HORIZONTAL ELLIPSIS
- [0x232A] = 1, -- 〉 RIGHT-POINTING ANGLE BRACKET
- [0x3001] = 1, -- 、 IDEOGRAPHIC COMMA
- [0x3002] = 1, -- 。 IDEOGRAPHIC FULL STOP
- [0x3005] = 1, -- 々 IDEOGRAPHIC ITERATION MARK
- [0x3009] = 1, -- 〉 RIGHT ANGLE BRACKET
- [0x300B] = 1, -- 》 RIGHT DOUBLE ANGLE BRACKET
- [0x300D] = 1, -- 」 RIGHT CORNER BRACKET
- [0x300F] = 1, -- 』 RIGHT WHITE CORNER BRACKET
- [0x3011] = 1, -- 】 RIGHT BLACK LENTICULAR BRACKET
- [0x3015] = 1, -- 〕 RIGHT TORTOISE SHELL BRACKET
- [0x3017] = 1, -- 〗 RIGHT WHITE LENTICULAR BRACKET
- [0x3019] = 1, -- 〙 RIGHT WHITE TORTOISE SHELL BRACKET
- [0x301B] = 1, -- 〛 RIGHT WHITE SQUARE BRACKET
- [0x301C] = 1, -- 〜 WAVE DASH
- [0x301E] = 1, -- 〞 DOUBLE PRIME QUOTATION MARK
- [0x301F] = 1, -- 〟 LOW DOUBLE PRIME QUOTATION MARK
- [0x3035] = 1, -- 〵 VERTICAL KANA REPEAT MARK LOWER HALF
- [0x303B] = 1, -- 〻 VERTICAL IDEOGRAPHIC ITERATION MARK
- [0x303C] = 1, -- 〼 MASU MARK
- [0x3041] = 3, -- ぁ HIRAGANA LETTER SMALL A
- [0x3043] = 3, -- ぃ HIRAGANA LETTER SMALL I
- [0x3045] = 3, -- ぅ HIRAGANA LETTER SMALL U
- [0x3047] = 3, -- ぇ HIRAGANA LETTER SMALL E
- [0x3049] = 3, -- ぉ HIRAGANA LETTER SMALL O
- [0x3063] = 3, -- っ HIRAGANA LETTER SMALL TU
- [0x3083] = 3, -- ゃ HIRAGANA LETTER SMALL YA
- [0x3085] = 3, -- ゅ HIRAGANA LETTER SMALL YU
- [0x3087] = 3, -- ょ HIRAGANA LETTER SMALL YO
- [0x308E] = 3, -- ゎ HIRAGANA LETTER SMALL WA
- [0x3095] = 3, -- ゕ HIRAGANA LETTER SMALL KA
- [0x3096] = 3, -- ゖ HIRAGANA LETTER SMALL KE
- [0x3099] = 1, -- COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
- [0x309A] = 1, -- COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
- [0x309B] = 1, -- ゛ KATAKANA-HIRAGANA VOICED SOUND MARK
- [0x309C] = 1, -- ゜ KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
- [0x309D] = 1, -- ゝ HIRAGANA ITERATION MARK
- [0x309E] = 1, -- ゞ HIRAGANA VOICED ITERATION MARK
- [0x30A0] = 1, -- ゠ KATAKANA-HIRAGANA DOUBLE HYPHEN
- [0x30A1] = 3, -- ァ KATAKANA LETTER SMALL A
- [0x30A3] = 3, -- ィ KATAKANA LETTER SMALL I
- [0x30A5] = 3, -- ゥ KATAKANA LETTER SMALL U
- [0x30A7] = 3, -- ェ KATAKANA LETTER SMALL E
- [0x30A9] = 3, -- ォ KATAKANA LETTER SMALL O
- [0x30C3] = 3, -- ッ KATAKANA LETTER SMALL TU
- [0x30E3] = 3, -- ャ KATAKANA LETTER SMALL YA
- [0x30E5] = 3, -- ュ KATAKANA LETTER SMALL YU
- [0x30E7] = 3, -- ョ KATAKANA LETTER SMALL YO
- [0x30EE] = 3, -- ヮ KATAKANA LETTER SMALL WA
- [0x30F5] = 3, -- ヵ KATAKANA LETTER SMALL KA
- [0x30F6] = 3, -- ヶ KATAKANA LETTER SMALL KE
- [0x30FB] = 1, -- ・ KATAKANA MIDDLE DOT
- [0x30FC] = 1, -- ー KATAKANA-HIRAGANA PROLONGED SOUND MARK
- [0x30FD] = 1, -- ヽ KATAKANA ITERATION MARK
- [0x30FE] = 1, -- ヾ KATAKANA VOICED ITERATION MARK
- [0xFE30] = 1, -- ︰ PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
- [0xFE31] = 1, -- ︱ PRESENTATION FORM FOR VERTICAL EM DASH
- [0xFE32] = 1, -- ︲ PRESENTATION FORM FOR VERTICAL EN DASH
- [0xFE36] = 1, -- ︶ PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
- [0xFE38] = 1, -- ︸ PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
- [0xFE3A] = 1, -- ︺ PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
- [0xFE3C] = 1, -- ︼ PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
- [0xFE3E] = 1, -- ︾ PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
- [0xFE40] = 1, -- ﹀ PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
- [0xFE42] = 1, -- ﹂ PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
- [0xFE44] = 1, -- ﹄ PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
- [0xFE48] = 1, -- ﹈ PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET
- [0xFE5A] = 1, -- ﹚ SMALL RIGHT PARENTHESIS
- [0xFE5C] = 1, -- ﹜ SMALL RIGHT CURLY BRACKET
- [0xFE5E] = 1, -- ﹞ SMALL RIGHT TORTOISE SHELL BRACKET
- [0xFF01] = 1, -- ! FULLWIDTH EXCLAMATION MARK
- [0xFF09] = 1, -- ) FULLWIDTH RIGHT PARENTHESIS
- [0xFF0C] = 1, -- , FULLWIDTH COMMA
- [0xFF0E] = 1, -- . FULLWIDTH FULL STOP
- [0xFF1A] = 1, -- : FULLWIDTH COLON
- [0xFF1B] = 1, -- ; FULLWIDTH SEMICOLON
- [0xFF1F] = 1, -- ? FULLWIDTH QUESTION MARK
- [0xFF3D] = 1, -- ] FULLWIDTH RIGHT SQUARE BRACKET
- [0xFF5D] = 1, -- } FULLWIDTH RIGHT CURLY BRACKET
- [0xFF60] = 1, -- ⦆ FULLWIDTH RIGHT WHITE PARENTHESIS
- [0xFF61] = 1, -- 。 HALFWIDTH IDEOGRAPHIC FULL STOP
- [0xFF63] = 1, -- 」 HALFWIDTH RIGHT CORNER BRACKET
- [0xFF64] = 1, -- 、 HALFWIDTH IDEOGRAPHIC COMMA
- [0xFF65] = 1, -- ・ HALFWIDTH KATAKANA MIDDLE DOT
- [0xFF9E] = 1, -- ゙ HALFWIDTH KATAKANA VOICED SOUND MARK
- [0xFF9F] = 1, -- ゚ HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
-}, { __index = function(_,c)
- if c >= 0x1160 and c <= 0x11FF then return 2 end
- if c >= 0xD7B0 and c <= 0xD7FF then return 2 end
- if c >= 0x302A and c <= 0x302F then return 1 end
- if c >= 0x31F0 and c <= 0x31FF then return 3 end
- if c >= 0xFF67 and c <= 0xFF70 then return 3 end
- if c >= 0xFE00 and c <= 0xFE0F then return 1 end
- if c >= 0xFE10 and c <= 0xFE19 and not (c == 0xFE17) then return 1 end
- if c >= 0xFE50 and c <= 0xFE58 then return 1 end
- if c >= 0xE0100 and c <= 0xE01EF then return 1 end
- end
-})
-
---
--- whether 'c' is a cjk character
---
-local function is_cjk (c)
- return c >= 0xAC00 and c <= 0xD7FF
- or c >= 0x1100 and c <= 0x11FF
- or c >= 0xA960 and c <= 0xA97F
- or c >= 0x2E80 and c <= 0x9FFF
- or c >= 0xF900 and c <= 0xFAFF
- or c >= 0xFE10 and c <= 0xFE1F
- or c >= 0xFE30 and c <= 0xFE6F
- or c >= 0xFF00 and c <= 0xFFEF
- or c >= 0x1F100 and c <= 0x1F2FF
- or c >= 0x20000 and c <= 0x2FA1F
- or nobr_after[c] and c > 0x2014
- or nobr_before[c] and c > 0x2014
-end
-
---
--- classify cjk characters
--- 1: openings
--- 2: closings
--- 3: centered chars
--- 4: full stops
--- 5: ellipses
--- 6: exclamation and question marks
--- 0: all others
---
-local charclass = setmetatable({
- [0x2018] = 1, [0x201C] = 1, [0x2329] = 1, [0x3008] = 1,
- [0x300A] = 1, [0x300C] = 1, [0x300E] = 1, [0x3010] = 1,
- [0x3014] = 1, [0x3016] = 1, [0x3018] = 1, [0x301A] = 1,
- [0x301D] = 1, [0xFE17] = 1, [0xFE35] = 1, [0xFE37] = 1,
- [0xFE39] = 1, [0xFE3B] = 1, [0xFE3D] = 1, [0xFE3F] = 1,
- [0xFE41] = 1, [0xFE43] = 1, [0xFE47] = 1, [0xFF08] = 1,
- [0xFF3B] = 1, [0xFF5B] = 1, [0xFF5F] = 1, [0xFF62] = 1,
- [0x2019] = 2, [0x201D] = 2, [0x232A] = 2, [0x3001] = 2,
- [0x3009] = 2, [0x300B] = 2, [0x300D] = 2, [0x300F] = 2,
- [0x3011] = 2, [0x3015] = 2, [0x3017] = 2, [0x3019] = 2,
- [0x301B] = 2, [0x301E] = 2, [0x301F] = 2, [0xFE10] = 2,
- [0xFE11] = 2, [0xFE18] = 2, [0xFE36] = 2, [0xFE38] = 2,
- [0xFE3A] = 2, [0xFE3C] = 2, [0xFE3E] = 2, [0xFE40] = 2,
- [0xFE42] = 2, [0xFE44] = 2, [0xFE48] = 2, [0xFF09] = 2,
- [0xFF0C] = 2, [0xFF3D] = 2, [0xFF5D] = 2, [0xFF60] = 2,
- [0xFF63] = 2, [0xFF64] = 2, [0x00B7] = 3, [0x30FB] = 3,
- [0xFF1A] = 3, [0xFF1B] = 3, [0xFF65] = 3, [0x3002] = 4,
- [0xFE12] = 4, [0xFF0E] = 4, [0xFF61] = 4, [0x2015] = 5,
- [0x2025] = 5, [0x2026] = 5, [0xFE19] = 5, [0xFE30] = 5,
- [0xFE31] = 5, [0xFE15] = 6, [0xFE16] = 6, [0xFF01] = 6,
- [0xFF1F] = 6,
-}, { __index = function() return 0 end })
-
---
--- table for spacing between char classes
--- 1 stands for 0.5*fontsize when variant=classic
---
-local intercharclass = { [0] =
- { [0] = nil, {1,1}, nil, {.5,.5} },
- { [0] = nil, nil, nil, {.5,.5} },
- { [0] = {1,1}, {1,1}, nil, {.5,.5}, nil, {1,1}, {1,1} },
- { [0] = {.5,.5},{.5,.5},{.5,.5},{1,.5}, {.5,.5},{.5,.5},{.5,.5} },
- { [0] = {1,0}, {1,0}, nil, {1.5,.5},nil, {1,0}, {1,0} },
- { [0] = nil, {1,1}, nil, {.5,.5} },
- { [0] = {1,1}, {1,1}, nil, {.5,.5} },
-}
-
---
--- get a new penalty node
---
-local function get_new_penalty (p)
- local penalty = node.new("penalty")
- penalty.penalty = p
- return penalty
-end
-
---
--- get a new glue node
---
-local function get_new_glue (...)
- local glue = node.new("glue")
- node.setglue(glue, ...)
- return glue
-end
-
---
--- return 0.5*fontsize of given fontid
--- space: true if variant=modern; then 0.5*interword_space
---
-local function get_font_size (fid, space)
- local size = font.getparameters(fid)
- if space then
- size = size and size.space or 196608
- else
- size = size and size.quad or 655360
- end
- return size/2
-end
-
---
--- charclass 1 thru 4 will be packed in \hbox to 0.5em{\hss? curr \hss?}
--- when variant=classic/modern
---
-local function glyph_to_box (head, curr, class)
- local g, h = curr
- local size = get_font_size(g.font)
- head, curr = node.remove(head, curr)
- g.next, g.prev = nil, nil
- local hss = get_new_glue(0, 65536, 65536, 2, 2)
- if class == 1 then
- h, hss.next, g.prev = hss, g, hss
- elseif class == 2 or class == 4 then
- h, g.next, hss.prev = g, hss, g
- else
- local hss2 = node.copy(hss)
- h, hss.next, g.prev, g.next, hss2.prev = hss, g, hss, hss2, g
- end
- h = nodes.simple_font_handler(h)
- local box = node.hpack(h, size, "exactly")
- if curr then
- head, curr = node.insert_before(head, curr, box)
- else
- head, curr = node.insert_after(head, node.tail(head), box)
- end
- return head, curr
-end
-
---
--- insert spacing defined as charclass[a][b] between a and b
--- f: fontid
--- var: variant = plain, classic, modern
--- cc: charclass of current char
--- nc: charclass of next char
--- nobr: linebreak is not allowed
---
-local function insert_cjk_penalty_glue (head, curr, f, var, cc, nc, nobr)
- if nobr or cc == 1 or nc > 1 then
- local penalty = get_new_penalty(10000)
- head, curr = node.insert_after(head, curr, penalty)
- end
- local factor = get_font_size(f, var == 2)
- local t = intercharclass[cc][nc]
- local glue = get_new_glue(t[1]*factor, nil, t[2]*factor)
- head, curr = node.insert_after(head, curr, glue)
- return head, curr
-end
-
---
--- insert inter-character spacing in other normal cases
--- f: fontid
--- var: variant = plain, classic, modern
--- x: true between cjk and non-cjk (a little more spacing)
---
-local function insert_penalty_glue (head, curr, f, var, x)
- if var ~= 1 then
- local penalty = get_new_penalty(50)
- head, curr = node.insert_after(head, curr, penalty)
- end
- local size, glue = get_font_size(f, x and var == 2)
- if x then
- glue = get_new_glue(size/2, size/4, size/8)
- else
- glue = get_new_glue(0, size/10, size/50)
- end
- head, curr = node.insert_after(head, curr, glue)
- return head, curr
-end
-
---
--- main process for linebreak and inter-character spacing
--- lb: true if pre_linebreak_filter
---
-local function korean_break (head, lb)
- local curr = head
- while curr do
- if curr.id == glyph_id then
- local var = node.has_attribute(curr, attr_korean)
- if var then
- local c, f = curr.char or 0, curr.font or 0
- local cc, cjkc = charclass[c], is_cjk(c)
-
- -- compress cjk punctuations when charclass is 1 thru 4
- if var > 0 and cc > 0 and cc < 5 then
- head, curr = glyph_to_box(head, curr, cc)
- end
-
- local next = curr.next
- if next and next.id == glyph_id then
- local n = next.char or 0
- local nc = charclass[n]
- local nobr = nobr_before[n] or nobr_after[c]
-
- -- insert spacing as of intercharclass
- if var > 0 and intercharclass[cc][nc] then
- head, curr = insert_cjk_penalty_glue(head, curr, f, var, cc, nc, nobr)
-
- -- or insert spacing when linebreak is allowed
- elseif not nobr then
- local cjkn = is_cjk(n)
-
- -- if curr or next is cjk char
- if cjkc or cjkn then
-
- -- if between cjk and non-cjk
- if var > 0 and not (cjkc and cjkn) and nobr_before[c] ~= 0 then
- head, curr = insert_penalty_glue(head, curr, f, var, true)
-
- -- or under pre_linebreak_filter
- elseif lb then
- head, curr = insert_penalty_glue(head, curr, f, var)
- end
- end
- end
- end
- end
- end
- curr = curr.next
- end
- return head
-end
-
---
--- process for reordering hangul tone marks (U+302E, U+302F)
--- some hangul fonts (eg. Noto CJK) are so designed that hangul tone marks
--- should be moved to the first position of a syllable.
--- Currently, this functionality is not provided by luaotfload.
---
-local function reorder_tm (head)
- local curr, tone = node.slide(head)
- while curr do
- if curr.id == glyph_id and node.has_attribute(curr, attr_korean) then
- local f = font.getfont(curr.font) or font.fonts[curr.font]
- if f and f.hb then -- harfbuzz do the right thing
- tone = nil
- else
- local c, wd = curr.char or 0, curr.width or 0
- if (c == 0x302E or c == 0x302F) and wd > 0 then
- tone = curr
- elseif tone and not nobr_before[c] then
- head = node.remove(head, tone)
- tone.next, tone.prev = nil, nil
- head, curr = node.insert_before(head, curr, tone)
- tone = nil
- end
- end
- end
- curr = curr.prev
- end
- return head
-end
-
---
--- automatic josa selection
---
-local josa_table = {
- -- consonant ㄹ, vowel, other consonants
- [0xAC00] = {0xC774, 0xAC00, 0xC774}, -- 가 => 이, 가, 이
- [0xC740] = {0xC740, 0xB294, 0xC740}, -- 은 => 은, 는, 은
- [0xC744] = {0xC744, 0xB97C, 0xC744}, -- 을 => 을, 를, 을
- [0xC640] = {0xACFC, 0xC640, 0xACFC}, -- 와 => 과, 와, 과
- [0xC73C] = {nil, nil, 0xC73C}, -- 으(로) => , , 으
- [0xC774] = {0xC774, nil, 0xC774}, -- 이(라) => 이, , 이
-}
-
---
--- helper function for number-like characters
---
-local function josa_char_num (t, c)
- c = c % 10 + 0x30
- return t[c] or 2
-end
-
---
--- decide josa selection
---
-local josa_code = setmetatable({
- [0x30] = 3, [0x31] = 1, [0x33] = 3, [0x36] = 3, [0x37] = 1,
- [0x38] = 1, [0x4C] = 1, [0x4D] = 3, [0x4E] = 3, [0x6C] = 1,
- [0x6D] = 3, [0x6E] = 3, [0xFB02] = 1, [0xFB04] = 1,
-},{ __index = function(t,c)
- if c >= 0xAC00 and c <= 0xD7A3 then
- c = (c - 0xAC00) % 28 + 0x11A7
- end
- if c >= 0x11A8 and c <= 0x11FF then
- if c == 0x11AF then return 1 end
- return 3
- end
- if c >= 0xD7CB and c <= 0xD7FB then return 3 end
- if c >= 0x2170 and c <= 0x217F then c = c - 0x10 end
- if c >= 0x2160 and c <= 0x216F then
- if c >= 0x216C then return 3 end
- return josa_char_num(t, c - 0x215F)
- end
- if c >= 0x2460 and c <= 0x2473 then return josa_char_num(t, c - 0x245F) end
- if c >= 0x2474 and c <= 0x2487 then return josa_char_num(t, c - 0x2473) end
- if c >= 0x2488 and c <= 0x249B then return josa_char_num(t, c - 0x2487) end
- if c >= 0x249C and c <= 0x24B5 then return t[c - 0x249C + 0x61] or 2 end
- if c >= 0x24B6 and c <= 0x24CF then return t[c - 0x24B6 + 0x61] or 2 end
- if c >= 0x24D0 and c <= 0x24E9 then return t[c - 0x24D0 + 0x61] or 2 end
- if c >= 0x3131 and c <= 0x318E then
- if c == 0x3139 then return 1 end
- if c >= 0x314F and c <= 0x3163 or c >= 0x3187 then return 2 end
- return 3
- end
- if c >= 0x3260 and c <= 0x327E then c = c - 0x60 end
- if c >= 0x3200 and c <= 0x321E then
- if c == 0x3203 then return 1 end
- if c >= 0x320E then return 2 end
- return 3
- end
- if c >= 0xFF10 and c <= 0xFF19 then return josa_char_num(t, c - 0xFF10) end
- if c >= 0xFF21 and c <= 0xFF3A then return t[c - 0xFF21 + 0x61] or 2 end
- if c >= 0xFF41 and c <= 0xFF5A then return t[c - 0xFF41 + 0x61] or 2 end
- return 2
- end
-})
-
---
--- obtain char that comes just before the josa
---
-local function get_prev_char (p)
- while p do
- if p.id == glyph_id then
- local pc = p.char or 0
- if not nobr_after[pc] then
- if not nobr_before[pc] or nobr_before[pc] >= 2 then
- return pc
- end
- end
- elseif p.id == hbox_id or p.id == vbox_id then
- local pc = get_prev_char(node.slide(p.head))
- if pc then return pc end
- end
- p = p.prev
- end
-end
-
---
--- main process of josa selection
---
-local function auto_josa (head)
- local curr, tofree = head, {}
- while curr do
- if curr.id == glyph_id then
- local josa = node.has_attribute(curr, attr_josa)
- if josa then
- local cc = curr.char or 0
- if josa == 0 then
- josa = josa_code[get_prev_char(curr.prev) or 0x30]
- end
- if cc == 0xC774 then
- local n = curr.next
- if n and n.char and n.char >= 0xAC00 and n.char <= 0xD7A3 then
- else
- cc = 0xAC00
- end
- end
- local new = josa_table[cc]
- if new then
- cc = new[josa]
- if cc then
- curr.char = cc
- else
- head = node.remove(head, curr)
- table.insert(tofree, curr)
- end
- end
- node.unset_attribute(curr, attr_josa)
- end
- end
- curr = curr.next
- end
- for _,v in ipairs(tofree) do node.free(v) end
- return head
-end
-
---
--- now register to luatex callbacks
--- As char value of glyphs can be changed by opentype GSUB process,
--- we have to occupy the first position among callback functions.
---
-local prepend_to_callback
-if luatexbase.base_add_to_callback then
- prepend_to_callback = function(name, func, desc)
- luatexbase.add_to_callback(name, func, desc, 1)
- end
-else
- prepend_to_callback = function(name, func, desc)
- local t = { {func, desc} }
- for _,v in ipairs(luatexbase.callback_descriptions(name)) do
- table.insert(t, {luatexbase.remove_from_callback(name, v)})
- end
- for _,v in ipairs(t) do
- luatexbase.add_to_callback(name, v[1], v[2])
- end
- end
-end
-
-prepend_to_callback ("pre_linebreak_filter",
- function(head)
- head = auto_josa(head)
- head = korean_break(head, true)
- head = reorder_tm(head)
- return head
- end,
- "polyglossia.lang_korean")
-
-prepend_to_callback ("hpack_filter",
- function(head)
- head = auto_josa(head)
- head = korean_break(head)
- head = reorder_tm(head)
- return head
- end,
- "polyglossia.lang_korean")
-
--- vim:ft=lua:tw=0:sw=4:ts=4:expandtab
-% \end{macrocode}
-% \iffalse
-%</polyglossia-korean.lua>
-%<*polyglossia-latin.lua>
-% \fi
-% \clearpage
-%
-% \subsection{polyglossia-latin.lua}
-% \begin{macrocode}
-require('polyglossia-punct')
-
--- For ecclesiastic Latin (and sometimes for Italian) a very small space is
--- used for the punctuation. The ecclesiastic package uses a space of
--- 0.3\fontdimen2, where \fontdimen2 is a interword space, which is typically
--- between 1/4 and 1/3 of a quad. We choose a half of a \thinspace here.
-local hairspace = 0.08333 -- 1/12
-
-local function space_left(char)
- polyglossia.add_left_spaced_character('latin', char, hairspace, 'quad')
-end
-
-local function space_right(char)
- polyglossia.add_right_spaced_character('latin', char, hairspace, 'quad')
-end
-
-polyglossia.clear_spaced_characters('latin')
-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_latin_punct()
- polyglossia.activate_punct('latin')
-end
-
-local function deactivate_latin_punct()
- polyglossia.deactivate_punct()
-end
-
-polyglossia.activate_latin_punct = activate_latin_punct
-polyglossia.deactivate_latin_punct = deactivate_latin_punct
-% \end{macrocode}
-% \iffalse
-%</polyglossia-latin.lua>
-%<*polyglossia-punct.lua>
-% \fi
-% \clearpage
-%
-% \subsection{polyglossia-punct.lua}
-% \begin{macrocode}
-require('polyglossia') -- just in case...
-
-local add_to_callback = luatexbase.add_to_callback
-local remove_from_callback = luatexbase.remove_from_callback
-local priority_in_callback = luatexbase.priority_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 getnext = node.getnext
-local getprev = node.getprev
-
--- node types according to node.types()
-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"
-
--- we need some node subtypes
-local userkern = 1
-local userskip = 0
-local removable_skip = {
- [0] = true, -- userskip
- [13] = true, -- spaceskip
- [14] = true, -- xspaceskip
-}
-
--- we make a new node, so that we can copy it later on
-local kern_node = new_node(kern_code)
-kern_node.subtype = userkern -- this kern can be removed later on
-
-local function get_kern_node(dim)
- local n = node_copy(kern_node)
- n.kern = dim
- return n
-end
-
-local glue_node = new_node(glue_code)
-glue_node.subtype = userskip
-
-local function get_glue_node(dim, stretch, shrink)
- local n = node_copy(glue_node)
- n.width = dim
- n.stretch = stretch
- n.shrink = shrink
- return n
-end
-
-local penalty_node = new_node(penalty_code)
-penalty_node.penalty = 10000
-
-local function get_penalty_node()
- return node_copy(penalty_node)
-end
-
--- all possible space characters according to section 6.2 of the Unicode Standard
--- https://www.unicode.org/versions/Unicode12.0.0/ch06.pdf
-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
-}
-
--- all left bracket characters, referenced by their Unicode slot
-local left_bracket_chars = {
- [0x28] = true, -- left parenthesis
- [0x5B] = true, -- left square bracket
- [0x7B] = true, -- left curly bracket
- [0x27E8] = true -- mathematical left angle bracket
-}
-
--- all right bracket characters, referenced by their Unicode slot
-local right_bracket_chars = {
- [0x29] = true, -- right parenthesis
- [0x5D] = true, -- right square bracket
- [0x7D] = true, -- right curly bracket
- [0x27E9] = true -- mathematical right angle bracket
-}
-
--- question and exclamation marks, referenced by their Unicode slot
-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 ⁉
-}
-
--- from nodes-tst.lua, adapted
-local function somespace(n)
- if n then
- local id, subtype = n.id, n.subtype
- if id == glue_code then
- -- it is dangerous to remove all the type of glue
- return removable_skip[subtype]
- elseif id == kern_code then
- -- remove only user's kern
- 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
-
--- idem
-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("polyglossia_punct")
-
-local lang_id = {}
-local lang_counter = 0
-local left_space = {}
-local right_space = {}
-
-local function ensure_lang_id(lang)
- if not lang_id[lang] then
- lang_counter = lang_counter + 1
- lang_id[lang] = lang_counter
- end
- return lang_id[lang]
-end
-
-local function clear_spaced_characters(lang)
- local id = ensure_lang_id(lang)
- left_space[id] = {}
- right_space[id] = {}
-end
-
-local function illegal_unit(unit)
- if unit then
- texio.write_nl('Illegal spacing unit "'..unit..'".')
- else
- texio.write_nl('Spacing unit is a nil value.')
- end
-end
-
-local function add_left_spaced_character(lang, char, kern, unit, rubber)
--- The parameter kern is a number meant as a fraction of the unit.
--- The unit can be "quad" (1em) or "space" (interword space).
--- The parameter rubber is a Boolean value indicating if the inserted space is
--- stretchable and shrinkable (only relevant if the unit is "space").
- local id = ensure_lang_id(lang)
- if unit == "quad" or unit == "space" then
- left_space[id][char] = {}
- left_space[id][char]["kern"] = kern
- left_space[id][char]["unit"] = unit
- left_space[id][char]["rubber"] = rubber
- else
- illegal_unit(unit)
- end
-end
-
-local function add_right_spaced_character(lang, char, kern, unit, rubber)
- local id = ensure_lang_id(lang)
- if unit == "quad" or unit == "space" then
- right_space[id][char] = {}
- right_space[id][char]["kern"] = kern
- right_space[id][char]["unit"] = unit
- right_space[id][char]["rubber"] = rubber
- else
- illegal_unit(unit)
- end
-end
-
--- from typo-spa.lua, adapted
-local function process(head)
- local current = head
- while current do
- local id = current.id
- if id == glyph_code then
- local attr = has_attribute(current, punct_attr)
- if attr then
- local char = utf8.char(current.char) -- requires Lua 5.3
- local leftspace = left_space[attr][char]
- local rightspace = right_space[attr][char]
- if leftspace or rightspace then
- local fontparameters = fonts.hashes.parameters[current.font]
- local unit, stretch, shrink, spacing_node
- if leftspace and fontparameters then
- local prev = getprev(current)
- local space_exception = false
- if prev then
- local prevprev = getprev(prev)
- -- do not add space after left (opening) bracket and between question/exclamation marks
- space_exception = someleftbracket(prev) or question_exclamation_sequence(prev, current)
- if somespace(prev) then
- -- TODO: there is a question here: do we override a preceding space or not?...
- if somepenalty(prevprev, 10000) then
- head = remove_node(head, prevprev)
- end
- head = remove_node(head, prev)
- end
- end
- if leftspace.unit == "quad" then
- unit = fontparameters.quad
- spacing_node = get_kern_node(leftspace.kern*unit)
- elseif leftspace.unit == "space" then
- unit = fontparameters.space
- if leftspace.rubber then
- stretch = leftspace.kern*fontparameters.space_stretch
- shrink = leftspace.kern*fontparameters.space_shrink
- spacing_node = get_glue_node(leftspace.kern*unit, stretch, shrink)
- head = insert_node_before(head, current, get_penalty_node())
- else
- spacing_node = get_kern_node(leftspace.kern*unit)
- end
- end
- if not space_exception then
- head = insert_node_before(head, current, spacing_node)
- end
- end
- if rightspace and fontparameters then
- local next = getnext(current)
- local space_exception = false
- if next then
- -- do not add space before right (closing) bracket
- space_exception = somerightbracket(next)
- local nextnext = getnext(next)
- if somepenalty(next, 10000) and somespace(nextnext) then
- head = remove_node(head, next)
- head = remove_node(head, nextnext)
- elseif somespace(next) then
- head = remove_node(head, next)
- end
- end
- if rightspace.unit == "quad" then
- unit = fontparameters.quad
- spacing_node = get_kern_node(rightspace.kern*unit)
- elseif rightspace.unit == "space" then
- unit = fontparameters.space
- if rightspace.rubber then
- stretch = rightspace.kern*fontparameters.space_stretch
- shrink = rightspace.kern*fontparameters.space_shrink
- spacing_node = get_glue_node(rightspace.kern*unit, stretch, shrink)
- if not space_exception then
- head, current = insert_node_after(head, current, get_penalty_node())
- end
- else
- spacing_node = get_kern_node(rightspace.kern*unit)
- end
- end
- if not space_exception then
- head, current = insert_node_after(head, current, spacing_node)
- end
- end
- end
- end
- elseif id == math_code then
- -- warning: this is a feature of luatex > 0.76
- current = end_of_math(current) -- weird, can return nil .. no math end?
- end
- current = getnext(current) -- no error even if current is nil
- end
- return head
-end
-
-local function activate(lang)
- local id = ensure_lang_id(lang)
- -- We set the punctuation attribute to a language id here. This is
- -- important to be able to intermix languages with different spacings
- -- in one paragraph.
- tex.setattribute(punct_attr, id)
- for _, callback_name in ipairs{ "pre_linebreak_filter", "hpack_filter" } do
- if not priority_in_callback(callback_name, "polyglossia-punct.process") then
- add_to_callback(callback_name, process, "polyglossia-punct.process", 1)
- end
- end
-end
-
-local function deactivate()
- tex.setattribute(punct_attr, -0x7FFFFFFF) -- this value means "unset"
- -- Though it would make compilation slightly faster, it is not possible to
- -- safely uncomment the following lines. Imagine the following case: you
- -- start a paragraph by some spaced punctuation text, then, in the same
- -- paragraph, you change the language to something else, and thus call the
- -- following lines. This means that, at the end of the paragraph, the
- -- function won't be in the callback, so the beginning of the paragraph
- -- won't be processed by it.
- -- if priority_in_callback(callback_name, "polyglossia-punct.process") then
- -- remove_from_callback(callback_name, "polyglossia-punct.process")
- -- end
-end
-
-polyglossia.activate_punct = activate
-polyglossia.deactivate_punct = deactivate
-polyglossia.add_left_spaced_character = add_left_spaced_character
-polyglossia.add_right_spaced_character = add_right_spaced_character
-polyglossia.clear_spaced_characters = clear_spaced_characters
-% \end{macrocode}
-% \iffalse
-%</polyglossia-punct.lua>
-%<*polyglossia-sanskrit.lua>
-% \fi
-% \clearpage
-%
-% \subsection{polyglossia-sanskrit.lua}
-% \begin{macrocode}
-require('polyglossia-punct')
-
--- How do we now, in Lua, what a \thinspace is? In the LaTeX source (latex.ltx)
--- it is defined as:
--- \def\thinspace{\leavevmode@ifvmode\kern .16667em }
--- I see no way of seeing if it has been overriden or not. So we stick to this
--- value.
-local thinspace = 0.16667 -- 1/6
-
-local function space_left(char)
- polyglossia.add_left_spaced_character('sanskrit', char, thinspace, 'quad')
-end
-
-polyglossia.clear_spaced_characters('sanskrit')
-space_left('!')
-space_left('?')
-space_left('‼')
-space_left('⁇')
-space_left('⁈')
-space_left('⁉')
-space_left('‽') -- U+203D (interrobang)
-space_left(':')
-space_left(';')
-space_left('।') -- danda, U+0964
-space_left('॥') -- double danda, U+0965
-
-local function activate_sanskrit_punct()
- polyglossia.activate_punct('sanskrit')
-end
-
-local function deactivate_sanskrit_punct()
- polyglossia.deactivate_punct()
-end
-
-polyglossia.activate_sanskrit_punct = activate_sanskrit_punct
-polyglossia.deactivate_sanskrit_punct = deactivate_sanskrit_punct
-% \end{macrocode}
-% \iffalse
-%</polyglossia-sanskrit.lua>
-%<*polyglossia-tibt.lua>
-% \fi
-% \clearpage
-%
-% \subsection{polyglossia-tibt.lua}
-% \begin{macrocode}
-require('polyglossia') -- just in case...
-
-local add_to_callback = luatexbase.add_to_callback
-local remove_from_callback = luatexbase.remove_from_callback
-local priority_in_callback = luatexbase.priority_in_callback
-
-local next, type = next, type
-
-local nodes, fonts, node = nodes, fonts, node
-
-local nodecodes = nodes.nodecodes --- <= preloaded node.types()
-
-local insert_node_before = node.insert_before
-local insert_node_after = node.insert_after
-local remove_node = nodes.remove
-local copy_node = node.copy
-local has_attribute = node.has_attribute
-
-local end_of_math = node.end_of_math
-if not end_of_math then -- luatex < .76
- local traverse_nodes = node.traverse_id
- local math_code = nodecodes.math
- local end_of_math = function (n)
- for n in traverse_nodes(math_code, n.next) do
- return n
- end
- end
-end
-
--- node types as of April 2013
-local glyph_code = nodecodes.glyph
-local penalty_code = nodecodes.penalty
-local kern_code = nodecodes.kern
-
--- we make a new node, so that we can copy it later on
-local penalty_node = node.new(penalty_code)
-penalty_node.penalty = 50 -- corresponds to the penalty LaTeX sets at explicit hyphens
-
-local function get_penalty_node()
- return copy_node(penalty_node)
-end
-
-local xpgtibtattr = luatexbase.attributes['xpg@tibteol']
-
-local tsheg = unicode.utf8.byte('་')
-
--- from typo-spa.lua
-local function process(head)
- local start = head
- -- head is always begin of par (whatsit), so we have at least two prev nodes
- -- penalty followed by glue
- while start do
- local id = start.id
- if id == glyph_code then
- local attr = has_attribute(start, xpgtibtattr)
- if attr and attr > 0 then
- if start.char == tsheg then
- if start.next then
- insert_node_after(head,start,get_penalty_node())
- end
- end
- end
- elseif id == math_code then
- -- warning: this is a feature of luatex > 0.76
- start = end_of_math(start) -- weird, can return nil .. no math end?
- end
- if start then
- start = start.next
- end
- end
- return head
-end
-
-local callback_name = "pre_linebreak_filter"
-
-local function activate()
- if not priority_in_callback (callback_name, "polyglossia-tibt.process") then
- add_to_callback(callback_name, process, "polyglossia-tibt.process", 1)
- end
-end
-
-local function desactivate()
- if priority_in_callback (callback_name, "polyglossia-tibt.process") then
- remove_from_callback(callback_name, "polyglossia-tibt.process")
- end
-end
-
-polyglossia.activate_tibt_eol = activate
-polyglossia.desactivate_tibt_eol = desactivate
-% \end{macrocode}
-% \iffalse
-%</polyglossia-tibt.lua>
-%<*polyglossia.lua>
-% \fi
-% \clearpage
-%
-% \subsection{polyglossia.lua}
-% \begin{macrocode}
-
-local module_name = "polyglossia"
-local polyglossia_module = {
- name = module_name,
- version = 1.3,
- date = "2013/05/11",
- description = "Polyglossia",
- author = "Elie Roux",
- copyright = "Elie Roux",
- license = "CC0"
-}
-
-luatexbase.provides_module(polyglossia_module)
-
-local log_info = function(message, ...)
- luatexbase.module_info(module_name, message:format(...))
-end
-local log_warn = function(message, ...)
- luatexbase.module_warning(module_name, message:format(...))
-end
-
-polyglossia = polyglossia or {}
-local polyglossia = polyglossia
-
-local function select_language(lang, id)
- polyglossia.current_language = lang
-end
-
-local function set_default_language(lang, id)
- polyglossia.default_language = lang
-end
-
-local byte = utf8.codepoint -- use standard module of lua 5.3
-
-local check_char
-
-if luaotfload and luaotfload.aux and luaotfload.aux.font_has_glyph then
- local font_has_glyph = luaotfload.aux.font_has_glyph
- function check_char(chr)
- local codepoint = tonumber(chr) or byte(chr)
- if font_has_glyph(font.current(), codepoint) then
- tex.sprint('1')
- else
- tex.sprint('0')
- end
- end
-else
- function check_char(chr) -- always in current font
- local fontid = font.current()
- local fontdata = font.getfont(fontid) or font.fonts[fontid]
- local chardata = fontdata.characters
- local codepoint = tonumber(chr) or byte(chr)
- if chardata and chardata[codepoint] then
- tex.sprint('1')
- else
- tex.sprint('0')
- end
- end
-end
-
-local function load_tibt_eol()
- require('polyglossia-tibt')
-end
-
--- predefined l@nohyphenation or LuaTeX's maximum value for \language
-local nohyphid = luatexbase.registernumber'l@nohyphenation' or 16383
-
--- key `nohyphenation` is for .sty file when possibly undefined l@nohyphenation
-local newloader_loaded_languages = { nohyphenation = nohyphid }
-
-local newloader_available_languages = require'language.dat.lua'
--- Suggestion by Dohyun Kim on #129
-local t = { }
-for k, v in pairs(newloader_available_languages) do
- t[k] = v
- for _, vv in pairs(v.synonyms) do
- t[vv] = v
- end
-end
-newloader_available_languages = t
-
--- LaTeX's language register is \count19
-local lang_register = 19
-
--- New hyphenation pattern loader: use language.dat.lua directly and the language identifiers
-local function newloader(langentry)
- local loaded_language = newloader_loaded_languages[langentry]
- if loaded_language then
- local langid = lang.id(loaded_language)
- log_info('Language %s already loaded; id is %i', langentry, langid)
- return langid
- else
- local langdata = newloader_available_languages[langentry]
- if langdata then
-
- local special = langdata.special
- if special then
- -- language0 (USenglish) is already included in the format
- if special == 'language0' then
- return 0
-
- -- disabled language should not be used for utf-8 text
- elseif special:find'^disabled:' then
- log_warn('Hyphenation of language %s %s', langentry, special)
- return nohyphid
- end
- end
-
- -- language info will be written into the .log file
- local s = { "Language data for " .. langentry }
- for k, v in pairs(langdata) do
- if type(v) == 'table' then -- for 'synonyms'
- s[#s+1] = k .. "\t" .. table.concat(v,',')
- else
- s[#s+1] = k .. "\t" .. tostring(v)
- end
- end
- log_info(table.concat(s,"\n"))
-
- --
- -- LaTeX's \newlanguage increases language register (count19),
- -- whereas LuaTeX's lang.new() increases its own language id.
- -- So when a user has declared, say, \newlanguage\lang@xyz, then
- -- these two numbers do not match each other. If we do not consider
- -- this possible situation, our newloader() function will
- -- unfortunately overwrite the language \lang@xyz.
- --
- -- Threfore here we will compare LaTeX's \newlanguage number with
- -- LuaTeX's lang.new() id and select the bigger one for our new
- -- language object. Also we will update LaTeX's language register
- -- by this new id, so that another possible \newlanguage should not
- -- overwrite our language object.
- --
- -- get next \newlanguage allocation number
- local langcnt = tex.count[lang_register] + 1
- -- get new lang object
- local langobject = lang.new()
- local langid = lang.id(langobject)
- -- get bigger one between \newlanguage and new lang obj id
- local newlangid = math.max(langcnt, langid)
- -- set language register for possible \newlanguage
- tex.setcount('global', lang_register, newlangid)
- -- get new lang object if needeed
- if langid ~= newlangid then
- langobject = lang.new(newlangid)
- end
-
- -- load hyphenation patterns and exceptions
- for _,v in ipairs{ 'patterns', 'hyphenation' } do
- local data = langdata[v]
- if data and data ~= '' then
- -- cope with comma separated list, such as serbian
- for _,vv in ipairs(data:explode',+') do
- local filepath = kpse.find_file(vv)
- if filepath then
- local fh = io.open(filepath)
- lang[v](langobject, fh:read'a')
- fh:close()
- else
- log_warn('Hyphenation file %s not found', vv)
- end
- end
- end
- end
-
- newloader_loaded_languages[langentry] = langobject
-
- log_info('Language %s was not yet loaded; created with id %i',
- langentry, newlangid)
- return newlangid
- else
- log_warn('Language %s not found in language.dat.lua', langentry)
- return nohyphid
- end
- end
-end
-
-polyglossia.select_language = select_language
-polyglossia.set_default_language = set_default_language
-polyglossia.check_char = check_char
-polyglossia.load_tibt_eol = load_tibt_eol
-polyglossia.newloader = newloader
-polyglossia.newloader_loaded_languages = newloader_loaded_languages
--- global variables:
--- polyglossia.default_language
--- polyglossia.current_language
-% \end{macrocode}
-% \iffalse
-%</polyglossia.lua>
-% \fi
-% \clearpage
-% \PrintChanges
-% \Finale
-%
-% \iffalse
-%<*../README.md>
-# THE POLYGLOSSIA PACKAGE v1.49
-## Multilingual typesetting with XeLaTeX and LuaLaTeX
-
-This package provides an alternative to Babel for users of XeLaTeX and LuaLaTeX
-(with a few languages incompletely supported for the latter). This version
-includes support for over 70 different languages, some of which in different
-regional or national varieties, or using a different writing system.
-
-Polyglossia makes it possible to automate the following tasks:
-
-* Loading the appropriate hyphenation patterns.
-* Setting the script and language tags of the current font (if possible and
- available), using the package fontspec.
-* Switching to a font assigned by the user to a particular script or language.
-* Adjusting some typographical conventions in function of the current language
- (such as afterindent, frenchindent, spaces before or after punctuation marks,
- etc.).
-* Redefining the document strings (like “chapter”, “figure”, “bibliography”).
-* Adapting the formatting of dates (for non-gregorian calendars via external
- packages bundled with polyglossia: currently the Hebrew, Islamic and Farsi
- calendars are supported).
-* For languages that have their own numeration system, modifying the formatting
- of numbers appropriately.
-* Ensuring the proper directionality if the document contains languages
- written from right to left (via the packages bidi and luabidi, available
- separately).
-
-# LICENCE
-
-Copyright (c) 2008-2010 François Charette, 2013 Élie Roux, 2011-2020 Arthur Reutenauer,
-Copyright (c) 2019-2020 Bastien Roucariès, 2019-2020 Jürgen Spitzmüller
-
-Except where otherwise noted, Polyglossia is placed under the terms of the MIT licence
-(https://opensource.org/licenses/MIT).
-
-# BUGS
-
-If you run into a bug, or suspect you do, or you have a request or comment, please
-use the GitHub issue tracker: http://github.com/reutenauer/polyglossia/issues
-
-This is more efficient than contacting the maintainer by email as it allows me
-to track the issues and follow progress.
-%</../README.md>
-%<*Changelog>
-1.49 (???)
-
-New features:
-
- * Add hook \polyglossia@language@switched to the external package interface (#398).
- * Real fix for #400, that wasn’t properly taken care of in 1.48.
-
-Bug fixes:
-
- * Fix compilation error with some swapstring options in Hungarian (#373).
- * Fix whitespace problem in Greek language.
-
-Interface and defaults changes:
-
- * Changed Finnish caption for "Table of Contents" to "Sisällys" (#403).
-
-
-1.48 (25-03-2020)
-
-No new features
-
-Bug fixes:
- * Fix use of Hebrew with LuaLaTeX (#389).
- * Do not overwrite footnote redefinitions of other packages
- with Latin and French (#391)
- * Fix Serbian cyrillic numerals code (#392).
- * Fix [no]localmarks option, whose logic was swapped (part of #395).
- * Protect localmarks function against uppercased language names (part of #395).
- * Fix buggy redefinition of \@markright with option localmarks (#396).
- * Fix incompatibility between Latin and unicode-math (#394).
- * Make (undocumented) \defineshorthand command (imported from babel) work.
- * Fix usage of localmarks option without value.
- * Emergency fixes for bugs caused by updates in Babel’s switch.def (#399 and #400).
-
-Interface and defaults changes:
- * Use private macros in keyval choice keys (#390).
-
-1.47 (29-01-2020)
-
-New features:
- * IETF BCP-47 compliant language tags can now be used for loading and switching
- languages alternatively to language names (#226).
- * New commands \languageid{<type>} and \mainlanguageid{<type>}.
- * New test \iflanguageidloaded.
- * New list \xpg@bcp@loaded.
- * New environment {lang}{<lang>} (equivalent to {<lang>}, but also available with
- \setlanguagealias* which does not define dedicated alias environments).
- * New gloss option totalhyphenmin (corresponds to LuaTeX's \hyphenationmin) (#111).
- * New test \iflanguageoption{<lang>}{<key>}{<val>} (#364).
- * Restore simple alphabetic numbering for \asbuk and \Asbuk in Belarusian, Mongolian,
- Russian, Serbian, and Ukrainian (#377).
- * New command \AsbukTrad and \asbukTrad for Belarusian, Mongolian, Russian, Serbian,
- and Ukrainian which uses traditional alphanumerical numbering.
- * New numerals option "cyrillic-trad" and "cyrillic-alph" to differentiate simple
- alphabetic and traditional alpnanumerical Cyrillic numbering.
- * \selectbackgroundlanguage and \resetdefaultlanguage now also support language
- aliases.
- * New macro \charifavailable{<char code>}{<substitution>}.
- * Add French language variant "swiss".
- * Implement babelshorthands for Croatian.
- * Implement \localnumeral for Japanese.
-
-Bug fixes:
- * Fix font family issue in headers (#355).
- * Fix whitespace issues in \text<lang> (#356).
- * Fix option-less \babelname in multi-variant languages (#357).
- * Fix some spacing inconsistencies with French, Latin, and Sanskrit (#358).
- * Fix issues with babelshorthands and graphics package (#368).
- * Fix some captions and improve numbering in Marathi (#370).
- * Fix Hungarian swapstrings feature (#373).
- * Fix lua punctuation code problem (#374).
- * Fix Bengali changecounternumbering option (#381).
- * Fix whitespace issue in Japanese (#387).
- * Fix \text<lang> command with multiple paragraphs.
- * Actually implement documented german spelling variant '1996' (= 'new').
- * Fix Slovenian localalph option.
- * Fix Czech and Slovak splithyphens with typewriter fonts.
- * farsical.sty: fix spacing issue with some month names.
- * Fix directionalty of numbers in Hebrew with XeTeX.
- * Improve interoperatability with biblatex (some language variants did not work yet).
-
-Interface and defaults changes:
- * Some boolean options had 'false' value by default, which meant if you passed
- them without value, the logic was reversed. This has been changed, leading to
- change of behavior should you have used one of these options without value (#363).
- Concerned are the following options:
- - babelshorthands in language belarusian, mongolian, ukrainian, and russian
- ('babelshorthands' now equals 'babelshorthand=true', no longer 'babelshorthands=false')
- - localalph in language slovenian ('localalph' now equals 'localalph=true')
- - latesthyphen in language german ('latesthyphen' now equals 'latesthyphen=true')
- - fullyear in package hebrewcal ('fullyear' now equals 'fullyear=true')
- * The command \setlanguagealias* (introduced in v1.46) does no longer define
- dedicated alias environments.
- * The babelnames for latin variants have been corrected to classiclatin, ecclesiasticlatin
- and medievallatin. This is how the hyphenation patterns and babel \extras are named, even
- though the variants can currently be selected in babel only via appended "dot modifier".
- * In accordance with the respective l3kernel change, \str_lower_case:n has been renamed to
- \str_lowercase:n where used in polyglossia.sty. Thus polyglossia 1.47 requires l3kernel
- 2020-01-12 at least.
-
-1.46 (15-11-2019)
-
-New features:
- * Add option "indentfirst" to Russian (#78).
- * Add options to set and customize French-style itemize item labels to French (#89).
- * Polyglossia now understands all babel language names in \setdefaultlanguage,
- \setotherlanguage and the language switching commands (#112, #132).
- * Add optional localized math operators to Spanish (#123).
- * Swap section headings in Hungarian (#344). New option "swapstrings" provides control
- over this.
- * Introduce macro \setlanguagealias and \setlanguagealias*.
- * Introduce language switching command \textlang{lang}{...} (equivalent to \text<lang>,
- but also available with \setlanguagealias* which does not define \text<alias>).
- * Add support for Afrikaans.
- * Add support for Belarusian.
- * Add support for Bosnian.
- * Add support for Georgian.
- * Add Spanish variant "mexican".
- * Add babelshorthands as well as options "splithyphens" and "vlna" to Slovak.
- * Add Latin language variant "ecclesiastic".
- * Add Latin language options "capitalizemonth", "ecclesiasticfootnotes", "hyphenation",
- "prosodicshorthands", and "usej".
- * Add Latin shorthands for "«", "»", "æ", "Æ", "œ", and "Œ".
- * Add French language option "thincolonspace".
-
-Bug fixes:
- * Fix problems with fragile font settings (#24).
- * Fix clash of French punctuation spacing with the soul package (#52).
- * Re-enable the possibility to pass a macro as main argumente to \setmainlanguage and
- \setotherlanguage (#331).
- * Fix detection of default \languagevariant (#332).
- * Fix LaTeX error with undefined hyphenation pattern (#346).
- * Fix some babel shorthand issues by updating the shorthand code from recent babel.
- * Fix some problems with French and Latin auto-spacing (#345, #352).
- * Fix an expl3 declaration (#348).
-
-Interface and defaults changes:
- * Per TeXLive request, the sub-package cyrillicnumbers.sty has been renamed to
- xpg-cyrillicnumbers.sty.
- * In Russian, all paragraphs are now indented by default, as common in Russian typography.
- The behavior can be opted out by indentfirst=false.
- * In Czech, splithyphens and lvna are enabled by default. Also, the option does now work
- as well with LuaTeX.
- * Changed option name "fraktur" to "blackletter" in German (the former is still available
- as an alias).
- * In French, high punctuation characters and guillemets are spaced by half an interword
- space now instead of a \thinspace (cf. #345).
-
-1.45 (27-10-2019)
-
-New features:
- * Introduce a framework for external packages to access language variants. This fixes,
- among other things, long-standing problems in the interaction of biblatex and polyglossia.
- * Add new macros \languagevariant, \mainlanguagevariant, \babelname and \mainbabelname
- for package authors to access language information.
- * Add new test \iflanguageloaded{<language>}{<true>}{<false>}, where <language>
- can be a \polyglossia or babel language name.
- * Add new macros \localnumeral, \localnumeral*, \Localnumeral and
- \Localnumeral* that convert Arabic digitals to the local number scheme.
- * Add new macro \pghyphenation to add language-specific hyphenation exceptions (#18).
- * Add support form (Khalkha & Cyrillic) Mongolian in line with babel-mongolian (#23).
- * Add option splithyphens and vlna to Czech (XeTeX only; for LuaTeX, use the package
- luavlna to get these features) (#32).
- * Add support for Kurdish, both Kurmanji and Sorani (#277).
- * Implement proper Cyrillic (alphanumeric) numbering (#285).
- * Add new language friulian.
- This deprecates friulan (which is still supported for backwards compatibility).
- * Add new language malay with variants indonesian and malaysian.
- This deprecates bahasai and bahasam (which are still supported for
- backwards compatibility).
- * Add new language gaelic with variants irish and scottish.
- This deprecates irish and scottish as own polyglossia languages (which
- are still supported for backwards compatibility).
- * Add new language hungarian.
- This deprecates magyar (which is still supported for backwards compatibility).
- * Add new language sorbian with variants lower and upper.
- This deprecates lsorbian and usorbian (which are still supported for
- backwards compatibility).
- * Add new language portuguese with variants portuguese and brazilian.
- This deprecates brazil and portuges (which are still supported for
- backwards compatibility).
- * Add new language norwegian with variants nynorsk and bokmal.
- This deprecates nynorsk and norsk (which are still supported for
- backwards compatibility).
- * Add new language persian.
- This deprecates farsi (which is still supported for backwards compatibility).
- * Add new language sami. Currently only Northern Sami is supported.
- This deprecates samin (which is still supported for backwards compatibility).
- * gloss-serbian: add numerals=cyrillic option. Add \asbuk and \Asbuk (#285).
- * Implement basic support for (French) canadien and (English) canadian (#22)
- * Improve support for Armenian (#79): Add captions, Eastern month names
- (accessible via variant=eastern) and Armenian alphabetic numbering
- (via numerals=armenian and \armenicnumeral).
- * Add french option autospacing and commands \AutoSpacing, \NoAutoSpacing
- This allows to switch off autospacing globally or locally (#113)
- * Fixup \normalfont (#203)
- * Fix directionality issues in mixed RTL/LTR paragraphs (#204)
- * Implement babelshorthands for Finnish (#212) and Czech.
- * Implement access to current language via Lua (#243).
- * Introduce french option option autospacetypewriter
- alias OriginalTypewriter
- * Support \aemph with lualatex
- * Rename automaticspacesaroundguillemets to autospaceguillemets
- The old option is kept for backwards compatibility.
-
-Bug fixes:
- * Fix equation number in arabic and farsi (#7).
- * Simplify and document Hebrew marcheshvan option (#16).
- * Fix hyphenation of Greek with LuaTeX (#55).
- * Fix N'ko date format (#63).
- * Disable the extras of a language when a nested language starts (#66, #169).
- * Properly implement bengali numbers (#69, #184).
- * Fix conflicts with other packages caused by premature shorthand activation
- in preamble (#81, #200).
- * Fix kerning in math with French (#92).
- * Fix expansion issue in Hebrew (#93).
- * Fix numbering expansion issue in Greek (#110).
- * Postpone \disablehyphenation in preamble until after setting of
- document language (#125).
- * Postpone the assignment of defaultfamily to BeginDocument,
- thus do not overwrite \familydefault redefinitions in the preamble (#127).
- * Reset number settings when switching language (#133).
- * hebrew: Properly store \MakeUppercase for later restoration (#152).
- * Fix whitespace issue in \datewelsh (#158).
- * When switching language, set the language/script specific font families (#164).
- * Correct some Bengali captions (#165).
- * Fix documentation of Serbian (#168).
- * Reset ucl codes in latin only if the respective variant is used (#172).
- * Fix \disablehyphenation with LuaTeX (#187).
- * Fix typos in Hindi captions (#202).
- * Pass language options to the aux files (#205).
- * Rewrite and fix English variant handling (#208).
- * Define magyar caption formats in \blockextras and undef them in \noextras (#209).
- * Ensure proper direction with arabic digits in Arabic and Farsi (#213).
- * Fix \linespread with Korean (#218).
- * Define russian caption before key allocation (#219).
- * Register current language in polyglossia lua module after selection (#234).
- * Fix babel language switching commands (#239).
- \foreignlanguage and the starred otherlanguage* environment are not
- supposed to change dates.
- * Fix French spacing leaking beyond French (#270).
- * Redefine fontfamilies for French only if language is loaded (#270).
- * gloss-russian:
- - check whether command exist before redefining (#280).
- - Fix some whitespace issues.
- * Fix and simplify frenchfootnote definition (#294).
- * Fix footnote numbering in Farsi.
- * Fix latin footnotes in Arabic documents.
- * Set the correct main direction with luabidi.
- * Fix autospaceguillemets option in French.
- * Fix grouping in gloss-danish.ldf.
- * Properly store \MakeUppercase and \@arabic for later restoration.
-
-Documentation:
- * Add documentation about footnotes in RTL context
- * Document tibetan numerals option (#109)
- * Improve frenchfootnote documentation.
- * Mention Japanese support in the docs.
-
-1.44 (04-04-2019)
- * Correction to Russian language file, by Maksim Zholudev (commit d2f383e)
- * Added Macedonian language file, by Stefan Zlatinov (commit cd379e1)
-
-05-03-2019
- * Correction to Hindi language file, by Zdenĕk Wagner
-
-1.42.5 (13-04-2017)
- * Many changes to the French language file, by Maïeul Rouquette
-
-1.42.4 (February, March 2016)
- * Remedial actions for the Babel changes
-
-09-02-2016
- * Fixed side effect of pull request #122 (see commit d2a34ff)
- * Added automatic Josa selection, variant, and captions options to Korean, by Dohyun Kim (pull request #128)
-
-08-02-2016
- * Updated gloss-occitan from CTAN
-
-18-01-2016
- * Fixed issue #124 (minor typo in polyglossia-frpt.lua)
-
-03-12-2015
- * Merged pull request #117 for more French guillemet spacing
- * Merged pull request #121 to add \bbl@loaded; fixes issue #120
- * Merged pull request #122 that build on #121
-
-08-11-2015
- * Merged pull request #116 for French (spacing around guillemets)
-
-22-10-2015
- * Fixed issue #115 (spurious spaces in Arabic)
-
-19-08-2015
- * Fixed issue #107 for Marathi (labels and month names)
-
-1.42.0 (06-08-2015)
- * Add Bengali digits package, and option to reset all numbering functions
-
-05-08-2015
- * Add “long” option for Welsh date
- * Add local alphabet in Slovenian, for enumerations and such
-
-04-08-2015
- * Fix long-standing bug with Welsh: date should use ordinals
-
-03-08-2015
- * Fix for Latin with LuaTeX: all variants had same problems as Classic
-
-02-08-2015
- * Fixed error with British variant of English and LuaTeX (issue #86)
-
-1.41.0 (16-07-2015)
- * Added support for Khmer, by Say Ol (private email)
-
-1.40.1 (14-07-2015)
- * Bugfix for Korean, by Kim Dohyun (pull request #103)
-
-1.40.0 (07-07-2015)
- * gloss-korean.ldf contributed by Kim Dohyun (pull request #102)
-
-1.33.7 (04-07-2015)
- * Release to CTAN, no code change
-
-03-07-2015
- * Fixed extraneous space in code for Swiss German (pull request #101)
- * Fixed a typo in Ukrainian alphabet, for \Asbuk (pull request #99)
-
-24-06-2015
- * Fix for Classic Latin: load patterns for LuaTeX
-
-23-05-2015
- * Made \rmfamily, \sffamily and \ttfamily robust again
-
-11-05-2015
- * Merged fix for Hebrew date format, by Guy Rutenberg (pull request #94)
- * Merged fix for spurious space, by Caleb McKennan (pull request #91)
- * Merged pull request #84 by Élie Roux for Tibetan
-
-10-05-2015
- * Added support for Swiss German (pull request #75)
- * Added commands \Asbuk and \asbuk for Ukrainian (pull request #76), similar to Russian
- * Documented changes to Latin from last year.
-
-09-05-2015
- * Be friendlier to right-to-left languages with LuaTeX
-
-04-06-2014
- * Enhanced Latin support by Claudio Beccari
-
-1.33.5 (21-05-2014)
- * Option to disable hyphenation entirely, by Élie Roux
- * Fix spurious spaces in gloss-russian.ldf, by Oleg Domanov
- * Support for the Austrian variant of German, by Jürgen Spitzmüller
- * Changes to the Croatian translations, by Ivan Kokan
- * Correction to the Lithuanian translations, by Ignas Anikevičius
-
-1.33.4 (27-06-2013)
- * Emergency release for a bug introduced in babelsh.def
-
-1.33.3 (28-05-2013)
- * Changed formatting of some error messages (emergency fixes for TeX Live 2013)
-
-1.33.2 (26-05-2013)
- * Added \disablehyphenation and \enablehyphenation, contributed by
- Élie Roux.
- * Fixed bug related to package inclusion. Polyglossia would break if
- we loaded breqn.sty, and then called \setmainlanguage{english}, this
- is no longer the case.
- * Removed spurious space introduced by \captionswedish.
-
-1.33.1 (23-05-2013)
- * Editorial changes to the documentation
- * Hunted and documented bugs
-
-1.33.0 (20-05-2013)
- * Added support for N’Ko.
- * Bugfixes for LuaTeX
- * More work in progress on Bidi in LuaTeX.
-
-1.32.0 (15-05-2013)
- Transitional version to support right-to-left languages with LuaTeX.
-
-1.31 (10-05-2013) / 1.3 (11-05-2013)
- * Several bugfixes.
- * Sync with Babel 3.9.
- * Consolidated support for LuaTeX for all languages but the ones using
- South and South-East Asian scripts, and languages written from right
- to left. Many thanks to Élie Roux for his help.
- * Added support for Tibetan, contributed by Élie Roux (end of lines are experimental).
-
-1.30MM (06-08-2012)
- * Added support for LuaTeX. Many languages don’t work yet. Please be
- patient.
-
-1.2.0e (28-04-2012)
- * Fixed a number of outstanding and not very interesting bugs.
- * Added gloss files for Romansh and Friulan, contributed by Claudio
- Beccari.
-
-1.2.0d (12-01-2012)
- * Removed \makeatletter and \makeother from gloss files entirely.
-
-1.2.0cc (12-10-2011) [First update by Arthur Reutenauer]
- * Update to gloss-italian.ldf by Claudio Beccari, incorporating changes
- by Enrico Gregorio.
- * Conclude every gloss file with \makeatother to match the initial
- \makeatletter. (Not necessary from a technical point of vue, because of one of the changes by Enrico reported below, but I like it better that way :-)
- * Conclude polyglossia.sty with \ExplSyntaxOff to match the initial
- \ExplSyntaxOn.
- * Added gloss file for Kannada, contributed by Aravinda VK and others.
- * Corrections to the gloss-dutch.ldf thanks to Wouter Bolsterlee.
- * Several patches by Enrico Gregorio, fixing long-standing bugs.
- From the git log:
- - Deleted setup for right-to-left writing direction, see http://tug.org/pipermail/xetex/2011-April/020319.html
- - Changed three appearances of \newcommand to \newrobustcmd, as the commands needs to be protected. Bug reported by "kamensky".
- - Corrected \datepolish as suggested by Piotr Kempa
- - Changed \lccode" into \lccode\string", because it might come into action at wrong times when " is active
- - Changed definition of key xpg@setup, as \@tmpfirst and \@tmpsecond were not expanded, causing dependence of \lefthyphenmin and \righthyphenmin to the last loaded language. Raised by Vadim Rodionov on the XeTeX mailing list.
- - Deleted \bgroup and \egroup tokens from the definition of otherlanguage*; they serve no purpose (we are already inside an environment) and conflict with csquotes. Noticed by P. Lehman.
- - Changed the calls of \input to \xpg@input, which inputs the required file and resets the catcode of @ to the same value as it had before the input. Since each .ldf file starts with \makeatletter, the old behaviour would leave a category 11 @, which is wrong.
- - Added "\csuse{date#2}" to the definition of "otherlanguage*"
-
-
-1.2.0b (03-10-2011) [Update by Philipp Stephani]
- * Load xkeyval package explicitly since newer versions
- of fontspec don't load it any more
-
-1.2.0a (27-07-2010) [Last update by François Charette]
- * Initialize \fontfamily acc to value of \familydefault
- (Fixes a bug when using polyglossia with beamer)
- * Remove spurious space in def of \dateenglish
- * Add missing English variant "american"
- * Serbian: fix date format and captions (Latin+Cyrillic)
- * Fix \atticnumeral in gloss-greek
- * Small improvements and fixes in documentation
-
-
-1.2.0 (15-07-2010)
- * Adapted for fontspec 2.0 (will not work with earlier versions!)
- * New implementation of a \PolyglossiaSetup interface
- that simplifies writing gloss-*.ldf files
- * Many internal enhancements and refactoring
- (including a patch by Dirk Ulrich)
- * Improved automatic font setup when \<lang>font is not defined
- * New environment otherlanguage* (env. equivalent of \foreignlanguage
- (Enrico Gregorio)
- * Bugfix to prevent bogus expansion of \{rm,sf,tt}family even in aux files
- (Enrico Gregorio)
- * New gloss files for Armenian, Bengali, Occitan, Bengali, Lao,
- Malayalam, Marathi, Tamil, Telugu, and Turkmen.
- * New auxiliary packages 'devanagaridigits' and 'bengalidigits'
- * hijrical no longer loads bidi and checks for incompatible l3calc
- * Add Babel shorthands for Russian (based on a patch by Vladimir Lomov)
- * Fix \fnum@{table,figure} for Lithuanian
- * Various improvements in gloss-russian (provided by Vladimir Lomov and
- others)
- * Corrected captions for Bahasai, Lithuanian, Russian, Croatian
- * Add option indentfirst=true for Spanish, Croation and other languages
- (NB: indentfirst was previously named frenchindent)
- * New option 'script' for German: Setting script=fraktur modifies the
- captions for typesetting in Fraktur.
- * New command \aemph for Arabic, Farsi, Urdu, etc. to mark emphasis through
- overlining.
- * Package option 'nolocalmarks' is now true by default: to activate it the
- option 'localmarks' must be passed instead.
- * Loading languages à la Babel as package options is no longer possible (this
- feature was deprecated since v1.1.0).
-
-1.1.1 (23-03-2010)
- * Bugfix for French: explicit spaces before/after double punctuation
- signs ("Par exemple : les grands « espaces » du Canada ! ") are
- now replaced by the appropriate non-breaking spaces, as in Babel.
- * Bugfix for font switching mechanism within Latin script
- (pending a complete re-implementation in v1.2):
- the font shape and series are no longer reset when switching language.
- * New macros for non-Western decimal digits
- (instead of fontmappings)
- * New gloss files for Asturian, Lithuanian and Urdu
- * hijrical.sty is now locale-aware: \hijritoday is
- formatted differently in Arabic, Farsi, Urdu, Turkish
- and Bahasa Indonesia.
----NB: the above five items were not part of v1.1.1-rc1 which was made available on github---
- * Enable babelshorthands for Dutch
- * Add missing macro \allowhyphens
- * Add global option babelshorthands
- * Support Catalan geminated l
- * Bugfix when declaring more than one pkg option
- * Protect \reset@font
- * Add missing requirement makecmds
- * Bugfix for smallcaps in captions
- * Typo for ccname in Hebrew
- * Add option numerals to gloss-russian
- * Provide newXeTeXintercharclass when undefined
- * Bugfix for Russian alph
- * Remove superfluous level of {} in def of markright
- * Bugfix for \datecatalan
- * Change hyphenmins for Sanskrit
-
-1.1.0b
- * Modify hyphenmins for Sanskrit (Yves Codet)
- * Bugfixes for Serbian and Bulgarian (Enrico Gregorio)
-1.1.0a
- * Bugfix for interchar tokens
-1.1.0
- * Use \newXeTeXintercharclass (thanks to Enrico Gregorio)
- * Fixed implementation of shorthands for German (Babel code in file babelsh.def)
- * Arabic (Khaled Hosny):
- - Fix abjad form for 3 and 5 and add option abjadjimnotail
- - bugfix for \arabicnumber
- - make Gregorian calender the default
- - fixed typos in the sample text
- * Turkish (S. Ö. Yıldız):
- - fix white-space before : and !
- - also check if the font specified TRK for language
- - added missing Turkish translation of "Glossary"
- * Suppress nopattern warning for non-hyphenated scripts
- * Changed U+0163 to U+021B for Romanian (Elie Roux)
- * Stylistic fixes and use macro \xpg@option for package options (E. Gregorio)
- * Fix monthnames in Dutch (A. Ledda)
- * Add Brazilian translation for "glossary"
- * Remove spurious space generated by gloss-spanish
- * Fix ldf file for brazilian
- * Various improvements in the code communicated by E. Gregorio:
- - remove superfluous \protect\language
- - change default language from 0 to \l@nohyphenation=255
- - localize lccode handling of apostrophe in French; add it to Italian
- * Fix frenchspacing for vietnamese
- * Other minor bugfixes
-
-1.0.2
- This is mostly a bug fixes release.
- * Captions corrected in Hebrew, Russian and Spanish
- * Removed all \text<lang> wrappers within caption definitions
- * Improved compatibility with Babel
- * New option "babelshorthands" for German
- * New option "Script" for Sanskrit
-
-1.0.1
- * Improved documentation (added sections on font setup and numeration mappings)
- * Improvements and bugfixes for English and German
- * Bugfix in gloss-syriac.ldf (spurious space after \textsyriac{...})
- * Extended the scope of \syriacabjad
- * Added gloss-amharic.ldf (ported from ethiop.ldf in the package ethiop)
-
-1.0
- * Initial release on CTAN
-%</Changelog>
-%<*examples.tex>
-\documentclass[a4paper]{article}
-\usepackage[no-math]{fontspec}
-\usepackage{xltxtra,url}
-\let\XeTeX\undefined
-\let\XeLaTeX\undefined
-\usepackage{polyglossia}
-\usepackage{trace}
-\setdefaultlanguage{french}
-\setotherlanguage[variant=british,ordinalmonthday=false]{english}
-\setotherlanguage[variant=poly]{greek}
-\setotherlanguage[numerals=thai]{thai}
-\setotherlanguage[locale=mashriq]{arabic}
-\setotherlanguage[spelling=new,latesthyphen=true,babelshorthands=true]{german}
-\setotherlanguages{latin,russian,turkish,polish,latvian,sanskrit,ukrainian,farsi,syriac,divehi,hebrew,amharic,nko}
-\setotherlanguage[calendar=gregorian,numerals=western]{urdu}
-\setmainfont{Linux Libertine O}
-\defaultfontfeatures{Scale=MatchLowercase}
-\setmonofont{Inconsolata}
-\newfontfamily\arabicfont[Script=Arabic]{Amiri}
-\newfontfamily\syriacfont[Script=Syriac]{Serto Jerusalem}
-\newfontfamily\hebrewfont[Script=Hebrew]{Ezra SIL}
-\newfontfamily\sanskritfont[Script=Devanagari]{Sanskrit 2003}
-\newfontfamily\thaifont[Script=Thai]{Norasi}
-\newfontfamily\thaanafont[Script=Thaana,WordSpace=2]{FreeSerif}
-\newfontfamily\ethiopicfont[Script=Ethiopic]{Abyssinica SIL}
-\newfontfamily\nkofont[Renderer=Graphite]{Conakry}
-\parskip 1.33\baselineskip
-%\newcommand\showhyphmin{\fbox{\the\lefthyphenmin\ \the\righthyphenmin}}
-\begin{document}
-\hyphenation{Bru-xel-les}
-\noindent
-\textbf{Le français}\footnote{ From \url{http://fr.wikipedia.org/wiki/Français}} est une langue romane parlée en France, dont elle est originaire (la «langue d'oïl»), ainsi qu'en Afrique francophone, au Canada (principalement au Québec, au Nouveau-Brunswick et en Ontario), en Belgique (en Région wallonne et à Bruxelles), en Suisse, au Liban, en Haïti et dans d'autres régions du monde, soit au total dans 51 pays du monde ayant pour la plupart fait partie des anciens empires coloniaux français et belge. \\
-(\today)
-
-\begin{english}
-\textbf{English}\footnote{From \url{http://en.wikipedia.org/wiki/English_language}} is a West Germanic language originating in England, and the first language for most people in Australia, Canada, the Commonwealth Caribbean, Ireland, New Zealand, the United Kingdom and the United States of America (also commonly known as the Anglosphere). It is used extensively as a second language and as an official language throughout the world, especially in Commonwealth countries and in many international organisations. \\
-(\today)
-\end{english}
-
-\begin{german}
-\textbf{Die deutsche Sprache}\footnote{ From \url{http://de.wikipedia.org/wiki/Deutsche_Sprache}} (auch das Deutsche) gehört zum westlichen Zweig der germanischen Sprachen und ist eine der meistgesprochenen europäischen Sprachen weltweit, und gilt so als Weltsprache.\\
-(\today)
-\end{german}
-
-\begin{russian}
-\textbf{Русский язык} — один из восточнославянских языков, один из крупнейших языков мира, в том числе самый распространённый из славянских языков и самый распространённый язык Европы, как географически, так и по числу носителей языка как родного (хотя значительная, и географически бо́льшая, часть русского языкового ареала находится в Азии). \\
-(\today)
-\end{russian}
-
-\begin{latin}
-\textbf{Lingua Latina} est lingua Indoeuropaea. Nomen ductum est de terra in paeninsula Italica quam Latine loquentes incolebant, Vetus Latium appellata sitaque inter flumen Tiberis, Volscam terram, mare Tyrrhenicum, montes Apenninos.
-Quamquam sermone nativo fungi desinit, cumque nostris diebus perpauci Latine loqui possint, lingua mortua appellari solet, multas tamen peperit linguas quae linguae romanicae vocantur, sicut Hispanicam, Francogallicam, Italicam, Lusitanam, Dacoromanicam, Gallaicam, ne omnes afferam. \\
-(\today)
-\end{latin}
-
-\begin{greek}
-\textbf{Η ελληνική γλώσσα} είναι μία από τις ινδοευρωπαϊκές γλώσσες, για την
-οποία έχουμε γραπτά κείμενα από τον 15ο αιώνα π.Χ. μέχρι σήμερα. Αποτελεί το
-μοναδικό μέλος ενός κλάδου της ινδοευρωπαϊκής οικογένειας γλωσσών. Ανήκει
-επίσης στον βαλκανικό γλωσσικό δεσμό.\\
-(\today)
-\end{greek}
-
-
-\begin{hebrew}[numerals=hebrew]
-\textbf{עברית} היא שפה ממשפחת השפות השמיות, הידועה כשפתו של העם היהודי, ואשר ניב מודרני שלה משמש כשפה הרשמית והעיקרית של מדינת ישראל. \\
-(\today\ = \hebrewtoday)
-\end{hebrew}
-
-\begin{syriac}[numerals=abjad]
-ܠܫܢܐ ܐܪܡܝܐ ܐܘ ܐܪܡܝܬ ܗܘ ܠܫܢ̈ܐ ܥܡ ܬܫܥܝܬܐ ܕ\textrm{3000} ܫܢ̈ܝܐ܂ ܗܘܐ ܠܫܢܐ ܕܡܠܟܘ̈ܬܐ ܘܬܘܕ̈ܝܬܐ܂ ܥܡ ܠܫܢܐ ܥܒܪܝܐ܄ ܗܘܐ ܠܫܢܐ ܕܣܦܪ̈ܐ ܕܕܢܝܐܝܠ ܘܥܙܪܐ ܘܗܘ ܠܫܢܐ ܚܕܢܝܐ ܕܬܠܡܘܕ܂ ܐܪܡܝܐ ܗܘܐ ܠܫܢܐ ܕܝܫܘܥ܂ ܐܕܝܘܡ܄ ܐܪܡܝܐ ܗܘ ܠܫܢܐ ܕܟܠܕ̈ܝܐ܄ ܐܬܘܪ̈ܝܐ܄ ܡܪ̈ܘܢܝܐ܄ ܘܣܘܪ̈ܝܝܐ܀ \\
-(\today)
-\end{syriac}
-
-\begin{turkish}
-\textbf{Türkiye Türkçesi}, Ural-Altay Dilleri içerisinde Türk dil ailesinin Oğuz Grubu'na mensup lehçedir. Anadolu, Kıbrıs, Balkanlar ve Orta Avrupa'da geniş yayılım alanı bulmuş olup, Türkiye Cumhuriyeti, Kuzey Kıbrıs Türk Cumhuriyeti, Güney Kıbrıs Rum Kesimi, Makedonya ve Kosova'nın resmî dilidir. \\
-(\today = \Hijritoday)
-\end{turkish}
-
-\begin{polish}
-\textbf{Język polski (polszczyzna)} należy wraz z językiem czeskim, słowackim, pomorskim (kaszubskim), dolnołużyckim, górnołużyckim oraz wymarłym połabskim do grupy języków zachodniosłowiańskich, stanowiących część rodziny języków indoeuropejskich. Ocenia się, że język polski jest językiem ojczystym około 44 milionów ludzi na świecie (w literaturze naukowej można spotkać szacunki od 40 do 48 milionów), mieszkańców Polski oraz Polaków zamieszkałych za granicą (Polonia).\\
-(\today)
-\end{polish}
-
-\begin{latvian}
-\textbf{Latviešu valoda} ir dzimtā valoda apmēram 1,5 miljoniem cilvēku, galvenokārt Latvijā, kurā tā ir vienīgā valsts valoda. Lielākās latviešu valodas pratēju kopienas ārzemēs ir Austrālijā, ASV, Zviedrijā, Lielbritānijā, Vācijā, Brazīlijā, Krievijā. Latviešu valoda pieder indoeiropiešu valodu saimes baltu valodu grupai.\\
-(\today)
-\end{latvian}
-
-\begin{ukrainian}
-\textbf{Українська мова} — східнослов'янська мова, входить до однієї підгрупи з білоруською та російською. Подібно до цих мов українську записують кирилицею. Історично білоруська та українська мови походять з давньоруської (давньоукраїнської) — розмовної мови Київської Русі.\\
-(\today)
-\end{ukrainian}
-
-\begin{sanskrit}
-{\Large ससकत} पृथिव्यां प्राचीना समृद्घा वैज्ञानिकी च भाषा मन्यते । विश्ववाङ्‌मयेषु संस्कृतं श्रेष्ठरत्नम् इति न केवलं भारते अपि तु समग्रविश्वे एतद्विषये निर्णयाधिकारिभि: जनै: स्वीकृतम् । महर्षि पाणिनिना विरचिता अष्टाध्यायी इति संस्कृतव्याकरणम्‌ अधुनापि भारते विदेशेषु च भाषाविज्ञानिनां प्रेरणास्‍थानं वर्तते . संस्कृतशब्दा: एव उत्तरं दक्षिणं च भारतं संयोजयन्ति ।
-\end{sanskrit}
-
-\begin{Arabic}[]
-«اعلم أنّ فنّ التاريخ فنّ عزيز المذهب، جمّ الفوائد، شريف الغاية؛ إذ هو يوقفنا على أحوال الماضين من الأمم في أخلاقهم، و الأنبياء في سيرهم، و الملوك في دولهم و سياستهم؛ حتّى تتمّ فائدة الإقتداء في ذلك لمن يرومه في أحوال الدين و الدنيا.» (ابن خلدون، المقدّمة)\\
-(\today\ = \Hijritoday[0])
-\end{Arabic}
-
-\begin{farsi}
-فارسی یا پارسی، (که دری، فارسی دری، و پارسی دری نیز نامیده می‌شود) زبانی است که
-در کشورهای ایران، افغانستان، تاجیکستان و ازبکستان به آن سخن می‌رانند. \\
-(\Jalalitoday = \Hijritoday)
-\end{farsi}
-
-\pagebreak
-\begin{urdu}
-اُردو ایک ہندآریائی زبان ہے جس کا تعلّق ہند یوروپی لسانی خاندان کی ہندایرانی شاخ سے ہے۔ بارہویں صدی میں ہندوستان کی مقامی زبانوں اور فارسی، عربی، اور تُرکی زبانوں کے اختلاط سے اردو وجود میں آئی۔ اردو پاکستان کی قومی زبان ہے، اور ہندوستان کی 23 سرکاری زبانوں میں سے ایک ہے۔ جنوبی ایشیا کے باہر خلیجِ فارس کے ممالک، سعودی عرب، برطانیہ، امریکہ، کنیڈا، جرمنی، ناروے، اور آسٹریلیا میں بھی جنوبی ایشیائی مہاجرین کی بڑی تعداد اردو بولتی ہے۔ \\
-
-(\today\ مطابق \Hijritoday[0])
-\end{urdu}
-
-\begin{thai}
-เป็น\wbr แผนงานเพื่อ\wbr สนับสนุน\wbr การ\wbr ร่วมกัน\wbr สร้าง, การ\wbr ร่วมกันใช้, และ\wbr การ%
-ร่วมกัน\wbr พัฒนา\wbr ทรัพยากร\wbr ทาง\wbr ภาษา\wbr ของ\wbr ภาษา\wbr ไทย, บน\wbr เครือข่าย World Wide Web. แผนงานนี้\wbr มี%
-จุด\wbr ประสงค์หลั\wbr กอยู่\wbr สอง\wbr ประการคือ เพื่อแก้ปัญหา\wbr กำ\wbr แพง\wbr ทาง\wbr ภาษา, และรักษา%
-ไว้เพื่อ\wbr ความค\wbr งอยู่\wbr ของ\wbr ภาษา\wbr และ\wbr วัฒนธรรม\wbr ไทย. \\
-(\today)
-\end{thai}
-
-\begin{divehi}\small\sloppy
-ދިވެހިބަހަކީ ދިވެހިރާއްޖޭގެ ރަސްމީ ބަހެވެ. މި ބަހުން ވާހަކަ ދައްކައި އުޅެނީ ދިވެހިރާއްޖޭގެ އަހުލުވެރިންގެ އިތުރުން ހިންދުސްތާނުގެ މަލިކު ގެ
-އަހުލުވެރިންނެވެ. އެބައިމީހުން މި ބަހަށް ކިޔަނީ މަހަލް ބަހެވެ. ބަހާބެހޭ މާހިރުން ދިވެހިބަސް ހިމަނުއްވައިފައިވަނީ އިންޑޯ އާރިޔަން ބަސްތަކުގެ
-ތެރޭގަ އެވެ.
-\end{divehi}
-
-%\fontspec[Script=Georgian]{DejaVu Serif}
-%ქართული ენა არის საქართველოს სახელმწიფო ენა (აფხაზეთის ავტონომიურ რესპ\-უბლიკაში მის პარალელურად სახელმწიფო ენად აღიარებულია აგრეთვე აფხაზური ენა). ქართულ ენაზე 7 მილიონზე მეტი ადამიანი ლაპარაკობს.
-%
-
-\begin{amharic}
-\textbf{አማርኛ} የኢትዮጵያ መደበኛ ቋንቋ ነው። ከሴማዊ ቋንቋዎች እንደ ዕብራይስጥ ወይም ዓረብኛ አንዱ ነው። እንዲያውም 27 ሚሊዮን ያህል ተናጋሪዎች እያሉት፣ አማርኛ ከአረብኛ ቀጥሎ ትልቁ ሴማዊ ቋንቋ ነው። የሚጻፈውም በግዕዝ ፊደል ነው። አማርኛ ክዓረብኛና ከዕብራይስጥ ያለው መሰረታዊ ልዩነት አንደላቲን ከግራ ወደ ቀኝ መጻፉ ነው። \\
-(\today)
-\end{amharic}
-
-\begin{nko}
-ߒߞߏ ߦߋ߫ ߛߓߍߟߌߞߊ߲ߞߋ ߟߋ߬ ߘߌ߫ ߝߘߊ߬ߝߌ߲߬ߠߊ߫ ߕߟߋ߬ߓߋ ߘߐ߫ ߡߊ߲߬ߘߋ߲߬ ߡߌߙߌ߲ߘߌ ߞߊ߲ ߞߊߡߊ߬߸ ߊ߬ ߣߴߊ߬ ߡߟߋߞߎߦߊߞߊ߲ ߕߐ߮ ߟߋ߬. ߞߊ߬ߕߎ߲߯ ߸ ߊ߬ ߞߘߐ ߟߋ߬ ߡߊ߲߬ߘߋ߲߫ ߝߘߏ߬ߓߊ߬ߞߊ߲ ߓߏߟߏ߲ ߓߍ߯ ߘߐ߫ ߞߏ߫: ߒ ߞߊ߲߫ ߠߋ߬ ߞߏ߫. ߝߣߊ߫߸ ߊ߬ ߦߋ߫ ߟߊߓߊ߯ߙߟߊ߫ ߟߊ߫ ߖߡߊ߬ߣߊ ߢߌ߲߬ ߠߎ߫ ߟߋ߬ ߘߐ߫ ߓߊߞߍ߭: ߖߌ߬ߣߍ߫، ߜߋ߲ߞߐ߰ߖߌ߬ߘߊ، ߊ߬ ߣߌ߫ ߡߊߟߌ߫.
-\\
-(\today)
-\end{nko}
-
-\end{document}
-%</examples.tex>
-%<*example-arabic.tex>
-\documentclass[a4paper]{book}%
-\usepackage[no-math]{fontspec}
-\usepackage{xltxtra,url,amsmath}
-\setmainfont{Linux Libertine O}
-\defaultfontfeatures{Scale=MatchLowercase}
-\newfontfamily\arabicfont[Script=Arabic]{Amiri}%
-\newfontfamily\arabicfonttt[Script=Arabic,Scale=.75]{DejaVu Sans Mono}
-\newfontfamily\farsifont[Script=Arabic,Scale=1.1,WordSpace=2]{IranNastaliq}
-\let\XeTeX\undefined
-\let\XeLaTeX\undefined
-\usepackage[quiet,nolocalmarks]{polyglossia}
-\setdefaultlanguage[calendar=gregorian,hijricorrection=1,locale=mashriq]{arabic}
-\setotherlanguage[variant=british]{english}
-\setotherlanguage{farsi}
-\parindent 0pt
-\title{اختبار دعم اللغة العربية}
-\author{فرانسوا شاريت}
-\begin{document}
-\pagenumbering{alph}
-\maketitle
-\tableofcontents
-\chapter{تجربة}
-\pagenumbering{arabic}
-\section{لغات مختلفة}
-
-\textbf{العربية}\footnote{%
-من «\LR{\textenglish{\url{http://ar.wikipedia.org/wiki/}}\RL{\ttfamily لغة عربية}}»}
-أكبر لغات المجموعة السامية من حيث عدد المتحدثين، وإحدى أكثر اللغات انتشارا في
-العالم، يتحدثها أكثر من ٤٢٢ مليون نسمة، ويتوزع متحدثوها في المنطقة المعروفة
-باسم الوطن العربي، بالإضافة إلى العديد من المناطق الأخرى المجاورة كالأحواز وتركيا
-وتشاد ومالي والسنغال. وللغة العربية أهمية قصوى لدى أتباع الديانة الإسلامية، فهي
-لغة مصدري التشريع الأساسيين في الإسلام: القرآن، والأحاديث النبوية المروية عن النبي
-محمد، ولا تتم الصلاة في الإسلام (وعبادات أخرى) إلا بإتقان بعض من كلمات هذه اللغة.
-والعربية هي أيضًا لغة طقسية رئيسية لدى عدد من الكنائس المسيحية في العالم العربي،
-كما كتبت بها الكثير من أهم الأعمال الدينية والفكرية اليهودية في العصور الوسطى.
-وإثر انتشار الإسلام، وتأسيسه دولا، ارتفعت مكانة اللغة العربية، وأصبحت لغة السياسة
-والعلم والأدب لقرون طويلة في الأراضي التي حكمها المسلمون، وأثرت العربية، تأثيرا
-مباشرا أو غير مباشر على كثير من اللغات الأخرى في العالم الإسلامي، كالتركية
-والفارسية والأردية مثلا.
-
-\textlang{farsi}{\bfseries فارسی}\footnote{%
-از «\LR{\textenglish{\url{http://fa.wikipedia.org/wiki/}}\RL{\ttfamily فارسي}}»}
-\begin{farsi}
-یا پارسی، (که دری، فارسی دری، و پارسی دری نیز نامیده می‌شود) زبانی است که
-در کشورهای ایران، افغانستان، تاجیکستان و ازبکستان به آن سخن می‌رانند.
-(برخی زبان فارسی در تاجیکستان و ازبکستان و چین را فارسی تاجیکی نام
-می‌گذارند).
-\end{farsi}
-
-\newpage
-\begin{english}
-\textbf{English}\footnote{%
- From \url{http://en.wikipedia.org/wiki/English_language}}
-is a West Germanic language originating in England, and the first language for
-most people in Australia, Canada, the Commonwealth Caribbean, Ireland, New
-Zealand, the United Kingdom and the United States of America (also commonly
-known as the Anglosphere). It is used extensively as a second language and as
-an official language throughout the world, especially in Commonwealth countries
-and in many international organisations.
-
-\textarabic{١ ٢ ٣}
-
-\end{english}
-\clearpage
-
-\section{أعمال تأريخية \textenglish{(Calendar operations)}}
-
-%\textenglish{\today} = \LTR{\today} =
-\setfootnoteLR
-\today\ = \Hijritoday%\footnote{
-% محسوب بـ \textenglish{\textsf{hijrical.sty}}}
-\LTRfootnote{ What is this?}
-\setfootnoteRL
-
-%\newpage
-\subsection{فلان}
-\textenglish{This is English: a b c}\marginpar{انكليزي} %FIXME! cf farsitex?
-
-\subsubsection{فلان فلان}
-\begin{enumerate}
- \item مثال
- \item مثال
- \begin{enumerate}
- \item مثال
- \item مثال
- \end{enumerate}
-
- \item مثال
-\end{enumerate}
-
-\begin{table}[h]
- \centering
- \begin{tabular}{cc}
- ا & ب \\
- ج & د
- \end{tabular}
- \caption{هذا المثال}
-\end{table}
-
-\[
-x^\text{مال مال}
-\]
-
-\begin{equation}
- x^2 + y^2 = z^2
- \label{test}
-\end{equation}
-\end{document}
-%</example-arabic.tex>
-%<*example-thai.tex>
-\documentclass[a4paper]{article}
-\usepackage[no-math]{fontspec}
-\usepackage{xltxtra,url}
-\usepackage{polyglossia}
-\setdefaultlanguage[numerals=thai]{thai}
-\setotherlanguage{english}
-\setmainfont{Norasi}
-\begin{document}
-\begin{center}
- \abstractname
-\end{center}
-\begin{english}
-Some English to begin with.\footnote{ %
- Blabla}
-\end{english}
-%%% NOTE: The wordbreak (\wbr) commands were inserted by the preprocessor cttex
-%%% (available from http://linux.thai.net/pub/thailinux/cvs/software/cttex/
-%%% or from http://packages.debian.org/cttex)
-%%% using the command :
-%%% $ cttex-utf8 <infile.tex> <outfile.tex>
-%%% where cttex-utf8 is the following simple shell script:
-%%% #!/bin/bash
-%%% cat $1 | iconv -f UTF-8 -t TIS-620 | cttex -w | sed 's/<WBR>/\\wbr /g' | iconv -f TIS-620 -t UTF8 > $2
-%%% (this should also work on MacOSX; windows users need to tweak it into a batch file I guess)
-
-เป็น\wbr แผนงานเพื่อ\wbr สนับสนุน\wbr การ\wbr ร่วมกัน\wbr สร้าง, การ\wbr ร่วมกันใช้, และ\wbr การ%
-ร่วมกัน\wbr พัฒนา\wbr ทรัพยากร\wbr ทาง\wbr ภาษา\wbr ของ\wbr ภาษา\wbr ไทย, บน\wbr เครือข่าย World Wide Web. แผนงานนี้\wbr มี%
-จุด\wbr ประสงค์หลั\wbr กอยู่\wbr สอง\wbr ประการคือ เพื่อแก้ปัญหา\wbr กำ\wbr แพง\wbr ทาง\wbr ภาษา, และรักษา%
-ไว้เพื่อ\wbr ความค\wbr งอยู่\wbr ของ\wbr ภาษา\wbr และ\wbr วัฒนธรรม\wbr ไทย.
-
-เรา\wbr ตระหนัก\wbr ดีถึง\wbr ความ\wbr สำคัญ\wbr ของ\wbr ภาษา ซึ่ง\wbr นอกจาก\wbr จะ\wbr เป็นสื่อ\wbr ระหว่าง\wbr คนกับ\wbr คน\wbr แล้ว ยัง\wbr เป็น%
-รูปแทน\wbr ความคิด และ\wbr เป็น\wbr เครื่องมือ\wbr ใน\wbr การใช้\wbr ความคิด\wbr ด้วย. เครือข่าย\wbr คอมพิวเตอร์%
-ใน\wbr ปัจจุบัน\wbr ทำให้ข้อมูล\wbr ข่าวสาร\wbr แพร่หลาย\wbr ไป\wbr อย่าง\wbr รวดเร็ว. เครื่องมือที่ใช้\wbr ใน\wbr การแส\wbr ดง\wbr ผล%
-และ\wbr การเต\wbr รี\wbr ยมข้อมูล\wbr ข่าวสาร\wbr นั้น จึง\wbr เป็นสิ่ง\wbr จำ\wbr เป็น. ด้วย\wbr เทคโนโลยีที่\wbr ก้าวหน้า\wbr ไป%
-อย่าง\wbr รวดเร็ว, การที่\wbr เพียง\wbr จะ\wbr สามารถแส\wbr ดง\wbr ผลได้หรือ\wbr ป้อนข้อมูลได้\wbr เท่านั้น ไม่\wbr เป็นที่%
-เพียงพออีก\wbr แล้ว. การแส\wbr ดง\wbr ผลที่\wbr สวย\wbr งาม\wbr ถูก\wbr ต้อง\wbr ตาม\wbr แบบแผน หรือ\wbr การเต\wbr รี\wbr ยมข้อมูลได้\wbr อย่าง%
-ถูก\wbr ต้อง และ\wbr รวดเร็วจึง\wbr เป็นสิ่งที่\wbr จำ\wbr เป็นที่\wbr จะ\wbr ต้อง\wbr พัฒนาให้\wbr ทันตาม\wbr การ\wbr เปลี่ยนแปลง\wbr ของ%
-เทคโนโลยี.\footnote{ %
- Second footnote}
-
-\today
-
-\begin{english}
-This is today: \today
-\end{english}
-
-\begin{enumerate}
- \item A
- \item B
- \begin{enumerate}
- \item a
- \item b
- \item c
- \end{enumerate}
- \item C
-\end{enumerate}
-\end{document}
-%</example-thai.tex>
-% \fi
-%
-% \typeout{*************************************************************}
-% \typeout{*}
-% \typeout{* To finish the installation you have to move the following}
-% \typeout{* file into a directory searched by TeX:}
-% \typeout{*}
-% \typeout{* \space\space\space all *.sty, *.lua, *.def and *.ldf files}
-% \typeout{*}
-% \typeout{* You also need to compile the *.map files with teckit_compile}
-% \typeout{* and place the resulting *.tec files under}
-% \typeout{* .../fonts/misc/xetex/fontmapping}
-% \typeout{*}
-% \typeout{*************************************************************}
-\endinput
diff --git a/macros/latex/contrib/polyglossia/polyglossia.pdf b/macros/latex/contrib/polyglossia/polyglossia.pdf
deleted file mode 100644
index 6c1979411b..0000000000
--- a/macros/latex/contrib/polyglossia/polyglossia.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/repltext/README b/macros/latex/contrib/repltext/README
index 54ba09bd33..3d5b0c1a76 100644
--- a/macros/latex/contrib/repltext/README
+++ b/macros/latex/contrib/repltext/README
@@ -25,7 +25,7 @@ the filename database, if necessary, using mktexlsr or a similar tool.
Copyright and license
=====================
-Copyright (C) 2014 by Scott Pakin <scott+repl@pakin.org>
+Copyright (C) 2014-2020 Scott Pakin <scott+repl@pakin.org>
This file may be distributed and/or modified under the conditions of
the LaTeX Project Public License, either version 1.3c of this license
diff --git a/macros/latex/contrib/repltext/repltext.dtx b/macros/latex/contrib/repltext/repltext.dtx
index 3cc1e9fcf9..9a116df516 100644
--- a/macros/latex/contrib/repltext/repltext.dtx
+++ b/macros/latex/contrib/repltext/repltext.dtx
@@ -1,7 +1,7 @@
% \iffalse meta-comment
%
-% Copyright (C) 2014 by Scott Pakin <scott+repl@pakin.org>
-% ---------------------------------------------------------
+% Copyright (C) 2014-2020 Scott Pakin <scott+repl@pakin.org>
+% ----------------------------------------------------------
%
% This file may be distributed and/or modified under the conditions of
% the LaTeX Project Public License, either version 1.3c of this license
@@ -22,11 +22,12 @@
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\ProvidesPackage{repltext}
%<*package>
- [2014/04/11 v1.0 PDF replacement text]
+ [2020/09/25 v1.1 PDF replacement text]
%</package>
%
%<*driver>
\documentclass{ltxdoc}
+\usepackage[T1]{fontenc}
\usepackage{repltext}
\usepackage{graphicx}
\usepackage{color}
@@ -46,7 +47,7 @@
pdfauthor={Scott Pakin},
pdfsubject={LaTeX package for PDF replacement text},
pdfkeywords={LaTeX, PDF, replacement text, ActualText, copy and paste},
- pdfcopyright={Copyright (C) 2014, Scott Pakin},
+ pdfcopyright={Copyright (C) 2014-2020 Scott Pakin},
pdflicenseurl={http://www.latex-project.org/lppl/},
pdfcaptionwriter={Scott Pakin},
pdfcontactemail={scott+repl@pakin.org},
@@ -60,13 +61,13 @@
\begin{document}
\DocInput{repltext.dtx}
-% \PrintChanges
+ \PrintChanges
\PrintIndex
\end{document}
%</driver>
% \fi
%
-% \CheckSum{38}
+% \CheckSum{59}
%
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -86,11 +87,12 @@
%
%
% \changes{v1.0}{2014/04/11}{Initial version}
+% \changes{v1.1}{2020/09/25}{Support modern Lua\protect\LaTeX\ versions}
%
% \GetFileInfo{repltext.dtx}
%
-% \DoNotIndex{\bgroup,\catcode,\egroup,\expandafter,\global,\let}
-% \DoNotIndex{\newcommand,\newenvironment,\the}
+% \DoNotIndex{\{,\},\bgroup,\catcode,\def,\egroup,\expandafter,\global,\let}
+% \DoNotIndex{\newcommand,\newenvironment,\protected,\providecommand,\the}
%
% ^^A Define some logical styles.
% \newcommand{\pkgname}[1]{^^A
@@ -322,13 +324,58 @@
%
% \section{Implementation}
%
-% \pkgname{repltext} relies on the \cs{pdfliteral} and
-% \cs{pdfescapestring} primitives, which are defined only by
-% pdf\LaTeX\ and Lua\LaTeX\@. We use the \pkgname{ifpdf} package to
-% test for one of those two \tex\ engines.
+% This section presents the documented source code for
+% \pkgname{repltext}. Most users can ignore this section.
%
+% \begin{macro}{\@ifdefined}
+% I find \cs{@ifdefined} a more natural construct than \cs{@ifundefined}.
% \begin{macrocode}
-\RequirePackage{ifpdf}
+\providecommand{\@ifdefined}[3]{\@ifundefined{#1}{#3}{#2}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\repl@literal}
+% \pkgname{repltext} needs a mechanism to insert literal PDF code. This
+% varies by \TeX\ engine so we have to define \cs{repl@literal} on an
+% engine-by-engine basis.
+% \changes{v1.1}{2020/09/25}{Add this macro}
+% \begin{macrocode}
+\@ifdefined{pdfliteral}{%
+% \end{macrocode}
+% \latex[pdf]
+% \begin{macrocode}
+ \let\repl@literal=\pdfliteral
+}{%
+ \@ifdefined{pdfextension}{%
+% \end{macrocode}
+% \latex[Lua]
+% \begin{macrocode}
+ \protected\def\repl@literal{\pdfextension literal}%
+ }{%
+% \end{macrocode}
+% Other
+% \begin{macrocode}
+ \PackageError{repltext}{Unrecognized TeX engine}{%
+ The repltext package currently works only with pdfLaTeX and\MessageBreak
+ LuaLaTeX.\space\space Please use of those engines to build your document.%
+ }%
+ }%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \pkgname{repltext} additionally needs a mechanism to escape
+% backslashes and parentheses in a string to make it usable as a PDF
+% string. This is easy in pdf\LaTeX, which provides
+% \cs{pdfescapestring}. Unfortunately, to my knowledge, no other
+% \TeX\ engine provides equivalent functionality. Rather than write our
+% own function, we leverage \pkgname{hyperref}'s \cs{Hy@pstringdef},
+% which provides similar functionality.
+% \begin{macrocode}
+\RequirePackage{etoolbox}
+\AtEndPreamble{%
+ \@ifpackageloaded{hyperref}{}{\RequirePackage{hyperref}}%
+}
% \end{macrocode}
%
% The \cs{repl@text@ii} macro invokes \cs{scalebox}, which is defined by
@@ -381,6 +428,7 @@
% \end{macro}
%
% \begin{macro}{\repl@text@ii}
+% \begin{macro}{\repl@escaped}
% \cs{repl@text@ii} is the macro that finally outputs something. It
% takes ordinary \LaTeX\ code as its argument and writes a PDF
% marked-content sequence that uses an \pdfname{ActualText} entry to
@@ -389,8 +437,9 @@
% second argument (\cs{repl@text@ii}'s |#1|~argument).
% \begin{macrocode}
\newcommand{\repl@text@ii}[1]{%
- \pdfliteral{
- /Span << /ActualText (\pdfescapestring{\the\repl@text@toks}) >>
+ \Hy@pstringdef\repl@escaped{\the\repl@text@toks}%
+ \repl@literal{
+ /Span << /ActualText (\repl@escaped) >>
BDC
}%
#1%
@@ -402,10 +451,11 @@
% without being noticeable.
% \begin{macrocode}
\scalebox{0.000001}{-}%
- \pdfliteral{EMC}%
+ \repl@literal{EMC}%
}
% \end{macrocode}
% \end{macro}
+% \end{macro}
%
% \begin{macro}{\prevrepl}
% For the author's convenience we define \cs{prevrepl} to refer to the
diff --git a/macros/latex/contrib/repltext/repltext.ins b/macros/latex/contrib/repltext/repltext.ins
index 1e637b10c4..b876b5535c 100644
--- a/macros/latex/contrib/repltext/repltext.ins
+++ b/macros/latex/contrib/repltext/repltext.ins
@@ -1,13 +1,13 @@
%%
-%% Copyright (C) 2014 by Scott Pakin <scott+repl@pakin.org>
+%% Copyright (C) 2014-2020 by Scott Pakin <scott+repl@pakin.org>
%%
%% This file may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License, either version 1.3c 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.3c or later is part of all distributions of LaTeX version
%% 2006/05/20 or later.
%%
@@ -19,7 +19,7 @@
\preamble
-Copyright (C) 2014 by Scott Pakin <scott+repl@pakin.org>
+Copyright (C) 2014-2020 by Scott Pakin <scott+repl@pakin.org>
This file may be distributed and/or modified under the conditions of
the LaTeX Project Public License, either version 1.3c of this license
diff --git a/macros/latex/contrib/repltext/repltext.pdf b/macros/latex/contrib/repltext/repltext.pdf
index 42ed086531..b34575b92b 100644
--- a/macros/latex/contrib/repltext/repltext.pdf
+++ b/macros/latex/contrib/repltext/repltext.pdf
Binary files differ
diff --git a/macros/latex/contrib/tcolorbox/CHANGES b/macros/latex/contrib/tcolorbox/CHANGES
index d48ba782dc..fd31f14db6 100644
--- a/macros/latex/contrib/tcolorbox/CHANGES
+++ b/macros/latex/contrib/tcolorbox/CHANGES
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.32 (2020/09/17)
+%% The LaTeX package tcolorbox - version 4.40 (2020/09/25)
%%
%% -------------------------------------------------------------------------------------------
%% Copyright (c) 2006-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
@@ -1164,3 +1164,20 @@ version 4.32 (2020/09/17)
- library 'xparse':
* new options (#111): 'IfNoValueT', 'IfNoValueF', 'IfValueT', 'IfValueF',
'IfBooleanT', 'IfBooleanF'
+
+version 4.40 (2020/09/25)
+- bug fix (#114): 'IfBooleanT', 'IfBooleanF'
+- bug fix (#117): 'widget' set 'toprule at break' and needed the breakable library
+- (bug) fix: style 'marker' set 'breakable' and needed the breakable library
+- (#113) 'capture=hbox' applies '\@parboxrestore' now to allow e.g. hbox style
+ listings inside indented environments like itemize
+- (#2) support 'hbox' for 'minted' listings
+- (#115) New default vertical space options
+ 'before skip balanced', 'after skip balanced', 'beforeafter skip balanced'
+ NOTE: These options replace the current default options
+ 'parskip', 'noparskip', 'autoparskip'
+ WARNING: Old documents may need adapted manual page breaks where used.
+ Otherwise: Use \tcbsetforeverylayer{autoparskip}
+ to restore the old behavior!
+- 'before skip' and 'before skip balanced' do not insert glue now, if
+ the tcolorbox is the first element in a minipage (or sourrounding tcolorbox)
diff --git a/macros/latex/contrib/tcolorbox/README b/macros/latex/contrib/tcolorbox/README
index f421faa8eb..67c4e5df05 100644
--- a/macros/latex/contrib/tcolorbox/README
+++ b/macros/latex/contrib/tcolorbox/README
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.32 (2020/09/17)
+%% The LaTeX package tcolorbox - version 4.40 (2020/09/25)
%%
%% -------------------------------------------------------------------------------------------
%% Copyright (c) 2006-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
diff --git a/macros/latex/contrib/tcolorbox/tcbbreakable.code.tex b/macros/latex/contrib/tcolorbox/tcbbreakable.code.tex
index 2405db4b60..2779d615ef 100644
--- a/macros/latex/contrib/tcolorbox/tcbbreakable.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbbreakable.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.32 (2020/09/17)
+%% The LaTeX package tcolorbox - version 4.40 (2020/09/25)
%% tcbbreakable.code.tex: Code for breakable colorboxes
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{4.32}
+\tcb@set@library@version{4.40}
\RequirePackage{pdfcol}
\pdfcolInitStack{tcb@breakable}
@@ -274,14 +274,16 @@
\tcb@multicolfalse%
\fi}%
\ifx\kvtcb@float\@empty\relax%
- \iftcb@nobreak{%
+ \iftcb@nobreak
\let\tcb@nobreak@warning\tcb@do@nobreak@warning%
\iftcb@ignorenobreak%
\kvtcb@beforebox%
\else%
\tcb@handle@nobreak%
\fi%
- }{\kvtcb@beforebox}%
+ \else%
+ \kvtcb@beforebox%
+ \fi%
\def\kvtcb@beforebox{\parskip\z@\nointerlineskip\noindent}%
\noindent% applies parskip
\vskip\lineskip{\parskip\z@\par\vskip\z@}\bgroup\@nobreakfalse\addpenalty\z@\egroup% force update vertical list
diff --git a/macros/latex/contrib/tcolorbox/tcbdocumentation.code.tex b/macros/latex/contrib/tcolorbox/tcbdocumentation.code.tex
index 2c69a26a06..cdf255e7ab 100644
--- a/macros/latex/contrib/tcolorbox/tcbdocumentation.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbdocumentation.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.32 (2020/09/17)
+%% The LaTeX package tcolorbox - version 4.40 (2020/09/25)
%% tcbdocumentation.code.tex: Code for LaTeX documentations
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{4.32}
+\tcb@set@library@version{4.40}
\tcbuselibrary{listings,skins,xparse,external,raster}
diff --git a/macros/latex/contrib/tcolorbox/tcbexternal.code.tex b/macros/latex/contrib/tcolorbox/tcbexternal.code.tex
index b4dd73e40c..0f6d235e21 100644
--- a/macros/latex/contrib/tcolorbox/tcbexternal.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbexternal.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.32 (2020/09/17)
+%% The LaTeX package tcolorbox - version 4.40 (2020/09/25)
%% tcbexternal.code.tex: Code for externalization
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{4.32}
+\tcb@set@library@version{4.40}
\tcbuselibrary{pro@cessing}
diff --git a/macros/latex/contrib/tcolorbox/tcbfitting.code.tex b/macros/latex/contrib/tcolorbox/tcbfitting.code.tex
index 2240147a9e..2e88a1e015 100644
--- a/macros/latex/contrib/tcolorbox/tcbfitting.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbfitting.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.32 (2020/09/17)
+%% The LaTeX package tcolorbox - version 4.40 (2020/09/25)
%% tcbfitting.code.tex: Code for fit boxes
%%
%% -------------------------------------------------------------------------------------------
@@ -18,7 +18,7 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{4.32}
+\tcb@set@library@version{4.40}
\newdimen\tcbfitdim
\newdimen\tcb@lowerfitdim
diff --git a/macros/latex/contrib/tcolorbox/tcbhooks.code.tex b/macros/latex/contrib/tcolorbox/tcbhooks.code.tex
index 63f1cd944b..09f13ac059 100644
--- a/macros/latex/contrib/tcolorbox/tcbhooks.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbhooks.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.32 (2020/09/17)
+%% The LaTeX package tcolorbox - version 4.40 (2020/09/25)
%% tcbhooks.code.tex: Code for adding hooks
%%
%% -------------------------------------------------------------------------------------------
@@ -18,7 +18,7 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{4.32}
+\tcb@set@library@version{4.40}
\tcbset{%
before upper app/.code={\appto\kvtcb@before@upper{#1}},%
diff --git a/macros/latex/contrib/tcolorbox/tcblistings.code.tex b/macros/latex/contrib/tcolorbox/tcblistings.code.tex
index 8604e6896f..e51b1b775f 100644
--- a/macros/latex/contrib/tcolorbox/tcblistings.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcblistings.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.32 (2020/09/17)
+%% The LaTeX package tcolorbox - version 4.40 (2020/09/25)
%% tcblistings.code.tex: Code for colorboxes with listings
%%
%% -------------------------------------------------------------------------------------------
@@ -18,7 +18,7 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{4.32}
+\tcb@set@library@version{4.40}
\RequirePackage{listings}[2007/02/22]
diff --git a/macros/latex/contrib/tcolorbox/tcblistingscore.code.tex b/macros/latex/contrib/tcolorbox/tcblistingscore.code.tex
index c0460a3c1e..d18c86c141 100644
--- a/macros/latex/contrib/tcolorbox/tcblistingscore.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcblistingscore.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.32 (2020/09/17)
+%% The LaTeX package tcolorbox - version 4.40 (2020/09/25)
%% tcblistingscode.code.tex: Auxiliary code for colorboxes with listings
%%
%% -------------------------------------------------------------------------------------------
@@ -18,7 +18,7 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{4.32}
+\tcb@set@library@version{4.40}
\tcbuselibrary{pro@cessing}
diff --git a/macros/latex/contrib/tcolorbox/tcblistingsutf8.code.tex b/macros/latex/contrib/tcolorbox/tcblistingsutf8.code.tex
index 78eae82da9..47b54affba 100644
--- a/macros/latex/contrib/tcolorbox/tcblistingsutf8.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcblistingsutf8.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.32 (2020/09/17)
+%% The LaTeX package tcolorbox - version 4.40 (2020/09/25)
%% tcblistingsutf8.code.tex: Code for colorboxes with listings in UTF-8
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{4.32}
+\tcb@set@library@version{4.40}
\tcbuselibrary{listings}
diff --git a/macros/latex/contrib/tcolorbox/tcbmagazine.code.tex b/macros/latex/contrib/tcolorbox/tcbmagazine.code.tex
index 297ecf5cb0..3fdd32a04f 100644
--- a/macros/latex/contrib/tcolorbox/tcbmagazine.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbmagazine.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.32 (2020/09/17)
+%% The LaTeX package tcolorbox - version 4.40 (2020/09/25)
%% tcbmagazine.code.tex: Code for box sets and magazine styles
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{4.32}
+\tcb@set@library@version{4.40}
\tcbuselibrary{breakable}
diff --git a/macros/latex/contrib/tcolorbox/tcbminted.code.tex b/macros/latex/contrib/tcolorbox/tcbminted.code.tex
index 30a01ea7ad..5d8558f825 100644
--- a/macros/latex/contrib/tcolorbox/tcbminted.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbminted.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.32 (2020/09/17)
+%% The LaTeX package tcolorbox - version 4.40 (2020/09/25)
%% tcbminted.code.tex: Code for colorboxes with listings
%%
%% -------------------------------------------------------------------------------------------
@@ -18,10 +18,13 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{4.32}
+\tcb@set@library@version{4.40}
\RequirePackage{minted}[2011/09/17]
+% to be removed, if integrated into the minted package (#281)
+\minted@def@optcl{envname}{-P envname}{#1}
+
\tcbuselibrary{listings@core}
\def\tcb@minted@input@listing#1#2#3#4{%
@@ -32,7 +35,11 @@
\edef\tcb@temp{\noexpand\usemintedstyle{\the\toks@}}%
\tcb@temp%
\fi%
- \toks@=\expandafter{#1}%
+ \ifdefstring{\tcb@listing@capture}{hbox}{%
+ \toks@=\expandafter{#1,envname=BVerbatim}%
+ }{%
+ \toks@=\expandafter{#1}%
+ }%
\edef\tcb@temp{\noexpand\inputminted[\the\toks@]}%
\IfFileExists{\minted@outputdir#3}%
{\tcb@temp{#2}{\minted@outputdir#3}}%
diff --git a/macros/latex/contrib/tcolorbox/tcbposter.code.tex b/macros/latex/contrib/tcolorbox/tcbposter.code.tex
index 64f96c0251..96e31805df 100644
--- a/macros/latex/contrib/tcolorbox/tcbposter.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbposter.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.32 (2020/09/17)
+%% The LaTeX package tcolorbox - version 4.40 (2020/09/25)
%% tcbposter.code.tex: Code for posters
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{4.32}
+\tcb@set@library@version{4.40}
\tcbuselibrary{breakable,magazine,skins,fitting}
diff --git a/macros/latex/contrib/tcolorbox/tcbprocessing.code.tex b/macros/latex/contrib/tcolorbox/tcbprocessing.code.tex
index 88169a0b87..af49bd855c 100644
--- a/macros/latex/contrib/tcolorbox/tcbprocessing.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbprocessing.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.32 (2020/09/17)
+%% The LaTeX package tcolorbox - version 4.40 (2020/09/25)
%% tcbprocessing.code.tex: Code for conditional processing
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{4.32}
+\tcb@set@library@version{4.40}
\RequirePackage{pdftexcmds}
\RequirePackage{shellesc}
diff --git a/macros/latex/contrib/tcolorbox/tcbraster.code.tex b/macros/latex/contrib/tcolorbox/tcbraster.code.tex
index e6abad21ec..8b1d3a36db 100644
--- a/macros/latex/contrib/tcolorbox/tcbraster.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbraster.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.32 (2020/09/17)
+%% The LaTeX package tcolorbox - version 4.40 (2020/09/25)
%% tcbskinsjigsaw.code.tex: Code for colorboxes with different skins
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{4.32}
+\tcb@set@library@version{4.40}
\newcounter{tcbrastercolumn}
\newcounter{tcbrasterrow}
diff --git a/macros/latex/contrib/tcolorbox/tcbskins.code.tex b/macros/latex/contrib/tcolorbox/tcbskins.code.tex
index 28cadb737a..7deee187e9 100644
--- a/macros/latex/contrib/tcolorbox/tcbskins.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbskins.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.32 (2020/09/17)
+%% The LaTeX package tcolorbox - version 4.40 (2020/09/25)
%% tcbskins.code.tex: Code for colorboxes with different skins
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{4.32}
+\tcb@set@library@version{4.40}
\RequirePackage{tikz}[2010/10/13]
@@ -771,7 +771,7 @@
segmentation code={\tcb@drawspec@widgetsegment},%
skin first=widgetfirst,skin middle=widgetmiddle,skin last=widgetlast}
-\tcbset{widget/.style={skin=widget,arc=0.5mm,fonttitle=\bfseries,titlerule=0mm,toprule at break=0mm}}
+\tcbset{widget/.style={skin=widget,arc=0.5mm,fonttitle=\bfseries,titlerule=0mm}}
\tcb@new@skin{widgetfirst}{base@first,%
frame engine=pathfirst,interior titled engine=pathfirst,interior engine=pathfirst,segmentation engine=empty,title engine=empty,%
@@ -1336,7 +1336,7 @@
\tcbset{marker/.style={%
skin=enhancedmiddle jigsaw,
- breakable,parbox=false,
+ parbox=false,
boxrule=0mm,leftrule=5mm,rightrule=5mm,boxsep=0mm,
left=3mm,right=3mm,top=1mm,bottom=1mm,
toptitle=1mm,bottomtitle=1mm,fonttitle=\bfseries,
diff --git a/macros/latex/contrib/tcolorbox/tcbskinsjigsaw.code.tex b/macros/latex/contrib/tcolorbox/tcbskinsjigsaw.code.tex
index b608e7c157..40e3b7dff8 100644
--- a/macros/latex/contrib/tcolorbox/tcbskinsjigsaw.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbskinsjigsaw.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.32 (2020/09/17)
+%% The LaTeX package tcolorbox - version 4.40 (2020/09/25)
%% tcbskinsjigsaw.code.tex: Code for colorboxes with different skins
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{4.32}
+\tcb@set@library@version{4.40}
\tcbuselibrary{skins}
diff --git a/macros/latex/contrib/tcolorbox/tcbtheorems.code.tex b/macros/latex/contrib/tcolorbox/tcbtheorems.code.tex
index 2ee69469f3..d86cf5aa7a 100644
--- a/macros/latex/contrib/tcolorbox/tcbtheorems.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbtheorems.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.32 (2020/09/17)
+%% The LaTeX package tcolorbox - version 4.40 (2020/09/25)
%% tcbtheorems.code.tex: Code for theorems in colorboxes
%%
%% -------------------------------------------------------------------------------------------
@@ -18,7 +18,7 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{4.32}
+\tcb@set@library@version{4.40}
\RequirePackage{amsmath}
diff --git a/macros/latex/contrib/tcolorbox/tcbvignette.code.tex b/macros/latex/contrib/tcolorbox/tcbvignette.code.tex
index 71f6f5c32e..e7fdadcdf2 100644
--- a/macros/latex/contrib/tcolorbox/tcbvignette.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbvignette.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.32 (2020/09/17)
+%% The LaTeX package tcolorbox - version 4.40 (2020/09/25)
%% tcbvignette.code.tex: Code for ornamental frames
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{4.32}
+\tcb@set@library@version{4.40}
\tcbuselibrary{skins}
diff --git a/macros/latex/contrib/tcolorbox/tcbxparse.code.tex b/macros/latex/contrib/tcolorbox/tcbxparse.code.tex
index 7eaea506ee..ec86d3fab4 100644
--- a/macros/latex/contrib/tcolorbox/tcbxparse.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbxparse.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.32 (2020/09/17)
+%% The LaTeX package tcolorbox - version 4.40 (2020/09/25)
%% tcbxparse.code.tex: Code for xparse features
%%
%% -------------------------------------------------------------------------------------------
@@ -18,7 +18,7 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{4.32}
+\tcb@set@library@version{4.40}
\RequirePackage{xparse}[2013/12/31]
@@ -30,8 +30,8 @@
IfValueT/.code n args={2}{\IfValueT{#1}{\pgfkeysalso{#2}}},
IfValueF/.code n args={2}{\IfValueF{#1}{\pgfkeysalso{#2}}},
IfBooleanTF/.code n args={3}{\IfBooleanTF{#1}{\pgfkeysalso{#2}}{\pgfkeysalso{#3}}},
- IfBooleanT/.code n args={3}{\IfBooleanT{#1}{\pgfkeysalso{#2}}},
- IfBooleanF/.code n args={3}{\IfBooleanF{#1}{\pgfkeysalso{#2}}},
+ IfBooleanT/.code n args={2}{\IfBooleanT{#1}{\pgfkeysalso{#2}}},
+ IfBooleanF/.code n args={2}{\IfBooleanF{#1}{\pgfkeysalso{#2}}},
verbatim/.style={fontupper=\ttfamily,nobeforeafter,tcbox raise base,top=0pt,bottom=0pt,left=1mm,right=1mm,boxrule=0.3mm}
}
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.pdf b/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.pdf
index 2f8c59debe..6cdb9974d8 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.pdf
+++ b/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.pdf
Binary files differ
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.tex b/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.tex
index 74eb419478..9db17546ef 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.32 (2020/09/17)
+%% The LaTeX package tcolorbox - version 4.40 (2020/09/25)
%% tcolorbox-example-poster.tex: a poster example for tcolorbox
%%
%% -------------------------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox-example.pdf b/macros/latex/contrib/tcolorbox/tcolorbox-example.pdf
index b623da1676..c5eb25044c 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox-example.pdf
+++ b/macros/latex/contrib/tcolorbox/tcolorbox-example.pdf
Binary files differ
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox-example.tex b/macros/latex/contrib/tcolorbox/tcolorbox-example.tex
index 3a62669872..8a119c7448 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox-example.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox-example.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.32 (2020/09/17)
+%% The LaTeX package tcolorbox - version 4.40 (2020/09/25)
%% tcolorbox-example.tex: an example for tcolorbox
%%
%% -------------------------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.pdf b/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.pdf
index 837d8ba475..6cec00a3af 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.pdf
+++ b/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.pdf
Binary files differ
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.tex b/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.tex
index a84d704590..ab9b50b369 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.tex
@@ -1,5 +1,5 @@
% \LaTeX-Main\
-%% The LaTeX package tcolorbox - version 4.32 (2020/09/17)
+%% The LaTeX package tcolorbox - version 4.40 (2020/09/25)
%% tcolorbox-tutorial-poster.tex: a tutorial for poster creation with tcolorbox
%%
%% -------------------------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.breakable.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.breakable.tex
index c714bfd445..b8d678d8d2 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.breakable.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.breakable.tex
@@ -128,7 +128,7 @@ parameters. The differences are:
\refKey{/tcb/before} and \refKey{/tcb/after} settings, especially, if there
is an automatic page break before the box.
\item\tcbdocmarginnote{\tcbdocnew{2016-05-25}}
- Lua\TeX\ version 0.95 changes the behaviour of the basic |\vsplit| (a bug?!)
+ Lua\TeX\ version 0.95 changes the behavior of the basic |\vsplit| (a bug?!)
resulting in badly broken boxes. Thanks to Jeremy Engel,
the \mylib{breakable} library contains a patch for this which
also loads the the |ifluatex| package.
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.coreoptions.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.coreoptions.tex
index ba853c46e3..d885f48279 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.coreoptions.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.coreoptions.tex
@@ -240,8 +240,6 @@ and an optional \emph{lower part}. These parts are separated by
This is a \textbf{tcolorbox} (but invisible).
\end{tcolorbox}
-\bigskip
-
\begin{tcolorbox}[upperbox=invisible,colback=white]
This is a \textbf{tcolorbox} (but invisible).
\tcblower
@@ -426,6 +424,8 @@ Now, the saved part is used:
\end{tcolorbox}
\end{exdispExample}
+\enlargethispage*{1cm}
+
The |savedelimiter| is used implicitely with \refCom{newtcolorbox} which
allows a more convenient usage:
\begin{exdispExample}{savedelimiter2}
@@ -2805,52 +2805,34 @@ are drawn by the codes given with
\subsection{Embedding into the Surroundings}\label{subsec:surroundings}
Typically, but not necessarily, a |tcolorbox| is put inside a separate paragraph
and has some vertical space before and after it.
-This behavior is controlled by the keys |before| and |after|.
+This behavior is controlled by the keys \refKey{/tcb/before} and \refKey{/tcb/after}.
+
+\begin{marker}
+Before version 4.40, the default setting for \refKey{/tcb/before}
+and \refKey{/tcb/after} was given by \refKey{/tcb/autoparskip}.
+Starting with version 4.40, the default setting is given by
+\refKey{/tcb/before skip balanced} and \refKey{/tcb/after skip balanced}.\par
+Note that old documents may need adaptions of page breaks.\par
+Alternatively, the old default setting can be restored by using
+\begin{dispListing}
+\tcbsetforeverylayer{autoparskip}
+\end{dispListing}
+inside the document preamble.
+\end{marker}
-\begin{docTcbKey}{before}{=\meta{code}}{no default, initially see \refKey{/tcb/autoparskip}}
+
+\begin{docTcbKey}{before}{=\meta{code}}{no default, initially see \refKey{/tcb/before skip balanced}}
Sets the \meta{code} which is executed before the colored box.
It is not used for floating boxes.
Also, it is not used, if the box follows a heading immediately
and \refKey{/tcb/ignore nobreak} is set to \docValue{false}.
\end{docTcbKey}
-\begin{docTcbKey}{after}{=\meta{code}}{no default, initially see \refKey{/tcb/autoparskip}}
+\begin{docTcbKey}{after}{=\meta{code}}{no default, initially see \refKey{/tcb/after skip balanced}}
Sets the \meta{code} which is executed after the colored box.
It is not used for floating boxes.
\end{docTcbKey}
-\begin{docTcbKey}[][doc updated=2017-02-01]{parskip}{}{style, no value}
- Sets the keys |before| and |after| to values which are
- recommended, if the package |parskip| \emph{is} used and there is no better
- idea for |before| and |after|. This is similar to:
-\begin{dispListing}
-\tcbset{parskip/.style={before={\par\pagebreak[0]\parindent=0pt},
- after={\par}}}
-\end{dispListing}
-\end{docTcbKey}
-
-\begin{docTcbKey}[][doc updated=2017-02-01]{noparskip}{}{style, no value}
- Sets the keys |before| and |after| to values which are
- recommended, if the package |parskip| is \emph{not} used and there is no better
- idea for |before| and |after|. This is similar to:
-\begin{dispListing}
-\tcbset{noparskip/.style={before={\par\pagebreak[0]\smallskip\parindent=0pt},
- after={\par\smallskip}}}
-\end{dispListing}
-\end{docTcbKey}
-
-\begin{docTcbKey}{autoparskip}{}{style, no value, initially set}
- Tries to detect the usage of the package |parskip| and sets
- the keys |before| and |after| accordingly. Actually, the following is done:
- \begin{itemize}
- \item If the length of |\parskip| is greater than |0pt| at the beginning of the document,
- \refKey{/tcb/parskip} is executed. Here, the usage of package |parskip| is \emph{assumed}.
- \item Otherwise, if the length of |\parskip| is not greater than |0pt| at the beginning of the document,
- \refKey{/tcb/noparskip} is executed. Here, the absence of package |parskip| is \emph{assumed}.
- \end{itemize}
- |autoparskip| is the default for the package |tcolorbox|, if |before| or |after|
- are not changed otherwise.
-\end{docTcbKey}
\begin{docTcbKey}{nobeforeafter}{}{style, no value}
Abbreviation for clearing the keys |before| and |after|. The colored box
@@ -2865,7 +2847,6 @@ This behavior is controlled by the keys |before| and |after|.
\end{exdispExample}
\end{docTcbKey}
-\enlargethispage*{1cm}
\begin{docTcbKey}{force nobeforeafter}{}{style, no value}
Forces the setting of \refKey{/tcb/nobeforeafter} even if
\refKey{/tcb/before} and \refKey{/tcb/after} are set to other values
@@ -2876,78 +2857,80 @@ This behavior is controlled by the keys |before| and |after|.
\clearpage
-\begin{docTcbKey}{baseline}{=\meta{length}}{no default, initially |0pt|}
- Used to set the |\pgfsetbaseline| value of the resulting |tcolorbox|.
-\begin{exdispExample}{baseline}
-\tcbset{colframe=red!50!white,width=4cm,nobeforeafter}
-Some text\dotfill
-\begin{tcolorbox}[baseline=3mm]
-One line.
-\end{tcolorbox}
-\begin{tcolorbox}[baseline=3mm]
-First line.\\Second line.
+\begin{docTcbKey}[][doc new={2020-09-25}]{before skip balanced}{=\meta{glue}}{no default, initially |0.5\textbackslash baselineskip plus 2pt|}
+ Inserts some vertical space before the colored box. This style sets \refKey{/tcb/before}.\par
+ If the depth of the
+ preceeding \TeX\ box is between |0pt| and |0.3\baselineskip|,
+ the distance between the \emph{baseline} of the preceeding \TeX\ box and the tcolorbox
+ ist set to \meta{glue}$+$|0.3\baselineskip|.\par
+ If the depth is larger, the distance of the preceeding \TeX\ box and the tcolorbox
+ ist set to \meta{glue}.\par
+ Alternatively, see \refKey{/tcb/before skip} which ignores the \emph{baseline}.
+
+\begin{exdispExample*}{before_skip_balanced}{sbs,lefthand ratio=0.6}
+Some text.
+\begin{tcolorbox}[before skip balanced=1cm,
+ colframe=red!50!white]
+ This is a \textbf{tcolorbox}.
\end{tcolorbox}
-\end{exdispExample}
+\end{exdispExample*}
\end{docTcbKey}
+\begin{docTcbKey}[][doc new={2020-09-25}]{after skip balanced}{=\meta{glue}}{no default, initially |0.5\textbackslash baselineskip plus 2pt|}
+ Inserts some vertical space of the given \meta{glue} after the colored box.
+ This style sets \refKey{/tcb/after}.
+ Additionally, |\prevdepth| is set to |0.3\baselineskip|. The following
+ \TeX\ box may enlarge the space by further glue to adjust its \emph{baseline}.
+ Alternatively, see \refKey{/tcb/after skip} which ignores the \emph{baseline}.
-\begin{docTcbKey}[][doc new=2014-10-10]{box align}{=\meta{alignment}}{style, no default, initially |bottom|}
- Used to set the \refKey{/tcb/baseline} value of the resulting |tcolorbox|.
- Feasible values for \meta{alignment} are:
- \begin{itemize}
- \item\docValue{bottom}: alignment with the box bottom,
- \item\docValue{top}: alignment with the box top,
- \item\docValue{center}: alignment with the box center,
- \item\docValue{base}: alignment with the box content base. This option
- is not applicable for a \refEnv{tcolorbox} but for a \refCom{tcbox} only.
- It is an alias for \refKey{/tcb/tcbox raise base}.
- \end{itemize}
-
-\begin{exdispExample}{box_align_1}
-\tcbset{colframe=red!50!white,width=4cm,nobeforeafter}
-Some text\dotfill
-\begin{tcolorbox}[box align=bottom]
-One line.
-\end{tcolorbox}
-\begin{tcolorbox}[box align=bottom]
-First line.\\Second line.
-\end{tcolorbox}
-\end{exdispExample}
-
-\begin{exdispExample}{box_align_2}
-\tcbset{colframe=red!50!white,width=4cm,nobeforeafter}
-Some text\dotfill
-\begin{tcolorbox}[box align=top]
-One line.
-\end{tcolorbox}
-\begin{tcolorbox}[box align=top]
-First line.\\Second line.
+\begin{exdispExample*}{after_skip_balanced}{sbs,lefthand ratio=0.6}
+\begin{tcolorbox}[after skip balanced=1cm,
+ colframe=red!50!white]
+ This is a \textbf{tcolorbox}.
\end{tcolorbox}
-\end{exdispExample}
+Some text.
+\end{exdispExample*}
+\end{docTcbKey}
-\begin{exdispExample}{box_align_3}
-\tcbset{colframe=red!50!white,width=4cm,nobeforeafter}
-Some text\dotfill
-\begin{tcolorbox}[box align=center]
-One line.
-\end{tcolorbox}
-\begin{tcolorbox}[box align=center]
-First line.\\Second line.
-\end{tcolorbox}
-\end{exdispExample}
-\begin{exdispExample}{box_align_4}
-\tcbset{colframe=red!50!white,nobeforeafter}
-Some text\dotfill
-\tcbox[nobeforeafter,box align=base]{One line}
-\tcbox[nobeforeafter,box align=base,size=fbox]{Another line}
-\end{exdispExample}
+\begin{docTcbKey}[][doc new={2020-09-25}]{beforeafter skip balanced}{=\meta{glue}}{no default, initially |0.5\textbackslash baselineskip plus 2pt|}
+ Inserts some vertical space of the given \meta{glue} before \emph{and} after the colored box.
+ This style sets \refKey{/tcb/before skip balanced} and \refKey{/tcb/after skip balanced}.
+\begin{exdispExample*}{beforeafter_skip_balanced}{sbs,lefthand ratio=0.6}
+\newtcolorbox{doubleline}[1][]{
+ beforeafter skip balanced=0pt,
+ height=1.8\baselineskip,
+ enlarge top by=.1\baselineskip,
+ enlarge bottom by=.1\baselineskip,
+ colframe=blue!20,colback=blue!5,
+ size=small,valign upper=center,#1 }
+
+\noindent\begin{tikzpicture}
+\path[use as bounding box] (0,0)
+ rectangle (0.1,0.1);
+\foreach \y in {0,1,...,9} {
+ \draw[very thin,red]
+ (-0.2,-\y*\baselineskip) --
+ (\linewidth+0.2cm,-\y*\baselineskip); }
+\end{tikzpicture}
+line 1\par
+\begin{doubleline} Abc \end{doubleline}
+\begin{doubleline} Def \end{doubleline}
+line 2g\par
+\begin{doubleline} Ghi \end{doubleline}
+line 3\par
+line 4 g
+\end{exdispExample*}
\end{docTcbKey}
-\begin{docTcbKey}[][doc new and updated={2014-10-10}{2015-03-16}]{before skip}{=\meta{glue}}{style, no default}
+\clearpage
+
+\begin{docTcbKey}[][doc new and updated={2020-09-25}{2015-03-16}]{before skip}{=\meta{glue}}{style, no default}
Inserts some vertical space of the given \meta{glue} before the colored box.
This style sets \refKey{/tcb/before}.
+ In contrast to \refKey{/tcb/before skip balanced}, this \meta{glue} is
+ relative to the lower edge of the preceeding box and not to the baseline.
\begin{exdispExample*}{before_skip}{sbs,lefthand ratio=0.6}
Some text.
\begin{tcolorbox}[before skip=1cm,
@@ -2957,9 +2940,11 @@ Some text.
\end{exdispExample*}
\end{docTcbKey}
-\begin{docTcbKey}[][doc new and updated={2014-10-10}{2017-02-01}]{after skip}{=\meta{glue}}{style, no default}
+\begin{docTcbKey}[][doc new and updated={2020-09-25}{2017-02-01}]{after skip}{=\meta{glue}}{style, no default}
Inserts some vertical space of the given \meta{glue} after the colored box.
This style sets \refKey{/tcb/after}.
+ In contrast to \refKey{/tcb/after skip balanced}, this \meta{glue} is
+ relative to the upper edge of the following box and not to the baseline.
\begin{exdispExample*}{after_skip}{sbs,lefthand ratio=0.6}
\begin{tcolorbox}[after skip=1cm,
colframe=red!50!white]
@@ -2971,19 +2956,23 @@ Some text.
\begin{docTcbKey}[][doc new=2014-10-10]{beforeafter skip}{=\meta{glue}}{style, no default}
Inserts some vertical space of the given \meta{glue} before \emph{and} after the colored box.
- This style sets \refKey{/tcb/before} and \refKey{/tcb/after}.
+ This style sets \refKey{/tcb/before skip} and \refKey{/tcb/after skip}.
\begin{exdispExample*}{beforeafter_skip}{sbs,lefthand ratio=0.6}
\tcbset{beforeafter skip=0pt,
colframe=red!50!white}
+
+text before
\begin{tcolorbox}
This is a \textbf{tcolorbox}.
\end{tcolorbox}
\begin{tcolorbox}
Second box.
\end{tcolorbox}
+text after
\end{exdispExample*}
\end{docTcbKey}
+
\clearpage
\begin{docTcbKey}[][doc new=2014-11-07]{left skip}{=\meta{length}}{style, no default, initially |0mm|}
@@ -3028,6 +3017,122 @@ Some text.
\end{docTcbKey}
+\clearpage
+
+\begin{docTcbKey}[][doc updated=2017-02-01]{parskip}{}{style, no value}
+ This options is considered to be superseded by
+ \refKey{/tcb/before skip balanced} and \refKey{/tcb/after skip balanced}
+ (see note on page~\pageref{subsec:surroundings}).\par
+ Sets the keys |before| and |after| to values which are
+ recommended, if the package |parskip| \emph{is} used and there is no better
+ idea for |before| and |after|. This is similar to:
+\begin{dispListing}
+\tcbset{parskip/.style={before={\par\pagebreak[0]\parindent=0pt},
+ after={\par}}}
+\end{dispListing}
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc updated=2017-02-01]{noparskip}{}{style, no value}
+ This options is considered to be superseded by
+ \refKey{/tcb/before skip balanced} and \refKey{/tcb/after skip balanced}
+ (see note on page~\pageref{subsec:surroundings}).\par
+ Sets the keys |before| and |after| to values which are
+ recommended, if the package |parskip| is \emph{not} used and there is no better
+ idea for |before| and |after|. This is similar to:
+\begin{dispListing}
+\tcbset{noparskip/.style={before={\par\pagebreak[0]\smallskip\parindent=0pt},
+ after={\par\smallskip}}}
+\end{dispListing}
+\end{docTcbKey}
+
+\begin{docTcbKey}{autoparskip}{}{style, no value}
+ This options is considered to be superseded by
+ \refKey{/tcb/before skip balanced} and \refKey{/tcb/after skip balanced}
+ (see note on page~\pageref{subsec:surroundings}).\par
+ Tries to detect the usage of the package |parskip| and sets
+ the keys |before| and |after| accordingly. Actually, the following is done:
+ \begin{itemize}
+ \item If the length of |\parskip| is greater than |0pt| at the beginning of the document,
+ \refKey{/tcb/parskip} is executed. Here, the usage of package |parskip| is \emph{assumed}.
+ \item Otherwise, if the length of |\parskip| is not greater than |0pt| at the beginning of the document,
+ \refKey{/tcb/noparskip} is executed. Here, the absence of package |parskip| is \emph{assumed}.
+ \end{itemize}
+\end{docTcbKey}
+
+
+\clearpage
+
+\begin{docTcbKey}{baseline}{=\meta{length}}{no default, initially |0pt|}
+ Used to set the |\pgfsetbaseline| value of the resulting |tcolorbox|.
+\begin{exdispExample}{baseline}
+\tcbset{colframe=red!50!white,width=4cm,nobeforeafter}
+Some text\dotfill
+\begin{tcolorbox}[baseline=3mm]
+One line.
+\end{tcolorbox}
+\begin{tcolorbox}[baseline=3mm]
+First line.\\Second line.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2014-10-10]{box align}{=\meta{alignment}}{style, no default, initially |bottom|}
+ Used to set the \refKey{/tcb/baseline} value of the resulting |tcolorbox|.
+ Feasible values for \meta{alignment} are:
+ \begin{itemize}
+ \item\docValue{bottom}: alignment with the box bottom,
+ \item\docValue{top}: alignment with the box top,
+ \item\docValue{center}: alignment with the box center,
+ \item\docValue{base}: alignment with the box content base. This option
+ is not applicable for a \refEnv{tcolorbox} but for a \refCom{tcbox} only.
+ It is an alias for \refKey{/tcb/tcbox raise base}.
+ \end{itemize}
+
+\begin{exdispExample}{box_align_1}
+\tcbset{colframe=red!50!white,width=4cm,nobeforeafter}
+Some text\dotfill
+\begin{tcolorbox}[box align=bottom]
+One line.
+\end{tcolorbox}
+\begin{tcolorbox}[box align=bottom]
+First line.\\Second line.
+\end{tcolorbox}
+\end{exdispExample}
+
+\begin{exdispExample}{box_align_2}
+\tcbset{colframe=red!50!white,width=4cm,nobeforeafter}
+Some text\dotfill
+\begin{tcolorbox}[box align=top]
+One line.
+\end{tcolorbox}
+\begin{tcolorbox}[box align=top]
+First line.\\Second line.
+\end{tcolorbox}
+\end{exdispExample}
+
+\begin{exdispExample}{box_align_3}
+\tcbset{colframe=red!50!white,width=4cm,nobeforeafter}
+Some text\dotfill
+\begin{tcolorbox}[box align=center]
+One line.
+\end{tcolorbox}
+\begin{tcolorbox}[box align=center]
+First line.\\Second line.
+\end{tcolorbox}
+\end{exdispExample}
+
+\begin{exdispExample}{box_align_4}
+\tcbset{colframe=red!50!white,nobeforeafter}
+Some text\dotfill
+\tcbox[nobeforeafter,box align=base]{One line}
+\tcbox[nobeforeafter,box align=base,size=fbox]{Another line}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+
+
\begin{docTcbKey}[][doc new=2014-12-11]{ignore nobreak}{\colOpt{=true\textbar false}}{default |true|, initially |false|}
After a heading, \LaTeX\ tries to avoid a break by setting a |nobreak| boolean value.
Starting from version |3.33|, the \refKey{/tcb/before} respectively \refKey{/tcb/before skip}
@@ -3048,7 +3153,6 @@ enforce the \refKey{/tcb/before} setting.
the box follows a heading.
\end{docTcbKey}
-\enlargethispage*{1cm}
\begin{docTcbKey}[][doc new=2017-02-23]{parfillskip restore}{\colOpt{=true\textbar false}}{default |true|, initially |true|}
If this option is set to be |true|, the minimum value of |\parfillskip| is
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.documentation.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.documentation.tex
index 9c2cfe8f6d..3f301b0033 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.documentation.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.documentation.tex
@@ -1279,6 +1279,8 @@ instead. Also see \refKey{/tcb/docexample}.
\end{deprecated}
\end{docTcbKey}
+\enlargethispage*{1cm}
+
\begin{docTcbKey}{after example}{=\meta{macros}}{no default, initially empty}
\smallskip\begin{deprecated}
Sets the \meta{macros} which are executed after \refEnv{dispExample} and \refEnv{dispListing}
@@ -1363,6 +1365,7 @@ instead. Also see \refKey{/tcb/docexample}.
\refKey{/tcb/index level}.
\end{docTcbKey}
+\enlargethispage*{1cm}
\begin{docTcbKey}{index german settings}{}{style, no value}
Sets the |makeindex| values recommended for German language texts.
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.filling.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.filling.tex
index c91bc1bb19..7b207b6255 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.filling.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.filling.tex
@@ -45,6 +45,7 @@ See \Vref{sec:skins} for the documentation of all other options of the \mylib{sk
\end{dispExample*}
\end{docTikzKey}
+\enlargethispage*{1cm}
\begin{docTikzKey}{fill plain picture}{=\meta{graphical code}}{no default, initially unset}
Fills the current path with the given \meta{graphical code}.
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.s_main.sty b/macros/latex/contrib/tcolorbox/tcolorbox.doc.s_main.sty
index 32e77fc9f0..e9379a6fdd 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.s_main.sty
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.s_main.sty
@@ -138,7 +138,7 @@
\newtcolorbox{marker}[1][]{enhanced,
- before skip=2mm,after skip=3mm,
+ before skip balanced=2mm,after skip balanced=3mm,
boxrule=0.4pt,left=5mm,right=2mm,top=1mm,bottom=1mm,
colback=yellow!50,
colframe=yellow!20!black,
@@ -244,8 +244,8 @@
docexample/.style={docexample original},%
},
beforeafter example/.style={
- before skip=4pt plus 2pt minus 1pt,
- after skip=8pt plus 4pt minus 2pt
+ before skip balanced=4pt plus 2pt minus 1pt,
+ after skip balanced=5pt plus 2pt minus 1pt
},
base example/.style={bicolor,
beforeafter example,arc is angular,fonttitle=\bfseries,
@@ -272,7 +272,9 @@
base example,coltitle=black,fonttitle=\itshape,titlerule=0pt,
colbacktitle=Navy!15!ExampleBack,
top=0mm,
- before=\par\smallskip,%
+ %before=\par\smallskip,%
+ before skip balanced=4pt plus 2pt minus 1pt,
+ after skip balanced=5pt plus 2pt minus 1pt,
listing style=mydocumentation,
listing only,listing file={\jobname_preamble_#1.tex}}%
}
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.skins.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.skins.tex
index 646d4229ae..32b395673d 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.skins.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.skins.tex
@@ -472,6 +472,8 @@ the bottom left corner of the main box.
\end{exdispExample*}
\end{docTcbKey}
+\enlargethispage*{1cm}
+
\begin{docTcbKey}{attach boxed title to bottom center}{\colOpt{=\marg{boxtitle options}}}{style, default empty}
The title is boxed with a \refCom{tcbox} and attached to
the bottom of the main box.
@@ -1168,7 +1170,8 @@ This example uses a public domain picture from\\
\end{dispExample}
\end{docTcbKey}
-\enlargethispage{5mm}
+\enlargethispage*{1cm}
+
\begin{docTcbKey}{watermark zoom}{=\meta{fraction}}{no default, initially |0.75|}
Sets the zoom value for a watermark. The zoom respects the aspect ratio.
The value $1.0$ means to fill the whole box until the watermark touches the frame.
@@ -3688,7 +3691,7 @@ Nevertheless, this skin can be applied independently.
as seen in the third line.}}
git commit
git commit -a
-git commit -am `changes to my example'
+git commit -am 'changes to my example'
\end{tcblisting}
\end{dispExample}
@@ -3847,9 +3850,10 @@ Nevertheless, this skin can be applied independently.
\end{tcolorbox}
\end{docSkin}
-\begin{docTcbKey}[][doc new=2016-02-25]{tile}{}{style, no value}
- This is an abbreviation for setting |skin=tile|.
- \begin{marker}It also changes the geometry and some style options.\end{marker}
+\begin{docTcbKey}[][doc new=2016-02-25]{tile}{}{style, initially\\
+ |skin=tile,boxrule=0pt,sharp corners,title filled,fonttitle=\textbackslash bfseries|
+}
+ This key applies |skin=tile| and in addition changes the geometry and some style options.
\end{docTcbKey}
@@ -4016,11 +4020,7 @@ Nevertheless, this skin can be applied independently.
\begin{docSkin}{beamer}
This skin resembles boxes known from the |beamer| class and therefore is
called \enquote{beamer}. It uses the normal colors from the core package but shades
- them a little bit. To use this skin, the |tikz| library |shadings|
- has to be included in the preamble by:
-\begin{dispListing}
-\usetikzlibrary{shadings}
-\end{dispListing}
+ them a little bit.
\begin{tcolorbox}[skintable=beamer]
\begin{tabbing}
\refKey{/tcb/interior titled engine}: \=\kill
@@ -4036,9 +4036,11 @@ Nevertheless, this skin can be applied independently.
-\begin{docTcbKey}{beamer}{}{style, no value}
- This is an abbreviation for setting |skin=beamer|.
- \begin{marker}It also changes the geometry and some style options.\end{marker}
+\begin{docTcbKey}{beamer}{}{style, initially\\
+ |skin=beamer,boxrule=0mm,titlerule=1mm,toptitle=0.5mm,|\\
+ |arc=2mm,fonttitle=\textbackslash bfseries,drop fuzzy shadow|
+}
+ This key applies |skin=beamer| and in addition changes the geometry and some style options.
\end{docTcbKey}
@@ -4230,14 +4232,10 @@ Nevertheless, this skin can be applied independently.
\subsection{Skin Family \enquote{widget}}
\begin{docSkin}{widget}
This skin uses the normal colors from the core package but shades
- them a little bit. To use this skin, the |tikz| library |shadings|
- has to be included in the preamble by:
-\begin{dispListing}
-\usetikzlibrary{shadings}
-\end{dispListing}
-The appearance of the skin can be controlled by \refKey{/tcb/frame style},
-\refKey{/tcb/interior style}, and \refKey{/tcb/segmentation style},
-if needed.
+ them a little bit.
+ The appearance of the skin can be controlled by \refKey{/tcb/frame style},
+ \refKey{/tcb/interior style}, and \refKey{/tcb/segmentation style},
+ if needed.
\begin{tcolorbox}[skintable=widget]
\begin{tabbing}
\refKey{/tcb/interior titled engine}: \=\kill
@@ -4252,12 +4250,14 @@ if needed.
\end{docSkin}
-\begin{docTcbKey}{widget}{}{style, no value}
- This is an abbreviation for setting |skin=widget|.
- \begin{marker}It also changes the geometry and some style options.\end{marker}
+\begin{docTcbKey}[][doc updated={2020-09-23}]{widget}{}{style, initially\\
+ |skin=widget,arc=0.5mm,fonttitle=\bfseries,titlerule=0mm|
+}
+ This key applies |skin=widget| and in addition changes the geometry and some style options.
\end{docTcbKey}
+
\begin{dispExample}
\begin{tcbraster}[widget,raster equal height,raster columns=4,
colback=LightGreen,colframe=DarkGreen,
@@ -4289,7 +4289,7 @@ This is my content.
\end{tcolorbox}
\end{dispExample}
-
+\clearpage
\begin{docSkin}{widgetfirst}
This is a flavor of \refSkin{widget} which is used as a \emph{first} part
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.technical.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.technical.tex
index 2d637f4678..21e8153de4 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.technical.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.technical.tex
@@ -30,7 +30,7 @@ option from the core package has to be set.
\begin{tcolorbox}[adjusted title=My title]
This is my content.
\end{tcolorbox}
-\begin{tcolorbox}[skin=beamer,beamer,adjusted title=My title]
+\begin{tcolorbox}[beamer,adjusted title=My title]
This is my content.
\end{tcolorbox}
\end{dispExample}
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.theorems.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.theorems.tex
index 672ff20421..2d316a3379 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.theorems.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.theorems.tex
@@ -593,7 +593,7 @@ created by hand or using \refCom{tcbmaketheorem} or using its successor
of the lower part.
\end{docTcbKey}
-\enlargethispage*{1cm}
+\enlargethispage*{2cm}
\begin{docTcbKey}[][doc updated=2014-10-30]{ams equation*}{}{style, no value}
Adds an |amsmath| |equation*| environment to the start and end
of the upper \emph{and} lower part.
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.xparse.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.xparse.tex
index bad6fd6a60..752b5b35ad 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.xparse.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.xparse.tex
@@ -124,7 +124,7 @@ This is a tcolorbox.
}
}
Wraps the |\IfBoolean(TF)| command(s) of |xparse| for option setting.
- If the \meta{argument} is |\BooleanTue|, the \meta{true options} are set.
+ If the \meta{argument} is |\BooleanTrue|, the \meta{true options} are set.
If the \meta{argument} is |\BooleanFalse|, the \meta{false options} are set.
\begin{dispExample}
@@ -163,7 +163,7 @@ This is a tcolorbox.
\DeclareTColorBox[use counter from=pabox]{mybox}{ O{red} m d"" !O{} }
{enhanced,colframe=#1!75!black,colback=#1!5!white,
fonttitle=\bfseries,title={\thetcbcounter~#2},
- IfValueTF={#3}{watermark text={#3}}{},#4}
+ IfValueT={#3}{watermark text={#3}},#4}
\begin{mybox}{My title}
This is a tcolorbox.
@@ -271,8 +271,8 @@ This is a tcolorbox.
\DeclareTCBox[use counter from=pabox]{\mybox}{ s m s }
{ nobeforeafter,colback=red!5!white,colframe=red!75!black,
title={#2 (Box \thetcbcounter)},fonttitle=\bfseries,
- IfBooleanTF={#1}{enhanced,drop shadow}{},
- IfBooleanTF={#3}{colbacktitle=red!50!white}{} }
+ IfBooleanT={#1}{enhanced,drop shadow},
+ IfBooleanT={#3}{colbacktitle=red!50!white} }
\mybox{Bird}{This is my first box.}
\hfill
@@ -339,7 +339,7 @@ typeset the verbatim content.
% \usepackage{listings} or \tcbuselibrary{listings}
\DeclareTotalTCBox{\commandbox}{ s v }
{verbatim,colupper=white,colback=black!75!white,colframe=black}
-{\IfBooleanTF{#1}{\textcolor{red}{\ttfamily\bfseries > }}{}%
+{\IfBooleanT{#1}{\textcolor{red}{\ttfamily\bfseries > }}%
\lstinline[language=command.com,keywordstyle=\color{blue!35!white}\bfseries]^#2^}
\commandbox*{cd "My Documents"} changes to directory \commandbox{My Documents}.
@@ -459,7 +459,7 @@ With date of 2018-05-12, the |xparse| \cite{latexproject:xparse} package
changed the argument collection process.
Now, spaces are ignored which leads to a serious change for listing environments
ending with an optional argument like \verb+O{}+.
-The former behaviour of respecting spaces can be preserved by adding a \flqq\verb+!+\frqq.
+The former behavior of respecting spaces can be preserved by adding a \flqq\verb+!+\frqq.
Note that the following code uses \verb+!O{}+ now.
\begin{itemize}
\item For older |xparse| versions, the following code is correct when using \verb+O{}+.
@@ -570,7 +570,7 @@ The following commands need the \mylib{fitting} library to be included.
{colback=red!5!white,
colframe=red!75!black,
width=#2,height=#2/3*2,
- IfValueTF={#3}{height=#3}{},
+ IfValueT={#3}{height=#3},
#1}
\mybox[colback=yellow]{5cm}%
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.pdf b/macros/latex/contrib/tcolorbox/tcolorbox.pdf
index ef1068931f..015a9bd926 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.pdf
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.pdf
Binary files differ
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.sty b/macros/latex/contrib/tcolorbox/tcolorbox.sty
index a934739908..4ca0de43f6 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.sty
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.sty
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.32 (2020/09/17)
+%% The LaTeX package tcolorbox - version 4.40 (2020/09/25)
%% tcolorbox.sty: Text color boxes
%%
%% -------------------------------------------------------------------------------------------
@@ -18,8 +18,8 @@
%% This work consists of all files listed in README
%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{tcolorbox}[2020/09/17 version 4.32 text color boxes]
-\def\tcb@version{4.32}
+\ProvidesPackage{tcolorbox}[2020/09/25 version 4.40 text color boxes]
+\def\tcb@version{4.40}
\RequirePackage{pgf}[2008/01/15]
\RequirePackage{verbatim}[2003/08/22]
@@ -286,6 +286,46 @@
parfillskip restore/false/.code={\let\tcb@parfillskip@check=\@empty},%
before/.code={\def\kvtcb@beforebox{#1}\let\tcb@undo@before=\@empty\let\tcb@use@autoparskip=\relax},
after/.code={\def\kvtcb@afterbox{#1}\let\tcb@use@autoparskip=\relax},
+ before skip balanced/.style={before={%
+ \ifnum\lastnodetype=-1\relax%
+ \else%
+ \par%
+ \ifvmode%
+ \iftcb@minipage%
+ \ifdim\parskip>\z@\relax%
+ \addvspace{-\parskip}%
+ \fi%
+ \else%
+ \ifdim\prevdepth<\z@\relax%
+ \tcbdimto\tcb@prevdepth{\prevdepth}%
+ \addvspace{\glueexpr#1-\parskip}%
+ \def\tcb@undo@before{\addvspace{-\glueexpr#1+\tcb@prevdepth}}%
+ \else%
+ \ifdim\prevdepth>.3\baselineskip\relax%
+ \tcbdimto\tcb@prevdepth{\prevdepth}%
+ \addvspace{\glueexpr#1-\parskip}%
+ \else%
+ \tcbdimto\tcb@prevdepth{.3\baselineskip}%
+ \addvspace{\glueexpr#1+.3\baselineskip-\prevdepth-\parskip}%
+ \fi%
+ \def\tcb@undo@before{\addvspace{-\glueexpr#1+\tcb@prevdepth}}%
+ \fi%
+ \fi%
+ \nointerlineskip%
+ \fi%
+ \fi%
+ \lineskip\z@skip%
+ \noindent%
+ }},
+ after skip balanced/.style={after={%
+ \tcb@parfillskip@check%
+ \par%
+ \ifvmode%
+ \prevdepth=.3\baselineskip%
+ \addvspace{\glueexpr#1-\parskip}%
+ \fi%
+ }},
+ beforeafter skip balanced/.style={before skip balanced={#1},after skip balanced={#1}},
autoparskip/.code={\let\tcb@use@autoparskip=\tcb@use@auto@parskip},
parskip/.style={before={\ifnum\lastnodetype=-1\relax\else\par%
\ifvmode\edef\tcb@prevdepth{\the\glueexpr\prevdepth+\lineskip+\parskip}%
@@ -303,16 +343,29 @@
\ifnum\lastnodetype=-1\relax%
\else%
\par%
- \ifvmode\tcbdimto\tcb@prevdepth{\prevdepth}\nointerlineskip%
- \addvspace{\glueexpr#1-\parskip}%
- \def\tcb@undo@before{\addvspace{-\glueexpr#1+\tcb@prevdepth}}%
+ \ifvmode%
+ \iftcb@minipage%
+ \ifdim\parskip>\z@\relax%
+ \addvspace{-\parskip}%
+ \fi%
+ \else%
+ \tcbdimto\tcb@prevdepth{\prevdepth}%
+ \addvspace{\glueexpr#1-\parskip}%
+ \def\tcb@undo@before{\addvspace{-\glueexpr#1+\tcb@prevdepth}}%
+ \fi%
+ \nointerlineskip%
\fi%
\fi%
- \lineskip\z@skip\noindent%
+ \lineskip\z@skip%
+ \noindent%
}},
after skip/.style={after={%
- \tcb@parfillskip@check\par\ifvmode\nointerlineskip%
- \addvspace{\glueexpr#1-\parskip}\fi%
+ \tcb@parfillskip@check%
+ \par%
+ \ifvmode%
+ \nointerlineskip%
+ \addvspace{\glueexpr#1-\parskip}%
+ \fi%
}},
beforeafter skip/.style={before skip={#1},after skip={#1}},
before nobreak/.store in=\kvtcb@beforebox@nobreak,
@@ -1098,11 +1151,8 @@
\let\tcbtextheight\tcb@zpt%
\let\tcbtextwidth\tcb@zpt%
\tcbset{#1}\tcb@lateoptions@hook\tcb@afteroptions@hook%
- \if@nobreak%
- \let\iftcb@nobreak\@firstoftwo%
- \else%
- \let\iftcb@nobreak\@secondoftwo%
- \fi%
+ \let\iftcb@minipage\if@minipage%
+ \let\iftcb@nobreak\if@nobreak%
}
\long\def\tcb@@icolorbox[#1]{%
@@ -1684,11 +1734,11 @@
\def\tcb@set@normal@unbroken@beforeafter{%
\let\tcb@before@unbroken=\kvtcb@beforebox%
- \iftcb@nobreak{%
+ \iftcb@nobreak%
\iftcb@ignorenobreak\else%
\let\tcb@before@unbroken=\kvtcb@beforebox@nobreak%
\fi%
- }{}%
+ \fi%
\let\tcb@after@unbroken=\kvtcb@afterbox%
}
@@ -1752,7 +1802,10 @@
\long\def\tcbox@inner@hbox#1{%
\tcbset{breakable@false,sidebyside=false}%
\tcb@set@@phantom%
- \sbox\tcb@upperbox{\tcb@embed@tcbox{\color{tcbcolupper}\kvtcb@fontupper\kvtcb@halignupper\tcb@insert@before@upper#1\tcb@insert@after@upper}}%
+ \sbox\tcb@upperbox{\tcb@embed@tcbox{%
+ \csname tcb@parbox@use@\kvtcb@parbox\endcsname%
+ \@parboxrestore%
+ \color{tcbcolupper}\kvtcb@fontupper\kvtcb@halignupper\tcb@insert@before@upper#1\tcb@insert@after@upper}}%
\tcbdimto\tcb@val@raisebase{\the\dimexpr\dp\tcb@upperbox+\kvtcb@bottom+\kvtcb@boxsep+\kvtcb@bottom@rule@stand+\kvtcb@bbbottom@stand\relax}%
\tcbdimto\kvtcb@width{\wd\tcb@upperbox+\kvtcb@left@rule+\kvtcb@leftupper+\kvtcb@boxsep*2+\kvtcb@rightupper+\kvtcb@right@rule}%
\tcb@hasLowerfalse%
@@ -2154,7 +2207,7 @@
\let\tcb@lowerdraw@begin@hook\@empty%
\let\tcb@lowerdraw@end@hook\@empty%
},
- width=\linewidth,autoparskip,arc is curved,
+ width=\linewidth,beforeafter skip balanced=0.5\baselineskip plus 2pt,arc is curved,
natural height,height plus=0pt,space to lower,valign=top,valign lower=top,
size=normal,rounded corners,parfillskip restore,
enlarge top by=0mm,enlarge bottom by=0mm,enlarge left by=0mm,enlarge right by=0mm,
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.tex b/macros/latex/contrib/tcolorbox/tcolorbox.tex
index 2b2a2d9102..0aebc2ca47 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.tex
@@ -1,5 +1,5 @@
% \LaTeX-Main\
-%% The LaTeX package tcolorbox - version 4.32 (2020/09/17)
+%% The LaTeX package tcolorbox - version 4.40 (2020/09/25)
%% tcolorbox.tex: Manual
%%
%% -------------------------------------------------------------------------------------------
@@ -43,8 +43,8 @@
\setlength{\bibitemsep}{\smallskipamount}
\addbibresource{tcolorbox.doc.bib}
-\def\version{4.32}%
-\def\datum{2020/09/17}%
+\def\version{4.40}%
+\def\datum{2020/09/25}%
\makeindex
\hypersetup{
@@ -62,7 +62,7 @@
%\geometry{showframe}
%\tcbset{draftmode}
\tcbset{/tcb/external/-}% for final run
-%\includeonly{tcolorbox.doc.breakable}
+%\includeonly{tcolorbox.doc.intro,tcolorbox.doc.quickref,tcolorbox.doc.coremacros}
%\hypersetup{colorlinks=false}
diff --git a/macros/latex/contrib/thucoursework/thucoursework.dtx b/macros/latex/contrib/thucoursework/thucoursework.dtx
index 7aa62a8bf5..2ba0a5433e 100644
--- a/macros/latex/contrib/thucoursework/thucoursework.dtx
+++ b/macros/latex/contrib/thucoursework/thucoursework.dtx
@@ -56,7 +56,7 @@ through LaTeX.
\endgroup
%</internal>
%<*driver>
-\ProvidesFile{thucoursework.dtx}[2020/02/23 2.5.1 Tsinghua University Coursework Template]
+\ProvidesFile{thucoursework.dtx}[2020/09/09 2.6 Tsinghua University Coursework Template]
\documentclass{ltxdoc}
\usepackage{dtx-style}
@@ -247,8 +247,8 @@ through LaTeX.
% 按照优先级推荐提问的位置如下:
%
% \begin{itemize}
-% \item \href{http://github.com/zhaofeng-shu33/thucoursework/issues}{Github Issues}
-% \item \href{http://bbs.ctex.org/nForum/#!board/TeX}{ctex 论坛}
+% \item \href{https://github.com/zhaofeng-shu33/thucoursework/issues}{Github Issues}
+% \item \href{https://github.com/CTeX-org/forum/issues}{ctex 论坛}
% \end{itemize}
%
% \subsection{示例文件}
@@ -396,17 +396,18 @@ through LaTeX.
% \section{实现细节}
%
% \subsection{基本信息}
-% \begin{macrocode}
% \changes{v2.0}{2018/03/22}{[\zhaofeng] Make it a latex package(.sty)}
+% \begin{macrocode}
%<*sty>
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesClass{iidef}
-[2020/02/23 2.5.1 Tsinghua University Coursework Template]
+[2020/09/09 2.6 Tsinghua University Coursework Template]
% \end{macrocode}
% \subsection{装载宏包}
% \label{sec:loadpackage}
%
% 引用的宏包和相应的定义。
+% \changes{v2.6}{2020/09/09}{[\zhaofeng] support \texttt{exam} document class}
% \begin{macrocode}
%% configuration of nested enumerate env
\RequirePackage{enumitem}
@@ -415,7 +416,8 @@ through LaTeX.
%% required by macro DeclareMathOperator
\RequirePackage{amsmath}
%% Set up page headers using with fancyhdr
-\RequirePackage{fancyhdr}
+\@ifundefined{lhead}{\RequirePackage{fancyhdr}}
+{\def\@thulhead{thulhead}}
%define the solution env with amsthm proof
\RequirePackage{amsthm}
% \end{macrocode}
@@ -465,6 +467,7 @@ through LaTeX.
\underline{\bf \@hwname\;\thehwcnt} \\
\end{center}
}
+\@ifundefined{@thulhead}{
\fancypagestyle{runningpage}
{
\fancyhead[L]{\small\@coursename}
@@ -472,6 +475,7 @@ through LaTeX.
}
%% use runningpage style from second page on
\pagestyle{runningpage}
+}{}
%% *********************************************************************************************
% \end{macrocode}
%
@@ -509,6 +513,7 @@ through LaTeX.
\def\@slname{Solution}
\def\slname#1{\renewcommand\@slname{#1}}
+\@ifundefined{solution}{
\newenvironment{solution}
{
\proof[\@slname]
@@ -518,6 +523,7 @@ through LaTeX.
\renewcommand{\qedsymbol}{}
\endproof
}
+}{}
%%******************************
% \end{macrocode}
% \subsection{常用数学符号}
diff --git a/macros/latex/contrib/thucoursework/thucoursework.pdf b/macros/latex/contrib/thucoursework/thucoursework.pdf
index ea6c3ddde0..5eacb1b5fe 100644
--- a/macros/latex/contrib/thucoursework/thucoursework.pdf
+++ b/macros/latex/contrib/thucoursework/thucoursework.pdf
Binary files differ
diff --git a/macros/latex/contrib/unicode-math/CHANGES.md b/macros/latex/contrib/unicode-math/CHANGES.md
deleted file mode 100644
index facafe8080..0000000000
--- a/macros/latex/contrib/unicode-math/CHANGES.md
+++ /dev/null
@@ -1,363 +0,0 @@
-CHANGE HISTORY
-==============
-
-## v0.8q (2020/01/31)
-
- * Update to adapt to / support new features in the upcoming 2e kernel.
- * Give a better error message if used on non-supported engines that are not pdfTeX.
-
-
-## v0.8p (2019/09/26)
-
- * Remove dependency on `filehook` package. Just to simplify.
- * Remove patch code for the `colonequals` package; now if you use that package
- you will simply receive its standard ‘constructed’ symbols.
- * Load `amsmath` automatically. This is not intended to save time for the user,
- but to simplify the code logic. Users should continue to load `amsmath` explicitly IMO.
-
-
-## v0.8o (2019/03/04)
-
- * Avoid `'Dimension too large' error` for some (unpredictable) combinations of font
- choice and the `Scale` option. Problems are still known to occur for very large or
- very small values of `Scale`.
- * Documentation is now run through ‘continuous integration’ (viz, *Travis* for the time being)
- as well as the test suite.
-
-
-## v0.8n (2019/01/26)
-
- * Add note to readme that the `lm-math` package is required for minimal functionality.
- * Spacing fixed for maths fonts loaded with the `Scale` fontspec feature (#287).
- * Commands like `\crampedtextstyle` now longer lead to an infinite loop under XeTeX (#505).
- * Improvements to the functionality of the test suite. (Although more tests would be nice.)
- * Test suite is now (successfully) run with `expl3` debug mode enabled.
-
-
-## v0.8m (2018/07/29)
-
- * Restore behaviour of legacy syntax `x_\mathrm{x}` (i.e., with no braces).
- While strictly ‘incorrectly’, this usage is widely used.
- N.B. this syntax is not supported for the `\symXX` commands.
- * Add `\cuberoot` and `\fourthroot` as proper radicals.
- * Some additional input subscripts/superscripts.
- * Some documentation additions (thanks for the contributions).
- * Deprecation warning: the *internal* `\__um_switchto_XX:` commands will be dropped in
- a future release in favour of `\__um_switch_to:n {XX}` (or similar). These are internal
- commands and shouldn't be used by third-parties; please write if you have a use case.
-
-
-## v0.8l (2018/02/02)
-
- * Issue an error message if `\setmathfont{...}[range=...]` is used first; a `range`
- declaration inherently implies a subset, so a ‘main’ math font needs to be set up first.
- * Fix issue when nesting `\mathXX` and `\symZZ` commands. (#356, #435, #438)
- * Fix another issue when using `mathXX` or `\symXX` inside `\DeclareMathOperator`. (#449)
- * Document incompatibility with the `mathspec` package. (#436)
- * Fix bugs for using `range=\partial` and `range=\nabla`. (#441)
-
-
-## v0.8k (2018/01/13)
-
- * Eliminate warnings `Variant form 'NV' invalid for base form`... (#430).
- * Fix issue when loading the `cal` range (#431).
- * Fix issue with `\sqrt[n]{x}` with `amsmath` (#432).
- * Error when loading on (really) old versions of XeTeX/LuaTeX removed.
- * More UM fonts listed in the README (#425).
-
-
-## v0.8j (2018/01/07)
-
- - NEW
-
- * Numbers and latin letters in the fullwidth Unicode range are now supported
- as aliases to their ASCII counterparts (#337).
- * New commands `\(New|Renew)NegationCommand \foo` for defining custom negations
- accessed via `\not\foo`.
-
- - SYMBOLS
-
- * `\typecolon` is now `\mathrel` instead of `\mathbin` (#360).
- * New symbol `\mathhyphen` which acts like a ‘letter’ (#313).
- * `\nabla` and `\partial` have corrected documentation (#257).
- * The following legacy commands are listed as ‘unsupported’ and will result
- in sensible error messages rather than the old behaviour of meaningless
- output: `\arrowvert`, `\Arrowvert`, `\bracevert`. (#411).
-
- - BUGS
-
- * LuaTeX bug with shifted `\underbrace` when it contains accented symbols worked around (#391).
- * When using the `range` feature, users commonly found they needed to call
- `\setmathfont` a final time with the original font to ensure correct
- formatting and correct selection of symbol alphabets. I hope the issues
- that required this have now been corrected (#331, #387).
- * If `\setmathfont` is called a second time in a document, it tries harder
- to more properly reset the maths font setup for the new font (#224).
- * Properly hard-coded the `\delcode` of the period to ensure `\left`/`\right`
- behave correctly in all circumstances (#344, #351, #420).
- * Correct `\mathrm` (etc.) situation when no fonts loaded explicitly by the user (#330).
- * Various bug fixes to `\not` (#126, #343, #363)
- * `\std@minus` & `\std@equal` now properly corrected (#332).
- * Fix problem with infinite loop with `\cdots` when `amsmath` loaded after `unicode-math` (#227).
- * If `\setmath(rm|sf|tt)` is called *before* loading `unicode-math`, the setting
- is now remembered (#407).
-
- - INTERNALS
-
- * A number of improvements to efficiency when loading subsequent math fonts
- using the `range` feature.
- * No longer loads the `ucharcat` package.
- * Test suite re-implemented for better portability and use with Travis CI.
- See <https://travis-ci.org/wspr/unicode-math> for the up-to-date status
- of whether the test suite is passing.
-
-
-
-## v0.8i (2017/11/18)
-
- * Many internal changes to support future work.
- * Improved documentation describing the `\mathXX` and `\symXX` commands.
- * Documentation is now split into `unicode-math.pdf` (for the user)
- and `unicode-math-code.pdf` (for the typeset source code).
-
-
-## v0.8h (2017/10/09)
-
- * Some bugs crept in in the last update due to some code rearrangement:
- * package version wasn't set;
- * some code was being executed at the wrong time;
- * `\sqrt[]{}` in LuaLaTeX gave incorrect output.
- * The layout of the code is now structured far more sensibly.
- * Remove (long deprecated) `\resetmathfont`; for years it has been a synonym for `\setmathfont`.
-
-
-## v0.8g (2017/10/02)
-
- * Better use of scriptstyle sizes in LuaTeX (I think a regression).
- * Fix regression (`\mathbf` etc. not being set automatically) caused by the renaming of a `fontspec` internal command.
- * Minor documentation improvements.
- * (Only relevant for me: I've also disabled the test suite almost entirely to begin a re-write for ‘continuous integration’.)
-
-
-## v0.8f (2017/08/02)
-
- * Emergency fix (thanks Bruno) for another bug revealed by `expl3` update.
-
-
-## v0.8e (2017/07/30)
-
- * Add `\surd` to access the sqrt symbol.
- * Fix bug exposed by `expl3` update to booleans.
- * Add Deja Vu Math TeX Gyre in list of symbols.
- * Add `\sime` alias for `\simeq` and `\nsimeq` for `\nsime`.
- (For negations it's helpful when they have consistent naming.)
-
-
-## v0.8d (2017/01/25)
-
- * `vargreek-shape=TeX` and `vargreek-shape=unicode` package options dropped; for consistency and compatibility, `\phi` and `\epsilon` should and will now behave the same as in `TeX`.
- * On that note, when using control sequences such as `\mbfitsansvarphi` (and so on), there were a few faulty definitions. The new behaviour is to consistenyl define the `varphi` and `varepsilon` ones as those with the "curly" designs.
- * Add `\wideoverbar`, `\widebreve`, `\widecheck`.
- * Add `\mathsection`, `\mathparagraph`.
- * Remove `\mupvarbeta`, `upold(Kk)oppa`, `\up(Ss)tigma`, `\up(Kk)oppa`, `\up(Ss)ampi` — none of these are maths symbols.
- * `!` (`\mathexclam`) changed from `\mathpunct` to `\mathclose` for backwards compatibility with TeX.
-
-
-## v0.8c (2015/09/24)
-
- * Add `\over(left/right)harpoon` as "wide" accents.
- * Add RTL mathematics operators `\arabicmaj` and `\arabichad`, which correspond to `U+1EEF0` and `U+1EEF1`, resp.
- * Remove `catchfile` package dependency.
- * Update some internal names to match expl3 standards.
-
-
-## v0.8b (2015/09/09)
-
- * Bug fix: Use the "ucharcat" package to simplify some code that caused some headaches with \tl_rescan:nn.
-
-
-## v0.8a (2015/08/06)
-
- * Fix bug with \vert, \|, \(l/r)vert, etc., displaying with the wrong characters.
-
- * Improve documentation to properly reflect changes in v0.8 and fix some broken examples.
-
- * No longer reset catcodes of : and @ during \setmathfont .
-
- * Fix remapping of alphabets (needed for Minion Math) in cases such as:
-
- \setmathfont[range=bfit->it]{MinionMath-Bold.otf}
-
-
-## v0.8 (2015/07/29) **Breaking changes in this update!**
-
- * `\mathrm` (`\mathup`), `\mathit`, `\mathbf`, `\mathsf`, and `\mathtt` revert to their traditional LaTeX meanings; they are set up to match their equivalent text fonts unless specifically set using `\setmathrm` and friends from `fontspec` or the new `\setmathfontface` in `unicode-math`. These commands should be used for *multi*-letter identifiers.
-
- * New "symbol" commands have been added, `\symrm` (`\symup`), `symit`, ..., to replace the behaviour of the old commands. These should be used for *single*-letter identifiers. See the package documentation for more detail on these and related commands.
-
- * Package options `mathit=sym`, `mathbf=sym`, etc., reverse the changes above to revert to pre-v0.8 behaviour for `\mathXYZ`. Regardless of package option, `\symXYZ` always maps to symbols and `\mathtextXYZ` is provided for the traditional `\mathXYZ` font switch.
-
- * New command `\setoperatorfont` to set the font used for commands such as `\sin` and `\cos`. Usage: `\setoperatorfont\mathbf` or any command defined with `\setmathfontface`.
-
- * Traditional LaTeX `\DeclareMathAlphabet` now works again for legacy font-loading packages.
-
- * Commands defined to "force" Greek letters with `\upbeta` and `\itbeta`, etc.
-
- * Assorted bug fixes and minor changes.
-
-
-## v0.7e (2014/06/30)
-
- * No longer assume fixltx2e has been loaded.
- * Some ascii math symbols have been renamed with a \math... prefix, such as \mathquestion.
- * Assume latest luaotfload is being used; no need for a separate unicode-math.lua script.
- * Assorted typos and minor bugs.
-
-
-## v0.7e (2013/05/04)
-
- * Track luaotfload updates.
-
-
-## v0.7d (2013/03/16)
-
- * More expl3 changes missed first time around. (Sorry again.)
-
-
-## v0.7c (2013/02/25)
-
- * The Latin Modern math font name changed TWICE. Only caught the first one.
- Sorry for any inconvenience caused.
-
-
-## v0.7b (2013/02/22)
-
- * Keep in sync with Latin Modern Math font name change.
- * Keep in sync with expl3 changes.
-
-
-## v0.7a (2012/07/28)
-
- * Keep in sync with expl3 changes.
-
-
-## v0.7 (2012/05/30): The TeX Live 2012 release.
-
- * Most changes (and all significant ones) in this release thanks to Khaled
- Hosny, who is now credited as an author of the package.
- * Many improvements for XeTeX support to take advantage of the new engine
- (v0.9998) in TL2012.
- * As a result, `\resetmathfont` is no longer required.
- * Improve `\not` to use pre-combined glyphs where possible.
- * LM Math is loaded by default.
- * Support bottom accents.
- * And add `\wideutilde`.
- * The ‘symbols’ document is somewhat better organised and contains
- information on whether a symbol is defined in plain TeX or amssymb.
- * Various other minor fixes and additions:
- * `\underleftrightarrow` added for fonts that support it.
- * Don’t overwrite mathtool’s `\overbracket` and `\underbracket`.
- * Bug in `[range=...]` parsing fixed.
- * Add `\longdivision`.
- * Add `\lgroup` and `\rgroup`.
- * Fix ‘moustache’ delimiters.
- * `\openbox` renamed to `\mathvisiblespace`, since it is already defined
- in amsthm as an empty box.
-
-
-## v0.6a (2011/09/19)
-
- * Always a bug that slips through the cracks! Fixes `\left.` and `\right.`
- * Add experimental package option `warnings-off=...` which allows warnings
- to be suppressed on an individual basis.
-
-
-## v0.6 (2011/09/18)
-
- * Keep in sync with fontspec internals
- (sorry for the small delay where things were broken)
- * Keep in sync with expl3 deprecated functions
- * Math versions (finally) implemented; can now change maths fonts
- mid-document without reinitialising everything
- (thanks to Ulrike Fischer and Ulrik Vieth)
- * Symbols file `unimath-symbols.pdf` now uses maths versions to compare
- all of the OpenType maths fonts I currently have access to
- * Over- and under- braces, brackets, and parentheses now work in XeTeX
- (thanks to Claudio Beccari)
- * Many internal changes, including a re-write of the `range` feature;
- it should now be faster and more robust
- * Tentative programmer's interface for querying the current math style:
- `\l_um_mathstyle_tl`.
- * Remove (outdated) interaction with beamer; you must specify
- `professionalfonts` manually for now
- * Quieten the console output when loading maths fonts with incomplete maths
- style coverage
- * Synonym added: `\lnot` -> `\neg`
- * Two added Unicode symbols (names tentative): `\blanksymbol` and `\openbox`
- (thanks to Apostolos Syropoulos)
- * Fixed literal sub-/super-script input.
-
-
-## v0.5e (2011/07/31)
-
- * Fix forward compatibility clash with deprecated expl3 functions (sorry)
- * Command names are now `\protected`; this makes them safe to use in moving
- arguments and so on
- * Similarly to the change in v0.5c, the main math font is now loaded in
- math family zero (equiv. to LaTeX's `operators` math font)
- * `\mathring` added
- * Ensure that a math font has been selected in order to prevent problems
- in minimal documents (this will be unnecessary when the OpenType LM math
- font is released)
- * Documentation for which was which of epsilon/varepsilon was backwards!
- (thank to Rasmus Villemoes for pointing this out)
- * Spurious `\upUpsilon` removed (the one at U+03A5 is now the correct one)
- * Typo when defining `\dprime` fixed
- (thanks to Ulrik Vieth for these last two)
- * Fix the math class of `\modtwosum`; it is now a large operator
- (thanks to Michael Ummels)
- * Move several LuaTeX-related patches to the `lualatex-math` package
- * Fixed mathtool's `\cramped` in XeLaTeX usage
-
-
-## v0.5d (2011/01/30)
-
- * Assorted improvements to LuaLaTeX support, including non-growing accents
- available in LuaTeX v0.65 and later
- * Improved behaviour with reading and using maths font dimensions
- * Better compatibility with legacy maths packages and environments
- (always more worked needed, though)
- * Fix the default setting for "vargreek-shape"
-
-
-## v0.5c (2010/09/27)
-
- * Fix a long-standing bug in XeLaTeX in which the "master" math
- families 2 and 3 weren't being set; hence fraction rules and many other
- parameters were not being set correctly
- * Stay in sync with internal fontspec changes
-
-
-## v0.5b (2010/09/19): Tune-up
-
- * Added missing symbols/synonyms:
- \diamond \smallint \emptyset \hbar \backepsilon \eth
- * \overline works for LuaLaTeX
- * Fix \slash; previously, it overwrote the text definition
- * \vartriangle now has the correct math class
-
-
-## v0.5a (2010/07/14): TeX Live 2010 release
-
- * Numerous documentation improvements
- * Bug fix against stray catcode changes
- * Add `\mathcal` and `\mathbfcal` as distinct from the Script style;
- these are only supported by the XITS fonts at present
- * Small changes to the range of symbols offered (especially note that `\ac`
- is now `\invlazys` to avoid acronym package clash)
- * Superscripts are allowed after primes (as they should be)
- * Numerous LuaLaTeX improvements, including roots and over/under braces.
-
-
-## v0.5 (2010/06/03): Initial CTAN release
-
diff --git a/macros/latex/contrib/unicode-math/LICENSE b/macros/latex/contrib/unicode-math/LICENSE
deleted file mode 100644
index 2244313901..0000000000
--- a/macros/latex/contrib/unicode-math/LICENSE
+++ /dev/null
@@ -1,416 +0,0 @@
-The LaTeX Project Public License
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-
-LPPL Version 1.3c 2008-05-04
-
-Copyright 1999 2002-2008 LaTeX3 Project
- Everyone is allowed to distribute verbatim copies of this
- license document, but modification of it is not allowed.
-
-
-PREAMBLE
-========
-
-The LaTeX Project Public License (LPPL) is the primary license under
-which the LaTeX kernel and the base LaTeX packages are distributed.
-
-You may use this license for any work of which you hold the copyright
-and which you wish to distribute. This license may be particularly
-suitable if your work is TeX-related (such as a LaTeX package), but
-it is written in such a way that you can use it even if your work is
-unrelated to TeX.
-
-The section `WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE',
-below, gives instructions, examples, and recommendations for authors
-who are considering distributing their works under this license.
-
-This license gives conditions under which a work may be distributed
-and modified, as well as conditions under which modified versions of
-that work may be distributed.
-
-We, the LaTeX3 Project, believe that the conditions below give you
-the freedom to make and distribute modified versions of your work
-that conform with whatever technical specifications you wish while
-maintaining the availability, integrity, and reliability of
-that work. If you do not see how to achieve your goal while
-meeting these conditions, then read the document `cfgguide.tex'
-and `modguide.tex' in the base LaTeX distribution for suggestions.
-
-
-DEFINITIONS
-===========
-
-In this license document the following terms are used:
-
- `Work'
- Any work being distributed under this License.
-
- `Derived Work'
- Any work that under any applicable law is derived from the Work.
-
- `Modification'
- Any procedure that produces a Derived Work under any applicable
- law -- for example, the production of a file containing an
- original file associated with the Work or a significant portion of
- such a file, either verbatim or with modifications and/or
- translated into another language.
-
- `Modify'
- To apply any procedure that produces a Derived Work under any
- applicable law.
-
- `Distribution'
- Making copies of the Work available from one person to another, in
- whole or in part. Distribution includes (but is not limited to)
- making any electronic components of the Work accessible by
- file transfer protocols such as FTP or HTTP or by shared file
- systems such as Sun's Network File System (NFS).
-
- `Compiled Work'
- A version of the Work that has been processed into a form where it
- is directly usable on a computer system. This processing may
- include using installation facilities provided by the Work,
- transformations of the Work, copying of components of the Work, or
- other activities. Note that modification of any installation
- facilities provided by the Work constitutes modification of the Work.
-
- `Current Maintainer'
- A person or persons nominated as such within the Work. If there is
- no such explicit nomination then it is the `Copyright Holder' under
- any applicable law.
-
- `Base Interpreter'
- A program or process that is normally needed for running or
- interpreting a part or the whole of the Work.
-
- A Base Interpreter may depend on external components but these
- are not considered part of the Base Interpreter provided that each
- external component clearly identifies itself whenever it is used
- interactively. Unless explicitly specified when applying the
- license to the Work, the only applicable Base Interpreter is a
- `LaTeX-Format' or in the case of files belonging to the
- `LaTeX-format' a program implementing the `TeX language'.
-
-
-
-CONDITIONS ON DISTRIBUTION AND MODIFICATION
-===========================================
-
-1. Activities other than distribution and/or modification of the Work
-are not covered by this license; they are outside its scope. In
-particular, the act of running the Work is not restricted and no
-requirements are made concerning any offers of support for the Work.
-
-2. You may distribute a complete, unmodified copy of the Work as you
-received it. Distribution of only part of the Work is considered
-modification of the Work, and no right to distribute such a Derived
-Work may be assumed under the terms of this clause.
-
-3. You may distribute a Compiled Work that has been generated from a
-complete, unmodified copy of the Work as distributed under Clause 2
-above, as long as that Compiled Work is distributed in such a way that
-the recipients may install the Compiled Work on their system exactly
-as it would have been installed if they generated a Compiled Work
-directly from the Work.
-
-4. If you are the Current Maintainer of the Work, you may, without
-restriction, modify the Work, thus creating a Derived Work. You may
-also distribute the Derived Work without restriction, including
-Compiled Works generated from the Derived Work. Derived Works
-distributed in this manner by the Current Maintainer are considered to
-be updated versions of the Work.
-
-5. If you are not the Current Maintainer of the Work, you may modify
-your copy of the Work, thus creating a Derived Work based on the Work,
-and compile this Derived Work, thus creating a Compiled Work based on
-the Derived Work.
-
-6. If you are not the Current Maintainer of the Work, you may
-distribute a Derived Work provided the following conditions are met
-for every component of the Work unless that component clearly states
-in the copyright notice that it is exempt from that condition. Only
-the Current Maintainer is allowed to add such statements of exemption
-to a component of the Work.
-
- a. If a component of this Derived Work can be a direct replacement
- for a component of the Work when that component is used with the
- Base Interpreter, then, wherever this component of the Work
- identifies itself to the user when used interactively with that
- Base Interpreter, the replacement component of this Derived Work
- clearly and unambiguously identifies itself as a modified version
- of this component to the user when used interactively with that
- Base Interpreter.
-
- b. Every component of the Derived Work contains prominent notices
- detailing the nature of the changes to that component, or a
- prominent reference to another file that is distributed as part
- of the Derived Work and that contains a complete and accurate log
- of the changes.
-
- c. No information in the Derived Work implies that any persons,
- including (but not limited to) the authors of the original version
- of the Work, provide any support, including (but not limited to)
- the reporting and handling of errors, to recipients of the
- Derived Work unless those persons have stated explicitly that
- they do provide such support for the Derived Work.
-
- d. You distribute at least one of the following with the Derived Work:
-
- 1. A complete, unmodified copy of the Work;
- if your distribution of a modified component is made by
- offering access to copy the modified component from a
- designated place, then offering equivalent access to copy
- the Work from the same or some similar place meets this
- condition, even though third parties are not compelled to
- copy the Work along with the modified component;
-
- 2. Information that is sufficient to obtain a complete,
- unmodified copy of the Work.
-
-7. If you are not the Current Maintainer of the Work, you may
-distribute a Compiled Work generated from a Derived Work, as long as
-the Derived Work is distributed to all recipients of the Compiled
-Work, and as long as the conditions of Clause 6, above, are met with
-regard to the Derived Work.
-
-8. The conditions above are not intended to prohibit, and hence do not
-apply to, the modification, by any method, of any component so that it
-becomes identical to an updated version of that component of the Work as
-it is distributed by the Current Maintainer under Clause 4, above.
-
-9. Distribution of the Work or any Derived Work in an alternative
-format, where the Work or that Derived Work (in whole or in part) is
-then produced by applying some process to that format, does not relax or
-nullify any sections of this license as they pertain to the results of
-applying that process.
-
-10. a. A Derived Work may be distributed under a different license
- provided that license itself honors the conditions listed in
- Clause 6 above, in regard to the Work, though it does not have
- to honor the rest of the conditions in this license.
-
- b. If a Derived Work is distributed under a different license, that
- Derived Work must provide sufficient documentation as part of
- itself to allow each recipient of that Derived Work to honor the
- restrictions in Clause 6 above, concerning changes from the Work.
-
-11. This license places no restrictions on works that are unrelated to
-the Work, nor does this license place any restrictions on aggregating
-such works with the Work by any means.
-
-12. Nothing in this license is intended to, or may be used to, prevent
-complete compliance by all parties with all applicable laws.
-
-
-NO WARRANTY
-===========
-
-There is no warranty for the Work. Except when otherwise stated in
-writing, the Copyright Holder provides the Work `as is', without
-warranty of any kind, either expressed or implied, including, but not
-limited to, the implied warranties of merchantability and fitness for a
-particular purpose. The entire risk as to the quality and performance
-of the Work is with you. Should the Work prove defective, you assume
-the cost of all necessary servicing, repair, or correction.
-
-In no event unless required by applicable law or agreed to in writing
-will The Copyright Holder, or any author named in the components of the
-Work, or any other party who may distribute and/or modify the Work as
-permitted above, be liable to you for damages, including any general,
-special, incidental or consequential damages arising out of any use of
-the Work or out of inability to use the Work (including, but not limited
-to, loss of data, data being rendered inaccurate, or losses sustained by
-anyone as a result of any failure of the Work to operate with any other
-programs), even if the Copyright Holder or said author or said other
-party has been advised of the possibility of such damages.
-
-
-MAINTENANCE OF THE WORK
-=======================
-
-The Work has the status `author-maintained' if the Copyright Holder
-explicitly and prominently states near the primary copyright notice in
-the Work that the Work can only be maintained by the Copyright Holder
-or simply that it is `author-maintained'.
-
-The Work has the status `maintained' if there is a Current Maintainer
-who has indicated in the Work that they are willing to receive error
-reports for the Work (for example, by supplying a valid e-mail
-address). It is not required for the Current Maintainer to acknowledge
-or act upon these error reports.
-
-The Work changes from status `maintained' to `unmaintained' if there
-is no Current Maintainer, or the person stated to be Current
-Maintainer of the work cannot be reached through the indicated means
-of communication for a period of six months, and there are no other
-significant signs of active maintenance.
-
-You can become the Current Maintainer of the Work by agreement with
-any existing Current Maintainer to take over this role.
-
-If the Work is unmaintained, you can become the Current Maintainer of
-the Work through the following steps:
-
- 1. Make a reasonable attempt to trace the Current Maintainer (and
- the Copyright Holder, if the two differ) through the means of
- an Internet or similar search.
-
- 2. If this search is successful, then enquire whether the Work
- is still maintained.
-
- a. If it is being maintained, then ask the Current Maintainer
- to update their communication data within one month.
-
- b. If the search is unsuccessful or no action to resume active
- maintenance is taken by the Current Maintainer, then announce
- within the pertinent community your intention to take over
- maintenance. (If the Work is a LaTeX work, this could be
- done, for example, by posting to comp.text.tex.)
-
- 3a. If the Current Maintainer is reachable and agrees to pass
- maintenance of the Work to you, then this takes effect
- immediately upon announcement.
-
- b. If the Current Maintainer is not reachable and the Copyright
- Holder agrees that maintenance of the Work be passed to you,
- then this takes effect immediately upon announcement.
-
- 4. If you make an `intention announcement' as described in 2b. above
- and after three months your intention is challenged neither by
- the Current Maintainer nor by the Copyright Holder nor by other
- people, then you may arrange for the Work to be changed so as
- to name you as the (new) Current Maintainer.
-
- 5. If the previously unreachable Current Maintainer becomes
- reachable once more within three months of a change completed
- under the terms of 3b) or 4), then that Current Maintainer must
- become or remain the Current Maintainer upon request provided
- they then update their communication data within one month.
-
-A change in the Current Maintainer does not, of itself, alter the fact
-that the Work is distributed under the LPPL license.
-
-If you become the Current Maintainer of the Work, you should
-immediately provide, within the Work, a prominent and unambiguous
-statement of your status as Current Maintainer. You should also
-announce your new status to the same pertinent community as
-in 2b) above.
-
-
-WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE
-======================================================
-
-This section contains important instructions, examples, and
-recommendations for authors who are considering distributing their
-works under this license. These authors are addressed as `you' in
-this section.
-
-Choosing This License or Another License
-----------------------------------------
-
-If for any part of your work you want or need to use *distribution*
-conditions that differ significantly from those in this license, then
-do not refer to this license anywhere in your work but, instead,
-distribute your work under a different license. You may use the text
-of this license as a model for your own license, but your license
-should not refer to the LPPL or otherwise give the impression that
-your work is distributed under the LPPL.
-
-The document `modguide.tex' in the base LaTeX distribution explains
-the motivation behind the conditions of this license. It explains,
-for example, why distributing LaTeX under the GNU General Public
-License (GPL) was considered inappropriate. Even if your work is
-unrelated to LaTeX, the discussion in `modguide.tex' may still be
-relevant, and authors intending to distribute their works under any
-license are encouraged to read it.
-
-A Recommendation on Modification Without Distribution
------------------------------------------------------
-
-It is wise never to modify a component of the Work, even for your own
-personal use, without also meeting the above conditions for
-distributing the modified component. While you might intend that such
-modifications will never be distributed, often this will happen by
-accident -- you may forget that you have modified that component; or
-it may not occur to you when allowing others to access the modified
-version that you are thus distributing it and violating the conditions
-of this license in ways that could have legal implications and, worse,
-cause problems for the community. It is therefore usually in your
-best interest to keep your copy of the Work identical with the public
-one. Many works provide ways to control the behavior of that work
-without altering any of its licensed components.
-
-How to Use This License
------------------------
-
-To use this license, place in each of the components of your work both
-an explicit copyright notice including your name and the year the work
-was authored and/or last substantially modified. Include also a
-statement that the distribution and/or modification of that
-component is constrained by the conditions in this license.
-
-Here is an example of such a notice and statement:
-
- %% pig.dtx
- %% Copyright 2005 M. Y. Name
- %
- % This work 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 2005/12/01 or later.
- %
- % This work has the LPPL maintenance status `maintained'.
- %
- % The Current Maintainer of this work is M. Y. Name.
- %
- % This work consists of the files pig.dtx and pig.ins
- % and the derived file pig.sty.
-
-Given such a notice and statement in a file, the conditions
-given in this license document would apply, with the `Work' referring
-to the three files `pig.dtx', `pig.ins', and `pig.sty' (the last being
-generated from `pig.dtx' using `pig.ins'), the `Base Interpreter'
-referring to any `LaTeX-Format', and both `Copyright Holder' and
-`Current Maintainer' referring to the person `M. Y. Name'.
-
-If you do not want the Maintenance section of LPPL to apply to your
-Work, change `maintained' above into `author-maintained'.
-However, we recommend that you use `maintained', as the Maintenance
-section was added in order to ensure that your Work remains useful to
-the community even when you can no longer maintain and support it
-yourself.
-
-Derived Works That Are Not Replacements
----------------------------------------
-
-Several clauses of the LPPL specify means to provide reliability and
-stability for the user community. They therefore concern themselves
-with the case that a Derived Work is intended to be used as a
-(compatible or incompatible) replacement of the original Work. If
-this is not the case (e.g., if a few lines of code are reused for a
-completely different task), then clauses 6b and 6d shall not apply.
-
-
-Important Recommendations
--------------------------
-
- Defining What Constitutes the Work
-
- The LPPL requires that distributions of the Work contain all the
- files of the Work. It is therefore important that you provide a
- way for the licensee to determine which files constitute the Work.
- This could, for example, be achieved by explicitly listing all the
- files of the Work near the copyright notice of each file or by
- using a line such as:
-
- % This work consists of all files listed in manifest.txt.
-
- in that place. In the absence of an unequivocal list it might be
- impossible for the licensee to determine what is considered by you
- to comprise the Work and, in such a case, the licensee would be
- entitled to make reasonable conjectures as to which files comprise
- the Work.
-
diff --git a/macros/latex/contrib/unicode-math/MANIFEST.md b/macros/latex/contrib/unicode-math/MANIFEST.md
deleted file mode 100644
index 638be84dab..0000000000
--- a/macros/latex/contrib/unicode-math/MANIFEST.md
+++ /dev/null
@@ -1,258 +0,0 @@
-# Manifest for unicode-math
-
-This file is a listing of all files considered to be part of this package.
-It is automatically generated with `texlua build.lua manifest`.
-
-
-## Repository manifest
-
-The following groups list the files included in the development repository of the package.
-Files listed with a ‘†’ marker are included in the TDS but not CTAN files, and files listed
-with ‘‡’ are included in both.
-
-### Source files
-
-These are source files for a number of purposes, including the `unpack` process which
-generates the installation files of the package. Additional files included here will also
-be installed for processing such as testing.
-
- | File | Flag | Description |
- | --- | --- | --- |
- | unicode-math.dtx | ‡ | Metadata for the package code, including files and versioning |
- | um-code-opening.dtx | ‡ | Assorted initialisation tasks, including some low-level function definitions. |
- | um-code-variables.dtx | ‡ | Declaration of all code-level variables used in the package. |
- | um-code-api.dtx | ‡ | The (underdeveloped) API to interface with the package internals. |
- | um-code-ui.dtx | ‡ | The xparse user interface top-level definitions. |
- | um-code-pkgopt.dtx | ‡ | Package options. |
- | um-code-msg.dtx | ‡ | Definitions of error, warning, and log messages. |
- | um-code-usv.dtx | ‡ | Mapping of mathematical unicode slots for alphabets. |
- | um-code-setchar.dtx | ‡ | General assignment of maths symbols. |
- | um-code-mathtext.dtx | ‡ | The "math text" commands such as `\mathbf` and co. |
- | um-code-main.dtx | ‡ | Definition of `\setmainfont`. |
- | um-code-fontopt.dtx | ‡ | Keyval for `\setmathfont` |
- | um-code-fontparam.dtx | ‡ | Cross-platform interface for font parameters |
- | um-code-mathmap.dtx | ‡ | Setup of symbol alphabets. |
- | um-code-sym-commands.dtx | ‡ | Definition of "math symbol alphabet" commands such as `\symbf` and co. |
- | um-code-alphabets.dtx | ‡ | Definitions for setting up the "math symbol alphabets". |
- | um-code-primes.dtx | ‡ | The definitions needed for the input of primes. |
- | um-code-sscript.dtx | ‡ | Setup for active chars needed to process subscript/superscript input chars. |
- | um-code-compat.dtx | ‡ | Compatibility with 3rd party packages. |
- | um-code-amsmath.dtx | ‡ | Compatibility with amsmath. |
- | um-code-epilogue.dtx | ‡ | Assorted definitions to close up. |
- | unicode-math.ins | ‡ | Docstrip installer. |
- | unicode-math-table.tex | ‡ | Source file of the math symbols. |
-
-### Typeset documentation source files
-
-These files are typeset using LaTeX to produce the PDF documentation for the package.
-
- | File | Flag | Description |
- | --- | --- | --- |
- | unicode-math-code.ltx | ‡ | Typeset code. |
- | unicode-math.ltx | ‡ | User documentation. |
- | unimath-example.ltx | ‡ | A minimal example file to demonstrate the package. |
- | unimath-symbols.ltx | ‡ | Listing of Unicode mathematics symbols using a variety of fonts. |
-
-### Documentation files
-
-These files form part of the documentation but are not typeset. Generally they will be
-additional input files for the typeset documentation files listed above.
-
- 1. um-doc-style.tex ‡
- 2. um-doc-main.tex ‡
- 3. um-doc-stixextract.tex ‡
- 4. um-doc-nfsssummary.tex ‡
- 5. um-doc-legacyfontdimen.tex ‡
- 6. um-doc-mathfontdimen.tex ‡
-
-### Text files
-
-Plain text files included as documentation or metadata.
-
- 1. CHANGES.md ‡
- 2. MANIFEST.md ‡
- 3. README.md ‡
- 4. LICENSE
-
-### Derived files
-
-The files created by ‘unpacking’ the package sources. This typically includes
-`.sty` and `.cls` files created from DocStrip `.dtx` files.
-
- 1. unicode-math-luatex.sty †
- 2. unicode-math-xetex.sty †
- 3. unicode-math.sty †
-
-### Typeset documents
-
-The output files (PDF, essentially) from typesetting the various source, demo,
-etc., package files.
-
- 1. unicode-math-code.pdf ‡
- 2. unicode-math.pdf ‡
- 3. unimath-example.pdf ‡
- 4. unimath-symbols.pdf ‡
-
-### Checking-specific support files
-
-Support files for checking the test suite.
-
- 1. umtest-preamble.tex
-
-### Test files
-
-These files form the test suite for the package. The listed `.lvt` files are the individual unit tests, with matching `.tlg` (not shown, for brevity) are the stored output for ensuring changes to the package produce the same output.
-
- 1. Bbbit.lvt
- 2. aaa-loading.lvt
- 3. active-frac.lvt
- 4. active-sscripts-amsmath.lvt
- 5. active-sscripts.lvt
- 6. alph-range-calscr.lvt
- 7. alph-range-fallback.lvt
- 8. alph-range-mapping.lvt
- 9. alph-range-sym-alph.lvt
-10. alph-range-sym-range.lvt
-11. alph-sym.lvt
-12. ascii-catcodes.lvt
-13. boldstyle-french.lvt
-14. boldstyle-iso.lvt
-15. boldstyle-literal.lvt
-16. boldstyle-tex.lvt
-17. boldstyle-upright.lvt
-18. fontname-log.lvt
-19. hyphen.lvt
-20. input-fullwidth.lvt
-21. lmdefault-mathrm-it-bf.lvt
-22. mathit-symit-var.lvt
-23. mathit-symit.lvt
-24. mathsizes.lvt
-25. mathstyle-french.lvt
-26. mathstyle-iso.lvt
-27. mathstyle-literal.lvt
-28. mathstyle-tex.lvt
-29. mathstyle-upright.lvt
-30. nabla.lvt
-31. not.lvt
-32. operatorname.lvt
-33. partial.lvt
-34. range-char-cmd.lvt
-35. range-class.lvt
-36. range-up-num.lvt
-37. setmathsf.lvt
-38. sqrt-amsmath-exec.lvt
-39. sqrt-amsmath-output.lvt
-40. sqrt-exec.lvt
-41. sqrt-output.lvt
-
-
-## TDS manifest
-
-The following groups list the files included in the TeX Directory Structure used to install
-the package into a TeX distribution.
-
-### Source files (TDS)
-
-All files included in the `unicode-math/source` directory.
-
- 1. um-code-alphabets.dtx
- 2. um-code-amsmath.dtx
- 3. um-code-api.dtx
- 4. um-code-compat.dtx
- 5. um-code-epilogue.dtx
- 6. um-code-fontopt.dtx
- 7. um-code-fontparam.dtx
- 8. um-code-main.dtx
- 9. um-code-mathmap.dtx
-10. um-code-mathtext.dtx
-11. um-code-msg.dtx
-12. um-code-opening.dtx
-13. um-code-pkgopt.dtx
-14. um-code-primes.dtx
-15. um-code-setchar.dtx
-16. um-code-sscript.dtx
-17. um-code-sym-commands.dtx
-18. um-code-ui.dtx
-19. um-code-usv.dtx
-20. um-code-variables.dtx
-21. unicode-math.dtx
-22. unicode-math.ins
-
-### TeX files (TDS)
-
-All files included in the `unicode-math/tex` directory.
-
- 1. unicode-math-luatex.sty
- 2. unicode-math-table.tex
- 3. unicode-math-xetex.sty
- 4. unicode-math.sty
-
-### Doc files (TDS)
-
-All files included in the `unicode-math/doc` directory.
-
- 1. CHANGES.md
- 2. MANIFEST.md
- 3. README.md
- 4. um-doc-legacyfontdimen.tex
- 5. um-doc-main.tex
- 6. um-doc-mathfontdimen.tex
- 7. um-doc-nfsssummary.tex
- 8. um-doc-stixextract.tex
- 9. um-doc-style.tex
-10. unicode-math-code.ltx
-11. unicode-math-code.pdf
-12. unicode-math.ltx
-13. unicode-math.pdf
-14. unimath-example.ltx
-15. unimath-example.pdf
-16. unimath-symbols.ltx
-17. unimath-symbols.pdf
-
-
-## CTAN manifest
-
-The following group lists the files included in the CTAN package.
-
-### CTAN files
-
- 1. CHANGES.md
- 2. MANIFEST.md
- 3. README.md
- 4. um-code-alphabets.dtx
- 5. um-code-amsmath.dtx
- 6. um-code-api.dtx
- 7. um-code-compat.dtx
- 8. um-code-epilogue.dtx
- 9. um-code-fontopt.dtx
-10. um-code-fontparam.dtx
-11. um-code-main.dtx
-12. um-code-mathmap.dtx
-13. um-code-mathtext.dtx
-14. um-code-msg.dtx
-15. um-code-opening.dtx
-16. um-code-pkgopt.dtx
-17. um-code-primes.dtx
-18. um-code-setchar.dtx
-19. um-code-sscript.dtx
-20. um-code-sym-commands.dtx
-21. um-code-ui.dtx
-22. um-code-usv.dtx
-23. um-code-variables.dtx
-24. um-doc-legacyfontdimen.tex
-25. um-doc-main.tex
-26. um-doc-mathfontdimen.tex
-27. um-doc-nfsssummary.tex
-28. um-doc-stixextract.tex
-29. um-doc-style.tex
-30. unicode-math-code.ltx
-31. unicode-math-code.pdf
-32. unicode-math-table.tex
-33. unicode-math.dtx
-34. unicode-math.ins
-35. unicode-math.ltx
-36. unicode-math.pdf
-37. unimath-example.ltx
-38. unimath-example.pdf
-39. unimath-symbols.ltx
-40. unimath-symbols.pdf
diff --git a/macros/latex/contrib/unicode-math/README.md b/macros/latex/contrib/unicode-math/README.md
deleted file mode 100644
index 12e0d1157a..0000000000
--- a/macros/latex/contrib/unicode-math/README.md
+++ /dev/null
@@ -1,116 +0,0 @@
-The UNICODE-MATH package
-========================
-
-This package provides an implementation of Unicode/OpenType mathematics for
-XeLaTeX and LuaLaTeX.
-
-While I am a little wary of encouraging people to use this package for
-production work, I understand that it has certain uses and am making it
-available for distribution. Your testing and feedback is essential to fill
-in the many gaps that I miss!
-
-Please be aware that this package is undergoing continued development and the
-interface and functionality should not be considered completely stable. But
-the more the package is used the more stable it will become. (Things are
-generally working now; it is only minutiae that may change in the future.)
-
-Unicode maths is currently supported by the following freely available fonts:
-
- - [Latin Modern Math][LM] (Bogusław Jackowski, Janusz M. Nowacki)
- - [TeX Gyre Bonum Math][BM] (B. Jackowski, P. Strzel­czyk and P. Pianowski)
- - [TeX Gyre Pagella Math][PM] (B. Jackowski, P. Strzelczyk and P. Pianowski)
- - [TeX Gyre Schola Math][SCM] (B. Jackowski, P. Strzelczyk and P. Pianowski)
- - [TeX Gyre Termes Math][TM] (B. Jackowski, P. Strzelczyk and P. Pianowski)
- - [DejaVu Math TeX Gyre][DEJA] (B. Jackowski, P. Strzelczyk and P. Pianowski)
- - [Asana Math][AM] (Apostolos Syropolous),
- - [STIX][STIX] (STIpub), and
- - [XITS Math][XM] (Khaled Hosny),
- - [Libertinus Math][LIB] (Philipp H. Poll and Khaled Hosny).
- - [Fire Math][FIRA] (Xiangdong Zeng).
-
-These fonts are available under open source licences
-(the [GUST Font License][GFL] and [Open Font Licence][OFL]).
-
-The following fonts are proprietary with OpenType maths support:
-
- - [Lucida Bright Math][LUCI] (Charles Bigelow and Kris Holmes)
- - [Cambria Math][CM] (Microsoft),
- - [Minion Math][MM] (Johannes Küster, typoma GmbH)
-
-I'm always looking for new fonts to test with, so please let me know of any
-new releases.
-
-[CM]: http://www.ascenderfonts.com/font/cambria-regular.aspx
-[LUCI]: http://tug.org/store/lucida/opentype.html
-[MM]: http://www.typoma.com/en/fonts.html
-[LM]: http://www.gust.org.pl/projects/e-foundry/lm-math
-[PM]: http://www.ctan.org/pkg/tex-gyre-math-pagella
-[BM]: http://www.ctan.org/pkg/tex-gyre-math-bonum
-[SCM]: http://www.ctan.org/pkg/tex-gyre-math-schola
-[TM]: http://www.ctan.org/pkg/tex-gyre-math-termes
-[DEJA]: https://ctan.org/pkg/tex-gyre-math-dejavu
-[AM]: http://www.ctan.org/pkg/asana-math
-[STIX]: http://www.stixfonts.org
-[XM]: http://github.com/khaledhosny/xits-math
-[LIB]: https://ctan.org/pkg/libertinus
-[GFL]: http://www.gust.org.pl/projects/projects/e-foundry/licenses/
-[OFL]: http://scripts.sil.org/OFL
-[FIRA]: https://github.com/firamath/firamath
-
-
-PACKAGE USAGE
--------------
-
-Please see the PDF documentation for full details. A simple beginning is:
-
-```tex
-\usepackage{unicode-math}
-\setmathfont{texgyrepagella-math.otf}
-```
-
-Most LaTeX math should still work after this. (Let me know if it doesn't.)
-Furthermore, it will be in a different font.
-
-
-REQUIREMENTS
-------------
-
-As well as running XeTeX or LuaTeX, this package requires recent versions of the
-`lm-math`, `fontspec`, `expl3`, `xpackages`, and `lualatex-math` packages.
-
-
-THANKS
-------
-
-I write LaTeX code as a hobby and a passion, not as part of my day job.
-If you would like to say thanks, please consider a donation at: <https://www.patreon.com/wspr>
-
-
-DEVELOPMENT and MAINTENANCE
----------------------------
-
-The current release version is available from CTAN:
-> <https://ctan.org/pkg/unicode-math>
-
-Latest developmental and archived historical versions are available from Github:
-> <http://github.com/wspr/unicode-math>
-
-Please file bug reports with minimal examples:
-> <http://github.com/wspr/unicode-math/issues>
-
-See `CHANGES.md` for the complete listing of change history.
-
-Further information on the details surrounding the development of the package
-can be found in the `CONTRIBUTING.md` file in the Github repository.
-
-
-LICENCE
--------
-
-The unicode-math package may be modified and distributed under the terms and
-conditions of the [LaTeX Project Public License][LPPL], version 1.3c or
-greater.
-
-[LPPL]: http://www.latex-project.org/lppl/
-
-This work is maintained by Will Robertson and consists of the files listed in `MANIFEST.md`.
diff --git a/macros/latex/contrib/unicode-math/RELEASE_CHECKLIST.md b/macros/latex/contrib/unicode-math/RELEASE_CHECKLIST.md
deleted file mode 100644
index ab250200e0..0000000000
--- a/macros/latex/contrib/unicode-math/RELEASE_CHECKLIST.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# UNICODE-MATH RELEASE CHECKLIST
-
-- [ ] Finish final changes on `working` branch
-- [ ] Ensure `CHANGES.md` is up-to-date with a new version number
-- [ ] `git push`
-- [ ] Check Travis build status
-- [ ] Update local distro fully with tlmgr
-- [ ] Run `build check` locally
-- [ ] Install prerelease versions of `fontspec` and `latex3` and re-check
-- [ ] `texlua autorelease.lua`
-- [ ] Check `latex3/contrib/testfiles/unicode-math001.lvt` and update if necessary
diff --git a/macros/latex/contrib/unicode-math/um-code-alphabets.dtx b/macros/latex/contrib/unicode-math/um-code-alphabets.dtx
deleted file mode 100644
index fd6dd322c8..0000000000
--- a/macros/latex/contrib/unicode-math/um-code-alphabets.dtx
+++ /dev/null
@@ -1,934 +0,0 @@
-%%^^A%% um-code-alphabets.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
-%%^^A%% Definitions for setting up the "math symbol alphabets".
-
-% \section{Setting up alphabets}
-% \label{sec:setupalphabets}
-%
-% \begin{macrocode}
-%<*package>
-% \end{macrocode}
-%
-%
-% \subsection{Upright: up}
-%
-% \begin{macrocode}
-\@@_new_alphabet_config:nnn {up} {num}
- {
- \@@_set_normal_numbers:nn {up} {#1}
- \@@_set_mathalphabet_numbers:nnn {up} {up} {#1}
- }
-
-\@@_new_alphabet_config:nnn {up} {Latin}
- {
- \bool_if:NTF \g_@@_literal_bool { \@@_set_normal_Latin:nn {up} {#1} }
- {
- \bool_if:NT \g_@@_upLatin_bool { \@@_set_normal_Latin:nn {up,it} {#1} }
- }
- \@@_set_mathalphabet_Latin:nnn {up} {up,it} {#1}
- \@@_set_mathalphabet_Latin:nnn {literal} {up} {up}
- \@@_set_mathalphabet_Latin:nnn {literal} {it} {it}
- }
-
-\@@_new_alphabet_config:nnn {up} {latin}
- {
- \bool_if:NTF \g_@@_literal_bool { \@@_set_normal_latin:nn {up} {#1} }
- {
- \bool_if:NT \g_@@_uplatin_bool
- {
- \@@_set_normal_latin:nn {up,it} {#1}
- \@@_set_normal_char:nnn {h} {up,it} {#1}
- \@@_set_normal_char:nnn {dotlessi} {up,it} {#1}
- \@@_set_normal_char:nnn {dotlessj} {up,it} {#1}
- }
- }
- \@@_set_mathalphabet_latin:nnn {up} {up,it}{#1}
- \@@_set_mathalphabet_latin:nnn {literal} {up} {up}
- \@@_set_mathalphabet_latin:nnn {literal} {it} {it}
- }
-
-\@@_new_alphabet_config:nnn {up} {Greek}
- {
- \bool_if:NTF \g_@@_literal_bool { \@@_set_normal_Greek:nn {up}{#1} }
- {
- \bool_if:NT \g_@@_upGreek_bool { \@@_set_normal_Greek:nn {up,it}{#1} }
- }
- \@@_set_mathalphabet_Greek:nnn {up} {up,it}{#1}
- \@@_set_mathalphabet_Greek:nnn {literal} {up} {up}
- \@@_set_mathalphabet_Greek:nnn {literal} {it} {it}
- }
-
-\@@_new_alphabet_config:nnn {up} {greek}
- {
- \bool_if:NTF \g_@@_literal_bool { \@@_set_normal_greek:nn {up} {#1} }
- {
- \bool_if:NT \g_@@_upgreek_bool
- {
- \@@_set_normal_greek:nn {up,it} {#1}
- }
- }
- \@@_set_mathalphabet_greek:nnn {up} {up,it} {#1}
- \@@_set_mathalphabet_greek:nnn {literal} {up} {up}
- \@@_set_mathalphabet_greek:nnn {literal} {it} {it}
- }
-
-\@@_new_alphabet_config:nnn {up} {misc}
- {
- \bool_if:NTF \g_@@_literal_Nabla_bool
- {
- \@@_set_normal_char:nnn {Nabla}{up}{up}
- }
- {
- \bool_if:NT \g_@@_upNabla_bool
- {
- \@@_set_normal_char:nnn {Nabla}{up,it}{up}
- }
- }
- \bool_if:NTF \g_@@_literal_partial_bool
- {
- \@@_set_normal_char:nnn {partial}{up}{up}
- }
- {
- \bool_if:NT \g_@@_uppartial_bool
- {
- \@@_set_normal_char:nnn {partial}{up,it}{up}
- }
- }
- \@@_set_mathalphabet_pos:nnnn {up} {partial} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {up} {Nabla} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {up} {dotlessi} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {up} {dotlessj} {up,it} {#1}
- }
-% \end{macrocode}
-%
-% \subsection{Italic: it}
-%
-% \begin{macrocode}
-\@@_new_alphabet_config:nnn {it} {Latin}
- {
- \bool_if:NTF \g_@@_literal_bool { \@@_set_normal_Latin:nn {it} {#1} }
- {
- \bool_if:NF \g_@@_upLatin_bool { \@@_set_normal_Latin:nn {up,it} {#1} }
- }
- \@@_set_mathalphabet_Latin:nnn {it} {up,it} {#1}
- }
-
-\@@_new_alphabet_config:nnn {it} {latin}
- {
- \bool_if:NTF \g_@@_literal_bool
- {
- \@@_set_normal_latin:nn {it}{#1}
- \@@_set_normal_char:nnn {h}{it}{#1}
- }
- {
- \bool_if:NF \g_@@_uplatin_bool
- {
- \@@_set_normal_latin:nn {up,it} {#1}
- \@@_set_normal_char:nnn {h} {up,it} {#1}
- \@@_set_normal_char:nnn {dotlessi} {up,it} {#1}
- \@@_set_normal_char:nnn {dotlessj} {up,it} {#1}
- }
- }
- \@@_set_mathalphabet_latin:nnn {it} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {it} {dotlessi} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {it} {dotlessj} {up,it} {#1}
- }
-
-\@@_new_alphabet_config:nnn {it} {Greek}
- {
- \bool_if:NTF \g_@@_literal_bool
- {
- \@@_set_normal_Greek:nn {it} {#1}
- }
- {
- \bool_if:NF \g_@@_upGreek_bool { \@@_set_normal_Greek:nn {up,it} {#1} }
- }
- \@@_set_mathalphabet_Greek:nnn {it} {up,it} {#1}
- }
-
-\@@_new_alphabet_config:nnn {it} {greek}
- {
- \bool_if:NTF \g_@@_literal_bool
- {
- \@@_set_normal_greek:nn {it} {#1}
- }
- {
- \bool_if:NF \g_@@_upgreek_bool { \@@_set_normal_greek:nn {it,up} {#1} }
- }
- \@@_set_mathalphabet_greek:nnn {it} {up,it} {#1}
- }
-
-\@@_new_alphabet_config:nnn {it} {misc}
- {
- \bool_if:NTF \g_@@_literal_Nabla_bool
- {
- \@@_set_normal_char:nnn {Nabla} {it} {it}
- }
- {
- \bool_if:NF \g_@@_upNabla_bool
- {
- \@@_set_normal_char:nnn {Nabla} {up,it} {it}
- }
- }
- \bool_if:NTF \g_@@_literal_partial_bool
- {
- \@@_set_normal_char:nnn {partial} {it} {it}
- }
- {
- \bool_if:NF \g_@@_uppartial_bool
- {
- \@@_set_normal_char:nnn {partial} {up,it} {it}
- }
- }
- \@@_set_mathalphabet_pos:nnnn {it} {partial} {up,it}{#1}
- \@@_set_mathalphabet_pos:nnnn {it} {Nabla} {up,it}{#1}
- }
-% \end{macrocode}
-%
-% \subsection{Blackboard or double-struck: bb and bbit}
-%
-% \begin{macrocode}
-\@@_new_alphabet_config:nnn {bb} {latin}
- {
- \@@_set_mathalphabet_latin:nnn {bb} {up,it} {#1}
- }
-
-\@@_new_alphabet_config:nnn {bb} {Latin}
- {
- \@@_set_mathalphabet_Latin:nnn {bb} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {bb} {C} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {bb} {H} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {bb} {N} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {bb} {P} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {bb} {Q} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {bb} {R} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {bb} {Z} {up,it} {#1}
- }
-
-\@@_new_alphabet_config:nnn {bb} {num}
- {
- \@@_set_mathalphabet_numbers:nnn {bb} {up} {#1}
- }
-
-\@@_new_alphabet_config:nnn {bb} {misc}
- {
- \@@_set_mathalphabet_pos:nnnn {bb} {Pi} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {bb} {pi} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {bb} {Gamma} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {bb} {gamma} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {bb} {summation} {up} {#1}
- }
-
-\@@_new_alphabet_config:nnn {bbit} {misc}
- {
- \@@_set_mathalphabet_pos:nnnn {bbit} {D} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {bbit} {d} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {bbit} {e} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {bbit} {i} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {bbit} {j} {up,it} {#1}
- }
-% \end{macrocode}
-%
-% \subsection{Script and caligraphic: scr and cal}
-%
-% \begin{macrocode}
-\@@_new_alphabet_config:nnn {scr} {Latin}
- {
- \@@_set_mathalphabet_Latin:nnn {scr} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {scr} {B} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {scr} {E} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {scr} {F} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {scr} {H} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {scr} {I} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {scr} {L} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {scr} {M} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {scr} {R} {up,it} {#1}
- }
-
-\@@_new_alphabet_config:nnn {scr} {latin}
- {
- \@@_set_mathalphabet_latin:nnn {scr} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {scr} {e} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {scr} {g} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {scr} {o} {up,it} {#1}
- }
-% \end{macrocode}
-% These are by default synonyms for the above, but with the STIX
-% fonts we want to use the alternate alphabet.
-% \begin{macrocode}
-\@@_new_alphabet_config:nnn {cal} {Latin}
- {
- \@@_set_mathalphabet_Latin:nnn {cal} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {cal} {B} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {cal} {E} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {cal} {F} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {cal} {H} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {cal} {I} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {cal} {L} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {cal} {M} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {cal} {R} {up,it} {#1}
- }
-% \end{macrocode}
-%
-% \subsection{Fractur or fraktur or blackletter: frak}
-%
-% \begin{macrocode}
-\@@_new_alphabet_config:nnn {frak} {Latin}
- {
- \@@_set_mathalphabet_Latin:nnn {frak} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {frak} {C} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {frak} {H} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {frak} {I} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {frak} {R} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {frak} {Z} {up,it} {#1}
- }
-\@@_new_alphabet_config:nnn {frak} {latin}
- {
- \@@_set_mathalphabet_latin:nnn {frak} {up,it} {#1}
- }
-% \end{macrocode}
-%
-% \subsection{Sans serif upright: sfup}
-% \begin{macrocode}
-\@@_new_alphabet_config:nnn {sfup} {num}
- {
- \@@_set_mathalphabet_numbers:nnn {sf} {up} {#1}
- \@@_set_mathalphabet_numbers:nnn {sfup} {up} {#1}
- }
-\@@_new_alphabet_config:nnn {sfup} {Latin}
- {
- \bool_if:NTF \g_@@_sfliteral_bool
- {
- \@@_set_normal_Latin:nn {sfup} {#1}
- \@@_set_mathalphabet_Latin:nnn {sf} {up} {#1}
- }
- {
- \bool_if:NT \g_@@_upsans_bool
- {
- \@@_set_normal_Latin:nn {sfup,sfit} {#1}
- \@@_set_mathalphabet_Latin:nnn {sf} {up,it} {#1}
- }
- }
- \@@_set_mathalphabet_Latin:nnn {sfup} {up,it} {#1}
- }
-
-\@@_new_alphabet_config:nnn {sfup} {latin}
- {
- \bool_if:NTF \g_@@_sfliteral_bool
- {
- \@@_set_normal_latin:nn {sfup} {#1}
- \@@_set_mathalphabet_latin:nnn {sf} {up} {#1}
- }
- {
- \bool_if:NT \g_@@_upsans_bool
- {
- \@@_set_normal_latin:nn {sfup,sfit} {#1}
- \@@_set_mathalphabet_latin:nnn {sf} {up,it} {#1}
- }
- }
- \@@_set_mathalphabet_latin:nnn {sfup} {up,it} {#1}
- }
-% \end{macrocode}
-%
-% \subsection{Sans serif italic: sfit}
-%
-% \begin{macrocode}
-\@@_new_alphabet_config:nnn {sfit} {Latin}
- {
- \bool_if:NTF \g_@@_sfliteral_bool
- {
- \@@_set_normal_Latin:nn {sfit} {#1}
- \@@_set_mathalphabet_Latin:nnn {sf} {it} {#1}
- }
- {
- \bool_if:NF \g_@@_upsans_bool
- {
- \@@_set_normal_Latin:nn {sfup,sfit} {#1}
- \@@_set_mathalphabet_Latin:nnn {sf} {up,it} {#1}
- }
- }
- \@@_set_mathalphabet_Latin:nnn {sfit} {up,it} {#1}
- }
-
-\@@_new_alphabet_config:nnn {sfit} {latin}
- {
- \bool_if:NTF \g_@@_sfliteral_bool
- {
- \@@_set_normal_latin:nn {sfit} {#1}
- \@@_set_mathalphabet_latin:nnn {sf} {it}{#1}
- }
- {
- \bool_if:NF \g_@@_upsans_bool
- {
- \@@_set_normal_latin:nn {sfup,sfit} {#1}
- \@@_set_mathalphabet_latin:nnn {sf} {up,it}{#1}
- }
- }
- \@@_set_mathalphabet_latin:nnn {sfit} {up,it}{#1}
- }
-% \end{macrocode}
-%
-% \subsection{Typewriter or monospaced: tt}
-% \begin{macrocode}
-\@@_new_alphabet_config:nnn {tt} {num}
- {
- \@@_set_mathalphabet_numbers:nnn {tt} {up}{#1}
- }
-\@@_new_alphabet_config:nnn {tt} {Latin}
- {
- \@@_set_mathalphabet_Latin:nnn {tt} {up,it}{#1}
- }
-\@@_new_alphabet_config:nnn {tt} {latin}
- {
- \@@_set_mathalphabet_latin:nnn {tt} {up,it}{#1}
- }
-% \end{macrocode}
-%
-%
-% \subsection{Bold Italic: bfit}
-% \begin{macrocode}
-\@@_new_alphabet_config:nnn {bfit} {Latin}
- {
- \bool_if:NF \g_@@_bfupLatin_bool
- {
- \@@_set_normal_Latin:nn {bfup,bfit} {#1}
- }
- \@@_set_mathalphabet_Latin:nnn {bfit} {up,it}{#1}
- \bool_if:NTF \g_@@_bfliteral_bool
- {
- \@@_set_normal_Latin:nn {bfit} {#1}
- \@@_set_mathalphabet_Latin:nnn {bf} {it}{#1}
- }
- {
- \bool_if:NF \g_@@_bfupLatin_bool
- {
- \@@_set_normal_Latin:nn {bfup,bfit} {#1}
- \@@_set_mathalphabet_Latin:nnn {bf} {up,it}{#1}
- }
- }
- }
-
-\@@_new_alphabet_config:nnn {bfit} {latin}
- {
- \bool_if:NF \g_@@_bfuplatin_bool
- {
- \@@_set_normal_latin:nn {bfup,bfit} {#1}
- }
- \@@_set_mathalphabet_latin:nnn {bfit} {up,it}{#1}
- \bool_if:NTF \g_@@_bfliteral_bool
- {
- \@@_set_normal_latin:nn {bfit} {#1}
- \@@_set_mathalphabet_latin:nnn {bf} {it}{#1}
- }
- {
- \bool_if:NF \g_@@_bfuplatin_bool
- {
- \@@_set_normal_latin:nn {bfup,bfit} {#1}
- \@@_set_mathalphabet_latin:nnn {bf} {up,it}{#1}
- }
- }
- }
-
-\@@_new_alphabet_config:nnn {bfit} {Greek}
- {
- \@@_set_mathalphabet_Greek:nnn {bfit} {up,it}{#1}
- \bool_if:NTF \g_@@_bfliteral_bool
- {
- \@@_set_normal_Greek:nn {bfit}{#1}
- \@@_set_mathalphabet_Greek:nnn {bf} {it}{#1}
- }
- {
- \bool_if:NF \g_@@_bfupGreek_bool
- {
- \@@_set_normal_Greek:nn {bfup,bfit}{#1}
- \@@_set_mathalphabet_Greek:nnn {bf} {up,it}{#1}
- }
- }
- }
-
-\@@_new_alphabet_config:nnn {bfit} {greek}
- {
- \@@_set_mathalphabet_greek:nnn {bfit} {up,it} {#1}
- \bool_if:NTF \g_@@_bfliteral_bool
- {
- \@@_set_normal_greek:nn {bfit} {#1}
- \@@_set_mathalphabet_greek:nnn {bf} {it} {#1}
- }
- {
- \bool_if:NF \g_@@_bfupgreek_bool
- {
- \@@_set_normal_greek:nn {bfit,bfup} {#1}
- \@@_set_mathalphabet_greek:nnn {bf} {up,it} {#1}
- }
- }
- }
-
-\@@_new_alphabet_config:nnn {bfit} {misc}
- {
- \bool_if:NTF \g_@@_literal_Nabla_bool
- { \@@_set_normal_char:nnn {Nabla} {bfit} {#1} }
- {
- \bool_if:NF \g_@@_upNabla_bool
- { \@@_set_normal_char:nnn {Nabla} {bfup,bfit} {#1} }
- }
-
- \bool_if:NTF \g_@@_literal_partial_bool
- { \@@_set_normal_char:nnn {partial} {bfit} {#1} }
- {
- \bool_if:NF \g_@@_uppartial_bool
- { \@@_set_normal_char:nnn {partial} {bfup,bfit} {#1} }
- }
-
- \@@_set_mathalphabet_pos:nnnn {bfit} {partial} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {bfit} {Nabla} {up,it} {#1}
-
- \bool_if:NTF \g_@@_literal_partial_bool
- {
- \@@_set_mathalphabet_pos:nnnn {bf} {partial} {it}{#1}
- }
- {
- \bool_if:NF \g_@@_uppartial_bool
- {
- \@@_set_mathalphabet_pos:nnnn {bf} {partial} {up,it}{#1}
- }
- }
-
- \bool_if:NTF \g_@@_literal_Nabla_bool
- {
- \@@_set_mathalphabet_pos:nnnn {bf} {Nabla} {it}{#1}
- }
- {
- \bool_if:NF \g_@@_upNabla_bool
- {
- \@@_set_mathalphabet_pos:nnnn {bf} {Nabla} {up,it}{#1}
- }
- }
- }
-% \end{macrocode}
-%
-%
-% \subsection{Bold Upright: bfup}
-% \begin{macrocode}
-\@@_new_alphabet_config:nnn {bfup} {num}
- {
- \@@_set_mathalphabet_numbers:nnn {bf} {up} {#1}
- \@@_set_mathalphabet_numbers:nnn {bfup} {up} {#1}
- }
-
-\@@_new_alphabet_config:nnn {bfup} {Latin}
- {
- \bool_if:NT \g_@@_bfupLatin_bool
- {
- \@@_set_normal_Latin:nn {bfup,bfit} {#1}
- }
- \@@_set_mathalphabet_Latin:nnn {bfup} {up,it} {#1}
- \bool_if:NTF \g_@@_bfliteral_bool
- {
- \@@_set_normal_Latin:nn {bfup} {#1}
- \@@_set_mathalphabet_Latin:nnn {bf} {up} {#1}
- }
- {
- \bool_if:NT \g_@@_bfupLatin_bool
- {
- \@@_set_normal_Latin:nn {bfup,bfit} {#1}
- \@@_set_mathalphabet_Latin:nnn {bf} {up,it} {#1}
- }
- }
- }
-
-\@@_new_alphabet_config:nnn {bfup} {latin}
- {
- \bool_if:NT \g_@@_bfuplatin_bool
- {
- \@@_set_normal_latin:nn {bfup,bfit} {#1}
- }
- \@@_set_mathalphabet_latin:nnn {bfup} {up,it} {#1}
- \bool_if:NTF \g_@@_bfliteral_bool
- {
- \@@_set_normal_latin:nn {bfup} {#1}
- \@@_set_mathalphabet_latin:nnn {bf} {up} {#1}
- }
- {
- \bool_if:NT \g_@@_bfuplatin_bool
- {
- \@@_set_normal_latin:nn {bfup,bfit} {#1}
- \@@_set_mathalphabet_latin:nnn {bf} {up,it} {#1}
- }
- }
- }
-
-\@@_new_alphabet_config:nnn {bfup} {Greek}
- {
- \@@_set_mathalphabet_Greek:nnn {bfup} {up,it} {#1}
- \bool_if:NTF \g_@@_bfliteral_bool
- {
- \@@_set_normal_Greek:nn {bfup} {#1}
- \@@_set_mathalphabet_Greek:nnn {bf} {up} {#1}
- }
- {
- \bool_if:NT \g_@@_bfupGreek_bool
- {
- \@@_set_normal_Greek:nn {bfup,bfit} {#1}
- \@@_set_mathalphabet_Greek:nnn {bf} {up,it} {#1}
- }
- }
- }
-
-\@@_new_alphabet_config:nnn {bfup} {greek}
- {
- \@@_set_mathalphabet_greek:nnn {bfup} {up,it} {#1}
- \bool_if:NTF \g_@@_bfliteral_bool
- {
- \@@_set_normal_greek:nn {bfup} {#1}
- \@@_set_mathalphabet_greek:nnn {bf} {up} {#1}
- }
- {
- \bool_if:NT \g_@@_bfupgreek_bool
- {
- \@@_set_normal_greek:nn {bfup,bfit} {#1}
- \@@_set_mathalphabet_greek:nnn {bf} {up,it} {#1}
- }
- }
- }
-
-\@@_new_alphabet_config:nnn {bfup} {misc}
- {
- \bool_if:NTF \g_@@_literal_Nabla_bool
- {
- \@@_set_normal_char:nnn {Nabla} {bfup} {#1}
- }
- {
- \bool_if:NT \g_@@_upNabla_bool
- {
- \@@_set_normal_char:nnn {Nabla} {bfup,bfit} {#1}
- }
- }
- \bool_if:NTF \g_@@_literal_partial_bool
- {
- \@@_set_normal_char:nnn {partial} {bfup} {#1}
- }
- {
- \bool_if:NT \g_@@_uppartial_bool
- {
- \@@_set_normal_char:nnn {partial} {bfup,bfit} {#1}
- }
- }
- \@@_set_mathalphabet_pos:nnnn {bfup} {partial} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {bfup} {Nabla} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {bfup} {digamma} {up} {#1}
- \@@_set_mathalphabet_pos:nnnn {bfup} {Digamma} {up} {#1}
- \@@_set_mathalphabet_pos:nnnn {bf} {digamma} {up} {#1}
- \@@_set_mathalphabet_pos:nnnn {bf} {Digamma} {up} {#1}
- \bool_if:NTF \g_@@_literal_partial_bool
- {
- \@@_set_mathalphabet_pos:nnnn {bf} {partial} {up} {#1}
- }
- {
- \bool_if:NT \g_@@_uppartial_bool
- {
- \@@_set_mathalphabet_pos:nnnn {bf} {partial} {up,it} {#1}
- }
- }
- \bool_if:NTF \g_@@_literal_Nabla_bool
- {
- \@@_set_mathalphabet_pos:nnnn {bf} {Nabla} {up}{#1}
- }
- {
- \bool_if:NT \g_@@_upNabla_bool
- {
- \@@_set_mathalphabet_pos:nnnn {bf} {Nabla} {up,it} {#1}
- }
- }
- }
-% \end{macrocode}
-%
-% \subsection{Bold fractur or fraktur or blackletter: bffrak}
-% \begin{macrocode}
-\@@_new_alphabet_config:nnn {bffrak} {Latin}
- {
- \@@_set_mathalphabet_Latin:nnn {bffrak} {up,it}{#1}
- }
-
-\@@_new_alphabet_config:nnn {bffrak} {latin}
- {
- \@@_set_mathalphabet_latin:nnn {bffrak} {up,it}{#1}
- }
-% \end{macrocode}
-%
-% \subsection{Bold script or calligraphic: bfscr}
-% \begin{macrocode}
-\@@_new_alphabet_config:nnn {bfscr} {Latin}
- {
- \@@_set_mathalphabet_Latin:nnn {bfscr} {up,it}{#1}
- }
-\@@_new_alphabet_config:nnn {bfscr} {latin}
- {
- \@@_set_mathalphabet_latin:nnn {bfscr} {up,it}{#1}
- }
-\@@_new_alphabet_config:nnn {bfcal} {Latin}
- {
- \@@_set_mathalphabet_Latin:nnn {bfcal} {up,it}{#1}
- }
-% \end{macrocode}
-%
-% \subsection{Bold upright sans serif: bfsfup}
-% \begin{macrocode}
-\@@_new_alphabet_config:nnn {bfsfup} {num}
- {
- \@@_set_mathalphabet_numbers:nnn {bfsf} {up}{#1}
- \@@_set_mathalphabet_numbers:nnn {bfsfup} {up}{#1}
- }
-\@@_new_alphabet_config:nnn {bfsfup} {Latin}
- {
- \bool_if:NTF \g_@@_sfliteral_bool
- {
- \@@_set_normal_Latin:nn {bfsfup} {#1}
- \@@_set_mathalphabet_Latin:nnn {bfsf} {up}{#1}
- }
- {
- \bool_if:NT \g_@@_upsans_bool
- {
- \@@_set_normal_Latin:nn {bfsfup,bfsfit} {#1}
- \@@_set_mathalphabet_Latin:nnn {bfsf} {up,it}{#1}
- }
- }
- \@@_set_mathalphabet_Latin:nnn {bfsfup} {up,it}{#1}
- }
-
-\@@_new_alphabet_config:nnn {bfsfup} {latin}
- {
- \bool_if:NTF \g_@@_sfliteral_bool
- {
- \@@_set_normal_latin:nn {bfsfup} {#1}
- \@@_set_mathalphabet_latin:nnn {bfsf} {up}{#1}
- }
- {
- \bool_if:NT \g_@@_upsans_bool
- {
- \@@_set_normal_latin:nn {bfsfup,bfsfit} {#1}
- \@@_set_mathalphabet_latin:nnn {bfsf} {up,it}{#1}
- }
- }
- \@@_set_mathalphabet_latin:nnn {bfsfup} {up,it}{#1}
- }
-
-\@@_new_alphabet_config:nnn {bfsfup} {Greek}
- {
- \bool_if:NTF \g_@@_sfliteral_bool
- {
- \@@_set_normal_Greek:nn {bfsfup}{#1}
- \@@_set_mathalphabet_Greek:nnn {bfsf} {up}{#1}
- }
- {
- \bool_if:NT \g_@@_upsans_bool
- {
- \@@_set_normal_Greek:nn {bfsfup,bfsfit}{#1}
- \@@_set_mathalphabet_Greek:nnn {bfsf} {up,it}{#1}
- }
- }
- \@@_set_mathalphabet_Greek:nnn {bfsfup} {up,it}{#1}
- }
-
-\@@_new_alphabet_config:nnn {bfsfup} {greek}
- {
- \bool_if:NTF \g_@@_sfliteral_bool
- {
- \@@_set_normal_greek:nn {bfsfup} {#1}
- \@@_set_mathalphabet_greek:nnn {bfsf} {up} {#1}
- }
- {
- \bool_if:NT \g_@@_upsans_bool
- {
- \@@_set_normal_greek:nn {bfsfup,bfsfit} {#1}
- \@@_set_mathalphabet_greek:nnn {bfsf} {up,it} {#1}
- }
- }
- \@@_set_mathalphabet_greek:nnn {bfsfup} {up,it} {#1}
- }
-
-\@@_new_alphabet_config:nnn {bfsfup} {misc}
- {
- \bool_if:NTF \g_@@_literal_Nabla_bool
- {
- \@@_set_normal_char:nnn {Nabla}{bfsfup}{#1}
- }
- {
- \bool_if:NT \g_@@_upNabla_bool
- {
- \@@_set_normal_char:nnn {Nabla}{bfsfup,bfsfit}{#1}
- }
- }
- \bool_if:NTF \g_@@_literal_partial_bool
- {
- \@@_set_normal_char:nnn {partial}{bfsfup}{#1}
- }
- {
- \bool_if:NT \g_@@_uppartial_bool
- {
- \@@_set_normal_char:nnn {partial}{bfsfup,bfsfit}{#1}
- }
- }
- \@@_set_mathalphabet_pos:nnnn {bfsfup} {partial} {up,it}{#1}
- \@@_set_mathalphabet_pos:nnnn {bfsfup} {Nabla} {up,it}{#1}
- \bool_if:NTF \g_@@_literal_partial_bool
- {
- \@@_set_mathalphabet_pos:nnnn {bfsf} {partial} {up}{#1}
- }
- {
- \bool_if:NT \g_@@_uppartial_bool
- {
- \@@_set_mathalphabet_pos:nnnn {bfsf} {partial} {up,it}{#1}
- }
- }
- \bool_if:NTF \g_@@_literal_Nabla_bool
- {
- \@@_set_mathalphabet_pos:nnnn {bfsf} {Nabla} {up}{#1}
- }
- {
- \bool_if:NT \g_@@_upNabla_bool
- {
- \@@_set_mathalphabet_pos:nnnn {bfsf} {Nabla} {up,it}{#1}
- }
- }
- }
-% \end{macrocode}
-%
-%
-% \subsection{Bold italic sans serif: bfsfit}
-% \begin{macrocode}
-\@@_new_alphabet_config:nnn {bfsfit} {Latin}
- {
- \bool_if:NTF \g_@@_sfliteral_bool
- {
- \@@_set_normal_Latin:nn {bfsfit} {#1}
- \@@_set_mathalphabet_Latin:nnn {bfsf} {it}{#1}
- }
- {
- \bool_if:NF \g_@@_upsans_bool
- {
- \@@_set_normal_Latin:nn {bfsfup,bfsfit} {#1}
- \@@_set_mathalphabet_Latin:nnn {bfsf} {up,it}{#1}
- }
- }
- \@@_set_mathalphabet_Latin:nnn {bfsfit} {up,it}{#1}
- }
-
-\@@_new_alphabet_config:nnn {bfsfit} {latin}
- {
- \bool_if:NTF \g_@@_sfliteral_bool
- {
- \@@_set_normal_latin:nn {bfsfit} {#1}
- \@@_set_mathalphabet_latin:nnn {bfsf} {it}{#1}
- }
- {
- \bool_if:NF \g_@@_upsans_bool
- {
- \@@_set_normal_latin:nn {bfsfup,bfsfit} {#1}
- \@@_set_mathalphabet_latin:nnn {bfsf} {up,it}{#1}
- }
- }
- \@@_set_mathalphabet_latin:nnn {bfsfit} {up,it}{#1}
- }
-
-\@@_new_alphabet_config:nnn {bfsfit} {Greek}
- {
- \bool_if:NTF \g_@@_sfliteral_bool
- {
- \@@_set_normal_Greek:nn {bfsfit}{#1}
- \@@_set_mathalphabet_Greek:nnn {bfsf} {it}{#1}
- }
- {
- \bool_if:NF \g_@@_upsans_bool
- {
- \@@_set_normal_Greek:nn {bfsfup,bfsfit}{#1}
- \@@_set_mathalphabet_Greek:nnn {bfsf} {up,it}{#1}
- }
- }
- \@@_set_mathalphabet_Greek:nnn {bfsfit} {up,it}{#1}
- }
-
-\@@_new_alphabet_config:nnn {bfsfit} {greek}
- {
- \bool_if:NTF \g_@@_sfliteral_bool
- {
- \@@_set_normal_greek:nn {bfsfit} {#1}
- \@@_set_mathalphabet_greek:nnn {bfsf} {it} {#1}
- }
- {
- \bool_if:NF \g_@@_upsans_bool
- {
- \@@_set_normal_greek:nn {bfsfup,bfsfit} {#1}
- \@@_set_mathalphabet_greek:nnn {bfsf} {up,it} {#1}
- }
- }
- \@@_set_mathalphabet_greek:nnn {bfsfit} {up,it} {#1}
- }
-
-\@@_new_alphabet_config:nnn {bfsfit} {misc}
- {
- \bool_if:NTF \g_@@_literal_Nabla_bool
- {
- \@@_set_normal_char:nnn {Nabla}{bfsfit}{#1}
- }
- {
- \bool_if:NF \g_@@_upNabla_bool
- {
- \@@_set_normal_char:nnn {Nabla}{bfsfup,bfsfit}{#1}
- }
- }
- \bool_if:NTF \g_@@_literal_partial_bool
- {
- \@@_set_normal_char:nnn {partial}{bfsfit}{#1}
- }
- {
- \bool_if:NF \g_@@_uppartial_bool
- {
- \@@_set_normal_char:nnn {partial}{bfsfup,bfsfit}{#1}
- }
- }
- \@@_set_mathalphabet_pos:nnnn {bfsfit} {partial} {up,it}{#1}
- \@@_set_mathalphabet_pos:nnnn {bfsfit} {Nabla} {up,it}{#1}
- \bool_if:NTF \g_@@_literal_partial_bool
- {
- \@@_set_mathalphabet_pos:nnnn {bfsf} {partial} {it}{#1}
- }
- {
- \bool_if:NF \g_@@_uppartial_bool
- {
- \@@_set_mathalphabet_pos:nnnn {bfsf} {partial} {up,it}{#1}
- }
- }
- \bool_if:NTF \g_@@_literal_Nabla_bool
- {
- \@@_set_mathalphabet_pos:nnnn {bfsf} {Nabla} {it}{#1}
- }
- {
- \bool_if:NF \g_@@_upNabla_bool
- {
- \@@_set_mathalphabet_pos:nnnn {bfsf} {Nabla} {up,it}{#1}
- }
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-%</package>
-% \end{macrocode}
-
-\endinput
-
-% /©
-%
-% ------------------------------------------------
-% The UNICODE-MATH package <wspr.io/unicode-math>
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% Copyright 2006-2019 Will Robertson, LPPL "maintainer"
-% Copyright 2010-2017 Philipp Stephani
-% Copyright 2011-2017 Joseph Wright
-% Copyright 2012-2015 Khaled Hosny
-% ------------------------------------------------
-%
-% ©/
diff --git a/macros/latex/contrib/unicode-math/um-code-amsmath.dtx b/macros/latex/contrib/unicode-math/um-code-amsmath.dtx
deleted file mode 100644
index ee1f0642bc..0000000000
--- a/macros/latex/contrib/unicode-math/um-code-amsmath.dtx
+++ /dev/null
@@ -1,173 +0,0 @@
-%%^^A%% um-code-amsmath.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
-%%^^A%% Compatibility with amsmath.
-
-% \section{Compatibility with \pkg{amsmath}}
-%
-% \begin{macrocode}
-%<*package>
-% \end{macrocode}
-%
-% Since the mathcode of |`\-| is greater than eight bits, this piece of |\AtBeginDocument| code from \pkg{amsmath} dies if we try and set the maths font in the preamble:
-% \begin{macrocode}
- \tl_remove_once:Nn \@begindocumenthook
- {
- \mathchardef\std@minus\mathcode`\-\relax
- \mathchardef\std@equal\mathcode`\=\relax
- }
- \AtBeginDocument
- {
- \Umathcharnumdef\std@minus\Umathcodenum`-
- \Umathcharnumdef\std@equal\Umathcodenum`=
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
- \cs_set:Npn \@cdots {\mathinner{\unicodecdots}}
- \cs_set_eq:NN \dotsb@ \cdots
-% \end{macrocode}
-% This isn't as clever as the \pkg{amsmath} definition but I think it works:
-% \begin{macrocode}
-%<*XE>
- \def \resetMathstrut@
- {%
- \setbox\z@\hbox{$($}%)
- \ht\Mathstrutbox@\ht\z@ \dp\Mathstrutbox@\dp\z@
- }
-% \end{macrocode}
-% The |subarray| environment uses inappropriate font dimensions.
-% \begin{macrocode}
- \cs_set:Npn \subarray #1
- {
- \vcenter
- \c_group_begin_token
- \Let@
- \restore@math@cr
- \default@tag
- \skip_set:Nn \baselineskip
- {
- \@@_stack_num_up:N \scriptstyle
- + \@@_stack_denom_down:N \scriptstyle
- }
- \lineskip \@@_stack_vgap:N \scriptstyle
- \lineskiplimit \lineskip
- \ialign
- \c_group_begin_token
- \token_if_eq_meaning:NNT c #1 { \hfil }
- \c_math_toggle_token
- \m@th
- \scriptstyle
- \c_parameter_token \c_parameter_token
- \c_math_toggle_token
- \hfil
- \crcr
- }
-%</XE>
-% \end{macrocode}
-% The roots need a complete rework.
-% \begin{macrocode}
-%<*LU>
- \cs_set_nopar:Npn \plainroot@ #1 \of #2
- {
- \bool_if:nTF
- {
- \@@_int_if_zero_p:n \uproot@ && \@@_int_if_zero_p:n \leftroot@
- }
- {
- \Uroot \c_@@_radical_sqrt_tl { #1 } { #2 }
- }
- {
- \hbox_set:Nn \rootbox
- {
- \c_math_toggle_token \m@th
- \scriptscriptstyle { #1 }
- \c_math_toggle_token
- }
- \mathchoice
- { \r@@@@t \displaystyle { #2 } }
- { \r@@@@t \textstyle { #2 } }
- { \r@@@@t \scriptstyle { #2 } }
- { \r@@@@t \scriptscriptstyle { #2 } }
- }
- \c_group_end_token
- }
-%</LU>
-% \end{macrocode}
-%
-% \begin{macrocode}
- \cs_set_nopar:Npn \r@@@@t #1 #2
-%<*LU>
- {
- \hbox_set:Nn \l_tmpa_box
- {
- \c_math_toggle_token \m@th
- #1 \mskip \uproot@ mu
- \c_math_toggle_token
- }
- \Uroot \c_@@_radical_sqrt_tl
- {
- \box_move_up:nn { \box_wd:N \l_tmpa_box }
- {
- \hbox:n
- {
- \c_math_toggle_token \m@th
- \mkern -\leftroot@ mu
- \box_use:N \rootbox
- \mkern \leftroot@ mu
- \c_math_toggle_token
- }
- }
- }
- { #2 }
- }
-%</LU>
-%<*XE>
- {
- \hbox_set:Nn \l_tmpa_box
- {
- \c_math_toggle_token \m@th
- #1 \sqrtsign { #2 }
- \c_math_toggle_token
- }
- \hbox_set:Nn \l_tmpb_box
- {
- \c_math_toggle_token \m@th
- #1 \mskip \uproot@ mu
- \c_math_toggle_token
- }
- \mkern -\leftroot@ mu
- \@@_mathstyle_scale:NnnN #1 { \kern } { \fontdimen 63 \g_@@_sqrt_font_cmd_tl } \g_@@_sqrt_font_cmd_tl
- \box_move_up:nn
- {
- \box_wd:N \l_tmpb_box + (\box_ht:N \l_tmpa_box - \box_dp:N \l_tmpa_box)
- * \number \fontdimen 65 \g_@@_sqrt_font_cmd_tl / 100
- }
- { \box_use:N \rootbox }
- \@@_mathstyle_scale:NnnN #1 { \kern } { \fontdimen 64 \g_@@_sqrt_font_cmd_tl } \g_@@_sqrt_font_cmd_tl
- \mkern \leftroot@ mu
- \box_use_drop:N \l_tmpa_box
- }
-%</XE>
-% \end{macrocode}
-%
-% \begin{macrocode}
-%</package>
-% \end{macrocode}
-
-\endinput
-
-% /©
-%
-% ------------------------------------------------
-% The UNICODE-MATH package <wspr.io/unicode-math>
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% Copyright 2006-2019 Will Robertson, LPPL "maintainer"
-% Copyright 2010-2017 Philipp Stephani
-% Copyright 2011-2017 Joseph Wright
-% Copyright 2012-2015 Khaled Hosny
-% ------------------------------------------------
-%
-% ©/
diff --git a/macros/latex/contrib/unicode-math/um-code-api.dtx b/macros/latex/contrib/unicode-math/um-code-api.dtx
deleted file mode 100644
index 69a6f5a031..0000000000
--- a/macros/latex/contrib/unicode-math/um-code-api.dtx
+++ /dev/null
@@ -1,43 +0,0 @@
-%%^^A%% um-code-api.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
-%%^^A%% The (underdeveloped) API to interface with the package internals.
-
-% \section{Programmers' interface}
-%
-% \begin{macrocode}
-%<*package>
-% \end{macrocode}
-%
-%
-% \begin{macro}{\unimath_get_mathstyle:}
-% This command expands to the currently math style.
-% \begin{macrocode}
-\cs_new:Nn \unimath_get_mathstyle:
- {
- \tl_use:N \l_@@_mathstyle_tl
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macrocode}
-%</package>
-% \end{macrocode}
-
-\endinput
-
-% /©
-%
-% ------------------------------------------------
-% The UNICODE-MATH package <wspr.io/unicode-math>
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% Copyright 2006-2019 Will Robertson, LPPL "maintainer"
-% Copyright 2010-2017 Philipp Stephani
-% Copyright 2011-2017 Joseph Wright
-% Copyright 2012-2015 Khaled Hosny
-% ------------------------------------------------
-%
-% ©/
diff --git a/macros/latex/contrib/unicode-math/um-code-compat.dtx b/macros/latex/contrib/unicode-math/um-code-compat.dtx
deleted file mode 100644
index 72ce5186da..0000000000
--- a/macros/latex/contrib/unicode-math/um-code-compat.dtx
+++ /dev/null
@@ -1,157 +0,0 @@
-%%^^A%% um-code-compat.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
-%%^^A%% Compatibility with 3rd party packages.
-
-% \section{Compatibility}
-%
-% \begin{macrocode}
-%<*package>
-% \end{macrocode}
-%
-%
-% \section{Patching/augmenting 3rd-party packages}
-%
-% \subsection{\pkg{url}}
-% Here we need to get \pkg{url} in a state such that
-% when it switches to math mode and enters \ascii\ characters, the maths
-% setup (i.e., \pkg{unicode-math}) doesn't remap the symbols into Plane 1.
-% Which is what \cs{symliteral} is intended to do.
-% This is the same as writing, e.g., |\def\UrlFont{\ttfamily\@@_switch_to:n{literal}}|
-% but activates automatically so documents that might change the \cs{url}
-% font through the standard interface still work correctly.
-% \begin{macrocode}
-\@@_after_package:nNn {url} \@@_patch_url:
- {
- \tl_put_left:Nn \Url@FormatString { \@@_switch_to:n {literal} }
- \tl_put_right:Nn \UrlSpecials
- {
- \do \` { \mathchar`\` }
- \do \' { \mathchar`\' }
- \do \$ { \mathchar`\$ }
- \do \& { \mathchar`\& }
- }
- }
-% \end{macrocode}
-%
-%
-% \subsection{\pkg{mathtools}}
-%
-% \pkg{mathtools}’s |\cramped| command and others that make use of its internal version use an incorrect font dimension.
-%
-% The \XeTeX\ version is pretty similar to the legacy version, only using the correct font dimensions.
-% Note we used `\verb|\XeTeXradical|' with the family 255 to be almost sure
-% that the radical rule width is not set. Former use of `\verb|\newfam|' had an
-% upsetting effect on legacy math alphabets.
-% \begin{macrocode}
-%<*XE>
-\@@_after_package:nNn { mathtools } \@@_patch_mathtools_A:
- {
- \cs_set_nopar:Npn \MT_cramped_internal:Nn ##1 ##2
- {
- \hbox_set:Nn \l_tmpa_box
- {
- \color@setgroup \c_math_toggle_token \m@th
- ##1
- \dim_zero:N \nulldelimiterspace
- \XeTeXradical 255 ~ 0 ~ { ##2 }
- \c_math_toggle_token \color@endgroup
- }
- \box_set_ht:Nn \l_tmpa_box
- {
- \box_ht:N \l_tmpa_box - \@@_radical_vgap:N ##1
- }
- \box_use_drop:N \l_tmpa_box
- }
- }
-%</XE>
-% \end{macrocode}
-%
-% \begin{macro}{\overbracket}
-% \begin{macro}{\underbracket}
-% \pkg{mathtools}’s |\overbracket| and |\underbracket| take optional
-% arguments and are defined in terms of rules, so we keep them, and rename
-% ours to |\Uoverbracket| and |\Uunderbracket|.
-%
-% Original definition used the height of |\braceld| which is not available
-% with Unicode fonts, so we are hard coding the $5/18$ex suggested by
-% \pkg{mathtools}’s documentation.
-% \begin{macrocode}
-\@@_after_package:nNn { mathtools } \@@_patch_mathtools_B:
- {
- \cs_set_eq:NN \MToverbracket \overbracket
- \cs_set_eq:NN \MTunderbracket \underbracket
-
- \AtBeginDocument
- {
- \msg_warning:nn { unicode-math } { mathtools-overbracket }
-
- \cs_set:Npn \downbracketfill ##1 ##2
- {
- \tl_set:Nn \l_MT_bracketheight_fdim {.27ex}
- \downbracketend {##1} {##2}
- \leaders \vrule \@height ##1 \@depth \z@ \hfill
- \downbracketend {##1} {##2}
- }
-
- \cs_set:Npn \upbracketfill ##1 ##2
- {
- \tl_set:Nn \l_MT_bracketheight_fdim {.27ex}
- \upbracketend {##1} {##2}
- \leaders \vrule \@height \z@ \@depth ##1 \hfill
- \upbracketend {##1} {##2}
- }
-
- \cs_set_eq:NN \Uoverbracket \overbracket
- \cs_set_eq:NN \Uunderbracket \underbracket
- \cs_set_eq:NN \overbracket \MToverbracket
- \cs_set_eq:NN \underbracket \MTunderbracket
- }
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\dblcolon}
-% \begin{macro}{\coloneqq}
-% \begin{macro}{\Coloneqq}
-% \begin{macro}{\eqqcolon}
-% \pkg{mathtools} defines several commands as combinations of colons and
-% other characters, but with meanings incompatible to \pkg{unicode-math}.
-% Thus we issue a warning. Note \pkg{mathtools} uses
-% \cmd{\providecommand} \cmd{\AtBeginDocument}.
-% \begin{macrocode}
-\@@_after_package:nNn { mathtools } \@@_patch_mathtools_C:
- {
- \msg_warning:nn { unicode-math } { mathtools-colon }
- \DeclareDocumentCommand \dblcolon { } { \Colon }
- \DeclareDocumentCommand \coloneqq { } { \coloneq }
- \DeclareDocumentCommand \Coloneqq { } { \Coloneq }
- \DeclareDocumentCommand \eqqcolon { } { \eqcolon }
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macrocode}
-%</package>
-% \end{macrocode}
-
-\endinput
-
-% /©
-%
-% ------------------------------------------------
-% The UNICODE-MATH package <wspr.io/unicode-math>
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% Copyright 2006-2019 Will Robertson, LPPL "maintainer"
-% Copyright 2010-2017 Philipp Stephani
-% Copyright 2011-2017 Joseph Wright
-% Copyright 2012-2015 Khaled Hosny
-% ------------------------------------------------
-%
-% ©/
diff --git a/macros/latex/contrib/unicode-math/um-code-epilogue.dtx b/macros/latex/contrib/unicode-math/um-code-epilogue.dtx
deleted file mode 100644
index 9c10ee0ddf..0000000000
--- a/macros/latex/contrib/unicode-math/um-code-epilogue.dtx
+++ /dev/null
@@ -1,420 +0,0 @@
-%%^^A%% um-code-epilogue.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
-%%^^A%% Assorted definitions to close up.
-
-% \section{Epilogue}
-%
-% \begin{macrocode}
-%<*package>
-% \end{macrocode}
-%
-% Lots of little things to tidy up.
-%
-% \subsection{Resolving Greek symbol name control sequences}
-%
-% \begin{macro}{\@@_resolve_greek:}
-% This macro defines \cmd\Alpha\dots\cmd\omega\ as their corresponding
-% Unicode (mathematical italic) character. Remember that the mapping
-% to upright or italic happens with the mathcode definitions, whereas these macros
-% just stand for the literal Unicode characters.
-% \begin{macrocode}
-\AtBeginDocument { \debug_suspend: \@@_resolve_greek: \debug_resume: }
-% \end{macrocode}
-% \begin{macrocode}
-\cs_new:Npn \@@_resolve_greek:
- {
- \clist_map_inline:nn
- {
- Alpha,Beta,Gamma,Delta,Epsilon,Zeta,Eta,Theta,Iota,Kappa,Lambda,
- alpha,beta,gamma,delta,epsilon,zeta,eta,theta,iota,kappa,lambda,
- Mu,Nu,Xi,Omicron,Pi,Rho,Sigma,Tau,Upsilon,Phi,Chi,Psi,Omega,
- mu,nu,xi,omicron,pi,rho,sigma,tau,upsilon,phi,chi,psi,omega,
- varTheta,varsigma,vartheta,varkappa,varrho,varpi,varepsilon,varphi
- }
- {
- \tl_set:cx {##1} { \exp_not:c { mit ##1 } }
- \tl_set:cx {up ##1} { \exp_not:N \symup \exp_not:c { ##1 } }
- \tl_set:cx {it ##1} { \exp_not:N \symit \exp_not:c { ##1 } }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \subsection{Unicode radicals}
-%
-% Make sure \cs{Uroot} is defined in the case where the \LaTeX{}
-% kernel doesn't make it available with its native name.
-%
-% \begin{macro}{\@@_redefine_radical:}
-% \begin{macrocode}
-\AtBeginDocument{ \@ifpackageloaded { amsmath } { } { \@@_redefine_radical: } }
-% \end{macrocode}
-%
-% \begin{macro}{\r@@t}
-% \darg{A mathstyle (for \cmd\mathpalette)}
-% \darg{Leading superscript for the sqrt sign}
-% A re-implementation of \LaTeX's hard-coded n-root sign using the appropriate \cmd\fontdimen s.
-% \begin{macrocode}
-%<*XE>
-\cs_new:Nn \@@_redefine_radical:
- {
- \cs_set_nopar:Npn \r@@@@t ##1 ##2
- {
- \hbox_set:Nn \l_tmpa_box
- {
- \c_math_toggle_token \m@th
- ##1 \sqrtsign { ##2 }
- \c_math_toggle_token
- }
- \@@_mathstyle_scale:NnnN ##1 { \kern } { \fontdimen 63 \g_@@_sqrt_font_cmd_tl } \g_@@_sqrt_font_cmd_tl
- \box_move_up:nn
- {
- (\box_ht:N \l_tmpa_box - \box_dp:N \l_tmpa_box) * \number \fontdimen 65 \g_@@_sqrt_font_cmd_tl / 100
- }
- { \box_use:N \rootbox }
- \@@_mathstyle_scale:NnnN ##1 { \kern } { \fontdimen 64 \g_@@_sqrt_font_cmd_tl } \g_@@_sqrt_font_cmd_tl
- \box_use_drop:N \l_tmpa_box
- }
- }
-%</XE>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\root}
-% Redefine this macro for \LuaTeX, which provides us a nice primitive to use.
-% \begin{macrocode}
-%<*LU>
-\cs_new:Nn \@@_redefine_radical:
- {
- \cs_set:Npn \root ##1 \of ##2
- {
- \Uroot \c_@@_radical_sqrt_tl { ##1 } { ##2 }
- }
- }
-%</LU>
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-%
-% \subsubsection{Active fractions}
-%
-% Active fractions can be set up independently of any maths font definition;
-% all it requires is a mapping from the Unicode input chars to the relevant
-% \LaTeX\ fraction declaration.
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_which_frac:nn
- {
- \bool_if:NTF \l_@@_smallfrac_bool {\tfrac} {\frac} {#1} {#2}
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Npn \@@_setup_active_frac:
- {
- \@@_mathactive_remap:nn {"2189} { \@@_which_frac:nn {0} {3} }
- \@@_mathactive_remap:nn {"2152} { \@@_which_frac:nn {1} {10} }
- \@@_mathactive_remap:nn {"2151} { \@@_which_frac:nn {1} {9} }
- \@@_mathactive_remap:nn {"215B} { \@@_which_frac:nn {1} {8} }
- \@@_mathactive_remap:nn {"2150} { \@@_which_frac:nn {1} {7} }
- \@@_mathactive_remap:nn {"2159} { \@@_which_frac:nn {1} {6} }
- \@@_mathactive_remap:nn {"2155} { \@@_which_frac:nn {1} {5} }
- \@@_mathactive_remap:nn {"00BC} { \@@_which_frac:nn {1} {4} }
- \@@_mathactive_remap:nn {"2153} { \@@_which_frac:nn {1} {3} }
- \@@_mathactive_remap:nn {"215C} { \@@_which_frac:nn {3} {8} }
- \@@_mathactive_remap:nn {"2156} { \@@_which_frac:nn {2} {5} }
- \@@_mathactive_remap:nn {"00BD} { \@@_which_frac:nn {1} {2} }
- \@@_mathactive_remap:nn {"2157} { \@@_which_frac:nn {3} {5} }
- \@@_mathactive_remap:nn {"215D} { \@@_which_frac:nn {5} {8} }
- \@@_mathactive_remap:nn {"2154} { \@@_which_frac:nn {2} {3} }
- \@@_mathactive_remap:nn {"00BE} { \@@_which_frac:nn {3} {4} }
- \@@_mathactive_remap:nn {"2158} { \@@_which_frac:nn {4} {5} }
- \@@_mathactive_remap:nn {"215A} { \@@_which_frac:nn {5} {6} }
- \@@_mathactive_remap:nn {"215E} { \@@_which_frac:nn {7} {8} }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\AtBeginDocument { \@@_setup_active_frac: }
-% \end{macrocode}
-%
-%
-% \subsection{Synonyms and all the rest}
-%
-% These are symbols with multiple names. Eventually to be taken care of
-% automatically by the maths characters database.
-% \begin{macrocode}
-\protected\def\to{\rightarrow}
-\protected\def\le{\leq}
-\protected\def\ge{\geq}
-\protected\def\neq{\ne}
-\protected\def\triangle{\mathord{\bigtriangleup}}
-\protected\def\bigcirc{\mdlgwhtcircle}
-\protected\def\circ{\vysmwhtcircle}
-\protected\def\bullet{\smblkcircle}
-\protected\def\mathyen{\yen}
-\protected\def\mathsterling{\sterling}
-\protected\def\diamond{\smwhtdiamond}
-\protected\def\emptyset{\varnothing}
-\protected\def\hbar{\hslash}
-\protected\def\land{\wedge}
-\protected\def\lor{\vee}
-\protected\def\owns{\ni}
-\protected\def\gets{\leftarrow}
-\protected\def\mathring{\ocirc}
-\protected\def\lnot{\neg}
-\protected\def\longdivision{\longdivisionsign}
-% \end{macrocode}
-% These are somewhat odd: (and their usual Unicode uprightness does not match their amssymb glyphs)
-% \begin{macrocode}
-\protected\def\backepsilon{\upbackepsilon}
-\protected\def\eth{\matheth}
-% \end{macrocode}
-% These are names that are `frozen' in HTML but have dumb names:
-% \begin{macrocode}
-\protected\def\dbkarow {\dbkarrow}
-\protected\def\drbkarow{\drbkarrow}
-\protected\def\hksearow{\hksearrow}
-\protected\def\hkswarow{\hkswarrow}
-% \end{macrocode}
-%
-% Due to the magic of OpenType math, big operators are automatically
-% enlarged when necessary. Since there isn't a separate unicode glyph for
-% `small integral', I'm not sure if there is a better way to do this:
-% \begin{macrocode}
-\protected\def\smallint{\mathop{\textstyle\int}\limits}
-% \end{macrocode}
-%
-% \begin{macro}{\underbar}
-% \begin{macrocode}
-\cs_set_eq:NN \latexe_underbar:n \underbar
-\renewcommand\underbar
- {
- \mode_if_math:TF \mathunderbar \latexe_underbar:n
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\colon}
-% Define \cs{colon} as a mathpunct `|:|'.
-% This is wrong: it should be \unichar{003A} {colon} instead!
-% We hope no-one will notice.
-% \begin{macrocode}
-\@ifpackageloaded{amsmath}
- {
- % define their own colon, perhaps I should just steal it. (It does look much better.)
- }
- {
- \cs_set_protected:Npn \colon
- {
- \bool_if:NTF \g_@@_literal_colon_bool {:} { \mathpunct{:} }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\digamma}
-% \begin{macro}{\Digamma}
-% I might end up just changing these in the table.
-% \begin{macrocode}
-\protected\def\digamma{\updigamma}
-\protected\def\Digamma{\upDigamma}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \paragraph{Symbols}
-%
-% \begin{macrocode}
-\cs_set_protected:Npn \| {\Vert}
-% \end{macrocode}
-%
-% \cs{mathinner} items:
-% \begin{macrocode}
-\cs_set_protected:Npn \mathellipsis {\mathinner{\unicodeellipsis}}
-\cs_set_protected:Npn \cdots {\mathinner{\unicodecdots}}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_set_eq:NN \@@_text_slash: \slash
-\cs_set_protected:Npn \slash
- {
- \mode_if_math:TF {\mathslash} {\@@_text_slash:}
- }
-% \end{macrocode}
-%
-%
-% \subsubsection{\cs{not}}
-% \label{sec:negations}
-%
-% The situation of \cs{not} symbol is currently messy, in Unicode it is defined
-% as a combining mark so naturally it should be treated as a math accent,
-% however \XeTeX\ does not correctly place it as it needs special
-% treatment compared to other accents.
-% Furthermore a math accent changes the
-% spacing of its nucleus, so \cs{not=} will be spaced as an ordinary not
-% relational symbol, which is undesired.
-%
-% Here modify \cs{not} to a macro that tries to use predefined negated symbols,
-% which would give better results in most cases, until there is more robust
-% solution in the engines.
-%
-% This code is based on an answer to a TeX -- Stack Exchange question by Enrico
-% Gregorio\footnote{\url{http://tex.stackexchange.com/a/47260/729}}.
-%
-% \begin{macro}{\not}
-% \begin{macrocode}
-\DeclareDocumentCommand \not {m}
- {
- \tl_set:Nx \l_@@_not_token_name_tl { \cs_to_str:N #1 }
- \tl_if_empty:NT \l_@@_not_token_name_tl
- {
- \tl_set:Nx \l_@@_not_token_name_tl { \token_to_str:N #1 }
- }
- \cs_if_exist:cTF { not \l_@@_not_token_name_tl }
- {
- \use:c { not \l_@@_not_token_name_tl }
- }
- {
- \cs_if_exist:cTF { n \l_@@_not_token_name_tl }
- {
- \use:c { n \l_@@_not_token_name_tl }
- }
- {
- \tl_if_eq:nnTF {#1} {$} { \notaccent{} } { \notaccent } #1
- }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\NewNegationCommand}
-% \begin{macro}{\RenewNegationCommand}
-% \begin{macrocode}
-\DeclareDocumentCommand \NewNegationCommand {mm}
- {
- \@@_set_negation_command:Nnn \cs_new_protected:cpn {#1} {#2}
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\DeclareDocumentCommand \RenewNegationCommand {mm}
- {
- \@@_set_negation_command:Nnn \cs_set_protected:cpn {#1} {#2}
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_set:Nn \@@_set_negation_command:Nnn
- {
- \tl_set:Nx \l_@@_not_token_name_tl { \cs_to_str:N #2 }
- \tl_if_empty:NT \l_@@_not_token_name_tl
- {
- \tl_set:Nx \l_@@_not_token_name_tl { \token_to_str:N #2 }
- }
- #1 { not \l_@@_not_token_name_tl } { #3 }
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macrocode}
-\NewNegationCommand { = } { \neq }
-\NewNegationCommand { < } { \nless }
-\NewNegationCommand { > } { \ngtr }
-\NewNegationCommand { \gets } { \nleftarrow }
-\NewNegationCommand { \simeq } { \nsime }
-\NewNegationCommand { \equal } { \ne }
-\NewNegationCommand { \le } { \nleq }
-\NewNegationCommand { \ge } { \ngeq }
-\NewNegationCommand { \greater } { \ngtr }
-\NewNegationCommand { \forksnot } { \forks }
-% \end{macrocode}
-%
-%
-% \subsubsection{Full-width remapping}
-%
-% While this could be done with the full mathcode remapping machinery used
-% for the other purposes, it would be fairly redundant with plain ASCII.
-% Worse, this would slow down what is already an inefficient part of \pkg{unicode-math}.
-%
-% Instead we use mathactive to do a plain old mapping from full-width to ASCII directly.
-%
-% Until I get requests for it, I've not included symbols or punctuation here.
-%
-% \paragraph{Numbers}
-%
-% \begin{macrocode}
-\int_step_inline:nnnn {0} {1} {9}
- {
- \@@_mathactive_remap:nn {"FF10+#1} {\char\int_eval:n{`\0+#1}}
- }
-% \end{macrocode}
-%
-% \paragraph{Letters}
-%
-% \begin{macrocode}
-\int_step_inline:nnnn {0} {1} {26}
- {
- \@@_mathactive_remap:nn {"FF21+#1} {\char\int_eval:n{`\A+#1}}
- \@@_mathactive_remap:nn {"FF41+#1} {\char\int_eval:n{`\a+#1}}
- }
-% \end{macrocode}
-%
-%
-% \subsection{Legacy characters}
-%
-% \begin{macro}{\@@_undeclare_symbol:N}
-% \begin{macrocode}
-\cs_new:Nn \@@_undeclare_symbol:N
- {
- \cs_set_protected:Npn #1
- { \@@_error:nx {legacy-char-not-supported} { \token_to_str:N #1 } }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% If you have better ideas about what to do here, please mention.
-% \begin{macrocode}
-\@@_undeclare_symbol:N \arrowvert
-\@@_undeclare_symbol:N \Arrowvert
-\@@_undeclare_symbol:N \bracevert
-% \end{macrocode}
-%
-% \section{A secret hook}
-% This will be executed after most if not all of the standard unicode-math setup.
-% \begin{macrocode}
-\AtBeginDocument{\g_@@_secret_hook_tl}
-% \end{macrocode}
-%
-% \begin{macrocode}
-%</package>
-% \end{macrocode}
-%
-% \section*{Fin}
-%
-% The official end of the package:
-% \begin{macrocode}
-%<package>\endinput
-% \end{macrocode}
-
-\endinput
-
-% /©
-%
-% ------------------------------------------------
-% The UNICODE-MATH package <wspr.io/unicode-math>
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% Copyright 2006-2019 Will Robertson, LPPL "maintainer"
-% Copyright 2010-2017 Philipp Stephani
-% Copyright 2011-2017 Joseph Wright
-% Copyright 2012-2015 Khaled Hosny
-% ------------------------------------------------
-%
-% ©/
diff --git a/macros/latex/contrib/unicode-math/um-code-fontopt.dtx b/macros/latex/contrib/unicode-math/um-code-fontopt.dtx
deleted file mode 100644
index acd1117e34..0000000000
--- a/macros/latex/contrib/unicode-math/um-code-fontopt.dtx
+++ /dev/null
@@ -1,326 +0,0 @@
-%%^^A%% um-code-fontopt.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
-%%^^A%% Keyval for `\setmathfont`
-
-% \section{Font loading options}
-%
-% \begin{macrocode}
-%<*package>
-% \end{macrocode}
-%
-% \subsection{Math version}
-% \begin{macrocode}
-\keys_define:nn {unicode-math}
- {
- version .code:n =
- {
- \tl_set:Nn \l_@@_mversion_tl {#1}
- \DeclareMathVersion {\l_@@_mversion_tl}
- }
- }
-% \end{macrocode}
-%
-% \subsection{Script and scriptscript font options}
-% \begin{macrocode}
-\keys_define:nn {unicode-math}
- {
- script-features .tl_set:N = \l_@@_script_features_tl ,
- sscript-features .tl_set:N = \l_@@_sscript_features_tl ,
- script-font .tl_set:N = \l_@@_script_font_tl ,
- sscript-font .tl_set:N = \l_@@_sscript_font_tl ,
- }
-% \end{macrocode}
-%
-% \subsection{Range processing}
-% \seclabel{rangeproc}
-%
-% Locally redefined all math symbol commands to their slot number prefixed by a quark.
-% Similary for the math classes.
-% \begin{macrocode}
-\keys_define:nn {unicode-math}
- {
- range .code:n =
- {
- \bool_if:NF \g_@@_main_font_defined_bool { \@@_error:n {no-main-font} }
- \bool_gset_false:N \g_@@_init_bool
- \@@_range_init:
- \group_begin:
- \seq_map_inline:Nn \g_@@_mathclasses_seq
- {
- \cs_set:Npn ##1 { \use_none:n \q_unicode_math \exp_not:N ##1 }
- }
- \cs_set:Npn \_@@_sym:nnn ##1 ##2 ##3
- {
- \cs_set:Npn ##2 { \use_none:n \q_unicode_math ##1 }
- }
- \@@_input_math_symbol_table:
- \@@_range_process:n {#1}
- \group_end:
- }
- }
-% \end{macrocode}
-%
-% \begin{macro}{\@@_range_init:}
-% Set processing functions if we're not defining the full Unicode math repetoire.
-% Math symbols are defined with \cmd\_@@_sym:nnn; see \secref{mathsymbol}
-% for the individual definitions
-% \begin{macrocode}
-\@@_cs_new:Nn \@@_range_init:
- {
- \int_gincr:N \g_@@_fam_int
- \tl_set:Nx \l_@@_symfont_label_tl {@@_fam\int_use:N\g_@@_fam_int}
- \cs_set_eq:NN \_@@_sym:nnn \@@_process_symbol_parse:nnn
- \cs_set_eq:NN \@@_remap_symbol:nnn \@@_remap_symbol_parse:nnn
- \cs_set_eq:NN \@@_maybe_init_alphabet:n \use_none:n
- \cs_set_eq:NN \@@_assign_delcode:nn \@@_assign_delcode_parse:nn
- \cs_set_eq:NN \@@_make_mathactive:nNN \@@_make_mathactive_parse:nNN
-% \end{macrocode}
-% Proceed by filling up the various `range' seqs according to the user options.
-% \begin{macrocode}
- \seq_gclear:N \g_@@_char_range_seq
- \seq_gclear:N \g_@@_mclass_range_seq
- \seq_gclear:N \g_@@_mathalph_seq
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_range_process:}
-% \begin{macrocode}
-\cs_new:Nn \@@_range_process:n
- {
- \clist_map_inline:nn {#1}
- {
- \@@_mathalph_decl:nF {##1} { \@@_range_decl:n {##1} }
- }
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_mathalph_decl:nF}
-% Possible forms of input:\\
-% |\mathscr|\\
-% |\mathscr->\mathup|\\
-% |\mathscr/{Latin}|\\
-% |\mathscr/{Latin}->\mathup|\\
-% Outputs:\\
-% |tmpa|: math style (\eg, |\mathscr|)\\
-% |tmpb|: alphabets (\eg, |Latin|)\\
-% |tmpc|: remap style (\eg, |\mathup|). Defaults to |tmpa|.
-%
-% The remap style can also be |\mathcal->stixcal|, which I marginally prefer
-% in the general case.
-% \begin{macrocode}
-\cs_new:Nn \@@_mathalph_decl:nF
- {
- \tl_set:Nn \l_@@_tmpa_tl {#1}
- \tl_clear:N \l_@@_tmpb_tl
- \tl_clear:N \l_@@_tmpc_tl
-
- \tl_if_in:NnT \l_@@_tmpa_tl {->}
- { \exp_after:wN \@@_split_arrow:w \l_@@_tmpa_tl \q_nil }
-
- \tl_if_in:NnT \l_@@_tmpa_tl {/}
- { \exp_after:wN \@@_split_slash:w \l_@@_tmpa_tl \q_nil }
-
- \tl_set:Nx \l_@@_tmpa_tl { \tl_to_str:N \l_@@_tmpa_tl }
- \exp_args:NNx \tl_remove_all:Nn \l_@@_tmpa_tl { \token_to_str:N \math }
- \exp_args:NNx \tl_remove_all:Nn \l_@@_tmpa_tl { \token_to_str:N \sym }
- \tl_trim_spaces:N \l_@@_tmpa_tl
-
- \tl_if_empty:NT \l_@@_tmpc_tl
- { \tl_set_eq:NN \l_@@_tmpc_tl \l_@@_tmpa_tl }
-
- \clist_if_in:NVT \g_@@_bad_alpha_clist \l_@@_tmpa_tl { \@@_error:n {range-not-bf-sf} }
-
- \prop_if_exist:cTF {g_@@_named_range_ \l_@@_tmpa_tl _prop}
- {
- \seq_gput_right:Nx \g_@@_mathalph_seq
- {
- { \exp_not:V \l_@@_tmpa_tl }
- { \exp_not:V \l_@@_tmpb_tl }
- { \exp_not:V \l_@@_tmpc_tl }
- }
- }
- {#2}
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_set:Npn \@@_split_arrow:w #1->#2 \q_nil
- {
- \tl_set:Nx \l_@@_tmpa_tl { \tl_trim_spaces:n {#1} }
- \tl_set:Nx \l_@@_tmpc_tl { \tl_trim_spaces:n {#2} }
- }
-% \end{macrocode}
-% \begin{macrocode}
-\cs_set:Npn \@@_split_slash:w #1/#2 \q_nil
- {
- \tl_set:Nx \l_@@_tmpa_tl { \tl_trim_spaces:n {#1} }
- \tl_set:Nx \l_@@_tmpb_tl { \tl_trim_spaces:n {#2} }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_range_decl:n}
-% \begin{macrocode}
-\cs_new_protected:Nn \@@_range_decl:n
- {
- \bool_lazy_and:nnTF { \tl_if_single_p:n {#1} } { \token_if_cs_p:N #1 }
- % IF A CSNAME:
- {
- \tl_if_in:VnTF #1 { \q_unicode_math }
- {
- \seq_if_in:NnTF \g__um_mathclasses_seq {#1}
- { \seq_gput_right:Nn \g_@@_mclass_range_seq {#1} }
- { \seq_gput_right:Nx \g_@@_char_range_seq { #1 } }
- }
- { \@@_error:nx {bad-cs-in-range} { \tl_to_str:n {#1} } }
- }
- % ELSE ASSUME NUMERIC INPUT:
- {
- \seq_gput_right:Nx \g_@@_char_range_seq { #1 }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\@@_if_char_spec:nNT}
-% \darg{Unicode character slot}
-% \darg{control sequence (math class)}
-% \darg{code to execute}
-% This macro expands to |#3|
-% if any of its arguments are contained in \cmd\g_@@_char_range_seq.
-% This list can contain either character ranges (for checking with |#1|) or control sequences.
-% These latter can either be the command name of a specific character, \emph{or} the math
-% type of one (\eg, \cmd\mathbin).
-%
-% Character ranges are passed to \cs{@@_if_char_spec:nNT}, which accepts input in the form shown in \tabref{ranges}.
-%
-% \begin{table}[htbp]
-% \centering
-% \topcaption{Ranges accepted by \cs{@@_if_char_spec:nNT}.}
-% \label{tab:ranges}
-% \begin{tabular}{>{\ttfamily}cc}
-% \textrm{Input} & Range \\
-% \hline
-% x & $r=x$ \\
-% x- & $r\geq x$ \\
-% -y & $r\leq y$ \\
-% x-y & $x \leq r \leq y$ \\
-% \end{tabular}
-% \end{table}
-%
-% We have three tests, performed sequentially in order of execution time.
-% Any test finding a match jumps directly to the end.
-% \begin{macrocode}
-\cs_new:Nn \@@_if_char_spec:nNT
- {
- % math class:
- \seq_if_in:NnT \g_@@_mclass_range_seq {#2}
- { \use_none_delimit_by_q_nil:w }
-
- % character slot:
- \seq_map_inline:Nn \g_@@_char_range_seq
- {
- \@@_int_if_slot_is_last_in_range:nnT {#1} {##1}
- { \seq_gremove_all:Nn \g_@@_char_range_seq {##1} }
-
- \@@_int_if_slot_in_range:nnT {#1} {##1}
- { \seq_map_break:n { \use_none_delimit_by_q_nil:w } }
- }
-
- % the following expands to nil if no match was found:
- \use_none:nnn
- \q_nil
- \use:n
- {
- \cs_if_eq:NNT #2 \mathalpha
- {
- \clist_put_right:Nx \l_@@_mathmap_charints_clist { \int_eval:n {#1} }
- }
- #3
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_int_if_slot_in_range:nnT}
-% Pretty basic comma separated range processing.
-% Donald Arseneau's \pkg{selectp} package has a cleverer technique.
-%
-% A `numrange' is like |-2,5-8,12,17-| (can be unsorted).
-%
-% Four cases, four argument types:
-% \begin{Verbatim}
-% input #2 #3 #4
-% "1 " [ 1] - [qn] - [ ] qs
-% "1- " [ 1] - [ ] - [qn-] qs
-% " -3" [ ] - [ 3] - [qn-] qs
-% "1-3" [ 1] - [ 3] - [qn-] qs
-% \end{Verbatim}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_int_if_slot_in_range:nnT
- {
- \@@_numrange_parse:nwT {#1} #2 - \q_nil - \q_stop {#3}
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_set:Npn \@@_numrange_parse:nwT #1 #2 - #3 - #4 \q_stop #5
- {
- \tl_if_empty:nTF {#4} { \int_compare:nT {#1=#2} {#5} }
- {
- \tl_if_empty:nTF {#3} { \int_compare:nT {#1>=#2} {#5} }
- {
- \tl_if_empty:nTF {#2} { \int_compare:nT {#1<=#3} {#5} }
- {
- \int_compare:nT {#1>=#2} { \int_compare:nT {#1<=#3} {#5} }
- } } }
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_int_if_slot_is_last_in_range:nnT
- {
- \@@_numrange_last_parse:nwT {#1} #2 - \q_nil - \q_stop {#3}
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_set:Npn \@@_numrange_last_parse:nwT #1 #2 - #3 - #4 \q_stop #5
- {
- \tl_if_empty:nTF {#4} { \int_compare:nT {#1==#2} {#5} }
- {
- \tl_if_empty:nTF {#2} { \int_compare:nT {#1==#3} {#5} }
- {
- \int_compare:nT {#1==#3} {#5}
- } }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-%</package>
-% \end{macrocode}
-
-\endinput
-
-% /©
-%
-% ------------------------------------------------
-% The UNICODE-MATH package <wspr.io/unicode-math>
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% Copyright 2006-2019 Will Robertson, LPPL "maintainer"
-% Copyright 2010-2017 Philipp Stephani
-% Copyright 2011-2017 Joseph Wright
-% Copyright 2012-2015 Khaled Hosny
-% ------------------------------------------------
-%
-% ©/
diff --git a/macros/latex/contrib/unicode-math/um-code-fontparam.dtx b/macros/latex/contrib/unicode-math/um-code-fontparam.dtx
deleted file mode 100644
index b801b6c0b9..0000000000
--- a/macros/latex/contrib/unicode-math/um-code-fontparam.dtx
+++ /dev/null
@@ -1,345 +0,0 @@
-%%^^A%% um-code-fontparam.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
-%%^^A%% Cross-platform interface for font parameters
-
-% \section{Cross-platform interface for font parameters}
-%
-% \begin{macrocode}
-%<*package>
-% \end{macrocode}
-%
-% \XeTeX\ and \LuaTeX\ have different interfaces for math font parameters.
-% We use \LuaTeX’s interface because it’s much better, but rename the primitives to be more \LaTeX3-like.
-% There are getter and setter commands for each font parameter.
-% The names of the parameters is derived from the \LuaTeX\ names, with underscores inserted between words.
-% For every parameter \cs{Umath\meta{\LuaTeX\ name}}, we define an expandable getter command \cs{@@_\meta{\LaTeX3 name}:N} and a protected setter command \cs{@@_set_\meta{\LaTeX3 name}:Nn}.
-% The getter command takes one of the style primitives (\cs{displaystyle} etc.)\ and expands to the font parameter, which is a \meta{dimension}.
-% The setter command takes a style primitive and a dimension expression, which is parsed with \cs{dim_eval:n}.
-%
-% Often, the mapping between font dimensions and font parameters is bijective, but there are cases which require special attention:
-% \begin{itemize}
-% \item Some parameters map to different dimensions in display and non-display styles.
-% \item Likewise, one parameter maps to different dimensions in non-cramped and cramped styles.
-% \item There are a few parameters for which \XeTeX\ doesn’t seem to provide \cs{fontdimen}s; in this case the getter and setter commands are left undefined.
-% \end{itemize}
-%
-% \paragraph{Cramped style tokens}
-% \LuaTeX\ has \cs{crampeddisplaystyle} etc.,\ but they are loaded as \cs{luatexcrampeddisplaystyle} etc.\ by the \pkg{luatextra} package.
-% \XeTeX, however, doesn’t have these primitives, and their syntax cannot really be emulated.
-% Nevertheless, we define these commands as quarks, so they can be used as arguments to the font parameter commands (but nowhere else).
-% Making these commands available is necessary because we need to make a distinction between cramped and non-cramped styles for one font parameter.
-%
-% \begin{macro}{\@@_new_cramped_style:N}
-% \darg{command}
-% Define \meta{command} as a new cramped style switch.
-% For \LuaTeX, simply rename the correspronding primitive if it is not
-% already defined.
-% For \XeTeX, define \meta{command} as a new quark.
-% \begin{macrocode}
-\cs_new_protected_nopar:Nn \@@_new_cramped_style:N
-%<XE> { \tl_const:Nn #1 { \use_none:n #1 } }
-%<LU> {
-%<LU> \cs_if_exist:NF #1
-%<LU> { \cs_new_eq:Nc #1 { luatex \cs_to_str:N #1 } }
-%<LU> }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\crampeddisplaystyle}
-% \begin{macro}{\crampedtextstyle}
-% \begin{macro}{\crampedscriptstyle}
-% \begin{macro}{\crampedscriptscriptstyle}
-% The cramped style commands.
-% \begin{macrocode}
-\@@_new_cramped_style:N \crampeddisplaystyle
-\@@_new_cramped_style:N \crampedtextstyle
-\@@_new_cramped_style:N \crampedscriptstyle
-\@@_new_cramped_style:N \crampedscriptscriptstyle
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \paragraph{Font dimension mapping}
-% Font parameters may differ between the styles.
-% \LuaTeX\ accounts for this by having the parameter primitives take a style token argument.
-% To replicate this behavior in \XeTeX, we have to map style tokens to specific combinations of font dimension numbers and math fonts (\cs{textfont} etc.).
-%
-% \begin{macro}{\@@_font_dimen:Nnnnn}
-% \darg{style token}
-% \darg{font dimen for display style}
-% \darg{font dimen for cramped display style}
-% \darg{font dimen for non-display styles}
-% \darg{font dimen for cramped non-display styles}
-% Map math style to \XeTeX\ math font dimension.
-% \meta{style token} must be one of the style switches (\cs{displaystyle}, \cs{crampeddisplaystyle}, \dots).
-% The other parameters are integer constants referring to font dimension numbers.
-% The macro expands to a dimension which contains the appropriate font dimension.
-% \begin{macrocode}
-%<*XE>
- \cs_new_nopar:Npn \@@_font_dimen:Nnnnn #1 #2 #3 #4 #5 {
- \fontdimen
- \cs_if_eq:NNTF #1 \displaystyle {
- #2 \textfont
- } {
- \cs_if_eq:NNTF #1 \crampeddisplaystyle {
- #3 \textfont
- } {
- \cs_if_eq:NNTF #1 \textstyle {
- #4 \textfont
- } {
- \cs_if_eq:NNTF #1 \crampedtextstyle {
- #5 \textfont
- } {
- \cs_if_eq:NNTF #1 \scriptstyle {
- #4 \scriptfont
- } {
- \cs_if_eq:NNTF #1 \crampedscriptstyle {
- #5 \scriptfont
- } {
- \cs_if_eq:NNTF #1 \scriptscriptstyle {
- #4 \scriptscriptfont
- } {
-% \end{macrocode}
-% Should we check here if the style is invalid?
-% \begin{macrocode}
- #5 \scriptscriptfont
- }
- }
- }
- }
- }
- }
- }
-% \end{macrocode}
-% Which family to use?
-% \begin{macrocode}
- 2~
- }
-%</XE>
-% \end{macrocode}
-% \end{macro}
-%
-% \paragraph{Font parameters}
-% This paragraph contains macros for defining the font parameter interface, as well as the definition for all font parameters known to \LuaTeX.
-%
-% \begin{macro}{\@@_font_param:nnnnn}
-% \darg{name}
-% \darg{font dimension for non-cramped display style}
-% \darg{font dimension for cramped display style}
-% \darg{font dimension for non-cramped non-display styles}
-% \darg{font dimension for cramped non-display styles}
-% This macro defines getter and setter functions for the font parameter \meta{name}.
-% The \LuaTeX\ font parameter name is produced by removing all underscores and prefixing the result with |Umath|.
-% The \XeTeX\ font dimension numbers must be integer constants.
-% \begin{macrocode}
-\cs_new_protected_nopar:Nn \@@_font_param:nnnnn
-%<*XE>
- {
- \@@_font_param_aux:ccnnnn { @@_ #1 :N } { @@_set_ #1 :Nn }
- { #2 } { #3 } { #4 } { #5 }
- }
-%</XE>
-%<*LU>
- {
- \tl_set:Nn \l_@@_tmpa_tl { #1 }
- \tl_remove_all:Nn \l_@@_tmpa_tl { _ }
- \@@_font_param_aux:ccc { @@_ #1 :N } { @@_set_ #1 :Nn }
- { Umath \l_@@_tmpa_tl }
- }
-%</LU>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_font_param:nnn}
-% \darg{name}
-% \darg{font dimension for display style}
-% \darg{font dimension for non-display styles}
-% This macro defines getter and setter functions for the font parameter \meta{name}.
-% The \LuaTeX\ font parameter name is produced by removing all underscores and prefixing the result with |Umath|.
-% The \XeTeX\ font dimension numbers must be integer constants.
-% \begin{macrocode}
-\cs_new_protected_nopar:Nn \@@_font_param:nnn
- {
- \@@_font_param:nnnnn { #1 } { #2 } { #2 } { #3 } { #3 }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_font_param:nn}
-% \darg{name}
-% \darg{font dimension}
-% This macro defines getter and setter functions for the font parameter \meta{name}.
-% The \LuaTeX\ font parameter name is produced by removing all underscores and prefixing the result with |Umath|.
-% The \XeTeX\ font dimension number must be an integer constant.
-% \begin{macrocode}
-\cs_new_protected_nopar:Nn \@@_font_param:nn
- {
- \@@_font_param:nnnnn { #1 } { #2 } { #2 } { #2 } { #2 }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_font_param:n}
-% \darg{name}
-% This macro defines getter and setter functions for the font parameter \meta{name}, which is considered unavailable in \XeTeX\@.
-% The \LuaTeX\ font parameter name is produced by removing all underscores and prefixing the result with |Umath|.
-% \begin{macrocode}
-\cs_new_protected_nopar:Nn \@@_font_param:n
-%<XE> { }
-%<LU> { \@@_font_param:nnnnn { #1 } { 0 } { 0 } { 0 } { 0 } }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_font_param_aux:NNnnnn}
-% \begin{macro}{\@@_font_param_aux:NNN}
-% Auxiliary macros for generating font parameter accessor macros.
-% \begin{macrocode}
-%<*XE>
-\cs_new_protected_nopar:Nn \@@_font_param_aux:NNnnnn
- {
- \cs_new_nopar:Npn #1 ##1
- {
- \@@_font_dimen:Nnnnn ##1 { #3 } { #4 } { #5 } { #6 }
- }
- \cs_new_protected_nopar:Npn #2 ##1 ##2
- {
- #1 ##1 \dim_eval:n { ##2 }
- }
- }
-\cs_generate_variant:Nn \@@_font_param_aux:NNnnnn { cc }
-%</XE>
-%<*LU>
-\cs_new_protected_nopar:Nn \@@_font_param_aux:NNN
- {
- \cs_new_nopar:Npn #1 ##1
- {
- #3 ##1
- }
- \cs_new_protected_nopar:Npn #2 ##1 ##2
- {
- #3 ##1 \dim_eval:n { ##2 }
- }
- }
-\cs_generate_variant:Nn \@@_font_param_aux:NNN { ccc }
-%</LU>
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% Now all font parameters that are listed in the \LuaTeX\ reference follow.
-% \begin{macrocode}
-\@@_font_param:nn { axis } { 15 }
-\@@_font_param:nn { operator_size } { 13 }
-\@@_font_param:n { fraction_del_size }
-\@@_font_param:nnn { fraction_denom_down } { 45 } { 44 }
-\@@_font_param:nnn { fraction_denom_vgap } { 50 } { 49 }
-\@@_font_param:nnn { fraction_num_up } { 43 } { 42 }
-\@@_font_param:nnn { fraction_num_vgap } { 47 } { 46 }
-\@@_font_param:nn { fraction_rule } { 48 }
-\@@_font_param:nn { limit_above_bgap } { 29 }
-\@@_font_param:n { limit_above_kern }
-\@@_font_param:nn { limit_above_vgap } { 28 }
-\@@_font_param:nn { limit_below_bgap } { 31 }
-\@@_font_param:n { limit_below_kern }
-\@@_font_param:nn { limit_below_vgap } { 30 }
-\@@_font_param:nn { over_delimiter_vgap } { 41 }
-\@@_font_param:nn { over_delimiter_bgap } { 38 }
-\@@_font_param:nn { under_delimiter_vgap } { 40 }
-\@@_font_param:nn { under_delimiter_bgap } { 39 }
-\@@_font_param:nn { overbar_kern } { 55 }
-\@@_font_param:nn { overbar_rule } { 54 }
-\@@_font_param:nn { overbar_vgap } { 53 }
-\@@_font_param:n { quad }
-\@@_font_param:nn { radical_kern } { 62 }
-\@@_font_param:nn { radical_rule } { 61 }
-\@@_font_param:nnn { radical_vgap } { 60 } { 59 }
-\@@_font_param:nn { radical_degree_before } { 63 }
-\@@_font_param:nn { radical_degree_after } { 64 }
-\@@_font_param:nn { radical_degree_raise } { 65 }
-\@@_font_param:nn { space_after_script } { 27 }
-\@@_font_param:nnn { stack_denom_down } { 35 } { 34 }
-\@@_font_param:nnn { stack_num_up } { 33 } { 32 }
-\@@_font_param:nnn { stack_vgap } { 37 } { 36 }
-\@@_font_param:nn { sub_shift_down } { 18 }
-\@@_font_param:nn { sub_shift_drop } { 20 }
-\@@_font_param:n { subsup_shift_down }
-\@@_font_param:nn { sub_top_max } { 19 }
-\@@_font_param:nn { subsup_vgap } { 25 }
-\@@_font_param:nn { sup_bottom_min } { 23 }
-\@@_font_param:nn { sup_shift_drop } { 24 }
-\@@_font_param:nnnnn { sup_shift_up } { 21 } { 22 } { 21 } { 22 }
-\@@_font_param:nn { supsub_bottom_max } { 26 }
-\@@_font_param:nn { underbar_kern } { 58 }
-\@@_font_param:nn { underbar_rule } { 57 }
-\@@_font_param:nn { underbar_vgap } { 56 }
-\@@_font_param:n { connector_overlap_min }
-% \end{macrocode}
-%
-% \subsection{Historical commands}
-%
-% \begin{macro}{\@@_fontdimen_to_percent:nN}
-% \begin{macro}{\@@_fontdimen_pc_to_pt:nN}
-% \darg{Font dimen number}
-% \darg{Font `variable'}
-% \cmd\fontdimen s |10|, |11|, and |65| aren't actually dimensions, they're percentage values given in units of |sp|.
-% \cs{@@_fontdimen_to_percent:nn} takes a font dimension number and outputs the decimal value of the associated parameter.
-% \cs{@@_fontdimen_pc_to_pt:nn} returns a dimension correspond to the current
-% font size relative proportion based on that percentage.
-% \begin{macrocode}
-\cs_set:Nn \@@_fontdimen_to_percent:nN
- {
- \fp_eval:n { \dim_to_decimal_in_sp:n { \fontdimen #1 #2 } / 100 }
- }
-\cs_new:Nn \@@_fontdimen_pc_to_pt:nN
- {
- \fp_eval:n { \dim_to_decimal_in_sp:n { \fontdimen #1 #2 } / 100 * \f@size }
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@@_mathstyle_scale:NnnN}
-% \darg{A math style (\cs{scriptstyle}, say)}
-% \darg{Macro that takes a non-delimited length argument (like \cmd\kern)}
-% \darg{Length control sequence to be scaled according to the math style}
-% \darg{Math font face to use for the lookups}
-% This macro is used to scale the lengths reported by \cmd\fontdimen\ according to the scale factor for script- and scriptscript-size objects.
-% \begin{macrocode}
-\cs_new:Nn \@@_mathstyle_scale:NnnN
- {
- \ifx#1\scriptstyle
- #2 \@@_fontdimen_to_percent:nN {10} #4 #3
- \else
- \ifx#1\scriptscriptstyle
- #2 \@@_fontdimen_to_percent:nN {11} #4 #3
- \else
- #2 #3
- \fi
- \fi
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-%</package>
-% \end{macrocode}
-
-\endinput
-
-% /©
-%
-% ------------------------------------------------
-% The UNICODE-MATH package <wspr.io/unicode-math>
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% Copyright 2006-2019 Will Robertson, LPPL "maintainer"
-% Copyright 2010-2017 Philipp Stephani
-% Copyright 2011-2017 Joseph Wright
-% Copyright 2012-2015 Khaled Hosny
-% ------------------------------------------------
-%
-% ©/
diff --git a/macros/latex/contrib/unicode-math/um-code-main.dtx b/macros/latex/contrib/unicode-math/um-code-main.dtx
deleted file mode 100644
index ff132044e0..0000000000
--- a/macros/latex/contrib/unicode-math/um-code-main.dtx
+++ /dev/null
@@ -1,700 +0,0 @@
-%%^^A%% um-code-main.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
-%%^^A%% Definition of `\setmainfont`.
-
-% \section{The main \cs{setmathfont} macro}
-%
-% \begin{macrocode}
-%<*package>
-% \end{macrocode}
-%
-% \begin{macro}{\@@_setmathfont:nn}
-% \darg{keyval options}
-% \darg{font name/file}
-% \begin{macrocode}
-\@@_cs_new:Nn \@@_setmathfont:nn
- {
-% \end{macrocode}
-% \begin{itemize}
-% \item Initialise all local variables.
-% \item
-% Erase any conception \LaTeX\ has of previously defined math symbol fonts;
-% this allows \cmd\DeclareSymbolFont\ at any point in the document.
-% \item
-% Grab the current size information:
-% (is this robust enough? Maybe it should be preceded by \cmd\normalsize).
-% The macro \cmd\S@\meta{size}
-% contains the definitions of the sizes used for maths letters, subscripts and subsubscripts in
-% \cmd\tf@size, \cmd\sf@size, and \cmd\ssf@size, respectively.
-% \end{itemize}
-% \begin{macrocode}
-
- \@@_init:n {#2}
- \cs_set_eq:NN \glb@currsize \scan_stop:
- \cs_if_exist:cF { S@ \f@size } { \calculate@math@sizes }
- \use:c { S@ \f@size }
-
- \keys_set_known:nnN {unicode-math} {#1} \l_@@_unknown_keys_clist
-
- \bool_if:NT \g_@@_init_bool \@@_fontspec_trial_font:
- \bool_if:NT \g_@@_init_bool \@@_declare_math_sizes:
-
- \@@_fontspec_select_font:
- \@@_setup_math_fam:
- \bool_if:NT \g_@@_init_bool
- {
- \@@_setup_legacy_fam_two:
- \@@_setup_legacy_fam_three:
- }
-
- \@@_input_math_symbol_table:
-
-% \end{macrocode}
-% \begin{itemize}
-% \item the `once-off' setup that doesn't need to be per-font
-% \item remap symbols that don't take their natural mathcode;
-% \item activate any symbols that need to be math-active;
-% \item assign delimiter codes for symbols that need to grow;
-% \item setup the maths alphabets (\cs{symbf} etc.) ---
-% this is an extensive part of the code; see Section~\ref{sec:mathmap};
-% \end{itemize}
-% \begin{macrocode}
- \bool_if:NT \g_@@_init_bool \@@_onceoff_setup:
- \@@_remap_symbols:
- \@@_setup_mathactives:
- \@@_setup_delcodes:
- \@@_setup_alphabets:
-
- %% TODO: what of the above should only be run for the "default"/"main" font?
-
- \bool_if:NTF \g_@@_init_bool
- {
- \bool_gset_true:N \g_@@_main_font_defined_bool
-%<LU> \@@_mathparam_store:
- \@@_log:n {default-math-font}
- }
- {
-%<LU> \@@_mathparam_restore:
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \paragraph{Fall-back font}
-%
-% Want to load Latin Modern Math if nothing else.
-% This needs to happen early so that all of the font-loading machinery executes before
-% the other `AtBeginDocument' code.
-% \begin{macrocode}
-\AtBeginDocument { \bool_if:NF \g_@@_main_font_defined_bool \@@_load_lm: }
-\@@_cs_new:Nn \@@_load_lm:
- {
- \setmathfont{latinmodern-math.otf}[BoldFont={latinmodern-math.otf}]
- }
-% \end{macrocode}
-%
-% \begin{macro}{\@@_init:n}
-% Reset local variables.
-% Default to defining the font for every math symbol character.
-% \begin{macrocode}
-\@@_cs_new:Nn \@@_init:n
- {
- \tl_set:Nn \l_@@_fontname_tl {#1}
- \bool_gset_true:N \g_@@_ot_math_bool
- \tl_set:Nn \l_@@_mversion_tl {normal}
- \tl_set:Nn \l_@@_symfont_label_tl {operators}
-
- \tl_set:Nn \l_@@_script_features_tl {Style=MathScript}
- \tl_set:Nn \l_@@_sscript_features_tl {Style=MathScriptScript}
- \tl_set_eq:NN \l_@@_script_font_tl \l_@@_fontname_tl
- \tl_set_eq:NN \l_@@_sscript_font_tl \l_@@_fontname_tl
-
- \bool_gset_true:N \g_@@_init_bool
- \seq_gclear:N \g_@@_char_range_seq
- \clist_clear:N \l_@@_mathmap_charints_clist
- \seq_gclear:N \g_@@_mathalph_seq
- \seq_clear:N \l_@@_missing_alph_seq
-
- \cs_set_eq:NN \_@@_sym:nnn \@@_process_symbol_noparse:nnn
- \cs_set_eq:NN \@@_remap_symbol:nnn \@@_remap_symbol_noparse:nnn
- \cs_set_eq:NN \@@_maybe_init_alphabet:n \@@_init_alphabet:n
- \cs_set_eq:NN \@@_assign_delcode:nn \@@_assign_delcode_noparse:nn
- \cs_set_eq:NN \@@_make_mathactive:nNN \@@_make_mathactive_noparse:nNN
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_declare_math_sizes:}
-% Set the math sizes according to the recommended font parameters.
-% \begin{macrocode}
-\tl_new:N \g_@@_main_font_cmd_tl
-\cs_new:Nn \@@_sf_size: { \@@_fontdimen_pc_to_pt:nN {10} \g_@@_trial_font }
-\cs_new:Nn \@@_ssf_size: { \@@_fontdimen_pc_to_pt:nN {11} \g_@@_trial_font }
-\@@_cs_new:Nn \@@_declare_math_sizes:
- {
- \fp_gset:Nn \g_@@_size_tfsf_fp { (\f@size + \@@_sf_size: )/2 }
- \fp_gset:Nn \g_@@_size_sfssf_fp { (\@@_sf_size: + \@@_ssf_size:)/2 }
-
- \dim_compare:nF { \fontdimen 10 \g_@@_trial_font == 0pt }
- {
- \DeclareMathSizes { \f@size } { \f@size } { \@@_sf_size: } { \@@_ssf_size: }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\@@_fontspec_trial_font:}
-% \begin{macrocode}
-\@@_cs_new:Nn \@@_fontspec_trial_font:
- {
- \tl_set:Nx \l_@@_font_keyval_tl
- {
-%<LU> Renderer = Basic,
- BoldItalicFont = {}, ItalicFont = {}, SmallCapsFont = {},
- Script = Math,
-%<LU> FontAdjustment = { \@@_luatex_copy_fontdimens: },
- \l_@@_unknown_keys_clist
- }
-
- \fontspec_set_family:Nxn \l_@@_trial_family_tl {\l_@@_font_keyval_tl} {\l_@@_fontname_tl}
-
- \group_begin:
- \fontfamily { \l_@@_trial_family_tl } \selectfont
- \exp_last_unbraced:NNo \@@_fontface_gset_eq:NN \g_@@_trial_font \font@name
- \fontspec_if_script:nF {math}
- {
- \@@_warning:n {not-ot-math}
- \bool_gset_false:N \g_@@_ot_math_bool
- \bool_gset_false:N \g_@@_init_bool
- }
- \group_end:
-
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_fontspec_select_font:}
-% \begin{macrocode}
-\@@_cs_new:Nn \@@_fontspec_select_font:
- {
- \tl_set:Nx \l_@@_font_keyval_tl
- {
-%<LU> Renderer = Basic,
- BoldItalicFont = {}, ItalicFont = {}, SmallCapsFont = {},
- Script = Math,
- SizeFeatures =
- {
- {
- Size = \fp_use:N \g_@@_size_tfsf_fp -
- } ,
- {
- Size = \fp_use:N \g_@@_size_sfssf_fp - \fp_use:N \g_@@_size_tfsf_fp ,
- Font = \l_@@_script_font_tl ,
- \l_@@_script_features_tl
- } ,
- {
- Size = - \fp_use:N \g_@@_size_sfssf_fp ,
- Font = \l_@@_sscript_font_tl ,
- \l_@@_sscript_features_tl
- }
- } ,
-%<LU> FontAdjustment = { \@@_luatex_copy_fontdimens: },
- \l_@@_unknown_keys_clist
- }
-
- \fontspec_set_family:Nxn \l_@@_family_tl {\l_@@_font_keyval_tl} {\l_@@_fontname_tl}
-
- \int_gincr:N \g_@@_fonts_used_int
- \group_begin:
- \fontfamily { \l_@@_family_tl } \selectfont
- \exp_last_unbraced:Nno \@@_fontface_gset_eq:cN {g_@@_mathfont_ \int_use:N \g_@@_fonts_used_int _font} \font@name
- \tl_gset:Nx \g_@@_curr_font_cmd_tl { \exp_not:c {g_@@_mathfont_ \int_use:N \g_@@_fonts_used_int _font} }
- \bool_if:NT \g_@@_init_bool
- {
- \exp_last_unbraced:NNo \@@_fontface_gset_eq:NN \l_@@_font \font@name
- }
- \group_end:
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-\tl_gset:Nn \g_@@_main_font_cmd_tl { \l_@@_font }
-\tl_gset:Nn \g_@@_sqrt_font_cmd_tl { \l_@@_font }
-\tl_gset:Nn \g_@@_prime_font_cmd_tl { \l_@@_font }
-% \end{macrocode}
-%
-% \begin{macro}{\@@_luatex_copy_fontdimens:}
-% This performs a once-off copy of the LuaTeX math params into XeTeX-like fontdimens.
-% While the list is somewhat comprehensive, these are really only for backwards compatibility
-% and to allow a little shared code. They shouldn't be relied upon, since LuaTeX users
-% might change the math params, which wouldn't be reflected in the fontdimens.
-% \begin{macrocode}
-%<*LU>
-\@@_cs_new:Nn \@@_luatex_copy_fontdimens:
- {
- \@@_fontdimen_from_param:nn {10} {ScriptPercentScaleDown}
- \@@_fontdimen_from_param:nn {11} {ScriptScriptPercentScaleDown}
- \@@_fontdimen_from_param:nn {15} {AxisHeight}
- \@@_fontdimen_from_param:nn {18} {SubscriptShiftDown}
- \@@_fontdimen_from_param:nn {20} {SubscriptBaselineDropMin}
- \@@_fontdimen_from_param:nn {21} {SuperscriptShiftUp}
- \@@_fontdimen_from_param:nn {22} {SuperscriptShiftUpCramped}
- \@@_fontdimen_from_param:nn {24} {SuperscriptBaselineDropMax}
- \@@_fontdimen_from_param:nn {28} {UpperLimitGapMin}
- \@@_fontdimen_from_param:nn {29} {UpperLimitBaselineRiseMin}
- \@@_fontdimen_from_param:nn {30} {LowerLimitGapMin}
- \@@_fontdimen_from_param:nn {31} {LowerLimitBaselineDropMin}
- \@@_fontdimen_from_param:nn {32} {StackTopShiftUp}
- \@@_fontdimen_from_param:nn {42} {FractionNumeratorShiftUp}
- \@@_fontdimen_from_param:nn {43} {FractionNumeratorDisplayStyleShiftUp}
- \@@_fontdimen_from_param:nn {44} {FractionDenominatorShiftDown}
- \@@_fontdimen_from_param:nn {45} {FractionDenominatorDisplayStyleShiftDown}
- \@@_fontdimen_from_param:nn {48} {FractionRuleThickness}
- }
-%</LU>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_setup_math_fam:}
-% \begin{macrocode}
-\@@_cs_new:Nn \@@_setup_math_fam:
- {
- \cs_if_exist:cF { sym \l_@@_symfont_label_tl }
- {
- \DeclareSymbolFont{\l_@@_symfont_label_tl}
- {\encodingdefault}{\l_@@_family_tl}{\mddefault}{\shapedefault}
- }
- \SetSymbolFont{\l_@@_symfont_label_tl}{\l_@@_mversion_tl}
- {\encodingdefault}{\l_@@_family_tl}{\mddefault}{\shapedefault}
-% \end{macrocode}
-% Set the bold math version.
-% \begin{macrocode}
- \str_if_eq:eeT {\l_@@_mversion_tl} {normal}
- {
- \SetSymbolFont{\l_@@_symfont_label_tl}{bold}
- {\encodingdefault}{\l_@@_family_tl}{\bfdefault}{\shapedefault}
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_setup_legacy_fam_two:}
-% \TeX\ won't load the same font twice at the same scale, so we need to magnify this one by an imperceptable amount.
-% Note that for extreme font sizes, this scaling value might need to be adjusted.
-% 1.0001 should be enough for reasonable use cases however.
-% \begin{macrocode}
-\@@_cs_new:Nn \@@_setup_legacy_fam_two:
- {
- \fontspec_set_family:Nxn \l_@@_fam_two_tl
- {
- \l_@@_font_keyval_tl,
- ScaleAgain = 1.0001,
- FontAdjustment =
- {
- \@@_copy_fontdimen:nnN { 8} {43} \g_@@_main_font_cmd_tl
- \@@_copy_fontdimen:nnN { 9} {42} \g_@@_main_font_cmd_tl
- \@@_copy_fontdimen:nnN {10} {32} \g_@@_main_font_cmd_tl
- \@@_copy_fontdimen:nnN {11} {45} \g_@@_main_font_cmd_tl
- \@@_copy_fontdimen:nnN {12} {44} \g_@@_main_font_cmd_tl
- \@@_copy_fontdimen:nnN {13} {21} \g_@@_main_font_cmd_tl
- \@@_copy_fontdimen:nnN {14} {21} \g_@@_main_font_cmd_tl
- \@@_copy_fontdimen:nnN {15} {22} \g_@@_main_font_cmd_tl
- \@@_copy_fontdimen:nnN {16} {18} \g_@@_main_font_cmd_tl
- \@@_copy_fontdimen:nnN {17} {18} \g_@@_main_font_cmd_tl
- \@@_copy_fontdimen:nnN {18} {24} \g_@@_main_font_cmd_tl
- \@@_copy_fontdimen:nnN {19} {20} \g_@@_main_font_cmd_tl
- \@@_copy_fontdimen:nnN {22} {15} \g_@@_main_font_cmd_tl
- \@@_zero_fontdimen:n {20} % delim1 = FractionDelimiterDisplaySize
- \@@_zero_fontdimen:n {21} % delim2 = FractionDelimiterSize
- }
- } {\l_@@_fontname_tl}
-
- \SetSymbolFont{symbols}{\l_@@_mversion_tl}
- {\encodingdefault}{\l_@@_fam_two_tl}{\mddefault}{\shapedefault}
-
- \str_if_eq:eeT {\l_@@_mversion_tl} {normal}
- {
- \SetSymbolFont{symbols}{bold}
- {\encodingdefault}{\l_@@_fam_two_tl}{\bfdefault}{\shapedefault}
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_setup_legacy_fam_three:}
-% Similarly, this font is shrunk by an imperceptable amount for \TeX\ to load it again.
-% \begin{macrocode}
-\@@_cs_new:Nn \@@_setup_legacy_fam_three:
- {
- \fontspec_set_family:Nxn \l_@@_fam_three_tl
- {
- \l_@@_font_keyval_tl,
- ScaleAgain = 0.9999,
- FontAdjustment = {
- \@@_copy_fontdimen:nnN { 8} {48} \g_@@_main_font_cmd_tl
- \@@_copy_fontdimen:nnN { 9} {28} \g_@@_main_font_cmd_tl
- \@@_copy_fontdimen:nnN {10} {30} \g_@@_main_font_cmd_tl
- \@@_copy_fontdimen:nnN {11} {29} \g_@@_main_font_cmd_tl
- \@@_copy_fontdimen:nnN {12} {31} \g_@@_main_font_cmd_tl
- \@@_zero_fontdimen:n {13}
- }
- } {\l_@@_fontname_tl}
-
- \SetSymbolFont{largesymbols}{\l_@@_mversion_tl}
- {\encodingdefault}{\l_@@_fam_three_tl}{\mddefault}{\shapedefault}
-
- \str_if_eq:eeT {\l_@@_mversion_tl} {normal}
- {
- \SetSymbolFont{largesymbols}{bold}
- {\encodingdefault}{\l_@@_fam_three_tl}{\bfdefault}{\shapedefault}
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_onceoff_setup:}
-% \begin{macrocode}
-\@@_cs_new:Nn \@@_onceoff_setup:
- {
- \@@_set_delcode:nnn {operators} {`\.} {0}
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{Functions for setting up symbols with mathcodes}
-% \seclabel{mathsymbol}
-%
-% \begin{macro}{\@@_process_symbol_noparse:nnn}
-% \begin{macro}{\@@_process_symbol_parse:nnn}
-% If the \feat{range} font feature has been used, then only
-% a subset of the Unicode glyphs are to be defined.
-% See \secref{rangeproc} for the code that enables this.
-% \begin{macrocode}
-\cs_set:Nn \@@_process_symbol_noparse:nnn
- {
- \@@_set_mathsymbol:nNNn {\l_@@_symfont_label_tl} #2 #3 {#1}
- }
-% \end{macrocode}
-% \begin{macrocode}
-\cs_set:Nn \@@_process_symbol_parse:nnn
- {
- \@@_if_char_spec:nNT {#1} {#3}
- {
- \@@_process_symbol_noparse:nnn {#1} {#2} {#3}
- }
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@@_remap_symbols:}
-% This function is used to define the mathcodes for those chars which should
-% be mapped to a different glyph than themselves.
-% \begin{macrocode}
-\@@_cs_new:Nn \@@_remap_symbols:
- {
- \@@_remap_symbol:nnn {`\-} {\mathbin} {"2212}
- \@@_remap_symbol:nnn {`\*} {\mathbin} {"02217}% text asterisk to "centred asterisk"
- \bool_if:NF \g_@@_literal_colon_bool
- {
- \@@_remap_symbol:nnn {`\:} {\mathrel} {"02236}% colon to ratio (i.e., punct to rel)
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_remap_symbol_noparse:nnn}
-% \begin{macro}{\@@_remap_symbol_parse:nnn}
-% Where |\@@_remap_symbol:nnn| is defined to be one of these two, depending
-% on the range setup:
-% \begin{macrocode}
-\cs_new:Nn \@@_remap_symbol_parse:nnn
- {
- \@@_if_char_spec:nNT {#3} {#2}
- { \@@_remap_symbol_noparse:nnn {#1} {#2} {#3} }
- }
-\cs_new:Nn \@@_remap_symbol_noparse:nnn
- {
- \clist_map_inline:nn {#1}
- { \@@_set_mathcode:nnnn {##1} {#2} {\l_@@_symfont_label_tl} {#3} }
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \subsection{Active math characters}
-%
-% There are more math active chars later in the subscript/superscript section.
-% But they don't need to be able to be typeset directly.
-%
-% \begin{macro}{\@@_setup_mathactives:}
-% TODO: if not an OpenType math font, we should ignore doing anything with primes.
-% This needs a revamped `range` feature, I think.
-% \begin{macrocode}
-\@@_cs_new:Nn \@@_setup_mathactives:
- {
- \@@_make_mathactive:nNN {"2032} \@@_prime_single_mchar \mathord
- \@@_make_mathactive:nNN {"2033} \@@_prime_double_mchar \mathord
- \@@_make_mathactive:nNN {"2034} \@@_prime_triple_mchar \mathord
- \@@_make_mathactive:nNN {"2057} \@@_prime_quad_mchar \mathord
- \@@_make_mathactive:nNN {"2035} \@@_backprime_single_mchar \mathord
- \@@_make_mathactive:nNN {"2036} \@@_backprime_double_mchar \mathord
- \@@_make_mathactive:nNN {"2037} \@@_backprime_triple_mchar \mathord
- \@@_make_mathactive:nNN {`\'} \mathstraightquote \mathord
- \@@_make_mathactive:nNN {`\`} \mathbacktick \mathord
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_make_mathactive:nNN}
-% Makes |#1| a mathactive char, and gives cs |#2| the meaning of mathchar |#1|
-% with class |#3|.
-% You are responsible for giving active |#1| a particular meaning!
-% \begin{macrocode}
-\cs_new:Nn \@@_make_mathactive_parse:nNN
- {
- \@@_if_char_spec:nNT {#1} #3
- { \@@_make_mathactive_noparse:nNN {#1} #2 #3 }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_make_mathactive_noparse:nNN
- {
- \@@_set_mathchar:NNnn #2 #3 {\l_@@_symfont_label_tl} {#1}
- \@@_char_gmake_mathactive:n {#1}
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsection{Delimiter codes}
-%
-% \begin{macro}{\@@_assign_delcode:nn}
-% \begin{macrocode}
-\cs_new:Nn \@@_assign_delcode_noparse:nn
- {
- \@@_set_delcode:nnn \l_@@_symfont_label_tl {#1} {#2}
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_assign_delcode_parse:nn
- {
- \@@_if_char_spec:nNT {#2} \@nil
- {
- \@@_assign_delcode_noparse:nn {#1} {#2}
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_assign_delcode:n}
-% Shorthand.
-% \begin{macrocode}
-\cs_new:Nn \@@_assign_delcode:n { \@@_assign_delcode:nn {#1} {#1} }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_setup_delcodes:}
-% Some symbols that aren't mathopen/mathclose still need to have delimiter codes assigned.
-% The list of vertical arrows may be incomplete.
-% On the other hand, many fonts won't support them all being stretchy.
-% And some of them are probably not meant to stretch, either. But adding them here doesn't hurt.
-% \begin{macrocode}
-\@@_cs_new:Nn \@@_setup_delcodes:
- {
- \@@_assign_delcode:nn {`\/} {\g_@@_slash_delimiter_usv}
- \@@_assign_delcode:nn {"2044} {\g_@@_slash_delimiter_usv} % fracslash
- \@@_assign_delcode:nn {"2215} {\g_@@_slash_delimiter_usv} % divslash
- \@@_assign_delcode:n {"005C} % backslash
- \@@_assign_delcode:nn {`\<} {"27E8} % angle brackets with ascii notation
- \@@_assign_delcode:nn {`\>} {"27E9} % angle brackets with ascii notation
- \@@_assign_delcode:n {"2191} % up arrow
- \@@_assign_delcode:n {"2193} % down arrow
- \@@_assign_delcode:n {"2195} % updown arrow
- \@@_assign_delcode:n {"219F} % up arrow twohead
- \@@_assign_delcode:n {"21A1} % down arrow twohead
- \@@_assign_delcode:n {"21A5} % up arrow from bar
- \@@_assign_delcode:n {"21A7} % down arrow from bar
- \@@_assign_delcode:n {"21A8} % updown arrow from bar
- \@@_assign_delcode:n {"21BE} % up harpoon right
- \@@_assign_delcode:n {"21BF} % up harpoon left
- \@@_assign_delcode:n {"21C2} % down harpoon right
- \@@_assign_delcode:n {"21C3} % down harpoon left
- \@@_assign_delcode:n {"21C5} % arrows up down
- \@@_assign_delcode:n {"21F5} % arrows down up
- \@@_assign_delcode:n {"21C8} % arrows up up
- \@@_assign_delcode:n {"21CA} % arrows down down
- \@@_assign_delcode:n {"21D1} % double up arrow
- \@@_assign_delcode:n {"21D3} % double down arrow
- \@@_assign_delcode:n {"21D5} % double updown arrow
- \@@_assign_delcode:n {"21DE} % up arrow double stroke
- \@@_assign_delcode:n {"21DF} % down arrow double stroke
- \@@_assign_delcode:n {"21E1} % up arrow dashed
- \@@_assign_delcode:n {"21E3} % down arrow dashed
- \@@_assign_delcode:n {"21E7} % up white arrow
- \@@_assign_delcode:n {"21E9} % down white arrow
- \@@_assign_delcode:n {"21EA} % up white arrow from bar
- \@@_assign_delcode:n {"21F3} % updown white arrow
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{(Big) operators}
-%
-% The engine does what is necessary to deal with big operators for us
-% automatically with \cmd\Umathchardef.
-% However, the limits aren't set automatically; that is, we want to define,
-% a la Plain \TeX\ \etc, |\def\int{\intop\nolimits}|, so there needs to be a
-% transformation from \cmd\int\ to \cmd\intop\ during the expansion of
-% \cmd\_@@_sym:nnn\ in the appropriate contexts.
-%
-% \begin{macro}{\l_@@_nolimits_tl}
-% This macro is a sequence containing those maths operators that require a
-% \cmd\nolimits\ suffix.
-% This list is used when processing |unicode-math-table.tex| to define such
-% commands automatically (see the macro \cs{@@_set_mathsymbol:nNNn}).
-% I've chosen essentially just the operators that look like integrals;
-% hopefully a better mathematician can help me out here.
-% I've a feeling that it's more useful \emph{not} to include the multiple
-% integrals such as $\iiiint$, but that might be a matter of preference.
-% \begin{macrocode}
-\tl_set:Nn \l_@@_nolimits_tl
- {
- \int\iint\iiint\iiiint\oint\oiint\oiiint
- \intclockwise\varointclockwise\ointctrclockwise\sumint
- \intbar\intBar\fint\cirfnint\awint\rppolint
- \scpolint\npolint\pointint\sqint\intlarhk\intx
- \intcap\intcup\upint\lowint
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{Radicals}
-%
-% \begin{macro}{\l_@@_radicals_tl}
-% The radicals are organised in \cs{@@_set_mathsymbol:nNNn}.
-% We organise radicals in the same way as nolimits-operators.
-% (\cs{cuberoot} and \cs{fourthroot}, don't seem to behave as proper radicals.)
-% \begin{macrocode}
-\tl_set:Nn \l_@@_radicals_tl {\sqrt \longdivision \cuberoot \fourthroot}
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{Fontdimens}
-%
-% \begin{macrocode}
-%<*LU>
-% \end{macrocode}
-%
-% \begin{macro}{\@@_mathparam_restore:}
-% \cs{glb@settings} might not be necessary but is included for symmetry.
-% If the maths font were to be loaded later it would clobber our mathparam settings, so
-% this seems like a sensible move.
-% \begin{macrocode}
-\@@_cs_new:Nn \@@_mathparam_restore:
- {
- \glb@settings
- \tl_use:N \g_@@_mathparam_settings_tl
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_mathparam_store:}
-% \cs{glb@settings} is called to force maths fonts loading \emph{now} so the mathparams
-% are up-to-date.
-% \begin{macrocode}
-\@@_cs_new:Nn \@@_mathparam_store:
- {
- \glb@settings
- \tl_gset:Nx \g_@@_mathparam_settings_tl
- {
- \@@_mathparam_store_aux:N \displaystyle
- \@@_mathparam_store_aux:N \textstyle
- \@@_mathparam_store_aux:N \scriptstyle
- \@@_mathparam_store_aux:N \scriptscriptstyle
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_set:Nn \@@_mathparam_store_aux:N
- {
- \Umathquad #1 = \the \Umathquad #1 \scan_stop:
- \Umathaxis #1 = \the \Umathaxis #1 \scan_stop:
- \Umathoperatorsize #1 = \the \Umathoperatorsize #1 \scan_stop:
- \Umathoverbarkern #1 = \the \Umathoverbarkern #1 \scan_stop:
- \Umathoverbarrule #1 = \the \Umathoverbarrule #1 \scan_stop:
- \Umathoverbarvgap #1 = \the \Umathoverbarvgap #1 \scan_stop:
- \Umathunderbarkern #1 = \the \Umathunderbarkern #1 \scan_stop:
- \Umathunderbarrule #1 = \the \Umathunderbarrule #1 \scan_stop:
- \Umathunderbarvgap #1 = \the \Umathunderbarvgap #1 \scan_stop:
- \Umathradicalkern #1 = \the \Umathradicalkern #1 \scan_stop:
- \Umathradicalrule #1 = \the \Umathradicalrule #1 \scan_stop:
- \Umathradicalvgap #1 = \the \Umathradicalvgap #1 \scan_stop:
- \Umathradicaldegreebefore #1 = \the \Umathradicaldegreebefore #1 \scan_stop:
- \Umathradicaldegreeafter #1 = \the \Umathradicaldegreeafter #1 \scan_stop:
- \Umathradicaldegreeraise #1 = \the \Umathradicaldegreeraise #1 \scan_stop:
- \Umathstackvgap #1 = \the \Umathstackvgap #1 \scan_stop:
- \Umathstacknumup #1 = \the \Umathstacknumup #1 \scan_stop:
- \Umathstackdenomdown #1 = \the \Umathstackdenomdown #1 \scan_stop:
- \Umathfractionrule #1 = \the \Umathfractionrule #1 \scan_stop:
- \Umathfractionnumvgap #1 = \the \Umathfractionnumvgap #1 \scan_stop:
- \Umathfractionnumup #1 = \the \Umathfractionnumup #1 \scan_stop:
- \Umathfractiondenomvgap #1 = \the \Umathfractiondenomvgap #1 \scan_stop:
- \Umathfractiondenomdown #1 = \the \Umathfractiondenomdown #1 \scan_stop:
- \Umathfractiondelsize #1 = \the \Umathfractiondelsize #1 \scan_stop:
- \Umathlimitabovevgap #1 = \the \Umathlimitabovevgap #1 \scan_stop:
- \Umathlimitabovebgap #1 = \the \Umathlimitabovebgap #1 \scan_stop:
- \Umathlimitabovekern #1 = \the \Umathlimitabovekern #1 \scan_stop:
- \Umathlimitbelowvgap #1 = \the \Umathlimitbelowvgap #1 \scan_stop:
- \Umathlimitbelowbgap #1 = \the \Umathlimitbelowbgap #1 \scan_stop:
- \Umathlimitbelowkern #1 = \the \Umathlimitbelowkern #1 \scan_stop:
- \Umathoverdelimitervgap #1 = \the \Umathoverdelimitervgap #1 \scan_stop:
- \Umathoverdelimiterbgap #1 = \the \Umathoverdelimiterbgap #1 \scan_stop:
- \Umathunderdelimitervgap #1 = \the \Umathunderdelimitervgap #1 \scan_stop:
- \Umathunderdelimiterbgap #1 = \the \Umathunderdelimiterbgap #1 \scan_stop:
- \Umathsubshiftdrop #1 = \the \Umathsubshiftdrop #1 \scan_stop:
- \Umathsubshiftdown #1 = \the \Umathsubshiftdown #1 \scan_stop:
- \Umathsupshiftdrop #1 = \the \Umathsupshiftdrop #1 \scan_stop:
- \Umathsupshiftup #1 = \the \Umathsupshiftup #1 \scan_stop:
- \Umathsubsupshiftdown #1 = \the \Umathsubsupshiftdown #1 \scan_stop:
- \Umathsubtopmax #1 = \the \Umathsubtopmax #1 \scan_stop:
- \Umathsupbottommin #1 = \the \Umathsupbottommin #1 \scan_stop:
- \Umathsupsubbottommax #1 = \the \Umathsupsubbottommax #1 \scan_stop:
- \Umathsubsupvgap #1 = \the \Umathsubsupvgap #1 \scan_stop:
- \Umathspaceafterscript #1 = \the \Umathspaceafterscript #1 \scan_stop:
- \Umathconnectoroverlapmin #1 = \the \Umathconnectoroverlapmin #1 \scan_stop:
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-%</LU>
-% \end{macrocode}
-%
-% \begin{macrocode}
-%</package>
-% \end{macrocode}
-
-\endinput
-
-% /©
-%
-% ------------------------------------------------
-% The UNICODE-MATH package <wspr.io/unicode-math>
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% Copyright 2006-2019 Will Robertson, LPPL "maintainer"
-% Copyright 2010-2017 Philipp Stephani
-% Copyright 2011-2017 Joseph Wright
-% Copyright 2012-2015 Khaled Hosny
-% ------------------------------------------------
-%
-% ©/
diff --git a/macros/latex/contrib/unicode-math/um-code-mathmap.dtx b/macros/latex/contrib/unicode-math/um-code-mathmap.dtx
deleted file mode 100644
index e55fe07c2c..0000000000
--- a/macros/latex/contrib/unicode-math/um-code-mathmap.dtx
+++ /dev/null
@@ -1,595 +0,0 @@
-%%^^A%% um-code-mathmap.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
-%%^^A%% Setup of symbol alphabets.
-
-% \section{Defining the math alphabets per style}
-% \label{sec:mathmap}
-%
-% \begin{macrocode}
-%<*package>
-% \end{macrocode}
-%
-% \begin{macro}{\@@_setup_alphabets:}
-% This function is called within \cs{setmathfont} to configure the
-% mapping between characters inside math styles. Three modes:
-% \begin{description}
-% \item[IMPLICIT] No ranges specified, set up everything
-% \item[EXPLICIT] Some ranges specified, set up what is requested only
-% \item[INHERIT] Of the slots in the ranges specified, compare against
-% slots in each styled alphabet and only set up those needed
-% \end{description}
-% The INHERIT mode saves less time than I was hoping for but is still beneficial
-% in simple cases.
-% \begin{macrocode}
-\@@_cs_new:Nn \@@_setup_alphabets:
- {
- \bool_if:NTF \g_@@_init_bool { \@@_setup_alphabets_implicit: }
- {
- \seq_if_empty:NF \g_@@_mathalph_seq { \@@_setup_alphabets_explicit: }
- \clist_if_empty:NF \l_@@_mathmap_charints_clist { \@@_setup_alphabets_inherit: }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{ \@@_setup_alphabets_implicit:}
-% \begin{macrocode}
-\@@_cs_new:Nn \@@_setup_alphabets_implicit:
- {
- \@@_log:n {setup-implicit}
- \seq_gset_eq:NN \g_@@_mathalph_seq \g_@@_default_mathalph_seq
- \bool_set_true:N \l_@@_implicit_alph_bool
- \@@_maybe_init_alphabet:n {sf}
- \@@_maybe_init_alphabet:n {bf}
- \@@_maybe_init_alphabet:n {bfsf}
- \cs_set_eq:NN \@@_set_mathalphabet_char:nnn \@@_mathmap_noparse:nnn
- \cs_set_eq:NN \@@_map_char_single:nn \@@_map_char_noparse:nn
- \@@_mathalph_map:
- \seq_if_empty:NF \l_@@_missing_alph_seq { \@@_log:n { missing-alphabets } }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{ \@@_setup_alphabets_explicit:}
-% \begin{macrocode}
-\@@_cs_new:Nn \@@_setup_alphabets_explicit:
- {
- \@@_log:n {setup-explicit}
- \bool_set_false:N \l_@@_implicit_alph_bool
- \cs_set_eq:NN \@@_set_mathalphabet_char:nnn \@@_mathmap_noparse:nnn
- \cs_set_eq:NN \@@_map_char_single:nn \@@_map_char_noparse:nn
- \@@_mathalph_map:
- \seq_if_empty:NF \l_@@_missing_alph_seq { \@@_log:n { missing-alphabets } }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{ \@@_setup_alphabets_inherit:}
-% \begin{macrocode}
-\@@_cs_new:Nn \@@_setup_alphabets_inherit:
- {
- \seq_gclear:N \g_@@_mathalph_seq
- \seq_map_inline:Nn \g_@@_default_mathalph_seq
- {
- \tl_set:No \l_@@_style_tl { \use_i:nnn ##1 }
- \clist_set:No \l_@@_alphabet_clist { \use_ii:nnn ##1 }
-
- \clist_map_inline:Nn \l_@@_alphabet_clist
- {
- \clist_if_exist:cT {g_@@_named_slots_ \l_@@_style_tl _ ####1 _clist}
- {
- \clist_map_inline:cn {g_@@_named_slots_ \l_@@_style_tl _ ####1 _clist}
- {
- \clist_map_inline:Nn \l_@@_mathmap_charints_clist
- {
- \@@_int_if_slot_in_range:nnT {################1} {########1}
- {
- \seq_gput_right:Nn \g_@@_mathalph_seq {##1}
- \clist_map_break:n { \clist_map_break:n { \clist_map_break: } }
- }
- }
- }
- }
- }
- }
-
- \cs_set_eq:NN \@@_set_mathalphabet_char:nnn \@@_mathmap_parse:nnn
- \cs_set_eq:NN \@@_map_char_single:nn \@@_map_char_parse:nn
- \@@_mathalph_map:
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_mathalph_map:}
-% \begin{macrocode}
-\cs_set:Nn \@@_mathalph_map:
- {
- \seq_map_inline:Nn \g_@@_mathalph_seq
- {
- \tl_set:No \l_@@_style_tl { \use_i:nnn ##1 }
- \clist_set:No \l_@@_alphabet_clist { \use_ii:nnn ##1 }
- \tl_set:No \l_@@_remap_style_tl { \use_iii:nnn ##1 }
-
- % If no set of alphabets is defined:
- \clist_if_empty:NT \l_@@_alphabet_clist
- {
- \cs_set_eq:NN \@@_maybe_init_alphabet:n \@@_init_alphabet:n
- \prop_get:cnN { g_@@_named_range_ \l_@@_style_tl _prop }
- { default-alpha } \l_@@_alphabet_clist
- }
-
- \@@_check_math_alphabet:
- \@@_setup_math_alphabet:
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_check_math_alphabet:}
-% First check that at least one of the alphabets for the font shape is defined
-% (this process is fast) \dots
-% \begin{macrocode}
-\cs_new:Nn \@@_check_math_alphabet:
- {
- \clist_map_inline:Nn \l_@@_alphabet_clist
- {
- \tl_set:Nn \l_@@_alphabet_tl {##1}
- \@@_if_alphabet_exists:nnTF \l_@@_style_tl \l_@@_alphabet_tl
- {
- \str_if_eq:eeTF {\l_@@_alphabet_tl} {misc}
- {
- \@@_maybe_init_alphabet:n \l_@@_style_tl
- \clist_map_break:
- }
- {
- \@@_glyph_if_exist:NnT \g_@@_curr_font_cmd_tl
- { \@@_to_usv:nn {\l_@@_style_tl} {\l_@@_alphabet_tl} }
- {
- \@@_maybe_init_alphabet:n \l_@@_style_tl
- \clist_map_break:
- }
- }
- }
- {
- \msg_warning:nnx {unicode-math} {no-alphabet}
- { \l_@@_style_tl / \l_@@_alphabet_tl }
- }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_setup_math_alphabet:}
-% \dots and then loop through them defining the individual ranges:
-% (currently this process is slow)
-% \begin{macrocode}
-\@@_cs_new:Nn \@@_setup_math_alphabet:
- {
- \clist_map_inline:Nn \l_@@_alphabet_clist
- {
- \tl_set:Nx \l_@@_alphabet_tl { \tl_trim_spaces:n {##1} }
-
-%<debug>\@@_debug:n {_setup_math_alphabet:~\l_@@_style_tl/\l_@@_alphabet_tl}
-
- \@@_if_alphabet_exists:nnT {\l_@@_style_tl} {\l_@@_alphabet_tl}
- {
- \exp_args:No \tl_if_eq:nnTF \l_@@_alphabet_tl {misc}
- {
- \@@_log:nx {setup-alph} {sym \l_@@_style_tl~(\l_@@_alphabet_tl)}
- \@@_alphabet_config:nnn {\l_@@_style_tl} {\l_@@_alphabet_tl} {\l_@@_remap_style_tl}
- }
- {
- \@@_glyph_if_exist:NnTF \g_@@_curr_font_cmd_tl { \@@_to_usv:nn {\l_@@_remap_style_tl} {\l_@@_alphabet_tl} }
- {
- \@@_log:nx {setup-alph} {sym \l_@@_style_tl~(\l_@@_alphabet_tl)}
- \@@_alphabet_config:nnn {\l_@@_style_tl} {\l_@@_alphabet_tl} {\l_@@_remap_style_tl}
- }
- {
- \bool_if:NTF \l_@@_implicit_alph_bool
- {
- \seq_put_right:Nx \l_@@_missing_alph_seq
- {
- \@backslashchar sym \l_@@_style_tl \space
- (\tl_use:c{c_@@_math_alphabet_name_ \l_@@_alphabet_tl _tl})
- }
- }
- {
- \@@_alphabet_config:nnn {\l_@@_style_tl} {\l_@@_alphabet_tl} {up}
- }
- }
- }
- }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% Each alphabet style needs to be configured.
-% This happens in Section~\ref{sec:setupalphabets}.
-% \begin{macrocode}
-\cs_new:Nn \@@_new_alphabet_config:nnn
- {
- \prop_if_exist:cF {g_@@_named_range_#1_prop}
- { \@@_warning:nnn {no-named-range} {#1} {#2} }
-
-
- \prop_gput:cnn {g_@@_named_range_#1_prop} { alpha_tl }
- {
- \prop_item:cn {g_@@_named_range_#1_prop} { alpha_tl } {#2}
- }
- % Q: do I need to bother removing duplicates?
-
-% \end{macrocode}
-% Create list of all chars defined in this named range:
-% \begin{macrocode}
- \cs_new:cn { @@_config_#1_#2:n }
- {
- \clist_gclear_new:c {g_@@_named_slots_#1_#2_clist}
- \tl_set:Nn \l_@@_curr_named_slot { g_@@_named_slots_#1_#2_clist }
- #3
- \clist_gremove_duplicates:c {g_@@_named_slots_#1_#2_clist}
- }
-
- }
-% \end{macrocode}
-% \begin{macrocode}
-\cs_new:Nn \@@_alphabet_config:nnn
- {
- \use:c {@@_config_#1_#2:n} {#3}
- }
-% \end{macrocode}
-% \begin{macrocode}
-\prg_new_conditional:Nnn \@@_if_alphabet_exists:nn {T,TF}
- {
- \cs_if_exist:cTF {@@_config_#1_#2:n}
- \prg_return_true: \prg_return_false:
- }
-% \end{macrocode}
-%
-% \subsection{Mapping `naked’ math characters}
-%
-% Before we show the definitions of the alphabet mappings using the functions
-% |\@@_alphabet_config:nnn \l_@@_style_tl {##1} {...}|, we first want to define some functions
-% to be used inside them to actually perform the character mapping.
-%
-% \subsubsection{Functions}
-%
-% \begin{macro}{\@@_map_char_single:nn}
-% Wrapper for |\@@_map_char_noparse:nn| or |\@@_map_char_parse:nn|
-% depending on the context.
-%
-% \begin{macro}{\@@_map_char_noparse:nn}
-% \begin{macro}{\@@_map_char_parse:nn}
-% \begin{macrocode}
-\cs_new:Nn \@@_map_char_noparse:nn
- {
- \@@_set_mathcode:nnnn {#1} {\mathalpha} {\l_@@_symfont_label_tl} {#2}
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_map_char_parse:nn
- {
- \@@_if_char_spec:nNT {#1} {\mathalpha}
- { \@@_map_char_noparse:nn {#1}{#2} }
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@@_map_char_single:nnn}
-% \darg{char name (`dotlessi’)}
-% \darg{from alphabet(s)}
-% \darg{to alphabet}
-% Logical interface to \cs{@@_map_char_single:nn}.
-% \begin{macrocode}
-\cs_new:Nn \@@_map_char_single:nnn
- {
- \@@_map_char_single:nn { \@@_to_usv:nn {#1} {#3} }
- { \@@_to_usv:nn {#2} {#3} }
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\@@_map_chars_range:nnnn}
-% \darg{Number of chars (26)}
-% \darg{From style, one or more (it)}
-% \darg{To style (up)}
-% \darg{Alphabet name (Latin)}
-% First the function with numbers:
-% \begin{macrocode}
-\cs_set:Nn \@@_map_chars_range:nnn
- {
- \int_step_inline:nnnn {0} {1} {#1-1}
- { \@@_map_char_single:nn {#2+##1} {#3+##1} }
-
- \clist_gput_right:cx { \l_@@_curr_named_slot }
- { \int_eval:n { #3 } - \int_eval:n { #3 + #1-1 } }
- }
-% \end{macrocode}
-% And the wrapper with names:
-% \begin{macrocode}
-\cs_new:Nn \@@_map_chars_range:nnnn
- {
- \@@_map_chars_range:nnn {#1} { \@@_to_usv:nn {#2} {#4} }
- { \@@_to_usv:nn {#3} {#4} }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \subsubsection{Functions for `normal’ alphabet symbols}
-%
-% \begin{macro}{\@@_set_normal_char:nnn}
-% \begin{macrocode}
-\cs_set:Nn \@@_set_normal_char:nnn
- {
- \@@_usv_if_exist:nnT {#3} {#1}
- {
- \clist_map_inline:nn {#2}
- {
- \@@_set_mathalphabet_pos:nnnn {normal} {#1} {##1} {#3}
- \@@_map_char_single:nnn {##1} {#3} {#1}
-
- \clist_gput_right:cx {\l_@@_curr_named_slot}
- { \int_eval:n { \@@_to_usv:nn {#3} {#1} } }
- }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_set_normal_Latin:nn
- {
- \clist_map_inline:nn {#1}
- {
- \@@_set_mathalphabet_Latin:nnn {normal} {##1} {#2}
- \@@_map_chars_range:nnnn {26} {##1} {#2} {Latin}
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_set_normal_latin:nn
- {
- \clist_map_inline:nn {#1}
- {
- \@@_set_mathalphabet_latin:nnn {normal} {##1} {#2}
- \@@_map_chars_range:nnnn {26} {##1} {#2} {latin}
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_set_normal_greek:nn
- {
- \clist_map_inline:nn {#1}
- {
- \@@_set_mathalphabet_greek:nnn {normal} {##1} {#2}
- \@@_map_chars_range:nnnn {25} {##1} {#2} {greek}
- \@@_map_char_single:nnn {##1} {#2} {epsilon}
- \@@_map_char_single:nnn {##1} {#2} {vartheta}
- \@@_map_char_single:nnn {##1} {#2} {varkappa}
- \@@_map_char_single:nnn {##1} {#2} {phi}
- \@@_map_char_single:nnn {##1} {#2} {varrho}
- \@@_map_char_single:nnn {##1} {#2} {varpi}
- \@@_set_mathalphabet_pos:nnnn {normal} {epsilon} {##1} {#2}
- \@@_set_mathalphabet_pos:nnnn {normal} {vartheta} {##1} {#2}
- \@@_set_mathalphabet_pos:nnnn {normal} {varkappa} {##1} {#2}
- \@@_set_mathalphabet_pos:nnnn {normal} {phi} {##1} {#2}
- \@@_set_mathalphabet_pos:nnnn {normal} {varrho} {##1} {#2}
- \@@_set_mathalphabet_pos:nnnn {normal} {varpi} {##1} {#2}
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_set_normal_Greek:nn
- {
- \clist_map_inline:nn {#1}
- {
- \@@_set_mathalphabet_Greek:nnn {normal} {##1} {#2}
- \@@_map_chars_range:nnnn {25} {##1} {#2} {Greek}
- \@@_map_char_single:nnn {##1} {#2} {varTheta}
- \@@_set_mathalphabet_pos:nnnn {normal} {varTheta} {##1} {#2}
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_set_normal_numbers:nn
- {
- \@@_set_mathalphabet_numbers:nnn {normal} {#1} {#2}
- \@@_map_chars_range:nnnn {10} {#1} {#2} {num}
- }
-% \end{macrocode}
-%
-%
-% \subsection{Mapping chars inside a math style}
-%
-% \subsubsection{Functions for setting up the maths alphabets}
-%
-% \begin{macro}{\@@_set_mathalphabet_char:nnn}
-% \darg{Maths alphabet, \eg, `bb’}
-% \darg{Input slot, \eg, the slot for `A’ (comma separated)}
-% \darg{Output slot, \eg, the slot for `$\mathbb{A}$’}
-% This is a wrapper for either |\@@_mathmap_noparse:nnn| or
-% |\@@_mathmap_parse:nnn|, depending on the context.
-% \end{macro}
-%
-% \begin{macro}{\@@_mathmap_noparse:nnn}
-% \darg{Maths alphabet, \eg, `bb’}
-% \darg{Input slot, \eg, the slot for `A’ (comma separated)}
-% \darg{Output slot, \eg, the slot for `$\mathbb{A}$’}
-% Adds \cs{@@_set_mathcode:nnnn} declarations to the specified maths alphabet’s definition.
-% \begin{macrocode}
-\cs_new:Nn \@@_mathmap_noparse:nnn
- {
- \tl_gput_right:cx { g_@@_switchto_#1_tl }
- {
- \@@_set_mathcode:nnnn {#2} {\mathalpha} {\l_@@_symfont_label_tl} {#3}
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_mathmap_parse:nnn}
-% \darg{Maths alphabet, \eg, `bb’}
-% \darg{Input slot, \eg, the slot for `A’ (comma separated)}
-% \darg{Output slot, \eg, the slot for `$\mathbb{A}$’}
-% When \cmd\@@_if_char_spec:nNT\ is executed, it populates the \cmd\l_@@_mathmap_charints_clist\
-% macro with slot numbers corresponding to the specified range. This range is used to
-% conditionally add \cs{@@_set_mathcode:nnnn} declaractions to the maths alphabet definition.
-% \begin{macrocode}
-\cs_new:Nn \@@_mathmap_parse:nnn
- {
- \exp_args:NNx \clist_if_in:NnT \l_@@_mathmap_charints_clist { \int_eval:n {#3} }
- {
- \@@_mathmap_noparse:nnn {#1} {#2} {#3}
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_set_mathalphabet_char:nnnn}
-% \darg{math style command}
-% \darg{input math alphabet name}
-% \darg{output math alphabet name}
-% \darg{char name to map}
-% \begin{macrocode}
-\cs_new:Nn \@@_set_mathalphabet_char:nnnn
- {
- \@@_set_mathalphabet_char:nnn {#1} { \@@_to_usv:nn {#2} {#4} }
- { \@@_to_usv:nn {#3} {#4} }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_set_mathalph_range:nnnn}
-% \darg{Number of iterations}
-% \darg{Sym command suffix}
-% \darg{Starting input char}
-% \darg{Starting output char}
-% Loops through character ranges setting \cmd\mathcode.
-% First the version that uses numbers:
-% \begin{macrocode}
-\cs_new:Nn \@@_set_mathalph_range:nnnn
- {
- \int_step_inline:nnnn {0} {1} {#1-1}
- { \@@_set_mathalphabet_char:nnn {#2} { ##1 + #3 } { ##1 + #4 } }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_set_mathalph_range:nnnn}
-% \darg{Number of iterations}
-% \darg{Sym command suffix}
-% \darg{input style}
-% \darg{output style}
-% \darg{alphabet}
-% Then the wrapper version that uses names:
-% \begin{macrocode}
-\cs_new:Nn \@@_set_mathalph_range:nnnnn
- {
- \clist_gput_right:cx { \l_@@_curr_named_slot }
- { \int_eval:n { \@@_to_usv:nn {#4} {#5} } - \int_eval:n { (#1-1)+\@@_to_usv:nn {#4} {#5} } }
-
- \@@_set_mathalph_range:nnnn {#1} {#2} { \@@_to_usv:nn {#3} {#5} }
- { \@@_to_usv:nn {#4} {#5} }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \subsubsection{Individual mapping functions for different alphabets}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_set_mathalphabet_pos:nnnn
- {
- \@@_usv_if_exist:nnT {#4} {#2}
- {
- \clist_map_inline:nn {#3}
- { \@@_set_mathalphabet_char:nnnn {#1} {##1} {#4} {#2} }
-
- \clist_gput_right:cx {\l_@@_curr_named_slot}
- { \int_eval:n { \@@_to_usv:nn {#4} {#2} } }
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_set_mathalphabet_numbers:nnn
- {
- \clist_map_inline:nn {#2}
- { \@@_set_mathalph_range:nnnnn {10} {#1} {##1} {#3} {num} }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_set_mathalphabet_Latin:nnn
- {
- \clist_map_inline:nn {#2}
- { \@@_set_mathalph_range:nnnnn {26} {#1} {##1} {#3} {Latin} }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_set_mathalphabet_latin:nnn
- {
- \clist_map_inline:nn {#2}
- {
- \@@_set_mathalph_range:nnnnn {26} {#1} {##1} {#3} {latin}
- \@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {h}
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_set_mathalphabet_Greek:nnn
- {
- \clist_map_inline:nn {#2}
- {
- \@@_set_mathalph_range:nnnnn {25} {#1} {##1} {#3} {Greek}
- \@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {varTheta}
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_set_mathalphabet_greek:nnn
- {
- \clist_map_inline:nn {#2}
- {
- \@@_set_mathalph_range:nnnnn {25} {#1} {##1} {#3} {greek}
- \@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {epsilon}
- \@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {vartheta}
- \@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {varkappa}
- \@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {phi}
- \@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {varrho}
- \@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {varpi}
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-%</package>
-% \end{macrocode}
-
-\endinput
-
-% /©
-%
-% ------------------------------------------------
-% The UNICODE-MATH package <wspr.io/unicode-math>
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% Copyright 2006-2019 Will Robertson, LPPL "maintainer"
-% Copyright 2010-2017 Philipp Stephani
-% Copyright 2011-2017 Joseph Wright
-% Copyright 2012-2015 Khaled Hosny
-% ------------------------------------------------
-%
-% ©/
diff --git a/macros/latex/contrib/unicode-math/um-code-mathtext.dtx b/macros/latex/contrib/unicode-math/um-code-mathtext.dtx
deleted file mode 100644
index d002483378..0000000000
--- a/macros/latex/contrib/unicode-math/um-code-mathtext.dtx
+++ /dev/null
@@ -1,259 +0,0 @@
-%%^^A%% um-code-mathtext.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
-%%^^A%% The "math text" commands such as `\mathbf` and co.
-
-% \section{Maths text commands}
-%
-% \begin{macrocode}
-%<*package>
-% \end{macrocode}
-%
-% \subsection{\cs{setmathfontface}}
-%
-% \begin{macro}{\@@_setmathfontface:Nnn}
-% Interface around \cs{SetMathAlphabet}.
-% \begin{macrocode}
-\keys_define:nn {@@_mathface}
- {
- version .tl_set:N = \l_@@_mversion_tl
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\@@_cs_new:Nn \@@_setmathfontface:Nnn
- {
- \tl_clear:N \l_@@_mversion_tl
-
- \keys_set_known:nnN {@@_mathface} {#2} \l_@@_keyval_clist
-
- \fontspec_set_family:Nxx \l_@@_tmpa_tl
- { ItalicFont={}, BoldFont={}, SmallCapsFont={}, \exp_not:V \l_@@_keyval_clist }
- { #3 }
-
- \tl_if_empty:NT \l_@@_mversion_tl
- {
- \tl_set:Nn \l_@@_mversion_tl {normal}
- \DeclareMathAlphabet #1 {\g_fontspec_encoding_tl} {\l_@@_tmpa_tl} {\mddefault} {\shapedefault}
- }
-
- \SetMathAlphabet #1 {\l_@@_mversion_tl} {\g_fontspec_encoding_tl} {\l_@@_tmpa_tl} {\mddefault} {\shapedefault}
-
- % integrate with fontspec's \setmathrm etc:
- \tl_case:Nn #1
- {
- \mathrm { \cs_gset_eq:NN \g__fontspec_mathrm_tl \l_@@_tmpa_tl }
- \mathsf { \cs_gset_eq:NN \g__fontspec_mathsf_tl \l_@@_tmpa_tl }
- \mathtt { \cs_gset_eq:NN \g__fontspec_mathtt_tl \l_@@_tmpa_tl }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsection{Hooks into \LaTeXe}
-%
-% Switching to a different style of alphabetic symbols was traditionally performed with
-% commands like \cmd\mathbf, which literally changes fonts to access alternate symbols.
-% This is not as simple with Unicode fonts.
-%
-% In traditional \TeX{} maths font setups, you simply switch between different `families' (\cmd\fam), which is analogous to changing from one font to another---a symbol such as `a' will be upright in one font, bold in another, and so on.
-% In pkg{unicode-math}, a different mechanism is used to switch between styles. For every letter (start with ascii a-zA-Z and numbers to keep things simple for now), they are assigned a `mathcode' with \cmd\Umathcode\ that maps from input letter to output font glyph slot. This is done with the equivalent of
-% \begin{Verbatim}
-% \Umathcode`\a = 7 1 "1D44E\relax
-% \Umathcode`\b = 7 1 "1D44F\relax
-% \Umathcode`\c = 7 1 "1D450\relax
-% ...
-% \end{Verbatim}
-% When switching from regular letters to, say, \cmd\mathrm, we now need to execute a new mapping:
-% \begin{Verbatim}
-% \Umathcode`\a = 7 1 `\a\relax
-% \Umathcode`\b = 7 1 `\b\relax
-% \Umathcode`\c = 7 1 `\c\relax
-% ...
-% \end{Verbatim}
-% This is fairly straightforward to perform when we're defining our own commands such as \cmd\symbf\ and so on. However, this means that `classical' \TeX\ font setups will break, because with the original mapping still in place, the engine will be attempting to insert unicode maths glyphs from a standard font.
-%
-% \begin{macro}{\use@mathgroup}
-% To overcome this, we patch \cs{use@mathgroup}, which is only used inside of commands
-% such as \cs{mathXYZ}, so this shouldn't have any side-effects.
-% Omit the test for math mode because this is only called \emph{inside} \cs{mathrm} or similar,
-% which already has a math mode check.
-% \begin{macrocode}
-\cs_set:Npn \use@mathgroup #1 #2
- {
- \math@bgroup
- \cs_if_eq:cNF {M@\f@encoding} #1 {#1}
- \@@_switch_to:n {literal}
- \@@_mathgroup_set:n {#2}
- \math@egroup
- }
-% \end{macrocode}
-% \end{macro}
-%
-% In LaTeX maths, the command |\operator@font| is defined that switches to the |operator| mathgroup. The classic example is the |\sin| in |$\sin{x}$|; essentially we’re using |\mathrm| to typeset the upright symbols, but the syntax is |{\operator@font sin}|.
-% I thought that hooking into |\operator@font| would be hard because all other maths font selection in 2e uses |\mathrm{...}| style.
-% Then reading source2e a little more I stumbled upon \cs{@fontswitch}.
-% Reimplement that here to avoid \cs{bgroup}/\cs{egroup}.
-% \begin{macro}{\operator@font}
-% \begin{macrocode}
-\cs_set:Npn \operator@font
- {
- \@@_switch_to:n {literal}
- \@@_fontswitch:n { \g_@@_operator_mathfont_tl }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_fontswitch:n}
-% Omit the check for math mode as \verb|#1| should do that for us.
-% \begin{macrocode}
-\cs_set:Nn \@@_fontswitch:n
- {
- \cs_set_eq:NN \math@bgroup \scan_stop:
- \cs_set_eq:NN \@@_group_begin: \scan_stop:
- \cs_set:Npn \@@_group_end:n % takes no argument in this case
- {
- \cs_set_eq:NN \@@_group_begin: \@@_group_begin_frozen:
- \cs_set_eq:NN \@@_group_end:n \@@_group_end_frozen:n
- \cs_set_eq:NN \math@bgroup \@@@@math@bgroup
- \cs_set_eq:NN \math@egroup \@@@@math@egroup
- }
- \cs_set_eq:NN \math@egroup \@@_group_end:n
- #1 \scan_stop:
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsection{Hooks into \pkg{fontspec}}
-%
-% Historically, \cs{mathrm} and so on were completely overwritten by \pkg{unicode-math}, and \pkg{fontspec}'s methods for setting these fonts in the classical manner were bypassed.
-%
-% While we could now re-activate the way that \pkg{fontspec} does the following, because we can now change maths fonts whenever it's better to define new commands in \pkg{unicode-math} to define the \cs{mathXYZ} fonts.
-%
-% \subsubsection{Text font}
-%
-% \begin{macrocode}
-\cs_generate_variant:Nn \tl_if_eq:nnT {o}
-\@@_cs_set:Nn \__fontspec_setmainfont_hook:nn
- {
- \tl_if_eq:onT {\g__fontspec_mathrm_tl} {\rmdefault}
- {
-%<XE> \fontspec_gset_family:Nnn \g__fontspec_mathrm_tl {#1} {#2}
-%<LU> \fontspec_gset_family:Nnn \g__fontspec_mathrm_tl {Renderer=Basic,#1} {#2}
- \__fontspec_setmathrm_hook:nn {#1} {#2}
- }
- }
-% \end{macrocode}
-% \begin{macrocode}
-\@@_cs_set:Nn \__fontspec_setsansfont_hook:nn
- {
- \tl_if_eq:onT {\g__fontspec_mathsf_tl} {\sfdefault}
- {
-%<XE> \fontspec_gset_family:Nnn \g__fontspec_mathsf_tl {#1} {#2}
-%<LU> \fontspec_gset_family:Nnn \g__fontspec_mathsf_tl {Renderer=Basic,#1} {#2}
- \__fontspec_setmathsf_hook:nn {#1} {#2}
- }
- }
-% \end{macrocode}
-% \begin{macrocode}
-\@@_cs_set:Nn \__fontspec_setmonofont_hook:nn
- {
- \tl_if_eq:onT {\g__fontspec_mathtt_tl} {\ttdefault}
- {
-%<XE> \fontspec_gset_family:Nnn \g__fontspec_mathtt_tl {#1} {#2}
-%<LU> \fontspec_gset_family:Nnn \g__fontspec_mathtt_tl {Renderer=Basic,#1} {#2}
- \__fontspec_setmathtt_hook:nn {#1} {#2}
- }
- }
-% \end{macrocode}
-%
-% \subsubsection{Maths font}
-%
-% If the maths fonts are set explicitly, then the text commands above will not execute
-% their branches to set the maths font alphabets.
-%
-% Helper macro for looking up customisable series' by family (new \LaTeXe\ feature 2020).
-% \begin{macrocode}
-\cs_new:Nn \@@_rm_series_default:n
- {
- \ifcsname #1series@rm\endcsname
- \csname #1series@rm\endcsname
- \else
- \csname #1default\endcsname
- \fi
- }
-% \end{macrocode}
-% \begin{macrocode}
-\@@_cs_set:Nn \__fontspec_setmathrm_hook:nn
- {
- \SetMathAlphabet\mathrm{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl{\@@_rm_series_default:n {md}}\shapedefault
- \SetMathAlphabet\mathit{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl{\@@_rm_series_default:n {md}}\itdefault
- \SetMathAlphabet\mathbf{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl{\@@_rm_series_default:n {bf}}\shapedefault
- }
-% \end{macrocode}
-% \begin{macrocode}
-\@@_cs_set:Nn \__fontspec_setboldmathrm_hook:nn
- {
- \SetMathAlphabet\mathrm{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl{\@@_rm_series_default:n {md}}\shapedefault
- \SetMathAlphabet\mathbf{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl{\@@_rm_series_default:n {bf}}\shapedefault
- \SetMathAlphabet\mathit{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\mddefault\itdefault
- }
-% \end{macrocode}
-% \begin{macrocode}
-\@@_cs_set:Nn \__fontspec_setmathsf_hook:nn
- {
- \SetMathAlphabet\mathsf{normal}\g_fontspec_encoding_tl\g__fontspec_mathsf_tl{\@@_rm_series_default:n {md}}\shapedefault
- \SetMathAlphabet\mathsf{bold} \g_fontspec_encoding_tl\g__fontspec_mathsf_tl{\@@_rm_series_default:n {bf}}\shapedefault
- }
-% \end{macrocode}
-% \begin{macrocode}
-\@@_cs_set:Nn \__fontspec_setmathtt_hook:nn
- {
- \SetMathAlphabet\mathtt{normal}\g_fontspec_encoding_tl\g__fontspec_mathtt_tl{\@@_rm_series_default:n {md}}\shapedefault
- \SetMathAlphabet\mathtt{bold} \g_fontspec_encoding_tl\g__fontspec_mathtt_tl{\@@_rm_series_default:n {bf}}\shapedefault
- }
-% \end{macrocode}
-%
-% I can't quite remember the logic behind the following two.
-%
-% If \pkg{fontspec} has been loaded and \verb|\setmathsf| (etc) run, this
-% syncs things up:
-% \begin{macrocode}
-\tl_if_eq:onF {\g__fontspec_mathrm_tl} {\rmdefault} { \__fontspec_setmathrm_hook:nn {} {} }
-\tl_if_eq:onF {\g__fontspec_mathsf_tl} {\sfdefault} { \__fontspec_setmathsf_hook:nn {} {} }
-\tl_if_eq:onF {\g__fontspec_mathtt_tl} {\ttdefault} { \__fontspec_setmathtt_hook:nn {} {} }
-% \end{macrocode}
-%
-% I suppose this is to make things work if neither fontspec or unicode-math
-% load any fonts: (I should check that)
-% \begin{macrocode}
-\AtBeginDocument
- {
- \tl_if_eq:onT {\g__fontspec_mathrm_tl} {\rmdefault} { \__fontspec_setmathrm_hook:nn {} {} }
- \tl_if_eq:onT {\g__fontspec_mathsf_tl} {\sfdefault} { \__fontspec_setmathsf_hook:nn {} {} }
- \tl_if_eq:onT {\g__fontspec_mathtt_tl} {\ttdefault} { \__fontspec_setmathtt_hook:nn {} {} }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-%</package>
-% \end{macrocode}
-
-\endinput
-
-% /©
-%
-% ------------------------------------------------
-% The UNICODE-MATH package <wspr.io/unicode-math>
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% Copyright 2006-2019 Will Robertson, LPPL "maintainer"
-% Copyright 2010-2017 Philipp Stephani
-% Copyright 2011-2017 Joseph Wright
-% Copyright 2012-2015 Khaled Hosny
-% ------------------------------------------------
-%
-% ©/
diff --git a/macros/latex/contrib/unicode-math/um-code-msg.dtx b/macros/latex/contrib/unicode-math/um-code-msg.dtx
deleted file mode 100644
index c93809cf4f..0000000000
--- a/macros/latex/contrib/unicode-math/um-code-msg.dtx
+++ /dev/null
@@ -1,156 +0,0 @@
-%%^^A%% um-code-msg.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
-%%^^A%% Definitions of error, warning, and log messages.
-
-% \section{Error messages}
-% \seclabel{codemsg}
-%
-% \begin{macrocode}
-%<*package>
-% \end{macrocode}
-%
-% \begin{macrocode}
-\char_set_catcode_space:n {32}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\@@_msg_new:nn {no-tfrac}
-{
- Small fraction command \protect\tfrac\ not defined.\\
- Load amsmath or define it manually before loading unicode-math.
-}
-\@@_msg_new:nn {default-math-font}
-{
- Defining the default maths font as '\l_@@_fontname_tl'.
-}
-\@@_msg_new:nn {setup-implicit}
-{
- Setup alphabets: implicit mode.
-}
-\@@_msg_new:nn {setup-explicit}
-{
- Setup alphabets: explicit mode.
-}
-\@@_msg_new:nn {alph-initialise}
-{
- Initialising \@backslashchar math#1.
-}
-\@@_msg_new:nn {setup-alph}
-{
- Setup alphabet: #1.
-}
-\@@_msg_new:nn {no-alphabet}
-{
- I am trying to set up alphabet"#1" but there are no configuration settings for it.
- (See source file "unicode-math-alphabets.dtx" to debug.)
-}
-\@@_msg_new:nn {no-named-range}
- {
- I am trying to define new alphabet "#2" in range "#1", but range "#1" hasn't been defined yet.
- }
-\@@_msg_new:nn {missing-alphabets}
- {
- Missing math alphabets in font "\fontname\g_@@_curr_font_cmd_tl" \\ \\
- \seq_map_function:NN \l_@@_missing_alph_seq \@@_print_indent:n
- }
-\cs_new:Nn \@@_print_indent:n { \space\space\space\space #1 \\ }
-\@@_msg_new:nn {macro-expected}
-{
- I've expected that #1 is a macro, but it isn't.
-}
-\@@_msg_new:nn {wrong-meaning}
-{
- I've expected #1 to have the meaning #3, but it has the meaning #2.
-}
-\@@_msg_new:nn {patch-macro}
-{
- I'm going to patch macro #1.
-}
-\@@_msg_new:nn {mathtools-overbracket} {
- Using \token_to_str:N \overbracket\ and
- \token_to_str:N \underbracket\ from
- `mathtools' package.\\
- \\
- Use \token_to_str:N \Uoverbracket\ and
- \token_to_str:N \Uunderbracket\ for
- original `unicode-math' definition.
-}
-\@@_msg_new:nn {mathtools-colon} {
- I'm going to overwrite the following commands from
- the `mathtools' package: \\ \\
- \ \ \ \ \token_to_str:N \dblcolon,
- \token_to_str:N \coloneqq,
- \token_to_str:N \Coloneqq,
- \token_to_str:N \eqqcolon. \\ \\
- Note that since I won't overwrite the other colon-like
- commands, using them will lead to inconsistencies.
-}
-\@@_msg_new:nn {colonequals} {
- I'm going to overwrite the following commands from
- the `colonequals' package: \\ \\
- \ \ \ \ \token_to_str:N \ratio,
- \token_to_str:N \coloncolon,
- \token_to_str:N \minuscolon, \\
- \ \ \ \ \token_to_str:N \colonequals,
- \token_to_str:N \equalscolon,
- \token_to_str:N \coloncolonequals. \\ \\
- Note that since I won't overwrite the other colon-like
- commands, using them will lead to inconsistencies.
- Furthermore, changing \token_to_str:N \colonsep \c_space_tl
- or \token_to_str:N \doublecolonsep \c_space_tl won't have
- any effect on the re-defined commands.
-}
-\@@_msg_new:nn {bad-cs-in-range}
- {
- Command `#1` in math range is not recognised as a maths symbol.
- Check file "unicode-math-table.tex" for allowable commands.
- }
-\@@_msg_new:nn {legacy-char-not-supported}
- {
- Command `#1` is a legacy maths symbol that is not supported by unicode-math.
- }
-\@@_msg_new:nn {range-not-bf-sf}
- {
- Range alphabets cannot include alphabets referring to `bf`, `sf`, or `bfsf`
- since they relate to input commands not output glyphs.
- Use `bfit` or `bfup` (etc.) to specify which.
- }
-\@@_msg_new:nn {no-main-font}
- {
- No main maths font has been set up yet.\\If you simply want ‘the default’, use: \\
- \iow_indent:n {\token_to_str:N\setmathfont{latinmodern-math.otf}}
- }
-\@@_msg_new:nn {not-ot-math}
- {
- The first font loaded by unicode-math must be an OpenType Math font (with script=math).
- If you simply want ‘the default’ before loading supplementary fonts over the top for certain
- ranges, use: \\
- \iow_indent:n {\token_to_str:N\setmathfont{latinmodern-math.otf}}
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\char_set_catcode_ignore:n {32}
-% \end{macrocode}
-%
-% \begin{macrocode}
-%</package>
-% \end{macrocode}
-
-\endinput
-
-% /©
-%
-% ------------------------------------------------
-% The UNICODE-MATH package <wspr.io/unicode-math>
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% Copyright 2006-2019 Will Robertson, LPPL "maintainer"
-% Copyright 2010-2017 Philipp Stephani
-% Copyright 2011-2017 Joseph Wright
-% Copyright 2012-2015 Khaled Hosny
-% ------------------------------------------------
-%
-% ©/
diff --git a/macros/latex/contrib/unicode-math/um-code-opening.dtx b/macros/latex/contrib/unicode-math/um-code-opening.dtx
deleted file mode 100644
index 16e3213998..0000000000
--- a/macros/latex/contrib/unicode-math/um-code-opening.dtx
+++ /dev/null
@@ -1,410 +0,0 @@
-%%^^A%% um-code-opening.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
-%%^^A%% Assorted initialisation tasks, including some low-level function definitions.
-
-% \section{Start of the package code}
-%
-% The prefix for \pkg{unicode-math} is \texttt{um}:
-% \begin{macrocode}
-%<@@=um>
-% \end{macrocode}
-%
-% \begin{macrocode}
-%<*package>
-% \end{macrocode}
-%
-% \paragraph{Packages}
-% Assuming people are running up-to-date packages.
-% \begin{macrocode}
-\RequirePackage{xparse,l3keys2e}
-\RequirePackage{fontspec}
-\RequirePackage{fix-cm}
-\RequirePackage{amsmath}
-%<LU>\RequirePackage{lualatex-math}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_set_protected:Npn \@@_after_package:nNn #1 #2 #3
- {
- \AtBeginDocument
- {
- \cs_new_protected:Npn #2 {#3}
- \@ifpackageloaded {#1} {#2} {}
- }
- }
-\RequirePackage{xparse,l3keys2e}
-\RequirePackage{fontspec}
-\RequirePackage{fix-cm}
-%<LU>\RequirePackage{lualatex-math}
-% \end{macrocode}
-%
-% \subsection{\pkg{expl3} variants}
-%
-% Variants needed from \pkg{expl3}:
-% \begin{macrocode}
-\cs_set_protected_nopar:Npn \exp_last_unbraced:NNx { \::N \::x_unbraced \::: }
-% \end{macrocode}
-%
-% For \pkg{fontspec}:
-% \begin{macrocode}
-\cs_generate_variant:Nn \fontspec_set_family:Nnn {Nx,Nxx}
-\cs_generate_variant:Nn \prop_get:NnNTF {cx}
-\cs_generate_variant:Nn \tl_if_eq:nnF {o}
-% \end{macrocode}
-%
-%
-% \subsection{Low level commands}
-%
-% \begin{macrocode}
-\cs_set_eq:NN \@@_group_begin: \group_begin:
-\cs_set_protected:Npn \@@_group_end:n #1 { #1 \group_end: }
-\cs_set_eq:NN \@@_group_begin_frozen: \@@_group_begin:
-\cs_set_eq:NN \@@_group_end_frozen:n \@@_group_end:n
-% \end{macrocode}
-%
-%
-% \subsection{Primitive font commands}
-%
-% What might end up being provided by the kernel.
-%
-% \begin{macro}{\@@_glyph_if_exist:NnTF}
-% \begin{macrocode}
-\prg_new_conditional:Nnn \@@_glyph_if_exist:Nn {p,TF,T,F}
- {
- \tex_iffontchar:D #1 #2 \scan_stop:
- \prg_return_true:
- \else:
- \prg_return_false:
- \fi:
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_fontface_gset_eq:NN}
-% \begin{macrocode}
-\cs_set_protected:Nn \@@_fontface_gset_eq:NN
- {
- \tex_global:D \tex_let:D #1 #2
- }
-\cs_generate_variant:Nn \@@_fontface_gset_eq:NN {cN}
-% \end{macrocode}
-% \end{macro}
-%
-% \subsubsection{Mathcode and friends}
-%
-% \begin{macro}{\@@_set_mathcode:nnnn}
-% \begin{macro}{\@@_set_mathcode:nnn}
-% These are all wrappers for the primitive commands that take numerical
-% input only.
-% \begin{macrocode}
-\cs_set:Npn \@@_set_mathcode:nnnn #1#2#3#4
- {
- \Umathcode \int_eval:n {#1} =
- \mathchar@type#2 \csname sym#3\endcsname \int_eval:n {#4} \scan_stop:
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_set:Npn \@@_set_mathcode:nnn #1#2#3
- {
- \Umathcode \int_eval:n {#1} =
- \mathchar@type#2 \csname sym#3\endcsname \int_eval:n {#1} \scan_stop:
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@@_set_mathchar:NNnn}
-% \begin{macro}{\@@_set_mathchar:cNnn}
-% \begin{macrocode}
-\cs_set:Npn \@@_set_mathchar:NNnn #1#2#3#4
- {
- \Umathchardef #1 =
- \mathchar@type#2 \csname sym#3\endcsname \int_eval:n {#4} \scan_stop:
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macrocode}
-\cs_generate_variant:Nn \@@_set_mathchar:NNnn {c}
-% \end{macrocode}
-%
-% \begin{macro}{\@@_set_delcode:nnn}
-% \begin{macrocode}
-\cs_new:Nn \@@_set_delcode:nnn
- {
- \Udelcode#2 = \csname sym#1\endcsname #3 \scan_stop:
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_radical:nn}
-% \begin{macrocode}
-\cs_new:Nn \@@_radical:nn
- {
- \Uradical \csname sym#1\endcsname #2 \scan_stop:
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_delimiter:Nnn}
-% \begin{macrocode}
-\cs_new:Nn \@@_delimiter:Nnn
- {
- \Udelimiter \mathchar@type#1 \csname sym#2\endcsname #3 \scan_stop:
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_accent:nnn}
-% \begin{macrocode}
-\cs_new:Nn \@@_accent:nnn
- {
- \Umathaccent #1~ \mathchar@type\mathaccent \use:c { sym #2 } #3 \scan_stop:
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_char_gmake_mathactive:N}
-% \begin{macro}{\@@_char_gmake_mathactive:n}
-% \begin{macrocode}
-\cs_new:Nn \@@_char_gmake_mathactive:N
- {
- \tex_global:D \tex_mathcode:D `#1 = "8000 \scan_stop:
- }
-% \end{macrocode}
-% \begin{macrocode}
-\cs_new:Nn \@@_char_gmake_mathactive:n
- {
- \tex_global:D \tex_mathcode:D \int_eval:n {#1} = "8000 \scan_stop:
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@@_mathactive_remap:nn}
-% Makes |#1| math-active and defines its meaning to be |#2|.
-% This is a global operation.
-% \begin{macrocode}
-\cs_new:Nn \@@_mathactive_remap:nn
- {
- \group_begin:
- \cs_set_protected:Npn \@@_tmp: {#2}
- \@@_char_gmake_mathactive:n {#1}
- \char_gset_active_eq:nN {#1} \@@_tmp:
- \group_end:
- }
-% \end{macrocode}
-%
-% \subsubsection{NFSS-related interfaces}
-%
-% \begin{macro}{\@@_mathgroup_set:n}
-% Remember that \cs{mathgroup} is just \cs{fam}!
-% \begin{macrocode}
-\cs_new_protected:Nn \@@_mathgroup_set:n
- {
- \tex_fam:D #1 \scan_stop:
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \subsubsection{Font parameters}
-%
-% \begin{macro}{\@@_copy_fontdimen:nnN}
-% \begin{macrocode}
-\cs_new:Nn \@@_copy_fontdimen:nnN
- {
- \fontdimen #1 \font = \the \fontdimen #2 #3 \relax
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_zero_fontdimen:n}
-% \begin{macrocode}
-\cs_new:Nn \@@_zero_fontdimen:n
- {
- \fontdimen #1 \font = 0pt\relax
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_fontdimen_from_param:Nnn}
-% This function extracts the math font dimen \verb|#3| from the font \verb|#1|
-% and sets fontdimen \verb|#2| of the same font to that value.
-%
-% Use \XeTeX's fontdimen approach because it's tidy. We don't need bells and whistles here.
-% \begin{macrocode}
-%<*LU>
-\cs_new_protected:Nn \@@_fontdimen_from_param:nn
- {
- \fontdimen #1 \font =
- \lua_now:n { fontspec.mathfontdimen(font.current(),"#2") }
- \scan_stop:
- }
-%</LU>
-% \end{macrocode}
-% \end{macro}
-%
-%^^A \begin{function}[EXP, added = 2019-01-19]{\@@_int_if_zero_p:n, \@@_int_if_zero:nTF}
-%^^A \begin{syntax}
-%^^A \cs{int_if_zero_p:n} \Arg{intexpr}
-%^^A \cs{int_if_zero:nTF} \Arg{intexpr} \Arg{true code} \Arg{false code}
-%^^A \end{syntax}
-%^^A A conditional for testing if the \meta{intexpr} evaluates to zero.
-%^^A This is simply a shorthand for
-%^^A \begin{verbatim}
-%^^A \int_compare_p:nNn {intexpr} = {0}
-%^^A \end{verbatim}
-%^^A \end{function}
-%
-% \begin{macro}{\@@_int_if_zero_p:n}
-% \begin{macro}{\@@_int_if_zero:nTF}
-% \begin{macrocode}
-\prg_new_conditional:Nnn \@@_int_if_zero:n {p,TF,T,F}
- {
- \int_compare:nNnTF {#1} = 0 {\prg_return_true:} {\prg_return_false:}
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-%
-% \subsection{Alphabet Unicode positions (USVs)}
-%
-% Before we begin, let's define the positions of the various Unicode
-% alphabets so that our code is a little more readable.\footnote{`\textsc{u.s.v.}' stands
-% for `Unicode scalar value'.}
-%
-% \begin{macro}{\usv_set:nnn,\@@_to_usv:nn}
-% Rather than `readable', in the end, this makes the code more extensible.
-% \begin{macrocode}
-\cs_new:Nn \usv_set:nnn { \tl_const:cn { c_@@_#1_#2_usv } {#3} }
-\cs_new:Nn \@@_to_usv:nn { \use:c { c_@@_#1_#2_usv } }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_usv_if_exist:nnTF}
-% \begin{macrocode}
-\prg_new_conditional:Nnn \@@_usv_if_exist:nn {T,F,TF}
- {
- \cs_if_exist:cTF { c_@@_#1_#2_usv }
- \prg_return_true: \prg_return_false:
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsection{Overcoming \texorpdfstring{\cmd\@onlypreamble}{\textbackslash @onlypreamble}}
-%
-% The requirement of only setting up the maths fonts in the preamble is lifted.
-% (Perhaps unwisely.)
-% \begin{macrocode}
-\tl_map_inline:nn
- {
- \new@mathgroup\cdp@list\cdp@elt\DeclareMathSizes
- \@DeclareMathSizes\newmathalphabet\newmathalphabet@@\newmathalphabet@@@
- \DeclareMathVersion\define@mathalphabet\define@mathgroup\addtoversion
- \version@list\version@elt\alpha@list\alpha@elt
- \restore@mathversion\init@restore@version\dorestore@version\process@table
- \new@mathversion\DeclareSymbolFont\group@list\group@elt
- \new@symbolfont\SetSymbolFont\SetSymbolFont@\get@cdp
- \DeclareMathAlphabet\new@mathalphabet\SetMathAlphabet\SetMathAlphabet@
- \DeclareMathAccent\set@mathaccent\DeclareMathSymbol\set@mathchar
- \set@mathsymbol\DeclareMathDelimiter\@xxDeclareMathDelimiter
- \@DeclareMathDelimiter\@xDeclareMathDelimiter\set@mathdelimiter
- \set@@mathdelimiter\DeclareMathRadical\mathchar@type
- \DeclareSymbolFontAlphabet\DeclareSymbolFontAlphabet@
- }
- {
- \tl_remove_once:Nn \@preamblecmds {\do#1}
- }
-% \end{macrocode}
-%
-%
-% \subsection{Wrappers for kernel commands}
-%
-% Messages themselves are defined in \secref{codemsg}.
-%
-% \begin{macrocode}
-\cs_new:Npn \@@_error:n { \msg_error:nn {unicode-math} }
-\cs_new:Npn \@@_error:nx { \msg_error:nnx {unicode-math} }
-\cs_new:Npn \@@_warning:n { \msg_warning:nn {unicode-math} }
-\cs_new:Npn \@@_warning:nnn { \msg_warning:nnxx {unicode-math} }
-\cs_new:Npn \@@_log:n { \msg_log:nn {unicode-math} }
-\cs_new:Npn \@@_log:nx { \msg_log:nnx {unicode-math} }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_generate_variant:Nn \msg_new:nnn {nnx}
-\cs_generate_variant:Nn \msg_new:nnnn {nnxx}
-\cs_new:Nn \@@_msg_new:nn { \msg_new:nnx {unicode-math} {#1} { \tl_trim_spaces:n {#2} } }
-% \end{macrocode}
-%
-%
-% \begin{macro}{\@@_cs_new:Nn}
-% \begin{macrocode}
-%<*debug>
-\int_new:N \g_@@_debug_nest_int
-\cs_new:Nn \@@_debug:n
- {
- \typeout{ <UM~DEBUG>~\prg_replicate:nn \g_@@_debug_nest_int {::}~ #1}
- }
-\cs_new:Nn \@@_debug_start:n
- {
- \int_gincr:N \g_@@_debug_nest_int
- \@@_debug:n {#1}
- }
-\cs_new:Nn \@@_debug_end:n
- {
- \int_gdecr:N \g_@@_debug_nest_int
- }
-%</debug>
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Npn \@@_cs_set:Nn #1 #2
- {
- \cs_if_exist:NF #1 { \ERROR{CS~ DOES~ NOT~ EXIST,~ USE~ "NEW"} }
- \cs_set_protected:Nn #1
- {
-%<debug>\@@_debug_start:n { \cs_to_str:N #1 }
- #2
-%<debug>\@@_debug_end:n { \cs_to_str:N #1 }
- }
- }
-\cs_new:Npn \@@_cs_new:Nn #1 #2
- {
- \cs_new_protected:Nn #1
- {
-%<debug>\@@_debug_start:n { \cs_to_str:N #1 }
- #2
-%<debug>\@@_debug_end:n { \cs_to_str:N #1 }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macrocode}
-%</package>
-% \end{macrocode}
-
-\endinput
-
-
-% /©
-%
-% ------------------------------------------------
-% The UNICODE-MATH package <wspr.io/unicode-math>
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% Copyright 2006-2019 Will Robertson, LPPL "maintainer"
-% Copyright 2010-2017 Philipp Stephani
-% Copyright 2011-2017 Joseph Wright
-% Copyright 2012-2015 Khaled Hosny
-% ------------------------------------------------
-%
-% ©/
diff --git a/macros/latex/contrib/unicode-math/um-code-pkgopt.dtx b/macros/latex/contrib/unicode-math/um-code-pkgopt.dtx
deleted file mode 100644
index 68d265674a..0000000000
--- a/macros/latex/contrib/unicode-math/um-code-pkgopt.dtx
+++ /dev/null
@@ -1,330 +0,0 @@
-%%^^A%% um-code-pkgopt.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
-%%^^A%% Package options.
-
-% \section{setup and package options}
-%
-% \begin{macrocode}
-%<*package>
-% \end{macrocode}
-%
-% \begin{macro}{\@@_keys_choices:nn}
-% To simplify the creation of option keys, let's iterate in pairs rather than worry about equals signs and commas.
-% \begin{macrocode}
-\cs_new:Nn \@@_keys_choices:nn
- {
- \cs_set:Npn \@@_keys_choices_fn:nn { \@@_keys_choices_aux:nnn {#1} }
- \use:x
- {
- \exp_not:N \keys_define:nn {unicode-math}
- {
- #1 .choice: ,
- \@@_tl_map_dbl:nN {#2} \@@_keys_choices_fn:nn
- }
- }
- }
-% \end{macrocode}
-% \begin{macrocode}
-\cs_new:Nn \@@_keys_choices_aux:nnn { #1 / #2 .code:n = { \exp_not:n {#3} } , }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_tl_map_dbl:nN
- {
- \__@@_tl_map_dbl:Nnn #2 #1 \q_recursion_tail {}{} \q_recursion_stop
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \__@@_tl_map_dbl:Nnn
- {
- \quark_if_recursion_tail_stop:n {#2}
- \quark_if_recursion_tail_stop:n {#3}
- #1 {#2} {#3}
- \__@@_tl_map_dbl:Nnn #1
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \paragraph{Compatibility}
-% \begin{macrocode}
-\@@_keys_choices:nn {mathup}
- {
- {sym} { \bool_gset_false:N \g_@@_mathrm_text_bool }
- {text} { \bool_gset_true:N \g_@@_mathrm_text_bool }
- }
-% \end{macrocode}
-% \begin{macrocode}
-\@@_keys_choices:nn {mathrm}
- {
- {sym} { \bool_gset_false:N \g_@@_mathrm_text_bool }
- {text} { \bool_gset_true:N \g_@@_mathrm_text_bool }
- }
-% \end{macrocode}
-% \begin{macrocode}
-\@@_keys_choices:nn {mathit}
- {
- {sym} { \bool_gset_false:N \g_@@_mathit_text_bool }
- {text} { \bool_gset_true:N \g_@@_mathit_text_bool }
- }
-% \end{macrocode}
-% \begin{macrocode}
-\@@_keys_choices:nn {mathbf}
- {
- {sym} { \bool_gset_false:N \g_@@_mathbf_text_bool }
- {text} { \bool_gset_true:N \g_@@_mathbf_text_bool }
- }
-% \end{macrocode}
-% \begin{macrocode}
-\@@_keys_choices:nn {mathsf}
- {
- {sym} { \bool_gset_false:N \g_@@_mathsf_text_bool }
- {text} { \bool_gset_true:N \g_@@_mathsf_text_bool }
- }
-% \end{macrocode}
-% \begin{macrocode}
-\@@_keys_choices:nn {mathtt}
- {
- {sym} { \bool_gset_false:N \g_@@_mathtt_text_bool }
- {text} { \bool_gset_true:N \g_@@_mathtt_text_bool }
- }
-% \end{macrocode}
-%
-% \paragraph{math-style}
-% \begin{macrocode}
-\@@_keys_choices:nn {normal-style}
- {
- {ISO} {
- \bool_gset_false:N \g_@@_literal_bool
- \bool_gset_false:N \g_@@_upGreek_bool
- \bool_gset_false:N \g_@@_upgreek_bool
- \bool_gset_false:N \g_@@_upLatin_bool
- \bool_gset_false:N \g_@@_uplatin_bool
- }
- {TeX} {
- \bool_gset_false:N \g_@@_literal_bool
- \bool_gset_true:N \g_@@_upGreek_bool
- \bool_gset_false:N \g_@@_upgreek_bool
- \bool_gset_false:N \g_@@_upLatin_bool
- \bool_gset_false:N \g_@@_uplatin_bool
- }
- {french} {
- \bool_gset_false:N \g_@@_literal_bool
- \bool_gset_true:N \g_@@_upGreek_bool
- \bool_gset_true:N \g_@@_upgreek_bool
- \bool_gset_true:N \g_@@_upLatin_bool
- \bool_gset_false:N \g_@@_uplatin_bool
- }
- {upright} {
- \bool_gset_false:N \g_@@_literal_bool
- \bool_gset_true:N \g_@@_upGreek_bool
- \bool_gset_true:N \g_@@_upgreek_bool
- \bool_gset_true:N \g_@@_upLatin_bool
- \bool_gset_true:N \g_@@_uplatin_bool
- }
- {literal} {
- \bool_gset_true:N \g_@@_literal_bool
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\@@_keys_choices:nn {math-style}
- {
- {ISO} {
- \unimathsetup { nabla=upright, partial=italic,
- normal-style=ISO, bold-style=ISO, sans-style=italic }
- }
- {TeX} {
- \unimathsetup { nabla=upright, partial=italic,
- normal-style=TeX, bold-style=TeX, sans-style=upright }
- }
- {french} {
- \unimathsetup { nabla=upright, partial=upright,
- normal-style=french, bold-style=upright, sans-style=upright }
- }
- {upright} {
- \unimathsetup { nabla=upright, partial=upright,
- normal-style=upright, bold-style=upright, sans-style=upright }
- }
- {literal} {
- \unimathsetup { colon=literal, nabla=literal, partial=literal,
- normal-style=literal, bold-style=literal, sans-style=literal }
- }
- }
-% \end{macrocode}
-%
-% \paragraph{bold-style}
-% \begin{macrocode}
-\@@_keys_choices:nn {bold-style}
- {
- {ISO} {
- \bool_gset_false:N \g_@@_bfliteral_bool
- \bool_gset_false:N \g_@@_bfupGreek_bool
- \bool_gset_false:N \g_@@_bfupgreek_bool
- \bool_gset_false:N \g_@@_bfupLatin_bool
- \bool_gset_false:N \g_@@_bfuplatin_bool
- }
- {TeX} {
- \bool_gset_false:N \g_@@_bfliteral_bool
- \bool_gset_true:N \g_@@_bfupGreek_bool
- \bool_gset_false:N \g_@@_bfupgreek_bool
- \bool_gset_true:N \g_@@_bfupLatin_bool
- \bool_gset_true:N \g_@@_bfuplatin_bool
- }
- {upright} {
- \bool_gset_false:N \g_@@_bfliteral_bool
- \bool_gset_true:N \g_@@_bfupGreek_bool
- \bool_gset_true:N \g_@@_bfupgreek_bool
- \bool_gset_true:N \g_@@_bfupLatin_bool
- \bool_gset_true:N \g_@@_bfuplatin_bool
- }
- {literal} {
- \bool_gset_true:N \g_@@_bfliteral_bool
- }
- }
-% \end{macrocode}
-%
-% \paragraph{sans-style}
-% \begin{macrocode}
-\@@_keys_choices:nn {sans-style}
- {
- {italic} { \bool_gset_false:N \g_@@_upsans_bool }
- {upright} { \bool_gset_true:N \g_@@_upsans_bool }
- {literal} { \bool_gset_true:N \g_@@_sfliteral_bool }
- }
-% \end{macrocode}
-%
-%
-% \paragraph{Nabla and partial}
-% \begin{macrocode}
-\@@_keys_choices:nn {nabla}
- {
- {upright} {
- \bool_gset_false:N \g_@@_literal_Nabla_bool
- \bool_gset_true:N \g_@@_upNabla_bool
- }
- {italic} {
- \bool_gset_false:N \g_@@_literal_Nabla_bool
- \bool_gset_false:N \g_@@_upNabla_bool
- }
- {literal} {
- \bool_gset_true:N \g_@@_literal_Nabla_bool
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\@@_keys_choices:nn {partial}
- {
- {upright} {
- \bool_gset_false:N \g_@@_literal_partial_bool
- \bool_gset_true:N \g_@@_uppartial_bool
- }
- {italic} {
- \bool_gset_false:N \g_@@_literal_partial_bool
- \bool_gset_false:N \g_@@_uppartial_bool
- }
- {literal} {
- \bool_gset_true:N \g_@@_literal_partial_bool
- }
- }
-% \end{macrocode}
-%
-% \paragraph{Colon style}
-% \begin{macrocode}
-\@@_keys_choices:nn {colon}
- {
- {literal} { \bool_gset_true:N \g_@@_literal_colon_bool }
- {TeX} { \bool_gset_false:N \g_@@_literal_colon_bool }
- }
-% \end{macrocode}
-%
-% \paragraph{Slash delimiter style}
-% \begin{macrocode}
-\@@_keys_choices:nn {slash-delimiter}
- {
- {ascii} { \tl_gset:Nn \g_@@_slash_delimiter_usv {"002F} }
- {frac} { \tl_gset:Nn \g_@@_slash_delimiter_usv {"2044} }
- {div} { \tl_gset:Nn \g_@@_slash_delimiter_usv {"2215} }
- }
-% \end{macrocode}
-%
-%
-% \paragraph{Active fraction style}
-% \begin{macrocode}
-\@@_keys_choices:nn {active-frac}
- {
- {small}
- {
- \cs_if_exist:NTF \tfrac
- { \bool_set_true:N \l_@@_smallfrac_bool }
- {
- \@@_warning:n {no-tfrac}
- \bool_set_false:N \l_@@_smallfrac_bool
- }
- \use:c {@@_setup_active_frac:}
- }
-
- {normalsize}
- {
- \bool_set_false:N \l_@@_smallfrac_bool
- \use:c {@@_setup_active_frac:}
- }
- }
-% \end{macrocode}
-%
-% \paragraph{Debug/tracing}
-%
-% \begin{macrocode}
-\keys_define:nn {unicode-math}
- {
- warnings-off .code:n =
- {
- \clist_map_inline:nn {#1}
- { \msg_redirect_name:nnn { unicode-math } { ##1 } { none } }
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\@@_keys_choices:nn {trace}
- {
- {on} {} % default
- {debug} { \msg_redirect_module:nnn { unicode-math } { log } { warning } }
- {off} { \msg_redirect_module:nnn { unicode-math } { log } { none } }
- }
-% \end{macrocode}
-%
-% \subsection{Defaults}
-%
-% \begin{macrocode}
-\unimathsetup {math-style=TeX}
-\unimathsetup {slash-delimiter=ascii}
-\unimathsetup {trace=off}
-\unimathsetup {mathrm=text,mathit=text,mathbf=text,mathsf=text,mathtt=text}
-\cs_if_exist:NT \tfrac { \unimathsetup {active-frac=small} }
-\ProcessKeysOptions {unicode-math}
-% \end{macrocode}
-%
-% \begin{macrocode}
-%</package>
-% \end{macrocode}
-
-\endinput
-
-% /©
-%
-% ------------------------------------------------
-% The UNICODE-MATH package <wspr.io/unicode-math>
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% Copyright 2006-2019 Will Robertson, LPPL "maintainer"
-% Copyright 2010-2017 Philipp Stephani
-% Copyright 2011-2017 Joseph Wright
-% Copyright 2012-2015 Khaled Hosny
-% ------------------------------------------------
-%
-% ©/
diff --git a/macros/latex/contrib/unicode-math/um-code-primes.dtx b/macros/latex/contrib/unicode-math/um-code-primes.dtx
deleted file mode 100644
index ad3f3be642..0000000000
--- a/macros/latex/contrib/unicode-math/um-code-primes.dtx
+++ /dev/null
@@ -1,385 +0,0 @@
-%%^^A%% um-code-primes.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
-%%^^A%% The definitions needed for the input of primes.
-
-% \section{Primes}
-%
-% \begin{macrocode}
-%<*package>
-% \end{macrocode}
-%
-% We need a new `prime' algorithm. Unicode math has four pre-drawn prime glyphs.
-% \begin{quote}\obeylines
-% \unichar{2032} {prime} (\cs{prime}): $x\prime$
-% \unichar{2033} {double prime} (\cs{dprime}): $x\dprime$
-% \unichar{2034} {triple prime} (\cs{trprime}): $x\trprime$
-% \unichar{2057} {quadruple prime} (\cs{qprime}): $x\qprime$
-% \end{quote}
-% As you can see, they're all drawn at the correct height without being superscripted.
-% However, in a correctly behaving OpenType font,
-% we also see different behaviour after the \texttt{ssty} feature is applied:
-% \begin{quote}
-% \font\1="[XITSMath-Regular.otf]:script=math,+ssty=0"\1
-% \char"1D465\char"2032\quad
-% \char"1D465\char"2033\quad
-% \char"1D465\char"2034\quad
-% \char"1D465\char"2057
-% \end{quote}
-% The glyphs are now `full size' so that when placed inside a superscript,
-% their shape will match the originally sized ones. Many thanks to Ross Mills
-% of Tiro Typeworks for originally pointing out this behaviour.
-%
-% In regular \LaTeX, primes can be entered with the straight quote character
-% |'|, and multiple straight quotes chain together to produce multiple
-% primes. Better results can be achieved in \pkg{unicode-math} by chaining
-% multiple single primes into a pre-drawn multi-prime glyph; consider
-% $x\prime{}\prime{}\prime$ vs.\ $x\trprime$.
-%
-% For Unicode maths, we wish to conserve this behaviour and augment it with
-% the possibility of adding any combination of Unicode prime or any of the
-% $n$-prime characters. E.g., the user might copy-paste a double prime from
-% another source and then later type another single prime after it; the output
-% should be the triple prime.
-%
-% Our algorithm is:
-% \begin{itemize}[nolistsep]
-% \item Prime encountered; pcount=1.
-% \item Scan ahead; if prime: pcount:=pcount+1; repeat.
-% \item If not prime, stop scanning.
-% \item If pcount=1, \cs{prime}, end.
-% \item If pcount=2, check \cs{dprime}; if it exists, use it, end; if not, goto last step.
-% \item Ditto pcount=3 \& \cs{trprime}.
-% \item Ditto pcount=4 \& \cs{qprime}.
-% \item If pcount>4 or the glyph doesn't exist, insert pcount \cs{prime}s with \cs{primekern} between each.
-% \end{itemize}
-%
-% This is a wrapper to insert a superscript; if there is a subsequent
-% trailing superscript, then it is included within the insertion.
-% \begin{macrocode}
-\cs_new:Nn \@@_arg_i_before_egroup:n {#1\egroup}
-\cs_new:Nn \@@_superscript:n
- {
- ^\bgroup #1
- \peek_meaning_remove:NTF ^ \@@_arg_i_before_egroup:n \egroup
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_nprimes:Nn
- {
- \@@_superscript:n
- {
- #1
- \prg_replicate:nn {#2-1} { \mskip \g_@@_primekern_muskip #1 }
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_nprimes_select:nn
- {
- \int_case:nnF {#2}
- {
- {1} { \@@_superscript:n {#1} }
- {2} {
- \@@_glyph_if_exist:NnTF \g_@@_prime_font_cmd_tl {"2033}
- { \@@_superscript:n {\@@_prime_double_mchar} }
- { \@@_nprimes:Nn #1 {#2} }
- }
- {3} {
- \@@_glyph_if_exist:NnTF \g_@@_prime_font_cmd_tl {"2034}
- { \@@_superscript:n {\@@_prime_triple_mchar} }
- { \@@_nprimes:Nn #1 {#2} }
- }
- {4} {
- \@@_glyph_if_exist:NnTF \g_@@_prime_font_cmd_tl {"2057}
- { \@@_superscript:n {\@@_prime_quad_mchar} }
- { \@@_nprimes:Nn #1 {#2} }
- }
- }
- {
- \@@_nprimes:Nn #1 {#2}
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_nbackprimes_select:nn
- {
- \int_case:nnF {#2}
- {
- {1} { \@@_superscript:n {#1} }
- {2} {
- \@@_glyph_if_exist:NnTF \g_@@_prime_font_cmd_tl {"2036}
- { \@@_superscript:n {\@@_backprime_double_mchar} }
- { \@@_nprimes:Nn #1 {#2} }
- }
- {3} {
- \@@_glyph_if_exist:NnTF \g_@@_prime_font_cmd_tl {"2037}
- { \@@_superscript:n {\@@_backprime_triple_mchar} }
- { \@@_nprimes:Nn #1 {#2} }
- }
- }
- {
- \@@_nprimes:Nn #1 {#2}
- }
- }
-% \end{macrocode}
-%
-% Scanning is annoying because I'm too lazy to do it for the general case.
-%
-% \begin{macrocode}
-\cs_new:Npn \@@_scan_prime:
- {
- \cs_set_eq:NN \@@_superscript:n \use:n
- \int_zero:N \l_@@_primecount_int
- \@@_scanprime_collect:N \@@_prime_single_mchar
- }
-\cs_new:Npn \@@_scan_dprime:
- {
- \cs_set_eq:NN \@@_superscript:n \use:n
- \int_set:Nn \l_@@_primecount_int {1}
- \@@_scanprime_collect:N \@@_prime_single_mchar
- }
-\cs_new:Npn \@@_scan_trprime:
- {
- \cs_set_eq:NN \@@_superscript:n \use:n
- \int_set:Nn \l_@@_primecount_int {2}
- \@@_scanprime_collect:N \@@_prime_single_mchar
- }
-\cs_new:Npn \@@_scan_qprime:
- {
- \cs_set_eq:NN \@@_superscript:n \use:n
- \int_set:Nn \l_@@_primecount_int {3}
- \@@_scanprime_collect:N \@@_prime_single_mchar
- }
-\cs_new:Npn \@@_scan_sup_prime:
- {
- \int_zero:N \l_@@_primecount_int
- \@@_scanprime_collect:N \@@_prime_single_mchar
- }
-\cs_new:Npn \@@_scan_sup_dprime:
- {
- \int_set:Nn \l_@@_primecount_int {1}
- \@@_scanprime_collect:N \@@_prime_single_mchar
- }
-\cs_new:Npn \@@_scan_sup_trprime:
- {
- \int_set:Nn \l_@@_primecount_int {2}
- \@@_scanprime_collect:N \@@_prime_single_mchar
- }
-\cs_new:Npn \@@_scan_sup_qprime:
- {
- \int_set:Nn \l_@@_primecount_int {3}
- \@@_scanprime_collect:N \@@_prime_single_mchar
- }
-\cs_new:Nn \@@_scanprime_collect:N
- {
- \int_incr:N \l_@@_primecount_int
- \peek_meaning_remove:NTF '
- { \@@_scanprime_collect:N #1 }
- {
- \peek_meaning_remove:NTF \@@_scan_prime:
- { \@@_scanprime_collect:N #1 }
- {
- \peek_meaning_remove:NTF ^^^^2032
- { \@@_scanprime_collect:N #1 }
- {
- \peek_meaning_remove:NTF \@@_scan_dprime:
- {
- \int_incr:N \l_@@_primecount_int
- \@@_scanprime_collect:N #1
- }
- {
- \peek_meaning_remove:NTF ^^^^2033
- {
- \int_incr:N \l_@@_primecount_int
- \@@_scanprime_collect:N #1
- }
- {
- \peek_meaning_remove:NTF \@@_scan_trprime:
- {
- \int_add:Nn \l_@@_primecount_int {2}
- \@@_scanprime_collect:N #1
- }
- {
- \peek_meaning_remove:NTF ^^^^2034
- {
- \int_add:Nn \l_@@_primecount_int {2}
- \@@_scanprime_collect:N #1
- }
- {
- \peek_meaning_remove:NTF \@@_scan_qprime:
- {
- \int_add:Nn \l_@@_primecount_int {3}
- \@@_scanprime_collect:N #1
- }
- {
- \peek_meaning_remove:NTF ^^^^2057
- {
- \int_add:Nn \l_@@_primecount_int {3}
- \@@_scanprime_collect:N #1
- }
- {
- \@@_nprimes_select:nn {#1} {\l_@@_primecount_int}
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Npn \@@_scan_backprime:
- {
- \cs_set_eq:NN \@@_superscript:n \use:n
- \int_zero:N \l_@@_primecount_int
- \@@_scanbackprime_collect:N \@@_backprime_single_mchar
- }
-\cs_new:Npn \@@_scan_backdprime:
- {
- \cs_set_eq:NN \@@_superscript:n \use:n
- \int_set:Nn \l_@@_primecount_int {1}
- \@@_scanbackprime_collect:N \@@_backprime_single_mchar
- }
-\cs_new:Npn \@@_scan_backtrprime:
- {
- \cs_set_eq:NN \@@_superscript:n \use:n
- \int_set:Nn \l_@@_primecount_int {2}
- \@@_scanbackprime_collect:N \@@_backprime_single_mchar
- }
-\cs_new:Npn \@@_scan_sup_backprime:
- {
- \int_zero:N \l_@@_primecount_int
- \@@_scanbackprime_collect:N \@@_backprime_single_mchar
- }
-\cs_new:Npn \@@_scan_sup_backdprime:
- {
- \int_set:Nn \l_@@_primecount_int {1}
- \@@_scanbackprime_collect:N \@@_backprime_single_mchar
- }
-\cs_new:Npn \@@_scan_sup_backtrprime:
- {
- \int_set:Nn \l_@@_primecount_int {2}
- \@@_scanbackprime_collect:N \@@_backprime_single_mchar
- }
-\cs_new:Nn \@@_scanbackprime_collect:N
- {
- \int_incr:N \l_@@_primecount_int
- \peek_meaning_remove:NTF `
- {
- \@@_scanbackprime_collect:N #1
- }
- {
- \peek_meaning_remove:NTF \@@_scan_backprime:
- {
- \@@_scanbackprime_collect:N #1
- }
- {
- \peek_meaning_remove:NTF ^^^^2035
- {
- \@@_scanbackprime_collect:N #1
- }
- {
- \peek_meaning_remove:NTF \@@_scan_backdprime:
- {
- \int_incr:N \l_@@_primecount_int
- \@@_scanbackprime_collect:N #1
- }
- {
- \peek_meaning_remove:NTF ^^^^2036
- {
- \int_incr:N \l_@@_primecount_int
- \@@_scanbackprime_collect:N #1
- }
- {
- \peek_meaning_remove:NTF \@@_scan_backtrprime:
- {
- \int_add:Nn \l_@@_primecount_int {2}
- \@@_scanbackprime_collect:N #1
- }
- {
- \peek_meaning_remove:NTF ^^^^2037
- {
- \int_add:Nn \l_@@_primecount_int {2}
- \@@_scanbackprime_collect:N #1
- }
- {
- \@@_nbackprimes_select:nn {#1} {\l_@@_primecount_int}
- }
- }
- }
- }
- }
- }
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\AtBeginDocument { \@@_define_prime_commands: \@@_define_prime_chars: }
-\cs_new:Nn \@@_define_prime_commands:
- {
- \cs_set_eq:NN \prime \@@_prime_single_mchar
- \cs_set_eq:NN \dprime \@@_prime_double_mchar
- \cs_set_eq:NN \trprime \@@_prime_triple_mchar
- \cs_set_eq:NN \qprime \@@_prime_quad_mchar
- \cs_set_eq:NN \backprime \@@_backprime_single_mchar
- \cs_set_eq:NN \backdprime \@@_backprime_double_mchar
- \cs_set_eq:NN \backtrprime \@@_backprime_triple_mchar
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\group_begin:
- \char_set_catcode_active:N \'
- \char_set_catcode_active:N \`
- \char_set_catcode_active:n {"2032}
- \char_set_catcode_active:n {"2033}
- \char_set_catcode_active:n {"2034}
- \char_set_catcode_active:n {"2057}
- \char_set_catcode_active:n {"2035}
- \char_set_catcode_active:n {"2036}
- \char_set_catcode_active:n {"2037}
- \cs_gset:Nn \@@_define_prime_chars:
- {
- \cs_set_eq:NN ' \@@_scan_sup_prime:
- \cs_set_eq:NN ^^^^2032 \@@_scan_sup_prime:
- \cs_set_eq:NN ^^^^2033 \@@_scan_sup_dprime:
- \cs_set_eq:NN ^^^^2034 \@@_scan_sup_trprime:
- \cs_set_eq:NN ^^^^2057 \@@_scan_sup_qprime:
- \cs_set_eq:NN ` \@@_scan_sup_backprime:
- \cs_set_eq:NN ^^^^2035 \@@_scan_sup_backprime:
- \cs_set_eq:NN ^^^^2036 \@@_scan_sup_backdprime:
- \cs_set_eq:NN ^^^^2037 \@@_scan_sup_backtrprime:
- }
-\group_end:
-% \end{macrocode}
-%
-%
-% \begin{macrocode}
-%</package>
-% \end{macrocode}
-
-\endinput
-
-% /©
-%
-% ------------------------------------------------
-% The UNICODE-MATH package <wspr.io/unicode-math>
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% Copyright 2006-2019 Will Robertson, LPPL "maintainer"
-% Copyright 2010-2017 Philipp Stephani
-% Copyright 2011-2017 Joseph Wright
-% Copyright 2012-2015 Khaled Hosny
-% ------------------------------------------------
-%
-% ©/
diff --git a/macros/latex/contrib/unicode-math/um-code-setchar.dtx b/macros/latex/contrib/unicode-math/um-code-setchar.dtx
deleted file mode 100644
index 8d2ba46e2a..0000000000
--- a/macros/latex/contrib/unicode-math/um-code-setchar.dtx
+++ /dev/null
@@ -1,298 +0,0 @@
-%%^^A%% um-code-setchar.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
-%%^^A%% General assignment of maths symbols.
-
-% \section{Setting up maths chars}
-%
-% \begin{macrocode}
-%<*package>
-% \end{macrocode}
-%
-% \subsection{A token list to contain the data of the math table}
-%
-% Instead of \cmd\input-ing the unicode math table every time we
-% want to re-read its data, we save it within a macro. This has two
-% advantages: 1.~it should be slightly faster, at the expense of memory;
-% 2.~we don't need to worry about catcodes later, since they're frozen
-% at this point.
-%
-% In time, the case statement inside |set_mathsymbol| will be moved in here
-% to avoid re-running it every time.
-%
-% \begin{macrocode}
-\group_begin:
- \file_get:nnN {unicode-math-table.tex} {} \l_@@_mathtable_tl
- \cs_set:Npn \UnicodeMathSymbol #1#2#3#4
- {
- \exp_not:n { \_@@_sym:nnn {#1} {#2} {#3} }
- }
- \tl_gset:Nx \g_@@_mathtable_tl {\l_@@_mathtable_tl}
-\group_end:
-% \end{macrocode}
-%
-%
-% \begin{macro}{\@@_input_math_symbol_table:}
-% This function simply expands to the token list containing all the data.
-% \begin{macrocode}
-\@@_cs_new:Nn \@@_input_math_symbol_table: {\g_@@_mathtable_tl}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsection{Definitions of the active math characters}
-%
-% Ensure catcodes are appropriate;
-% make sure |#| is an `other' so that we don't get confused with \cs{mathoctothorpe}.
-% \begin{macrocode}
-\AtBeginDocument{\@@_define_math_chars:}
-\@@_cs_new:Nn \@@_define_math_chars:
- {
- \group_begin:
- \cs_set:Npn \_@@_sym:nnn ##1##2##3
- {
- \tl_if_in:nnT
- { \mathord \mathalpha \mathbin \mathrel \mathpunct \mathop \mathfence }
- {##3}
- {
- \exp_last_unbraced:NNx \cs_gset_eq:NN ##2 { \char_generate:nn {##1} {12} }
- }
- }
- \@@_input_math_symbol_table:
- \group_end:
- }
-% \end{macrocode}
-%
-%
-%
-% \subsection{Commands for each symbol/glyph/char}
-%
-% \begin{macro}{\@@_set_mathsymbol:nNNn}
-% \darg{A \LaTeX\ symbol font, e.g., \texttt{operators}}
-% \darg{Symbol macro, \eg, \cmd\alpha}
-% \darg{Type, \eg, \cmd\mathalpha}
-% \darg{Slot, \eg, \texttt{"221E}}
-% There are a bunch of tests to perform to process the various characters.
-% The following assignments should all be fairly straightforward.
-%
-% The catcode setting is to work around (strange?) behaviour in LuaTeX in which catcode 11 characters don't have italic correction for maths.
-% We don't adjust ascii chars, however, because certain punctuation should not have their catcodes changed.
-% \begin{macrocode}
-\cs_set:Nn \@@_set_mathsymbol:nNNn
- {
- \bool_lazy_and:nnT
- {
- \int_compare_p:nNn {#4} > {127}
- }
- {
- \int_compare_p:nNn { \char_value_catcode:n {#4} } = {11}
- }
- { \char_set_catcode_other:n {#4} }
-
- \tl_case:Nn #3
- {
- \mathord { \@@_set_mathcode:nnn {#4} {#3} {#1} }
- \mathalpha { \@@_set_mathcode:nnn {#4} {#3} {#1} }
- \mathbin { \@@_set_mathcode:nnn {#4} {#3} {#1} }
- \mathrel { \@@_set_mathcode:nnn {#4} {#3} {#1} }
- \mathpunct { \@@_set_mathcode:nnn {#4} {#3} {#1} }
- \mathop { \@@_set_big_operator:nnn {#1} {#2} {#4} }
- \mathopen { \@@_set_math_open:nnn {#1} {#2} {#4} }
- \mathclose { \@@_set_math_close:nnn {#1} {#2} {#4} }
- \mathfence { \@@_set_math_fence:nnnn {#1} {#2} {#3} {#4} }
- \mathaccent
- { \@@_set_math_accent:Nnnn #2 {fixed} {#1} {#4} }
- \mathbotaccent
- { \@@_set_math_accent:Nnnn #2 {bottom~ fixed} {#1} {#4} }
- \mathaccentwide
- { \@@_set_math_accent:Nnnn #2 {} {#1} {#4} }
- \mathbotaccentwide
- { \@@_set_math_accent:Nnnn #2 {bottom} {#1} {#4} }
- \mathover
- { \@@_set_math_overunder:Nnnn #2 {} {#1} {#4} }
- \mathunder
- { \@@_set_math_overunder:Nnnn #2 {bottom} {#1} {#4} }
- \mathaccentoverlay
-%<LU> { \@@_set_math_accent:Nnnn #2 {overlay~ fixed} {#1} {#4} }
-%<XE> { \@@_set_math_accent:Nnnn #2 {} {#1} {#4} }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-\edef\mathfence{\string\mathfence}
-\edef\mathover{\string\mathover}
-\edef\mathunder{\string\mathunder}
-\edef\mathbotaccent{\string\mathbotaccent}
-\edef\mathaccentwide{\string\mathaccentwide}
-\edef\mathaccentoverlay{\string\mathaccentoverlay}
-\edef\mathbotaccentwide{\string\mathbotaccentwide}
-% \end{macrocode}
-%
-%
-% \begin{macro}{\@@_set_big_operator:nnn}
-% \darg{Symbol font name}
-% \darg{Macro to assign}
-% \darg{Glyph slot}
-% In the examples following, say we're defining for the symbol \cmd\sum\ ($\sum$).
-% In order for literal Unicode characters to be used in the source and still
-% have the correct limits behaviour, big operators are made math-active.
-% This involves three steps:
-% \begin{itemize}
-% \item
-% The active math char is defined to expand to the macro \cs{sum_sym}.
-% (Later, the control sequence \cs{sum} will be assigned the math char.)
-% \item
-% Declare the plain old mathchardef for the control sequence \cmd\sumop.
-% (This follows the convention of \LaTeX/\pkg{amsmath}.)
-% \item
-% Define \cs{sum_sym} as \cmd\sumop, followed by \cmd\nolimits\ if necessary.
-% \end{itemize}
-% Whether the \cmd\nolimits\ suffix is inserted is controlled by the
-% token list \cs{l_@@_nolimits_tl}, which contains a list of such characters.
-% This list is checked dynamically to allow it to be updated mid-document.
-%
-% Examples of expansion, by default, for two big operators:
-% \begin{quote}
-% (~\cs{sum} $\to$~) $\sum$ $\to$ \cs{sum_sym} $\to$ \cs{sumop}\cs{nolimits}\par
-% (~\cs{int} $\to$~) $\int$ $\to$ \cs{int_sym} $\to$ \cs{intop}
-% \end{quote}
-% \begin{macrocode}
-\cs_new:Nn \@@_set_big_operator:nnn
- {
- \@@_char_gmake_mathactive:n {#3}
- \cs_set_protected_nopar:Npx \@@_tmpa: { \exp_not:c { \cs_to_str:N #2 _sym } }
- \char_gset_active_eq:nN {#3} \@@_tmpa:
-
- \@@_set_mathchar:cNnn {\cs_to_str:N #2 op} \mathop {#1} {#3}
-
- \cs_gset:cpx { \cs_to_str:N #2 _sym }
- {
- \exp_not:c { \cs_to_str:N #2 op }
- \exp_not:n { \tl_if_in:NnT \l_@@_nolimits_tl {#2} \nolimits }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_set_math_open:nnn}
-% \darg{Symbol font name}
-% \darg{Macro to assign}
-% \darg{Glyph slot}
-% \begin{macrocode}
-\cs_new:Nn \@@_set_math_open:nnn
- {
- \tl_if_in:NnTF \l_@@_radicals_tl {#2}
- {
- \cs_if_exist:NF #2
- {
- %% todo: check if the check is necessary
- \cs_gset_protected_nopar:Npx #2 { \exp_not:c { \cs_to_str:N #2 sign } }
- }
- \cs_gset_protected_nopar:cpx { \cs_to_str:N #2 sign }
- {
- \@@_radical:nn {#1} {#3}
- }
- \tl_if_exist:cF {c_@@_radical_\cs_to_str:N #2_tl}
- {
- \tl_const:cn {c_@@_radical_\cs_to_str:N #2_tl} {\use:c{sym #1}~ #3}
- }
- }
- {
- \@@_set_delcode:nnn {#1} {#3} {#3}
- \@@_set_mathcode:nnn {#3} \mathopen {#1}
- \cs_gset_protected_nopar:Npx #2
- { \@@_delimiter:Nnn \mathopen {#1} {#3} }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_set_math_close:nnn}
-% \darg{Symbol font name}
-% \darg{Macro to assign}
-% \darg{Glyph slot}
-% \begin{macrocode}
-\cs_new:Nn \@@_set_math_close:nnn
- {
- \@@_set_delcode:nnn {#1} {#3} {#3}
- \@@_set_mathcode:nnn {#3} \mathclose {#1}
- \cs_gset_protected_nopar:Npx #2
- { \@@_delimiter:Nnn \mathclose {#1} {#3} }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_set_math_fence:nnnn}
-% \darg{Symbol font name}
-% \darg{Macro to assign}
-% \darg{Type, \eg, \cmd\mathalpha}
-% \darg{Glyph slot}
-% \begin{macrocode}
-\cs_new:Nn \@@_set_math_fence:nnnn
- {
- \@@_set_mathcode:nnn {#4} {#3} {#1}
- \@@_set_delcode:nnn {#1} {#4} {#4}
- \cs_gset_protected_nopar:cpx {l \cs_to_str:N #2}
- { \@@_delimiter:Nnn \mathopen {#1} {#4} }
- \cs_gset_protected_nopar:cpx {r \cs_to_str:N #2}
- { \@@_delimiter:Nnn \mathclose {#1} {#4} }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_set_math_accent:Nnnn}
-% \darg{Accend command}
-% \darg{Accent type (string)}
-% \darg{Symbol font name}
-% \darg{Glyph slot}
-% \begin{macrocode}
-\cs_new:Nn \@@_set_math_accent:Nnnn
- {
- \cs_gset_protected_nopar:Npx #1
- { \@@_accent:nnn {#2} {#3} {#4} }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_set_math_overunder:Nnnn}
-% \darg{Accend command}
-% \darg{Accent type (string)}
-% \darg{Symbol font name}
-% \darg{Glyph slot}
-% \begin{macrocode}
-\cs_new:Nn \@@_set_math_overunder:Nnnn
- {
- \cs_gset_protected_nopar:Npx #1 ##1
- {
- \mathop
- { \@@_accent:nnn {#2} {#3} {#4} {{}##1} }
- % TODO: remove braces above ^^ which work around a LuaTeX bug
- \limits
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macrocode}
-%</package>
-% \end{macrocode}
-
-\endinput
-
-% /©
-%
-% ------------------------------------------------
-% The UNICODE-MATH package <wspr.io/unicode-math>
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% Copyright 2006-2019 Will Robertson, LPPL "maintainer"
-% Copyright 2010-2017 Philipp Stephani
-% Copyright 2011-2017 Joseph Wright
-% Copyright 2012-2015 Khaled Hosny
-% ------------------------------------------------
-%
-% ©/
diff --git a/macros/latex/contrib/unicode-math/um-code-sscript.dtx b/macros/latex/contrib/unicode-math/um-code-sscript.dtx
deleted file mode 100644
index a2192714dd..0000000000
--- a/macros/latex/contrib/unicode-math/um-code-sscript.dtx
+++ /dev/null
@@ -1,238 +0,0 @@
-%%^^A%% um-code-sscript.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
-%%^^A%% Setup for active chars needed to process subscript/superscript input chars.
-
-% \section{Unicode sub- and super-scripts}
-%
-% \begin{macrocode}
-%<*package>
-% \end{macrocode}
-%
-% The idea here is to enter a scanning state after a superscript or subscript
-% is encountered.
-% If subsequent superscripts or subscripts (resp.) are found,
-% they are lumped together.
-% Each sub/super has a corresponding regular size
-% glyph which is used by \XeTeX\ to typeset the results; this means that the
-% actual subscript/superscript glyphs are never seen in the output
-% document~--- they are only used as input characters.
-%
-% Open question: should the superscript-like `modifiers' (\unichar{1D2C}
-% {modifier capital letter a} and on) be included here?
-%
-% \paragraph{Superscripts}
-% Populate a property list with superscript characters; themselves as their
-% key, and their replacement as each key's value.
-% Then make the superscript active and bind it to the scanning function.
-%
-% \cs{scantokens} makes this process much simpler since we can activate the
-% char and assign its meaning in one step.
-% \begin{macrocode}
-\cs_new:Nn \@@_setup_active_superscript:nn
- {
- \prop_gput:Nxn \g_@@_supers_prop { \int_eval:n {#1} } {#2}
- \@@_mathactive_remap:nn {#1}
- {
- \tl_set:Nn \l_@@_ss_chain_tl {#2}
- \cs_set_eq:NN \@@_sub_or_super:n \sp
- \tl_set:Nn \l_@@_tmpa_tl {supers}
- \@@_scan_sscript:
- }
- }
-% \end{macrocode}
-%
-% \paragraph{Subscripts}
-% \begin{macrocode}
-\cs_new:Nn \@@_setup_active_subscript:nn
- {
- \prop_gput:Nxn \g_@@_subs_prop { \int_eval:n {#1} } {#2}
- \@@_mathactive_remap:nn {#1}
- {
- \tl_set:Nn \l_@@_ss_chain_tl {#2}
- \cs_set_eq:NN \@@_sub_or_super:n \sb
- \tl_set:Nn \l_@@_tmpa_tl {subs}
- \@@_scan_sscript:
- }
- }
-% \end{macrocode}
-%
-% \paragraph{The scanning command}
-% Collects a chain of subscripts or a chain
-% of superscripts and then typesets what it has collected.
-% \begin{macrocode}
-\@@_cs_new:Nn \@@_scan_sscript:
- {
- \@@_scan_sscript:TF
- { \@@_scan_sscript: }
- { \@@_sub_or_super:n {\l_@@_ss_chain_tl} }
- }
-% \end{macrocode}
-% We do not skip spaces when scanning ahead, and we explicitly wish to
-% bail out on encountering a space or a brace. These cases are filtered
-% using \cs{peek_N_type:TF}. Otherwise the token can be taken as an
-% \texttt{N}-type argument. Then we search for it in the appropriate
-% property list (\cs{l_@@_tmpa_tl} is |subs| or |supers|).
-% If found, add the value to the current chain of sub/superscripts.
-% Remember to put the character back in the input otherwise.
-% The \cs{group_align_safe_begin:} and \cs{group_align_safe_end:} are
-% needed in case |#3| is |&|.
-% \begin{macrocode}
-\@@_cs_new:Nn \@@_scan_sscript:TF
- {
- \peek_N_type:TF
- {
- \group_align_safe_begin:
- \@@_scan_sscript_aux:nnN {#1} {#2}
- }
- {#2}
- }
-% \end{macrocode}
-% The look-ahead for the sscripts doesn't try to peek inside the lookahead.
-% \begin{macrocode}
-\@@_cs_new:Nn \@@_scan_sscript_aux:nnN
- {
- \tl_set:Nx \l_@@_tmpa_key_tl { \tl_to_str:n {#3} }
- \prop_get:cxNTF {g_@@_\l_@@_tmpa_tl _prop}
- { \int_eval:n { \exp_after:wN ` \l_@@_tmpa_key_tl } }
- \l_@@_tmpb_tl
- {
- \tl_put_right:NV \l_@@_ss_chain_tl \l_@@_tmpb_tl
- \group_align_safe_end:
- #1
- }
- { \group_align_safe_end: #2 #3 }
- }
-% \end{macrocode}
-%
-% \paragraph{Definitions}
-% Superscripts.
-% \begin{macrocode}
-\@@_setup_active_superscript:nn {"2070} {0}
-\@@_setup_active_superscript:nn {"00B9} {1}
-\@@_setup_active_superscript:nn {"00B2} {2}
-\@@_setup_active_superscript:nn {"00B3} {3}
-\@@_setup_active_superscript:nn {"2074} {4}
-\@@_setup_active_superscript:nn {"2075} {5}
-\@@_setup_active_superscript:nn {"2076} {6}
-\@@_setup_active_superscript:nn {"2077} {7}
-\@@_setup_active_superscript:nn {"2078} {8}
-\@@_setup_active_superscript:nn {"2079} {9}
-\@@_setup_active_superscript:nn {"207A} {+}
-\@@_setup_active_superscript:nn {"207B} {-}
-\@@_setup_active_superscript:nn {"207C} {=}
-\@@_setup_active_superscript:nn {"207D} {(}
-\@@_setup_active_superscript:nn {"207E} {)}
-\@@_setup_active_superscript:nn {"1D2C} {A}
-\@@_setup_active_superscript:nn {"1D2E} {B}
-\@@_setup_active_superscript:nn {"1D30} {D}
-\@@_setup_active_superscript:nn {"1D31} {E}
-\@@_setup_active_superscript:nn {"1D33} {G}
-\@@_setup_active_superscript:nn {"1D34} {H}
-\@@_setup_active_superscript:nn {"1D35} {I}
-\@@_setup_active_superscript:nn {"1D36} {J}
-\@@_setup_active_superscript:nn {"1D37} {K}
-\@@_setup_active_superscript:nn {"1D38} {L}
-\@@_setup_active_superscript:nn {"1D39} {M}
-\@@_setup_active_superscript:nn {"1D3A} {N}
-\@@_setup_active_superscript:nn {"1D3C} {O}
-\@@_setup_active_superscript:nn {"1D3E} {P}
-\@@_setup_active_superscript:nn {"1D3F} {R}
-\@@_setup_active_superscript:nn {"1D40} {T}
-\@@_setup_active_superscript:nn {"1D41} {U}
-\@@_setup_active_superscript:nn {"2C7D} {V}
-\@@_setup_active_superscript:nn {"1D42} {W}
-\@@_setup_active_superscript:nn {"1D43} {a}
-\@@_setup_active_superscript:nn {"1D47} {b}
-\@@_setup_active_superscript:nn {"1D9C} {c}
-\@@_setup_active_superscript:nn {"1D48} {d}
-\@@_setup_active_superscript:nn {"1D49} {e}
-\@@_setup_active_superscript:nn {"1DA0} {f}
-\@@_setup_active_superscript:nn {"1D4D} {g}
-\@@_setup_active_superscript:nn {"02B0} {h}
-\@@_setup_active_superscript:nn {"2071} {i}
-\@@_setup_active_superscript:nn {"02B2} {j}
-\@@_setup_active_superscript:nn {"1D4F} {k}
-\@@_setup_active_superscript:nn {"02E1} {l}
-\@@_setup_active_superscript:nn {"1D50} {m}
-\@@_setup_active_superscript:nn {"207F} {n}
-\@@_setup_active_superscript:nn {"1D52} {o}
-\@@_setup_active_superscript:nn {"1D56} {p}
-\@@_setup_active_superscript:nn {"02B3} {r}
-\@@_setup_active_superscript:nn {"02E2} {s}
-\@@_setup_active_superscript:nn {"1D57} {t}
-\@@_setup_active_superscript:nn {"1D58} {u}
-\@@_setup_active_superscript:nn {"1D5B} {v}
-\@@_setup_active_superscript:nn {"02B7} {w}
-\@@_setup_active_superscript:nn {"02E3} {x}
-\@@_setup_active_superscript:nn {"02B8} {y}
-\@@_setup_active_superscript:nn {"1DBB} {z}
-\@@_setup_active_superscript:nn {"1D5D} {\beta}
-\@@_setup_active_superscript:nn {"1D5E} {\gamma}
-\@@_setup_active_superscript:nn {"1D5F} {\delta}
-\@@_setup_active_superscript:nn {"1D60} {\phi}
-\@@_setup_active_superscript:nn {"1D61} {\chi}
-\@@_setup_active_superscript:nn {"1DBF} {\theta}
-% \end{macrocode}
-% A few more subscripts than superscripts:
-% \begin{macrocode}
-\@@_setup_active_subscript:nn {"2080} {0}
-\@@_setup_active_subscript:nn {"2081} {1}
-\@@_setup_active_subscript:nn {"2082} {2}
-\@@_setup_active_subscript:nn {"2083} {3}
-\@@_setup_active_subscript:nn {"2084} {4}
-\@@_setup_active_subscript:nn {"2085} {5}
-\@@_setup_active_subscript:nn {"2086} {6}
-\@@_setup_active_subscript:nn {"2087} {7}
-\@@_setup_active_subscript:nn {"2088} {8}
-\@@_setup_active_subscript:nn {"2089} {9}
-\@@_setup_active_subscript:nn {"208A} {+}
-\@@_setup_active_subscript:nn {"208B} {-}
-\@@_setup_active_subscript:nn {"208C} {=}
-\@@_setup_active_subscript:nn {"208D} {(}
-\@@_setup_active_subscript:nn {"208E} {)}
-\@@_setup_active_subscript:nn {"2090} {a}
-\@@_setup_active_subscript:nn {"2091} {e}
-\@@_setup_active_subscript:nn {"2095} {h}
-\@@_setup_active_subscript:nn {"1D62} {i}
-\@@_setup_active_subscript:nn {"2C7C} {j}
-\@@_setup_active_subscript:nn {"2096} {k}
-\@@_setup_active_subscript:nn {"2097} {l}
-\@@_setup_active_subscript:nn {"2098} {m}
-\@@_setup_active_subscript:nn {"2099} {n}
-\@@_setup_active_subscript:nn {"2092} {o}
-\@@_setup_active_subscript:nn {"209A} {p}
-\@@_setup_active_subscript:nn {"1D63} {r}
-\@@_setup_active_subscript:nn {"209B} {s}
-\@@_setup_active_subscript:nn {"209C} {t}
-\@@_setup_active_subscript:nn {"1D64} {u}
-\@@_setup_active_subscript:nn {"1D65} {v}
-\@@_setup_active_subscript:nn {"2093} {x}
-\@@_setup_active_subscript:nn {"1D66} {\beta}
-\@@_setup_active_subscript:nn {"1D67} {\gamma}
-\@@_setup_active_subscript:nn {"1D68} {\rho}
-\@@_setup_active_subscript:nn {"1D69} {\phi}
-\@@_setup_active_subscript:nn {"1D6A} {\chi}
-% \end{macrocode}
-%
-%
-% \begin{macrocode}
-%</package>
-% \end{macrocode}
-
-\endinput
-
-% /©
-%
-% ------------------------------------------------
-% The UNICODE-MATH package <wspr.io/unicode-math>
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% Copyright 2006-2019 Will Robertson, LPPL "maintainer"
-% Copyright 2010-2017 Philipp Stephani
-% Copyright 2011-2017 Joseph Wright
-% Copyright 2012-2015 Khaled Hosny
-% ------------------------------------------------
-%
-% ©/
diff --git a/macros/latex/contrib/unicode-math/um-code-sym-commands.dtx b/macros/latex/contrib/unicode-math/um-code-sym-commands.dtx
deleted file mode 100644
index b2450878fe..0000000000
--- a/macros/latex/contrib/unicode-math/um-code-sym-commands.dtx
+++ /dev/null
@@ -1,216 +0,0 @@
-%%^^A%% um-code-sym-commands.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
-%%^^A%% Definition of "math symbol alphabet" commands such as `\symbf` and co.
-
-% \section{Mapping in maths alphabets}
-% \label{sec:symcmd}
-%
-% \begin{macrocode}
-%<*package>
-% \end{macrocode}
-%
-%
-% \subsection{Setting styles}
-%
-% Algorithm for setting alphabet fonts.
-% By default, when |range| is empty, we are in \emph{implicit} mode.
-% If |range| contains the name of the math alphabet, we are in \emph{explicit}
-% mode and do things slightly differently.
-%
-% Implicit mode:
-% \begin{itemize}
-% \item Try and set all of the alphabet shapes.
-% \item Check for the first glyph of each alphabet to detect if the font supports each
-% alphabet shape.
-% \item For alphabets that do exist, overwrite whatever’s already there.
-% \item For alphabets that are not supported, \emph{do nothing}.
-% (This includes leaving the old alphabet definition in place.)
-% \end{itemize}
-%
-% Explicit mode:
-% \begin{itemize}
-% \item Only set the alphabets specified.
-% \item Check for the first glyph of the alphabet to detect if the font contains
-% the alphabet shape in the Unicode math plane.
-% \item For Unicode math alphabets, overwrite whatever’s already there.
-% \item Otherwise, use the \ascii\ glyph slots instead.
-% \end{itemize}
-%
-%
-%
-% \subsection{Defining the math style macros}
-%
-% We call the different shapes that a math alphabet can be a `math style’.
-% Note that different alphabets can exist within the same math style. E.g.,
-% we call `bold’ the math style |bf| and within it there are upper and lower
-% case Greek and Roman alphabets and Arabic numerals.
-%
-% \begin{macro}{\@@_prepare_mathstyle:n}
-% \darg{math style name (e.g., \texttt{it} or \texttt{bb})}
-% Define the high level math alphabet macros (\cs{mathit}, etc.) in terms of
-% unicode-math definitions. Use \cs{bgroup}/\cs{egroup} so s’scripts scan the
-% whole thing.
-%
-% The flag \cs{l_@@_mathstyle_tl} is for other applications to query the
-% current math style.
-% \begin{macrocode}
-\@@_cs_new:Nn \@@_prepare_mathstyle:n
- {
- \seq_gput_right:Nn \g_@@_mathstyles_seq {#1}
- \@@_init_alphabet:n {#1}
- \cs_set_protected:cpx {sym#1}
- {
- \@@_group_begin:
- \exp_not:n
- {
- \mode_if_math:F { \exp_args:Nc \non@alpherr {sym#1} }
- \tl_set:Nn \l_@@_mathstyle_tl {#1}
- }
- \@@_switch_to:n {#1}
- \@@_mathgroup_set:n {-1}
- \@@_group_end:n
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\@@_init_alphabet:n}
-% \darg{math alphabet name (e.g., \texttt{it} or \texttt{bb})}
-% This macro initialises the macros used to set up a math alphabet.
-% First used when the math alphabet macro is first defined, but then used
-% later when redefining a particular maths alphabet.
-% \begin{macrocode}
-\@@_cs_new:Nn \@@_init_alphabet:n
- {
- \@@_log:nx {alph-initialise} {#1}
- \tl_gclear_new:c {g_@@_switchto_#1_tl}
- \cs_set_protected:cpn {@@_switchto_#1:} { \tl_use:c {g_@@_switchto_#1_tl} }
- }
-\cs_new_protected:Nn \@@_switch_to:n
- {
- \tl_use:c {g_@@_switchto_#1_tl}
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{Definition of alphabets and styles}
-%
-%
-% The linking between named ranges and symbol style commands happens here.
-% It’s currently not using all of the machinery we’re in the process of setting up above.
-% Baby steps.
-% \begin{macrocode}
-\@@_cs_new:Nn \@@_default_mathalph:nnn
- {
- \prop_new:c {g_@@_named_range_#1_prop}
- \seq_gput_right:Nn \g_@@_default_mathalph_seq {{#1}{#2}{#3}}
- \prop_gput:cnn { g_@@_named_range_#1_prop } { default-alpha } {#2}
- }
-% \end{macrocode}
-% \begin{macrocode}
-\@@_default_mathalph:nnn {up } {latin,Latin,greek,Greek,num,misc} {up }
-\@@_default_mathalph:nnn {it } {latin,Latin,greek,Greek,misc} {it }
-\@@_default_mathalph:nnn {bb } {latin,Latin,num,misc} {bb }
-\@@_default_mathalph:nnn {bbit } {misc} {bbit }
-\@@_default_mathalph:nnn {scr } {latin,Latin} {scr }
-\@@_default_mathalph:nnn {cal } {Latin} {scr }
-\@@_default_mathalph:nnn {bfcal } {Latin} {bfscr }
-\@@_default_mathalph:nnn {frak } {latin,Latin} {frak }
-\@@_default_mathalph:nnn {tt } {latin,Latin,num} {tt }
-\@@_default_mathalph:nnn {sfup } {latin,Latin,num} {sfup }
-\@@_default_mathalph:nnn {sfit } {latin,Latin} {sfit }
-\@@_default_mathalph:nnn {bfup } {latin,Latin,greek,Greek,num,misc} {bfup }
-\@@_default_mathalph:nnn {bfit } {latin,Latin,greek,Greek,misc} {bfit }
-\@@_default_mathalph:nnn {bfscr } {latin,Latin} {bfscr }
-\@@_default_mathalph:nnn {bffrak} {latin,Latin} {bffrak}
-\@@_default_mathalph:nnn {bfsfup} {latin,Latin,greek,Greek,num,misc} {bfsfup}
-\@@_default_mathalph:nnn {bfsfit} {latin,Latin,greek,Greek,misc} {bfsfit}
-% \end{macrocode}
-%
-% \subsubsection{Define symbol style commands}
-% Finally, all of the `symbol styles’ commands are set up, which are the commands to access each of the named alphabet styles. There is not a one-to-one mapping between symbol style commands and named style ranges!
-% \begin{macrocode}
-\clist_map_inline:nn
- {
- up, it, bfup, bfit, sfup, sfit, bfsfup, bfsfit, bfsf,
- tt, bb, bbit, scr, bfscr, cal, bfcal, frak, bffrak,
- normal, literal, sf, bf,
- }
- {
- \@@_prepare_mathstyle:n {#1}
- }
-% \end{macrocode}
-%
-%
-% \subsubsection{New names for legacy textmath alphabet selection}
-% In case a package option overwrites, say, \cs{mathbf} with \cs{symbf}.
-% \begin{macrocode}
-\clist_map_inline:nn
- { rm, it, bf, sf, tt }
- { \cs_set_eq:cc { mathtext #1 } { math #1 } }
-% \end{macrocode}
-% Perhaps these should actually be defined using a hypothetical unicode-math interface to creating new such styles. To come.
-%
-%
-% \subsubsection{Replacing legacy pure-maths alphabets}
-% The following are alphabets which do not have a math/text ambiguity.
-% \begin{macrocode}
-\clist_map_inline:nn
- {
- normal, bb , bbit, scr, bfscr, cal, bfcal, frak, bffrak, tt,
- bfup, bfit, sfup, sfit, bfsfup, bfsfit, bfsf
- }
- {
- \cs_set:cpx { math #1 } { \exp_not:c { sym #1 } }
- }
-% \end{macrocode}
-%
-%
-% \subsubsection{New commands for ambiguous alphabets}
-%
-% \begin{macrocode}
-\AtBeginDocument { \@@_setup_mathtext: }
-\@@_cs_new:Nn \@@_setup_mathtext:
- {
- \clist_map_inline:nn
- { rm, it, bf, sf, tt }
- {
- \cs_set_protected:cpx { math ##1 }
- {
- \exp_not:n { \bool_if:NTF } \exp_not:c { g_@@_ math ##1 _text_bool}
- { \exp_not:c { mathtext ##1 } }
- { \exp_not:c { sym ##1 } }
- }
- }
- }
-% \end{macrocode}
-%
-% \paragraph{Alias \cs{mathrm} as legacy name for \cs{mathup}}
-% \begin{macrocode}
-\cs_set_protected:Npn \mathup { \mathrm }
-\cs_set_protected:Npn \symrm { \symup }
-% \end{macrocode}
-%
-%
-% \begin{macrocode}
-%</package>
-% \end{macrocode}
-
-\endinput
-
-% /©
-%
-% ------------------------------------------------
-% The UNICODE-MATH package <wspr.io/unicode-math>
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% Copyright 2006-2019 Will Robertson, LPPL "maintainer"
-% Copyright 2010-2017 Philipp Stephani
-% Copyright 2011-2017 Joseph Wright
-% Copyright 2012-2015 Khaled Hosny
-% ------------------------------------------------
-%
-% ©/
diff --git a/macros/latex/contrib/unicode-math/um-code-ui.dtx b/macros/latex/contrib/unicode-math/um-code-ui.dtx
deleted file mode 100644
index 38c257d1dc..0000000000
--- a/macros/latex/contrib/unicode-math/um-code-ui.dtx
+++ /dev/null
@@ -1,101 +0,0 @@
-%%^^A%% um-code-ui.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
-%%^^A%% The xparse user interface top-level definitions.
-
-% \section{The user interface commands}
-%
-% \begin{macrocode}
-%<*package>
-% \end{macrocode}
-%
-% \begin{macro}{\unimathsetup}
-% This macro can be used in lieu of or later to override
-% options declared when the package is loaded.
-% \begin{macrocode}
-\NewDocumentCommand \unimathsetup {m} { \keys_set:nn {unicode-math} {#1} }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\setmathfont}
-% \doarg{font features (first optional argument retained for backwards compatibility)}
-% \darg{font name}
-% \doarg{font features}
-% \begin{macrocode}
-\NewDocumentCommand \setmathfont { O{} m O{} }
- {
- \@@_setmathfont:nn {#1,#3} {#2}
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\setmathfontface}
-% \begin{macrocode}
-\NewDocumentCommand \setmathfontface { m O{} m O{} }
- {
- \@@_setmathfontface:Nnn #1 {#2,#4} {#3}
- }
-% \end{macrocode}
-%
-% Note that \LaTeX’s \cs{SetMathAlphabet} simply doesn’t work to “reset” a maths alphabet font after \verb”\begin{document}”, so unlike most of the other maths commands around we still restrict this one to the preamble.
-% \begin{macrocode}
-\@onlypreamble \setmathfontface
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\setoperatorfont}
-% TODO: add check?
-% \begin{macrocode}
-\NewDocumentCommand \setoperatorfont {m}
- {
- \tl_gset:Nn \g_@@_operator_mathfont_tl {#1}
- }
-\setoperatorfont{\mathrm}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\addnolimits}
-% This macro appends material to the macro containing the list of operators
-% that don’t take limits.
-% \begin{macrocode}
-\NewDocumentCommand \addnolimits {m}
- {
- \tl_put_right:Nn \l_@@_nolimits_tl {#1}
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\removenolimits}
-% Can this macro be given a better name?
-% It removes an item from the nolimits list.
-% \begin{macrocode}
-\NewDocumentCommand \removenolimits {m}
- {
- \tl_remove_all:Nn \l_@@_nolimits_tl {#1}
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macrocode}
-%</package>
-% \end{macrocode}
-
-\endinput
-
-% /©
-%
-% ------------------------------------------------
-% The UNICODE-MATH package <wspr.io/unicode-math>
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% Copyright 2006-2019 Will Robertson, LPPL "maintainer"
-% Copyright 2010-2017 Philipp Stephani
-% Copyright 2011-2017 Joseph Wright
-% Copyright 2012-2015 Khaled Hosny
-% ------------------------------------------------
-%
-% ©/
diff --git a/macros/latex/contrib/unicode-math/um-code-usv.dtx b/macros/latex/contrib/unicode-math/um-code-usv.dtx
deleted file mode 100644
index ce24cc4267..0000000000
--- a/macros/latex/contrib/unicode-math/um-code-usv.dtx
+++ /dev/null
@@ -1,592 +0,0 @@
-%%^^A%% um-code-usv.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
-%%^^A%% Mapping of mathematical unicode slots for alphabets.
-
-% \section{Alphabet Unicode positions}
-%
-% Before we begin, let's define the positions of the various Unicode
-% alphabets so that our code is a little more readable.\footnote{`\textsc{u.s.v.}' stands
-% for `Unicode scalar value'.}
-%
-% \begin{macrocode}
-%<*package>
-% \end{macrocode}
-%
-% \paragraph{Alphabets}
-% `Normal':
-% \begin{macrocode}
-\usv_set:nnn {normal} {num} {48}
-\usv_set:nnn {normal} {Latin} {"1D434}
-\usv_set:nnn {normal} {latin} {"1D44E}
-\usv_set:nnn {normal} {Greek} {"1D6E2}
-\usv_set:nnn {normal} {greek} {"1D6FC}
-\usv_set:nnn {normal} {varTheta} {"1D6F3}
-\usv_set:nnn {normal} {epsilon} {"1D716}
-\usv_set:nnn {normal} {vartheta} {"1D717}
-\usv_set:nnn {normal} {varkappa} {"1D718}
-\usv_set:nnn {normal} {phi} {"1D719}
-\usv_set:nnn {normal} {varrho} {"1D71A}
-\usv_set:nnn {normal} {varpi} {"1D71B}
-\usv_set:nnn {normal} {Nabla} {"1D6FB}
-\usv_set:nnn {normal} {partial} {"1D715}
-% \end{macrocode}
-% Regular weights:
-% \begin{macrocode}
-\usv_set:nnn {up} {num} {48}
-\usv_set:nnn {up} {Latin} {65}
-\usv_set:nnn {up} {latin} {97}
-\usv_set:nnn {up} {Greek} {"391}
-\usv_set:nnn {up} {greek} {"3B1}
-\usv_set:nnn {it} {Latin} {"1D434}
-\usv_set:nnn {it} {latin} {"1D44E}
-\usv_set:nnn {it} {Greek} {"1D6E2}
-\usv_set:nnn {it} {greek} {"1D6FC}
-\usv_set:nnn {bb} {num} {"1D7D8}
-\usv_set:nnn {bb} {Latin} {"1D538}
-\usv_set:nnn {bb} {latin} {"1D552}
-\usv_set:nnn {scr} {Latin} {"1D49C}
-\usv_set:nnn {cal} {Latin} {"1D49C}
-\usv_set:nnn {scr} {latin} {"1D4B6}
-\usv_set:nnn {frak} {Latin} {"1D504}
-\usv_set:nnn {frak} {latin} {"1D51E}
-\usv_set:nnn {sf} {num} {"1D7E2}
-\usv_set:nnn {sfup} {num} {"1D7E2}
-\usv_set:nnn {sfit} {num} {"1D7E2}
-\usv_set:nnn {sfup} {Latin} {"1D5A0}
-\usv_set:nnn {sf} {Latin} {"1D5A0}
-\usv_set:nnn {sfup} {latin} {"1D5BA}
-\usv_set:nnn {sf} {latin} {"1D5BA}
-\usv_set:nnn {sfit} {Latin} {"1D608}
-\usv_set:nnn {sfit} {latin} {"1D622}
-\usv_set:nnn {tt} {num} {"1D7F6}
-\usv_set:nnn {tt} {Latin} {"1D670}
-\usv_set:nnn {tt} {latin} {"1D68A}
-% \end{macrocode}
-% Bold weights:
-% \begin{macrocode}
-\usv_set:nnn {bf} {num} {"1D7CE}
-\usv_set:nnn {bfup} {num} {"1D7CE}
-\usv_set:nnn {bfit} {num} {"1D7CE}
-\usv_set:nnn {bfup} {Latin} {"1D400}
-\usv_set:nnn {bfup} {latin} {"1D41A}
-\usv_set:nnn {bfup} {Greek} {"1D6A8}
-\usv_set:nnn {bfup} {greek} {"1D6C2}
-\usv_set:nnn {bfit} {Latin} {"1D468}
-\usv_set:nnn {bfit} {latin} {"1D482}
-\usv_set:nnn {bfit} {Greek} {"1D71C}
-\usv_set:nnn {bfit} {greek} {"1D736}
-\usv_set:nnn {bffrak} {Latin} {"1D56C}
-\usv_set:nnn {bffrak} {latin} {"1D586}
-\usv_set:nnn {bfscr} {Latin} {"1D4D0}
-\usv_set:nnn {bfcal} {Latin} {"1D4D0}
-\usv_set:nnn {bfscr} {latin} {"1D4EA}
-\usv_set:nnn {bfsf} {num} {"1D7EC}
-\usv_set:nnn {bfsfup} {num} {"1D7EC}
-\usv_set:nnn {bfsfit} {num} {"1D7EC}
-\usv_set:nnn {bfsfup} {Latin} {"1D5D4}
-\usv_set:nnn {bfsfup} {latin} {"1D5EE}
-\usv_set:nnn {bfsfup} {Greek} {"1D756}
-\usv_set:nnn {bfsfup} {greek} {"1D770}
-\usv_set:nnn {bfsfit} {Latin} {"1D63C}
-\usv_set:nnn {bfsfit} {latin} {"1D656}
-\usv_set:nnn {bfsfit} {Greek} {"1D790}
-\usv_set:nnn {bfsfit} {greek} {"1D7AA}
-% \end{macrocode}
-% The `auto' bolds:
-% \begin{macrocode}
-\usv_set:nnn {bfsf} {Latin} { \bool_if:NTF \g_@@_upLatin_bool \g_@@_bfsfup_Latin_usv \g_@@_bfsfit_Latin_usv }
-\usv_set:nnn {bfsf} {latin} { \bool_if:NTF \g_@@_uplatin_bool \g_@@_bfsfup_latin_usv \g_@@_bfsfit_latin_usv }
-\usv_set:nnn {bfsf} {Greek} { \bool_if:NTF \g_@@_upGreek_bool \g_@@_bfsfup_Greek_usv \g_@@_bfsfit_Greek_usv }
-\usv_set:nnn {bfsf} {greek} { \bool_if:NTF \g_@@_upgreek_bool \g_@@_bfsfup_greek_usv \g_@@_bfsfit_greek_usv }
-\usv_set:nnn {bf} {Latin} { \bool_if:NTF \g_@@_bfupLatin_bool \g_@@_bfup_Latin_usv \g_@@_bfit_Latin_usv }
-\usv_set:nnn {bf} {latin} { \bool_if:NTF \g_@@_bfuplatin_bool \g_@@_bfup_latin_usv \g_@@_bfit_latin_usv }
-\usv_set:nnn {bf} {Greek} { \bool_if:NTF \g_@@_bfupGreek_bool \g_@@_bfup_Greek_usv \g_@@_bfit_Greek_usv }
-\usv_set:nnn {bf} {greek} { \bool_if:NTF \g_@@_bfupgreek_bool \g_@@_bfup_greek_usv \g_@@_bfit_greek_usv }
-% \end{macrocode}
-% \paragraph{Greek variants}
-% Upright:
-% \begin{macrocode}
-\usv_set:nnn {up} {varTheta} {"3F4}
-\usv_set:nnn {up} {Digamma} {"3DC}
-\usv_set:nnn {up} {epsilon} {"3F5}
-\usv_set:nnn {up} {vartheta} {"3D1}
-\usv_set:nnn {up} {varkappa} {"3F0}
-\usv_set:nnn {up} {phi} {"3D5}
-\usv_set:nnn {up} {varrho} {"3F1}
-\usv_set:nnn {up} {varpi} {"3D6}
-\usv_set:nnn {up} {digamma} {"3DD}
-% \end{macrocode}
-% Bold:
-% \begin{macrocode}
-\usv_set:nnn {bfup} {varTheta} {"1D6B9}
-\usv_set:nnn {bfup} {Digamma} {"1D7CA}
-\usv_set:nnn {bfup} {epsilon} {"1D6DC}
-\usv_set:nnn {bfup} {vartheta} {"1D6DD}
-\usv_set:nnn {bfup} {varkappa} {"1D6DE}
-\usv_set:nnn {bfup} {phi} {"1D6DF}
-\usv_set:nnn {bfup} {varrho} {"1D6E0}
-\usv_set:nnn {bfup} {varpi} {"1D6E1}
-\usv_set:nnn {bfup} {digamma} {"1D7CB}
-% \end{macrocode}
-% Italic:
-% \begin{macrocode}
-\usv_set:nnn {it} {varTheta} {"1D6F3}
-\usv_set:nnn {it} {epsilon} {"1D716}
-\usv_set:nnn {it} {vartheta} {"1D717}
-\usv_set:nnn {it} {varkappa} {"1D718}
-\usv_set:nnn {it} {phi} {"1D719}
-\usv_set:nnn {it} {varrho} {"1D71A}
-\usv_set:nnn {it} {varpi} {"1D71B}
-% \end{macrocode}
-% Bold italic:
-% \begin{macrocode}
-\usv_set:nnn {bfit} {varTheta} {"1D72D}
-\usv_set:nnn {bfit} {epsilon} {"1D750}
-\usv_set:nnn {bfit} {vartheta} {"1D751}
-\usv_set:nnn {bfit} {varkappa} {"1D752}
-\usv_set:nnn {bfit} {phi} {"1D753}
-\usv_set:nnn {bfit} {varrho} {"1D754}
-\usv_set:nnn {bfit} {varpi} {"1D755}
-% \end{macrocode}
-% Bold sans:
-% \begin{macrocode}
-\usv_set:nnn {bfsfup} {varTheta} {"1D767}
-\usv_set:nnn {bfsfup} {epsilon} {"1D78A}
-\usv_set:nnn {bfsfup} {vartheta} {"1D78B}
-\usv_set:nnn {bfsfup} {varkappa} {"1D78C}
-\usv_set:nnn {bfsfup} {phi} {"1D78D}
-\usv_set:nnn {bfsfup} {varrho} {"1D78E}
-\usv_set:nnn {bfsfup} {varpi} {"1D78F}
-% \end{macrocode}
-% Bold sans italic:
-% \begin{macrocode}
-\usv_set:nnn {bfsfit} {varTheta} {"1D7A1}
-\usv_set:nnn {bfsfit} {epsilon} {"1D7C4}
-\usv_set:nnn {bfsfit} {vartheta} {"1D7C5}
-\usv_set:nnn {bfsfit} {varkappa} {"1D7C6}
-\usv_set:nnn {bfsfit} {phi} {"1D7C7}
-\usv_set:nnn {bfsfit} {varrho} {"1D7C8}
-\usv_set:nnn {bfsfit} {varpi} {"1D7C9}
-% \end{macrocode}
-% Nabla:
-% \begin{macrocode}
-\usv_set:nnn {up} {Nabla} {"02207}
-\usv_set:nnn {it} {Nabla} {"1D6FB}
-\usv_set:nnn {bfup} {Nabla} {"1D6C1}
-\usv_set:nnn {bfit} {Nabla} {"1D735}
-\usv_set:nnn {bfsfup} {Nabla} {"1D76F}
-\usv_set:nnn {bfsfit} {Nabla} {"1D7A9}
-% \end{macrocode}
-% Partial:
-% \begin{macrocode}
-\usv_set:nnn {up} {partial} {"02202}
-\usv_set:nnn {it} {partial} {"1D715}
-\usv_set:nnn {bfup} {partial} {"1D6DB}
-\usv_set:nnn {bfit} {partial} {"1D74F}
-\usv_set:nnn {bfsfup} {partial} {"1D789}
-\usv_set:nnn {bfsfit} {partial} {"1D7C3}
-% \end{macrocode}
-%
-% \paragraph{Exceptions}
-% Upright uppercase:
-% \begin{macrocode}
-\usv_set:nnn {up} {B} {`\B}
-\usv_set:nnn {up} {C} {`\C}
-\usv_set:nnn {up} {D} {`\D}
-\usv_set:nnn {up} {E} {`\E}
-\usv_set:nnn {up} {F} {`\F}
-\usv_set:nnn {up} {H} {`\H}
-\usv_set:nnn {up} {I} {`\I}
-\usv_set:nnn {up} {L} {`\L}
-\usv_set:nnn {up} {M} {`\M}
-\usv_set:nnn {up} {N} {`\N}
-\usv_set:nnn {up} {P} {`\P}
-\usv_set:nnn {up} {Q} {`\Q}
-\usv_set:nnn {up} {R} {`\R}
-\usv_set:nnn {up} {Z} {`\Z}
-% \end{macrocode}
-% Italic uppercase:
-% \begin{macrocode}
-\usv_set:nnn {it} {B} {"1D435}
-\usv_set:nnn {it} {C} {"1D436}
-\usv_set:nnn {it} {D} {"1D437}
-\usv_set:nnn {it} {E} {"1D438}
-\usv_set:nnn {it} {F} {"1D439}
-\usv_set:nnn {it} {H} {"1D43B}
-\usv_set:nnn {it} {I} {"1D43C}
-\usv_set:nnn {it} {L} {"1D43F}
-\usv_set:nnn {it} {M} {"1D440}
-\usv_set:nnn {it} {N} {"1D441}
-\usv_set:nnn {it} {P} {"1D443}
-\usv_set:nnn {it} {Q} {"1D444}
-\usv_set:nnn {it} {R} {"1D445}
-\usv_set:nnn {it} {Z} {"1D44D}
-% \end{macrocode}
-% Upright lowercase (needed for later mappings):
-% \begin{macrocode}
-\usv_set:nnn {up} {d} {`\d}
-\usv_set:nnn {up} {e} {`\e}
-\usv_set:nnn {up} {g} {`\g}
-\usv_set:nnn {up} {h} {`\h}
-\usv_set:nnn {up} {i} {`\i}
-\usv_set:nnn {up} {j} {`\j}
-\usv_set:nnn {up} {o} {`\o}
-% \end{macrocode}
-% Italic lowercase:
-% \begin{macrocode}
-\usv_set:nnn {it} {d} {"1D451}
-\usv_set:nnn {it} {e} {"1D452}
-\usv_set:nnn {it} {g} {"1D454}
-\usv_set:nnn {it} {h} {"0210E}
-\usv_set:nnn {it} {i} {"1D456}
-\usv_set:nnn {it} {j} {"1D457}
-\usv_set:nnn {it} {o} {"1D45C}
-% \end{macrocode}
-% Latin `h':
-% \begin{macrocode}
-\usv_set:nnn {bb} {h} {"1D559}
-\usv_set:nnn {tt} {h} {"1D691}
-\usv_set:nnn {scr} {h} {"1D4BD}
-\usv_set:nnn {frak} {h} {"1D525}
-\usv_set:nnn {bfup} {h} {"1D421}
-\usv_set:nnn {bfit} {h} {"1D489}
-\usv_set:nnn {sfup} {h} {"1D5C1}
-\usv_set:nnn {sfit} {h} {"1D629}
-\usv_set:nnn {bffrak} {h} {"1D58D}
-\usv_set:nnn {bfscr} {h} {"1D4F1}
-\usv_set:nnn {bfsfup} {h} {"1D5F5}
-\usv_set:nnn {bfsfit} {h} {"1D65D}
-% \end{macrocode}
-% Dotless `i' and `j:
-% \begin{macrocode}
-\usv_set:nnn {up} {dotlessi} {"00131}
-\usv_set:nnn {up} {dotlessj} {"00237}
-\usv_set:nnn {it} {dotlessi} {"1D6A4}
-\usv_set:nnn {it} {dotlessj} {"1D6A5}
-% \end{macrocode}
-% Blackboard:
-% \begin{macrocode}
-\usv_set:nnn {bb} {C} {"2102}
-\usv_set:nnn {bb} {H} {"210D}
-\usv_set:nnn {bb} {N} {"2115}
-\usv_set:nnn {bb} {P} {"2119}
-\usv_set:nnn {bb} {Q} {"211A}
-\usv_set:nnn {bb} {R} {"211D}
-\usv_set:nnn {bb} {Z} {"2124}
-\usv_set:nnn {up} {Pi} {"003A0}
-\usv_set:nnn {up} {pi} {"003C0}
-\usv_set:nnn {up} {Gamma} {"00393}
-\usv_set:nnn {up} {gamma} {"003B3}
-\usv_set:nnn {up} {summation} {"02211}
-\usv_set:nnn {it} {Pi} {"1D6F1}
-\usv_set:nnn {it} {pi} {"1D70B}
-\usv_set:nnn {it} {Gamma} {"1D6E4}
-\usv_set:nnn {it} {gamma} {"1D6FE}
-\usv_set:nnn {bb} {Pi} {"0213F}
-\usv_set:nnn {bb} {pi} {"0213C}
-\usv_set:nnn {bb} {Gamma} {"0213E}
-\usv_set:nnn {bb} {gamma} {"0213D}
-\usv_set:nnn {bb} {summation} {"02140}
-% \end{macrocode}
-% Italic blackboard:
-% \begin{macrocode}
-\usv_set:nnn {bbit} {D} {"2145}
-\usv_set:nnn {bbit} {d} {"2146}
-\usv_set:nnn {bbit} {e} {"2147}
-\usv_set:nnn {bbit} {i} {"2148}
-\usv_set:nnn {bbit} {j} {"2149}
-% \end{macrocode}
-% Script:
-% \begin{macrocode}
-\usv_set:nnn {scr} {B} {"212C}
-\usv_set:nnn {scr} {E} {"2130}
-\usv_set:nnn {scr} {F} {"2131}
-\usv_set:nnn {scr} {H} {"210B}
-\usv_set:nnn {scr} {I} {"2110}
-\usv_set:nnn {scr} {L} {"2112}
-\usv_set:nnn {scr} {M} {"2133}
-\usv_set:nnn {scr} {R} {"211B}
-\usv_set:nnn {scr} {e} {"212F}
-\usv_set:nnn {scr} {g} {"210A}
-\usv_set:nnn {scr} {o} {"2134}
-% \end{macrocode}
-% Caligraphic:
-% \begin{macrocode}
-\usv_set:nnn {cal} {B} {"212C}
-\usv_set:nnn {cal} {E} {"2130}
-\usv_set:nnn {cal} {F} {"2131}
-\usv_set:nnn {cal} {H} {"210B}
-\usv_set:nnn {cal} {I} {"2110}
-\usv_set:nnn {cal} {L} {"2112}
-\usv_set:nnn {cal} {M} {"2133}
-\usv_set:nnn {cal} {R} {"211B}
-% \end{macrocode}
-% Fractur:
-% \begin{macrocode}
-\usv_set:nnn {frak} {C} {"212D}
-\usv_set:nnn {frak} {H} {"210C}
-\usv_set:nnn {frak} {I} {"2111}
-\usv_set:nnn {frak} {R} {"211C}
-\usv_set:nnn {frak} {Z} {"2128}
-% \end{macrocode}
-%
-% \begin{macrocode}
-%</package>
-% \end{macrocode}
-%
-% \subsection{STIX fonts}
-%
-% Version 1.0.0 of the STIX fonts contains a number of
-% alphabets in the private use area of Unicode; i.e.,
-% it contains many math glyphs that have not (yet or if ever)
-% been accepted into the Unicode standard.
-%
-% But we still want to be able to use them if possible.
-%
-% \begin{macrocode}
-%<*stix>
-% \end{macrocode}
-%
-% \paragraph{Upright}
-% \begin{macrocode}
-\usv_set:nnn {stixsfup}{partial}{"E17C}
-\usv_set:nnn {stixsfup}{Greek}{"E17D}
-\usv_set:nnn {stixsfup}{greek}{"E196}
-\usv_set:nnn {stixsfup}{varTheta}{"E18E}
-\usv_set:nnn {stixsfup}{epsilon}{"E1AF}
-\usv_set:nnn {stixsfup}{vartheta}{"E1B0}
-\usv_set:nnn {stixsfup}{varkappa}{0000} % ???
-\usv_set:nnn {stixsfup}{phi}{"E1B1}
-\usv_set:nnn {stixsfup}{varrho}{"E1B2}
-\usv_set:nnn {stixsfup}{varpi}{"E1B3}
-\usv_set:nnn {stixupslash}{Greek}{"E2FC}
-% \end{macrocode}
-%
-% \paragraph{Italic}
-% \begin{macrocode}
-\usv_set:nnn {stixbbit}{A}{"E154}
-\usv_set:nnn {stixbbit}{B}{"E155}
-\usv_set:nnn {stixbbit}{E}{"E156}
-\usv_set:nnn {stixbbit}{F}{"E157}
-\usv_set:nnn {stixbbit}{G}{"E158}
-\usv_set:nnn {stixbbit}{I}{"E159}
-\usv_set:nnn {stixbbit}{J}{"E15A}
-\usv_set:nnn {stixbbit}{K}{"E15B}
-\usv_set:nnn {stixbbit}{L}{"E15C}
-\usv_set:nnn {stixbbit}{M}{"E15D}
-\usv_set:nnn {stixbbit}{O}{"E15E}
-\usv_set:nnn {stixbbit}{S}{"E15F}
-\usv_set:nnn {stixbbit}{T}{"E160}
-\usv_set:nnn {stixbbit}{U}{"E161}
-\usv_set:nnn {stixbbit}{V}{"E162}
-\usv_set:nnn {stixbbit}{W}{"E163}
-\usv_set:nnn {stixbbit}{X}{"E164}
-\usv_set:nnn {stixbbit}{Y}{"E165}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\usv_set:nnn {stixbbit}{a}{"E166}
-\usv_set:nnn {stixbbit}{b}{"E167}
-\usv_set:nnn {stixbbit}{c}{"E168}
-\usv_set:nnn {stixbbit}{f}{"E169}
-\usv_set:nnn {stixbbit}{g}{"E16A}
-\usv_set:nnn {stixbbit}{h}{"E16B}
-\usv_set:nnn {stixbbit}{k}{"E16C}
-\usv_set:nnn {stixbbit}{l}{"E16D}
-\usv_set:nnn {stixbbit}{m}{"E16E}
-\usv_set:nnn {stixbbit}{n}{"E16F}
-\usv_set:nnn {stixbbit}{o}{"E170}
-\usv_set:nnn {stixbbit}{p}{"E171}
-\usv_set:nnn {stixbbit}{q}{"E172}
-\usv_set:nnn {stixbbit}{r}{"E173}
-\usv_set:nnn {stixbbit}{s}{"E174}
-\usv_set:nnn {stixbbit}{t}{"E175}
-\usv_set:nnn {stixbbit}{u}{"E176}
-\usv_set:nnn {stixbbit}{v}{"E177}
-\usv_set:nnn {stixbbit}{w}{"E178}
-\usv_set:nnn {stixbbit}{x}{"E179}
-\usv_set:nnn {stixbbit}{y}{"E17A}
-\usv_set:nnn {stixbbit}{z}{"E17B}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\usv_set:nnn {stixsfit}{Numerals}{"E1B4}
-\usv_set:nnn {stixsfit}{partial}{"E1BE}
-\usv_set:nnn {stixsfit}{Greek}{"E1BF}
-\usv_set:nnn {stixsfit}{greek}{"E1D8}
-\usv_set:nnn {stixsfit}{varTheta}{"E1D0}
-\usv_set:nnn {stixsfit}{epsilon}{"E1F1}
-\usv_set:nnn {stixsfit}{vartheta}{"E1F2}
-\usv_set:nnn {stixsfit}{varkappa}{0000} % ???
-\usv_set:nnn {stixsfit}{phi}{"E1F3}
-\usv_set:nnn {stixsfit}{varrho}{"E1F4}
-\usv_set:nnn {stixsfit}{varpi}{"E1F5}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\usv_set:nnn {stixcal}{Latin}{"E22D}
-\usv_set:nnn {stixcal}{num}{"E262}
-\usv_set:nnn {scr}{num}{48}
-\usv_set:nnn {it}{num}{48}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\usv_set:nnn {stixsfitslash}{Latin}{"E294}
-\usv_set:nnn {stixsfitslash}{latin}{"E2C8}
-\usv_set:nnn {stixsfitslash}{greek}{"E32C}
-\usv_set:nnn {stixsfitslash}{epsilon}{"E37A}
-\usv_set:nnn {stixsfitslash}{vartheta}{"E35E}
-\usv_set:nnn {stixsfitslash}{varkappa}{"E374}
-\usv_set:nnn {stixsfitslash}{phi}{"E360}
-\usv_set:nnn {stixsfitslash}{varrho}{"E376}
-\usv_set:nnn {stixsfitslash}{varpi}{"E362}
-\usv_set:nnn {stixsfitslash}{digamma}{"E36A}
-% \end{macrocode}
-%
-% \paragraph{Bold}
-%
-% \begin{macrocode}
-\usv_set:nnn {stixbfupslash}{Greek}{"E2FD}
-\usv_set:nnn {stixbfupslash}{Digamma}{"E369}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\usv_set:nnn {stixbfbb}{A}{"E38A}
-\usv_set:nnn {stixbfbb}{B}{"E38B}
-\usv_set:nnn {stixbfbb}{E}{"E38D}
-\usv_set:nnn {stixbfbb}{F}{"E38E}
-\usv_set:nnn {stixbfbb}{G}{"E38F}
-\usv_set:nnn {stixbfbb}{I}{"E390}
-\usv_set:nnn {stixbfbb}{J}{"E391}
-\usv_set:nnn {stixbfbb}{K}{"E392}
-\usv_set:nnn {stixbfbb}{L}{"E393}
-\usv_set:nnn {stixbfbb}{M}{"E394}
-\usv_set:nnn {stixbfbb}{O}{"E395}
-\usv_set:nnn {stixbfbb}{S}{"E396}
-\usv_set:nnn {stixbfbb}{T}{"E397}
-\usv_set:nnn {stixbfbb}{U}{"E398}
-\usv_set:nnn {stixbfbb}{V}{"E399}
-\usv_set:nnn {stixbfbb}{W}{"E39A}
-\usv_set:nnn {stixbfbb}{X}{"E39B}
-\usv_set:nnn {stixbfbb}{Y}{"E39C}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\usv_set:nnn {stixbfbb}{a}{"E39D}
-\usv_set:nnn {stixbfbb}{b}{"E39E}
-\usv_set:nnn {stixbfbb}{c}{"E39F}
-\usv_set:nnn {stixbfbb}{f}{"E3A2}
-\usv_set:nnn {stixbfbb}{g}{"E3A3}
-\usv_set:nnn {stixbfbb}{h}{"E3A4}
-\usv_set:nnn {stixbfbb}{k}{"E3A7}
-\usv_set:nnn {stixbfbb}{l}{"E3A8}
-\usv_set:nnn {stixbfbb}{m}{"E3A9}
-\usv_set:nnn {stixbfbb}{n}{"E3AA}
-\usv_set:nnn {stixbfbb}{o}{"E3AB}
-\usv_set:nnn {stixbfbb}{p}{"E3AC}
-\usv_set:nnn {stixbfbb}{q}{"E3AD}
-\usv_set:nnn {stixbfbb}{r}{"E3AE}
-\usv_set:nnn {stixbfbb}{s}{"E3AF}
-\usv_set:nnn {stixbfbb}{t}{"E3B0}
-\usv_set:nnn {stixbfbb}{u}{"E3B1}
-\usv_set:nnn {stixbfbb}{v}{"E3B2}
-\usv_set:nnn {stixbfbb}{w}{"E3B3}
-\usv_set:nnn {stixbfbb}{x}{"E3B4}
-\usv_set:nnn {stixbfbb}{y}{"E3B5}
-\usv_set:nnn {stixbfbb}{z}{"E3B6}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\usv_set:nnn {stixbfsfup}{Numerals}{"E3B7}
-% \end{macrocode}
-%
-% \paragraph{Bold Italic}
-% \begin{macrocode}
-\usv_set:nnn {stixbfsfit}{Numerals}{"E1F6}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\usv_set:nnn {stixbfbbit}{A}{"E200}
-\usv_set:nnn {stixbfbbit}{B}{"E201}
-\usv_set:nnn {stixbfbbit}{E}{"E203}
-\usv_set:nnn {stixbfbbit}{F}{"E204}
-\usv_set:nnn {stixbfbbit}{G}{"E205}
-\usv_set:nnn {stixbfbbit}{I}{"E206}
-\usv_set:nnn {stixbfbbit}{J}{"E207}
-\usv_set:nnn {stixbfbbit}{K}{"E208}
-\usv_set:nnn {stixbfbbit}{L}{"E209}
-\usv_set:nnn {stixbfbbit}{M}{"E20A}
-\usv_set:nnn {stixbfbbit}{O}{"E20B}
-\usv_set:nnn {stixbfbbit}{S}{"E20C}
-\usv_set:nnn {stixbfbbit}{T}{"E20D}
-\usv_set:nnn {stixbfbbit}{U}{"E20E}
-\usv_set:nnn {stixbfbbit}{V}{"E20F}
-\usv_set:nnn {stixbfbbit}{W}{"E210}
-\usv_set:nnn {stixbfbbit}{X}{"E211}
-\usv_set:nnn {stixbfbbit}{Y}{"E212}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\usv_set:nnn {stixbfbbit}{a}{"E213}
-\usv_set:nnn {stixbfbbit}{b}{"E214}
-\usv_set:nnn {stixbfbbit}{c}{"E215}
-\usv_set:nnn {stixbfbbit}{e}{"E217}
-\usv_set:nnn {stixbfbbit}{f}{"E218}
-\usv_set:nnn {stixbfbbit}{g}{"E219}
-\usv_set:nnn {stixbfbbit}{h}{"E21A}
-\usv_set:nnn {stixbfbbit}{k}{"E21D}
-\usv_set:nnn {stixbfbbit}{l}{"E21E}
-\usv_set:nnn {stixbfbbit}{m}{"E21F}
-\usv_set:nnn {stixbfbbit}{n}{"E220}
-\usv_set:nnn {stixbfbbit}{o}{"E221}
-\usv_set:nnn {stixbfbbit}{p}{"E222}
-\usv_set:nnn {stixbfbbit}{q}{"E223}
-\usv_set:nnn {stixbfbbit}{r}{"E224}
-\usv_set:nnn {stixbfbbit}{s}{"E225}
-\usv_set:nnn {stixbfbbit}{t}{"E226}
-\usv_set:nnn {stixbfbbit}{u}{"E227}
-\usv_set:nnn {stixbfbbit}{v}{"E228}
-\usv_set:nnn {stixbfbbit}{w}{"E229}
-\usv_set:nnn {stixbfbbit}{x}{"E22A}
-\usv_set:nnn {stixbfbbit}{y}{"E22B}
-\usv_set:nnn {stixbfbbit}{z}{"E22C}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\usv_set:nnn {stixbfcal}{Latin}{"E247}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\usv_set:nnn {stixbfitslash}{Latin}{"E295}
-\usv_set:nnn {stixbfitslash}{latin}{"E2C9}
-\usv_set:nnn {stixbfitslash}{greek}{"E32D}
-\usv_set:nnn {stixsfitslash}{epsilon}{"E37B}
-\usv_set:nnn {stixsfitslash}{vartheta}{"E35F}
-\usv_set:nnn {stixsfitslash}{varkappa}{"E375}
-\usv_set:nnn {stixsfitslash}{phi}{"E361}
-\usv_set:nnn {stixsfitslash}{varrho}{"E377}
-\usv_set:nnn {stixsfitslash}{varpi}{"E363}
-\usv_set:nnn {stixsfitslash}{digamma}{"E36B}
-% \end{macrocode}
-%
-% \begin{macrocode}
-%</stix>
-% \end{macrocode}
-
-\endinput
-
-% /©
-%
-% ------------------------------------------------
-% The UNICODE-MATH package <wspr.io/unicode-math>
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% Copyright 2006-2019 Will Robertson, LPPL "maintainer"
-% Copyright 2010-2017 Philipp Stephani
-% Copyright 2011-2017 Joseph Wright
-% Copyright 2012-2015 Khaled Hosny
-% ------------------------------------------------
-%
-% ©/
diff --git a/macros/latex/contrib/unicode-math/um-code-variables.dtx b/macros/latex/contrib/unicode-math/um-code-variables.dtx
deleted file mode 100644
index 840b1ebec5..0000000000
--- a/macros/latex/contrib/unicode-math/um-code-variables.dtx
+++ /dev/null
@@ -1,257 +0,0 @@
-%%^^A%% um-code-variables.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
-%%^^A%% Declaration of all code-level variables used in the package.
-
-% \section{Variable initialisation}
-%
-% \begin{macrocode}
-%<*package>
-% \end{macrocode}
-%
-%
-% \subsection{bool}
-%
-% True if using a proper OpenType font with unicode maths
-% \begin{macrocode}
-\bool_new:N \g_@@_ot_math_bool
-% \end{macrocode}
-%
-% Set when \cs{setmathfont} is run to trap the problem of no main font defined.
-% \begin{macrocode}
-\bool_new:N \g_@@_main_font_defined_bool
-% \end{macrocode}
-%
-% \begin{macrocode}
-\bool_new:N \g_@@_init_bool
-\bool_new:N \l_@@_implicit_alph_bool
-% \end{macrocode}
-% For \opt{math-style}:
-% \begin{macrocode}
-\bool_new:N \g_@@_literal_bool
-\bool_new:N \g_@@_upLatin_bool
-\bool_new:N \g_@@_uplatin_bool
-\bool_new:N \g_@@_upGreek_bool
-\bool_new:N \g_@@_upgreek_bool
-% \end{macrocode}
-% For \opt{bold-style}:
-% \begin{macrocode}
-\bool_new:N \g_@@_bfliteral_bool
-\bool_new:N \g_@@_bfupLatin_bool
-\bool_new:N \g_@@_bfuplatin_bool
-\bool_new:N \g_@@_bfupGreek_bool
-\bool_new:N \g_@@_bfupgreek_bool
-% \end{macrocode}
-% For \opt{sans-style}:
-% \begin{macrocode}
-\bool_new:N \g_@@_upsans_bool
-\bool_new:N \g_@@_sfliteral_bool
-% \end{macrocode}
-% For assorted package options:
-% \begin{macrocode}
-\bool_new:N \g_@@_upNabla_bool
-\bool_new:N \g_@@_uppartial_bool
-\bool_new:N \g_@@_literal_Nabla_bool
-\bool_new:N \g_@@_literal_partial_bool
-\bool_new:N \l_@@_smallfrac_bool
-\bool_new:N \g_@@_literal_colon_bool
-\bool_new:N \g_@@_mathrm_text_bool
-\bool_new:N \g_@@_mathit_text_bool
-\bool_new:N \g_@@_mathbf_text_bool
-\bool_new:N \g_@@_mathsf_text_bool
-\bool_new:N \g_@@_mathtt_text_bool
-% \end{macrocode}
-%
-% \subsection{int}
-%
-% \begin{macrocode}
-\int_new:N \g_@@_fam_int
-\int_new:N \g_@@_fonts_used_int
-\int_new:N \l_@@_primecount_int
-% \end{macrocode}
-%
-% \subsection{tl}
-%
-% \begin{macrocode}
-\tl_if_exist:NF \g_@@_secret_hook_tl { \tl_new:N \g_@@_secret_hook_tl }
-% \end{macrocode}
-%
-% For displaying in warning messages, etc.:
-% \begin{macrocode}
-\tl_const:Nn \c_@@_math_alphabet_name_latin_tl {Latin,~lowercase}
-\tl_const:Nn \c_@@_math_alphabet_name_Latin_tl {Latin,~uppercase}
-\tl_const:Nn \c_@@_math_alphabet_name_greek_tl {Greek,~lowercase}
-\tl_const:Nn \c_@@_math_alphabet_name_Greek_tl {Greek,~uppercase}
-\tl_const:Nn \c_@@_math_alphabet_name_num_tl {Numerals}
-\tl_const:Nn \c_@@_math_alphabet_name_misc_tl {Misc.}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\tl_new:N \l_@@_style_tl
-\tl_new:N \l_@@_family_tl
-\tl_new:N \l_@@_alphabet_tl
-\tl_new:N \l_@@_fontname_tl
-\tl_new:N \l_@@_symfont_label_tl
-\tl_new:N \l_@@_remap_style_tl
-\tl_new:N \l_@@_fam_two_tl
-\tl_new:N \l_@@_fam_three_tl
-\tl_new:N \l_@@_curr_named_slot
-% \end{macrocode}
-%
-% \begin{macrocode}
-\tl_new:N \l_@@_tmpa_tl
-\tl_new:N \l_@@_tmpb_tl
-\tl_new:N \l_@@_tmpc_tl
-\tl_new:N \l_@@_mathstyle_tl
-\tl_new:N \l_@@_radicals_tl
-\tl_new:N \l_@@_nolimits_tl
-\tl_new:N \l_@@_trial_family_tl
-\tl_new:N \l_@@_ss_chain_tl
-\tl_new:N \l_@@_tmpa_key_tl
-% \end{macrocode}
-%
-% Used to store the font switch for the \cs{operator@font}.
-% \begin{macrocode}
-\tl_new:N \g_@@_operator_mathfont_tl
-% \end{macrocode}
-%
-% \begin{macrocode}
-\tl_new:N \g_@@_slash_delimiter_usv
-\tl_new:N \g_@@_mathparam_settings_tl
-\tl_new:N \l_@@_mathtable_tl
-\tl_new:N \g_@@_mathtable_tl
-\tl_new:N \g_@@_fontname_tl
-\tl_new:N \g_@@_mversion_tl
-\tl_new:N \g_@@_symfont_tl
-\tl_new:N \l_@@_font_keyval_tl
-\tl_new:N \g_@@_family_tl
-\tl_new:N \g_@@_style_tl
-\tl_new:N \g_@@_remap_style_tl
-\tl_new:N \l_@@_not_token_name_tl
-\tl_new:N \g_@@_curr_font_cmd_tl
-\tl_new:N \g_@@_sqrt_font_cmd_tl
-\tl_new:N \g_@@_prime_font_cmd_tl
-% \end{macrocode}
-%
-% \begin{macro}{\g_@@_mathparam_store_tl}
-% Used to store and restore the math parameters used in Lua\TeX.
-% This is done to `save' the values of the \emph{first} (or main)
-% maths font loaded, rather than (as per Lua\TeX\ defaults) the last.
-% \begin{macrocode}
-%<*LU>
-\tl_new:N \g_@@_mathparam_store_tl
-%</LU>
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{clist}
-%
-% \begin{macrocode}
-\clist_new:N \g_@@_char_nrange_clist
-\clist_new:N \g_@@_unknown_keys_clist
-\clist_new:N \g_@@_alphabet_clist
-\clist_new:N \l_@@_mathmap_charints_clist
-\clist_new:N \l_@@_unknown_keys_clist
-\clist_new:N \l_@@_keyval_clist
-\clist_new:N \l_@@_alphabet_clist
-% \end{macrocode}
-%
-% \begin{macrocode}
-\clist_new:N \g_@@_bad_alpha_clist
-\clist_gput_right:Nx \g_@@_bad_alpha_clist { \tl_to_str:n {bf} }
-\clist_gput_right:Nx \g_@@_bad_alpha_clist { \tl_to_str:n {sf} }
-\clist_gput_right:Nx \g_@@_bad_alpha_clist { \tl_to_str:n {bfsf} }
-% \end{macrocode}
-%
-% \subsection{seq}
-%
-% \begin{macrocode}
-\seq_new:N \l_@@_missing_alph_seq
-\seq_new:N \g_@@_mathalph_seq
-\seq_new:N \g_@@_char_range_seq
-\seq_new:N \g_@@_mclass_range_seq
-% \end{macrocode}
-%
-% \begin{macro}{\g_@@_mathclasses_seq}
-% Every math class.
-% \begin{macrocode}
-\seq_new:N \g_@@_mathclasses_seq
-\seq_gset_from_clist:Nn \g_@@_mathclasses_seq
- {
- \mathord,\mathalpha,\mathbin,\mathrel,\mathpunct,
- \mathop,
- \mathopen,\mathclose,
- \mathfence,\mathover,\mathunder,
- \mathaccent,\mathaccentoverlay,\mathbotaccent,\mathaccentwide,\mathbotaccentwide
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\g_@@_default_mathalph_seq}
-% This sequence stores the alphabets in each math style.
-% \begin{macrocode}
-\seq_new:N \g_@@_default_mathalph_seq
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\g_@@_mathstyles_seq}
-% This is every `math style' known to \pkg{unicode-math}.
-% A named range is such as "bfit" and "sfit", which are also math styles (with \cs{symbfit} and \cs{symsfit}).
-% `Mathstyles' are a superset of named ranges and also include commands such as \cs{symbf} and \cs{symsf}.
-%
-% N.B. for parsing purposes `named ranges' are defined as strings!
-% \begin{macrocode}
-\seq_new:N \g_@@_mathstyles_seq
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{prop}
-%
-% \begin{macrocode}
-\prop_new:N \g_@@_supers_prop
-\prop_new:N \g_@@_subs_prop
-% \end{macrocode}
-%
-% \subsection{muskip}
-%
-% \begin{macrocode}
-\muskip_new:N \g_@@_primekern_muskip
-\muskip_gset:Nn \g_@@_primekern_muskip { -\thinmuskip/2 }% arbitrary
-% \end{macrocode}
-%
-% \subsection{fp}
-%
-% \begin{macrocode}
-\fp_new:N \g_@@_size_tfsf_fp
-\fp_new:N \g_@@_size_sfssf_fp
-% \end{macrocode}
-%
-% \subsection{quark}
-%
-% \begin{macro}{\q_unicode_math}
-% Used as a flag within control sequences to check they're recognised by the package.
-% \begin{macrocode}
-\quark_new:N \q_unicode_math
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-%</package>
-% \end{macrocode}
-
-\endinput
-
-% /©
-%
-% ------------------------------------------------
-% The UNICODE-MATH package <wspr.io/unicode-math>
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% Copyright 2006-2019 Will Robertson, LPPL "maintainer"
-% Copyright 2010-2017 Philipp Stephani
-% Copyright 2011-2017 Joseph Wright
-% Copyright 2012-2015 Khaled Hosny
-% ------------------------------------------------
-%
-% ©/
diff --git a/macros/latex/contrib/unicode-math/um-doc-legacyfontdimen.tex b/macros/latex/contrib/unicode-math/um-doc-legacyfontdimen.tex
deleted file mode 100644
index 5adb24e9f6..0000000000
--- a/macros/latex/contrib/unicode-math/um-doc-legacyfontdimen.tex
+++ /dev/null
@@ -1,76 +0,0 @@
-%%^^A%% um-doc-legacyfontdimen.tex -- part of UNICODE-MATH <wspr.io/unicode-math>
-
-\section{Legacy \TeX\ font dimensions}
-
-\centerline{%
-\begin{tabular}[t]{@{}lp{4cm}@{}}
-\toprule
-\multicolumn{2}{@{}c@{}}{Text fonts} \\
-\midrule
-$\phi_1$ & slant per pt \\
-$\phi_2$ & interword space \\
-$\phi_3$ & interword stretch \\
-$\phi_4$ & interword shrink \\
-$\phi_5$ & x-height \\
-$\phi_6$ & quad width \\
-$\phi_7$ & extra space \\
-$\phi_8$ & cap height (\XeTeX\ only) \\
-\bottomrule
-\end{tabular}
-\quad
-\begin{tabular}[t]{@{}lp{4cm}@{}}
-\toprule
-\multicolumn{2}{@{}c@{}}{Maths font, \cs{fam}2} \\
-\midrule
-$\sigma_5$ & x height \\
-$\sigma_6$ & quad \\
-$\sigma_8$ & num1 \\
-$\sigma_9$ & num2 \\
-$\sigma_{10}$ & num3 \\
-$\sigma_{11}$ & denom1 \\
-$\sigma_{12}$ & denom2 \\
-$\sigma_{13}$ & sup1 \\
-$\sigma_{14}$ & sup2 \\
-$\sigma_{15}$ & sup3 \\
-$\sigma_{16}$ & sub1 \\
-$\sigma_{17}$ & sub2 \\
-$\sigma_{18}$ & sup drop \\
-$\sigma_{19}$ & sub drop \\
-$\sigma_{20}$ & delim1 \\
-$\sigma_{21}$ & delim2 \\
-$\sigma_{22}$ & axis height \\
-\bottomrule
-\end{tabular}
-\quad
-\begin{tabular}[t]{@{}lp{4cm}@{}}
-\toprule
-\multicolumn{2}{@{}c@{}}{Maths font, \cs{fam}3} \\
-\midrule
-$\xi_8$ & default rule thickness \\
-$\xi_9$ & big op spacing1 \\
-$\xi_{10}$ & big op spacing2 \\
-$\xi_{11}$ & big op spacing3 \\
-$\xi_{12}$ & big op spacing4 \\
-$\xi_{13}$ & big op spacing5 \\
-\bottomrule
-\end{tabular}
-}
-
-\endinput
-
-% /©
-%
-% ------------------------------------------------
-% The UNICODE-MATH package <wspr.io/unicode-math>
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% Copyright 2006-2019 Will Robertson, LPPL "maintainer"
-% Copyright 2010-2017 Philipp Stephani
-% Copyright 2011-2017 Joseph Wright
-% Copyright 2012-2015 Khaled Hosny
-% ------------------------------------------------
-%
-% ©/
diff --git a/macros/latex/contrib/unicode-math/um-doc-main.tex b/macros/latex/contrib/unicode-math/um-doc-main.tex
deleted file mode 100644
index 5c0bc22ed1..0000000000
--- a/macros/latex/contrib/unicode-math/um-doc-main.tex
+++ /dev/null
@@ -1,1238 +0,0 @@
-%%^^A%% um-doc-main.tex -- part of UNICODE-MATH <wspr.io/unicode-math>
-
-\begin{abstract}
-\noindent
-This document describes the \pkg{unicode-math} package, which is
-intended as an implementation of Unicode
-maths for \LaTeX\ using the \XeTeX\ and Lua\TeX\ typesetting engines.
-With this package, changing maths fonts is as easy as changing
-text fonts --- and there are more and more maths fonts appearing now.
-Maths input can also be simplified with Unicode since literal glyphs may be
-entered instead of control sequences in your document source.
-
-The package provides support for both \XeTeX\ and Lua\TeX. The different
-engines provide differing levels of support for Unicode maths.
-Please let us know of any troubles.
-
-Alongside this documentation file, you should be able to find a minimal
-example demonstrating the use of the package,
-`\texttt{unimath-example.ltx}'. It also comes with a separate document,
-`\texttt{unimath-symbols.pdf}',
-containing a complete listing of mathematical symbols defined by
-\pkg{unicode-math}, including comparisons between different fonts.
-
-Finally, while the STIX fonts may be used with this package, accessing
-their alphabets in their `private user area' is not yet supported.
-(Of these additional alphabets there is a separate caligraphic design
-distinct to the script design already included.)
-Better support for the STIX fonts is planned for an upcoming revision of the
-package after any problems have been ironed out with the initial version.
-
-\end{abstract}
-
-\newpage
-\tableofcontents
-
-\clearpage
-\section{Introduction}
-
-This document describes the \pkg{unicode-math} package, which is an
-\emph{experimental} implementation of a macro to Unicode glyph encoding for
-mathematical characters.
-
-Users who desire to specify maths alphabets only (Greek and Latin letters,
-and Arabic numerals)
-may wish to use Andrew Moschou's \pkg{mathspec} package instead.
-(\XeTeX-only at time of writing.)
-Note that \pkg{unicode-math} and \pkg{mathspec} are not compatible with each other.
-
-\section{Acknowledgements}
-
-Many thanks to:
-Microsoft for developing the mathematics extension to OpenType as part of
-Microsoft Office~2007;
-Jonathan Kew for implementing Unicode math support in \XeTeX;
-Taco Hoekwater for implementing Unicode math support in \LuaTeX;
-Barbara Beeton for her prodigious effort compiling the definitive list of Unicode math
-glyphs and their \LaTeX\ names (inventing them where necessary), and also
-for her thoughtful replies to my sometimes incessant questions;
-Philipp Stephani for extending the package to support \LuaTeX.
-Ross Moore and Chris Rowley have provided moral and technical support
-from the very early days with great insight into the issues we face trying
-to extend and use \TeX\ in the future.
-Apostolos Syropoulos, Joel Salomon, Khaled Hosny, and Mariusz Wodzicki
-have been fantastic beta testers.
-
-\section{Getting started}
-
-Load \pkg{unicode-math} as a regular \LaTeX\ package. It should be loaded
-after any other maths or font-related package in case it needs to overwrite
-their definitions. Here's an example using the filename syntax to load the \TeX\ Gyre Pagella Math font: (this works for both \XeLaTeX\ and \LuaLaTeX)
-\begin{Verbatim}
-\usepackage{amsmath}
-\usepackage{unicode-math}
-\setmathfont{texgyrepagella-math.otf}
-\end{Verbatim}
-
-Once the package is loaded, traditional TFM-based maths fonts are no longer supported;
-you can only switch to a different OpenType maths font using the \cs{setmathfont} command.
-If you do not load an OpenType maths font before |\begin{document}|, Latin Modern Math will be loaded automatically.
-
-Note that \pkg{amsmath} should be loaded before \pkg{unicode-math} to avoid conflicts, and
-it will be loaded automatically if not requested earlier in the preamble.
-
-
-\subsection{New commands}
-\LaTeX, since the first version of \LaTeXe, changed the math group
-selection from, say, |{\bf x}| to |\mathbf{x}|. It introduced commands
-such as |\mathbf|, |\mathit|, |\mathsf|, |\mathtt| and |\mathcal|,
-besides |\mathnormal|. This was not only done to maintain the analogy
-with |\textbf|, |\textit| and so on, but with the precise purpose of
-loading the needed math groups (or math families) on demand and not
-allocating them if not required by the document.
-
-The introduction of \pkg{unicode-math} posed some problems fitting into this design. For
-instance, there is a big difference between say |fit| as an operator
-name in boldface type and the product of three boldface variables.
-With legacy \TeX{} engines, |\mathbf{fit}| would use a ligature and
-the same would happen with the input |\mathbf{f}\mathbf{i}\mathbf{t}|.
-For the latter case, the user should probably use |\mathbf{f\/}|.
-
-However, there is another important point from a \emph{conceptual}
-point of view. A boldface variable name should be printed using the
-\emph{math font}, whereas a boldface operator name should be printed
-using the \emph{text font}. OpenType math fonts make this distinction
-feasible, because they contain several math alphabets. Of course a
-boldface text~`x' will not differ much (or at all) from a boldface
-math~`x', but this is not the point: they \emph{should} be considered
-different, because the former is |U+0078| in Unicode, the latter is
-|U+1D431|.
-
-It was clear that \emph{two} different commands are needed: one for using text boldface in math,
-one for using math boldface. Only the document's author can know
-whether one or the other is needed. The decision was to split off
-the two meanings with a command like |\mathbf| for the boldface text font
-in math and a command like |\symbf| (for the bold math font).
-
-The five new symbol font commands that behave in this way are: \cs{symup},
-\cs{symit}, \cs{symbf}, \cs{symsf}, and \cs{symtt}.
-These commands switch to single-letter mathematical symbols
-(generally within the same OpenType font).
-
-The legacy \cs{math..} commands switch to text fonts that are set up to behave
-correctly in mathematics, and should be used for multi-letter identifiers. These
-could be denoted `text math alphabets'; further details are discussed
-in \secref{mathselect}. Additional similar `text math alphabet'
-commands can be defined using the \cs{setmathfontface} command
-discussed in \secref{mathselect}. To control the behaviour of the
-default text math alphabet commands to behave in a
-backwards-compatible mode, see the package options described in
-\secref{textmathlegacy}.
-
-
-\begin{table}[t!]
- \topcaption{New \pkg{unicode-math} commands which overlap with legacy
- math commands. For new documents the \texttt{sym} versions are recommended.}
- \tablabel{symvsmath}
- \centering
- \begin{tabular}[t]{ll}
- \toprule
- Command & Synonym \\
- \midrule
- \cs{symnormal} & \cs{mathnormal} \\
- \cs{symliteral} & \\
- & \\
- & \\
- & \\
- \cs{symbb} & \cs{mathbb} \\
- \cs{symbbit} & \cs{mathbbit} \\
- \cs{symcal} & \cs{mathcal} \\
- \cs{symscr} & \cs{mathscr} \\
- \cs{symfrak} & \cs{mathfrak} \\
- \cs{symsfup} & \cs{mathsfup} \\
- \cs{symsfit} & \cs{mathsfit} \\
- \bottomrule
- \end{tabular}\qquad
- \begin{tabular}[t]{ll}
- \toprule
- Command & Synonym \\
- \midrule
- & \\
- & \\
- \cs{symbfsf} & \cs{mathbfsf} \\
- \cs{symbfup} & \cs{mathbfup} \\
- \cs{symbfit} & \cs{mathbfit} \\
- & \\
- & \\
- \cs{symbfcal} & \cs{mathbfcal} \\
- \cs{symbfscr} & \cs{mathbfscr} \\
- \cs{symbffrak} & \cs{mathbffrak} \\
- \cs{symbfsfup} & \cs{mathbfsfup} \\
- \cs{symbfsfit} & \cs{mathbfsfit} \\
- \bottomrule
- \end{tabular}
-\end{table}
-
-In addition, \pkg{unicode-math} also provides a number of commands (such as
-|\symcal|) to select specific `symbol alphabets' within the unicode
-maths font, with usage, e.g., |$\symcal{G}$|${}\to\symcal{G}$. The
-full listing is shown in \Tabref{symvsmath}. For backwards
-compatibility, many of these are also defined with `familiar' synonyms
-such as |\mathcal|. However, where possible the `sym' prefix
-commands should be preferred, as certain synonyms may become
-deprecated in time. The |\symliteral| command is described in
-\secref{math-style}.
-
-Using the |\sym..| commands, the glyphs used to produce PDF output are Unicode-encoded,
-and therefore a symbol such as $\symcal{G}$ can be copy-pasted into another programme
-(or even into the source of another \LaTeX\ document using \pkg{unicode-math}) without
-loss of meaning.
-This is an important aspect of Unicode mathematics, but the \pkg{unicode-math} package
-is not `pure' in the sense that the package also provides other mechanisms to change
-the fonts used in the PDF output; the philosophy of the package is to provide mechanisms
-for technical authors to invent and experiment with new syntaxes for their work.
-
-
-\subsection{Package options}
-Package options may be set when the package as loaded or at any later
-stage with the \cs{unimathsetup} command. Therefore, the following two
-examples are equivalent:
-\begin{Verbatim}
-\usepackage[math-style=TeX]{unicode-math}
-% OR
-\usepackage{unicode-math}
-\unimathsetup{math-style=TeX}
-\end{Verbatim}
-Note, however, that some package options affects how maths is initialised
-and changing an option such as |math-style| will not take effect until a
-new maths font is set up.
-
-Package options may \emph{also} be used when declaring new maths fonts,
-passed via options to the \cs{setmathfont} command.
-Therefore, the following two examples are equivalent:
-\begin{Verbatim}
-\unimathsetup{math-style=TeX}
-\setmathfont{texgyrepagella-math.otf}
-% OR
-\setmathfont{texgyrepagella-math.otf}[math-style=TeX]
-\end{Verbatim}
-
-A summary list of package options is shown in \tabref{pkgopt}.
-See following sections for more information.
-
-\begin{table}\centering
- \topcaption{Package options.}
- \tablabel{pkgopt}
- \begin{tabular}{lll}
- \toprule
- Option & Description & See\dots \\
- \midrule
- |math-style| & Style of letters & \secref*{math-style} \\
- |bold-style| & Style of bold letters & \secref*{bold-style} \\
- |sans-style| & Style of sans serif letters & \secref*{sans-style} \\
- |nabla| & Style of the nabla symbol & \secref*{nabla} \\
- |partial| & Style of the partial symbol & \secref*{partial} \\
- |colon| & Behaviour of \cs{colon} & \secref*{colon} \\
- |slash-delimiter| & Glyph to use for `stretchy' slash & \secref*{slash-delimiter} \\
- \bottomrule
- \end{tabular}
-\end{table}
-
-
-\section{Unicode maths font setup}
-
-In the ideal case, a single Unicode font will contain all maths glyphs we
-need. The file |unicode-math-table.tex| (based on Barbara Beeton's \STIX\ table)
-provides the mapping between Unicode
-maths glyphs and macro names (all 3298 — or however many — of them!). A
-single command
-\codeline{\cmd\setmathfont\marg{font name}\oarg{font features}}
-implements this for every every symbol and alphabetic variant.
-That means |x| to $x$, |\xi| to $\xi$, |\leq| to $\leq$, etc., |\symscr{H}|
-to $\symscr{H}$ and so on, all for Unicode glyphs within a single font.
-
-This package deals well with Unicode characters for maths
-input. This includes using literal Greek letters in formulae,
-resolving to upright or italic depending on preference.
-
-Font features specific to \pkg{unicode-math} are shown in \tabref{mathfontfeatures}.
-Package options (see \tabref{pkgopt}) may also be used.
-Other \pkg{fontspec} features are also valid.
-
-\begin{table}\centering
- \topcaption{Maths font options.}
- \tablabel{mathfontfeatures}
- \begin{tabular}{lll}
- \toprule
- Option & Description & See\dots \\
- \midrule
- |range| & Style of letters & \secref{range} \\
- |script-font| & Font to use for sub- and super-scripts & \secref{sscript} \\
- |script-features| & Font features for sub- and super-scripts & \secref{sscript} \\
- |sscript-font| & Font to use for nested sub- and super-scripts & \secref{sscript} \\
- |sscript-features| & Font features for nested sub- and super-scripts & \secref{sscript} \\
- \bottomrule
- \end{tabular}
-\end{table}
-
-\subsection{Using multiple fonts}
-\seclabel{range}
-
-There will probably be few cases where a single Unicode maths font suffices
-(simply due to glyph coverage). The \STIX\ font comes to mind as a
-possible exception. It will therefore be necessary to delegate specific
-Unicode ranges of glyphs to separate fonts:
- \codeline{\cmd\setmathfont\marg{font name}|[range=|\meta{unicode range}|,|\meta{font features}|]|}
-where \meta{unicode range} is a comma-separated list of Unicode slot numbers and ranges such as |{"27D0-"27EB,"27FF,"295B-"297F}|.
-Note that \TeX's syntax for accessing the slot number of a character, such as |`\+|, will also work here.
-Only numerical slots can be used in ranged declarations.
-
-Note that, for efficiency, the \pkg{unicode-math} package only loads a default maths setup when absolutely necessary.
-Before you use the |range| option you must first load a `main' maths font in the standard way.
-
-You may also use the macro for accessing the glyph, such as |range=|\cs{int}, or whole collection of symbols with the same math type, such as |range=\mathopen|, or complete math styles such as |range=\symbb| (or just |range=bb|).
-
-\subsubsection{Control over alphabet ranges}
-
-As discussed earlier, Unicode mathematics consists of a number of `alphabet styles' within a single font. In \pkg{unicode-math}, these ranges are indicated with the following (hopefully self-explanatory) labels:
-\begin{quote}\ttfamily
-\ExplSyntaxOn
-\clist_const:Nn \g__um_named_ranges_clist {
-up ,
-it ,
-bb ,
-bbit ,
-scr ,
-cal ,
-bfcal ,
-frak ,
-tt ,
-sfup ,
-sfit ,
-bfup ,
-bfit ,
-bfscr ,
-bffrak,
-bfsfup,
-bfsfit,
-}
-\clist_use:Nn \g__um_named_ranges_clist {\,,\,~}
-\ExplSyntaxOff
-\end{quote}
-Fonts can be selected (for predefined ranges only) using the following syntax, in which case all other maths font setup remains untouched:
-\begin{itemize}
-\item |[range=bb]| to use the font for `|bb|' letters only.
-\item |[range=bfsfit/{greek,Greek}]| for Greek lowercase and uppercase only (also with |latin|, |Latin|, |num| as possible options for Latin lower-/upper-case and numbers, resp.).
-\item |[range=up->sfup]| to map to different output styles.
-\end{itemize}
-
-A common request is to load numerals only from a specific font. This can be
-achieved with an option such as |range=up/{num}|.
-
-Note that `meta-styles' such as `|bf|' and `|sf|' are not included in the list above since they are context dependent. Use |[range=bfup]| and |[range=bfit]| to effect changes to the particular ranges selected by `|bf|' (and similarly for `|sf|').
-
-If a particular math style is not defined in the font, we fall back onto the lower-base plane (i.e., `upright') glyphs.
-Therefore, to use an \ascii-encoded fractur font, for example, write
-\begin{Verbatim}
- \setmathfont{SomeFracturFont}[range=frak]
-\end{Verbatim}
-and because the math plane fractur glyphs will be missing, \pkg{unicode-math} will know to use the \ascii\ ones instead.
-If necessary this behaviour can be forced with |[range=frak->up]|, since the `|up|' range corresponds to \ascii\ letters.
-
-%If you wanted to swap the maths symbols with sans serif forms, it would be possible to write |[range={up->sfup,it->sfit}]|.
-%Note, however, that at present Unicode does not encode glyphs for sans serif Greek (\tabref{mathalphabets}).
-
-Users of the impressive Minion Math fonts (commercial) may use remapping to access the bold glyphs using:
-\begin{Verbatim}
- \setmathfont{MinionMath-Regular.otf}
- \setmathfont{MinionMath-Bold.otf}[range={bfup->up,bfit->it}]
-\end{Verbatim}
-To set up the complete range of optical sizes for these fonts, a font declaration such as the following may be used: (adjust may be desired according to the font size of the document)
-\begin{Verbatim}
-\setmathfont{Minion Math}[
- SizeFeatures = {
- {Size = -6.01, Font = MinionMath-Tiny},
- {Size = 6.01-8.41, Font = MinionMath-Capt},
- {Size = 8.41-13.01, Font = MinionMath-Regular},
- {Size = 13.01-19.91, Font = MinionMath-Subh},
- {Size = 19.91-, Font = MinionMath-Disp}
- }]
-
-\setmathfont{Minion Math}[range = {bfup->up,bfit->it},
- SizeFeatures = {
- {Size = -6.01, Font = MinionMath-BoldTiny},
- {Size = 6.01-8.41, Font = MinionMath-BoldCapt},
- {Size = 8.41-13.01, Font = MinionMath-Bold},
- {Size = 13.01-19.91, Font = MinionMath-BoldSubh},
- {Size = 19.91-, Font = MinionMath-BoldDisp}
- }]
-\end{Verbatim}
-
-
-\subsection{Script and scriptscript fonts/features}
-\seclabel{sscript}
-
-Cambria Math uses OpenType font features to activate smaller optical sizes
-for scriptsize and scriptscriptsize symbols (the $B$ and $C$, respectively,
-in $A_{B_C}$).
-Other typefaces (such as Minion Math) may use entirely separate font files.
-
-The features |script-font| and |sscript-font| allow alternate fonts to be
-selected for the script and scriptscript sizes, and |script-features| and
-|sscript-features| to apply different OpenType features to them.
-
-By default |script-features| is defined as |Style=MathScript| and |sscript-features| is |Style=MathScriptScript|.
-These correspond to the two levels of OpenType's |ssty| feature tag.
-If the |(s)script-features| options are specified manually, you must
-additionally specify the |Style| options as above.
-
-
-\subsection{Maths `versions'}
-
-\LaTeX\ uses a concept known as `maths versions' to switch math fonts
-mid-document.
-This is useful because it is more efficient than loading a complete maths
-font from scratch every time---especially with thousands of glyphs in the case of Unicode maths!
-The canonical example for maths versions is to select a `bold' maths font
-which might be suitable for section headings, say.
-(Not everyone agrees with this typesetting choice, though; be careful.)
-
-To select a new maths font in a particular version, use the syntax
- \codeline{\cmd\setmathfont\marg{font name}|[version=|\meta{version name}|,|\meta{font features}|]|}
-and to switch between maths versions mid-document use the standard \LaTeX\ command
-\cmd\mathversion\marg{version name}.
-
-Note there are currently open issues regarding the interaction between the |version|
-and the |range| features, so please proceed with caution.
-
-\subsection{Legacy maths `alphabet' commands}
-\seclabel{mathselect}
-
-\LaTeX\ traditionally uses \cs{DeclareMathAlphabet} and \cs{SetMathAlphabet} to define document commands such as \cs{mathit}, \cs{mathbf}, and so on.
-While these commands can still be used, \pkg{unicode-math} defines a wrapper command to assist with the creation of new such maths alphabet commands.
-This command is known as \cs{setmathface} in symmetry with \pkg{fontspec}'s \cs{newfontface} command; it takes syntax:
-\begin{quote}
- \cmd\setmathfontface\meta{command}\marg{font name}|[|\meta{font features}|]|
-
- \makebox[0pt][l]{\cmd\setmathfontface\meta{command}\marg{font name}|[||version=|\meta{version name}|,|\meta{font features}|]|}
-\end{quote}
-For example, if you want to define a new legacy maths alphabet font \cs{mathittt}:
-\begin{verbatim}
- \setmathfontface\mathittt{texgyrecursor-italic.otf}
- ...
- $\mathittt{foo} = \mathittt{a} + \mathittt{b}$
-\end{verbatim}
-
-
-\subsubsection{Default `text math' fonts}
-
-The five `text math' fonts, discussed above, are: \cs{mathrm}, \cs{mathbf}, \cs{mathit}, \cs{mathsf}, and \cs{mathtt}.
-These commands are also defined with their original definition under synonyms \cs{mathtextrm}, \cs{mathtextbf}, and so on.
-(These definitions hold regardless of package option, in case you need to be sure.)
-
-When selecting document fonts using \pkg{fontspec} commands such as \cs{setmainfont}, \pkg{unicode-math} inserts some additional code into \pkg{fontspec} that keeps the current default fonts `in sync' with their corresponding \cs{mathrm} commands, etc.
-
-For example, in standard \LaTeX, \cs{mathsf} doesn't change even if the main document font is changed using |\renewcommand\sfdefault{...}|. With \pkg{unicode-math} loaded, after writing |\setsansfont{Helvetica}|, \cs{mathsf} will now be set in Helvetica.
-
-If the \cs{mathsf} font is set explicitly at any time in the preamble, this `auto-following' does not occur. The legacy math font switches can be defined either with commands defined by \pkg{fontspec} (|\setmathrm|, |\setmathsf|, etc.) or using the more general |\setmathfontface\mathsf| interface defined by \pkg{unicode-math}.
-
-
-\subsubsection{Replacing `text math' fonts by symbols}
-\seclabel{textmathlegacy}
-
-For certain types of documents that use legacy input syntax, it may be preferable to have |\mathbf| behave as if it were |\symbf| en masse (et cetera respectively).
-A series of package options (\tabref{legacyfontswitch}) are provided to facilitate switching the definition of \cs{mathXYZ} for the five legacy text math font definitions.
-
-For example, if in a particular document |\mathbf| is used only for choosing symbols of vectors and matrices, a dedicated symbol font (|\symbf|) will produce better spacing and will better match the main math font.
-In that case loading |unicode-math| with the |mathbf=sym| will achieve the desired result.
-
-\begin{table}
- \centering
- \topcaption{Maths text font configuration options. Note that \cs{mathup} and \cs{mathrm} are aliases of each other and cannot be configured separately.}
- \tablabel{legacyfontswitch}
- \begin{tabular}{lll}
- \toprule
- Defaults (from `text' font) & From `maths symbols' \\
- \midrule
- |mathrm=text| & |mathrm=sym | \\
- |mathup=text|\rlap{$^\ast$} & |mathup=sym|{}\rlap{$^\ast$} \\
- |mathit=text| & |mathit=sym | \\
- |mathsf=text| & |mathsf=sym | \\
- |mathbf=text| & |mathbf=sym | \\
- |mathtt=text| & |mathtt=sym | \\
- \bottomrule
- \end{tabular}
-\end{table}
-
-
-\subsubsection{Operator font}
-
-\LaTeX\ defines an internal command \cs{operator@font} for typesetting elements such as |\sin| and |\cos|.
-This font is selected from the legacy |operators| NFSS `MathAlphabet', which is no longer relevant in the context of \pkg{unicode-math}.
-By default, the \cs{operator@font} command is defined to switch to the \cs{mathrm} font.
-You may now change these using the command:
-\begin{Verbatim}
-\setoperatorfont\mathit
-\end{Verbatim}
-Or, to select a \pkg{unicode-math} range:
-\begin{Verbatim}
-\setoperatorfont\symscr
-\end{Verbatim}
-\setoperatorfont\symscr
-For example, after the latter above, |$\sin x$| will produce `$\sin x$'.
-
-\mathversion{normal}
-\setoperatorfont\mathrm
-
-
-\section{Maths input}
-
-\XeTeX's Unicode support allows maths input through two methods. Like
-classical \TeX, macros such as \cmd\alpha, \cmd\sum, \cmd\pm, \cmd\leq, and
-so on, provide verbose access to the entire repertoire of characters defined
-by Unicode. The literal characters themselves may be used instead, for more
-readable input files.
-
-\subsection{Math `style'}
-\seclabel{math-style}
-
-Classically, \TeX\ uses italic lowercase Greek letters and \emph{upright}
-uppercase Greek letters for variables in mathematics. This is contrary to
-the \textsc{iso} standards of using italic forms for both upper- and lowercase.
-Furthermore, in various historical contexts, often associated with French typesetting, it was common to use upright uppercase \emph{Latin} letters as well as upright
-upper- and lowercase Greek, but italic lowercase latin. Finally, it is not unknown to use upright letters
-for all characters, as seen in the Euler fonts.
-
-The \pkg{unicode-math} package accommodates these possibilities with the
-option \opt{math-style} that takes one of five (case sensitive) arguments:
-\opt{TeX}, \opt{ISO}, \opt{french}, \opt{upright}, or \opt{literal}.\footnote{Interface inspired by Walter Schmidt's \pkg{lucimatx} package.}
-The \opt{math-style} options' effects are shown in brief in \tabref{math-style}.
-
-The philosophy behind the interface to the mathematical symbols
-lies in \LaTeX's attempt of separating content and formatting. Because input
-source text may come from a variety of places, the upright and
-`mathematical' italic Latin and Greek alphabets are \emph{unified} from the
-point of view of having a specified meaning in the source text. That is, to
-get a mathematical ‘$x$’, either the \ascii\ (`keyboard') letter |x| may
-be typed, or the actual Unicode character may be used. Similarly for Greek
-letters. The upright or italic forms are then chosen based on the
-|math-style| package option.
-
-If glyphs are desired that do not map as per the package option (for
-example, an upright `g' is desired but typing |$g$| yields `$g$'),
-\emph{markup} is required to specify this; to follow from the example:
-|\symup{g}|.
-Maths style commands such as \cmd\symup\ are detailed later.
-
-For compatibility and consistency, however, upright and italic Greek letters
-can be `forced` using \verb|up| or \verb|it| prefixes before their names.
-For example, \cs{Gamma} will give an upright or italic Gamma depending on the
-\opt{math-style}, but \cs{upGamma} and \cs{itGamma} will always give upright
-or italic Gammas, respectively.
-
-\paragraph{`Literal' interface}
-Some may not like this convention of normalising their input.
-For them, an upright |x| is an upright `x' and that's that.
-(This will be the case when obtaining source text from copy/pasting PDF or
-Microsoft Word documents, for example.)
-For these users, the |literal| option to |math-style| will effect this behaviour.
-The \cs{symliteral}\marg{syms} command can also be used, regardless of package setting, to force the style to match the literal input characters.
-This is a `mirror' to \cs{symnormal}\marg{syms} (also alias \cs{mathnormal}) which `resets' the character mapping in its argument to that originally set up through package options.
-
-
-\begin{table}
- \centering
- \topcaption{Effects of the \opt{math-style} package option.}
- \tablabel{math-style}
- \begin{tabular}{@{}>{\ttfamily}lcc@{}}
- \toprule
- & \multicolumn{2}{c}{Example} \\
- \cmidrule(l){2-3}
- \rmfamily Package option & Latin & Greek \\
- \midrule
- math-style=ISO & $(a,z,B,X)$ & $\symit{(\alpha,\beta,\Gamma,\Xi)}$ \\
- math-style=TeX & $(a,z,B,X)$ & $(\symit\alpha,\symit\beta,\symup\Gamma,\symup\Xi)$ \\
- math-style=french & $(a,z,\symup B,\symup X)$ & $(\symup\alpha,\symup\beta,\symup\Gamma,\symup\Xi)$ \\
- math-style=upright & $(\symup a,\symup z,\symup B,\symup X)$ & $(\symup\alpha,\symup\beta,\symup\Gamma,\symup\Xi)$ \\
- \bottomrule
- \end{tabular}
-\end{table}
-
-\paragraph{`Full-width' letters}
-Unicode contains `full-width' versions of ASCII from \unichar{FF01}.
-The numerals and latin letters in this range are defined by \pkg{unicode-math}
-to map to their standard ASCII counterparts, which are then controlled by the relevant \opt{math-style} setting.
-Other full-width symbols are not currently included but can be if there is sufficient need or desire.
-
-\subsection{Bold style}
-\seclabel{bold-style}
-
-Similar as in the previous section, ISO standards differ somewhat to \TeX's
-conventions (and classical typesetting) for `boldness' in mathematics. In
-the past, it has been customary to use bold \emph{upright} letters to denote
-things like vectors and matrices. For example, \( \symbfup{M} =
-(\mitM_x,\mitM_y,\mitM_z) \). Presumably, this was due to the relatively
-scarcity of bold italic fonts in the pre-digital typesetting era.
-It has been suggested by some that \emph{italic} bold symbols should be used nowadays instead, but this practise is certainly not widespread.
-
-Bold Greek letters have simply been bold variant glyphs of their regular
-weight, as in \( \mbfitxi = (\mitxi_\mitr,\mitxi_\mitphi,\mitxi_\mittheta)
-\).
-Confusingly, the syntax in \LaTeX\ traditionally has been different for obtaining `normal' bold symbols in Latin and Greek: \cmd\mathbf\ in the former (`$\symbfup{M}$'), and \cmd\bm\ (or
-\cmd\boldsymbol, deprecated) in the latter (`$\mbfitxi$').
-
-In \pkg{unicode-math}, the \cmd\symbf\ command works directly with both
-Greek and Latin maths characters and depending on package option
-either switches to upright for Latin letters (|bold-style=TeX|) as well or
-keeps them italic (|bold-style=ISO|).
-To match the package options for non-bold characters, with option
-|bold-style=upright| all bold characters are upright, and
-|bold-style=literal| does not change the upright/italic shape of the letter.
-The \opt{bold-style} options' effects are shown in brief in \tabref{bold-style}.
-
-Upright and italic bold mathematical letters input as direct Unicode
-characters are normalised with the same rules. For example, with
-|bold-style=TeX|, a literal bold italic latin character will be typeset
-upright.
-
-Note that \opt{bold-style} is independent of \opt{math-style}, although if
-the former is not specified then matching defaults are chosen based on the
-latter.
-
-\begin{table}
- \centering
- \topcaption{Effects of the \opt{bold-style} package option.}
- \tablabel{bold-style}
- \begin{tabular}{@{}>{\ttfamily}lcc@{}}
- \toprule
- & \multicolumn{2}{c}{Example} \\
- \cmidrule(l){2-3}
- \rmfamily Package option & Latin & Greek \\
- \midrule
- bold-style=ISO & $(\symbfit a, \symbfit z, \symbfit B, \symbfit X)$ & $(\symbfit\alpha, \symbfit\beta, \symbfit\Gamma, \symbfit\Xi)$ \\
- bold-style=TeX & $(\symbfup a,\symbfup z,\symbfup B,\symbfup X)$ & $(\symbfit\alpha, \symbfit\beta,\symbfup \Gamma,\symbfup \Xi)$ \\
- bold-style=upright & $(\symbfup a,\symbfup z,\symbfup B,\symbfup X)$ & $(\symbfup \alpha,\symbfup \beta,\symbfup \Gamma,\symbfup \Xi)$ \\
- \bottomrule
- \end{tabular}
-\end{table}
-
-
-\subsection{Sans serif style}
-\seclabel{sans-style}
-
-Unicode contains upright and italic, medium and bold mathematical style characters.
-These may be explicitly selected with the \cs{symsfup}, \cs{symsfit}, \cs{symbfsfup}, and \cs{symbfsfit}
-commands discussed in \secref{all-math-alphabets}.
-
-How should the generic \cs{symsf} behave? Unlike bold, sans serif is used much more sparingly
-in mathematics. I've seen recommendations to typeset tensors in sans serif italic
-or sans serif italic bold (e.g., examples in the \pkg{isomath} and \pkg{mattens} packages).
-But \LaTeX's \cs{mathsf} is \textsl{upright} sans serif.
-
-Therefore, the package options |[sans-style=upright]| and |[sans-style=italic]| control the behaviour of \cs{symsf}.
-The |upright| style sets up the command to use upright sans serif, including Greek;
-the |italic| style switches to using italic in both Latin and Greek.
-In other words, this option simply changes the meaning of \cs{symsf} to either \cs{symsfup} or \cs{symsfit}, respectively.
-Please let me know if more granular control is necessary here.
-
-There is also a |[sans-style=literal]| setting, set automatically with |[math-style=literal]|, which retains the uprightness of the input characters used when selecting the sans serif output.
-
-\subsubsection{What about bold sans serif?}
-
-While you might want your bold upright and your sans serif italic, I don't believe you'd also want your bold sans serif upright (etc.).
-Therefore, bold sans serif follows from the setting for sans serif; it is completely independent of the setting for bold.
-
-In other words, \cs{symbfsf} is either \cs{symbfsfup} or \cs{symbfsfit} based on |[sans-style=upright]| or |[sans-style=italic]|, respectively. And \texttt{[sans-style = literal]} causes \cs{symbfsf} to retain the same italic or upright shape as the input, and turns it bold sans serif.
-
-N.B.: there is no medium-weight sans serif Greek range in Unicode.
-Therefore, |\symsf{\alpha}| does not make sense (it produces `$\symsf{\alpha}$'), while |\symbfsf{\alpha}| gives `$\symbfsfup{\alpha}$' or `$\symbfsfit{\alpha}$' according to the |sans-style|.
-
-\subsection{All (the rest) of the mathematical styles}
-\seclabel{all-math-alphabets}
-
-Unicode contains separate codepoints for most if not all variations of style
-shape one may wish to use in mathematical notation. The complete list is shown
-in \tabref{mathalphabets}. Some of these have been covered in the previous sections.
-
-The math font switching commands do not nest; therefore if you want
-sans serif bold, you must write |\symbfsf{...}| rather than |\symbf{\symsf{...}}|.
-This may change in the future.
-
-\begin{table}
-\caption{Mathematical styles defined in Unicode. Closed dots indicate an style exists in the font specified; open dots indicate shapes that should always be taken from the upright font even in the italic style. See main text for description of \cs{mathbbit}.}
-\tablabel{mathalphabets}
-\centering
-\def\Y{\textbullet}
-\def\M{\textopenbullet}
-\begin{tabular}{@{} lll l ccc @{}}
-\toprule
-\multicolumn{3}{c}{Font} & & \multicolumn{3}{c}{Alphabet} \\
-\cmidrule(r){1-3}
-\cmidrule(l){5-7}
-Style & Shape & Series & Switch & Latin & Greek & Numerals \\
-\midrule
-Serif & Upright & Normal & \cs{symup} & \Y & \Y & \Y \\
- & & Bold & \cs{symbfup} & \Y & \Y & \Y \\
- & Italic & Normal & \cs{symit} & \Y & \Y & \M \\
- & & Bold & \cs{symbfit} & \Y & \Y & \M \\
-Sans serif & Upright & Normal & \cs{symsfup} & \Y & & \Y \\
- & & Bold & \cs{symbfsfup} & \Y & \Y & \Y \\
- & Italic & Normal & \cs{symsfit} & \Y & & \M \\
- & & Bold & \cs{symbfsfit} & \Y & \Y & \M \\
-Typewriter & Upright & Normal & \cs{symtt} & \Y & & \Y \\
-Double-struck & Upright & Normal & \cs{symbb} & \Y & & \Y \\
- & Italic & Normal & \cs{symbbit} & \Y & & \\
-Script & Upright & Normal & \cs{symscr} & \Y & & \\
- & & Bold & \cs{symbfscr} & \Y & & \\
-Fraktur & Upright & Normal & \cs{symfrak} & \Y & & \\
- & & Bold & \cs{symbffrac} & \Y & & \\
-\bottomrule
-\end{tabular}
-\end{table}
-
-\subsubsection{Scope of the functionality of the \cs{sym..} commands}
-
-The \cs{sym..} commands are designed to affect only the follow sets of input letters: numerals ($0$--$9$), Latin ($a$--$z$, $A$--$Z$), Greek ($\alpha$--$\omega$, $\Alpha$--$\Omega$,), and the \cs{partial} and \cs{nabla} symbols ($\partial$, $\nabla$).
-These are the only symbols for which Unicode defines separate codepoints with varying mathematical style.
-
-There is currently no scope for including other symbols in the \cs{sym..} commands, such as writing |\symbf{\int}| for a bold integral symbol.
-Therefore the commands provided by \pkg{unicode-math} should not be compared to those provided by the \pkg{bm} package.
-
-\subsubsection{Double-struck}
-
-The double-struck style (also known as `blackboard bold') consists of
-upright Latin letters $\{\symbb{a}$--$\symbb{z}$,$\symbb{A}$$\symbb{Z}\}$,
-numerals $\symbb{0}$--$\symbb{9}$, summation symbol $\symbb\sum$, and four
-Greek letters only: $\{\symbb{\gamma\pi\Gamma\Pi}\}$.
-
-While |\symbb{\sum}| does produce a double-struck summation symbol,
-its limits aren't properly aligned. Therefore,
-either the literal character or the control sequence \cs{Bbbsum} are
-recommended instead.
-
-There are also five Latin \emph{italic} double-struck letters: $\symbbit{Ddeij}$.
-These can be accessed (if not with their literal characters or control sequences)
-with the \cs{mathbbit} style switch, but note that only those five letters
-will give the expected output.
-
-\subsubsection{Caligraphic vs.\ Script variants}
-
-The Unicode maths encoding contains a style for `Script' letters,
-and while by default \cs{mathcal} and \cs{mathscr}
-are synonyms, there are some situations when a
-separate `Caligraphic' style is needed as well.
-
-If a font contains alternate glyphs for a separate caligraphic style,
-they can be selected explicitly as shown below.
-This feature is currently only supported by the XITS~Math font, where
-the caligraphic letters are accessed with the same glyph slots as the
-script letters but with the first stylistic set feature (|ss01|) applied.
-An example is shown below.
-\begin{quote}
-\setmathfont{XITSMath-Regular.otf}
-\setmathfont{XITSMath-Regular.otf}[range=cal,StylisticSet=1]
-The Script style (\cs{mathscr}) in XITS Math is: $\symscr{ABCXYZ}$\par
-The Caligraphic style (\cs{mathcal}) in XITS Math is: $\symcal{ABCXYZ}$
-\end{quote}
-
-
-\subsection{Miscellanea}
-
-\subsubsection{Nabla}
-\seclabel{nabla}
-
- The symbol $\nabla$ comes in the six forms shown in \tabref{nabla}.
- We want an individual option to specify whether we want upright or italic
- nabla by default (when either upright or italic nabla is used in the
- source). \TeX\ classically uses an upright nabla, and \textsc{iso}
- standards agree with this convention.
- The package options |nabla=upright| (default) and
- |nabla=italic| switch between the two choices, and |nabla=literal| respects
- the shape of the input character.
-|nabla=literal| is activated automatically after |math-style=literal|.
-
-These settings are then inherited through \cmd\symbf; \cmd\symit\ and \cmd\symup\ can be used to force the shape of the nabla one way or the other.
-
-
-\begin{table}
- \begin{minipage}[b]{0.49\textwidth}
- \centering
- \topcaption{The various forms of nabla.}
- \tablabel{nabla}
- \let \tmpshow\empty
- \begin{tabular}{@{}llc@{}}
- \toprule
- \multicolumn{2}{@{}l}{Description} & Glyph \\
- \cmidrule(r){1-2}\cmidrule(l){3-3}
- Upright & Serif & $\symup\nabla$ \\
- & Bold serif & $\symbfup\nabla$ \\
- & Bold sans & $\symbfsfup\nabla$ \\
- \cmidrule(lr){1-2}\cmidrule(lr){3-3}
- Italic & Serif & $\symit\nabla$ \\
- & Bold serif & $\symbfit\nabla$ \\
- & Bold sans & $\symbfsfit\nabla$ \\
- \bottomrule
- \end{tabular}
- \end{minipage}\hfill
- \begin{minipage}[b]{0.49\textwidth}
- \centering
- \topcaption{The partial differential.}
- \tablabel{partial}
- \begin{tabular}{@{}llc@{}}
- \toprule
- \multicolumn{2}{@{}l}{Description} & Glyph \\
- \cmidrule(r){1-2}\cmidrule(l){3-3}
- Regular & Upright & $\symup\partial$ \\
- & Italic & $\symit\partial$ \\
- Bold & Upright & $\symbfup\partial$ \\
- & Italic & $\symbfit\partial$ \\
- Sans bold & Upright & $\symbfsfup\partial$ \\
- & Italic & $\symbfsfit\partial$ \\
- \bottomrule
- \end{tabular}
- \end{minipage}
-\end{table}
-
-
-\subsubsection{Partial}
-\seclabel{partial}
-
-The same logic as for nabla applies to the symbols \unichar{2202} partial differential and \unichar{1D715} math italic partial differential.
-However, in practice these symbols are often designed identically in an italic style.
-
-If the font you are using supports it, use the |partial=upright| or |partial=italic| (default) package options to specify
-which one you would like, or |partial=literal| to have the same character
-used in the output as was used for the input.
-|partial=literal| is activated following |math-style=literal|.
-
-See \tabref{partial} for the variations on the partial differential symbol.
-
-
-\subsubsection{Primes}
-
-Primes ($x'$) may be input in several ways. You may use any combination
-the \ascii\ straight quote (\texttt{\char`\'}) or the Unicode prime \unichar{2032}
-($'$); when multiple primes occur next to each other, they chain
-together to form double, triple, or quadruple primes if the font contains
-pre-drawn glyphs. The individual prime glyphs are accessed, as usual,
-with the \cs{prime} command, and the double-, triple-, and quadruple-prime
-glyphs are available with \cs{dprime}, \cs{trprime}, and \cs{qprime},
-respectively.
-
-If the font does not contain the pre-drawn glyphs or more than four primes
-are used, the single prime glyph is used multiple times with a negative
-kern to get the spacing right. There is no user interface to adjust this
-negative kern yet (because I haven't decided what it should look like);
-if you need to, write something like this:
-\begin{Verbatim}
-\ExplSyntaxOn
-\muskip_gset:Nn \g_@@_primekern_muskip { -\thinmuskip/2 }
-\ExplySyntaxOff
-\end{Verbatim}
-Backwards or reverse primes behave in exactly the same way; use the \ascii\
-back tick (\texttt{\char`\`}) or the Unicode reverse prime \unichar{2035}
-({\umfont\char"2035}).
-The command to access the backprime is \cs{backprime}, and
-multiple backwards primes can accessed with \cs{backdprime},
-\cs{backtrprime}, and \cs{backqprime}.
-
-In all cases above, no error checking is performed if you attempt to
-access a multi-prime glyph in a font that doesn't contain one. For this
-reason, it may be safer to write |x''''| instead of |x\qprime|
-in general.
-
-If you ever need to enter the straight quote |'| or the backtick |`| in
-maths mode, these glyphs can be accessed with \cs{mathstraightquote} and
-\cs{mathbacktick}.
-
-\subsubsection{Subscripts and superscripts and symbol alphabets}
-
-In traditional \LaTeX, users have for many years exploited a loophole in the implementation
-of |\mathrm| and similar to write expressions such as |x_\mathrm f| to achieve
-$x_{\mathrm{f}}$ instead of writing the more correct |x_{\mathrm{f}}|.
-Shorthand notation such as |x_\mathrm f| is not officially documented \LaTeX\ syntax,
-and due to a particular implementation detail in \pkg{unicode-math} this \emph{incorrect}
-syntax is no longer supported.
-
-
-\subsubsection{Unicode subscripts and superscripts}
-
-You may, if you wish, use Unicode subscripts and superscripts in your
-source document. For basic expressions, the use of these characters
-can make the input more readable.
-Adjacent sub- or super-scripts will be concatenated into a single
-expression.
-
-The range of subscripts and superscripts supported by this package
-are shown in \figref{superscripts,subscripts}. Please request more if
-you think it is appropriate.
-
-\begin{figure}\centering
-\fbox{\fontspec{DejaVuSerif.ttf}\Large
-A
-^^^^2070 ^^^^00b9 ^^^^00b2 ^^^^00b3 ^^^^2074 ^^^^2075 ^^^^2076 ^^^^2077
-^^^^2078 ^^^^2079 ^^^^207a ^^^^207b ^^^^207c ^^^^207d ^^^^207e ^^^^2071
-^^^^207f ^^^^207f ^^^^02b0 ^^^^02b2 ^^^^02b3 ^^^^02b7 ^^^^02b8
-Z}
-\caption{
- The Unicode superscripts supported as input characters.
- These are the literal glyphs from the `DejaVu Serif' font,
- not the output seen when used for maths input.
- The `A' and `Z' are to provide context for the size and
- location of the superscript glyphs.
-}
-\figlabel{superscripts}
-\end{figure}
-
-\begin{figure}\centering
-\fbox{\fontspec{DejaVuSerif.ttf}\Large
-A
-^^^^2080 ^^^^2081 ^^^^2082 ^^^^2083 ^^^^2084 ^^^^2085 ^^^^2086 ^^^^2087
-^^^^2088 ^^^^2089 ^^^^208a ^^^^208b ^^^^208c ^^^^208d ^^^^208e ^^^^2090
-^^^^2091 ^^^^1d62 ^^^^2092 ^^^^1d63 ^^^^1d64 ^^^^1d65 ^^^^2093 ^^^^1d66
-^^^^1d67 ^^^^1d68 ^^^^1d69 ^^^^1d6a
-Z}
-\caption{
- The Unicode subscripts supported as input characters.
- See note from \figref{superscripts}.
-}
-\figlabel{subscripts}
-\end{figure}
-
-\subsubsection{Colon}
-\seclabel{colon}
-
-The colon is one of the few confusing characters of Unicode maths.
-In \TeX, \texttt{:} is defined as a colon with relation spacing: `$a:b$'.
-While \cs{colon} is defined as a colon with punctuation spacing: `$a\colon b$'.
-
-In Unicode, \unichar{003A} {colon} is defined as a punctuation symbol,
-while \unichar{2236} {ratio} is the colon-like symbol used in mathematics to denote
-ratios and other things.
-
-This breaks the usual straightforward mapping from control sequence to Unicode input character
-to (the same) Unicode glyph.
-
-To preserve input compatibility, we remap the \ascii\ input character `\texttt{:}' to \unichar{2236}.
-Typing a literal \unichar{2236} char will result in the same output.
-If \pkg{amsmath} is loaded, then the definition of \cs{colon} is inherited from there
-(it looks like a punctuation colon with additional space around it).
-Otherwise, \cs{colon} is made to output a colon with \cs{mathpunct} spacing.
-
-The package option |colon=literal| forces \ascii\ input `|:|' to be printed as \cs{mathcolon} instead.
-
-
-\subsubsection{Slashes and backslashes}
-\seclabel{slash-delimiter}
-
-There are several slash-like symbols defined in Unicode. The complete list is shown in \tabref{slashes}.
-
-\begin{table}\centering
-\caption{Slashes and backslashes.}
-\tablabel{slashes}
-\begin{tabular}{@{}cl@{}cl@{}}
-\toprule
-Slot & Name & Glyph & Command \\
-\midrule
-\unichar{002F} & \textsc{solidus} & \umfont \char"002F & \cs{slash} \\
-\unichar{2044} & \textsc{fraction slash} & \umfont \char"2044 & \cs{fracslash} \\
-\unichar{2215} & \textsc{division slash} & \umfont \char"2215 & \cs{divslash} \\
-\unichar{29F8} & \textsc{big solidus} & \umfont \char"29F8 & \cs{xsol} \\
-\midrule
-\unichar{005C} & \textsc{reverse solidus} & \umfont \char"005C & \cs{backslash} \\
-\unichar{2216} & \textsc{set minus} & \umfont \char"2216 & \cs{smallsetminus} \\
-\unichar{29F5} & \textsc{reverse solidus operator}& \umfont \char"29F5 & \cs{setminus} \\
-\unichar{29F9} & \textsc{big reverse solidus} & \umfont \char"29F9 & \cs{xbsol} \\
-\bottomrule
-\end{tabular}
-\end{table}
-
-In regular \LaTeX\ we can write \cs{left}\cs{slash}\dots\cs{right}\cs{backslash}
-and so on and obtain extensible delimiter-like symbols. Not all of the Unicode slashes
-are suitable for this (and do not have the font support to do it).
-
-\paragraph{Slash}
-
-Of \unichar{2044} {fraction slash}, TR25 says that it is:
-\begin{quote}
-\dots used to build up simple fractions in running text\dots
-however parsers of mathematical texts should be prepared to handle fraction slash
-when it is received from other sources.
-\end{quote}
-
-\unichar{2215} {division slash} should be used when division is represented
-without a built-up fraction; $\pi\approx22/7$, for example.
-
-\unichar{29F8} {big solidus} is a `big operator' (like $\sum$).
-
-\paragraph{Backslash}
-
-The \unichar{005C} {reverse solidus} character \cs{backslash} is used for denoting
-double cosets: $A\backslash B$. (So I'm led to believe.)
-It may be used as a `stretchy' delimiter if supported by the font.
-
-MathML uses \unichar{2216} {set minus} like this: $A\smallsetminus B$.\footnote{\S4.4.5.11 \url{http://www.w3.org/TR/MathML3/}}
-The \LaTeX\ command name \cs{smallsetminus} is used for backwards compatibility.
-
-Presumably, \unichar{29F5} {reverse solidus operator} is intended to
-be used in a similar way, but it could also (perhaps?) be used to
-represent `inverse division': $\pi\approx7\mathbin{\backslash}22$.^^A
-\footnote{This is valid syntax in the Octave and Matlab programming languages,
-in which it means matrix inverse pre-multiplication. I.e., $A\mathbin{\backslash} B\equiv A^{-1}B$.}
-The \LaTeX\ name for this character is \cs{setminus}.
-
-Finally, \unichar{29F9} {big reverse solidus} is a `big operator' (like $\sum$).
-
-\paragraph{How to use all of these things}
-
-Unfortunately, font support for the above characters/glyphs is rather inconsistent.
-In Cambria Math, the only slash that grows (say when writing
-\[
-\left.\left[\begin{array}{cc} a & b \\ c & d\end{array}\right]\middle\slash
- \left[\begin{array}{cc} 1 & 1 \\ 1 & 0\end{array}\right] \right.\quad )
-\]
-is the \textsc{fraction slash}, which we just established above is
-sort of only supposed to be used in text.
-
-Of the above characters, the following are allowed to be used after
-\cs{left}, \cs{middle}, and \cs{right}:
-\begin{itemize}
-\item \cs{fracslash};
-\item \cs{slash}; and,
-\item \cs{backslash} (the only reverse slash).
-\end{itemize}
-
-However, we assume that there is only \emph{one} stretchy slash
-in the font; this is assumed by default to be \unichar{002F} {solidus}.
-Writing \cs{left/} or \cs{left}\cs{slash} or \cs{left}\cs{fracslash}
-will all result in the same stretchy delimiter being used.
-
-The delimiter used can be changed with the |slash-delimiter| package option.
-Allowed values are |ascii|, |frac|, and |div|, corresponding to the respective
-Unicode slots.
-
-For example: as mentioned above, Cambria Math's stretchy slash is
-\unichar{2044} {fraction slash}. When using Cambria Math, then
-\pkg{unicode-math} should be loaded with the |slash-delimiter=frac| option.
-(This should be a font option rather than a package option, but
-it will change soon.)
-
-\subsubsection{Behaviour of hyphens in mathematics}
-\seclabel{hyphen}
-
-Unicode defines the following related characters:
-\begin{itemize}
-\item \unichar{0002D}{hyphen-minus}
-\item \unichar{02212}{minus sign}
-\item \unichar{02010}{hyphen} (\cs{mathhyphen})
-\end{itemize}
-The first two of these characters in the input will all behave as the binary operator
-`minus sign'.
-The third is defined by \pkg{unicode-math} as a `math letter' for constructions
-like \verb|$R‐\text{Mod}$| ($R‐\text{Mod}$).
-If more control is needed surrounding these symbols, additional options can be added to the package;
-please get in touch if this is the case for you.
-
-
-\subsubsection{Growing and non-growing accents}
-\seclabel{growing-accents}
-
-There are a few accents for which \TeX\ has both non-growing and growing
-versions. Among these are \cs{hat} and \cs{tilde}; the corresponding growing
-versions are called \cs{widehat} and \cs{widetilde}, respectively.
-
-Older versions of \XeTeX\ and \LuaTeX\ did not support this distinction,
-however, and \emph{all} accents there were growing automatically. (I.e.,
-\cs{hat} and \cs{widehat} are equivalent.) As of \LuaTeX\ v0.65 and \XeTeX\
-v0.9998, these wide/non-wide commands will again behave in their expected
-manner.
-
-
-\subsubsection{Negations and the \cs{not} command}
-\seclabel{negations}
-
-The \cs{not} command in classic \LaTeXe\ was a mathematical slash modifying glyph that allowed for `negating` maths symbols where pre-built glyphs were not available. While Unicode encodes a slot for this modifying slash, it is only well-supported in \LuaTeX\ and not in \XeTeX.
-
-To provide more flexibility, the \pkg{unicode-math} package defines \cs{not} to search for a predefined `negated' definitions for its argument and use that if available. This method can be used for fine-tuning in cases where spacing needs to be adjusted.
-
-A `negated definition` is any symbol command prefixed by either \verb|n| or \verb|not|. For example, \pkg{unicode-math} by default defines both \cs{leftarrow} ($\leftarrow$) and \cs{nleftarrow} ($\nleftarrow$).
-
-To define custom negated definitions for either symbols (e.g., \verb|\not=|) or commands (e.g., \verb|\not\equal|), use the \cs{NewNotCommand}\marg{symbol or cmd}\marg{definition} command. Its usage is as follows:
-\begin{verbatim}
-\NewNegationCommand {=} {\neq}
-\NewNegationCommand {\equal} {\neq}
-\end{verbatim}
-If the command has already been defined, an error will result and \verb|\RenewNegationCommand| can be used to overwrite the original definition.
-
-
-\subsubsection{Pre-drawn fraction characters}
-
-Pre-drawn fractions \unichar{00BC}--\unichar{00BE}, \unichar{2150}--\unichar{215E}
-are not suitable for use in mathematics output. However, they can be useful
-as input characters to abbreviate common fractions.
-\begin{center}
-\fontspec{DejaVuSerif.ttf} ^^A available in TeX Live 2012 if not earlier
-¼ ½ ¾ ↉ ⅐ ⅑ ⅒ ⅓ ⅔ ⅕ ⅖ ⅗ ⅘ ⅙ ⅚ ⅛ ⅜ ⅝ ⅞
-\end{center}
-For example, instead of writing `|\tfrac12 x|', you may consider it more readable to have
-`|½x|' in the source instead.
-
-If the \cs{tfrac} command exists (i.e., if \pkg{amsmath} is loaded or
-you have specially defined \cs{tfrac} for this purpose), it will be used
-to typeset the fractions. If not, regular \cs{frac} will be used. The command
-to use (\cs{tfrac} or \cs{frac}) can be forced either way with the package
-option |active-frac=small| or |active-frac=normalsize|, respectively.
-
-\subsubsection{Circles}
-
-Unicode defines a large number of different types of circles for a variety
-of mathematical purposes. There are thirteen alone just considering the
-all white and all black ones, shown in \tabref{circles}.
-
-\LaTeX\ defines considerably fewer: \cs{circ} and \cs{bigcirc} for white;
-\cs{bullet} for black. This package maps those commands to \cs{vysmwhtcircle},
-\cs{mdlgwhtcircle}, and \cs{smblkcircle}, respectively.
-
-\begin{table}\centering
-\def\showchar#1#2#3{ \textsc{u}+{\small\ttfamily #1} & \texttt{\string#3} & \umfont \char"#1 \\}
-\begin{tabular}{@{}llc@{}}
-\toprule
-Slot & Command & Glyph \\
-\midrule
-\showchar{00B7}{centerdot}{\cdotp}
-\showchar{22C5}{small middle dot}{\cdot}
-\showchar{2219}{bullet operator}{\vysmblkcircle}
-\showchar{2022}{round bullet, filled}{\smblkcircle}
-\showchar{2981}{z notation spot}{\mdsmblkcircle}
-\showchar{26AB}{medium black circle}{\mdblkcircle}
-\showchar{25CF}{circle, filled}{\mdlgblkcircle}
-\showchar{2B24}{black large circle}{\lgblkcircle}
-\bottomrule
-\end{tabular}
-\def\showchar#1#2#3{ \umfont \char"#1 & \texttt{\string#3} & \textsc{u}+{\small\ttfamily #1} \\}
-\begin{tabular}{@{}cll@{}}
-\toprule
-Glyph & Command & Slot \\
-\midrule
-\\
-\\
-\showchar{2218}{composite function (small circle)}{\vysmwhtcircle}
-\showchar{25E6}{white bullet}{\smwhtcircle}
-\showchar{26AC}{medium small white circle}{\mdsmwhtcircle}
-\showchar{26AA}{medium white circle}{\mdwhtcircle}
-\showchar{25CB}{large circle}{\mdlgwhtcircle}
-\showchar{25EF}{large circle}{\lgwhtcircle}
-\bottomrule
-\end{tabular}
-\caption{Filled and hollow Unicode circles.}
-\tablabel{circles}
-\end{table}
-
-\subsubsection{Triangles}
-
-While there aren't as many different sizes of triangle as there are circle,
-there's some important distinctions to make between a few similar characters. See \tabref{uptriangles} for the full summary.
-
-These triangles all have different intended meanings. Note for backwards
-compatibility with \TeX, \unichar{25B3} has \emph{two} different mappings
-in \pkg{unicode-math}. \cs{bigtriangleup} is intended as a binary operator
-whereas \cs{triangle} is intended to be used as a letter-like symbol.
-
-But you're better off if you're using the latter form to indicate an
-increment to use the glyph intended for this purpose, \unichar{2206}: $\increment x$.
-
-Finally, given that $\triangle$ and $\increment$ are provided for you
-already, it is better off to only use upright Greek Delta $\Delta$ if you're
-actually using it as a symbolic entity such as a variable on its own.
-
-\begin{table}\centering
-\begin{tabular}{@{}llcl@{}}
-\toprule
-Slot & Command & Glyph & Class \\
-\midrule
-\unichar{25B5} & \cs{vartriangle} & \umfont \char"25B5 & binary \\
-\unichar{25B3} & \cs{bigtriangleup} & \umfont \char"25B3 & binary \\
-\unichar{25B3} & \cs{triangle} & \umfont \char"25B3 & ordinary \\
-\unichar{2206} & \cs{increment} & \umfont \char"2206 & ordinary \\
-\unichar{0394} & \cs{mathup}\cs{Delta} & \umfont \char"0394 & ordinary \\
-\bottomrule
-\end{tabular}
-\caption{Different upwards pointing triangles.}
-\tablabel{uptriangles}
-\end{table}
-
-\iffalse
-\subsubsection{Normalising some input characters}
-
-I believe
-all variant forms should be used as legal input that is normalised to
-a consistent output glyph, because we want to be fault-tolerant in the input.
-Here are the duplicates:
-\begin{quote}\obeylines
-\unichar {251} {latin small letter alpha}
-\unichar {25B} {latin small letter epsilon}
-\unichar {263} {latin small letter gamma}
-\unichar {269} {latin small letter iota}
-\unichar {278} {latin small letter phi}
-\unichar {28A} {latin small letter upsilon}
-\unichar {190} {latin capital letter epsilon}
-\unichar {194} {latin capital letter gamma}
-\unichar {196} {latin capital letter iota}
-\unichar {1B1} {latin capital letter upsilon}
-\end{quote}
-
-(Not yet implemented.)
-\fi
-
-\section{Advanced}
-
-\subsection{Warning messages}
-
-This package can produce a number of informational messages to try and inform the user when something might be going wrong due to package conflicts or something else.
-As an experimental feature, these can be turn off on an individual basis with the package option |warnings-off| which takes a comma-separated list of warnings to suppress.
-A warning will give you its name when printed on the console output; e.g.,
-\begin{Verbatim}
- * unicode-math warning: "mathtools-colon"
- *
- * ... <warning message> ...
-\end{Verbatim}
-This warning could be suppressed by loading the package as follows:
-\begin{Verbatim}
- \usepackage[warnings-off={mathtools-colon}]{unicode-math}
-\end{Verbatim}
-
-\subsection{How to overwrite a macro}
-
-\pkg{unicode-math} defines the macros by \cs{AtBeginDocument},
-namely delays the definition until |\begin{document}| is met.
-If you want to overwrite a macro defined by \pkg{unicode-math},
-please redefine it in \cs{AtBeginDocument} after loading this package.
-
-\subsection{Programmer's interface}
-
-(Tentative and under construction.)
-If you are writing some code that needs to know the current
-maths style (\cs{mathbf}, \cs{mathit}, etc.), you can query the
-variable \cs{l_@@_mathstyle_tl}. It will contain the maths style
-without the leading `math' string; for example,
-|\symbf { \show \l_@@_mathstyle_tl }|
-will produce `bf'.
-
-\endinput
-
-% /©
-%
-% ------------------------------------------------
-% The UNICODE-MATH package <wspr.io/unicode-math>
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% Copyright 2006-2019 Will Robertson, LPPL "maintainer"
-% Copyright 2010-2017 Philipp Stephani
-% Copyright 2011-2017 Joseph Wright
-% Copyright 2012-2015 Khaled Hosny
-% ------------------------------------------------
-%
-% ©/
diff --git a/macros/latex/contrib/unicode-math/um-doc-mathfontdimen.tex b/macros/latex/contrib/unicode-math/um-doc-mathfontdimen.tex
deleted file mode 100644
index 906a786db3..0000000000
--- a/macros/latex/contrib/unicode-math/um-doc-mathfontdimen.tex
+++ /dev/null
@@ -1,151 +0,0 @@
-%%^^A%% um-doc-mathfontdimen.tex -- part of UNICODE-MATH <wspr.io/unicode-math>
-
-\section{\Hologo{XeTeX} math font dimensions}
-
-These are the extended \cmd\fontdimen s available for suitable fonts
-in \XeTeX. Note that Lua\TeX\ takes an alternative route, and this package
-will eventually provide a wrapper interface to the two (I hope).
-
-\newcounter{mfdimen}
-\setcounter{mfdimen}{9}
-\newcommand\mathfontdimen[2]{^^A
- \stepcounter{mfdimen}^^A
- \themfdimen & {\scshape\small #1} & #2\vspace{0.5ex} \tabularnewline}
-
-\begin{longtable}{
- @{}c>{\raggedright\parfillskip=0pt}p{4cm}>{\raggedright}p{7cm}@{}}
-\toprule \cmd\fontdimen & Dimension name & Description\tabularnewline\midrule \endhead
-\bottomrule\endfoot
-\mathfontdimen{Script\-Percent\-Scale\-Down}
-{Percentage of scaling down for script level 1. Suggested value: 80\%.}
-\mathfontdimen{Script\-Script\-Percent\-Scale\-Down}
-{Percentage of scaling down for script level 2 (Script\-Script). Suggested value: 60\%.}
-\mathfontdimen{Delimited\-Sub\-Formula\-Min\-Height}
-{Minimum height required for a delimited expression to be treated as a subformula. Suggested value: normal line height\,×\,1.5.}
-\mathfontdimen{Display\-Operator\-Min\-Height}
-{Minimum height of n-ary operators (such as integral and summation) for formulas in display mode.}
-\mathfontdimen{Math\-Leading}
-{White space to be left between math formulas to ensure proper line spacing. For example, for applications that treat line gap as a part of line ascender, formulas with ink going above (os2.sTypoAscender + os2.sTypoLineGap – MathLeading) or with ink going below os2.sTypoDescender will result in increasing line height.}
-\mathfontdimen{Axis\-Height}
-{Axis height of the font. }
-\mathfontdimen{Accent\-Base\-Height}
-{Maximum (ink) height of accent base that does not require raising the accents. Suggested: x-height of the font (os2.sxHeight) plus any possible overshots. }
-\mathfontdimen{Flattened\-Accent\-Base\-Height}
-{Maximum (ink) height of accent base that does not require flattening the accents. Suggested: cap height of the font (os2.sCapHeight).}
-\mathfontdimen{Subscript\-Shift\-Down}
-{The standard shift down applied to subscript elements. Positive for moving in the downward direction. Suggested: os2.ySubscriptYOffset.}
-\mathfontdimen{Subscript\-Top\-Max}
-{Maximum allowed height of the (ink) top of subscripts that does not require moving subscripts further down. Suggested: /5 x-height.}
-\mathfontdimen{Subscript\-Baseline\-Drop\-Min}
-{Minimum allowed drop of the baseline of subscripts relative to the (ink) bottom of the base. Checked for bases that are treated as a box or extended shape. Positive for subscript baseline dropped below the base bottom.}
-\mathfontdimen{Superscript\-Shift\-Up}
-{Standard shift up applied to superscript elements. Suggested: os2.ySuperscriptYOffset.}
-\mathfontdimen{Superscript\-Shift\-Up\-Cramped}
-{Standard shift of superscripts relative to the base, in cramped style.}
-\mathfontdimen{Superscript\-Bottom\-Min}
-{Minimum allowed height of the (ink) bottom of superscripts that does not require moving subscripts further up. Suggested: ¼ x-height.}
-\mathfontdimen{Superscript\-Baseline\-Drop\-Max}
-{Maximum allowed drop of the baseline of superscripts relative to the (ink) top of the base. Checked for bases that are treated as a box or extended shape. Positive for superscript baseline below the base top.}
-\mathfontdimen{Sub\-Superscript\-Gap\-Min}
-{Minimum gap between the superscript and subscript ink. Suggested: 4×default rule thickness.}
-\mathfontdimen{Superscript\-Bottom\-Max\-With\-Subscript}
-{The maximum level to which the (ink) bottom of superscript can be pushed to increase the gap between superscript and subscript, before subscript starts being moved down.
-Suggested: /5 x-height.}
-\mathfontdimen{Space\-After\-Script}
-{Extra white space to be added after each subscript and superscript. Suggested: 0.5pt for a 12 pt font.}
-\mathfontdimen{Upper\-Limit\-Gap\-Min}
-{Minimum gap between the (ink) bottom of the upper limit, and the (ink) top of the base operator. }
-\mathfontdimen{Upper\-Limit\-Baseline\-Rise\-Min}
-{Minimum distance between baseline of upper limit and (ink) top of the base operator.}
-\mathfontdimen{Lower\-Limit\-Gap\-Min}
-{Minimum gap between (ink) top of the lower limit, and (ink) bottom of the base operator.}
-\mathfontdimen{Lower\-Limit\-Baseline\-Drop\-Min}
-{Minimum distance between baseline of the lower limit and (ink) bottom of the base operator.}
-\mathfontdimen{Stack\-Top\-Shift\-Up}
-{Standard shift up applied to the top element of a stack.}
-\mathfontdimen{Stack\-Top\-Display\-Style\-Shift\-Up}
-{Standard shift up applied to the top element of a stack in display style.}
-\mathfontdimen{Stack\-Bottom\-Shift\-Down}
-{Standard shift down applied to the bottom element of a stack. Positive for moving in the downward direction.}
-\mathfontdimen{Stack\-Bottom\-Display\-Style\-Shift\-Down}
-{Standard shift down applied to the bottom element of a stack in display style. Positive for moving in the downward direction.}
-\mathfontdimen{Stack\-Gap\-Min}
-{Minimum gap between (ink) bottom of the top element of a stack, and the (ink) top of the bottom element. Suggested: 3×default rule thickness.}
-\mathfontdimen{Stack\-Display\-Style\-Gap\-Min}
-{Minimum gap between (ink) bottom of the top element of a stack, and the (ink) top of the bottom element in display style. Suggested: 7×default rule thickness.}
-\mathfontdimen{Stretch\-Stack\-Top\-Shift\-Up}
-{Standard shift up applied to the top element of the stretch stack.}
-\mathfontdimen{Stretch\-Stack\-Bottom\-Shift\-Down}
-{Standard shift down applied to the bottom element of the stretch stack. Positive for moving in the downward direction.}
-\mathfontdimen{Stretch\-Stack\-Gap\-Above\-Min}
-{Minimum gap between the ink of the stretched element, and the (ink) bottom of the element above. Suggested: Upper\-Limit\-Gap\-Min}
-\mathfontdimen{Stretch\-Stack\-Gap\-Below\-Min}
-{Minimum gap between the ink of the stretched element, and the (ink) top of the element below. Suggested: Lower\-Limit\-Gap\-Min.}
-\mathfontdimen{Fraction\-Numerator\-Shift\-Up}
-{Standard shift up applied to the numerator. }
-\mathfontdimen{Fraction\-Numerator\-Display\-Style\-Shift\-Up}
-{Standard shift up applied to the numerator in display style. Suggested: Stack\-Top\-Display\-Style\-Shift\-Up.}
-\mathfontdimen{Fraction\-Denominator\-Shift\-Down}
-{Standard shift down applied to the denominator. Positive for moving in the downward direction.}
-\mathfontdimen{Fraction\-Denominator\-Display\-Style\-Shift\-Down}
-{Standard shift down applied to the denominator in display style. Positive for moving in the downward direction. Suggested: Stack\-Bottom\-Display\-Style\-Shift\-Down.}
-\mathfontdimen{Fraction\-Numerator\-Gap\-Min}
-{Minimum tolerated gap between the (ink) bottom of the numerator and the ink of the fraction bar. Suggested: default rule thickness}
-\mathfontdimen{Fraction\-Num\-Display\-Style\-Gap\-Min}
-{Minimum tolerated gap between the (ink) bottom of the numerator and the ink of the fraction bar in display style. Suggested: 3×default rule thickness.}
-\mathfontdimen{Fraction\-Rule\-Thickness}
-{Thickness of the fraction bar. Suggested: default rule thickness.}
-\mathfontdimen{Fraction\-Denominator\-Gap\-Min}
-{Minimum tolerated gap between the (ink) top of the denominator and the ink of the fraction bar. Suggested: default rule thickness}
-\mathfontdimen{Fraction\-Denom\-Display\-Style\-Gap\-Min}
-{Minimum tolerated gap between the (ink) top of the denominator and the ink of the fraction bar in display style. Suggested: 3×default rule thickness.}
-\mathfontdimen{Skewed\-Fraction\-Horizontal\-Gap}
-{Horizontal distance between the top and bottom elements of a skewed fraction.}
-\mathfontdimen{Skewed\-Fraction\-Vertical\-Gap}
-{Vertical distance between the ink of the top and bottom elements of a skewed fraction.}
-\mathfontdimen{Overbar\-Vertical\-Gap}
-{Distance between the overbar and the (ink) top of he base. Suggested: 3×default rule thickness.}
-\mathfontdimen{Overbar\-Rule\-Thickness}
-{Thickness of overbar. Suggested: default rule thickness.}
-\mathfontdimen{Overbar\-Extra\-Ascender}
-{Extra white space reserved above the overbar. Suggested: default rule thickness.}
-\mathfontdimen{Underbar\-Vertical\-Gap}
-{Distance between underbar and (ink) bottom of the base. Suggested: 3×default rule thickness.}
-\mathfontdimen{Underbar\-Rule\-Thickness}
-{Thickness of underbar. Suggested: default rule thickness.}
-\mathfontdimen{Underbar\-Extra\-Descender}
-{Extra white space reserved below the underbar. Always positive. Suggested: default rule thickness.}
-\mathfontdimen{Radical\-Vertical\-Gap}
-{Space between the (ink) top of the expression and the bar over it. Suggested: 1¼ default rule thickness.}
-\mathfontdimen{Radical\-Display\-Style\-Vertical\-Gap}
-{Space between the (ink) top of the expression and the bar over it. Suggested: default rule thickness + ¼ x-height. }
-\mathfontdimen{Radical\-Rule\-Thickness}
-{Thickness of the radical rule. This is the thickness of the rule in designed or constructed radical signs. Suggested: default rule thickness.}
-\mathfontdimen{Radical\-Extra\-Ascender}
-{Extra white space reserved above the radical. Suggested: Radical\-Rule\-Thickness.}
-\mathfontdimen{Radical\-Kern\-Before\-Degree}
-{Extra horizontal kern before the degree of a radical, if such is present. Suggested: 5/18 of em.}
-\mathfontdimen{Radical\-Kern\-After\-Degree}
-{Negative kern after the degree of a radical, if such is present. Suggested: −10/18 of em.}
-\mathfontdimen{Radical\-Degree\-Bottom\-Raise\-Percent}
-{Height of the bottom of the radical degree, if such is present, in proportion to the ascender of the radical sign. Suggested: 60\%.}
-\end{longtable}
-
-\endinput
-
-% /©
-%
-% ------------------------------------------------
-% The UNICODE-MATH package <wspr.io/unicode-math>
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% Copyright 2006-2019 Will Robertson, LPPL "maintainer"
-% Copyright 2010-2017 Philipp Stephani
-% Copyright 2011-2017 Joseph Wright
-% Copyright 2012-2015 Khaled Hosny
-% ------------------------------------------------
-%
-% ©/
diff --git a/macros/latex/contrib/unicode-math/um-doc-nfsssummary.tex b/macros/latex/contrib/unicode-math/um-doc-nfsssummary.tex
deleted file mode 100644
index a322ac7f42..0000000000
--- a/macros/latex/contrib/unicode-math/um-doc-nfsssummary.tex
+++ /dev/null
@@ -1,87 +0,0 @@
-%%^^A%% um-doc-nfsssummary.tex -- part of UNICODE-MATH <wspr.io/unicode-math>
-
-\section{Documenting maths support in the NFSS}
-
-In the following, \meta{NFSS decl.} stands for something like |{T1}{lmr}{m}{n}|.
-
-\begin{description}
-\item[Maths symbol fonts]
-Fonts for symbols: $\propto$, $\leq$, $\rightarrow$
-
-\cmd\DeclareSymbolFont\marg{name}\meta{NFSS decl.}\\
-Declares a named maths font such as |operators| from which symbols are defined with \cmd\DeclareMathSymbol.
-
-\item[Maths alphabet fonts]
-Fonts for $\symit{ABC}$\,–\,$\symit{xyz}$,
-$\symfrak{ABC}$\,–\,$\symscr{XYZ}$, etc.
-
-\cmd\DeclareMathAlphabet\marg{cmd}\meta{NFSS decl.}
-
-For commands such as \cmd\mathbf, accessed
-through maths mode that are unaffected by the current text font, and which are used for
-alphabetic symbols in the \ascii\ range.
-
-\cmd\DeclareSymbolFontAlphabet\marg{cmd}\marg{name}
-
-Alternative (and optimisation) for \cmd\DeclareMathAlphabet\ if a single font is being used
-for both alphabetic characters (as above) and symbols.
-
-\item[Maths `versions'] Different maths weights can be defined with the following, switched
-in text with the \cmd\mathversion\marg{maths version} command.
-
-\cmd\SetSymbolFont\marg{name}\marg{maths version}\meta{NFSS decl.}\\
-\cmd\SetMathAlphabet\marg{cmd}\marg{maths version}\meta{NFSS decl.}
-
-\item[Maths symbols] Symbol definitions in maths for both characters (=) and macros (\cmd\eqdef):
-\cmd\DeclareMathSymbol\marg{symbol}\marg{type}\marg{named font}\marg{slot}
-This is the macro that actually defines which font each symbol comes from and how they behave.
-\end{description}
-Delimiters and radicals use wrappers around \TeX's \cmd\delimiter/\cmd\radical\ primitives,
-which are re-designed in \XeTeX. The syntax used in \LaTeX's NFSS is therefore not so relevant here.
-\begin{description}
-\item[Delimiters] A special class of maths symbol which enlarge themselves in certain contexts.
-
-\cmd\DeclareMathDelimiter\marg{symbol}\marg{type}\marg{sym.\ font}\marg{slot}\marg{sym.\ font}\marg{slot}
-
-\item[Radicals] Similar to delimiters (\cmd\DeclareMathRadical\ takes the same syntax) but
-behave `weirdly'.
-\end{description}
-In those cases, glyph slots in \emph{two} symbol fonts are required; one for the small (`regular') case,
-the other for situations when the glyph is larger. This is not the case in \XeTeX.
-
-Accents are not included yet.
-
-\paragraph{Summary}
-
-For symbols, something like:
-\begin{Verbatim}
-\def\DeclareMathSymbol#1#2#3#4{
- \global\mathchardef#1"\mathchar@type#2
- \expandafter\hexnumber@\csname sym#2\endcsname
- {\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}}
-\end{Verbatim}
-For characters, something like:
-\begin{Verbatim}
-\def\DeclareMathSymbol#1#2#3#4{
- \global\mathcode`#1"\mathchar@type#2
- \expandafter\hexnumber@\csname sym#2\endcsname
- {\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}}
-\end{Verbatim}
-\endinput
-
-% /©
-%
-% ------------------------------------------------
-% The UNICODE-MATH package <wspr.io/unicode-math>
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% Copyright 2006-2019 Will Robertson, LPPL "maintainer"
-% Copyright 2010-2017 Philipp Stephani
-% Copyright 2011-2017 Joseph Wright
-% Copyright 2012-2015 Khaled Hosny
-% ------------------------------------------------
-%
-% ©/
diff --git a/macros/latex/contrib/unicode-math/um-doc-stixextract.tex b/macros/latex/contrib/unicode-math/um-doc-stixextract.tex
deleted file mode 100644
index 53a86a8ab7..0000000000
--- a/macros/latex/contrib/unicode-math/um-doc-stixextract.tex
+++ /dev/null
@@ -1,38 +0,0 @@
-%%^^A%% um-doc-stixextract.tex -- part of UNICODE-MATH <wspr.io/unicode-math>
-
-\section{\STIX\ table data extraction}\label{part:awk}
-
-The source for the \TeX\ names for the very large number of mathematical
-glyphs are provided via Barbara Beeton's table file for the \STIX\ project
-(|ams.org/STIX|). A version is located at
-|http://www.ams.org/STIX/bnb/stix-tbl.asc|
-but check |http://www.ams.org/STIX/| for more up-to-date info.
-
-This table is converted into a form suitable for reading by \TeX.
-A single file is produced containing all (more than 3298) symbols.
-Future optimisations might include generating various (possibly overlapping) subsets
-so not all definitions must be read just to redefine a small range of symbols.
-Performance for now seems to be acceptable without such measures.
-
-This file is currently developed outside this DTX file. It will be
-incorporated when the final version is ready. (I know this is not how
-things are supposed to work!)
-
-\endinput
-
-% /©
-%
-% ------------------------------------------------
-% The UNICODE-MATH package <wspr.io/unicode-math>
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% Copyright 2006-2019 Will Robertson, LPPL "maintainer"
-% Copyright 2010-2017 Philipp Stephani
-% Copyright 2011-2017 Joseph Wright
-% Copyright 2012-2015 Khaled Hosny
-% ------------------------------------------------
-%
-% ©/
diff --git a/macros/latex/contrib/unicode-math/um-doc-style.tex b/macros/latex/contrib/unicode-math/um-doc-style.tex
deleted file mode 100644
index 729a102ebe..0000000000
--- a/macros/latex/contrib/unicode-math/um-doc-style.tex
+++ /dev/null
@@ -1,131 +0,0 @@
-%%^^A%% um-doc-style.tex -- part of UNICODE-MATH <wspr.io/unicode-math>
-
-\makeatletter
-\input{unicode-math.dtx}
-
-\CheckSum{0}
-\EnableCrossrefs
-\CodelineIndex
-\setcounter{IndexColumns}{2}
-
-\usepackage[svgnames]{xcolor}
-\usepackage[inline]{enumitem}
-\usepackage{amsmath,array,booktabs,calc,enumitem,fancyvrb,graphicx,ifthen,longtable,refstyle,topcapt,url,varioref,underscore}
-\usepackage[slash-delimiter=frac,nabla=literal]{unicode-math}
-\usepackage{metalogo,hologo}
-
-\usepackage[it]{titlesec}
-
-% fancyvrb
-\fvset{fontsize=\small,xleftmargin=2em}
-
-% longtable
-\setcounter{LTchunksize}{100}
-
-\setmainfont{texgyrepagella}%
- [
- Extension = .otf ,
- UprightFont = *-regular ,
- ItalicFont = *-italic ,
- BoldFont = *-bold ,
- BoldItalicFont = *-bolditalic ,
- ]
-\setsansfont{Iwona}%
- [
- Scale=MatchLowercase,
- Extension = .otf,
- UprightFont = *-Regular,
- ItalicFont = *-Italic,
- BoldFont = *-Bold,
- BoldItalicFont = *-BoldItalic,
- ]
-\setmonofont{Inconsolatazi4-Regular.otf}%
- [
- Scale=MatchLowercase,
- BoldFont=Inconsolatazi4-Bold.otf
- ]
-
-\setmathfont{texgyrepagella-math.otf}
-\setmathfont[version=xits]{XITSMath-Regular.otf}
-\newfontface\umfont{XITSMath-Regular.otf}
-
-\expandafter\def\csname ver@thumbpdf.sty\endcsname{}
-\usepackage{hypdoc}
-\hypersetup{linktocpage}
-
-% work around some issue turning | into "j" inside mathsf in the definition of \Module:
-% (also prettify)
-\def\Module#1{{\footnotesize\color{red}$\langle$\texttt{#1}$\rangle$}}
-
-\linespread{1.1}
-\frenchspacing
-
-\definecolor{niceblue}{rgb}{0.2,0.4,0.8}
-
-\def\theCodelineNo{\textcolor{niceblue}{\sffamily\tiny\arabic{CodelineNo}}}
-
-\newcommand*\name[1]{{#1}}
-\newcommand*\pkg[1]{\textsf{#1}}
-\newcommand*\feat[1]{\texttt{#1}}
-\newcommand*\opt[1]{\texttt{#1}}
-
-\newcommand*\note[1]{\unskip\footnote{#1}}
-
-\let\latin\textit
-\def\eg{\latin{e.g.}}
-\def\Eg{\latin{E.g.}}
-\def\ie{\latin{i.e.}}
-\def\etc{\@ifnextchar.{\latin{etc}}{\latin{etc.}\@}}
-
-\def\STIX{\textsc{stix}}
-\def\MacOSX{Mac~OS~X}
-\def\ascii{\textsc{ascii}}
-\def\OMEGA{Omega}
-
-\newcounter{argument}
-
-\makeatletter
-\g@addto@macro\endmacro{\setcounter{argument}{0}}
-\makeatother
-
-\newcommand*\darg[1]{%
- \stepcounter{argument}%
- {\ttfamily\char`\#\theargument~:~}#1\par\noindent\ignorespaces
-}
-\newcommand*\doarg[1]{%
- \stepcounter{argument}%
- {\ttfamily\makebox[0pt][r]{[}\char`\#\theargument]:~}#1\par\noindent\ignorespaces
-}
-
-\newcommand\codeline[1]{\par{\centering#1\par\noindent}\ignorespaces}
-
-\newcommand\unichar[1]{\textsc{u}+\texttt{\small#1}}
-
-\setlength\parindent{2em}
-
-\def \MakePrivateLetters {%
- \catcode`\@=11\relax
- \catcode`\_=11\relax
- \catcode`\:=11\relax
-}
-
-\makeatother
-
-\endinput
-
-% /©
-%
-% ------------------------------------------------
-% The UNICODE-MATH package <wspr.io/unicode-math>
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% Copyright 2006-2019 Will Robertson, LPPL "maintainer"
-% Copyright 2010-2017 Philipp Stephani
-% Copyright 2011-2017 Joseph Wright
-% Copyright 2012-2015 Khaled Hosny
-% ------------------------------------------------
-%
-% ©/
diff --git a/macros/latex/contrib/unicode-math/unicode-math-code.ltx b/macros/latex/contrib/unicode-math/unicode-math-code.ltx
deleted file mode 100644
index cff887daed..0000000000
--- a/macros/latex/contrib/unicode-math/unicode-math-code.ltx
+++ /dev/null
@@ -1,35 +0,0 @@
-%%^^A%% unicode-math-code.ltx -- part of UNICODE-MATH <wspr.io/unicode-math>
-%%^^A%% Typeset code.
-
-\documentclass[a4paper]{ltxdoc}
-\input{um-doc-style.tex}
-\begin{document}
-\maketitle
-\tableofcontents
-
-\def\DTX#1{\clearpage\part{#1}\DocInput{#1}}
-\DTXFILES
-
-\clearpage
-\PrintIndex
-
-\end{document}
-
-\endinput
-
-% /©
-%
-% ------------------------------------------------
-% The UNICODE-MATH package <wspr.io/unicode-math>
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% Copyright 2006-2019 Will Robertson, LPPL "maintainer"
-% Copyright 2010-2017 Philipp Stephani
-% Copyright 2011-2017 Joseph Wright
-% Copyright 2012-2015 Khaled Hosny
-% ------------------------------------------------
-%
-% ©/
diff --git a/macros/latex/contrib/unicode-math/unicode-math-code.pdf b/macros/latex/contrib/unicode-math/unicode-math-code.pdf
deleted file mode 100644
index 9d87097173..0000000000
--- a/macros/latex/contrib/unicode-math/unicode-math-code.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/unicode-math/unicode-math-table.tex b/macros/latex/contrib/unicode-math/unicode-math-table.tex
deleted file mode 100644
index 511b67e8ce..0000000000
--- a/macros/latex/contrib/unicode-math/unicode-math-table.tex
+++ /dev/null
@@ -1,2467 +0,0 @@
-%%^^A%% unicode-math-table.tex -- part of UNICODE-MATH <wspr.io/unicode-math>
-%%^^A%% Source file of the math symbols.
-
-\UnicodeMathSymbol{"00021}{\mathexclam }{\mathclose}{exclamation mark}%
-\UnicodeMathSymbol{"00023}{\mathoctothorpe }{\mathord}{number sign}%
-\UnicodeMathSymbol{"00024}{\mathdollar }{\mathord}{dollar sign}%
-\UnicodeMathSymbol{"00025}{\mathpercent }{\mathord}{percent sign}%
-\UnicodeMathSymbol{"00026}{\mathampersand }{\mathord}{ampersand}%
-\UnicodeMathSymbol{"00028}{\lparen }{\mathopen}{left parenthesis}%
-\UnicodeMathSymbol{"00029}{\rparen }{\mathclose}{right parenthesis}%
-\UnicodeMathSymbol{"0002B}{\mathplus }{\mathbin}{plus sign b:}%
-\UnicodeMathSymbol{"0002C}{\mathcomma }{\mathpunct}{comma}%
-\UnicodeMathSymbol{"0002E}{\mathperiod }{\mathord}{full stop, period}%
-\UnicodeMathSymbol{"0002F}{\mathslash }{\mathord}{solidus}%
-\UnicodeMathSymbol{"0003A}{\mathcolon }{\mathpunct}{colon}%
-\UnicodeMathSymbol{"0003B}{\mathsemicolon }{\mathpunct}{semicolon p:}%
-\UnicodeMathSymbol{"0003C}{\less }{\mathrel}{less-than sign r:}%
-\UnicodeMathSymbol{"0003D}{\equal }{\mathrel}{equals sign r:}%
-\UnicodeMathSymbol{"0003E}{\greater }{\mathrel}{greater-than sign r:}%
-\UnicodeMathSymbol{"0003F}{\mathquestion }{\mathord}{question mark}%
-\UnicodeMathSymbol{"00040}{\mathatsign }{\mathord}{commercial at}%
-\UnicodeMathSymbol{"0005B}{\lbrack }{\mathopen}{left square bracket}%
-\UnicodeMathSymbol{"0005C}{\backslash }{\mathord}{reverse solidus}%
-\UnicodeMathSymbol{"0005D}{\rbrack }{\mathclose}{right square bracket}%
-\UnicodeMathSymbol{"0007B}{\lbrace }{\mathopen}{left curly bracket}%
-\UnicodeMathSymbol{"0007C}{\vert }{\mathfence}{vertical bar}%
-\UnicodeMathSymbol{"0007D}{\rbrace }{\mathclose}{right curly bracket}%
-\UnicodeMathSymbol{"000A3}{\mathsterling }{\mathord}{pound sign}%
-\UnicodeMathSymbol{"000A5}{\mathyen }{\mathord}{yen sign}%
-\UnicodeMathSymbol{"000A7}{\mathsection }{\mathord}{section symbol}%
-\UnicodeMathSymbol{"000AC}{\neg }{\mathord}{/neg /lnot not sign}%
-\UnicodeMathSymbol{"000B1}{\pm }{\mathbin}{plus-or-minus sign}%
-\UnicodeMathSymbol{"000B6}{\mathparagraph }{\mathord}{paragraph symbol}%
-\UnicodeMathSymbol{"000B7}{\cdotp }{\mathbin}{/centerdot b: middle dot}%
-\UnicodeMathSymbol{"000D7}{\times }{\mathbin}{multiply sign}%
-\UnicodeMathSymbol{"000F0}{\matheth }{\mathalpha}{eth}%
-\UnicodeMathSymbol{"000F7}{\div }{\mathbin}{divide sign}%
-\UnicodeMathSymbol{"001B5}{\Zbar }{\mathord}{impedance (latin capital letter z with stroke)}%
-\UnicodeMathSymbol{"00300}{\grave }{\mathaccent}{grave accent}%
-\UnicodeMathSymbol{"00301}{\acute }{\mathaccent}{acute accent}%
-\UnicodeMathSymbol{"00302}{\hat }{\mathaccent}{circumflex accent}%
-\UnicodeMathSymbol{"00302}{\widehat }{\mathaccentwide}{circumflex accent}%
-\UnicodeMathSymbol{"00303}{\tilde }{\mathaccent}{tilde}%
-\UnicodeMathSymbol{"00303}{\widetilde }{\mathaccentwide}{tilde}%
-\UnicodeMathSymbol{"00304}{\bar }{\mathaccent}{macron}%
-\UnicodeMathSymbol{"00305}{\overbar }{\mathaccent}{overbar embellishment}%
-\UnicodeMathSymbol{"00305}{\wideoverbar }{\mathaccentwide}{stretchy overbar embellishment}%
-\UnicodeMathSymbol{"00306}{\breve }{\mathaccent}{breve}%
-\UnicodeMathSymbol{"00306}{\widebreve }{\mathaccentwide}{stretchy breve}%
-\UnicodeMathSymbol{"00307}{\dot }{\mathaccent}{dot above}%
-\UnicodeMathSymbol{"00308}{\ddot }{\mathaccent}{dieresis}%
-\UnicodeMathSymbol{"00309}{\ovhook }{\mathaccent}{combining hook above}%
-\UnicodeMathSymbol{"0030A}{\ocirc }{\mathaccent}{ring}%
-\UnicodeMathSymbol{"0030C}{\check }{\mathaccent}{caron}%
-\UnicodeMathSymbol{"0030C}{\widecheck }{\mathaccentwide}{stretchy caron}%
-\UnicodeMathSymbol{"00310}{\candra }{\mathaccent}{candrabindu (non-spacing)}%
-\UnicodeMathSymbol{"00312}{\oturnedcomma }{\mathaccent}{combining turned comma above}%
-\UnicodeMathSymbol{"00315}{\ocommatopright }{\mathaccent}{combining comma above right}%
-\UnicodeMathSymbol{"0031A}{\droang }{\mathaccent}{left angle above (non-spacing)}%
-\UnicodeMathSymbol{"00330}{\wideutilde }{\mathbotaccentwide}{under tilde accent (multiple characters and non-spacing)}%
-\UnicodeMathSymbol{"00332}{\mathunderbar }{\mathbotaccentwide}{combining low line}%
-\UnicodeMathSymbol{"00338}{\notaccent }{\mathaccentoverlay}{combining long solidus overlay}%
-\UnicodeMathSymbol{"0034D}{\underleftrightarrow }{\mathbotaccentwide}{underleftrightarrow accent}%
-\UnicodeMathSymbol{"00391}{\mupAlpha }{\mathalpha}{capital alpha, greek}%
-\UnicodeMathSymbol{"00392}{\mupBeta }{\mathalpha}{capital beta, greek}%
-\UnicodeMathSymbol{"00393}{\mupGamma }{\mathalpha}{capital gamma, greek}%
-\UnicodeMathSymbol{"00394}{\mupDelta }{\mathalpha}{capital delta, greek}%
-\UnicodeMathSymbol{"00395}{\mupEpsilon }{\mathalpha}{capital epsilon, greek}%
-\UnicodeMathSymbol{"00396}{\mupZeta }{\mathalpha}{capital zeta, greek}%
-\UnicodeMathSymbol{"00397}{\mupEta }{\mathalpha}{capital eta, greek}%
-\UnicodeMathSymbol{"00398}{\mupTheta }{\mathalpha}{capital theta, greek}%
-\UnicodeMathSymbol{"00399}{\mupIota }{\mathalpha}{capital iota, greek}%
-\UnicodeMathSymbol{"0039A}{\mupKappa }{\mathalpha}{capital kappa, greek}%
-\UnicodeMathSymbol{"0039B}{\mupLambda }{\mathalpha}{capital lambda, greek}%
-\UnicodeMathSymbol{"0039C}{\mupMu }{\mathalpha}{capital mu, greek}%
-\UnicodeMathSymbol{"0039D}{\mupNu }{\mathalpha}{capital nu, greek}%
-\UnicodeMathSymbol{"0039E}{\mupXi }{\mathalpha}{capital xi, greek}%
-\UnicodeMathSymbol{"0039F}{\mupOmicron }{\mathalpha}{capital omicron, greek}%
-\UnicodeMathSymbol{"003A0}{\mupPi }{\mathalpha}{capital pi, greek}%
-\UnicodeMathSymbol{"003A1}{\mupRho }{\mathalpha}{capital rho, greek}%
-\UnicodeMathSymbol{"003A3}{\mupSigma }{\mathalpha}{capital sigma, greek}%
-\UnicodeMathSymbol{"003A4}{\mupTau }{\mathalpha}{capital tau, greek}%
-\UnicodeMathSymbol{"003A5}{\mupUpsilon }{\mathalpha}{capital upsilon, greek}%
-\UnicodeMathSymbol{"003A6}{\mupPhi }{\mathalpha}{capital phi, greek}%
-\UnicodeMathSymbol{"003A7}{\mupChi }{\mathalpha}{capital chi, greek}%
-\UnicodeMathSymbol{"003A8}{\mupPsi }{\mathalpha}{capital psi, greek}%
-\UnicodeMathSymbol{"003A9}{\mupOmega }{\mathalpha}{capital omega, greek}%
-\UnicodeMathSymbol{"003B1}{\mupalpha }{\mathalpha}{small alpha, greek}%
-\UnicodeMathSymbol{"003B2}{\mupbeta }{\mathalpha}{small beta, greek}%
-\UnicodeMathSymbol{"003B3}{\mupgamma }{\mathalpha}{small gamma, greek}%
-\UnicodeMathSymbol{"003B4}{\mupdelta }{\mathalpha}{small delta, greek}%
-\UnicodeMathSymbol{"003B5}{\mupvarepsilon }{\mathalpha}{rounded small varepsilon, greek}%
-\UnicodeMathSymbol{"003B6}{\mupzeta }{\mathalpha}{small zeta, greek}%
-\UnicodeMathSymbol{"003B7}{\mupeta }{\mathalpha}{small eta, greek}%
-\UnicodeMathSymbol{"003B8}{\muptheta }{\mathalpha}{straight theta, small theta, greek}%
-\UnicodeMathSymbol{"003B9}{\mupiota }{\mathalpha}{small iota, greek}%
-\UnicodeMathSymbol{"003BA}{\mupkappa }{\mathalpha}{small kappa, greek}%
-\UnicodeMathSymbol{"003BB}{\muplambda }{\mathalpha}{small lambda, greek}%
-\UnicodeMathSymbol{"003BC}{\mupmu }{\mathalpha}{small mu, greek}%
-\UnicodeMathSymbol{"003BD}{\mupnu }{\mathalpha}{small nu, greek}%
-\UnicodeMathSymbol{"003BE}{\mupxi }{\mathalpha}{small xi, greek}%
-\UnicodeMathSymbol{"003BF}{\mupomicron }{\mathalpha}{small omicron, greek}%
-\UnicodeMathSymbol{"003C0}{\muppi }{\mathalpha}{small pi, greek}%
-\UnicodeMathSymbol{"003C1}{\muprho }{\mathalpha}{small rho, greek}%
-\UnicodeMathSymbol{"003C2}{\mupvarsigma }{\mathalpha}{terminal sigma, greek}%
-\UnicodeMathSymbol{"003C3}{\mupsigma }{\mathalpha}{small sigma, greek}%
-\UnicodeMathSymbol{"003C4}{\muptau }{\mathalpha}{small tau, greek}%
-\UnicodeMathSymbol{"003C5}{\mupupsilon }{\mathalpha}{small upsilon, greek}%
-\UnicodeMathSymbol{"003C6}{\mupvarphi }{\mathalpha}{curly or open small phi, greek}%
-\UnicodeMathSymbol{"003C7}{\mupchi }{\mathalpha}{small chi, greek}%
-\UnicodeMathSymbol{"003C8}{\muppsi }{\mathalpha}{small psi, greek}%
-\UnicodeMathSymbol{"003C9}{\mupomega }{\mathalpha}{small omega, greek}%
-\UnicodeMathSymbol{"003D1}{\mupvartheta }{\mathalpha}{/vartheta - curly or open theta}%
-\UnicodeMathSymbol{"003D5}{\mupphi }{\mathalpha}{/straightphi - small phi, greek}%
-\UnicodeMathSymbol{"003D6}{\mupvarpi }{\mathalpha}{rounded small pi (pomega), greek}%
-\UnicodeMathSymbol{"003DC}{\upDigamma }{\mathalpha}{capital digamma}%
-\UnicodeMathSymbol{"003DD}{\updigamma }{\mathalpha}{old greek small letter digamma}%
-\UnicodeMathSymbol{"003F0}{\mupvarkappa }{\mathalpha}{rounded small kappa, greek}%
-\UnicodeMathSymbol{"003F1}{\mupvarrho }{\mathalpha}{rounded small rho, greek}%
-\UnicodeMathSymbol{"003F4}{\mupvarTheta }{\mathalpha}{greek capital theta symbol}%
-\UnicodeMathSymbol{"003F5}{\mupepsilon }{\mathalpha}{greek lunate varepsilon symbol}%
-\UnicodeMathSymbol{"003F6}{\upbackepsilon }{\mathord}{greek reversed lunate epsilon symbol}%
-\UnicodeMathSymbol{"02010}{\mathhyphen }{\mathalpha}{hyphen}%
-\UnicodeMathSymbol{"02015}{\horizbar }{\mathord}{horizontal bar}%
-\UnicodeMathSymbol{"02016}{\Vert }{\mathfence}{double vertical bar}%
-\UnicodeMathSymbol{"02017}{\twolowline }{\mathord}{double low line (spacing)}%
-\UnicodeMathSymbol{"02020}{\dagger }{\mathbin}{dagger relation}%
-\UnicodeMathSymbol{"02021}{\ddagger }{\mathbin}{double dagger relation}%
-\UnicodeMathSymbol{"02022}{\smblkcircle }{\mathbin}{/bullet b: round bullet, filled}%
-\UnicodeMathSymbol{"02025}{\enleadertwodots }{\mathord}{double baseline dot (en leader)}%
-\UnicodeMathSymbol{"02026}{\unicodeellipsis }{\mathord}{ellipsis (horizontal)}%
-\UnicodeMathSymbol{"02032}{\prime }{\mathord}{prime or minute, not superscripted}%
-\UnicodeMathSymbol{"02033}{\dprime }{\mathord}{double prime or second, not superscripted}%
-\UnicodeMathSymbol{"02034}{\trprime }{\mathord}{triple prime (not superscripted)}%
-\UnicodeMathSymbol{"02035}{\backprime }{\mathord}{reverse prime, not superscripted}%
-\UnicodeMathSymbol{"02036}{\backdprime }{\mathord}{double reverse prime, not superscripted}%
-\UnicodeMathSymbol{"02037}{\backtrprime }{\mathord}{triple reverse prime, not superscripted}%
-\UnicodeMathSymbol{"02038}{\caretinsert }{\mathord}{caret (insertion mark)}%
-\UnicodeMathSymbol{"0203C}{\Exclam }{\mathord}{double exclamation mark}%
-\UnicodeMathSymbol{"02040}{\tieconcat }{\mathbin}{character tie, z notation sequence concatenation}%
-\UnicodeMathSymbol{"02043}{\hyphenbullet }{\mathord}{rectangle, filled (hyphen bullet)}%
-\UnicodeMathSymbol{"02044}{\fracslash }{\mathbin}{fraction slash}%
-\UnicodeMathSymbol{"02047}{\Question }{\mathord}{double question mark}%
-\UnicodeMathSymbol{"02050}{\closure }{\mathrel}{close up}%
-\UnicodeMathSymbol{"02057}{\qprime }{\mathord}{quadruple prime, not superscripted}%
-\UnicodeMathSymbol{"020AC}{\euro }{\mathord}{euro sign}%
-\UnicodeMathSymbol{"020D0}{\leftharpoonaccent }{\mathaccent}{combining left harpoon above}%
-\UnicodeMathSymbol{"020D0}{\overleftharpoon }{\mathaccentwide}{combining left harpoon above}%
-\UnicodeMathSymbol{"020D1}{\rightharpoonaccent }{\mathaccent}{combining right harpoon above}%
-\UnicodeMathSymbol{"020D1}{\overrightharpoon }{\mathaccentwide}{combining right harpoon above}%
-\UnicodeMathSymbol{"020D2}{\vertoverlay }{\mathaccent}{combining long vertical line overlay}%
-\UnicodeMathSymbol{"020D6}{\overleftarrow }{\mathaccentwide}{combining left arrow above}%
-\UnicodeMathSymbol{"020D7}{\overrightarrow }{\mathaccentwide}{combining left arrow above}%
-\UnicodeMathSymbol{"020D7}{\vec }{\mathaccent}{combining right arrow above}%
-\UnicodeMathSymbol{"020DB}{\dddot }{\mathaccent}{combining three dots above}%
-\UnicodeMathSymbol{"020DC}{\ddddot }{\mathaccent}{combining four dots above}%
-\UnicodeMathSymbol{"020DD}{\enclosecircle }{\mathord}{combining enclosing circle}%
-\UnicodeMathSymbol{"020DE}{\enclosesquare }{\mathord}{combining enclosing square}%
-\UnicodeMathSymbol{"020DF}{\enclosediamond }{\mathord}{combining enclosing diamond}%
-\UnicodeMathSymbol{"020E1}{\overleftrightarrow }{\mathaccentwide}{combining left right arrow above}%
-\UnicodeMathSymbol{"020E4}{\enclosetriangle }{\mathord}{combining enclosing upward pointing triangle}%
-\UnicodeMathSymbol{"020E7}{\annuity }{\mathaccent}{combining annuity symbol}%
-\UnicodeMathSymbol{"020E8}{\threeunderdot }{\mathbotaccent}{combining triple underdot}%
-\UnicodeMathSymbol{"020E9}{\widebridgeabove }{\mathaccent}{combining wide bridge above}%
-\UnicodeMathSymbol{"020EC}{\underrightharpoondown }{\mathbotaccentwide}{combining rightwards harpoon with barb downwards}%
-\UnicodeMathSymbol{"020ED}{\underleftharpoondown }{\mathbotaccentwide}{combining leftwards harpoon with barb downwards}%
-\UnicodeMathSymbol{"020EE}{\underleftarrow }{\mathbotaccentwide}{combining left arrow below}%
-\UnicodeMathSymbol{"020EF}{\underrightarrow }{\mathbotaccentwide}{combining right arrow below}%
-\UnicodeMathSymbol{"020F0}{\asteraccent }{\mathaccent}{combining asterisk above}%
-\UnicodeMathSymbol{"02102}{\BbbC }{\mathalpha}{/bbb c, open face c}%
-\UnicodeMathSymbol{"02107}{\Eulerconst }{\mathord}{euler constant}%
-\UnicodeMathSymbol{"0210A}{\mscrg }{\mathalpha}{/scr g, script letter g}%
-\UnicodeMathSymbol{"0210B}{\mscrH }{\mathalpha}{hamiltonian (script capital h)}%
-\UnicodeMathSymbol{"0210C}{\mfrakH }{\mathalpha}{/frak h, upper case h}%
-\UnicodeMathSymbol{"0210D}{\BbbH }{\mathalpha}{/bbb h, open face h}%
-\UnicodeMathSymbol{"0210E}{\Planckconst }{\mathord}{planck constant}%
-\UnicodeMathSymbol{"0210F}{\hslash }{\mathalpha}{/hslash - variant planck's over 2pi}%
-\UnicodeMathSymbol{"02110}{\mscrI }{\mathalpha}{/scr i, script letter i}%
-\UnicodeMathSymbol{"02111}{\Im }{\mathalpha}{imaginary part}%
-\UnicodeMathSymbol{"02112}{\mscrL }{\mathalpha}{lagrangian (script capital l)}%
-\UnicodeMathSymbol{"02113}{\ell }{\mathalpha}{cursive small l}%
-\UnicodeMathSymbol{"02115}{\BbbN }{\mathalpha}{/bbb n, open face n}%
-\UnicodeMathSymbol{"02118}{\wp }{\mathalpha}{weierstrass p}%
-\UnicodeMathSymbol{"02119}{\BbbP }{\mathalpha}{/bbb p, open face p}%
-\UnicodeMathSymbol{"0211A}{\BbbQ }{\mathalpha}{/bbb q, open face q}%
-\UnicodeMathSymbol{"0211B}{\mscrR }{\mathalpha}{/scr r, script letter r}%
-\UnicodeMathSymbol{"0211C}{\Re }{\mathalpha}{real part}%
-\UnicodeMathSymbol{"0211D}{\BbbR }{\mathalpha}{/bbb r, open face r}%
-\UnicodeMathSymbol{"02124}{\BbbZ }{\mathalpha}{/bbb z, open face z}%
-\UnicodeMathSymbol{"02127}{\mho }{\mathord}{conductance}%
-\UnicodeMathSymbol{"02128}{\mfrakZ }{\mathalpha}{/frak z, upper case z}%
-\UnicodeMathSymbol{"02129}{\turnediota }{\mathalpha}{turned iota}%
-\UnicodeMathSymbol{"0212B}{\Angstrom }{\mathalpha}{angstrom capital a, ring}%
-\UnicodeMathSymbol{"0212C}{\mscrB }{\mathalpha}{bernoulli function (script capital b)}%
-\UnicodeMathSymbol{"0212D}{\mfrakC }{\mathalpha}{black-letter capital c}%
-\UnicodeMathSymbol{"0212F}{\mscre }{\mathalpha}{/scr e, script letter e}%
-\UnicodeMathSymbol{"02130}{\mscrE }{\mathalpha}{/scr e, script letter e}%
-\UnicodeMathSymbol{"02131}{\mscrF }{\mathalpha}{/scr f, script letter f}%
-\UnicodeMathSymbol{"02132}{\Finv }{\mathord}{turned capital f}%
-\UnicodeMathSymbol{"02133}{\mscrM }{\mathalpha}{physics m-matrix (script capital m)}%
-\UnicodeMathSymbol{"02134}{\mscro }{\mathalpha}{order of (script small o)}%
-\UnicodeMathSymbol{"02135}{\aleph }{\mathalpha}{aleph, hebrew}%
-\UnicodeMathSymbol{"02136}{\beth }{\mathalpha}{beth, hebrew}%
-\UnicodeMathSymbol{"02137}{\gimel }{\mathalpha}{gimel, hebrew}%
-\UnicodeMathSymbol{"02138}{\daleth }{\mathalpha}{daleth, hebrew}%
-\UnicodeMathSymbol{"0213C}{\Bbbpi }{\mathord}{double-struck small pi}%
-\UnicodeMathSymbol{"0213D}{\Bbbgamma }{\mathalpha}{double-struck small gamma}%
-\UnicodeMathSymbol{"0213E}{\BbbGamma }{\mathalpha}{double-struck capital gamma}%
-\UnicodeMathSymbol{"0213F}{\BbbPi }{\mathalpha}{double-struck capital pi}%
-\UnicodeMathSymbol{"02140}{\Bbbsum }{\mathop}{double-struck n-ary summation}%
-\UnicodeMathSymbol{"02141}{\Game }{\mathord}{turned sans-serif capital g}%
-\UnicodeMathSymbol{"02142}{\sansLturned }{\mathord}{turned sans-serif capital l}%
-\UnicodeMathSymbol{"02143}{\sansLmirrored }{\mathord}{reversed sans-serif capital l}%
-\UnicodeMathSymbol{"02144}{\Yup }{\mathord}{turned sans-serif capital y}%
-\UnicodeMathSymbol{"02145}{\mitBbbD }{\mathord}{double-struck italic capital d}%
-\UnicodeMathSymbol{"02146}{\mitBbbd }{\mathord}{double-struck italic small d}%
-\UnicodeMathSymbol{"02147}{\mitBbbe }{\mathord}{double-struck italic small e}%
-\UnicodeMathSymbol{"02148}{\mitBbbi }{\mathord}{double-struck italic small i}%
-\UnicodeMathSymbol{"02149}{\mitBbbj }{\mathord}{double-struck italic small j}%
-\UnicodeMathSymbol{"0214A}{\PropertyLine }{\mathord}{property line}%
-\UnicodeMathSymbol{"0214B}{\upand }{\mathbin}{turned ampersand}%
-\UnicodeMathSymbol{"02190}{\leftarrow }{\mathrel}{/leftarrow /gets a: leftward arrow}%
-\UnicodeMathSymbol{"02191}{\uparrow }{\mathrel}{upward arrow}%
-\UnicodeMathSymbol{"02192}{\rightarrow }{\mathrel}{/rightarrow /to a: rightward arrow}%
-\UnicodeMathSymbol{"02193}{\downarrow }{\mathrel}{downward arrow}%
-\UnicodeMathSymbol{"02194}{\leftrightarrow }{\mathrel}{left and right arrow}%
-\UnicodeMathSymbol{"02195}{\updownarrow }{\mathrel}{up and down arrow}%
-\UnicodeMathSymbol{"02196}{\nwarrow }{\mathrel}{nw pointing arrow}%
-\UnicodeMathSymbol{"02197}{\nearrow }{\mathrel}{ne pointing arrow}%
-\UnicodeMathSymbol{"02198}{\searrow }{\mathrel}{se pointing arrow}%
-\UnicodeMathSymbol{"02199}{\swarrow }{\mathrel}{sw pointing arrow}%
-\UnicodeMathSymbol{"0219A}{\nleftarrow }{\mathrel}{not left arrow}%
-\UnicodeMathSymbol{"0219B}{\nrightarrow }{\mathrel}{not right arrow}%
-\UnicodeMathSymbol{"0219C}{\leftwavearrow }{\mathrel}{left arrow-wavy}%
-\UnicodeMathSymbol{"0219D}{\rightwavearrow }{\mathrel}{right arrow-wavy}%
-\UnicodeMathSymbol{"0219E}{\twoheadleftarrow }{\mathrel}{left two-headed arrow}%
-\UnicodeMathSymbol{"0219F}{\twoheaduparrow }{\mathrel}{up two-headed arrow}%
-\UnicodeMathSymbol{"021A0}{\twoheadrightarrow }{\mathrel}{right two-headed arrow}%
-\UnicodeMathSymbol{"021A1}{\twoheaddownarrow }{\mathrel}{down two-headed arrow}%
-\UnicodeMathSymbol{"021A2}{\leftarrowtail }{\mathrel}{left arrow-tailed}%
-\UnicodeMathSymbol{"021A3}{\rightarrowtail }{\mathrel}{right arrow-tailed}%
-\UnicodeMathSymbol{"021A4}{\mapsfrom }{\mathrel}{maps to, leftward}%
-\UnicodeMathSymbol{"021A5}{\mapsup }{\mathrel}{maps to, upward}%
-\UnicodeMathSymbol{"021A6}{\mapsto }{\mathrel}{maps to, rightward}%
-\UnicodeMathSymbol{"021A7}{\mapsdown }{\mathrel}{maps to, downward}%
-\UnicodeMathSymbol{"021A8}{\updownarrowbar }{\mathord}{up down arrow with base (perpendicular)}%
-\UnicodeMathSymbol{"021A9}{\hookleftarrow }{\mathrel}{left arrow-hooked}%
-\UnicodeMathSymbol{"021AA}{\hookrightarrow }{\mathrel}{right arrow-hooked}%
-\UnicodeMathSymbol{"021AB}{\looparrowleft }{\mathrel}{left arrow-looped}%
-\UnicodeMathSymbol{"021AC}{\looparrowright }{\mathrel}{right arrow-looped}%
-\UnicodeMathSymbol{"021AD}{\leftrightsquigarrow }{\mathrel}{left and right arr-wavy}%
-\UnicodeMathSymbol{"021AE}{\nleftrightarrow }{\mathrel}{not left and right arrow}%
-\UnicodeMathSymbol{"021AF}{\downzigzagarrow }{\mathrel}{downwards zigzag arrow}%
-\UnicodeMathSymbol{"021B0}{\Lsh }{\mathrel}{/lsh a:}%
-\UnicodeMathSymbol{"021B1}{\Rsh }{\mathrel}{/rsh a:}%
-\UnicodeMathSymbol{"021B2}{\Ldsh }{\mathrel}{left down angled arrow}%
-\UnicodeMathSymbol{"021B3}{\Rdsh }{\mathrel}{right down angled arrow}%
-\UnicodeMathSymbol{"021B4}{\linefeed }{\mathord}{rightwards arrow with corner downwards}%
-\UnicodeMathSymbol{"021B5}{\carriagereturn }{\mathord}{downwards arrow with corner leftward = carriage return}%
-\UnicodeMathSymbol{"021B6}{\curvearrowleft }{\mathrel}{left curved arrow}%
-\UnicodeMathSymbol{"021B7}{\curvearrowright }{\mathrel}{right curved arrow}%
-\UnicodeMathSymbol{"021B8}{\barovernorthwestarrow }{\mathord}{north west arrow to long bar}%
-\UnicodeMathSymbol{"021B9}{\barleftarrowrightarrowbar}{\mathord}{leftwards arrow to bar over rightwards arrow to bar}%
-\UnicodeMathSymbol{"021BA}{\acwopencirclearrow }{\mathord}{anticlockwise open circle arrow}%
-\UnicodeMathSymbol{"021BB}{\cwopencirclearrow }{\mathord}{clockwise open circle arrow}%
-\UnicodeMathSymbol{"021BC}{\leftharpoonup }{\mathrel}{left harpoon-up}%
-\UnicodeMathSymbol{"021BD}{\leftharpoondown }{\mathrel}{left harpoon-down}%
-\UnicodeMathSymbol{"021BE}{\upharpoonright }{\mathrel}{/upharpoonright /restriction a: up harpoon-right}%
-\UnicodeMathSymbol{"021BF}{\upharpoonleft }{\mathrel}{up harpoon-left}%
-\UnicodeMathSymbol{"021C0}{\rightharpoonup }{\mathrel}{right harpoon-up}%
-\UnicodeMathSymbol{"021C1}{\rightharpoondown }{\mathrel}{right harpoon-down}%
-\UnicodeMathSymbol{"021C2}{\downharpoonright }{\mathrel}{down harpoon-right}%
-\UnicodeMathSymbol{"021C3}{\downharpoonleft }{\mathrel}{down harpoon-left}%
-\UnicodeMathSymbol{"021C4}{\rightleftarrows }{\mathrel}{right arrow over left arrow}%
-\UnicodeMathSymbol{"021C5}{\updownarrows }{\mathrel}{up arrow, down arrow}%
-\UnicodeMathSymbol{"021C6}{\leftrightarrows }{\mathrel}{left arrow over right arrow}%
-\UnicodeMathSymbol{"021C7}{\leftleftarrows }{\mathrel}{two left arrows}%
-\UnicodeMathSymbol{"021C8}{\upuparrows }{\mathrel}{two up arrows}%
-\UnicodeMathSymbol{"021C9}{\rightrightarrows }{\mathrel}{two right arrows}%
-\UnicodeMathSymbol{"021CA}{\downdownarrows }{\mathrel}{two down arrows}%
-\UnicodeMathSymbol{"021CB}{\leftrightharpoons }{\mathrel}{left harpoon over right}%
-\UnicodeMathSymbol{"021CC}{\rightleftharpoons }{\mathrel}{right harpoon over left}%
-\UnicodeMathSymbol{"021CD}{\nLeftarrow }{\mathrel}{not implied by}%
-\UnicodeMathSymbol{"021CE}{\nLeftrightarrow }{\mathrel}{not left and right double arrows}%
-\UnicodeMathSymbol{"021CF}{\nRightarrow }{\mathrel}{not implies}%
-\UnicodeMathSymbol{"021D0}{\Leftarrow }{\mathrel}{is implied by}%
-\UnicodeMathSymbol{"021D1}{\Uparrow }{\mathrel}{up double arrow}%
-\UnicodeMathSymbol{"021D2}{\Rightarrow }{\mathrel}{implies}%
-\UnicodeMathSymbol{"021D3}{\Downarrow }{\mathrel}{down double arrow}%
-\UnicodeMathSymbol{"021D4}{\Leftrightarrow }{\mathrel}{left and right double arrow}%
-\UnicodeMathSymbol{"021D5}{\Updownarrow }{\mathrel}{up and down double arrow}%
-\UnicodeMathSymbol{"021D6}{\Nwarrow }{\mathrel}{nw pointing double arrow}%
-\UnicodeMathSymbol{"021D7}{\Nearrow }{\mathrel}{ne pointing double arrow}%
-\UnicodeMathSymbol{"021D8}{\Searrow }{\mathrel}{se pointing double arrow}%
-\UnicodeMathSymbol{"021D9}{\Swarrow }{\mathrel}{sw pointing double arrow}%
-\UnicodeMathSymbol{"021DA}{\Lleftarrow }{\mathrel}{left triple arrow}%
-\UnicodeMathSymbol{"021DB}{\Rrightarrow }{\mathrel}{right triple arrow}%
-\UnicodeMathSymbol{"021DC}{\leftsquigarrow }{\mathrel}{leftwards squiggle arrow}%
-\UnicodeMathSymbol{"021DD}{\rightsquigarrow }{\mathrel}{rightwards squiggle arrow}%
-\UnicodeMathSymbol{"021DE}{\nHuparrow }{\mathord}{upwards arrow with double stroke}%
-\UnicodeMathSymbol{"021DF}{\nHdownarrow }{\mathord}{downwards arrow with double stroke}%
-\UnicodeMathSymbol{"021E0}{\leftdasharrow }{\mathord}{leftwards dashed arrow}%
-\UnicodeMathSymbol{"021E1}{\updasharrow }{\mathord}{upwards dashed arrow}%
-\UnicodeMathSymbol{"021E2}{\rightdasharrow }{\mathord}{rightwards dashed arrow}%
-\UnicodeMathSymbol{"021E3}{\downdasharrow }{\mathord}{downwards dashed arrow}%
-\UnicodeMathSymbol{"021E4}{\barleftarrow }{\mathrel}{leftwards arrow to bar}%
-\UnicodeMathSymbol{"021E5}{\rightarrowbar }{\mathrel}{rightwards arrow to bar}%
-\UnicodeMathSymbol{"021E6}{\leftwhitearrow }{\mathord}{leftwards white arrow}%
-\UnicodeMathSymbol{"021E7}{\upwhitearrow }{\mathord}{upwards white arrow}%
-\UnicodeMathSymbol{"021E8}{\rightwhitearrow }{\mathord}{rightwards white arrow}%
-\UnicodeMathSymbol{"021E9}{\downwhitearrow }{\mathord}{downwards white arrow}%
-\UnicodeMathSymbol{"021EA}{\whitearrowupfrombar }{\mathord}{upwards white arrow from bar}%
-\UnicodeMathSymbol{"021F4}{\circleonrightarrow }{\mathrel}{right arrow with small circle}%
-\UnicodeMathSymbol{"021F5}{\downuparrows }{\mathrel}{downwards arrow leftwards of upwards arrow}%
-\UnicodeMathSymbol{"021F6}{\rightthreearrows }{\mathrel}{three rightwards arrows}%
-\UnicodeMathSymbol{"021F7}{\nvleftarrow }{\mathrel}{leftwards arrow with vertical stroke}%
-\UnicodeMathSymbol{"021F8}{\nvrightarrow }{\mathrel}{rightwards arrow with vertical stroke}%
-\UnicodeMathSymbol{"021F9}{\nvleftrightarrow }{\mathrel}{left right arrow with vertical stroke}%
-\UnicodeMathSymbol{"021FA}{\nVleftarrow }{\mathrel}{leftwards arrow with double vertical stroke}%
-\UnicodeMathSymbol{"021FB}{\nVrightarrow }{\mathrel}{rightwards arrow with double vertical stroke}%
-\UnicodeMathSymbol{"021FC}{\nVleftrightarrow }{\mathrel}{left right arrow with double vertical stroke}%
-\UnicodeMathSymbol{"021FD}{\leftarrowtriangle }{\mathrel}{leftwards open-headed arrow}%
-\UnicodeMathSymbol{"021FE}{\rightarrowtriangle }{\mathrel}{rightwards open-headed arrow}%
-\UnicodeMathSymbol{"021FF}{\leftrightarrowtriangle }{\mathrel}{left right open-headed arrow}%
-\UnicodeMathSymbol{"02200}{\forall }{\mathord}{for all}%
-\UnicodeMathSymbol{"02201}{\complement }{\mathord}{complement sign}%
-\UnicodeMathSymbol{"02202}{\partial }{\mathalpha}{partial differential}%
-\UnicodeMathSymbol{"02203}{\exists }{\mathord}{at least one exists}%
-\UnicodeMathSymbol{"02204}{\nexists }{\mathord}{negated exists}%
-\UnicodeMathSymbol{"02205}{\varnothing }{\mathord}{circle, slash}%
-\UnicodeMathSymbol{"02206}{\increment }{\mathord}{laplacian (delta; nabla\string^2)}%
-\UnicodeMathSymbol{"02207}{\nabla }{\mathalpha}{nabla, del, hamilton operator}%
-\UnicodeMathSymbol{"02208}{\in }{\mathrel}{set membership, variant}%
-\UnicodeMathSymbol{"02209}{\notin }{\mathrel}{negated set membership}%
-\UnicodeMathSymbol{"0220A}{\smallin }{\mathrel}{set membership (small set membership)}%
-\UnicodeMathSymbol{"0220B}{\ni }{\mathrel}{contains, variant}%
-\UnicodeMathSymbol{"0220C}{\nni }{\mathrel}{negated contains, variant}%
-\UnicodeMathSymbol{"0220D}{\smallni }{\mathrel}{/ni /owns r: contains (small contains as member)}%
-\UnicodeMathSymbol{"0220E}{\QED }{\mathord}{end of proof}%
-\UnicodeMathSymbol{"0220F}{\prod }{\mathop}{product operator}%
-\UnicodeMathSymbol{"02210}{\coprod }{\mathop}{coproduct operator}%
-\UnicodeMathSymbol{"02211}{\sum }{\mathop}{summation operator}%
-\UnicodeMathSymbol{"02212}{\minus }{\mathbin}{minus sign}%
-\UnicodeMathSymbol{"02213}{\mp }{\mathbin}{minus-or-plus sign}%
-\UnicodeMathSymbol{"02214}{\dotplus }{\mathbin}{plus sign, dot above}%
-\UnicodeMathSymbol{"02215}{\divslash }{\mathbin}{division slash}%
-\UnicodeMathSymbol{"02216}{\smallsetminus }{\mathbin}{small set minus (cf. reverse solidus)}%
-\UnicodeMathSymbol{"02217}{\ast }{\mathbin}{centered asterisk}%
-\UnicodeMathSymbol{"02218}{\vysmwhtcircle }{\mathbin}{composite function (small circle)}%
-\UnicodeMathSymbol{"02219}{\vysmblkcircle }{\mathbin}{bullet operator}%
-\UnicodeMathSymbol{"0221A}{\sqrt }{\mathopen}{radical}%
-\UnicodeMathSymbol{"0221A}{\surd }{\mathord}{radical}%
-\UnicodeMathSymbol{"0221B}{\cuberoot }{\mathopen}{cube root}%
-\UnicodeMathSymbol{"0221C}{\fourthroot }{\mathopen}{fourth root}%
-\UnicodeMathSymbol{"0221D}{\propto }{\mathrel}{is proportional to}%
-\UnicodeMathSymbol{"0221E}{\infty }{\mathord}{infinity}%
-\UnicodeMathSymbol{"0221F}{\rightangle }{\mathord}{right (90 degree) angle}%
-\UnicodeMathSymbol{"02220}{\angle }{\mathord}{angle}%
-\UnicodeMathSymbol{"02221}{\measuredangle }{\mathord}{angle-measured}%
-\UnicodeMathSymbol{"02222}{\sphericalangle }{\mathord}{angle-spherical}%
-\UnicodeMathSymbol{"02223}{\mid }{\mathrel}{/mid r:}%
-\UnicodeMathSymbol{"02224}{\nmid }{\mathrel}{negated mid}%
-\UnicodeMathSymbol{"02225}{\parallel }{\mathrel}{parallel}%
-\UnicodeMathSymbol{"02226}{\nparallel }{\mathrel}{not parallel}%
-\UnicodeMathSymbol{"02227}{\wedge }{\mathbin}{/wedge /land b: logical and}%
-\UnicodeMathSymbol{"02228}{\vee }{\mathbin}{/vee /lor b: logical or}%
-\UnicodeMathSymbol{"02229}{\cap }{\mathbin}{intersection}%
-\UnicodeMathSymbol{"0222A}{\cup }{\mathbin}{union or logical sum}%
-\UnicodeMathSymbol{"0222B}{\int }{\mathop}{integral operator}%
-\UnicodeMathSymbol{"0222C}{\iint }{\mathop}{double integral operator}%
-\UnicodeMathSymbol{"0222D}{\iiint }{\mathop}{triple integral operator}%
-\UnicodeMathSymbol{"0222E}{\oint }{\mathop}{contour integral operator}%
-\UnicodeMathSymbol{"0222F}{\oiint }{\mathop}{double contour integral operator}%
-\UnicodeMathSymbol{"02230}{\oiiint }{\mathop}{triple contour integral operator}%
-\UnicodeMathSymbol{"02231}{\intclockwise }{\mathop}{clockwise integral}%
-\UnicodeMathSymbol{"02232}{\varointclockwise }{\mathop}{contour integral, clockwise}%
-\UnicodeMathSymbol{"02233}{\ointctrclockwise }{\mathop}{contour integral, anticlockwise}%
-\UnicodeMathSymbol{"02234}{\therefore }{\mathord}{therefore}%
-\UnicodeMathSymbol{"02235}{\because }{\mathord}{because}%
-\UnicodeMathSymbol{"02236}{\mathratio }{\mathrel}{ratio}%
-\UnicodeMathSymbol{"02237}{\Colon }{\mathrel}{two colons}%
-\UnicodeMathSymbol{"02238}{\dotminus }{\mathbin}{minus sign, dot above}%
-\UnicodeMathSymbol{"02239}{\dashcolon }{\mathrel}{excess (-:)}%
-\UnicodeMathSymbol{"0223A}{\dotsminusdots }{\mathrel}{minus with four dots, geometric properties}%
-\UnicodeMathSymbol{"0223B}{\kernelcontraction }{\mathrel}{homothetic}%
-\UnicodeMathSymbol{"0223C}{\sim }{\mathrel}{similar}%
-\UnicodeMathSymbol{"0223D}{\backsim }{\mathrel}{reverse similar}%
-\UnicodeMathSymbol{"0223E}{\invlazys }{\mathbin}{most positive [inverted lazy s]}%
-\UnicodeMathSymbol{"0223F}{\sinewave }{\mathord}{sine wave}%
-\UnicodeMathSymbol{"02240}{\wr }{\mathbin}{wreath product}%
-\UnicodeMathSymbol{"02241}{\nsim }{\mathrel}{not similar}%
-\UnicodeMathSymbol{"02242}{\eqsim }{\mathrel}{equals, similar}%
-\UnicodeMathSymbol{"02243}{\simeq }{\mathrel}{similar, equals}%
-\UnicodeMathSymbol{"02244}{\nsime }{\mathrel}{not similar, equals}%
-\UnicodeMathSymbol{"02243}{\sime }{\mathrel}{similar, equals (alias)}%
-\UnicodeMathSymbol{"02244}{\nsimeq }{\mathrel}{not similar, equals (alias)}%
-\UnicodeMathSymbol{"02245}{\cong }{\mathrel}{congruent with}%
-\UnicodeMathSymbol{"02246}{\simneqq }{\mathrel}{similar, not equals [vert only for 9573 entity]}%
-\UnicodeMathSymbol{"02247}{\ncong }{\mathrel}{not congruent with}%
-\UnicodeMathSymbol{"02248}{\approx }{\mathrel}{approximate}%
-\UnicodeMathSymbol{"02249}{\napprox }{\mathrel}{not approximate}%
-\UnicodeMathSymbol{"0224A}{\approxeq }{\mathrel}{approximate, equals}%
-\UnicodeMathSymbol{"0224B}{\approxident }{\mathrel}{approximately identical to}%
-\UnicodeMathSymbol{"0224C}{\backcong }{\mathrel}{all equal to}%
-\UnicodeMathSymbol{"0224D}{\asymp }{\mathrel}{asymptotically equal to}%
-\UnicodeMathSymbol{"0224E}{\Bumpeq }{\mathrel}{bumpy equals}%
-\UnicodeMathSymbol{"0224F}{\bumpeq }{\mathrel}{bumpy equals, equals}%
-\UnicodeMathSymbol{"02250}{\doteq }{\mathrel}{equals, single dot above}%
-\UnicodeMathSymbol{"02251}{\Doteq }{\mathrel}{/doteqdot /doteq r: equals, even dots}%
-\UnicodeMathSymbol{"02252}{\fallingdotseq }{\mathrel}{equals, falling dots}%
-\UnicodeMathSymbol{"02253}{\risingdotseq }{\mathrel}{equals, rising dots}%
-\UnicodeMathSymbol{"02254}{\coloneq }{\mathrel}{colon, equals}%
-\UnicodeMathSymbol{"02255}{\eqcolon }{\mathrel}{equals, colon}%
-\UnicodeMathSymbol{"02256}{\eqcirc }{\mathrel}{circle on equals sign}%
-\UnicodeMathSymbol{"02257}{\circeq }{\mathrel}{circle, equals}%
-\UnicodeMathSymbol{"02258}{\arceq }{\mathrel}{arc, equals; corresponds to}%
-\UnicodeMathSymbol{"02259}{\wedgeq }{\mathrel}{corresponds to (wedge, equals)}%
-\UnicodeMathSymbol{"0225A}{\veeeq }{\mathrel}{logical or, equals}%
-\UnicodeMathSymbol{"0225B}{\stareq }{\mathrel}{star equals}%
-\UnicodeMathSymbol{"0225C}{\triangleq }{\mathrel}{triangle, equals}%
-\UnicodeMathSymbol{"0225D}{\eqdef }{\mathrel}{equals by definition}%
-\UnicodeMathSymbol{"0225E}{\measeq }{\mathrel}{measured by (m over equals)}%
-\UnicodeMathSymbol{"0225F}{\questeq }{\mathrel}{equal with questionmark}%
-\UnicodeMathSymbol{"02260}{\ne }{\mathrel}{/ne /neq r: not equal}%
-\UnicodeMathSymbol{"02261}{\equiv }{\mathrel}{identical with}%
-\UnicodeMathSymbol{"02262}{\nequiv }{\mathrel}{not identical with}%
-\UnicodeMathSymbol{"02263}{\Equiv }{\mathrel}{strict equivalence (4 lines)}%
-\UnicodeMathSymbol{"02264}{\leq }{\mathrel}{/leq /le r: less-than-or-equal}%
-\UnicodeMathSymbol{"02265}{\geq }{\mathrel}{/geq /ge r: greater-than-or-equal}%
-\UnicodeMathSymbol{"02266}{\leqq }{\mathrel}{less, double equals}%
-\UnicodeMathSymbol{"02267}{\geqq }{\mathrel}{greater, double equals}%
-\UnicodeMathSymbol{"02268}{\lneqq }{\mathrel}{less, not double equals}%
-\UnicodeMathSymbol{"02269}{\gneqq }{\mathrel}{greater, not double equals}%
-\UnicodeMathSymbol{"0226A}{\ll }{\mathrel}{much less than, type 2}%
-\UnicodeMathSymbol{"0226B}{\gg }{\mathrel}{much greater than, type 2}%
-\UnicodeMathSymbol{"0226C}{\between }{\mathrel}{between}%
-\UnicodeMathSymbol{"0226D}{\nasymp }{\mathrel}{not asymptotically equal to}%
-\UnicodeMathSymbol{"0226E}{\nless }{\mathrel}{not less-than}%
-\UnicodeMathSymbol{"0226F}{\ngtr }{\mathrel}{not greater-than}%
-\UnicodeMathSymbol{"02270}{\nleq }{\mathrel}{not less-than-or-equal}%
-\UnicodeMathSymbol{"02271}{\ngeq }{\mathrel}{not greater-than-or-equal}%
-\UnicodeMathSymbol{"02272}{\lesssim }{\mathrel}{less, similar}%
-\UnicodeMathSymbol{"02273}{\gtrsim }{\mathrel}{greater, similar}%
-\UnicodeMathSymbol{"02274}{\nlesssim }{\mathrel}{not less, similar}%
-\UnicodeMathSymbol{"02275}{\ngtrsim }{\mathrel}{not greater, similar}%
-\UnicodeMathSymbol{"02276}{\lessgtr }{\mathrel}{less, greater}%
-\UnicodeMathSymbol{"02277}{\gtrless }{\mathrel}{greater, less}%
-\UnicodeMathSymbol{"02278}{\nlessgtr }{\mathrel}{not less, greater}%
-\UnicodeMathSymbol{"02279}{\ngtrless }{\mathrel}{not greater, less}%
-\UnicodeMathSymbol{"0227A}{\prec }{\mathrel}{precedes}%
-\UnicodeMathSymbol{"0227B}{\succ }{\mathrel}{succeeds}%
-\UnicodeMathSymbol{"0227C}{\preccurlyeq }{\mathrel}{precedes, curly equals}%
-\UnicodeMathSymbol{"0227D}{\succcurlyeq }{\mathrel}{succeeds, curly equals}%
-\UnicodeMathSymbol{"0227E}{\precsim }{\mathrel}{precedes, similar}%
-\UnicodeMathSymbol{"0227F}{\succsim }{\mathrel}{succeeds, similar}%
-\UnicodeMathSymbol{"02280}{\nprec }{\mathrel}{not precedes}%
-\UnicodeMathSymbol{"02281}{\nsucc }{\mathrel}{not succeeds}%
-\UnicodeMathSymbol{"02282}{\subset }{\mathrel}{subset or is implied by}%
-\UnicodeMathSymbol{"02283}{\supset }{\mathrel}{superset or implies}%
-\UnicodeMathSymbol{"02284}{\nsubset }{\mathrel}{not subset, variant [slash negation]}%
-\UnicodeMathSymbol{"02285}{\nsupset }{\mathrel}{not superset, variant [slash negation]}%
-\UnicodeMathSymbol{"02286}{\subseteq }{\mathrel}{subset, equals}%
-\UnicodeMathSymbol{"02287}{\supseteq }{\mathrel}{superset, equals}%
-\UnicodeMathSymbol{"02288}{\nsubseteq }{\mathrel}{not subset, equals}%
-\UnicodeMathSymbol{"02289}{\nsupseteq }{\mathrel}{not superset, equals}%
-\UnicodeMathSymbol{"0228A}{\subsetneq }{\mathrel}{subset, not equals}%
-\UnicodeMathSymbol{"0228B}{\supsetneq }{\mathrel}{superset, not equals}%
-\UnicodeMathSymbol{"0228C}{\cupleftarrow }{\mathbin}{multiset}%
-\UnicodeMathSymbol{"0228D}{\cupdot }{\mathbin}{union, with dot}%
-\UnicodeMathSymbol{"0228E}{\uplus }{\mathbin}{plus sign in union}%
-\UnicodeMathSymbol{"0228F}{\sqsubset }{\mathrel}{square subset}%
-\UnicodeMathSymbol{"02290}{\sqsupset }{\mathrel}{square superset}%
-\UnicodeMathSymbol{"02291}{\sqsubseteq }{\mathrel}{square subset, equals}%
-\UnicodeMathSymbol{"02292}{\sqsupseteq }{\mathrel}{square superset, equals}%
-\UnicodeMathSymbol{"02293}{\sqcap }{\mathbin}{square intersection}%
-\UnicodeMathSymbol{"02294}{\sqcup }{\mathbin}{square union}%
-\UnicodeMathSymbol{"02295}{\oplus }{\mathbin}{plus sign in circle}%
-\UnicodeMathSymbol{"02296}{\ominus }{\mathbin}{minus sign in circle}%
-\UnicodeMathSymbol{"02297}{\otimes }{\mathbin}{multiply sign in circle}%
-\UnicodeMathSymbol{"02298}{\oslash }{\mathbin}{solidus in circle}%
-\UnicodeMathSymbol{"02299}{\odot }{\mathbin}{middle dot in circle}%
-\UnicodeMathSymbol{"0229A}{\circledcirc }{\mathbin}{small circle in circle}%
-\UnicodeMathSymbol{"0229B}{\circledast }{\mathbin}{asterisk in circle}%
-\UnicodeMathSymbol{"0229C}{\circledequal }{\mathbin}{equal in circle}%
-\UnicodeMathSymbol{"0229D}{\circleddash }{\mathbin}{hyphen in circle}%
-\UnicodeMathSymbol{"0229E}{\boxplus }{\mathbin}{plus sign in box}%
-\UnicodeMathSymbol{"0229F}{\boxminus }{\mathbin}{minus sign in box}%
-\UnicodeMathSymbol{"022A0}{\boxtimes }{\mathbin}{multiply sign in box}%
-\UnicodeMathSymbol{"022A1}{\boxdot }{\mathbin}{/dotsquare /boxdot b: small dot in box}%
-\UnicodeMathSymbol{"022A2}{\vdash }{\mathrel}{vertical, dash}%
-\UnicodeMathSymbol{"022A3}{\dashv }{\mathrel}{dash, vertical}%
-\UnicodeMathSymbol{"022A4}{\top }{\mathord}{top}%
-\UnicodeMathSymbol{"022A5}{\bot }{\mathord}{bottom}%
-\UnicodeMathSymbol{"022A6}{\assert }{\mathrel}{assertion (vertical, short dash)}%
-\UnicodeMathSymbol{"022A7}{\models }{\mathrel}{models (vertical, short double dash)}%
-\UnicodeMathSymbol{"022A8}{\vDash }{\mathrel}{vertical, double dash}%
-\UnicodeMathSymbol{"022A9}{\Vdash }{\mathrel}{double vertical, dash}%
-\UnicodeMathSymbol{"022AA}{\Vvdash }{\mathrel}{triple vertical, dash}%
-\UnicodeMathSymbol{"022AB}{\VDash }{\mathrel}{double vert, double dash}%
-\UnicodeMathSymbol{"022AC}{\nvdash }{\mathrel}{not vertical, dash}%
-\UnicodeMathSymbol{"022AD}{\nvDash }{\mathrel}{not vertical, double dash}%
-\UnicodeMathSymbol{"022AE}{\nVdash }{\mathrel}{not double vertical, dash}%
-\UnicodeMathSymbol{"022AF}{\nVDash }{\mathrel}{not double vert, double dash}%
-\UnicodeMathSymbol{"022B0}{\prurel }{\mathrel}{element precedes under relation}%
-\UnicodeMathSymbol{"022B1}{\scurel }{\mathrel}{succeeds under relation}%
-\UnicodeMathSymbol{"022B2}{\vartriangleleft }{\mathrel}{left triangle, open, variant}%
-\UnicodeMathSymbol{"022B3}{\vartriangleright }{\mathrel}{right triangle, open, variant}%
-\UnicodeMathSymbol{"022B4}{\trianglelefteq }{\mathrel}{left triangle, equals}%
-\UnicodeMathSymbol{"022B5}{\trianglerighteq }{\mathrel}{right triangle, equals}%
-\UnicodeMathSymbol{"022B6}{\origof }{\mathrel}{original of}%
-\UnicodeMathSymbol{"022B7}{\imageof }{\mathrel}{image of}%
-\UnicodeMathSymbol{"022B8}{\multimap }{\mathrel}{/multimap a:}%
-\UnicodeMathSymbol{"022B9}{\hermitmatrix }{\mathord}{hermitian conjugate matrix}%
-\UnicodeMathSymbol{"022BA}{\intercal }{\mathbin}{intercal}%
-\UnicodeMathSymbol{"022BB}{\veebar }{\mathbin}{logical or, bar below (large vee); exclusive disjunction}%
-\UnicodeMathSymbol{"022BC}{\barwedge }{\mathbin}{bar, wedge (large wedge)}%
-\UnicodeMathSymbol{"022BD}{\barvee }{\mathbin}{bar, vee (large vee)}%
-\UnicodeMathSymbol{"022BE}{\measuredrightangle }{\mathord}{right angle-measured [with arc]}%
-\UnicodeMathSymbol{"022BF}{\varlrtriangle }{\mathord}{right triangle}%
-\UnicodeMathSymbol{"022C0}{\bigwedge }{\mathop}{logical and operator}%
-\UnicodeMathSymbol{"022C1}{\bigvee }{\mathop}{logical or operator}%
-\UnicodeMathSymbol{"022C2}{\bigcap }{\mathop}{intersection operator}%
-\UnicodeMathSymbol{"022C3}{\bigcup }{\mathop}{union operator}%
-\UnicodeMathSymbol{"022C4}{\smwhtdiamond }{\mathbin}{white diamond}%
-\UnicodeMathSymbol{"022C5}{\cdot }{\mathbin}{small middle dot}%
-\UnicodeMathSymbol{"022C6}{\star }{\mathbin}{small star, filled, low}%
-\UnicodeMathSymbol{"022C7}{\divideontimes }{\mathbin}{division on times}%
-\UnicodeMathSymbol{"022C8}{\bowtie }{\mathrel}{bowtie}%
-\UnicodeMathSymbol{"022C9}{\ltimes }{\mathbin}{times sign, left closed}%
-\UnicodeMathSymbol{"022CA}{\rtimes }{\mathbin}{times sign, right closed}%
-\UnicodeMathSymbol{"022CB}{\leftthreetimes }{\mathbin}{left semidirect product}%
-\UnicodeMathSymbol{"022CC}{\rightthreetimes }{\mathbin}{right semidirect product}%
-\UnicodeMathSymbol{"022CD}{\backsimeq }{\mathrel}{reverse similar, equals}%
-\UnicodeMathSymbol{"022CE}{\curlyvee }{\mathbin}{curly logical or}%
-\UnicodeMathSymbol{"022CF}{\curlywedge }{\mathbin}{curly logical and}%
-\UnicodeMathSymbol{"022D0}{\Subset }{\mathrel}{double subset}%
-\UnicodeMathSymbol{"022D1}{\Supset }{\mathrel}{double superset}%
-\UnicodeMathSymbol{"022D2}{\Cap }{\mathbin}{/cap /doublecap b: double intersection}%
-\UnicodeMathSymbol{"022D3}{\Cup }{\mathbin}{/cup /doublecup b: double union}%
-\UnicodeMathSymbol{"022D4}{\pitchfork }{\mathrel}{pitchfork}%
-\UnicodeMathSymbol{"022D5}{\equalparallel }{\mathrel}{parallel, equal; equal or parallel}%
-\UnicodeMathSymbol{"022D6}{\lessdot }{\mathrel}{less than, with dot}%
-\UnicodeMathSymbol{"022D7}{\gtrdot }{\mathrel}{greater than, with dot}%
-\UnicodeMathSymbol{"022D8}{\lll }{\mathrel}{/ll /lll /llless r: triple less-than}%
-\UnicodeMathSymbol{"022D9}{\ggg }{\mathrel}{/ggg /gg /gggtr r: triple greater-than}%
-\UnicodeMathSymbol{"022DA}{\lesseqgtr }{\mathrel}{less, equals, greater}%
-\UnicodeMathSymbol{"022DB}{\gtreqless }{\mathrel}{greater, equals, less}%
-\UnicodeMathSymbol{"022DC}{\eqless }{\mathrel}{equal-or-less}%
-\UnicodeMathSymbol{"022DD}{\eqgtr }{\mathrel}{equal-or-greater}%
-\UnicodeMathSymbol{"022DE}{\curlyeqprec }{\mathrel}{curly equals, precedes}%
-\UnicodeMathSymbol{"022DF}{\curlyeqsucc }{\mathrel}{curly equals, succeeds}%
-\UnicodeMathSymbol{"022E0}{\npreccurlyeq }{\mathrel}{not precedes, curly equals}%
-\UnicodeMathSymbol{"022E1}{\nsucccurlyeq }{\mathrel}{not succeeds, curly equals}%
-\UnicodeMathSymbol{"022E2}{\nsqsubseteq }{\mathrel}{not, square subset, equals}%
-\UnicodeMathSymbol{"022E3}{\nsqsupseteq }{\mathrel}{not, square superset, equals}%
-\UnicodeMathSymbol{"022E4}{\sqsubsetneq }{\mathrel}{square subset, not equals}%
-\UnicodeMathSymbol{"022E5}{\sqsupsetneq }{\mathrel}{square superset, not equals}%
-\UnicodeMathSymbol{"022E6}{\lnsim }{\mathrel}{less, not similar}%
-\UnicodeMathSymbol{"022E7}{\gnsim }{\mathrel}{greater, not similar}%
-\UnicodeMathSymbol{"022E8}{\precnsim }{\mathrel}{precedes, not similar}%
-\UnicodeMathSymbol{"022E9}{\succnsim }{\mathrel}{succeeds, not similar}%
-\UnicodeMathSymbol{"022EA}{\nvartriangleleft }{\mathrel}{not left triangle}%
-\UnicodeMathSymbol{"022EB}{\nvartriangleright }{\mathrel}{not right triangle}%
-\UnicodeMathSymbol{"022EC}{\ntrianglelefteq }{\mathrel}{not left triangle, equals}%
-\UnicodeMathSymbol{"022ED}{\ntrianglerighteq }{\mathrel}{not right triangle, equals}%
-\UnicodeMathSymbol{"022EE}{\vdots }{\mathrel}{vertical ellipsis}%
-\UnicodeMathSymbol{"022EF}{\unicodecdots }{\mathord}{three dots, centered}%
-\UnicodeMathSymbol{"022F0}{\adots }{\mathrel}{three dots, ascending}%
-\UnicodeMathSymbol{"022F1}{\ddots }{\mathrel}{three dots, descending}%
-\UnicodeMathSymbol{"022F2}{\disin }{\mathrel}{element of with long horizontal stroke}%
-\UnicodeMathSymbol{"022F3}{\varisins }{\mathrel}{element of with vertical bar at end of horizontal stroke}%
-\UnicodeMathSymbol{"022F4}{\isins }{\mathrel}{small element of with vertical bar at end of horizontal stroke}%
-\UnicodeMathSymbol{"022F5}{\isindot }{\mathrel}{element of with dot above}%
-\UnicodeMathSymbol{"022F6}{\varisinobar }{\mathrel}{element of with overbar}%
-\UnicodeMathSymbol{"022F7}{\isinobar }{\mathrel}{small element of with overbar}%
-\UnicodeMathSymbol{"022F8}{\isinvb }{\mathrel}{element of with underbar}%
-\UnicodeMathSymbol{"022F9}{\isinE }{\mathrel}{element of with two horizontal strokes}%
-\UnicodeMathSymbol{"022FA}{\nisd }{\mathrel}{contains with long horizontal stroke}%
-\UnicodeMathSymbol{"022FB}{\varnis }{\mathrel}{contains with vertical bar at end of horizontal stroke}%
-\UnicodeMathSymbol{"022FC}{\nis }{\mathrel}{small contains with vertical bar at end of horizontal stroke}%
-\UnicodeMathSymbol{"022FD}{\varniobar }{\mathrel}{contains with overbar}%
-\UnicodeMathSymbol{"022FE}{\niobar }{\mathrel}{small contains with overbar}%
-\UnicodeMathSymbol{"022FF}{\bagmember }{\mathrel}{z notation bag membership}%
-\UnicodeMathSymbol{"02300}{\diameter }{\mathord}{diameter sign}%
-\UnicodeMathSymbol{"02302}{\house }{\mathord}{house}%
-\UnicodeMathSymbol{"02305}{\varbarwedge }{\mathbin}{/barwedge b: logical and, bar above [projective (bar over small wedge)]}%
-\UnicodeMathSymbol{"02306}{\vardoublebarwedge }{\mathbin}{/doublebarwedge b: logical and, double bar above [perspective (double bar over small wedge)]}%
-\UnicodeMathSymbol{"02308}{\lceil }{\mathopen}{left ceiling}%
-\UnicodeMathSymbol{"02309}{\rceil }{\mathclose}{right ceiling}%
-\UnicodeMathSymbol{"0230A}{\lfloor }{\mathopen}{left floor}%
-\UnicodeMathSymbol{"0230B}{\rfloor }{\mathclose}{right floor}%
-\UnicodeMathSymbol{"02310}{\invnot }{\mathord}{reverse not}%
-\UnicodeMathSymbol{"02311}{\sqlozenge }{\mathord}{square lozenge}%
-\UnicodeMathSymbol{"02312}{\profline }{\mathord}{profile of a line}%
-\UnicodeMathSymbol{"02313}{\profsurf }{\mathord}{profile of a surface}%
-\UnicodeMathSymbol{"02317}{\viewdata }{\mathord}{viewdata square}%
-\UnicodeMathSymbol{"02319}{\turnednot }{\mathord}{turned not sign}%
-\UnicodeMathSymbol{"0231C}{\ulcorner }{\mathopen}{upper left corner}%
-\UnicodeMathSymbol{"0231D}{\urcorner }{\mathclose}{upper right corner}%
-\UnicodeMathSymbol{"0231E}{\llcorner }{\mathopen}{lower left corner}%
-\UnicodeMathSymbol{"0231F}{\lrcorner }{\mathclose}{lower right corner}%
-\UnicodeMathSymbol{"02320}{\inttop }{\mathord}{top half integral}%
-\UnicodeMathSymbol{"02321}{\intbottom }{\mathord}{bottom half integral}%
-\UnicodeMathSymbol{"02322}{\frown }{\mathrel}{down curve}%
-\UnicodeMathSymbol{"02323}{\smile }{\mathrel}{up curve}%
-\UnicodeMathSymbol{"0232C}{\varhexagonlrbonds }{\mathord}{six carbon ring, corner down, double bonds lower right etc}%
-\UnicodeMathSymbol{"02332}{\conictaper }{\mathord}{conical taper }%
-\UnicodeMathSymbol{"02336}{\topbot }{\mathord}{top and bottom}%
-\UnicodeMathSymbol{"0233D}{\obar }{\mathbin}{circle with vertical bar}%
-\UnicodeMathSymbol{"0233F}{\APLnotslash }{\mathrel}{solidus, bar through (apl functional symbol slash bar)}%
-\UnicodeMathSymbol{"02340}{\APLnotbackslash }{\mathord}{apl functional symbol backslash bar}%
-\UnicodeMathSymbol{"02353}{\APLboxupcaret }{\mathord}{boxed up caret}%
-\UnicodeMathSymbol{"02370}{\APLboxquestion }{\mathord}{boxed question mark}%
-\UnicodeMathSymbol{"0237C}{\rangledownzigzagarrow }{\mathord}{right angle with downwards zigzag arrow}%
-\UnicodeMathSymbol{"02394}{\hexagon }{\mathord}{horizontal benzene ring [hexagon flat open]}%
-\UnicodeMathSymbol{"0239B}{\lparenuend }{\mathord}{left parenthesis upper hook}%
-\UnicodeMathSymbol{"0239C}{\lparenextender }{\mathord}{left parenthesis extension}%
-\UnicodeMathSymbol{"0239D}{\lparenlend }{\mathord}{left parenthesis lower hook}%
-\UnicodeMathSymbol{"0239E}{\rparenuend }{\mathord}{right parenthesis upper hook}%
-\UnicodeMathSymbol{"0239F}{\rparenextender }{\mathord}{right parenthesis extension}%
-\UnicodeMathSymbol{"023A0}{\rparenlend }{\mathord}{right parenthesis lower hook}%
-\UnicodeMathSymbol{"023A1}{\lbrackuend }{\mathord}{left square bracket upper corner}%
-\UnicodeMathSymbol{"023A2}{\lbrackextender }{\mathord}{left square bracket extension}%
-\UnicodeMathSymbol{"023A3}{\lbracklend }{\mathord}{left square bracket lower corner}%
-\UnicodeMathSymbol{"023A4}{\rbrackuend }{\mathord}{right square bracket upper corner}%
-\UnicodeMathSymbol{"023A5}{\rbrackextender }{\mathord}{right square bracket extension}%
-\UnicodeMathSymbol{"023A6}{\rbracklend }{\mathord}{right square bracket lower corner}%
-\UnicodeMathSymbol{"023A7}{\lbraceuend }{\mathord}{left curly bracket upper hook}%
-\UnicodeMathSymbol{"023A8}{\lbracemid }{\mathord}{left curly bracket middle piece}%
-\UnicodeMathSymbol{"023A9}{\lbracelend }{\mathord}{left curly bracket lower hook}%
-\UnicodeMathSymbol{"023AA}{\vbraceextender }{\mathord}{curly bracket extension}%
-\UnicodeMathSymbol{"023AB}{\rbraceuend }{\mathord}{right curly bracket upper hook}%
-\UnicodeMathSymbol{"023AC}{\rbracemid }{\mathord}{right curly bracket middle piece}%
-\UnicodeMathSymbol{"023AD}{\rbracelend }{\mathord}{right curly bracket lower hook}%
-\UnicodeMathSymbol{"023AE}{\intextender }{\mathord}{integral extension}%
-\UnicodeMathSymbol{"023AF}{\harrowextender }{\mathord}{horizontal line extension (used to extend arrows)}%
-\UnicodeMathSymbol{"023B0}{\lmoustache }{\mathopen}{upper left or lower right curly bracket section}%
-\UnicodeMathSymbol{"023B1}{\rmoustache }{\mathclose}{upper right or lower left curly bracket section}%
-\UnicodeMathSymbol{"023B2}{\sumtop }{\mathord}{summation top}%
-\UnicodeMathSymbol{"023B3}{\sumbottom }{\mathord}{summation bottom}%
-\UnicodeMathSymbol{"023B4}{\overbracket }{\mathover}{top square bracket}%
-\UnicodeMathSymbol{"023B5}{\underbracket }{\mathunder}{bottom square bracket}%
-\UnicodeMathSymbol{"023B6}{\bbrktbrk }{\mathord}{bottom square bracket over top square bracket}%
-\UnicodeMathSymbol{"023B7}{\sqrtbottom }{\mathord}{radical symbol bottom}%
-\UnicodeMathSymbol{"023B8}{\lvboxline }{\mathord}{left vertical box line}%
-\UnicodeMathSymbol{"023B9}{\rvboxline }{\mathord}{right vertical box line}%
-\UnicodeMathSymbol{"023CE}{\varcarriagereturn }{\mathord}{return symbol}%
-\UnicodeMathSymbol{"023DC}{\overparen }{\mathover}{top parenthesis (mathematical use)}%
-\UnicodeMathSymbol{"023DD}{\underparen }{\mathunder}{bottom parenthesis (mathematical use)}%
-\UnicodeMathSymbol{"023DE}{\overbrace }{\mathover}{top curly bracket (mathematical use)}%
-\UnicodeMathSymbol{"023DF}{\underbrace }{\mathunder}{bottom curly bracket (mathematical use)}%
-\UnicodeMathSymbol{"023E0}{\obrbrak }{\mathord}{top tortoise shell bracket (mathematical use)}%
-\UnicodeMathSymbol{"023E1}{\ubrbrak }{\mathord}{bottom tortoise shell bracket (mathematical use)}%
-\UnicodeMathSymbol{"023E2}{\trapezium }{\mathord}{white trapezium}%
-\UnicodeMathSymbol{"023E3}{\benzenr }{\mathord}{benzene ring with circle}%
-\UnicodeMathSymbol{"023E4}{\strns }{\mathord}{straightness}%
-\UnicodeMathSymbol{"023E5}{\fltns }{\mathord}{flatness}%
-\UnicodeMathSymbol{"023E6}{\accurrent }{\mathord}{ac current}%
-\UnicodeMathSymbol{"023E7}{\elinters }{\mathord}{electrical intersection}%
-\UnicodeMathSymbol{"02422}{\blanksymbol }{\mathord}{blank symbol}%
-\UnicodeMathSymbol{"02423}{\mathvisiblespace }{\mathord}{open box}%
-\UnicodeMathSymbol{"02506}{\bdtriplevdash }{\mathord}{doubly broken vert}%
-\UnicodeMathSymbol{"02580}{\blockuphalf }{\mathord}{upper half block}%
-\UnicodeMathSymbol{"02584}{\blocklowhalf }{\mathord}{lower half block}%
-\UnicodeMathSymbol{"02588}{\blockfull }{\mathord}{full block}%
-\UnicodeMathSymbol{"0258C}{\blocklefthalf }{\mathord}{left half block}%
-\UnicodeMathSymbol{"02590}{\blockrighthalf }{\mathord}{right half block}%
-\UnicodeMathSymbol{"02591}{\blockqtrshaded }{\mathord}{25\% shaded block}%
-\UnicodeMathSymbol{"02592}{\blockhalfshaded }{\mathord}{50\% shaded block}%
-\UnicodeMathSymbol{"02593}{\blockthreeqtrshaded }{\mathord}{75\% shaded block}%
-\UnicodeMathSymbol{"025A0}{\mdlgblksquare }{\mathord}{square, filled}%
-\UnicodeMathSymbol{"025A1}{\mdlgwhtsquare }{\mathord}{square, open}%
-\UnicodeMathSymbol{"025A2}{\squoval }{\mathord}{white square with rounded corners}%
-\UnicodeMathSymbol{"025A3}{\blackinwhitesquare }{\mathord}{white square containing black small square}%
-\UnicodeMathSymbol{"025A4}{\squarehfill }{\mathord}{square, horizontal rule filled}%
-\UnicodeMathSymbol{"025A5}{\squarevfill }{\mathord}{square, vertical rule filled}%
-\UnicodeMathSymbol{"025A6}{\squarehvfill }{\mathord}{square with orthogonal crosshatch fill}%
-\UnicodeMathSymbol{"025A7}{\squarenwsefill }{\mathord}{square, nw-to-se rule filled}%
-\UnicodeMathSymbol{"025A8}{\squareneswfill }{\mathord}{square, ne-to-sw rule filled}%
-\UnicodeMathSymbol{"025A9}{\squarecrossfill }{\mathord}{square with diagonal crosshatch fill}%
-\UnicodeMathSymbol{"025AA}{\smblksquare }{\mathord}{/blacksquare - sq bullet, filled}%
-\UnicodeMathSymbol{"025AB}{\smwhtsquare }{\mathord}{white small square}%
-\UnicodeMathSymbol{"025AC}{\hrectangleblack }{\mathord}{black rectangle}%
-\UnicodeMathSymbol{"025AD}{\hrectangle }{\mathord}{horizontal rectangle, open}%
-\UnicodeMathSymbol{"025AE}{\vrectangleblack }{\mathord}{black vertical rectangle}%
-\UnicodeMathSymbol{"025AF}{\vrectangle }{\mathord}{rectangle, white (vertical)}%
-\UnicodeMathSymbol{"025B0}{\parallelogramblack }{\mathord}{black parallelogram}%
-\UnicodeMathSymbol{"025B1}{\parallelogram }{\mathord}{parallelogram, open}%
-\UnicodeMathSymbol{"025B2}{\bigblacktriangleup }{\mathord}{black up-pointing triangle}%
-\UnicodeMathSymbol{"025B3}{\bigtriangleup }{\mathbin}{big up triangle, open}%
-\UnicodeMathSymbol{"025B4}{\blacktriangle }{\mathord}{up triangle, filled}%
-\UnicodeMathSymbol{"025B5}{\vartriangle }{\mathrel}{/triangle - up triangle, open}%
-\UnicodeMathSymbol{"025B6}{\blacktriangleright }{\mathord}{(large) right triangle, filled}%
-\UnicodeMathSymbol{"025B7}{\triangleright }{\mathbin}{(large) right triangle, open; z notation range restriction}%
-\UnicodeMathSymbol{"025B8}{\smallblacktriangleright }{\mathord}{right triangle, filled}%
-\UnicodeMathSymbol{"025B9}{\smalltriangleright }{\mathord}{right triangle, open}%
-\UnicodeMathSymbol{"025BA}{\blackpointerright }{\mathord}{black right-pointing pointer}%
-\UnicodeMathSymbol{"025BB}{\whitepointerright }{\mathord}{white right-pointing pointer}%
-\UnicodeMathSymbol{"025BC}{\bigblacktriangledown }{\mathord}{big down triangle, filled}%
-\UnicodeMathSymbol{"025BD}{\bigtriangledown }{\mathord}{big down triangle, open}%
-\UnicodeMathSymbol{"025BE}{\blacktriangledown }{\mathord}{down triangle, filled}%
-\UnicodeMathSymbol{"025BF}{\triangledown }{\mathord}{down triangle, open}%
-\UnicodeMathSymbol{"025C0}{\blacktriangleleft }{\mathord}{(large) left triangle, filled}%
-\UnicodeMathSymbol{"025C1}{\triangleleft }{\mathbin}{(large) left triangle, open; z notation domain restriction}%
-\UnicodeMathSymbol{"025C2}{\smallblacktriangleleft }{\mathord}{left triangle, filled}%
-\UnicodeMathSymbol{"025C3}{\smalltriangleleft }{\mathord}{left triangle, open}%
-\UnicodeMathSymbol{"025C4}{\blackpointerleft }{\mathord}{black left-pointing pointer}%
-\UnicodeMathSymbol{"025C5}{\whitepointerleft }{\mathord}{white left-pointing pointer}%
-\UnicodeMathSymbol{"025C6}{\mdlgblkdiamond }{\mathord}{black diamond}%
-\UnicodeMathSymbol{"025C7}{\mdlgwhtdiamond }{\mathord}{white diamond; diamond, open}%
-\UnicodeMathSymbol{"025C8}{\blackinwhitediamond }{\mathord}{white diamond containing black small diamond}%
-\UnicodeMathSymbol{"025C9}{\fisheye }{\mathord}{fisheye}%
-\UnicodeMathSymbol{"025CA}{\mdlgwhtlozenge }{\mathord}{lozenge or total mark}%
-\UnicodeMathSymbol{"025CB}{\mdlgwhtcircle }{\mathbin}{medium large circle}%
-\UnicodeMathSymbol{"025CC}{\dottedcircle }{\mathord}{dotted circle}%
-\UnicodeMathSymbol{"025CD}{\circlevertfill }{\mathord}{circle with vertical fill}%
-\UnicodeMathSymbol{"025CE}{\bullseye }{\mathord}{bullseye}%
-\UnicodeMathSymbol{"025CF}{\mdlgblkcircle }{\mathord}{circle, filled}%
-\UnicodeMathSymbol{"025D0}{\circlelefthalfblack }{\mathord}{circle, filled left half [harvey ball]}%
-\UnicodeMathSymbol{"025D1}{\circlerighthalfblack }{\mathord}{circle, filled right half}%
-\UnicodeMathSymbol{"025D2}{\circlebottomhalfblack }{\mathord}{circle, filled bottom half}%
-\UnicodeMathSymbol{"025D3}{\circletophalfblack }{\mathord}{circle, filled top half}%
-\UnicodeMathSymbol{"025D4}{\circleurquadblack }{\mathord}{circle with upper right quadrant black}%
-\UnicodeMathSymbol{"025D5}{\blackcircleulquadwhite }{\mathord}{circle with all but upper left quadrant black}%
-\UnicodeMathSymbol{"025D6}{\blacklefthalfcircle }{\mathord}{left half black circle}%
-\UnicodeMathSymbol{"025D7}{\blackrighthalfcircle }{\mathord}{right half black circle}%
-\UnicodeMathSymbol{"025D8}{\inversebullet }{\mathord}{inverse bullet }%
-\UnicodeMathSymbol{"025D9}{\inversewhitecircle }{\mathord}{inverse white circle}%
-\UnicodeMathSymbol{"025DA}{\invwhiteupperhalfcircle }{\mathord}{upper half inverse white circle}%
-\UnicodeMathSymbol{"025DB}{\invwhitelowerhalfcircle }{\mathord}{lower half inverse white circle}%
-\UnicodeMathSymbol{"025DC}{\ularc }{\mathord}{upper left quadrant circular arc}%
-\UnicodeMathSymbol{"025DD}{\urarc }{\mathord}{upper right quadrant circular arc}%
-\UnicodeMathSymbol{"025DE}{\lrarc }{\mathord}{lower right quadrant circular arc}%
-\UnicodeMathSymbol{"025DF}{\llarc }{\mathord}{lower left quadrant circular arc}%
-\UnicodeMathSymbol{"025E0}{\topsemicircle }{\mathord}{upper half circle}%
-\UnicodeMathSymbol{"025E1}{\botsemicircle }{\mathord}{lower half circle}%
-\UnicodeMathSymbol{"025E2}{\lrblacktriangle }{\mathord}{lower right triangle, filled}%
-\UnicodeMathSymbol{"025E3}{\llblacktriangle }{\mathord}{lower left triangle, filled}%
-\UnicodeMathSymbol{"025E4}{\ulblacktriangle }{\mathord}{upper left triangle, filled}%
-\UnicodeMathSymbol{"025E5}{\urblacktriangle }{\mathord}{upper right triangle, filled}%
-\UnicodeMathSymbol{"025E6}{\smwhtcircle }{\mathord}{white bullet}%
-\UnicodeMathSymbol{"025E7}{\squareleftblack }{\mathord}{square, filled left half}%
-\UnicodeMathSymbol{"025E8}{\squarerightblack }{\mathord}{square, filled right half}%
-\UnicodeMathSymbol{"025E9}{\squareulblack }{\mathord}{square, filled top left corner}%
-\UnicodeMathSymbol{"025EA}{\squarelrblack }{\mathord}{square, filled bottom right corner}%
-\UnicodeMathSymbol{"025EB}{\boxbar }{\mathbin}{vertical bar in box}%
-\UnicodeMathSymbol{"025EC}{\trianglecdot }{\mathord}{triangle with centered dot}%
-\UnicodeMathSymbol{"025ED}{\triangleleftblack }{\mathord}{up-pointing triangle with left half black}%
-\UnicodeMathSymbol{"025EE}{\trianglerightblack }{\mathord}{up-pointing triangle with right half black}%
-\UnicodeMathSymbol{"025EF}{\lgwhtcircle }{\mathord}{large circle}%
-\UnicodeMathSymbol{"025F0}{\squareulquad }{\mathord}{white square with upper left quadrant}%
-\UnicodeMathSymbol{"025F1}{\squarellquad }{\mathord}{white square with lower left quadrant}%
-\UnicodeMathSymbol{"025F2}{\squarelrquad }{\mathord}{white square with lower right quadrant}%
-\UnicodeMathSymbol{"025F3}{\squareurquad }{\mathord}{white square with upper right quadrant}%
-\UnicodeMathSymbol{"025F4}{\circleulquad }{\mathord}{white circle with upper left quadrant}%
-\UnicodeMathSymbol{"025F5}{\circlellquad }{\mathord}{white circle with lower left quadrant}%
-\UnicodeMathSymbol{"025F6}{\circlelrquad }{\mathord}{white circle with lower right quadrant}%
-\UnicodeMathSymbol{"025F7}{\circleurquad }{\mathord}{white circle with upper right quadrant}%
-\UnicodeMathSymbol{"025F8}{\ultriangle }{\mathord}{upper left triangle}%
-\UnicodeMathSymbol{"025F9}{\urtriangle }{\mathord}{upper right triangle}%
-\UnicodeMathSymbol{"025FA}{\lltriangle }{\mathord}{lower left triangle}%
-\UnicodeMathSymbol{"025FB}{\mdwhtsquare }{\mathord}{white medium square}%
-\UnicodeMathSymbol{"025FC}{\mdblksquare }{\mathord}{black medium square}%
-\UnicodeMathSymbol{"025FD}{\mdsmwhtsquare }{\mathord}{white medium small square}%
-\UnicodeMathSymbol{"025FE}{\mdsmblksquare }{\mathord}{black medium small square}%
-\UnicodeMathSymbol{"025FF}{\lrtriangle }{\mathord}{lower right triangle}%
-\UnicodeMathSymbol{"02605}{\bigstar }{\mathord}{star, filled}%
-\UnicodeMathSymbol{"02606}{\bigwhitestar }{\mathord}{star, open}%
-\UnicodeMathSymbol{"02609}{\astrosun }{\mathord}{sun}%
-\UnicodeMathSymbol{"02621}{\danger }{\mathord}{dangerous bend (caution sign)}%
-\UnicodeMathSymbol{"0263B}{\blacksmiley }{\mathord}{black smiling face}%
-\UnicodeMathSymbol{"0263C}{\sun }{\mathord}{white sun with rays}%
-\UnicodeMathSymbol{"0263D}{\rightmoon }{\mathord}{first quarter moon}%
-\UnicodeMathSymbol{"0263E}{\leftmoon }{\mathord}{last quarter moon}%
-\UnicodeMathSymbol{"02640}{\female }{\mathord}{venus, female}%
-\UnicodeMathSymbol{"02642}{\male }{\mathord}{mars, male}%
-\UnicodeMathSymbol{"02660}{\spadesuit }{\mathord}{spades suit symbol}%
-\UnicodeMathSymbol{"02661}{\heartsuit }{\mathord}{heart suit symbol}%
-\UnicodeMathSymbol{"02662}{\diamondsuit }{\mathord}{diamond suit symbol}%
-\UnicodeMathSymbol{"02663}{\clubsuit }{\mathord}{club suit symbol}%
-\UnicodeMathSymbol{"02664}{\varspadesuit }{\mathord}{spade, white (card suit)}%
-\UnicodeMathSymbol{"02665}{\varheartsuit }{\mathord}{filled heart (card suit)}%
-\UnicodeMathSymbol{"02666}{\vardiamondsuit }{\mathord}{filled diamond (card suit)}%
-\UnicodeMathSymbol{"02667}{\varclubsuit }{\mathord}{club, white (card suit)}%
-\UnicodeMathSymbol{"02669}{\quarternote }{\mathord}{music note (sung text sign)}%
-\UnicodeMathSymbol{"0266A}{\eighthnote }{\mathord}{eighth note}%
-\UnicodeMathSymbol{"0266B}{\twonotes }{\mathord}{beamed eighth notes}%
-\UnicodeMathSymbol{"0266D}{\flat }{\mathord}{musical flat}%
-\UnicodeMathSymbol{"0266E}{\natural }{\mathord}{music natural}%
-\UnicodeMathSymbol{"0266F}{\sharp }{\mathord}{musical sharp}%
-\UnicodeMathSymbol{"0267E}{\acidfree }{\mathord}{permanent paper sign}%
-\UnicodeMathSymbol{"02680}{\dicei }{\mathord}{die face-1}%
-\UnicodeMathSymbol{"02681}{\diceii }{\mathord}{die face-2}%
-\UnicodeMathSymbol{"02682}{\diceiii }{\mathord}{die face-3}%
-\UnicodeMathSymbol{"02683}{\diceiv }{\mathord}{die face-4}%
-\UnicodeMathSymbol{"02684}{\dicev }{\mathord}{die face-5}%
-\UnicodeMathSymbol{"02685}{\dicevi }{\mathord}{die face-6}%
-\UnicodeMathSymbol{"02686}{\circledrightdot }{\mathord}{white circle with dot right}%
-\UnicodeMathSymbol{"02687}{\circledtwodots }{\mathord}{white circle with two dots}%
-\UnicodeMathSymbol{"02688}{\blackcircledrightdot }{\mathord}{black circle with white dot right}%
-\UnicodeMathSymbol{"02689}{\blackcircledtwodots }{\mathord}{black circle with two white dots}%
-\UnicodeMathSymbol{"026A5}{\Hermaphrodite }{\mathord}{male and female sign}%
-\UnicodeMathSymbol{"026AA}{\mdwhtcircle }{\mathord}{medium white circle}%
-\UnicodeMathSymbol{"026AB}{\mdblkcircle }{\mathord}{medium black circle}%
-\UnicodeMathSymbol{"026AC}{\mdsmwhtcircle }{\mathord}{medium small white circle}%
-\UnicodeMathSymbol{"026B2}{\neuter }{\mathord}{neuter}%
-\UnicodeMathSymbol{"02713}{\checkmark }{\mathord}{tick, check mark}%
-\UnicodeMathSymbol{"02720}{\maltese }{\mathord}{maltese cross}%
-\UnicodeMathSymbol{"0272A}{\circledstar }{\mathord}{circled white star}%
-\UnicodeMathSymbol{"02736}{\varstar }{\mathord}{six pointed black star}%
-\UnicodeMathSymbol{"0273D}{\dingasterisk }{\mathord}{heavy teardrop-spoked asterisk}%
-\UnicodeMathSymbol{"02772}{\lbrbrak }{\mathopen}{light left tortoise shell bracket ornament}%
-\UnicodeMathSymbol{"02773}{\rbrbrak }{\mathclose}{light right tortoise shell bracket ornament}%
-\UnicodeMathSymbol{"0279B}{\draftingarrow }{\mathord}{right arrow with bold head (drafting)}%
-\UnicodeMathSymbol{"027C0}{\threedangle }{\mathord}{three dimensional angle}%
-\UnicodeMathSymbol{"027C1}{\whiteinwhitetriangle }{\mathord}{white triangle containing small white triangle}%
-\UnicodeMathSymbol{"027C2}{\perp }{\mathrel}{perpendicular}%
-\UnicodeMathSymbol{"027C3}{\subsetcirc }{\mathord}{open subset}%
-\UnicodeMathSymbol{"027C4}{\supsetcirc }{\mathord}{open superset}%
-\UnicodeMathSymbol{"027C5}{\lbag }{\mathopen}{left s-shaped bag delimiter}%
-\UnicodeMathSymbol{"027C6}{\rbag }{\mathclose}{right s-shaped bag delimiter}%
-\UnicodeMathSymbol{"027C7}{\veedot }{\mathbin}{or with dot inside}%
-\UnicodeMathSymbol{"027C8}{\bsolhsub }{\mathrel}{reverse solidus preceding subset}%
-\UnicodeMathSymbol{"027C9}{\suphsol }{\mathrel}{superset preceding solidus}%
-\UnicodeMathSymbol{"027CC}{\longdivision }{\mathopen}{long division}%
-\UnicodeMathSymbol{"027D0}{\diamondcdot }{\mathord}{white diamond with centred dot}%
-\UnicodeMathSymbol{"027D1}{\wedgedot }{\mathbin}{and with dot}%
-\UnicodeMathSymbol{"027D2}{\upin }{\mathrel}{element of opening upwards}%
-\UnicodeMathSymbol{"027D3}{\pullback }{\mathrel}{lower right corner with dot}%
-\UnicodeMathSymbol{"027D4}{\pushout }{\mathrel}{upper left corner with dot}%
-\UnicodeMathSymbol{"027D5}{\leftouterjoin }{\mathop}{left outer join}%
-\UnicodeMathSymbol{"027D6}{\rightouterjoin }{\mathop}{right outer join}%
-\UnicodeMathSymbol{"027D7}{\fullouterjoin }{\mathop}{full outer join}%
-\UnicodeMathSymbol{"027D8}{\bigbot }{\mathop}{large up tack}%
-\UnicodeMathSymbol{"027D9}{\bigtop }{\mathop}{large down tack}%
-\UnicodeMathSymbol{"027DA}{\DashVDash }{\mathrel}{left and right double turnstile}%
-\UnicodeMathSymbol{"027DB}{\dashVdash }{\mathrel}{left and right tack}%
-\UnicodeMathSymbol{"027DC}{\multimapinv }{\mathrel}{left multimap}%
-\UnicodeMathSymbol{"027DD}{\vlongdash }{\mathrel}{long left tack}%
-\UnicodeMathSymbol{"027DE}{\longdashv }{\mathrel}{long right tack}%
-\UnicodeMathSymbol{"027DF}{\cirbot }{\mathrel}{up tack with circle above}%
-\UnicodeMathSymbol{"027E0}{\lozengeminus }{\mathbin}{lozenge divided by horizontal rule}%
-\UnicodeMathSymbol{"027E1}{\concavediamond }{\mathbin}{white concave-sided diamond}%
-\UnicodeMathSymbol{"027E2}{\concavediamondtickleft }{\mathbin}{white concave-sided diamond with leftwards tick}%
-\UnicodeMathSymbol{"027E3}{\concavediamondtickright }{\mathbin}{white concave-sided diamond with rightwards tick}%
-\UnicodeMathSymbol{"027E4}{\whitesquaretickleft }{\mathbin}{white square with leftwards tick}%
-\UnicodeMathSymbol{"027E5}{\whitesquaretickright }{\mathbin}{white square with rightwards tick}%
-\UnicodeMathSymbol{"027E6}{\lBrack }{\mathopen}{mathematical left white square bracket}%
-\UnicodeMathSymbol{"027E7}{\rBrack }{\mathclose}{mathematical right white square bracket}%
-\UnicodeMathSymbol{"027E8}{\langle }{\mathopen}{mathematical left angle bracket}%
-\UnicodeMathSymbol{"027E9}{\rangle }{\mathclose}{mathematical right angle bracket}%
-\UnicodeMathSymbol{"027EA}{\lAngle }{\mathopen}{mathematical left double angle bracket}%
-\UnicodeMathSymbol{"027EB}{\rAngle }{\mathclose}{mathematical right double angle bracket}%
-\UnicodeMathSymbol{"027EC}{\Lbrbrak }{\mathopen}{mathematical left white tortoise shell bracket}%
-\UnicodeMathSymbol{"027ED}{\Rbrbrak }{\mathclose}{mathematical right white tortoise shell bracket}%
-\UnicodeMathSymbol{"027EE}{\lgroup }{\mathopen}{mathematical left flattened parenthesis}%
-\UnicodeMathSymbol{"027EF}{\rgroup }{\mathclose}{mathematical right flattened parenthesis}%
-\UnicodeMathSymbol{"027F0}{\UUparrow }{\mathrel}{upwards quadruple arrow}%
-\UnicodeMathSymbol{"027F1}{\DDownarrow }{\mathrel}{downwards quadruple arrow}%
-\UnicodeMathSymbol{"027F2}{\acwgapcirclearrow }{\mathrel}{anticlockwise gapped circle arrow}%
-\UnicodeMathSymbol{"027F3}{\cwgapcirclearrow }{\mathrel}{clockwise gapped circle arrow}%
-\UnicodeMathSymbol{"027F4}{\rightarrowonoplus }{\mathrel}{right arrow with circled plus}%
-\UnicodeMathSymbol{"027F5}{\longleftarrow }{\mathrel}{long leftwards arrow}%
-\UnicodeMathSymbol{"027F6}{\longrightarrow }{\mathrel}{long rightwards arrow}%
-\UnicodeMathSymbol{"027F7}{\longleftrightarrow }{\mathrel}{long left right arrow}%
-\UnicodeMathSymbol{"027F8}{\Longleftarrow }{\mathrel}{long leftwards double arrow}%
-\UnicodeMathSymbol{"027F9}{\Longrightarrow }{\mathrel}{long rightwards double arrow}%
-\UnicodeMathSymbol{"027FA}{\Longleftrightarrow }{\mathrel}{long left right double arrow}%
-\UnicodeMathSymbol{"027FB}{\longmapsfrom }{\mathrel}{long leftwards arrow from bar}%
-\UnicodeMathSymbol{"027FC}{\longmapsto }{\mathrel}{long rightwards arrow from bar}%
-\UnicodeMathSymbol{"027FD}{\Longmapsfrom }{\mathrel}{long leftwards double arrow from bar}%
-\UnicodeMathSymbol{"027FE}{\Longmapsto }{\mathrel}{long rightwards double arrow from bar}%
-\UnicodeMathSymbol{"027FF}{\longrightsquigarrow }{\mathrel}{long rightwards squiggle arrow}%
-\UnicodeMathSymbol{"02900}{\nvtwoheadrightarrow }{\mathrel}{rightwards two-headed arrow with vertical stroke}%
-\UnicodeMathSymbol{"02901}{\nVtwoheadrightarrow }{\mathrel}{rightwards two-headed arrow with double vertical stroke}%
-\UnicodeMathSymbol{"02902}{\nvLeftarrow }{\mathrel}{leftwards double arrow with vertical stroke}%
-\UnicodeMathSymbol{"02903}{\nvRightarrow }{\mathrel}{rightwards double arrow with vertical stroke}%
-\UnicodeMathSymbol{"02904}{\nvLeftrightarrow }{\mathrel}{left right double arrow with vertical stroke}%
-\UnicodeMathSymbol{"02905}{\twoheadmapsto }{\mathrel}{rightwards two-headed arrow from bar}%
-\UnicodeMathSymbol{"02906}{\Mapsfrom }{\mathrel}{leftwards double arrow from bar}%
-\UnicodeMathSymbol{"02907}{\Mapsto }{\mathrel}{rightwards double arrow from bar}%
-\UnicodeMathSymbol{"02908}{\downarrowbarred }{\mathrel}{downwards arrow with horizontal stroke}%
-\UnicodeMathSymbol{"02909}{\uparrowbarred }{\mathrel}{upwards arrow with horizontal stroke}%
-\UnicodeMathSymbol{"0290A}{\Uuparrow }{\mathrel}{upwards triple arrow}%
-\UnicodeMathSymbol{"0290B}{\Ddownarrow }{\mathrel}{downwards triple arrow}%
-\UnicodeMathSymbol{"0290C}{\leftbkarrow }{\mathrel}{leftwards double dash arrow}%
-\UnicodeMathSymbol{"0290D}{\rightbkarrow }{\mathrel}{rightwards double dash arrow}%
-\UnicodeMathSymbol{"0290E}{\leftdbkarrow }{\mathrel}{leftwards triple dash arrow}%
-\UnicodeMathSymbol{"0290F}{\dbkarrow }{\mathrel}{rightwards triple dash arrow}%
-\UnicodeMathSymbol{"02910}{\drbkarrow }{\mathrel}{rightwards two-headed triple dash arrow}%
-\UnicodeMathSymbol{"02911}{\rightdotarrow }{\mathrel}{rightwards arrow with dotted stem}%
-\UnicodeMathSymbol{"02912}{\baruparrow }{\mathrel}{upwards arrow to bar}%
-\UnicodeMathSymbol{"02913}{\downarrowbar }{\mathrel}{downwards arrow to bar}%
-\UnicodeMathSymbol{"02914}{\nvrightarrowtail }{\mathrel}{rightwards arrow with tail with vertical stroke}%
-\UnicodeMathSymbol{"02915}{\nVrightarrowtail }{\mathrel}{rightwards arrow with tail with double vertical stroke}%
-\UnicodeMathSymbol{"02916}{\twoheadrightarrowtail }{\mathrel}{rightwards two-headed arrow with tail}%
-\UnicodeMathSymbol{"02917}{\nvtwoheadrightarrowtail }{\mathrel}{rightwards two-headed arrow with tail with vertical stroke}%
-\UnicodeMathSymbol{"02918}{\nVtwoheadrightarrowtail }{\mathrel}{rightwards two-headed arrow with tail with double vertical stroke}%
-\UnicodeMathSymbol{"02919}{\lefttail }{\mathrel}{leftwards arrow-tail}%
-\UnicodeMathSymbol{"0291A}{\righttail }{\mathrel}{rightwards arrow-tail}%
-\UnicodeMathSymbol{"0291B}{\leftdbltail }{\mathrel}{leftwards double arrow-tail}%
-\UnicodeMathSymbol{"0291C}{\rightdbltail }{\mathrel}{rightwards double arrow-tail}%
-\UnicodeMathSymbol{"0291D}{\diamondleftarrow }{\mathrel}{leftwards arrow to black diamond}%
-\UnicodeMathSymbol{"0291E}{\rightarrowdiamond }{\mathrel}{rightwards arrow to black diamond}%
-\UnicodeMathSymbol{"0291F}{\diamondleftarrowbar }{\mathrel}{leftwards arrow from bar to black diamond}%
-\UnicodeMathSymbol{"02920}{\barrightarrowdiamond }{\mathrel}{rightwards arrow from bar to black diamond}%
-\UnicodeMathSymbol{"02921}{\nwsearrow }{\mathrel}{north west and south east arrow}%
-\UnicodeMathSymbol{"02922}{\neswarrow }{\mathrel}{north east and south west arrow}%
-\UnicodeMathSymbol{"02923}{\hknwarrow }{\mathrel}{north west arrow with hook}%
-\UnicodeMathSymbol{"02924}{\hknearrow }{\mathrel}{north east arrow with hook}%
-\UnicodeMathSymbol{"02925}{\hksearrow }{\mathrel}{south east arrow with hook}%
-\UnicodeMathSymbol{"02926}{\hkswarrow }{\mathrel}{south west arrow with hook}%
-\UnicodeMathSymbol{"02927}{\tona }{\mathrel}{north west arrow and north east arrow}%
-\UnicodeMathSymbol{"02928}{\toea }{\mathrel}{north east arrow and south east arrow}%
-\UnicodeMathSymbol{"02929}{\tosa }{\mathrel}{south east arrow and south west arrow}%
-\UnicodeMathSymbol{"0292A}{\towa }{\mathrel}{south west arrow and north west arrow}%
-\UnicodeMathSymbol{"0292B}{\rdiagovfdiag }{\mathord}{rising diagonal crossing falling diagonal}%
-\UnicodeMathSymbol{"0292C}{\fdiagovrdiag }{\mathord}{falling diagonal crossing rising diagonal}%
-\UnicodeMathSymbol{"0292D}{\seovnearrow }{\mathord}{south east arrow crossing north east arrow}%
-\UnicodeMathSymbol{"0292E}{\neovsearrow }{\mathord}{north east arrow crossing south east arrow}%
-\UnicodeMathSymbol{"0292F}{\fdiagovnearrow }{\mathord}{falling diagonal crossing north east arrow}%
-\UnicodeMathSymbol{"02930}{\rdiagovsearrow }{\mathord}{rising diagonal crossing south east arrow}%
-\UnicodeMathSymbol{"02931}{\neovnwarrow }{\mathord}{north east arrow crossing north west arrow}%
-\UnicodeMathSymbol{"02932}{\nwovnearrow }{\mathord}{north west arrow crossing north east arrow}%
-\UnicodeMathSymbol{"02933}{\rightcurvedarrow }{\mathrel}{wave arrow pointing directly right}%
-\UnicodeMathSymbol{"02934}{\uprightcurvearrow }{\mathord}{arrow pointing rightwards then curving upwards}%
-\UnicodeMathSymbol{"02935}{\downrightcurvedarrow }{\mathord}{arrow pointing rightwards then curving downwards}%
-\UnicodeMathSymbol{"02936}{\leftdowncurvedarrow }{\mathrel}{arrow pointing downwards then curving leftwards}%
-\UnicodeMathSymbol{"02937}{\rightdowncurvedarrow }{\mathrel}{arrow pointing downwards then curving rightwards}%
-\UnicodeMathSymbol{"02938}{\cwrightarcarrow }{\mathrel}{right-side arc clockwise arrow}%
-\UnicodeMathSymbol{"02939}{\acwleftarcarrow }{\mathrel}{left-side arc anticlockwise arrow}%
-\UnicodeMathSymbol{"0293A}{\acwoverarcarrow }{\mathrel}{top arc anticlockwise arrow}%
-\UnicodeMathSymbol{"0293B}{\acwunderarcarrow }{\mathrel}{bottom arc anticlockwise arrow}%
-\UnicodeMathSymbol{"0293C}{\curvearrowrightminus }{\mathrel}{top arc clockwise arrow with minus}%
-\UnicodeMathSymbol{"0293D}{\curvearrowleftplus }{\mathrel}{top arc anticlockwise arrow with plus}%
-\UnicodeMathSymbol{"0293E}{\cwundercurvearrow }{\mathrel}{lower right semicircular clockwise arrow}%
-\UnicodeMathSymbol{"0293F}{\ccwundercurvearrow }{\mathrel}{lower left semicircular anticlockwise arrow}%
-\UnicodeMathSymbol{"02940}{\acwcirclearrow }{\mathrel}{anticlockwise closed circle arrow}%
-\UnicodeMathSymbol{"02941}{\cwcirclearrow }{\mathrel}{clockwise closed circle arrow}%
-\UnicodeMathSymbol{"02942}{\rightarrowshortleftarrow }{\mathrel}{rightwards arrow above short leftwards arrow}%
-\UnicodeMathSymbol{"02943}{\leftarrowshortrightarrow }{\mathrel}{leftwards arrow above short rightwards arrow}%
-\UnicodeMathSymbol{"02944}{\shortrightarrowleftarrow }{\mathrel}{short rightwards arrow above leftwards arrow}%
-\UnicodeMathSymbol{"02945}{\rightarrowplus }{\mathrel}{rightwards arrow with plus below}%
-\UnicodeMathSymbol{"02946}{\leftarrowplus }{\mathrel}{leftwards arrow with plus below}%
-\UnicodeMathSymbol{"02947}{\rightarrowx }{\mathrel}{rightwards arrow through x}%
-\UnicodeMathSymbol{"02948}{\leftrightarrowcircle }{\mathrel}{left right arrow through small circle}%
-\UnicodeMathSymbol{"02949}{\twoheaduparrowcircle }{\mathrel}{upwards two-headed arrow from small circle}%
-\UnicodeMathSymbol{"0294A}{\leftrightharpoonupdown }{\mathrel}{left barb up right barb down harpoon}%
-\UnicodeMathSymbol{"0294B}{\leftrightharpoondownup }{\mathrel}{left barb down right barb up harpoon}%
-\UnicodeMathSymbol{"0294C}{\updownharpoonrightleft }{\mathrel}{up barb right down barb left harpoon}%
-\UnicodeMathSymbol{"0294D}{\updownharpoonleftright }{\mathrel}{up barb left down barb right harpoon}%
-\UnicodeMathSymbol{"0294E}{\leftrightharpoonupup }{\mathrel}{left barb up right barb up harpoon}%
-\UnicodeMathSymbol{"0294F}{\updownharpoonrightright }{\mathrel}{up barb right down barb right harpoon}%
-\UnicodeMathSymbol{"02950}{\leftrightharpoondowndown }{\mathrel}{left barb down right barb down harpoon}%
-\UnicodeMathSymbol{"02951}{\updownharpoonleftleft }{\mathrel}{up barb left down barb left harpoon}%
-\UnicodeMathSymbol{"02952}{\barleftharpoonup }{\mathrel}{leftwards harpoon with barb up to bar}%
-\UnicodeMathSymbol{"02953}{\rightharpoonupbar }{\mathrel}{rightwards harpoon with barb up to bar}%
-\UnicodeMathSymbol{"02954}{\barupharpoonright }{\mathrel}{upwards harpoon with barb right to bar}%
-\UnicodeMathSymbol{"02955}{\downharpoonrightbar }{\mathrel}{downwards harpoon with barb right to bar}%
-\UnicodeMathSymbol{"02956}{\barleftharpoondown }{\mathrel}{leftwards harpoon with barb down to bar}%
-\UnicodeMathSymbol{"02957}{\rightharpoondownbar }{\mathrel}{rightwards harpoon with barb down to bar}%
-\UnicodeMathSymbol{"02958}{\barupharpoonleft }{\mathrel}{upwards harpoon with barb left to bar}%
-\UnicodeMathSymbol{"02959}{\downharpoonleftbar }{\mathrel}{downwards harpoon with barb left to bar}%
-\UnicodeMathSymbol{"0295A}{\leftharpoonupbar }{\mathrel}{leftwards harpoon with barb up from bar}%
-\UnicodeMathSymbol{"0295B}{\barrightharpoonup }{\mathrel}{rightwards harpoon with barb up from bar}%
-\UnicodeMathSymbol{"0295C}{\upharpoonrightbar }{\mathrel}{upwards harpoon with barb right from bar}%
-\UnicodeMathSymbol{"0295D}{\bardownharpoonright }{\mathrel}{downwards harpoon with barb right from bar}%
-\UnicodeMathSymbol{"0295E}{\leftharpoondownbar }{\mathrel}{leftwards harpoon with barb down from bar}%
-\UnicodeMathSymbol{"0295F}{\barrightharpoondown }{\mathrel}{rightwards harpoon with barb down from bar}%
-\UnicodeMathSymbol{"02960}{\upharpoonleftbar }{\mathrel}{upwards harpoon with barb left from bar}%
-\UnicodeMathSymbol{"02961}{\bardownharpoonleft }{\mathrel}{downwards harpoon with barb left from bar}%
-\UnicodeMathSymbol{"02962}{\leftharpoonsupdown }{\mathrel}{leftwards harpoon with barb up above leftwards harpoon with barb down}%
-\UnicodeMathSymbol{"02963}{\upharpoonsleftright }{\mathrel}{upwards harpoon with barb left beside upwards harpoon with barb right}%
-\UnicodeMathSymbol{"02964}{\rightharpoonsupdown }{\mathrel}{rightwards harpoon with barb up above rightwards harpoon with barb down}%
-\UnicodeMathSymbol{"02965}{\downharpoonsleftright }{\mathrel}{downwards harpoon with barb left beside downwards harpoon with barb right}%
-\UnicodeMathSymbol{"02966}{\leftrightharpoonsup }{\mathrel}{leftwards harpoon with barb up above rightwards harpoon with barb up}%
-\UnicodeMathSymbol{"02967}{\leftrightharpoonsdown }{\mathrel}{leftwards harpoon with barb down above rightwards harpoon with barb down}%
-\UnicodeMathSymbol{"02968}{\rightleftharpoonsup }{\mathrel}{rightwards harpoon with barb up above leftwards harpoon with barb up}%
-\UnicodeMathSymbol{"02969}{\rightleftharpoonsdown }{\mathrel}{rightwards harpoon with barb down above leftwards harpoon with barb down}%
-\UnicodeMathSymbol{"0296A}{\leftharpoonupdash }{\mathrel}{leftwards harpoon with barb up above long dash}%
-\UnicodeMathSymbol{"0296B}{\dashleftharpoondown }{\mathrel}{leftwards harpoon with barb down below long dash}%
-\UnicodeMathSymbol{"0296C}{\rightharpoonupdash }{\mathrel}{rightwards harpoon with barb up above long dash}%
-\UnicodeMathSymbol{"0296D}{\dashrightharpoondown }{\mathrel}{rightwards harpoon with barb down below long dash}%
-\UnicodeMathSymbol{"0296E}{\updownharpoonsleftright }{\mathrel}{upwards harpoon with barb left beside downwards harpoon with barb right}%
-\UnicodeMathSymbol{"0296F}{\downupharpoonsleftright }{\mathrel}{downwards harpoon with barb left beside upwards harpoon with barb right}%
-\UnicodeMathSymbol{"02970}{\rightimply }{\mathrel}{right double arrow with rounded head}%
-\UnicodeMathSymbol{"02971}{\equalrightarrow }{\mathrel}{equals sign above rightwards arrow}%
-\UnicodeMathSymbol{"02972}{\similarrightarrow }{\mathrel}{tilde operator above rightwards arrow}%
-\UnicodeMathSymbol{"02973}{\leftarrowsimilar }{\mathrel}{leftwards arrow above tilde operator}%
-\UnicodeMathSymbol{"02974}{\rightarrowsimilar }{\mathrel}{rightwards arrow above tilde operator}%
-\UnicodeMathSymbol{"02975}{\rightarrowapprox }{\mathrel}{rightwards arrow above almost equal to}%
-\UnicodeMathSymbol{"02976}{\ltlarr }{\mathrel}{less-than above leftwards arrow}%
-\UnicodeMathSymbol{"02977}{\leftarrowless }{\mathrel}{leftwards arrow through less-than}%
-\UnicodeMathSymbol{"02978}{\gtrarr }{\mathrel}{greater-than above rightwards arrow}%
-\UnicodeMathSymbol{"02979}{\subrarr }{\mathrel}{subset above rightwards arrow}%
-\UnicodeMathSymbol{"0297A}{\leftarrowsubset }{\mathrel}{leftwards arrow through subset}%
-\UnicodeMathSymbol{"0297B}{\suplarr }{\mathrel}{superset above leftwards arrow}%
-\UnicodeMathSymbol{"0297C}{\leftfishtail }{\mathrel}{left fish tail}%
-\UnicodeMathSymbol{"0297D}{\rightfishtail }{\mathrel}{right fish tail}%
-\UnicodeMathSymbol{"0297E}{\upfishtail }{\mathrel}{up fish tail}%
-\UnicodeMathSymbol{"0297F}{\downfishtail }{\mathrel}{down fish tail}%
-\UnicodeMathSymbol{"02980}{\Vvert }{\mathfence}{triple vertical bar delimiter}%
-\UnicodeMathSymbol{"02981}{\mdsmblkcircle }{\mathord}{z notation spot}%
-\UnicodeMathSymbol{"02982}{\typecolon }{\mathrel}{z notation type colon}%
-\UnicodeMathSymbol{"02983}{\lBrace }{\mathopen}{left white curly bracket}%
-\UnicodeMathSymbol{"02984}{\rBrace }{\mathclose}{right white curly bracket}%
-\UnicodeMathSymbol{"02985}{\lParen }{\mathopen}{left white parenthesis}%
-\UnicodeMathSymbol{"02986}{\rParen }{\mathclose}{right white parenthesis}%
-\UnicodeMathSymbol{"02987}{\llparenthesis }{\mathopen}{z notation left image bracket}%
-\UnicodeMathSymbol{"02988}{\rrparenthesis }{\mathclose}{z notation right image bracket}%
-\UnicodeMathSymbol{"02989}{\llangle }{\mathopen}{z notation left binding bracket}%
-\UnicodeMathSymbol{"0298A}{\rrangle }{\mathclose}{z notation right binding bracket}%
-\UnicodeMathSymbol{"0298B}{\lbrackubar }{\mathopen}{left square bracket with underbar}%
-\UnicodeMathSymbol{"0298C}{\rbrackubar }{\mathclose}{right square bracket with underbar}%
-\UnicodeMathSymbol{"0298D}{\lbrackultick }{\mathopen}{left square bracket with tick in top corner}%
-\UnicodeMathSymbol{"0298E}{\rbracklrtick }{\mathclose}{right square bracket with tick in bottom corner}%
-\UnicodeMathSymbol{"0298F}{\lbracklltick }{\mathopen}{left square bracket with tick in bottom corner}%
-\UnicodeMathSymbol{"02990}{\rbrackurtick }{\mathclose}{right square bracket with tick in top corner}%
-\UnicodeMathSymbol{"02991}{\langledot }{\mathopen}{left angle bracket with dot}%
-\UnicodeMathSymbol{"02992}{\rangledot }{\mathclose}{right angle bracket with dot}%
-\UnicodeMathSymbol{"02993}{\lparenless }{\mathopen}{left arc less-than bracket}%
-\UnicodeMathSymbol{"02994}{\rparengtr }{\mathclose}{right arc greater-than bracket}%
-\UnicodeMathSymbol{"02995}{\Lparengtr }{\mathopen}{double left arc greater-than bracket}%
-\UnicodeMathSymbol{"02996}{\Rparenless }{\mathclose}{double right arc less-than bracket}%
-\UnicodeMathSymbol{"02997}{\lblkbrbrak }{\mathopen}{left black tortoise shell bracket}%
-\UnicodeMathSymbol{"02998}{\rblkbrbrak }{\mathclose}{right black tortoise shell bracket}%
-\UnicodeMathSymbol{"02999}{\fourvdots }{\mathord}{dotted fence}%
-\UnicodeMathSymbol{"0299A}{\vzigzag }{\mathord}{vertical zigzag line}%
-\UnicodeMathSymbol{"0299B}{\measuredangleleft }{\mathord}{measured angle opening left}%
-\UnicodeMathSymbol{"0299C}{\rightanglesqr }{\mathord}{right angle variant with square}%
-\UnicodeMathSymbol{"0299D}{\rightanglemdot }{\mathord}{measured right angle with dot}%
-\UnicodeMathSymbol{"0299E}{\angles }{\mathord}{angle with s inside}%
-\UnicodeMathSymbol{"0299F}{\angdnr }{\mathord}{acute angle}%
-\UnicodeMathSymbol{"029A0}{\gtlpar }{\mathord}{spherical angle opening left}%
-\UnicodeMathSymbol{"029A1}{\sphericalangleup }{\mathord}{spherical angle opening up}%
-\UnicodeMathSymbol{"029A2}{\turnangle }{\mathord}{turned angle}%
-\UnicodeMathSymbol{"029A3}{\revangle }{\mathord}{reversed angle}%
-\UnicodeMathSymbol{"029A4}{\angleubar }{\mathord}{angle with underbar}%
-\UnicodeMathSymbol{"029A5}{\revangleubar }{\mathord}{reversed angle with underbar}%
-\UnicodeMathSymbol{"029A6}{\wideangledown }{\mathord}{oblique angle opening up}%
-\UnicodeMathSymbol{"029A7}{\wideangleup }{\mathord}{oblique angle opening down}%
-\UnicodeMathSymbol{"029A8}{\measanglerutone }{\mathord}{measured angle with open arm ending in arrow pointing up and right}%
-\UnicodeMathSymbol{"029A9}{\measanglelutonw }{\mathord}{measured angle with open arm ending in arrow pointing up and left}%
-\UnicodeMathSymbol{"029AA}{\measanglerdtose }{\mathord}{measured angle with open arm ending in arrow pointing down and right}%
-\UnicodeMathSymbol{"029AB}{\measangleldtosw }{\mathord}{measured angle with open arm ending in arrow pointing down and left}%
-\UnicodeMathSymbol{"029AC}{\measangleurtone }{\mathord}{measured angle with open arm ending in arrow pointing right and up}%
-\UnicodeMathSymbol{"029AD}{\measangleultonw }{\mathord}{measured angle with open arm ending in arrow pointing left and up}%
-\UnicodeMathSymbol{"029AE}{\measangledrtose }{\mathord}{measured angle with open arm ending in arrow pointing right and down}%
-\UnicodeMathSymbol{"029AF}{\measangledltosw }{\mathord}{measured angle with open arm ending in arrow pointing left and down}%
-\UnicodeMathSymbol{"029B0}{\revemptyset }{\mathord}{reversed empty set}%
-\UnicodeMathSymbol{"029B1}{\emptysetobar }{\mathord}{empty set with overbar}%
-\UnicodeMathSymbol{"029B2}{\emptysetocirc }{\mathord}{empty set with small circle above}%
-\UnicodeMathSymbol{"029B3}{\emptysetoarr }{\mathord}{empty set with right arrow above}%
-\UnicodeMathSymbol{"029B4}{\emptysetoarrl }{\mathord}{empty set with left arrow above}%
-\UnicodeMathSymbol{"029B5}{\circlehbar }{\mathbin}{circle with horizontal bar}%
-\UnicodeMathSymbol{"029B6}{\circledvert }{\mathbin}{circled vertical bar}%
-\UnicodeMathSymbol{"029B7}{\circledparallel }{\mathbin}{circled parallel}%
-\UnicodeMathSymbol{"029B8}{\obslash }{\mathbin}{circled reverse solidus}%
-\UnicodeMathSymbol{"029B9}{\operp }{\mathbin}{circled perpendicular}%
-\UnicodeMathSymbol{"029BA}{\obot }{\mathord}{circle divided by horizontal bar and top half divided by vertical bar}%
-\UnicodeMathSymbol{"029BB}{\olcross }{\mathord}{circle with superimposed x}%
-\UnicodeMathSymbol{"029BC}{\odotslashdot }{\mathord}{circled anticlockwise-rotated division sign}%
-\UnicodeMathSymbol{"029BD}{\uparrowoncircle }{\mathord}{up arrow through circle}%
-\UnicodeMathSymbol{"029BE}{\circledwhitebullet }{\mathord}{circled white bullet}%
-\UnicodeMathSymbol{"029BF}{\circledbullet }{\mathord}{circled bullet}%
-\UnicodeMathSymbol{"029C0}{\olessthan }{\mathbin}{circled less-than}%
-\UnicodeMathSymbol{"029C1}{\ogreaterthan }{\mathbin}{circled greater-than}%
-\UnicodeMathSymbol{"029C2}{\cirscir }{\mathord}{circle with small circle to the right}%
-\UnicodeMathSymbol{"029C3}{\cirE }{\mathord}{circle with two horizontal strokes to the right}%
-\UnicodeMathSymbol{"029C4}{\boxdiag }{\mathbin}{squared rising diagonal slash}%
-\UnicodeMathSymbol{"029C5}{\boxbslash }{\mathbin}{squared falling diagonal slash}%
-\UnicodeMathSymbol{"029C6}{\boxast }{\mathbin}{squared asterisk}%
-\UnicodeMathSymbol{"029C7}{\boxcircle }{\mathbin}{squared small circle}%
-\UnicodeMathSymbol{"029C8}{\boxbox }{\mathbin}{squared square}%
-\UnicodeMathSymbol{"029C9}{\boxonbox }{\mathord}{two joined squares}%
-\UnicodeMathSymbol{"029CA}{\triangleodot }{\mathord}{triangle with dot above}%
-\UnicodeMathSymbol{"029CB}{\triangleubar }{\mathord}{triangle with underbar}%
-\UnicodeMathSymbol{"029CC}{\triangles }{\mathord}{s in triangle}%
-\UnicodeMathSymbol{"029CD}{\triangleserifs }{\mathbin}{triangle with serifs at bottom}%
-\UnicodeMathSymbol{"029CE}{\rtriltri }{\mathrel}{right triangle above left triangle}%
-\UnicodeMathSymbol{"029CF}{\ltrivb }{\mathrel}{left triangle beside vertical bar}%
-\UnicodeMathSymbol{"029D0}{\vbrtri }{\mathrel}{vertical bar beside right triangle}%
-\UnicodeMathSymbol{"029D1}{\lfbowtie }{\mathrel}{left black bowtie}%
-\UnicodeMathSymbol{"029D2}{\rfbowtie }{\mathrel}{right black bowtie}%
-\UnicodeMathSymbol{"029D3}{\fbowtie }{\mathrel}{black bowtie}%
-\UnicodeMathSymbol{"029D4}{\lftimes }{\mathrel}{left black times}%
-\UnicodeMathSymbol{"029D5}{\rftimes }{\mathrel}{right black times}%
-\UnicodeMathSymbol{"029D6}{\hourglass }{\mathbin}{white hourglass}%
-\UnicodeMathSymbol{"029D7}{\blackhourglass }{\mathbin}{black hourglass}%
-\UnicodeMathSymbol{"029D8}{\lvzigzag }{\mathopen}{left wiggly fence}%
-\UnicodeMathSymbol{"029D9}{\rvzigzag }{\mathclose}{right wiggly fence}%
-\UnicodeMathSymbol{"029DA}{\Lvzigzag }{\mathopen}{left double wiggly fence}%
-\UnicodeMathSymbol{"029DB}{\Rvzigzag }{\mathclose}{right double wiggly fence}%
-\UnicodeMathSymbol{"029DC}{\iinfin }{\mathord}{incomplete infinity}%
-\UnicodeMathSymbol{"029DD}{\tieinfty }{\mathord}{tie over infinity}%
-\UnicodeMathSymbol{"029DE}{\nvinfty }{\mathord}{infinity negated with vertical bar}%
-\UnicodeMathSymbol{"029DF}{\dualmap }{\mathrel}{double-ended multimap}%
-\UnicodeMathSymbol{"029E0}{\laplac }{\mathord}{square with contoured outline}%
-\UnicodeMathSymbol{"029E1}{\lrtriangleeq }{\mathrel}{increases as}%
-\UnicodeMathSymbol{"029E2}{\shuffle }{\mathbin}{shuffle product}%
-\UnicodeMathSymbol{"029E3}{\eparsl }{\mathrel}{equals sign and slanted parallel}%
-\UnicodeMathSymbol{"029E4}{\smeparsl }{\mathrel}{equals sign and slanted parallel with tilde above}%
-\UnicodeMathSymbol{"029E5}{\eqvparsl }{\mathrel}{identical to and slanted parallel}%
-\UnicodeMathSymbol{"029E6}{\gleichstark }{\mathrel}{gleich stark}%
-\UnicodeMathSymbol{"029E7}{\thermod }{\mathord}{thermodynamic}%
-\UnicodeMathSymbol{"029E8}{\downtriangleleftblack }{\mathord}{down-pointing triangle with left half black}%
-\UnicodeMathSymbol{"029E9}{\downtrianglerightblack }{\mathord}{down-pointing triangle with right half black}%
-\UnicodeMathSymbol{"029EA}{\blackdiamonddownarrow }{\mathord}{black diamond with down arrow}%
-\UnicodeMathSymbol{"029EB}{\mdlgblklozenge }{\mathbin}{black lozenge}%
-\UnicodeMathSymbol{"029EC}{\circledownarrow }{\mathord}{white circle with down arrow}%
-\UnicodeMathSymbol{"029ED}{\blackcircledownarrow }{\mathord}{black circle with down arrow}%
-\UnicodeMathSymbol{"029EE}{\errbarsquare }{\mathord}{error-barred white square}%
-\UnicodeMathSymbol{"029EF}{\errbarblacksquare }{\mathord}{error-barred black square}%
-\UnicodeMathSymbol{"029F0}{\errbardiamond }{\mathord}{error-barred white diamond}%
-\UnicodeMathSymbol{"029F1}{\errbarblackdiamond }{\mathord}{error-barred black diamond}%
-\UnicodeMathSymbol{"029F2}{\errbarcircle }{\mathord}{error-barred white circle}%
-\UnicodeMathSymbol{"029F3}{\errbarblackcircle }{\mathord}{error-barred black circle}%
-\UnicodeMathSymbol{"029F4}{\ruledelayed }{\mathrel}{rule-delayed}%
-\UnicodeMathSymbol{"029F5}{\setminus }{\mathbin}{reverse solidus operator}%
-\UnicodeMathSymbol{"029F6}{\dsol }{\mathbin}{solidus with overbar}%
-\UnicodeMathSymbol{"029F7}{\rsolbar }{\mathbin}{reverse solidus with horizontal stroke}%
-\UnicodeMathSymbol{"029F8}{\xsol }{\mathop}{big solidus}%
-\UnicodeMathSymbol{"029F9}{\xbsol }{\mathop}{big reverse solidus}%
-\UnicodeMathSymbol{"029FA}{\doubleplus }{\mathbin}{double plus}%
-\UnicodeMathSymbol{"029FB}{\tripleplus }{\mathbin}{triple plus}%
-\UnicodeMathSymbol{"029FC}{\lcurvyangle }{\mathopen}{left pointing curved angle bracket}%
-\UnicodeMathSymbol{"029FD}{\rcurvyangle }{\mathclose}{right pointing curved angle bracket}%
-\UnicodeMathSymbol{"029FE}{\tplus }{\mathbin}{tiny}%
-\UnicodeMathSymbol{"029FF}{\tminus }{\mathbin}{miny}%
-\UnicodeMathSymbol{"02A00}{\bigodot }{\mathop}{n-ary circled dot operator}%
-\UnicodeMathSymbol{"02A01}{\bigoplus }{\mathop}{n-ary circled plus operator}%
-\UnicodeMathSymbol{"02A02}{\bigotimes }{\mathop}{n-ary circled times operator}%
-\UnicodeMathSymbol{"02A03}{\bigcupdot }{\mathop}{n-ary union operator with dot}%
-\UnicodeMathSymbol{"02A04}{\biguplus }{\mathop}{n-ary union operator with plus}%
-\UnicodeMathSymbol{"02A05}{\bigsqcap }{\mathop}{n-ary square intersection operator}%
-\UnicodeMathSymbol{"02A06}{\bigsqcup }{\mathop}{n-ary square union operator}%
-\UnicodeMathSymbol{"02A07}{\conjquant }{\mathop}{two logical and operator}%
-\UnicodeMathSymbol{"02A08}{\disjquant }{\mathop}{two logical or operator}%
-\UnicodeMathSymbol{"02A09}{\bigtimes }{\mathop}{n-ary times operator}%
-\UnicodeMathSymbol{"02A0A}{\modtwosum }{\mathop}{modulo two sum}%
-\UnicodeMathSymbol{"02A0B}{\sumint }{\mathop}{summation with integral}%
-\UnicodeMathSymbol{"02A0C}{\iiiint }{\mathop}{quadruple integral operator}%
-\UnicodeMathSymbol{"02A0D}{\intbar }{\mathop}{finite part integral}%
-\UnicodeMathSymbol{"02A0E}{\intBar }{\mathop}{integral with double stroke}%
-\UnicodeMathSymbol{"02A0F}{\fint }{\mathop}{integral average with slash}%
-\UnicodeMathSymbol{"02A10}{\cirfnint }{\mathop}{circulation function}%
-\UnicodeMathSymbol{"02A11}{\awint }{\mathop}{anticlockwise integration}%
-\UnicodeMathSymbol{"02A12}{\rppolint }{\mathop}{line integration with rectangular path around pole}%
-\UnicodeMathSymbol{"02A13}{\scpolint }{\mathop}{line integration with semicircular path around pole}%
-\UnicodeMathSymbol{"02A14}{\npolint }{\mathop}{line integration not including the pole}%
-\UnicodeMathSymbol{"02A15}{\pointint }{\mathop}{integral around a point operator}%
-\UnicodeMathSymbol{"02A16}{\sqint }{\mathop}{quaternion integral operator}%
-\UnicodeMathSymbol{"02A17}{\intlarhk }{\mathop}{integral with leftwards arrow with hook}%
-\UnicodeMathSymbol{"02A18}{\intx }{\mathop}{integral with times sign}%
-\UnicodeMathSymbol{"02A19}{\intcap }{\mathop}{integral with intersection}%
-\UnicodeMathSymbol{"02A1A}{\intcup }{\mathop}{integral with union}%
-\UnicodeMathSymbol{"02A1B}{\upint }{\mathop}{integral with overbar}%
-\UnicodeMathSymbol{"02A1C}{\lowint }{\mathop}{integral with underbar}%
-\UnicodeMathSymbol{"02A1D}{\Join }{\mathop}{join}%
-\UnicodeMathSymbol{"02A1E}{\bigtriangleleft }{\mathop}{large left triangle operator}%
-\UnicodeMathSymbol{"02A1F}{\zcmp }{\mathop}{z notation schema composition}%
-\UnicodeMathSymbol{"02A20}{\zpipe }{\mathop}{z notation schema piping}%
-\UnicodeMathSymbol{"02A21}{\zproject }{\mathop}{z notation schema projection}%
-\UnicodeMathSymbol{"02A22}{\ringplus }{\mathbin}{plus sign with small circle above}%
-\UnicodeMathSymbol{"02A23}{\plushat }{\mathbin}{plus sign with circumflex accent above}%
-\UnicodeMathSymbol{"02A24}{\simplus }{\mathbin}{plus sign with tilde above}%
-\UnicodeMathSymbol{"02A25}{\plusdot }{\mathbin}{plus sign with dot below}%
-\UnicodeMathSymbol{"02A26}{\plussim }{\mathbin}{plus sign with tilde below}%
-\UnicodeMathSymbol{"02A27}{\plussubtwo }{\mathbin}{plus sign with subscript two}%
-\UnicodeMathSymbol{"02A28}{\plustrif }{\mathbin}{plus sign with black triangle}%
-\UnicodeMathSymbol{"02A29}{\commaminus }{\mathbin}{minus sign with comma above}%
-\UnicodeMathSymbol{"02A2A}{\minusdot }{\mathbin}{minus sign with dot below}%
-\UnicodeMathSymbol{"02A2B}{\minusfdots }{\mathbin}{minus sign with falling dots}%
-\UnicodeMathSymbol{"02A2C}{\minusrdots }{\mathbin}{minus sign with rising dots}%
-\UnicodeMathSymbol{"02A2D}{\opluslhrim }{\mathbin}{plus sign in left half circle}%
-\UnicodeMathSymbol{"02A2E}{\oplusrhrim }{\mathbin}{plus sign in right half circle}%
-\UnicodeMathSymbol{"02A2F}{\vectimes }{\mathbin}{vector or cross product}%
-\UnicodeMathSymbol{"02A30}{\dottimes }{\mathbin}{multiplication sign with dot above}%
-\UnicodeMathSymbol{"02A31}{\timesbar }{\mathbin}{multiplication sign with underbar}%
-\UnicodeMathSymbol{"02A32}{\btimes }{\mathbin}{semidirect product with bottom closed}%
-\UnicodeMathSymbol{"02A33}{\smashtimes }{\mathbin}{smash product}%
-\UnicodeMathSymbol{"02A34}{\otimeslhrim }{\mathbin}{multiplication sign in left half circle}%
-\UnicodeMathSymbol{"02A35}{\otimesrhrim }{\mathbin}{multiplication sign in right half circle}%
-\UnicodeMathSymbol{"02A36}{\otimeshat }{\mathbin}{circled multiplication sign with circumflex accent}%
-\UnicodeMathSymbol{"02A37}{\Otimes }{\mathbin}{multiplication sign in double circle}%
-\UnicodeMathSymbol{"02A38}{\odiv }{\mathbin}{circled division sign}%
-\UnicodeMathSymbol{"02A39}{\triangleplus }{\mathbin}{plus sign in triangle}%
-\UnicodeMathSymbol{"02A3A}{\triangleminus }{\mathbin}{minus sign in triangle}%
-\UnicodeMathSymbol{"02A3B}{\triangletimes }{\mathbin}{multiplication sign in triangle}%
-\UnicodeMathSymbol{"02A3C}{\intprod }{\mathbin}{interior product}%
-\UnicodeMathSymbol{"02A3D}{\intprodr }{\mathbin}{righthand interior product}%
-\UnicodeMathSymbol{"02A3E}{\fcmp }{\mathbin}{z notation relational composition}%
-\UnicodeMathSymbol{"02A3F}{\amalg }{\mathbin}{amalgamation or coproduct}%
-\UnicodeMathSymbol{"02A40}{\capdot }{\mathbin}{intersection with dot}%
-\UnicodeMathSymbol{"02A41}{\uminus }{\mathbin}{union with minus sign}%
-\UnicodeMathSymbol{"02A42}{\barcup }{\mathbin}{union with overbar}%
-\UnicodeMathSymbol{"02A43}{\barcap }{\mathbin}{intersection with overbar}%
-\UnicodeMathSymbol{"02A44}{\capwedge }{\mathbin}{intersection with logical and}%
-\UnicodeMathSymbol{"02A45}{\cupvee }{\mathbin}{union with logical or}%
-\UnicodeMathSymbol{"02A46}{\cupovercap }{\mathbin}{union above intersection}%
-\UnicodeMathSymbol{"02A47}{\capovercup }{\mathbin}{intersection above union}%
-\UnicodeMathSymbol{"02A48}{\cupbarcap }{\mathbin}{union above bar above intersection}%
-\UnicodeMathSymbol{"02A49}{\capbarcup }{\mathbin}{intersection above bar above union}%
-\UnicodeMathSymbol{"02A4A}{\twocups }{\mathbin}{union beside and joined with union}%
-\UnicodeMathSymbol{"02A4B}{\twocaps }{\mathbin}{intersection beside and joined with intersection}%
-\UnicodeMathSymbol{"02A4C}{\closedvarcup }{\mathbin}{closed union with serifs}%
-\UnicodeMathSymbol{"02A4D}{\closedvarcap }{\mathbin}{closed intersection with serifs}%
-\UnicodeMathSymbol{"02A4E}{\Sqcap }{\mathbin}{double square intersection}%
-\UnicodeMathSymbol{"02A4F}{\Sqcup }{\mathbin}{double square union}%
-\UnicodeMathSymbol{"02A50}{\closedvarcupsmashprod }{\mathbin}{closed union with serifs and smash product}%
-\UnicodeMathSymbol{"02A51}{\wedgeodot }{\mathbin}{logical and with dot above}%
-\UnicodeMathSymbol{"02A52}{\veeodot }{\mathbin}{logical or with dot above}%
-\UnicodeMathSymbol{"02A53}{\Wedge }{\mathbin}{double logical and}%
-\UnicodeMathSymbol{"02A54}{\Vee }{\mathbin}{double logical or}%
-\UnicodeMathSymbol{"02A55}{\wedgeonwedge }{\mathbin}{two intersecting logical and}%
-\UnicodeMathSymbol{"02A56}{\veeonvee }{\mathbin}{two intersecting logical or}%
-\UnicodeMathSymbol{"02A57}{\bigslopedvee }{\mathbin}{sloping large or}%
-\UnicodeMathSymbol{"02A58}{\bigslopedwedge }{\mathbin}{sloping large and}%
-\UnicodeMathSymbol{"02A59}{\veeonwedge }{\mathrel}{logical or overlapping logical and}%
-\UnicodeMathSymbol{"02A5A}{\wedgemidvert }{\mathbin}{logical and with middle stem}%
-\UnicodeMathSymbol{"02A5B}{\veemidvert }{\mathbin}{logical or with middle stem}%
-\UnicodeMathSymbol{"02A5C}{\midbarwedge }{\mathbin}{ogical and with horizontal dash}%
-\UnicodeMathSymbol{"02A5D}{\midbarvee }{\mathbin}{logical or with horizontal dash}%
-\UnicodeMathSymbol{"02A5E}{\doublebarwedge }{\mathbin}{logical and with double overbar}%
-\UnicodeMathSymbol{"02A5F}{\wedgebar }{\mathbin}{logical and with underbar}%
-\UnicodeMathSymbol{"02A60}{\wedgedoublebar }{\mathbin}{logical and with double underbar}%
-\UnicodeMathSymbol{"02A61}{\varveebar }{\mathbin}{small vee with underbar}%
-\UnicodeMathSymbol{"02A62}{\doublebarvee }{\mathbin}{logical or with double overbar}%
-\UnicodeMathSymbol{"02A63}{\veedoublebar }{\mathbin}{logical or with double underbar}%
-\UnicodeMathSymbol{"02A64}{\dsub }{\mathbin}{z notation domain antirestriction}%
-\UnicodeMathSymbol{"02A65}{\rsub }{\mathbin}{z notation range antirestriction}%
-\UnicodeMathSymbol{"02A66}{\eqdot }{\mathrel}{equals sign with dot below}%
-\UnicodeMathSymbol{"02A67}{\dotequiv }{\mathrel}{identical with dot above}%
-\UnicodeMathSymbol{"02A68}{\equivVert }{\mathrel}{triple horizontal bar with double vertical stroke}%
-\UnicodeMathSymbol{"02A69}{\equivVvert }{\mathrel}{triple horizontal bar with triple vertical stroke}%
-\UnicodeMathSymbol{"02A6A}{\dotsim }{\mathrel}{tilde operator with dot above}%
-\UnicodeMathSymbol{"02A6B}{\simrdots }{\mathrel}{tilde operator with rising dots}%
-\UnicodeMathSymbol{"02A6C}{\simminussim }{\mathrel}{similar minus similar}%
-\UnicodeMathSymbol{"02A6D}{\congdot }{\mathrel}{congruent with dot above}%
-\UnicodeMathSymbol{"02A6E}{\asteq }{\mathrel}{equals with asterisk}%
-\UnicodeMathSymbol{"02A6F}{\hatapprox }{\mathrel}{almost equal to with circumflex accent}%
-\UnicodeMathSymbol{"02A70}{\approxeqq }{\mathrel}{approximately equal or equal to}%
-\UnicodeMathSymbol{"02A71}{\eqqplus }{\mathbin}{equals sign above plus sign}%
-\UnicodeMathSymbol{"02A72}{\pluseqq }{\mathbin}{plus sign above equals sign}%
-\UnicodeMathSymbol{"02A73}{\eqqsim }{\mathrel}{equals sign above tilde operator}%
-\UnicodeMathSymbol{"02A74}{\Coloneq }{\mathrel}{double colon equal}%
-\UnicodeMathSymbol{"02A75}{\eqeq }{\mathrel}{two consecutive equals signs}%
-\UnicodeMathSymbol{"02A76}{\eqeqeq }{\mathrel}{three consecutive equals signs}%
-\UnicodeMathSymbol{"02A77}{\ddotseq }{\mathrel}{equals sign with two dots above and two dots below}%
-\UnicodeMathSymbol{"02A78}{\equivDD }{\mathrel}{equivalent with four dots above}%
-\UnicodeMathSymbol{"02A79}{\ltcir }{\mathrel}{less-than with circle inside}%
-\UnicodeMathSymbol{"02A7A}{\gtcir }{\mathrel}{greater-than with circle inside}%
-\UnicodeMathSymbol{"02A7B}{\ltquest }{\mathrel}{less-than with question mark above}%
-\UnicodeMathSymbol{"02A7C}{\gtquest }{\mathrel}{greater-than with question mark above}%
-\UnicodeMathSymbol{"02A7D}{\leqslant }{\mathrel}{less-than or slanted equal to}%
-\UnicodeMathSymbol{"02A7E}{\geqslant }{\mathrel}{greater-than or slanted equal to}%
-\UnicodeMathSymbol{"02A7F}{\lesdot }{\mathrel}{less-than or slanted equal to with dot inside}%
-\UnicodeMathSymbol{"02A80}{\gesdot }{\mathrel}{greater-than or slanted equal to with dot inside}%
-\UnicodeMathSymbol{"02A81}{\lesdoto }{\mathrel}{less-than or slanted equal to with dot above}%
-\UnicodeMathSymbol{"02A82}{\gesdoto }{\mathrel}{greater-than or slanted equal to with dot above}%
-\UnicodeMathSymbol{"02A83}{\lesdotor }{\mathrel}{less-than or slanted equal to with dot above right}%
-\UnicodeMathSymbol{"02A84}{\gesdotol }{\mathrel}{greater-than or slanted equal to with dot above left}%
-\UnicodeMathSymbol{"02A85}{\lessapprox }{\mathrel}{less-than or approximate}%
-\UnicodeMathSymbol{"02A86}{\gtrapprox }{\mathrel}{greater-than or approximate}%
-\UnicodeMathSymbol{"02A87}{\lneq }{\mathrel}{less-than and single-line not equal to}%
-\UnicodeMathSymbol{"02A88}{\gneq }{\mathrel}{greater-than and single-line not equal to}%
-\UnicodeMathSymbol{"02A89}{\lnapprox }{\mathrel}{less-than and not approximate}%
-\UnicodeMathSymbol{"02A8A}{\gnapprox }{\mathrel}{greater-than and not approximate}%
-\UnicodeMathSymbol{"02A8B}{\lesseqqgtr }{\mathrel}{less-than above double-line equal above greater-than}%
-\UnicodeMathSymbol{"02A8C}{\gtreqqless }{\mathrel}{greater-than above double-line equal above less-than}%
-\UnicodeMathSymbol{"02A8D}{\lsime }{\mathrel}{less-than above similar or equal}%
-\UnicodeMathSymbol{"02A8E}{\gsime }{\mathrel}{greater-than above similar or equal}%
-\UnicodeMathSymbol{"02A8F}{\lsimg }{\mathrel}{less-than above similar above greater-than}%
-\UnicodeMathSymbol{"02A90}{\gsiml }{\mathrel}{greater-than above similar above less-than}%
-\UnicodeMathSymbol{"02A91}{\lgE }{\mathrel}{less-than above greater-than above double-line equal}%
-\UnicodeMathSymbol{"02A92}{\glE }{\mathrel}{greater-than above less-than above double-line equal}%
-\UnicodeMathSymbol{"02A93}{\lesges }{\mathrel}{less-than above slanted equal above greater-than above slanted equal}%
-\UnicodeMathSymbol{"02A94}{\gesles }{\mathrel}{greater-than above slanted equal above less-than above slanted equal}%
-\UnicodeMathSymbol{"02A95}{\eqslantless }{\mathrel}{slanted equal to or less-than}%
-\UnicodeMathSymbol{"02A96}{\eqslantgtr }{\mathrel}{slanted equal to or greater-than}%
-\UnicodeMathSymbol{"02A97}{\elsdot }{\mathrel}{slanted equal to or less-than with dot inside}%
-\UnicodeMathSymbol{"02A98}{\egsdot }{\mathrel}{slanted equal to or greater-than with dot inside}%
-\UnicodeMathSymbol{"02A99}{\eqqless }{\mathrel}{double-line equal to or less-than}%
-\UnicodeMathSymbol{"02A9A}{\eqqgtr }{\mathrel}{double-line equal to or greater-than}%
-\UnicodeMathSymbol{"02A9B}{\eqqslantless }{\mathrel}{double-line slanted equal to or less-than}%
-\UnicodeMathSymbol{"02A9C}{\eqqslantgtr }{\mathrel}{double-line slanted equal to or greater-than}%
-\UnicodeMathSymbol{"02A9D}{\simless }{\mathrel}{similar or less-than}%
-\UnicodeMathSymbol{"02A9E}{\simgtr }{\mathrel}{similar or greater-than}%
-\UnicodeMathSymbol{"02A9F}{\simlE }{\mathrel}{similar above less-than above equals sign}%
-\UnicodeMathSymbol{"02AA0}{\simgE }{\mathrel}{similar above greater-than above equals sign}%
-\UnicodeMathSymbol{"02AA1}{\Lt }{\mathrel}{double nested less-than}%
-\UnicodeMathSymbol{"02AA2}{\Gt }{\mathrel}{double nested greater-than}%
-\UnicodeMathSymbol{"02AA3}{\partialmeetcontraction }{\mathrel}{double less-than with underbar}%
-\UnicodeMathSymbol{"02AA4}{\glj }{\mathrel}{greater-than overlapping less-than}%
-\UnicodeMathSymbol{"02AA5}{\gla }{\mathrel}{greater-than beside less-than}%
-\UnicodeMathSymbol{"02AA6}{\ltcc }{\mathrel}{less-than closed by curve}%
-\UnicodeMathSymbol{"02AA7}{\gtcc }{\mathrel}{greater-than closed by curve}%
-\UnicodeMathSymbol{"02AA8}{\lescc }{\mathrel}{less-than closed by curve above slanted equal}%
-\UnicodeMathSymbol{"02AA9}{\gescc }{\mathrel}{greater-than closed by curve above slanted equal}%
-\UnicodeMathSymbol{"02AAA}{\smt }{\mathrel}{smaller than}%
-\UnicodeMathSymbol{"02AAB}{\lat }{\mathrel}{larger than}%
-\UnicodeMathSymbol{"02AAC}{\smte }{\mathrel}{smaller than or equal to}%
-\UnicodeMathSymbol{"02AAD}{\late }{\mathrel}{larger than or equal to}%
-\UnicodeMathSymbol{"02AAE}{\bumpeqq }{\mathrel}{equals sign with bumpy above}%
-\UnicodeMathSymbol{"02AAF}{\preceq }{\mathrel}{precedes above single-line equals sign}%
-\UnicodeMathSymbol{"02AB0}{\succeq }{\mathrel}{succeeds above single-line equals sign}%
-\UnicodeMathSymbol{"02AB1}{\precneq }{\mathrel}{precedes above single-line not equal to}%
-\UnicodeMathSymbol{"02AB2}{\succneq }{\mathrel}{succeeds above single-line not equal to}%
-\UnicodeMathSymbol{"02AB3}{\preceqq }{\mathrel}{precedes above equals sign}%
-\UnicodeMathSymbol{"02AB4}{\succeqq }{\mathrel}{succeeds above equals sign}%
-\UnicodeMathSymbol{"02AB5}{\precneqq }{\mathrel}{precedes above not equal to}%
-\UnicodeMathSymbol{"02AB6}{\succneqq }{\mathrel}{succeeds above not equal to}%
-\UnicodeMathSymbol{"02AB7}{\precapprox }{\mathrel}{precedes above almost equal to}%
-\UnicodeMathSymbol{"02AB8}{\succapprox }{\mathrel}{succeeds above almost equal to}%
-\UnicodeMathSymbol{"02AB9}{\precnapprox }{\mathrel}{precedes above not almost equal to}%
-\UnicodeMathSymbol{"02ABA}{\succnapprox }{\mathrel}{succeeds above not almost equal to}%
-\UnicodeMathSymbol{"02ABB}{\Prec }{\mathrel}{double precedes}%
-\UnicodeMathSymbol{"02ABC}{\Succ }{\mathrel}{double succeeds}%
-\UnicodeMathSymbol{"02ABD}{\subsetdot }{\mathrel}{subset with dot}%
-\UnicodeMathSymbol{"02ABE}{\supsetdot }{\mathrel}{superset with dot}%
-\UnicodeMathSymbol{"02ABF}{\subsetplus }{\mathrel}{subset with plus sign below}%
-\UnicodeMathSymbol{"02AC0}{\supsetplus }{\mathrel}{superset with plus sign below}%
-\UnicodeMathSymbol{"02AC1}{\submult }{\mathrel}{subset with multiplication sign below}%
-\UnicodeMathSymbol{"02AC2}{\supmult }{\mathrel}{superset with multiplication sign below}%
-\UnicodeMathSymbol{"02AC3}{\subedot }{\mathrel}{subset of or equal to with dot above}%
-\UnicodeMathSymbol{"02AC4}{\supedot }{\mathrel}{superset of or equal to with dot above}%
-\UnicodeMathSymbol{"02AC5}{\subseteqq }{\mathrel}{subset of above equals sign}%
-\UnicodeMathSymbol{"02AC6}{\supseteqq }{\mathrel}{superset of above equals sign}%
-\UnicodeMathSymbol{"02AC7}{\subsim }{\mathrel}{subset of above tilde operator}%
-\UnicodeMathSymbol{"02AC8}{\supsim }{\mathrel}{superset of above tilde operator}%
-\UnicodeMathSymbol{"02AC9}{\subsetapprox }{\mathrel}{subset of above almost equal to}%
-\UnicodeMathSymbol{"02ACA}{\supsetapprox }{\mathrel}{superset of above almost equal to}%
-\UnicodeMathSymbol{"02ACB}{\subsetneqq }{\mathrel}{subset of above not equal to}%
-\UnicodeMathSymbol{"02ACC}{\supsetneqq }{\mathrel}{superset of above not equal to}%
-\UnicodeMathSymbol{"02ACD}{\lsqhook }{\mathrel}{square left open box operator}%
-\UnicodeMathSymbol{"02ACE}{\rsqhook }{\mathrel}{square right open box operator}%
-\UnicodeMathSymbol{"02ACF}{\csub }{\mathrel}{closed subset}%
-\UnicodeMathSymbol{"02AD0}{\csup }{\mathrel}{closed superset}%
-\UnicodeMathSymbol{"02AD1}{\csube }{\mathrel}{closed subset or equal to}%
-\UnicodeMathSymbol{"02AD2}{\csupe }{\mathrel}{closed superset or equal to}%
-\UnicodeMathSymbol{"02AD3}{\subsup }{\mathrel}{subset above superset}%
-\UnicodeMathSymbol{"02AD4}{\supsub }{\mathrel}{superset above subset}%
-\UnicodeMathSymbol{"02AD5}{\subsub }{\mathrel}{subset above subset}%
-\UnicodeMathSymbol{"02AD6}{\supsup }{\mathrel}{superset above superset}%
-\UnicodeMathSymbol{"02AD7}{\suphsub }{\mathrel}{superset beside subset}%
-\UnicodeMathSymbol{"02AD8}{\supdsub }{\mathrel}{superset beside and joined by dash with subset}%
-\UnicodeMathSymbol{"02AD9}{\forkv }{\mathrel}{element of opening downwards}%
-\UnicodeMathSymbol{"02ADA}{\topfork }{\mathrel}{pitchfork with tee top}%
-\UnicodeMathSymbol{"02ADB}{\mlcp }{\mathrel}{transversal intersection}%
-\UnicodeMathSymbol{"02ADC}{\forks }{\mathrel}{forking}%
-\UnicodeMathSymbol{"02ADD}{\forksnot }{\mathrel}{nonforking}%
-\UnicodeMathSymbol{"02ADE}{\shortlefttack }{\mathrel}{short left tack}%
-\UnicodeMathSymbol{"02ADF}{\shortdowntack }{\mathrel}{short down tack}%
-\UnicodeMathSymbol{"02AE0}{\shortuptack }{\mathrel}{short up tack}%
-\UnicodeMathSymbol{"02AE1}{\perps }{\mathord}{perpendicular with s}%
-\UnicodeMathSymbol{"02AE2}{\vDdash }{\mathrel}{vertical bar triple right turnstile}%
-\UnicodeMathSymbol{"02AE3}{\dashV }{\mathrel}{double vertical bar left turnstile}%
-\UnicodeMathSymbol{"02AE4}{\Dashv }{\mathrel}{vertical bar double left turnstile}%
-\UnicodeMathSymbol{"02AE5}{\DashV }{\mathrel}{double vertical bar double left turnstile}%
-\UnicodeMathSymbol{"02AE6}{\varVdash }{\mathrel}{long dash from left member of double vertical}%
-\UnicodeMathSymbol{"02AE7}{\Barv }{\mathrel}{short down tack with overbar}%
-\UnicodeMathSymbol{"02AE8}{\vBar }{\mathrel}{short up tack with underbar}%
-\UnicodeMathSymbol{"02AE9}{\vBarv }{\mathrel}{short up tack above short down tack}%
-\UnicodeMathSymbol{"02AEA}{\barV }{\mathrel}{double down tack}%
-\UnicodeMathSymbol{"02AEB}{\Vbar }{\mathrel}{double up tack}%
-\UnicodeMathSymbol{"02AEC}{\Not }{\mathrel}{double stroke not sign}%
-\UnicodeMathSymbol{"02AED}{\bNot }{\mathrel}{reversed double stroke not sign}%
-\UnicodeMathSymbol{"02AEE}{\revnmid }{\mathrel}{does not divide with reversed negation slash}%
-\UnicodeMathSymbol{"02AEF}{\cirmid }{\mathrel}{vertical line with circle above}%
-\UnicodeMathSymbol{"02AF0}{\midcir }{\mathrel}{vertical line with circle below}%
-\UnicodeMathSymbol{"02AF1}{\topcir }{\mathord}{down tack with circle below}%
-\UnicodeMathSymbol{"02AF2}{\nhpar }{\mathrel}{parallel with horizontal stroke}%
-\UnicodeMathSymbol{"02AF3}{\parsim }{\mathrel}{parallel with tilde operator}%
-\UnicodeMathSymbol{"02AF4}{\interleave }{\mathbin}{triple vertical bar binary relation}%
-\UnicodeMathSymbol{"02AF5}{\nhVvert }{\mathbin}{triple vertical bar with horizontal stroke}%
-\UnicodeMathSymbol{"02AF6}{\threedotcolon }{\mathbin}{triple colon operator}%
-\UnicodeMathSymbol{"02AF7}{\lllnest }{\mathrel}{stacked very much less-than}%
-\UnicodeMathSymbol{"02AF8}{\gggnest }{\mathrel}{stacked very much greater-than}%
-\UnicodeMathSymbol{"02AF9}{\leqqslant }{\mathrel}{double-line slanted less-than or equal to}%
-\UnicodeMathSymbol{"02AFA}{\geqqslant }{\mathrel}{double-line slanted greater-than or equal to}%
-\UnicodeMathSymbol{"02AFB}{\trslash }{\mathbin}{triple solidus binary relation}%
-\UnicodeMathSymbol{"02AFC}{\biginterleave }{\mathop}{large triple vertical bar operator}%
-\UnicodeMathSymbol{"02AFD}{\sslash }{\mathbin}{double solidus operator}%
-\UnicodeMathSymbol{"02AFE}{\talloblong }{\mathbin}{white vertical bar}%
-\UnicodeMathSymbol{"02AFF}{\bigtalloblong }{\mathop}{n-ary white vertical bar}%
-\UnicodeMathSymbol{"02B12}{\squaretopblack }{\mathord}{square with top half black}%
-\UnicodeMathSymbol{"02B13}{\squarebotblack }{\mathord}{square with bottom half black}%
-\UnicodeMathSymbol{"02B14}{\squareurblack }{\mathord}{square with upper right diagonal half black}%
-\UnicodeMathSymbol{"02B15}{\squarellblack }{\mathord}{square with lower left diagonal half black}%
-\UnicodeMathSymbol{"02B16}{\diamondleftblack }{\mathord}{diamond with left half black}%
-\UnicodeMathSymbol{"02B17}{\diamondrightblack }{\mathord}{diamond with right half black}%
-\UnicodeMathSymbol{"02B18}{\diamondtopblack }{\mathord}{diamond with top half black}%
-\UnicodeMathSymbol{"02B19}{\diamondbotblack }{\mathord}{diamond with bottom half black}%
-\UnicodeMathSymbol{"02B1A}{\dottedsquare }{\mathord}{dotted square}%
-\UnicodeMathSymbol{"02B1B}{\lgblksquare }{\mathord}{black large square}%
-\UnicodeMathSymbol{"02B1C}{\lgwhtsquare }{\mathord}{white large square}%
-\UnicodeMathSymbol{"02B1D}{\vysmblksquare }{\mathord}{black very small square}%
-\UnicodeMathSymbol{"02B1E}{\vysmwhtsquare }{\mathord}{white very small square}%
-\UnicodeMathSymbol{"02B1F}{\pentagonblack }{\mathord}{black pentagon}%
-\UnicodeMathSymbol{"02B20}{\pentagon }{\mathord}{white pentagon}%
-\UnicodeMathSymbol{"02B21}{\varhexagon }{\mathord}{white hexagon}%
-\UnicodeMathSymbol{"02B22}{\varhexagonblack }{\mathord}{black hexagon}%
-\UnicodeMathSymbol{"02B23}{\hexagonblack }{\mathord}{horizontal black hexagon}%
-\UnicodeMathSymbol{"02B24}{\lgblkcircle }{\mathord}{black large circle}%
-\UnicodeMathSymbol{"02B25}{\mdblkdiamond }{\mathord}{black medium diamond}%
-\UnicodeMathSymbol{"02B26}{\mdwhtdiamond }{\mathord}{white medium diamond}%
-\UnicodeMathSymbol{"02B27}{\mdblklozenge }{\mathord}{black medium lozenge}%
-\UnicodeMathSymbol{"02B28}{\mdwhtlozenge }{\mathord}{white medium lozenge}%
-\UnicodeMathSymbol{"02B29}{\smblkdiamond }{\mathord}{black small diamond}%
-\UnicodeMathSymbol{"02B2A}{\smblklozenge }{\mathord}{black small lozenge}%
-\UnicodeMathSymbol{"02B2B}{\smwhtlozenge }{\mathord}{white small lozenge}%
-\UnicodeMathSymbol{"02B2C}{\blkhorzoval }{\mathord}{black horizontal ellipse}%
-\UnicodeMathSymbol{"02B2D}{\whthorzoval }{\mathord}{white horizontal ellipse}%
-\UnicodeMathSymbol{"02B2E}{\blkvertoval }{\mathord}{black vertical ellipse}%
-\UnicodeMathSymbol{"02B2F}{\whtvertoval }{\mathord}{white vertical ellipse}%
-\UnicodeMathSymbol{"02B30}{\circleonleftarrow }{\mathrel}{left arrow with small circle}%
-\UnicodeMathSymbol{"02B31}{\leftthreearrows }{\mathrel}{three leftwards arrows}%
-\UnicodeMathSymbol{"02B32}{\leftarrowonoplus }{\mathrel}{left arrow with circled plus}%
-\UnicodeMathSymbol{"02B33}{\longleftsquigarrow }{\mathrel}{long leftwards squiggle arrow}%
-\UnicodeMathSymbol{"02B34}{\nvtwoheadleftarrow }{\mathrel}{leftwards two-headed arrow with vertical stroke}%
-\UnicodeMathSymbol{"02B35}{\nVtwoheadleftarrow }{\mathrel}{leftwards two-headed arrow with double vertical stroke}%
-\UnicodeMathSymbol{"02B36}{\twoheadmapsfrom }{\mathrel}{leftwards two-headed arrow from bar}%
-\UnicodeMathSymbol{"02B37}{\twoheadleftdbkarrow }{\mathrel}{leftwards two-headed triple-dash arrow}%
-\UnicodeMathSymbol{"02B38}{\leftdotarrow }{\mathrel}{leftwards arrow with dotted stem}%
-\UnicodeMathSymbol{"02B39}{\nvleftarrowtail }{\mathrel}{leftwards arrow with tail with vertical stroke}%
-\UnicodeMathSymbol{"02B3A}{\nVleftarrowtail }{\mathrel}{leftwards arrow with tail with double vertical stroke}%
-\UnicodeMathSymbol{"02B3B}{\twoheadleftarrowtail }{\mathrel}{leftwards two-headed arrow with tail}%
-\UnicodeMathSymbol{"02B3C}{\nvtwoheadleftarrowtail }{\mathrel}{leftwards two-headed arrow with tail with vertical stroke}%
-\UnicodeMathSymbol{"02B3D}{\nVtwoheadleftarrowtail }{\mathrel}{leftwards two-headed arrow with tail with double vertical stroke}%
-\UnicodeMathSymbol{"02B3E}{\leftarrowx }{\mathrel}{leftwards arrow through x}%
-\UnicodeMathSymbol{"02B3F}{\leftcurvedarrow }{\mathrel}{wave arrow pointing directly left}%
-\UnicodeMathSymbol{"02B40}{\equalleftarrow }{\mathrel}{equals sign above leftwards arrow}%
-\UnicodeMathSymbol{"02B41}{\bsimilarleftarrow }{\mathrel}{reverse tilde operator above leftwards arrow}%
-\UnicodeMathSymbol{"02B42}{\leftarrowbackapprox }{\mathrel}{leftwards arrow above reverse almost equal to}%
-\UnicodeMathSymbol{"02B43}{\rightarrowgtr }{\mathrel}{rightwards arrow through greater-than}%
-\UnicodeMathSymbol{"02B44}{\rightarrowsupset }{\mathrel}{rightwards arrow through subset}%
-\UnicodeMathSymbol{"02B45}{\LLeftarrow }{\mathrel}{leftwards quadruple arrow}%
-\UnicodeMathSymbol{"02B46}{\RRightarrow }{\mathrel}{rightwards quadruple arrow}%
-\UnicodeMathSymbol{"02B47}{\bsimilarrightarrow }{\mathrel}{reverse tilde operator above rightwards arrow}%
-\UnicodeMathSymbol{"02B48}{\rightarrowbackapprox }{\mathrel}{rightwards arrow above reverse almost equal to}%
-\UnicodeMathSymbol{"02B49}{\similarleftarrow }{\mathrel}{tilde operator above leftwards arrow}%
-\UnicodeMathSymbol{"02B4A}{\leftarrowapprox }{\mathrel}{leftwards arrow above almost equal to}%
-\UnicodeMathSymbol{"02B4B}{\leftarrowbsimilar }{\mathrel}{leftwards arrow above reverse tilde operator}%
-\UnicodeMathSymbol{"02B4C}{\rightarrowbsimilar }{\mathrel}{righttwards arrow above reverse tilde operator}%
-\UnicodeMathSymbol{"02B50}{\medwhitestar }{\mathord}{white medium star}%
-\UnicodeMathSymbol{"02B51}{\medblackstar }{\mathord}{black medium star}%
-\UnicodeMathSymbol{"02B52}{\smwhitestar }{\mathord}{white small star}%
-\UnicodeMathSymbol{"02B53}{\rightpentagonblack }{\mathord}{black right-pointing pentagon}%
-\UnicodeMathSymbol{"02B54}{\rightpentagon }{\mathord}{white right-pointing pentagon}%
-\UnicodeMathSymbol{"03012}{\postalmark }{\mathord}{postal mark}%
-\UnicodeMathSymbol{"03030}{\hzigzag }{\mathord}{zigzag}%
-\UnicodeMathSymbol{"1D400}{\mbfA }{\mathalpha}{mathematical bold capital a}%
-\UnicodeMathSymbol{"1D401}{\mbfB }{\mathalpha}{mathematical bold capital b}%
-\UnicodeMathSymbol{"1D402}{\mbfC }{\mathalpha}{mathematical bold capital c}%
-\UnicodeMathSymbol{"1D403}{\mbfD }{\mathalpha}{mathematical bold capital d}%
-\UnicodeMathSymbol{"1D404}{\mbfE }{\mathalpha}{mathematical bold capital e}%
-\UnicodeMathSymbol{"1D405}{\mbfF }{\mathalpha}{mathematical bold capital f}%
-\UnicodeMathSymbol{"1D406}{\mbfG }{\mathalpha}{mathematical bold capital g}%
-\UnicodeMathSymbol{"1D407}{\mbfH }{\mathalpha}{mathematical bold capital h}%
-\UnicodeMathSymbol{"1D408}{\mbfI }{\mathalpha}{mathematical bold capital i}%
-\UnicodeMathSymbol{"1D409}{\mbfJ }{\mathalpha}{mathematical bold capital j}%
-\UnicodeMathSymbol{"1D40A}{\mbfK }{\mathalpha}{mathematical bold capital k}%
-\UnicodeMathSymbol{"1D40B}{\mbfL }{\mathalpha}{mathematical bold capital l}%
-\UnicodeMathSymbol{"1D40C}{\mbfM }{\mathalpha}{mathematical bold capital m}%
-\UnicodeMathSymbol{"1D40D}{\mbfN }{\mathalpha}{mathematical bold capital n}%
-\UnicodeMathSymbol{"1D40E}{\mbfO }{\mathalpha}{mathematical bold capital o}%
-\UnicodeMathSymbol{"1D40F}{\mbfP }{\mathalpha}{mathematical bold capital p}%
-\UnicodeMathSymbol{"1D410}{\mbfQ }{\mathalpha}{mathematical bold capital q}%
-\UnicodeMathSymbol{"1D411}{\mbfR }{\mathalpha}{mathematical bold capital r}%
-\UnicodeMathSymbol{"1D412}{\mbfS }{\mathalpha}{mathematical bold capital s}%
-\UnicodeMathSymbol{"1D413}{\mbfT }{\mathalpha}{mathematical bold capital t}%
-\UnicodeMathSymbol{"1D414}{\mbfU }{\mathalpha}{mathematical bold capital u}%
-\UnicodeMathSymbol{"1D415}{\mbfV }{\mathalpha}{mathematical bold capital v}%
-\UnicodeMathSymbol{"1D416}{\mbfW }{\mathalpha}{mathematical bold capital w}%
-\UnicodeMathSymbol{"1D417}{\mbfX }{\mathalpha}{mathematical bold capital x}%
-\UnicodeMathSymbol{"1D418}{\mbfY }{\mathalpha}{mathematical bold capital y}%
-\UnicodeMathSymbol{"1D419}{\mbfZ }{\mathalpha}{mathematical bold capital z}%
-\UnicodeMathSymbol{"1D41A}{\mbfa }{\mathalpha}{mathematical bold small a}%
-\UnicodeMathSymbol{"1D41B}{\mbfb }{\mathalpha}{mathematical bold small b}%
-\UnicodeMathSymbol{"1D41C}{\mbfc }{\mathalpha}{mathematical bold small c}%
-\UnicodeMathSymbol{"1D41D}{\mbfd }{\mathalpha}{mathematical bold small d}%
-\UnicodeMathSymbol{"1D41E}{\mbfe }{\mathalpha}{mathematical bold small e}%
-\UnicodeMathSymbol{"1D41F}{\mbff }{\mathalpha}{mathematical bold small f}%
-\UnicodeMathSymbol{"1D420}{\mbfg }{\mathalpha}{mathematical bold small g}%
-\UnicodeMathSymbol{"1D421}{\mbfh }{\mathalpha}{mathematical bold small h}%
-\UnicodeMathSymbol{"1D422}{\mbfi }{\mathalpha}{mathematical bold small i}%
-\UnicodeMathSymbol{"1D423}{\mbfj }{\mathalpha}{mathematical bold small j}%
-\UnicodeMathSymbol{"1D424}{\mbfk }{\mathalpha}{mathematical bold small k}%
-\UnicodeMathSymbol{"1D425}{\mbfl }{\mathalpha}{mathematical bold small l}%
-\UnicodeMathSymbol{"1D426}{\mbfm }{\mathalpha}{mathematical bold small m}%
-\UnicodeMathSymbol{"1D427}{\mbfn }{\mathalpha}{mathematical bold small n}%
-\UnicodeMathSymbol{"1D428}{\mbfo }{\mathalpha}{mathematical bold small o}%
-\UnicodeMathSymbol{"1D429}{\mbfp }{\mathalpha}{mathematical bold small p}%
-\UnicodeMathSymbol{"1D42A}{\mbfq }{\mathalpha}{mathematical bold small q}%
-\UnicodeMathSymbol{"1D42B}{\mbfr }{\mathalpha}{mathematical bold small r}%
-\UnicodeMathSymbol{"1D42C}{\mbfs }{\mathalpha}{mathematical bold small s}%
-\UnicodeMathSymbol{"1D42D}{\mbft }{\mathalpha}{mathematical bold small t}%
-\UnicodeMathSymbol{"1D42E}{\mbfu }{\mathalpha}{mathematical bold small u}%
-\UnicodeMathSymbol{"1D42F}{\mbfv }{\mathalpha}{mathematical bold small v}%
-\UnicodeMathSymbol{"1D430}{\mbfw }{\mathalpha}{mathematical bold small w}%
-\UnicodeMathSymbol{"1D431}{\mbfx }{\mathalpha}{mathematical bold small x}%
-\UnicodeMathSymbol{"1D432}{\mbfy }{\mathalpha}{mathematical bold small y}%
-\UnicodeMathSymbol{"1D433}{\mbfz }{\mathalpha}{mathematical bold small z}%
-\UnicodeMathSymbol{"1D434}{\mitA }{\mathalpha}{mathematical italic capital a}%
-\UnicodeMathSymbol{"1D435}{\mitB }{\mathalpha}{mathematical italic capital b}%
-\UnicodeMathSymbol{"1D436}{\mitC }{\mathalpha}{mathematical italic capital c}%
-\UnicodeMathSymbol{"1D437}{\mitD }{\mathalpha}{mathematical italic capital d}%
-\UnicodeMathSymbol{"1D438}{\mitE }{\mathalpha}{mathematical italic capital e}%
-\UnicodeMathSymbol{"1D439}{\mitF }{\mathalpha}{mathematical italic capital f}%
-\UnicodeMathSymbol{"1D43A}{\mitG }{\mathalpha}{mathematical italic capital g}%
-\UnicodeMathSymbol{"1D43B}{\mitH }{\mathalpha}{mathematical italic capital h}%
-\UnicodeMathSymbol{"1D43C}{\mitI }{\mathalpha}{mathematical italic capital i}%
-\UnicodeMathSymbol{"1D43D}{\mitJ }{\mathalpha}{mathematical italic capital j}%
-\UnicodeMathSymbol{"1D43E}{\mitK }{\mathalpha}{mathematical italic capital k}%
-\UnicodeMathSymbol{"1D43F}{\mitL }{\mathalpha}{mathematical italic capital l}%
-\UnicodeMathSymbol{"1D440}{\mitM }{\mathalpha}{mathematical italic capital m}%
-\UnicodeMathSymbol{"1D441}{\mitN }{\mathalpha}{mathematical italic capital n}%
-\UnicodeMathSymbol{"1D442}{\mitO }{\mathalpha}{mathematical italic capital o}%
-\UnicodeMathSymbol{"1D443}{\mitP }{\mathalpha}{mathematical italic capital p}%
-\UnicodeMathSymbol{"1D444}{\mitQ }{\mathalpha}{mathematical italic capital q}%
-\UnicodeMathSymbol{"1D445}{\mitR }{\mathalpha}{mathematical italic capital r}%
-\UnicodeMathSymbol{"1D446}{\mitS }{\mathalpha}{mathematical italic capital s}%
-\UnicodeMathSymbol{"1D447}{\mitT }{\mathalpha}{mathematical italic capital t}%
-\UnicodeMathSymbol{"1D448}{\mitU }{\mathalpha}{mathematical italic capital u}%
-\UnicodeMathSymbol{"1D449}{\mitV }{\mathalpha}{mathematical italic capital v}%
-\UnicodeMathSymbol{"1D44A}{\mitW }{\mathalpha}{mathematical italic capital w}%
-\UnicodeMathSymbol{"1D44B}{\mitX }{\mathalpha}{mathematical italic capital x}%
-\UnicodeMathSymbol{"1D44C}{\mitY }{\mathalpha}{mathematical italic capital y}%
-\UnicodeMathSymbol{"1D44D}{\mitZ }{\mathalpha}{mathematical italic capital z}%
-\UnicodeMathSymbol{"1D44E}{\mita }{\mathalpha}{mathematical italic small a}%
-\UnicodeMathSymbol{"1D44F}{\mitb }{\mathalpha}{mathematical italic small b}%
-\UnicodeMathSymbol{"1D450}{\mitc }{\mathalpha}{mathematical italic small c}%
-\UnicodeMathSymbol{"1D451}{\mitd }{\mathalpha}{mathematical italic small d}%
-\UnicodeMathSymbol{"1D452}{\mite }{\mathalpha}{mathematical italic small e}%
-\UnicodeMathSymbol{"1D453}{\mitf }{\mathalpha}{mathematical italic small f}%
-\UnicodeMathSymbol{"1D454}{\mitg }{\mathalpha}{mathematical italic small g}%
-\UnicodeMathSymbol{"1D456}{\miti }{\mathalpha}{mathematical italic small i}%
-\UnicodeMathSymbol{"1D457}{\mitj }{\mathalpha}{mathematical italic small j}%
-\UnicodeMathSymbol{"1D458}{\mitk }{\mathalpha}{mathematical italic small k}%
-\UnicodeMathSymbol{"1D459}{\mitl }{\mathalpha}{mathematical italic small l}%
-\UnicodeMathSymbol{"1D45A}{\mitm }{\mathalpha}{mathematical italic small m}%
-\UnicodeMathSymbol{"1D45B}{\mitn }{\mathalpha}{mathematical italic small n}%
-\UnicodeMathSymbol{"1D45C}{\mito }{\mathalpha}{mathematical italic small o}%
-\UnicodeMathSymbol{"1D45D}{\mitp }{\mathalpha}{mathematical italic small p}%
-\UnicodeMathSymbol{"1D45E}{\mitq }{\mathalpha}{mathematical italic small q}%
-\UnicodeMathSymbol{"1D45F}{\mitr }{\mathalpha}{mathematical italic small r}%
-\UnicodeMathSymbol{"1D460}{\mits }{\mathalpha}{mathematical italic small s}%
-\UnicodeMathSymbol{"1D461}{\mitt }{\mathalpha}{mathematical italic small t}%
-\UnicodeMathSymbol{"1D462}{\mitu }{\mathalpha}{mathematical italic small u}%
-\UnicodeMathSymbol{"1D463}{\mitv }{\mathalpha}{mathematical italic small v}%
-\UnicodeMathSymbol{"1D464}{\mitw }{\mathalpha}{mathematical italic small w}%
-\UnicodeMathSymbol{"1D465}{\mitx }{\mathalpha}{mathematical italic small x}%
-\UnicodeMathSymbol{"1D466}{\mity }{\mathalpha}{mathematical italic small y}%
-\UnicodeMathSymbol{"1D467}{\mitz }{\mathalpha}{mathematical italic small z}%
-\UnicodeMathSymbol{"1D468}{\mbfitA }{\mathalpha}{mathematical bold italic capital a}%
-\UnicodeMathSymbol{"1D469}{\mbfitB }{\mathalpha}{mathematical bold italic capital b}%
-\UnicodeMathSymbol{"1D46A}{\mbfitC }{\mathalpha}{mathematical bold italic capital c}%
-\UnicodeMathSymbol{"1D46B}{\mbfitD }{\mathalpha}{mathematical bold italic capital d}%
-\UnicodeMathSymbol{"1D46C}{\mbfitE }{\mathalpha}{mathematical bold italic capital e}%
-\UnicodeMathSymbol{"1D46D}{\mbfitF }{\mathalpha}{mathematical bold italic capital f}%
-\UnicodeMathSymbol{"1D46E}{\mbfitG }{\mathalpha}{mathematical bold italic capital g}%
-\UnicodeMathSymbol{"1D46F}{\mbfitH }{\mathalpha}{mathematical bold italic capital h}%
-\UnicodeMathSymbol{"1D470}{\mbfitI }{\mathalpha}{mathematical bold italic capital i}%
-\UnicodeMathSymbol{"1D471}{\mbfitJ }{\mathalpha}{mathematical bold italic capital j}%
-\UnicodeMathSymbol{"1D472}{\mbfitK }{\mathalpha}{mathematical bold italic capital k}%
-\UnicodeMathSymbol{"1D473}{\mbfitL }{\mathalpha}{mathematical bold italic capital l}%
-\UnicodeMathSymbol{"1D474}{\mbfitM }{\mathalpha}{mathematical bold italic capital m}%
-\UnicodeMathSymbol{"1D475}{\mbfitN }{\mathalpha}{mathematical bold italic capital n}%
-\UnicodeMathSymbol{"1D476}{\mbfitO }{\mathalpha}{mathematical bold italic capital o}%
-\UnicodeMathSymbol{"1D477}{\mbfitP }{\mathalpha}{mathematical bold italic capital p}%
-\UnicodeMathSymbol{"1D478}{\mbfitQ }{\mathalpha}{mathematical bold italic capital q}%
-\UnicodeMathSymbol{"1D479}{\mbfitR }{\mathalpha}{mathematical bold italic capital r}%
-\UnicodeMathSymbol{"1D47A}{\mbfitS }{\mathalpha}{mathematical bold italic capital s}%
-\UnicodeMathSymbol{"1D47B}{\mbfitT }{\mathalpha}{mathematical bold italic capital t}%
-\UnicodeMathSymbol{"1D47C}{\mbfitU }{\mathalpha}{mathematical bold italic capital u}%
-\UnicodeMathSymbol{"1D47D}{\mbfitV }{\mathalpha}{mathematical bold italic capital v}%
-\UnicodeMathSymbol{"1D47E}{\mbfitW }{\mathalpha}{mathematical bold italic capital w}%
-\UnicodeMathSymbol{"1D47F}{\mbfitX }{\mathalpha}{mathematical bold italic capital x}%
-\UnicodeMathSymbol{"1D480}{\mbfitY }{\mathalpha}{mathematical bold italic capital y}%
-\UnicodeMathSymbol{"1D481}{\mbfitZ }{\mathalpha}{mathematical bold italic capital z}%
-\UnicodeMathSymbol{"1D482}{\mbfita }{\mathalpha}{mathematical bold italic small a}%
-\UnicodeMathSymbol{"1D483}{\mbfitb }{\mathalpha}{mathematical bold italic small b}%
-\UnicodeMathSymbol{"1D484}{\mbfitc }{\mathalpha}{mathematical bold italic small c}%
-\UnicodeMathSymbol{"1D485}{\mbfitd }{\mathalpha}{mathematical bold italic small d}%
-\UnicodeMathSymbol{"1D486}{\mbfite }{\mathalpha}{mathematical bold italic small e}%
-\UnicodeMathSymbol{"1D487}{\mbfitf }{\mathalpha}{mathematical bold italic small f}%
-\UnicodeMathSymbol{"1D488}{\mbfitg }{\mathalpha}{mathematical bold italic small g}%
-\UnicodeMathSymbol{"1D489}{\mbfith }{\mathalpha}{mathematical bold italic small h}%
-\UnicodeMathSymbol{"1D48A}{\mbfiti }{\mathalpha}{mathematical bold italic small i}%
-\UnicodeMathSymbol{"1D48B}{\mbfitj }{\mathalpha}{mathematical bold italic small j}%
-\UnicodeMathSymbol{"1D48C}{\mbfitk }{\mathalpha}{mathematical bold italic small k}%
-\UnicodeMathSymbol{"1D48D}{\mbfitl }{\mathalpha}{mathematical bold italic small l}%
-\UnicodeMathSymbol{"1D48E}{\mbfitm }{\mathalpha}{mathematical bold italic small m}%
-\UnicodeMathSymbol{"1D48F}{\mbfitn }{\mathalpha}{mathematical bold italic small n}%
-\UnicodeMathSymbol{"1D490}{\mbfito }{\mathalpha}{mathematical bold italic small o}%
-\UnicodeMathSymbol{"1D491}{\mbfitp }{\mathalpha}{mathematical bold italic small p}%
-\UnicodeMathSymbol{"1D492}{\mbfitq }{\mathalpha}{mathematical bold italic small q}%
-\UnicodeMathSymbol{"1D493}{\mbfitr }{\mathalpha}{mathematical bold italic small r}%
-\UnicodeMathSymbol{"1D494}{\mbfits }{\mathalpha}{mathematical bold italic small s}%
-\UnicodeMathSymbol{"1D495}{\mbfitt }{\mathalpha}{mathematical bold italic small t}%
-\UnicodeMathSymbol{"1D496}{\mbfitu }{\mathalpha}{mathematical bold italic small u}%
-\UnicodeMathSymbol{"1D497}{\mbfitv }{\mathalpha}{mathematical bold italic small v}%
-\UnicodeMathSymbol{"1D498}{\mbfitw }{\mathalpha}{mathematical bold italic small w}%
-\UnicodeMathSymbol{"1D499}{\mbfitx }{\mathalpha}{mathematical bold italic small x}%
-\UnicodeMathSymbol{"1D49A}{\mbfity }{\mathalpha}{mathematical bold italic small y}%
-\UnicodeMathSymbol{"1D49B}{\mbfitz }{\mathalpha}{mathematical bold italic small z}%
-\UnicodeMathSymbol{"1D49C}{\mscrA }{\mathalpha}{mathematical script capital a}%
-\UnicodeMathSymbol{"1D49E}{\mscrC }{\mathalpha}{mathematical script capital c}%
-\UnicodeMathSymbol{"1D49F}{\mscrD }{\mathalpha}{mathematical script capital d}%
-\UnicodeMathSymbol{"1D4A2}{\mscrG }{\mathalpha}{mathematical script capital g}%
-\UnicodeMathSymbol{"1D4A5}{\mscrJ }{\mathalpha}{mathematical script capital j}%
-\UnicodeMathSymbol{"1D4A6}{\mscrK }{\mathalpha}{mathematical script capital k}%
-\UnicodeMathSymbol{"1D4A9}{\mscrN }{\mathalpha}{mathematical script capital n}%
-\UnicodeMathSymbol{"1D4AA}{\mscrO }{\mathalpha}{mathematical script capital o}%
-\UnicodeMathSymbol{"1D4AB}{\mscrP }{\mathalpha}{mathematical script capital p}%
-\UnicodeMathSymbol{"1D4AC}{\mscrQ }{\mathalpha}{mathematical script capital q}%
-\UnicodeMathSymbol{"1D4AE}{\mscrS }{\mathalpha}{mathematical script capital s}%
-\UnicodeMathSymbol{"1D4AF}{\mscrT }{\mathalpha}{mathematical script capital t}%
-\UnicodeMathSymbol{"1D4B0}{\mscrU }{\mathalpha}{mathematical script capital u}%
-\UnicodeMathSymbol{"1D4B1}{\mscrV }{\mathalpha}{mathematical script capital v}%
-\UnicodeMathSymbol{"1D4B2}{\mscrW }{\mathalpha}{mathematical script capital w}%
-\UnicodeMathSymbol{"1D4B3}{\mscrX }{\mathalpha}{mathematical script capital x}%
-\UnicodeMathSymbol{"1D4B4}{\mscrY }{\mathalpha}{mathematical script capital y}%
-\UnicodeMathSymbol{"1D4B5}{\mscrZ }{\mathalpha}{mathematical script capital z}%
-\UnicodeMathSymbol{"1D4B6}{\mscra }{\mathalpha}{mathematical script small a}%
-\UnicodeMathSymbol{"1D4B7}{\mscrb }{\mathalpha}{mathematical script small b}%
-\UnicodeMathSymbol{"1D4B8}{\mscrc }{\mathalpha}{mathematical script small c}%
-\UnicodeMathSymbol{"1D4B9}{\mscrd }{\mathalpha}{mathematical script small d}%
-\UnicodeMathSymbol{"1D4BB}{\mscrf }{\mathalpha}{mathematical script small f}%
-\UnicodeMathSymbol{"1D4BD}{\mscrh }{\mathalpha}{mathematical script small h}%
-\UnicodeMathSymbol{"1D4BE}{\mscri }{\mathalpha}{mathematical script small i}%
-\UnicodeMathSymbol{"1D4BF}{\mscrj }{\mathalpha}{mathematical script small j}%
-\UnicodeMathSymbol{"1D4C0}{\mscrk }{\mathalpha}{mathematical script small k}%
-\UnicodeMathSymbol{"1D4C1}{\mscrl }{\mathalpha}{mathematical script small l}%
-\UnicodeMathSymbol{"1D4C2}{\mscrm }{\mathalpha}{mathematical script small m}%
-\UnicodeMathSymbol{"1D4C3}{\mscrn }{\mathalpha}{mathematical script small n}%
-\UnicodeMathSymbol{"1D4C5}{\mscrp }{\mathalpha}{mathematical script small p}%
-\UnicodeMathSymbol{"1D4C6}{\mscrq }{\mathalpha}{mathematical script small q}%
-\UnicodeMathSymbol{"1D4C7}{\mscrr }{\mathalpha}{mathematical script small r}%
-\UnicodeMathSymbol{"1D4C8}{\mscrs }{\mathalpha}{mathematical script small s}%
-\UnicodeMathSymbol{"1D4C9}{\mscrt }{\mathalpha}{mathematical script small t}%
-\UnicodeMathSymbol{"1D4CA}{\mscru }{\mathalpha}{mathematical script small u}%
-\UnicodeMathSymbol{"1D4CB}{\mscrv }{\mathalpha}{mathematical script small v}%
-\UnicodeMathSymbol{"1D4CC}{\mscrw }{\mathalpha}{mathematical script small w}%
-\UnicodeMathSymbol{"1D4CD}{\mscrx }{\mathalpha}{mathematical script small x}%
-\UnicodeMathSymbol{"1D4CE}{\mscry }{\mathalpha}{mathematical script small y}%
-\UnicodeMathSymbol{"1D4CF}{\mscrz }{\mathalpha}{mathematical script small z}%
-\UnicodeMathSymbol{"1D4D0}{\mbfscrA }{\mathalpha}{mathematical bold script capital a}%
-\UnicodeMathSymbol{"1D4D1}{\mbfscrB }{\mathalpha}{mathematical bold script capital b}%
-\UnicodeMathSymbol{"1D4D2}{\mbfscrC }{\mathalpha}{mathematical bold script capital c}%
-\UnicodeMathSymbol{"1D4D3}{\mbfscrD }{\mathalpha}{mathematical bold script capital d}%
-\UnicodeMathSymbol{"1D4D4}{\mbfscrE }{\mathalpha}{mathematical bold script capital e}%
-\UnicodeMathSymbol{"1D4D5}{\mbfscrF }{\mathalpha}{mathematical bold script capital f}%
-\UnicodeMathSymbol{"1D4D6}{\mbfscrG }{\mathalpha}{mathematical bold script capital g}%
-\UnicodeMathSymbol{"1D4D7}{\mbfscrH }{\mathalpha}{mathematical bold script capital h}%
-\UnicodeMathSymbol{"1D4D8}{\mbfscrI }{\mathalpha}{mathematical bold script capital i}%
-\UnicodeMathSymbol{"1D4D9}{\mbfscrJ }{\mathalpha}{mathematical bold script capital j}%
-\UnicodeMathSymbol{"1D4DA}{\mbfscrK }{\mathalpha}{mathematical bold script capital k}%
-\UnicodeMathSymbol{"1D4DB}{\mbfscrL }{\mathalpha}{mathematical bold script capital l}%
-\UnicodeMathSymbol{"1D4DC}{\mbfscrM }{\mathalpha}{mathematical bold script capital m}%
-\UnicodeMathSymbol{"1D4DD}{\mbfscrN }{\mathalpha}{mathematical bold script capital n}%
-\UnicodeMathSymbol{"1D4DE}{\mbfscrO }{\mathalpha}{mathematical bold script capital o}%
-\UnicodeMathSymbol{"1D4DF}{\mbfscrP }{\mathalpha}{mathematical bold script capital p}%
-\UnicodeMathSymbol{"1D4E0}{\mbfscrQ }{\mathalpha}{mathematical bold script capital q}%
-\UnicodeMathSymbol{"1D4E1}{\mbfscrR }{\mathalpha}{mathematical bold script capital r}%
-\UnicodeMathSymbol{"1D4E2}{\mbfscrS }{\mathalpha}{mathematical bold script capital s}%
-\UnicodeMathSymbol{"1D4E3}{\mbfscrT }{\mathalpha}{mathematical bold script capital t}%
-\UnicodeMathSymbol{"1D4E4}{\mbfscrU }{\mathalpha}{mathematical bold script capital u}%
-\UnicodeMathSymbol{"1D4E5}{\mbfscrV }{\mathalpha}{mathematical bold script capital v}%
-\UnicodeMathSymbol{"1D4E6}{\mbfscrW }{\mathalpha}{mathematical bold script capital w}%
-\UnicodeMathSymbol{"1D4E7}{\mbfscrX }{\mathalpha}{mathematical bold script capital x}%
-\UnicodeMathSymbol{"1D4E8}{\mbfscrY }{\mathalpha}{mathematical bold script capital y}%
-\UnicodeMathSymbol{"1D4E9}{\mbfscrZ }{\mathalpha}{mathematical bold script capital z}%
-\UnicodeMathSymbol{"1D4EA}{\mbfscra }{\mathalpha}{mathematical bold script small a}%
-\UnicodeMathSymbol{"1D4EB}{\mbfscrb }{\mathalpha}{mathematical bold script small b}%
-\UnicodeMathSymbol{"1D4EC}{\mbfscrc }{\mathalpha}{mathematical bold script small c}%
-\UnicodeMathSymbol{"1D4ED}{\mbfscrd }{\mathalpha}{mathematical bold script small d}%
-\UnicodeMathSymbol{"1D4EE}{\mbfscre }{\mathalpha}{mathematical bold script small e}%
-\UnicodeMathSymbol{"1D4EF}{\mbfscrf }{\mathalpha}{mathematical bold script small f}%
-\UnicodeMathSymbol{"1D4F0}{\mbfscrg }{\mathalpha}{mathematical bold script small g}%
-\UnicodeMathSymbol{"1D4F1}{\mbfscrh }{\mathalpha}{mathematical bold script small h}%
-\UnicodeMathSymbol{"1D4F2}{\mbfscri }{\mathalpha}{mathematical bold script small i}%
-\UnicodeMathSymbol{"1D4F3}{\mbfscrj }{\mathalpha}{mathematical bold script small j}%
-\UnicodeMathSymbol{"1D4F4}{\mbfscrk }{\mathalpha}{mathematical bold script small k}%
-\UnicodeMathSymbol{"1D4F5}{\mbfscrl }{\mathalpha}{mathematical bold script small l}%
-\UnicodeMathSymbol{"1D4F6}{\mbfscrm }{\mathalpha}{mathematical bold script small m}%
-\UnicodeMathSymbol{"1D4F7}{\mbfscrn }{\mathalpha}{mathematical bold script small n}%
-\UnicodeMathSymbol{"1D4F8}{\mbfscro }{\mathalpha}{mathematical bold script small o}%
-\UnicodeMathSymbol{"1D4F9}{\mbfscrp }{\mathalpha}{mathematical bold script small p}%
-\UnicodeMathSymbol{"1D4FA}{\mbfscrq }{\mathalpha}{mathematical bold script small q}%
-\UnicodeMathSymbol{"1D4FB}{\mbfscrr }{\mathalpha}{mathematical bold script small r}%
-\UnicodeMathSymbol{"1D4FC}{\mbfscrs }{\mathalpha}{mathematical bold script small s}%
-\UnicodeMathSymbol{"1D4FD}{\mbfscrt }{\mathalpha}{mathematical bold script small t}%
-\UnicodeMathSymbol{"1D4FE}{\mbfscru }{\mathalpha}{mathematical bold script small u}%
-\UnicodeMathSymbol{"1D4FF}{\mbfscrv }{\mathalpha}{mathematical bold script small v}%
-\UnicodeMathSymbol{"1D500}{\mbfscrw }{\mathalpha}{mathematical bold script small w}%
-\UnicodeMathSymbol{"1D501}{\mbfscrx }{\mathalpha}{mathematical bold script small x}%
-\UnicodeMathSymbol{"1D502}{\mbfscry }{\mathalpha}{mathematical bold script small y}%
-\UnicodeMathSymbol{"1D503}{\mbfscrz }{\mathalpha}{mathematical bold script small z}%
-\UnicodeMathSymbol{"1D504}{\mfrakA }{\mathalpha}{mathematical fraktur capital a}%
-\UnicodeMathSymbol{"1D505}{\mfrakB }{\mathalpha}{mathematical fraktur capital b}%
-\UnicodeMathSymbol{"1D507}{\mfrakD }{\mathalpha}{mathematical fraktur capital d}%
-\UnicodeMathSymbol{"1D508}{\mfrakE }{\mathalpha}{mathematical fraktur capital e}%
-\UnicodeMathSymbol{"1D509}{\mfrakF }{\mathalpha}{mathematical fraktur capital f}%
-\UnicodeMathSymbol{"1D50A}{\mfrakG }{\mathalpha}{mathematical fraktur capital g}%
-\UnicodeMathSymbol{"1D50D}{\mfrakJ }{\mathalpha}{mathematical fraktur capital j}%
-\UnicodeMathSymbol{"1D50E}{\mfrakK }{\mathalpha}{mathematical fraktur capital k}%
-\UnicodeMathSymbol{"1D50F}{\mfrakL }{\mathalpha}{mathematical fraktur capital l}%
-\UnicodeMathSymbol{"1D510}{\mfrakM }{\mathalpha}{mathematical fraktur capital m}%
-\UnicodeMathSymbol{"1D511}{\mfrakN }{\mathalpha}{mathematical fraktur capital n}%
-\UnicodeMathSymbol{"1D512}{\mfrakO }{\mathalpha}{mathematical fraktur capital o}%
-\UnicodeMathSymbol{"1D513}{\mfrakP }{\mathalpha}{mathematical fraktur capital p}%
-\UnicodeMathSymbol{"1D514}{\mfrakQ }{\mathalpha}{mathematical fraktur capital q}%
-\UnicodeMathSymbol{"1D516}{\mfrakS }{\mathalpha}{mathematical fraktur capital s}%
-\UnicodeMathSymbol{"1D517}{\mfrakT }{\mathalpha}{mathematical fraktur capital t}%
-\UnicodeMathSymbol{"1D518}{\mfrakU }{\mathalpha}{mathematical fraktur capital u}%
-\UnicodeMathSymbol{"1D519}{\mfrakV }{\mathalpha}{mathematical fraktur capital v}%
-\UnicodeMathSymbol{"1D51A}{\mfrakW }{\mathalpha}{mathematical fraktur capital w}%
-\UnicodeMathSymbol{"1D51B}{\mfrakX }{\mathalpha}{mathematical fraktur capital x}%
-\UnicodeMathSymbol{"1D51C}{\mfrakY }{\mathalpha}{mathematical fraktur capital y}%
-\UnicodeMathSymbol{"1D51E}{\mfraka }{\mathalpha}{mathematical fraktur small a}%
-\UnicodeMathSymbol{"1D51F}{\mfrakb }{\mathalpha}{mathematical fraktur small b}%
-\UnicodeMathSymbol{"1D520}{\mfrakc }{\mathalpha}{mathematical fraktur small c}%
-\UnicodeMathSymbol{"1D521}{\mfrakd }{\mathalpha}{mathematical fraktur small d}%
-\UnicodeMathSymbol{"1D522}{\mfrake }{\mathalpha}{mathematical fraktur small e}%
-\UnicodeMathSymbol{"1D523}{\mfrakf }{\mathalpha}{mathematical fraktur small f}%
-\UnicodeMathSymbol{"1D524}{\mfrakg }{\mathalpha}{mathematical fraktur small g}%
-\UnicodeMathSymbol{"1D525}{\mfrakh }{\mathalpha}{mathematical fraktur small h}%
-\UnicodeMathSymbol{"1D526}{\mfraki }{\mathalpha}{mathematical fraktur small i}%
-\UnicodeMathSymbol{"1D527}{\mfrakj }{\mathalpha}{mathematical fraktur small j}%
-\UnicodeMathSymbol{"1D528}{\mfrakk }{\mathalpha}{mathematical fraktur small k}%
-\UnicodeMathSymbol{"1D529}{\mfrakl }{\mathalpha}{mathematical fraktur small l}%
-\UnicodeMathSymbol{"1D52A}{\mfrakm }{\mathalpha}{mathematical fraktur small m}%
-\UnicodeMathSymbol{"1D52B}{\mfrakn }{\mathalpha}{mathematical fraktur small n}%
-\UnicodeMathSymbol{"1D52C}{\mfrako }{\mathalpha}{mathematical fraktur small o}%
-\UnicodeMathSymbol{"1D52D}{\mfrakp }{\mathalpha}{mathematical fraktur small p}%
-\UnicodeMathSymbol{"1D52E}{\mfrakq }{\mathalpha}{mathematical fraktur small q}%
-\UnicodeMathSymbol{"1D52F}{\mfrakr }{\mathalpha}{mathematical fraktur small r}%
-\UnicodeMathSymbol{"1D530}{\mfraks }{\mathalpha}{mathematical fraktur small s}%
-\UnicodeMathSymbol{"1D531}{\mfrakt }{\mathalpha}{mathematical fraktur small t}%
-\UnicodeMathSymbol{"1D532}{\mfraku }{\mathalpha}{mathematical fraktur small u}%
-\UnicodeMathSymbol{"1D533}{\mfrakv }{\mathalpha}{mathematical fraktur small v}%
-\UnicodeMathSymbol{"1D534}{\mfrakw }{\mathalpha}{mathematical fraktur small w}%
-\UnicodeMathSymbol{"1D535}{\mfrakx }{\mathalpha}{mathematical fraktur small x}%
-\UnicodeMathSymbol{"1D536}{\mfraky }{\mathalpha}{mathematical fraktur small y}%
-\UnicodeMathSymbol{"1D537}{\mfrakz }{\mathalpha}{mathematical fraktur small z}%
-\UnicodeMathSymbol{"1D538}{\BbbA }{\mathalpha}{mathematical double-struck capital a}%
-\UnicodeMathSymbol{"1D539}{\BbbB }{\mathalpha}{mathematical double-struck capital b}%
-\UnicodeMathSymbol{"1D53B}{\BbbD }{\mathalpha}{mathematical double-struck capital d}%
-\UnicodeMathSymbol{"1D53C}{\BbbE }{\mathalpha}{mathematical double-struck capital e}%
-\UnicodeMathSymbol{"1D53D}{\BbbF }{\mathalpha}{mathematical double-struck capital f}%
-\UnicodeMathSymbol{"1D53E}{\BbbG }{\mathalpha}{mathematical double-struck capital g}%
-\UnicodeMathSymbol{"1D540}{\BbbI }{\mathalpha}{mathematical double-struck capital i}%
-\UnicodeMathSymbol{"1D541}{\BbbJ }{\mathalpha}{mathematical double-struck capital j}%
-\UnicodeMathSymbol{"1D542}{\BbbK }{\mathalpha}{mathematical double-struck capital k}%
-\UnicodeMathSymbol{"1D543}{\BbbL }{\mathalpha}{mathematical double-struck capital l}%
-\UnicodeMathSymbol{"1D544}{\BbbM }{\mathalpha}{mathematical double-struck capital m}%
-\UnicodeMathSymbol{"1D546}{\BbbO }{\mathalpha}{mathematical double-struck capital o}%
-\UnicodeMathSymbol{"1D54A}{\BbbS }{\mathalpha}{mathematical double-struck capital s}%
-\UnicodeMathSymbol{"1D54B}{\BbbT }{\mathalpha}{mathematical double-struck capital t}%
-\UnicodeMathSymbol{"1D54C}{\BbbU }{\mathalpha}{mathematical double-struck capital u}%
-\UnicodeMathSymbol{"1D54D}{\BbbV }{\mathalpha}{mathematical double-struck capital v}%
-\UnicodeMathSymbol{"1D54E}{\BbbW }{\mathalpha}{mathematical double-struck capital w}%
-\UnicodeMathSymbol{"1D54F}{\BbbX }{\mathalpha}{mathematical double-struck capital x}%
-\UnicodeMathSymbol{"1D550}{\BbbY }{\mathalpha}{mathematical double-struck capital y}%
-\UnicodeMathSymbol{"1D552}{\Bbba }{\mathalpha}{mathematical double-struck small a}%
-\UnicodeMathSymbol{"1D553}{\Bbbb }{\mathalpha}{mathematical double-struck small b}%
-\UnicodeMathSymbol{"1D554}{\Bbbc }{\mathalpha}{mathematical double-struck small c}%
-\UnicodeMathSymbol{"1D555}{\Bbbd }{\mathalpha}{mathematical double-struck small d}%
-\UnicodeMathSymbol{"1D556}{\Bbbe }{\mathalpha}{mathematical double-struck small e}%
-\UnicodeMathSymbol{"1D557}{\Bbbf }{\mathalpha}{mathematical double-struck small f}%
-\UnicodeMathSymbol{"1D558}{\Bbbg }{\mathalpha}{mathematical double-struck small g}%
-\UnicodeMathSymbol{"1D559}{\Bbbh }{\mathalpha}{mathematical double-struck small h}%
-\UnicodeMathSymbol{"1D55A}{\Bbbi }{\mathalpha}{mathematical double-struck small i}%
-\UnicodeMathSymbol{"1D55B}{\Bbbj }{\mathalpha}{mathematical double-struck small j}%
-\UnicodeMathSymbol{"1D55C}{\Bbbk }{\mathalpha}{mathematical double-struck small k}%
-\UnicodeMathSymbol{"1D55D}{\Bbbl }{\mathalpha}{mathematical double-struck small l}%
-\UnicodeMathSymbol{"1D55E}{\Bbbm }{\mathalpha}{mathematical double-struck small m}%
-\UnicodeMathSymbol{"1D55F}{\Bbbn }{\mathalpha}{mathematical double-struck small n}%
-\UnicodeMathSymbol{"1D560}{\Bbbo }{\mathalpha}{mathematical double-struck small o}%
-\UnicodeMathSymbol{"1D561}{\Bbbp }{\mathalpha}{mathematical double-struck small p}%
-\UnicodeMathSymbol{"1D562}{\Bbbq }{\mathalpha}{mathematical double-struck small q}%
-\UnicodeMathSymbol{"1D563}{\Bbbr }{\mathalpha}{mathematical double-struck small r}%
-\UnicodeMathSymbol{"1D564}{\Bbbs }{\mathalpha}{mathematical double-struck small s}%
-\UnicodeMathSymbol{"1D565}{\Bbbt }{\mathalpha}{mathematical double-struck small t}%
-\UnicodeMathSymbol{"1D566}{\Bbbu }{\mathalpha}{mathematical double-struck small u}%
-\UnicodeMathSymbol{"1D567}{\Bbbv }{\mathalpha}{mathematical double-struck small v}%
-\UnicodeMathSymbol{"1D568}{\Bbbw }{\mathalpha}{mathematical double-struck small w}%
-\UnicodeMathSymbol{"1D569}{\Bbbx }{\mathalpha}{mathematical double-struck small x}%
-\UnicodeMathSymbol{"1D56A}{\Bbby }{\mathalpha}{mathematical double-struck small y}%
-\UnicodeMathSymbol{"1D56B}{\Bbbz }{\mathalpha}{mathematical double-struck small z}%
-\UnicodeMathSymbol{"1D56C}{\mbffrakA }{\mathalpha}{mathematical bold fraktur capital a}%
-\UnicodeMathSymbol{"1D56D}{\mbffrakB }{\mathalpha}{mathematical bold fraktur capital b}%
-\UnicodeMathSymbol{"1D56E}{\mbffrakC }{\mathalpha}{mathematical bold fraktur capital c}%
-\UnicodeMathSymbol{"1D56F}{\mbffrakD }{\mathalpha}{mathematical bold fraktur capital d}%
-\UnicodeMathSymbol{"1D570}{\mbffrakE }{\mathalpha}{mathematical bold fraktur capital e}%
-\UnicodeMathSymbol{"1D571}{\mbffrakF }{\mathalpha}{mathematical bold fraktur capital f}%
-\UnicodeMathSymbol{"1D572}{\mbffrakG }{\mathalpha}{mathematical bold fraktur capital g}%
-\UnicodeMathSymbol{"1D573}{\mbffrakH }{\mathalpha}{mathematical bold fraktur capital h}%
-\UnicodeMathSymbol{"1D574}{\mbffrakI }{\mathalpha}{mathematical bold fraktur capital i}%
-\UnicodeMathSymbol{"1D575}{\mbffrakJ }{\mathalpha}{mathematical bold fraktur capital j}%
-\UnicodeMathSymbol{"1D576}{\mbffrakK }{\mathalpha}{mathematical bold fraktur capital k}%
-\UnicodeMathSymbol{"1D577}{\mbffrakL }{\mathalpha}{mathematical bold fraktur capital l}%
-\UnicodeMathSymbol{"1D578}{\mbffrakM }{\mathalpha}{mathematical bold fraktur capital m}%
-\UnicodeMathSymbol{"1D579}{\mbffrakN }{\mathalpha}{mathematical bold fraktur capital n}%
-\UnicodeMathSymbol{"1D57A}{\mbffrakO }{\mathalpha}{mathematical bold fraktur capital o}%
-\UnicodeMathSymbol{"1D57B}{\mbffrakP }{\mathalpha}{mathematical bold fraktur capital p}%
-\UnicodeMathSymbol{"1D57C}{\mbffrakQ }{\mathalpha}{mathematical bold fraktur capital q}%
-\UnicodeMathSymbol{"1D57D}{\mbffrakR }{\mathalpha}{mathematical bold fraktur capital r}%
-\UnicodeMathSymbol{"1D57E}{\mbffrakS }{\mathalpha}{mathematical bold fraktur capital s}%
-\UnicodeMathSymbol{"1D57F}{\mbffrakT }{\mathalpha}{mathematical bold fraktur capital t}%
-\UnicodeMathSymbol{"1D580}{\mbffrakU }{\mathalpha}{mathematical bold fraktur capital u}%
-\UnicodeMathSymbol{"1D581}{\mbffrakV }{\mathalpha}{mathematical bold fraktur capital v}%
-\UnicodeMathSymbol{"1D582}{\mbffrakW }{\mathalpha}{mathematical bold fraktur capital w}%
-\UnicodeMathSymbol{"1D583}{\mbffrakX }{\mathalpha}{mathematical bold fraktur capital x}%
-\UnicodeMathSymbol{"1D584}{\mbffrakY }{\mathalpha}{mathematical bold fraktur capital y}%
-\UnicodeMathSymbol{"1D585}{\mbffrakZ }{\mathalpha}{mathematical bold fraktur capital z}%
-\UnicodeMathSymbol{"1D586}{\mbffraka }{\mathalpha}{mathematical bold fraktur small a}%
-\UnicodeMathSymbol{"1D587}{\mbffrakb }{\mathalpha}{mathematical bold fraktur small b}%
-\UnicodeMathSymbol{"1D588}{\mbffrakc }{\mathalpha}{mathematical bold fraktur small c}%
-\UnicodeMathSymbol{"1D589}{\mbffrakd }{\mathalpha}{mathematical bold fraktur small d}%
-\UnicodeMathSymbol{"1D58A}{\mbffrake }{\mathalpha}{mathematical bold fraktur small e}%
-\UnicodeMathSymbol{"1D58B}{\mbffrakf }{\mathalpha}{mathematical bold fraktur small f}%
-\UnicodeMathSymbol{"1D58C}{\mbffrakg }{\mathalpha}{mathematical bold fraktur small g}%
-\UnicodeMathSymbol{"1D58D}{\mbffrakh }{\mathalpha}{mathematical bold fraktur small h}%
-\UnicodeMathSymbol{"1D58E}{\mbffraki }{\mathalpha}{mathematical bold fraktur small i}%
-\UnicodeMathSymbol{"1D58F}{\mbffrakj }{\mathalpha}{mathematical bold fraktur small j}%
-\UnicodeMathSymbol{"1D590}{\mbffrakk }{\mathalpha}{mathematical bold fraktur small k}%
-\UnicodeMathSymbol{"1D591}{\mbffrakl }{\mathalpha}{mathematical bold fraktur small l}%
-\UnicodeMathSymbol{"1D592}{\mbffrakm }{\mathalpha}{mathematical bold fraktur small m}%
-\UnicodeMathSymbol{"1D593}{\mbffrakn }{\mathalpha}{mathematical bold fraktur small n}%
-\UnicodeMathSymbol{"1D594}{\mbffrako }{\mathalpha}{mathematical bold fraktur small o}%
-\UnicodeMathSymbol{"1D595}{\mbffrakp }{\mathalpha}{mathematical bold fraktur small p}%
-\UnicodeMathSymbol{"1D596}{\mbffrakq }{\mathalpha}{mathematical bold fraktur small q}%
-\UnicodeMathSymbol{"1D597}{\mbffrakr }{\mathalpha}{mathematical bold fraktur small r}%
-\UnicodeMathSymbol{"1D598}{\mbffraks }{\mathalpha}{mathematical bold fraktur small s}%
-\UnicodeMathSymbol{"1D599}{\mbffrakt }{\mathalpha}{mathematical bold fraktur small t}%
-\UnicodeMathSymbol{"1D59A}{\mbffraku }{\mathalpha}{mathematical bold fraktur small u}%
-\UnicodeMathSymbol{"1D59B}{\mbffrakv }{\mathalpha}{mathematical bold fraktur small v}%
-\UnicodeMathSymbol{"1D59C}{\mbffrakw }{\mathalpha}{mathematical bold fraktur small w}%
-\UnicodeMathSymbol{"1D59D}{\mbffrakx }{\mathalpha}{mathematical bold fraktur small x}%
-\UnicodeMathSymbol{"1D59E}{\mbffraky }{\mathalpha}{mathematical bold fraktur small y}%
-\UnicodeMathSymbol{"1D59F}{\mbffrakz }{\mathalpha}{mathematical bold fraktur small z}%
-\UnicodeMathSymbol{"1D5A0}{\msansA }{\mathalpha}{mathematical sans-serif capital a}%
-\UnicodeMathSymbol{"1D5A1}{\msansB }{\mathalpha}{mathematical sans-serif capital b}%
-\UnicodeMathSymbol{"1D5A2}{\msansC }{\mathalpha}{mathematical sans-serif capital c}%
-\UnicodeMathSymbol{"1D5A3}{\msansD }{\mathalpha}{mathematical sans-serif capital d}%
-\UnicodeMathSymbol{"1D5A4}{\msansE }{\mathalpha}{mathematical sans-serif capital e}%
-\UnicodeMathSymbol{"1D5A5}{\msansF }{\mathalpha}{mathematical sans-serif capital f}%
-\UnicodeMathSymbol{"1D5A6}{\msansG }{\mathalpha}{mathematical sans-serif capital g}%
-\UnicodeMathSymbol{"1D5A7}{\msansH }{\mathalpha}{mathematical sans-serif capital h}%
-\UnicodeMathSymbol{"1D5A8}{\msansI }{\mathalpha}{mathematical sans-serif capital i}%
-\UnicodeMathSymbol{"1D5A9}{\msansJ }{\mathalpha}{mathematical sans-serif capital j}%
-\UnicodeMathSymbol{"1D5AA}{\msansK }{\mathalpha}{mathematical sans-serif capital k}%
-\UnicodeMathSymbol{"1D5AB}{\msansL }{\mathalpha}{mathematical sans-serif capital l}%
-\UnicodeMathSymbol{"1D5AC}{\msansM }{\mathalpha}{mathematical sans-serif capital m}%
-\UnicodeMathSymbol{"1D5AD}{\msansN }{\mathalpha}{mathematical sans-serif capital n}%
-\UnicodeMathSymbol{"1D5AE}{\msansO }{\mathalpha}{mathematical sans-serif capital o}%
-\UnicodeMathSymbol{"1D5AF}{\msansP }{\mathalpha}{mathematical sans-serif capital p}%
-\UnicodeMathSymbol{"1D5B0}{\msansQ }{\mathalpha}{mathematical sans-serif capital q}%
-\UnicodeMathSymbol{"1D5B1}{\msansR }{\mathalpha}{mathematical sans-serif capital r}%
-\UnicodeMathSymbol{"1D5B2}{\msansS }{\mathalpha}{mathematical sans-serif capital s}%
-\UnicodeMathSymbol{"1D5B3}{\msansT }{\mathalpha}{mathematical sans-serif capital t}%
-\UnicodeMathSymbol{"1D5B4}{\msansU }{\mathalpha}{mathematical sans-serif capital u}%
-\UnicodeMathSymbol{"1D5B5}{\msansV }{\mathalpha}{mathematical sans-serif capital v}%
-\UnicodeMathSymbol{"1D5B6}{\msansW }{\mathalpha}{mathematical sans-serif capital w}%
-\UnicodeMathSymbol{"1D5B7}{\msansX }{\mathalpha}{mathematical sans-serif capital x}%
-\UnicodeMathSymbol{"1D5B8}{\msansY }{\mathalpha}{mathematical sans-serif capital y}%
-\UnicodeMathSymbol{"1D5B9}{\msansZ }{\mathalpha}{mathematical sans-serif capital z}%
-\UnicodeMathSymbol{"1D5BA}{\msansa }{\mathalpha}{mathematical sans-serif small a}%
-\UnicodeMathSymbol{"1D5BB}{\msansb }{\mathalpha}{mathematical sans-serif small b}%
-\UnicodeMathSymbol{"1D5BC}{\msansc }{\mathalpha}{mathematical sans-serif small c}%
-\UnicodeMathSymbol{"1D5BD}{\msansd }{\mathalpha}{mathematical sans-serif small d}%
-\UnicodeMathSymbol{"1D5BE}{\msanse }{\mathalpha}{mathematical sans-serif small e}%
-\UnicodeMathSymbol{"1D5BF}{\msansf }{\mathalpha}{mathematical sans-serif small f}%
-\UnicodeMathSymbol{"1D5C0}{\msansg }{\mathalpha}{mathematical sans-serif small g}%
-\UnicodeMathSymbol{"1D5C1}{\msansh }{\mathalpha}{mathematical sans-serif small h}%
-\UnicodeMathSymbol{"1D5C2}{\msansi }{\mathalpha}{mathematical sans-serif small i}%
-\UnicodeMathSymbol{"1D5C3}{\msansj }{\mathalpha}{mathematical sans-serif small j}%
-\UnicodeMathSymbol{"1D5C4}{\msansk }{\mathalpha}{mathematical sans-serif small k}%
-\UnicodeMathSymbol{"1D5C5}{\msansl }{\mathalpha}{mathematical sans-serif small l}%
-\UnicodeMathSymbol{"1D5C6}{\msansm }{\mathalpha}{mathematical sans-serif small m}%
-\UnicodeMathSymbol{"1D5C7}{\msansn }{\mathalpha}{mathematical sans-serif small n}%
-\UnicodeMathSymbol{"1D5C8}{\msanso }{\mathalpha}{mathematical sans-serif small o}%
-\UnicodeMathSymbol{"1D5C9}{\msansp }{\mathalpha}{mathematical sans-serif small p}%
-\UnicodeMathSymbol{"1D5CA}{\msansq }{\mathalpha}{mathematical sans-serif small q}%
-\UnicodeMathSymbol{"1D5CB}{\msansr }{\mathalpha}{mathematical sans-serif small r}%
-\UnicodeMathSymbol{"1D5CC}{\msanss }{\mathalpha}{mathematical sans-serif small s}%
-\UnicodeMathSymbol{"1D5CD}{\msanst }{\mathalpha}{mathematical sans-serif small t}%
-\UnicodeMathSymbol{"1D5CE}{\msansu }{\mathalpha}{mathematical sans-serif small u}%
-\UnicodeMathSymbol{"1D5CF}{\msansv }{\mathalpha}{mathematical sans-serif small v}%
-\UnicodeMathSymbol{"1D5D0}{\msansw }{\mathalpha}{mathematical sans-serif small w}%
-\UnicodeMathSymbol{"1D5D1}{\msansx }{\mathalpha}{mathematical sans-serif small x}%
-\UnicodeMathSymbol{"1D5D2}{\msansy }{\mathalpha}{mathematical sans-serif small y}%
-\UnicodeMathSymbol{"1D5D3}{\msansz }{\mathalpha}{mathematical sans-serif small z}%
-\UnicodeMathSymbol{"1D5D4}{\mbfsansA }{\mathalpha}{mathematical sans-serif bold capital a}%
-\UnicodeMathSymbol{"1D5D5}{\mbfsansB }{\mathalpha}{mathematical sans-serif bold capital b}%
-\UnicodeMathSymbol{"1D5D6}{\mbfsansC }{\mathalpha}{mathematical sans-serif bold capital c}%
-\UnicodeMathSymbol{"1D5D7}{\mbfsansD }{\mathalpha}{mathematical sans-serif bold capital d}%
-\UnicodeMathSymbol{"1D5D8}{\mbfsansE }{\mathalpha}{mathematical sans-serif bold capital e}%
-\UnicodeMathSymbol{"1D5D9}{\mbfsansF }{\mathalpha}{mathematical sans-serif bold capital f}%
-\UnicodeMathSymbol{"1D5DA}{\mbfsansG }{\mathalpha}{mathematical sans-serif bold capital g}%
-\UnicodeMathSymbol{"1D5DB}{\mbfsansH }{\mathalpha}{mathematical sans-serif bold capital h}%
-\UnicodeMathSymbol{"1D5DC}{\mbfsansI }{\mathalpha}{mathematical sans-serif bold capital i}%
-\UnicodeMathSymbol{"1D5DD}{\mbfsansJ }{\mathalpha}{mathematical sans-serif bold capital j}%
-\UnicodeMathSymbol{"1D5DE}{\mbfsansK }{\mathalpha}{mathematical sans-serif bold capital k}%
-\UnicodeMathSymbol{"1D5DF}{\mbfsansL }{\mathalpha}{mathematical sans-serif bold capital l}%
-\UnicodeMathSymbol{"1D5E0}{\mbfsansM }{\mathalpha}{mathematical sans-serif bold capital m}%
-\UnicodeMathSymbol{"1D5E1}{\mbfsansN }{\mathalpha}{mathematical sans-serif bold capital n}%
-\UnicodeMathSymbol{"1D5E2}{\mbfsansO }{\mathalpha}{mathematical sans-serif bold capital o}%
-\UnicodeMathSymbol{"1D5E3}{\mbfsansP }{\mathalpha}{mathematical sans-serif bold capital p}%
-\UnicodeMathSymbol{"1D5E4}{\mbfsansQ }{\mathalpha}{mathematical sans-serif bold capital q}%
-\UnicodeMathSymbol{"1D5E5}{\mbfsansR }{\mathalpha}{mathematical sans-serif bold capital r}%
-\UnicodeMathSymbol{"1D5E6}{\mbfsansS }{\mathalpha}{mathematical sans-serif bold capital s}%
-\UnicodeMathSymbol{"1D5E7}{\mbfsansT }{\mathalpha}{mathematical sans-serif bold capital t}%
-\UnicodeMathSymbol{"1D5E8}{\mbfsansU }{\mathalpha}{mathematical sans-serif bold capital u}%
-\UnicodeMathSymbol{"1D5E9}{\mbfsansV }{\mathalpha}{mathematical sans-serif bold capital v}%
-\UnicodeMathSymbol{"1D5EA}{\mbfsansW }{\mathalpha}{mathematical sans-serif bold capital w}%
-\UnicodeMathSymbol{"1D5EB}{\mbfsansX }{\mathalpha}{mathematical sans-serif bold capital x}%
-\UnicodeMathSymbol{"1D5EC}{\mbfsansY }{\mathalpha}{mathematical sans-serif bold capital y}%
-\UnicodeMathSymbol{"1D5ED}{\mbfsansZ }{\mathalpha}{mathematical sans-serif bold capital z}%
-\UnicodeMathSymbol{"1D5EE}{\mbfsansa }{\mathalpha}{mathematical sans-serif bold small a}%
-\UnicodeMathSymbol{"1D5EF}{\mbfsansb }{\mathalpha}{mathematical sans-serif bold small b}%
-\UnicodeMathSymbol{"1D5F0}{\mbfsansc }{\mathalpha}{mathematical sans-serif bold small c}%
-\UnicodeMathSymbol{"1D5F1}{\mbfsansd }{\mathalpha}{mathematical sans-serif bold small d}%
-\UnicodeMathSymbol{"1D5F2}{\mbfsanse }{\mathalpha}{mathematical sans-serif bold small e}%
-\UnicodeMathSymbol{"1D5F3}{\mbfsansf }{\mathalpha}{mathematical sans-serif bold small f}%
-\UnicodeMathSymbol{"1D5F4}{\mbfsansg }{\mathalpha}{mathematical sans-serif bold small g}%
-\UnicodeMathSymbol{"1D5F5}{\mbfsansh }{\mathalpha}{mathematical sans-serif bold small h}%
-\UnicodeMathSymbol{"1D5F6}{\mbfsansi }{\mathalpha}{mathematical sans-serif bold small i}%
-\UnicodeMathSymbol{"1D5F7}{\mbfsansj }{\mathalpha}{mathematical sans-serif bold small j}%
-\UnicodeMathSymbol{"1D5F8}{\mbfsansk }{\mathalpha}{mathematical sans-serif bold small k}%
-\UnicodeMathSymbol{"1D5F9}{\mbfsansl }{\mathalpha}{mathematical sans-serif bold small l}%
-\UnicodeMathSymbol{"1D5FA}{\mbfsansm }{\mathalpha}{mathematical sans-serif bold small m}%
-\UnicodeMathSymbol{"1D5FB}{\mbfsansn }{\mathalpha}{mathematical sans-serif bold small n}%
-\UnicodeMathSymbol{"1D5FC}{\mbfsanso }{\mathalpha}{mathematical sans-serif bold small o}%
-\UnicodeMathSymbol{"1D5FD}{\mbfsansp }{\mathalpha}{mathematical sans-serif bold small p}%
-\UnicodeMathSymbol{"1D5FE}{\mbfsansq }{\mathalpha}{mathematical sans-serif bold small q}%
-\UnicodeMathSymbol{"1D5FF}{\mbfsansr }{\mathalpha}{mathematical sans-serif bold small r}%
-\UnicodeMathSymbol{"1D600}{\mbfsanss }{\mathalpha}{mathematical sans-serif bold small s}%
-\UnicodeMathSymbol{"1D601}{\mbfsanst }{\mathalpha}{mathematical sans-serif bold small t}%
-\UnicodeMathSymbol{"1D602}{\mbfsansu }{\mathalpha}{mathematical sans-serif bold small u}%
-\UnicodeMathSymbol{"1D603}{\mbfsansv }{\mathalpha}{mathematical sans-serif bold small v}%
-\UnicodeMathSymbol{"1D604}{\mbfsansw }{\mathalpha}{mathematical sans-serif bold small w}%
-\UnicodeMathSymbol{"1D605}{\mbfsansx }{\mathalpha}{mathematical sans-serif bold small x}%
-\UnicodeMathSymbol{"1D606}{\mbfsansy }{\mathalpha}{mathematical sans-serif bold small y}%
-\UnicodeMathSymbol{"1D607}{\mbfsansz }{\mathalpha}{mathematical sans-serif bold small z}%
-\UnicodeMathSymbol{"1D608}{\mitsansA }{\mathalpha}{mathematical sans-serif italic capital a}%
-\UnicodeMathSymbol{"1D609}{\mitsansB }{\mathalpha}{mathematical sans-serif italic capital b}%
-\UnicodeMathSymbol{"1D60A}{\mitsansC }{\mathalpha}{mathematical sans-serif italic capital c}%
-\UnicodeMathSymbol{"1D60B}{\mitsansD }{\mathalpha}{mathematical sans-serif italic capital d}%
-\UnicodeMathSymbol{"1D60C}{\mitsansE }{\mathalpha}{mathematical sans-serif italic capital e}%
-\UnicodeMathSymbol{"1D60D}{\mitsansF }{\mathalpha}{mathematical sans-serif italic capital f}%
-\UnicodeMathSymbol{"1D60E}{\mitsansG }{\mathalpha}{mathematical sans-serif italic capital g}%
-\UnicodeMathSymbol{"1D60F}{\mitsansH }{\mathalpha}{mathematical sans-serif italic capital h}%
-\UnicodeMathSymbol{"1D610}{\mitsansI }{\mathalpha}{mathematical sans-serif italic capital i}%
-\UnicodeMathSymbol{"1D611}{\mitsansJ }{\mathalpha}{mathematical sans-serif italic capital j}%
-\UnicodeMathSymbol{"1D612}{\mitsansK }{\mathalpha}{mathematical sans-serif italic capital k}%
-\UnicodeMathSymbol{"1D613}{\mitsansL }{\mathalpha}{mathematical sans-serif italic capital l}%
-\UnicodeMathSymbol{"1D614}{\mitsansM }{\mathalpha}{mathematical sans-serif italic capital m}%
-\UnicodeMathSymbol{"1D615}{\mitsansN }{\mathalpha}{mathematical sans-serif italic capital n}%
-\UnicodeMathSymbol{"1D616}{\mitsansO }{\mathalpha}{mathematical sans-serif italic capital o}%
-\UnicodeMathSymbol{"1D617}{\mitsansP }{\mathalpha}{mathematical sans-serif italic capital p}%
-\UnicodeMathSymbol{"1D618}{\mitsansQ }{\mathalpha}{mathematical sans-serif italic capital q}%
-\UnicodeMathSymbol{"1D619}{\mitsansR }{\mathalpha}{mathematical sans-serif italic capital r}%
-\UnicodeMathSymbol{"1D61A}{\mitsansS }{\mathalpha}{mathematical sans-serif italic capital s}%
-\UnicodeMathSymbol{"1D61B}{\mitsansT }{\mathalpha}{mathematical sans-serif italic capital t}%
-\UnicodeMathSymbol{"1D61C}{\mitsansU }{\mathalpha}{mathematical sans-serif italic capital u}%
-\UnicodeMathSymbol{"1D61D}{\mitsansV }{\mathalpha}{mathematical sans-serif italic capital v}%
-\UnicodeMathSymbol{"1D61E}{\mitsansW }{\mathalpha}{mathematical sans-serif italic capital w}%
-\UnicodeMathSymbol{"1D61F}{\mitsansX }{\mathalpha}{mathematical sans-serif italic capital x}%
-\UnicodeMathSymbol{"1D620}{\mitsansY }{\mathalpha}{mathematical sans-serif italic capital y}%
-\UnicodeMathSymbol{"1D621}{\mitsansZ }{\mathalpha}{mathematical sans-serif italic capital z}%
-\UnicodeMathSymbol{"1D622}{\mitsansa }{\mathalpha}{mathematical sans-serif italic small a}%
-\UnicodeMathSymbol{"1D623}{\mitsansb }{\mathalpha}{mathematical sans-serif italic small b}%
-\UnicodeMathSymbol{"1D624}{\mitsansc }{\mathalpha}{mathematical sans-serif italic small c}%
-\UnicodeMathSymbol{"1D625}{\mitsansd }{\mathalpha}{mathematical sans-serif italic small d}%
-\UnicodeMathSymbol{"1D626}{\mitsanse }{\mathalpha}{mathematical sans-serif italic small e}%
-\UnicodeMathSymbol{"1D627}{\mitsansf }{\mathalpha}{mathematical sans-serif italic small f}%
-\UnicodeMathSymbol{"1D628}{\mitsansg }{\mathalpha}{mathematical sans-serif italic small g}%
-\UnicodeMathSymbol{"1D629}{\mitsansh }{\mathalpha}{mathematical sans-serif italic small h}%
-\UnicodeMathSymbol{"1D62A}{\mitsansi }{\mathalpha}{mathematical sans-serif italic small i}%
-\UnicodeMathSymbol{"1D62B}{\mitsansj }{\mathalpha}{mathematical sans-serif italic small j}%
-\UnicodeMathSymbol{"1D62C}{\mitsansk }{\mathalpha}{mathematical sans-serif italic small k}%
-\UnicodeMathSymbol{"1D62D}{\mitsansl }{\mathalpha}{mathematical sans-serif italic small l}%
-\UnicodeMathSymbol{"1D62E}{\mitsansm }{\mathalpha}{mathematical sans-serif italic small m}%
-\UnicodeMathSymbol{"1D62F}{\mitsansn }{\mathalpha}{mathematical sans-serif italic small n}%
-\UnicodeMathSymbol{"1D630}{\mitsanso }{\mathalpha}{mathematical sans-serif italic small o}%
-\UnicodeMathSymbol{"1D631}{\mitsansp }{\mathalpha}{mathematical sans-serif italic small p}%
-\UnicodeMathSymbol{"1D632}{\mitsansq }{\mathalpha}{mathematical sans-serif italic small q}%
-\UnicodeMathSymbol{"1D633}{\mitsansr }{\mathalpha}{mathematical sans-serif italic small r}%
-\UnicodeMathSymbol{"1D634}{\mitsanss }{\mathalpha}{mathematical sans-serif italic small s}%
-\UnicodeMathSymbol{"1D635}{\mitsanst }{\mathalpha}{mathematical sans-serif italic small t}%
-\UnicodeMathSymbol{"1D636}{\mitsansu }{\mathalpha}{mathematical sans-serif italic small u}%
-\UnicodeMathSymbol{"1D637}{\mitsansv }{\mathalpha}{mathematical sans-serif italic small v}%
-\UnicodeMathSymbol{"1D638}{\mitsansw }{\mathalpha}{mathematical sans-serif italic small w}%
-\UnicodeMathSymbol{"1D639}{\mitsansx }{\mathalpha}{mathematical sans-serif italic small x}%
-\UnicodeMathSymbol{"1D63A}{\mitsansy }{\mathalpha}{mathematical sans-serif italic small y}%
-\UnicodeMathSymbol{"1D63B}{\mitsansz }{\mathalpha}{mathematical sans-serif italic small z}%
-\UnicodeMathSymbol{"1D63C}{\mbfitsansA }{\mathalpha}{mathematical sans-serif bold italic capital a}%
-\UnicodeMathSymbol{"1D63D}{\mbfitsansB }{\mathalpha}{mathematical sans-serif bold italic capital b}%
-\UnicodeMathSymbol{"1D63E}{\mbfitsansC }{\mathalpha}{mathematical sans-serif bold italic capital c}%
-\UnicodeMathSymbol{"1D63F}{\mbfitsansD }{\mathalpha}{mathematical sans-serif bold italic capital d}%
-\UnicodeMathSymbol{"1D640}{\mbfitsansE }{\mathalpha}{mathematical sans-serif bold italic capital e}%
-\UnicodeMathSymbol{"1D641}{\mbfitsansF }{\mathalpha}{mathematical sans-serif bold italic capital f}%
-\UnicodeMathSymbol{"1D642}{\mbfitsansG }{\mathalpha}{mathematical sans-serif bold italic capital g}%
-\UnicodeMathSymbol{"1D643}{\mbfitsansH }{\mathalpha}{mathematical sans-serif bold italic capital h}%
-\UnicodeMathSymbol{"1D644}{\mbfitsansI }{\mathalpha}{mathematical sans-serif bold italic capital i}%
-\UnicodeMathSymbol{"1D645}{\mbfitsansJ }{\mathalpha}{mathematical sans-serif bold italic capital j}%
-\UnicodeMathSymbol{"1D646}{\mbfitsansK }{\mathalpha}{mathematical sans-serif bold italic capital k}%
-\UnicodeMathSymbol{"1D647}{\mbfitsansL }{\mathalpha}{mathematical sans-serif bold italic capital l}%
-\UnicodeMathSymbol{"1D648}{\mbfitsansM }{\mathalpha}{mathematical sans-serif bold italic capital m}%
-\UnicodeMathSymbol{"1D649}{\mbfitsansN }{\mathalpha}{mathematical sans-serif bold italic capital n}%
-\UnicodeMathSymbol{"1D64A}{\mbfitsansO }{\mathalpha}{mathematical sans-serif bold italic capital o}%
-\UnicodeMathSymbol{"1D64B}{\mbfitsansP }{\mathalpha}{mathematical sans-serif bold italic capital p}%
-\UnicodeMathSymbol{"1D64C}{\mbfitsansQ }{\mathalpha}{mathematical sans-serif bold italic capital q}%
-\UnicodeMathSymbol{"1D64D}{\mbfitsansR }{\mathalpha}{mathematical sans-serif bold italic capital r}%
-\UnicodeMathSymbol{"1D64E}{\mbfitsansS }{\mathalpha}{mathematical sans-serif bold italic capital s}%
-\UnicodeMathSymbol{"1D64F}{\mbfitsansT }{\mathalpha}{mathematical sans-serif bold italic capital t}%
-\UnicodeMathSymbol{"1D650}{\mbfitsansU }{\mathalpha}{mathematical sans-serif bold italic capital u}%
-\UnicodeMathSymbol{"1D651}{\mbfitsansV }{\mathalpha}{mathematical sans-serif bold italic capital v}%
-\UnicodeMathSymbol{"1D652}{\mbfitsansW }{\mathalpha}{mathematical sans-serif bold italic capital w}%
-\UnicodeMathSymbol{"1D653}{\mbfitsansX }{\mathalpha}{mathematical sans-serif bold italic capital x}%
-\UnicodeMathSymbol{"1D654}{\mbfitsansY }{\mathalpha}{mathematical sans-serif bold italic capital y}%
-\UnicodeMathSymbol{"1D655}{\mbfitsansZ }{\mathalpha}{mathematical sans-serif bold italic capital z}%
-\UnicodeMathSymbol{"1D656}{\mbfitsansa }{\mathalpha}{mathematical sans-serif bold italic small a}%
-\UnicodeMathSymbol{"1D657}{\mbfitsansb }{\mathalpha}{mathematical sans-serif bold italic small b}%
-\UnicodeMathSymbol{"1D658}{\mbfitsansc }{\mathalpha}{mathematical sans-serif bold italic small c}%
-\UnicodeMathSymbol{"1D659}{\mbfitsansd }{\mathalpha}{mathematical sans-serif bold italic small d}%
-\UnicodeMathSymbol{"1D65A}{\mbfitsanse }{\mathalpha}{mathematical sans-serif bold italic small e}%
-\UnicodeMathSymbol{"1D65B}{\mbfitsansf }{\mathalpha}{mathematical sans-serif bold italic small f}%
-\UnicodeMathSymbol{"1D65C}{\mbfitsansg }{\mathalpha}{mathematical sans-serif bold italic small g}%
-\UnicodeMathSymbol{"1D65D}{\mbfitsansh }{\mathalpha}{mathematical sans-serif bold italic small h}%
-\UnicodeMathSymbol{"1D65E}{\mbfitsansi }{\mathalpha}{mathematical sans-serif bold italic small i}%
-\UnicodeMathSymbol{"1D65F}{\mbfitsansj }{\mathalpha}{mathematical sans-serif bold italic small j}%
-\UnicodeMathSymbol{"1D660}{\mbfitsansk }{\mathalpha}{mathematical sans-serif bold italic small k}%
-\UnicodeMathSymbol{"1D661}{\mbfitsansl }{\mathalpha}{mathematical sans-serif bold italic small l}%
-\UnicodeMathSymbol{"1D662}{\mbfitsansm }{\mathalpha}{mathematical sans-serif bold italic small m}%
-\UnicodeMathSymbol{"1D663}{\mbfitsansn }{\mathalpha}{mathematical sans-serif bold italic small n}%
-\UnicodeMathSymbol{"1D664}{\mbfitsanso }{\mathalpha}{mathematical sans-serif bold italic small o}%
-\UnicodeMathSymbol{"1D665}{\mbfitsansp }{\mathalpha}{mathematical sans-serif bold italic small p}%
-\UnicodeMathSymbol{"1D666}{\mbfitsansq }{\mathalpha}{mathematical sans-serif bold italic small q}%
-\UnicodeMathSymbol{"1D667}{\mbfitsansr }{\mathalpha}{mathematical sans-serif bold italic small r}%
-\UnicodeMathSymbol{"1D668}{\mbfitsanss }{\mathalpha}{mathematical sans-serif bold italic small s}%
-\UnicodeMathSymbol{"1D669}{\mbfitsanst }{\mathalpha}{mathematical sans-serif bold italic small t}%
-\UnicodeMathSymbol{"1D66A}{\mbfitsansu }{\mathalpha}{mathematical sans-serif bold italic small u}%
-\UnicodeMathSymbol{"1D66B}{\mbfitsansv }{\mathalpha}{mathematical sans-serif bold italic small v}%
-\UnicodeMathSymbol{"1D66C}{\mbfitsansw }{\mathalpha}{mathematical sans-serif bold italic small w}%
-\UnicodeMathSymbol{"1D66D}{\mbfitsansx }{\mathalpha}{mathematical sans-serif bold italic small x}%
-\UnicodeMathSymbol{"1D66E}{\mbfitsansy }{\mathalpha}{mathematical sans-serif bold italic small y}%
-\UnicodeMathSymbol{"1D66F}{\mbfitsansz }{\mathalpha}{mathematical sans-serif bold italic small z}%
-\UnicodeMathSymbol{"1D670}{\mttA }{\mathalpha}{mathematical monospace capital a}%
-\UnicodeMathSymbol{"1D671}{\mttB }{\mathalpha}{mathematical monospace capital b}%
-\UnicodeMathSymbol{"1D672}{\mttC }{\mathalpha}{mathematical monospace capital c}%
-\UnicodeMathSymbol{"1D673}{\mttD }{\mathalpha}{mathematical monospace capital d}%
-\UnicodeMathSymbol{"1D674}{\mttE }{\mathalpha}{mathematical monospace capital e}%
-\UnicodeMathSymbol{"1D675}{\mttF }{\mathalpha}{mathematical monospace capital f}%
-\UnicodeMathSymbol{"1D676}{\mttG }{\mathalpha}{mathematical monospace capital g}%
-\UnicodeMathSymbol{"1D677}{\mttH }{\mathalpha}{mathematical monospace capital h}%
-\UnicodeMathSymbol{"1D678}{\mttI }{\mathalpha}{mathematical monospace capital i}%
-\UnicodeMathSymbol{"1D679}{\mttJ }{\mathalpha}{mathematical monospace capital j}%
-\UnicodeMathSymbol{"1D67A}{\mttK }{\mathalpha}{mathematical monospace capital k}%
-\UnicodeMathSymbol{"1D67B}{\mttL }{\mathalpha}{mathematical monospace capital l}%
-\UnicodeMathSymbol{"1D67C}{\mttM }{\mathalpha}{mathematical monospace capital m}%
-\UnicodeMathSymbol{"1D67D}{\mttN }{\mathalpha}{mathematical monospace capital n}%
-\UnicodeMathSymbol{"1D67E}{\mttO }{\mathalpha}{mathematical monospace capital o}%
-\UnicodeMathSymbol{"1D67F}{\mttP }{\mathalpha}{mathematical monospace capital p}%
-\UnicodeMathSymbol{"1D680}{\mttQ }{\mathalpha}{mathematical monospace capital q}%
-\UnicodeMathSymbol{"1D681}{\mttR }{\mathalpha}{mathematical monospace capital r}%
-\UnicodeMathSymbol{"1D682}{\mttS }{\mathalpha}{mathematical monospace capital s}%
-\UnicodeMathSymbol{"1D683}{\mttT }{\mathalpha}{mathematical monospace capital t}%
-\UnicodeMathSymbol{"1D684}{\mttU }{\mathalpha}{mathematical monospace capital u}%
-\UnicodeMathSymbol{"1D685}{\mttV }{\mathalpha}{mathematical monospace capital v}%
-\UnicodeMathSymbol{"1D686}{\mttW }{\mathalpha}{mathematical monospace capital w}%
-\UnicodeMathSymbol{"1D687}{\mttX }{\mathalpha}{mathematical monospace capital x}%
-\UnicodeMathSymbol{"1D688}{\mttY }{\mathalpha}{mathematical monospace capital y}%
-\UnicodeMathSymbol{"1D689}{\mttZ }{\mathalpha}{mathematical monospace capital z}%
-\UnicodeMathSymbol{"1D68A}{\mtta }{\mathalpha}{mathematical monospace small a}%
-\UnicodeMathSymbol{"1D68B}{\mttb }{\mathalpha}{mathematical monospace small b}%
-\UnicodeMathSymbol{"1D68C}{\mttc }{\mathalpha}{mathematical monospace small c}%
-\UnicodeMathSymbol{"1D68D}{\mttd }{\mathalpha}{mathematical monospace small d}%
-\UnicodeMathSymbol{"1D68E}{\mtte }{\mathalpha}{mathematical monospace small e}%
-\UnicodeMathSymbol{"1D68F}{\mttf }{\mathalpha}{mathematical monospace small f}%
-\UnicodeMathSymbol{"1D690}{\mttg }{\mathalpha}{mathematical monospace small g}%
-\UnicodeMathSymbol{"1D691}{\mtth }{\mathalpha}{mathematical monospace small h}%
-\UnicodeMathSymbol{"1D692}{\mtti }{\mathalpha}{mathematical monospace small i}%
-\UnicodeMathSymbol{"1D693}{\mttj }{\mathalpha}{mathematical monospace small j}%
-\UnicodeMathSymbol{"1D694}{\mttk }{\mathalpha}{mathematical monospace small k}%
-\UnicodeMathSymbol{"1D695}{\mttl }{\mathalpha}{mathematical monospace small l}%
-\UnicodeMathSymbol{"1D696}{\mttm }{\mathalpha}{mathematical monospace small m}%
-\UnicodeMathSymbol{"1D697}{\mttn }{\mathalpha}{mathematical monospace small n}%
-\UnicodeMathSymbol{"1D698}{\mtto }{\mathalpha}{mathematical monospace small o}%
-\UnicodeMathSymbol{"1D699}{\mttp }{\mathalpha}{mathematical monospace small p}%
-\UnicodeMathSymbol{"1D69A}{\mttq }{\mathalpha}{mathematical monospace small q}%
-\UnicodeMathSymbol{"1D69B}{\mttr }{\mathalpha}{mathematical monospace small r}%
-\UnicodeMathSymbol{"1D69C}{\mtts }{\mathalpha}{mathematical monospace small s}%
-\UnicodeMathSymbol{"1D69D}{\mttt }{\mathalpha}{mathematical monospace small t}%
-\UnicodeMathSymbol{"1D69E}{\mttu }{\mathalpha}{mathematical monospace small u}%
-\UnicodeMathSymbol{"1D69F}{\mttv }{\mathalpha}{mathematical monospace small v}%
-\UnicodeMathSymbol{"1D6A0}{\mttw }{\mathalpha}{mathematical monospace small w}%
-\UnicodeMathSymbol{"1D6A1}{\mttx }{\mathalpha}{mathematical monospace small x}%
-\UnicodeMathSymbol{"1D6A2}{\mtty }{\mathalpha}{mathematical monospace small y}%
-\UnicodeMathSymbol{"1D6A3}{\mttz }{\mathalpha}{mathematical monospace small z}%
-\UnicodeMathSymbol{"1D6A4}{\imath }{\mathalpha}{mathematical italic small dotless i}%
-\UnicodeMathSymbol{"1D6A5}{\jmath }{\mathalpha}{mathematical italic small dotless j}%
-\UnicodeMathSymbol{"1D6A8}{\mbfAlpha }{\mathalpha}{mathematical bold capital alpha}%
-\UnicodeMathSymbol{"1D6A9}{\mbfBeta }{\mathalpha}{mathematical bold capital beta}%
-\UnicodeMathSymbol{"1D6AA}{\mbfGamma }{\mathalpha}{mathematical bold capital gamma}%
-\UnicodeMathSymbol{"1D6AB}{\mbfDelta }{\mathalpha}{mathematical bold capital delta}%
-\UnicodeMathSymbol{"1D6AC}{\mbfEpsilon }{\mathalpha}{mathematical bold capital epsilon}%
-\UnicodeMathSymbol{"1D6AD}{\mbfZeta }{\mathalpha}{mathematical bold capital zeta}%
-\UnicodeMathSymbol{"1D6AE}{\mbfEta }{\mathalpha}{mathematical bold capital eta}%
-\UnicodeMathSymbol{"1D6AF}{\mbfTheta }{\mathalpha}{mathematical bold capital theta}%
-\UnicodeMathSymbol{"1D6B0}{\mbfIota }{\mathalpha}{mathematical bold capital iota}%
-\UnicodeMathSymbol{"1D6B1}{\mbfKappa }{\mathalpha}{mathematical bold capital kappa}%
-\UnicodeMathSymbol{"1D6B2}{\mbfLambda }{\mathalpha}{mathematical bold capital lambda}%
-\UnicodeMathSymbol{"1D6B3}{\mbfMu }{\mathalpha}{mathematical bold capital mu}%
-\UnicodeMathSymbol{"1D6B4}{\mbfNu }{\mathalpha}{mathematical bold capital nu}%
-\UnicodeMathSymbol{"1D6B5}{\mbfXi }{\mathalpha}{mathematical bold capital xi}%
-\UnicodeMathSymbol{"1D6B6}{\mbfOmicron }{\mathalpha}{mathematical bold capital omicron}%
-\UnicodeMathSymbol{"1D6B7}{\mbfPi }{\mathalpha}{mathematical bold capital pi}%
-\UnicodeMathSymbol{"1D6B8}{\mbfRho }{\mathalpha}{mathematical bold capital rho}%
-\UnicodeMathSymbol{"1D6B9}{\mbfvarTheta }{\mathalpha}{mathematical bold capital theta symbol}%
-\UnicodeMathSymbol{"1D6BA}{\mbfSigma }{\mathalpha}{mathematical bold capital sigma}%
-\UnicodeMathSymbol{"1D6BB}{\mbfTau }{\mathalpha}{mathematical bold capital tau}%
-\UnicodeMathSymbol{"1D6BC}{\mbfUpsilon }{\mathalpha}{mathematical bold capital upsilon}%
-\UnicodeMathSymbol{"1D6BD}{\mbfPhi }{\mathalpha}{mathematical bold capital phi}%
-\UnicodeMathSymbol{"1D6BE}{\mbfChi }{\mathalpha}{mathematical bold capital chi}%
-\UnicodeMathSymbol{"1D6BF}{\mbfPsi }{\mathalpha}{mathematical bold capital psi}%
-\UnicodeMathSymbol{"1D6C0}{\mbfOmega }{\mathalpha}{mathematical bold capital omega}%
-\UnicodeMathSymbol{"1D6C1}{\mbfnabla }{\mathalpha}{mathematical bold nabla}%
-\UnicodeMathSymbol{"1D6C2}{\mbfalpha }{\mathalpha}{mathematical bold small alpha}%
-\UnicodeMathSymbol{"1D6C3}{\mbfbeta }{\mathalpha}{mathematical bold small beta}%
-\UnicodeMathSymbol{"1D6C4}{\mbfgamma }{\mathalpha}{mathematical bold small gamma}%
-\UnicodeMathSymbol{"1D6C5}{\mbfdelta }{\mathalpha}{mathematical bold small delta}%
-\UnicodeMathSymbol{"1D6C6}{\mbfvarepsilon }{\mathalpha}{mathematical bold small varepsilon}%
-\UnicodeMathSymbol{"1D6C7}{\mbfzeta }{\mathalpha}{mathematical bold small zeta}%
-\UnicodeMathSymbol{"1D6C8}{\mbfeta }{\mathalpha}{mathematical bold small eta}%
-\UnicodeMathSymbol{"1D6C9}{\mbftheta }{\mathalpha}{mathematical bold small theta}%
-\UnicodeMathSymbol{"1D6CA}{\mbfiota }{\mathalpha}{mathematical bold small iota}%
-\UnicodeMathSymbol{"1D6CB}{\mbfkappa }{\mathalpha}{mathematical bold small kappa}%
-\UnicodeMathSymbol{"1D6CC}{\mbflambda }{\mathalpha}{mathematical bold small lambda}%
-\UnicodeMathSymbol{"1D6CD}{\mbfmu }{\mathalpha}{mathematical bold small mu}%
-\UnicodeMathSymbol{"1D6CE}{\mbfnu }{\mathalpha}{mathematical bold small nu}%
-\UnicodeMathSymbol{"1D6CF}{\mbfxi }{\mathalpha}{mathematical bold small xi}%
-\UnicodeMathSymbol{"1D6D0}{\mbfomicron }{\mathalpha}{mathematical bold small omicron}%
-\UnicodeMathSymbol{"1D6D1}{\mbfpi }{\mathalpha}{mathematical bold small pi}%
-\UnicodeMathSymbol{"1D6D2}{\mbfrho }{\mathalpha}{mathematical bold small rho}%
-\UnicodeMathSymbol{"1D6D3}{\mbfvarsigma }{\mathalpha}{mathematical bold small final sigma}%
-\UnicodeMathSymbol{"1D6D4}{\mbfsigma }{\mathalpha}{mathematical bold small sigma}%
-\UnicodeMathSymbol{"1D6D5}{\mbftau }{\mathalpha}{mathematical bold small tau}%
-\UnicodeMathSymbol{"1D6D6}{\mbfupsilon }{\mathalpha}{mathematical bold small upsilon}%
-\UnicodeMathSymbol{"1D6D7}{\mbfvarphi }{\mathalpha}{mathematical bold small phi}%
-\UnicodeMathSymbol{"1D6D8}{\mbfchi }{\mathalpha}{mathematical bold small chi}%
-\UnicodeMathSymbol{"1D6D9}{\mbfpsi }{\mathalpha}{mathematical bold small psi}%
-\UnicodeMathSymbol{"1D6DA}{\mbfomega }{\mathalpha}{mathematical bold small omega}%
-\UnicodeMathSymbol{"1D6DB}{\mbfpartial }{\mathalpha}{mathematical bold partial differential}%
-\UnicodeMathSymbol{"1D6DC}{\mbfepsilon }{\mathalpha}{mathematical bold varepsilon symbol}%
-\UnicodeMathSymbol{"1D6DD}{\mbfvartheta }{\mathalpha}{mathematical bold theta symbol}%
-\UnicodeMathSymbol{"1D6DE}{\mbfvarkappa }{\mathalpha}{mathematical bold kappa symbol}%
-\UnicodeMathSymbol{"1D6DF}{\mbfphi }{\mathalpha}{mathematical bold phi symbol}%
-\UnicodeMathSymbol{"1D6E0}{\mbfvarrho }{\mathalpha}{mathematical bold rho symbol}%
-\UnicodeMathSymbol{"1D6E1}{\mbfvarpi }{\mathalpha}{mathematical bold pi symbol}%
-\UnicodeMathSymbol{"1D6E2}{\mitAlpha }{\mathalpha}{mathematical italic capital alpha}%
-\UnicodeMathSymbol{"1D6E3}{\mitBeta }{\mathalpha}{mathematical italic capital beta}%
-\UnicodeMathSymbol{"1D6E4}{\mitGamma }{\mathalpha}{mathematical italic capital gamma}%
-\UnicodeMathSymbol{"1D6E5}{\mitDelta }{\mathalpha}{mathematical italic capital delta}%
-\UnicodeMathSymbol{"1D6E6}{\mitEpsilon }{\mathalpha}{mathematical italic capital epsilon}%
-\UnicodeMathSymbol{"1D6E7}{\mitZeta }{\mathalpha}{mathematical italic capital zeta}%
-\UnicodeMathSymbol{"1D6E8}{\mitEta }{\mathalpha}{mathematical italic capital eta}%
-\UnicodeMathSymbol{"1D6E9}{\mitTheta }{\mathalpha}{mathematical italic capital theta}%
-\UnicodeMathSymbol{"1D6EA}{\mitIota }{\mathalpha}{mathematical italic capital iota}%
-\UnicodeMathSymbol{"1D6EB}{\mitKappa }{\mathalpha}{mathematical italic capital kappa}%
-\UnicodeMathSymbol{"1D6EC}{\mitLambda }{\mathalpha}{mathematical italic capital lambda}%
-\UnicodeMathSymbol{"1D6ED}{\mitMu }{\mathalpha}{mathematical italic capital mu}%
-\UnicodeMathSymbol{"1D6EE}{\mitNu }{\mathalpha}{mathematical italic capital nu}%
-\UnicodeMathSymbol{"1D6EF}{\mitXi }{\mathalpha}{mathematical italic capital xi}%
-\UnicodeMathSymbol{"1D6F0}{\mitOmicron }{\mathalpha}{mathematical italic capital omicron}%
-\UnicodeMathSymbol{"1D6F1}{\mitPi }{\mathalpha}{mathematical italic capital pi}%
-\UnicodeMathSymbol{"1D6F2}{\mitRho }{\mathalpha}{mathematical italic capital rho}%
-\UnicodeMathSymbol{"1D6F3}{\mitvarTheta }{\mathalpha}{mathematical italic capital theta symbol}%
-\UnicodeMathSymbol{"1D6F4}{\mitSigma }{\mathalpha}{mathematical italic capital sigma}%
-\UnicodeMathSymbol{"1D6F5}{\mitTau }{\mathalpha}{mathematical italic capital tau}%
-\UnicodeMathSymbol{"1D6F6}{\mitUpsilon }{\mathalpha}{mathematical italic capital upsilon}%
-\UnicodeMathSymbol{"1D6F7}{\mitPhi }{\mathalpha}{mathematical italic capital phi}%
-\UnicodeMathSymbol{"1D6F8}{\mitChi }{\mathalpha}{mathematical italic capital chi}%
-\UnicodeMathSymbol{"1D6F9}{\mitPsi }{\mathalpha}{mathematical italic capital psi}%
-\UnicodeMathSymbol{"1D6FA}{\mitOmega }{\mathalpha}{mathematical italic capital omega}%
-\UnicodeMathSymbol{"1D6FB}{\mitnabla }{\mathalpha}{mathematical italic nabla}%
-\UnicodeMathSymbol{"1D6FC}{\mitalpha }{\mathalpha}{mathematical italic small alpha}%
-\UnicodeMathSymbol{"1D6FD}{\mitbeta }{\mathalpha}{mathematical italic small beta}%
-\UnicodeMathSymbol{"1D6FE}{\mitgamma }{\mathalpha}{mathematical italic small gamma}%
-\UnicodeMathSymbol{"1D6FF}{\mitdelta }{\mathalpha}{mathematical italic small delta}%
-\UnicodeMathSymbol{"1D700}{\mitvarepsilon }{\mathalpha}{mathematical italic small varepsilon}%
-\UnicodeMathSymbol{"1D701}{\mitzeta }{\mathalpha}{mathematical italic small zeta}%
-\UnicodeMathSymbol{"1D702}{\miteta }{\mathalpha}{mathematical italic small eta}%
-\UnicodeMathSymbol{"1D703}{\mittheta }{\mathalpha}{mathematical italic small theta}%
-\UnicodeMathSymbol{"1D704}{\mitiota }{\mathalpha}{mathematical italic small iota}%
-\UnicodeMathSymbol{"1D705}{\mitkappa }{\mathalpha}{mathematical italic small kappa}%
-\UnicodeMathSymbol{"1D706}{\mitlambda }{\mathalpha}{mathematical italic small lambda}%
-\UnicodeMathSymbol{"1D707}{\mitmu }{\mathalpha}{mathematical italic small mu}%
-\UnicodeMathSymbol{"1D708}{\mitnu }{\mathalpha}{mathematical italic small nu}%
-\UnicodeMathSymbol{"1D709}{\mitxi }{\mathalpha}{mathematical italic small xi}%
-\UnicodeMathSymbol{"1D70A}{\mitomicron }{\mathalpha}{mathematical italic small omicron}%
-\UnicodeMathSymbol{"1D70B}{\mitpi }{\mathalpha}{mathematical italic small pi}%
-\UnicodeMathSymbol{"1D70C}{\mitrho }{\mathalpha}{mathematical italic small rho}%
-\UnicodeMathSymbol{"1D70D}{\mitvarsigma }{\mathalpha}{mathematical italic small final sigma}%
-\UnicodeMathSymbol{"1D70E}{\mitsigma }{\mathalpha}{mathematical italic small sigma}%
-\UnicodeMathSymbol{"1D70F}{\mittau }{\mathalpha}{mathematical italic small tau}%
-\UnicodeMathSymbol{"1D710}{\mitupsilon }{\mathalpha}{mathematical italic small upsilon}%
-\UnicodeMathSymbol{"1D711}{\mitvarphi }{\mathalpha}{mathematical italic small phi}%
-\UnicodeMathSymbol{"1D712}{\mitchi }{\mathalpha}{mathematical italic small chi}%
-\UnicodeMathSymbol{"1D713}{\mitpsi }{\mathalpha}{mathematical italic small psi}%
-\UnicodeMathSymbol{"1D714}{\mitomega }{\mathalpha}{mathematical italic small omega}%
-\UnicodeMathSymbol{"1D715}{\mitpartial }{\mathalpha}{mathematical italic partial differential}%
-\UnicodeMathSymbol{"1D716}{\mitepsilon }{\mathalpha}{mathematical italic varepsilon symbol}%
-\UnicodeMathSymbol{"1D717}{\mitvartheta }{\mathalpha}{mathematical italic theta symbol}%
-\UnicodeMathSymbol{"1D718}{\mitvarkappa }{\mathalpha}{mathematical italic kappa symbol}%
-\UnicodeMathSymbol{"1D719}{\mitphi }{\mathalpha}{mathematical italic phi symbol}%
-\UnicodeMathSymbol{"1D71A}{\mitvarrho }{\mathalpha}{mathematical italic rho symbol}%
-\UnicodeMathSymbol{"1D71B}{\mitvarpi }{\mathalpha}{mathematical italic pi symbol}%
-\UnicodeMathSymbol{"1D71C}{\mbfitAlpha }{\mathalpha}{mathematical bold italic capital alpha}%
-\UnicodeMathSymbol{"1D71D}{\mbfitBeta }{\mathalpha}{mathematical bold italic capital beta}%
-\UnicodeMathSymbol{"1D71E}{\mbfitGamma }{\mathalpha}{mathematical bold italic capital gamma}%
-\UnicodeMathSymbol{"1D71F}{\mbfitDelta }{\mathalpha}{mathematical bold italic capital delta}%
-\UnicodeMathSymbol{"1D720}{\mbfitEpsilon }{\mathalpha}{mathematical bold italic capital epsilon}%
-\UnicodeMathSymbol{"1D721}{\mbfitZeta }{\mathalpha}{mathematical bold italic capital zeta}%
-\UnicodeMathSymbol{"1D722}{\mbfitEta }{\mathalpha}{mathematical bold italic capital eta}%
-\UnicodeMathSymbol{"1D723}{\mbfitTheta }{\mathalpha}{mathematical bold italic capital theta}%
-\UnicodeMathSymbol{"1D724}{\mbfitIota }{\mathalpha}{mathematical bold italic capital iota}%
-\UnicodeMathSymbol{"1D725}{\mbfitKappa }{\mathalpha}{mathematical bold italic capital kappa}%
-\UnicodeMathSymbol{"1D726}{\mbfitLambda }{\mathalpha}{mathematical bold italic capital lambda}%
-\UnicodeMathSymbol{"1D727}{\mbfitMu }{\mathalpha}{mathematical bold italic capital mu}%
-\UnicodeMathSymbol{"1D728}{\mbfitNu }{\mathalpha}{mathematical bold italic capital nu}%
-\UnicodeMathSymbol{"1D729}{\mbfitXi }{\mathalpha}{mathematical bold italic capital xi}%
-\UnicodeMathSymbol{"1D72A}{\mbfitOmicron }{\mathalpha}{mathematical bold italic capital omicron}%
-\UnicodeMathSymbol{"1D72B}{\mbfitPi }{\mathalpha}{mathematical bold italic capital pi}%
-\UnicodeMathSymbol{"1D72C}{\mbfitRho }{\mathalpha}{mathematical bold italic capital rho}%
-\UnicodeMathSymbol{"1D72D}{\mbfitvarTheta }{\mathalpha}{mathematical bold italic capital theta symbol}%
-\UnicodeMathSymbol{"1D72E}{\mbfitSigma }{\mathalpha}{mathematical bold italic capital sigma}%
-\UnicodeMathSymbol{"1D72F}{\mbfitTau }{\mathalpha}{mathematical bold italic capital tau}%
-\UnicodeMathSymbol{"1D730}{\mbfitUpsilon }{\mathalpha}{mathematical bold italic capital upsilon}%
-\UnicodeMathSymbol{"1D731}{\mbfitPhi }{\mathalpha}{mathematical bold italic capital phi}%
-\UnicodeMathSymbol{"1D732}{\mbfitChi }{\mathalpha}{mathematical bold italic capital chi}%
-\UnicodeMathSymbol{"1D733}{\mbfitPsi }{\mathalpha}{mathematical bold italic capital psi}%
-\UnicodeMathSymbol{"1D734}{\mbfitOmega }{\mathalpha}{mathematical bold italic capital omega}%
-\UnicodeMathSymbol{"1D735}{\mbfitnabla }{\mathalpha}{mathematical bold italic nabla}%
-\UnicodeMathSymbol{"1D736}{\mbfitalpha }{\mathalpha}{mathematical bold italic small alpha}%
-\UnicodeMathSymbol{"1D737}{\mbfitbeta }{\mathalpha}{mathematical bold italic small beta}%
-\UnicodeMathSymbol{"1D738}{\mbfitgamma }{\mathalpha}{mathematical bold italic small gamma}%
-\UnicodeMathSymbol{"1D739}{\mbfitdelta }{\mathalpha}{mathematical bold italic small delta}%
-\UnicodeMathSymbol{"1D73A}{\mbfitvarepsilon }{\mathalpha}{mathematical bold italic small varepsilon}%
-\UnicodeMathSymbol{"1D73B}{\mbfitzeta }{\mathalpha}{mathematical bold italic small zeta}%
-\UnicodeMathSymbol{"1D73C}{\mbfiteta }{\mathalpha}{mathematical bold italic small eta}%
-\UnicodeMathSymbol{"1D73D}{\mbfittheta }{\mathalpha}{mathematical bold italic small theta}%
-\UnicodeMathSymbol{"1D73E}{\mbfitiota }{\mathalpha}{mathematical bold italic small iota}%
-\UnicodeMathSymbol{"1D73F}{\mbfitkappa }{\mathalpha}{mathematical bold italic small kappa}%
-\UnicodeMathSymbol{"1D740}{\mbfitlambda }{\mathalpha}{mathematical bold italic small lambda}%
-\UnicodeMathSymbol{"1D741}{\mbfitmu }{\mathalpha}{mathematical bold italic small mu}%
-\UnicodeMathSymbol{"1D742}{\mbfitnu }{\mathalpha}{mathematical bold italic small nu}%
-\UnicodeMathSymbol{"1D743}{\mbfitxi }{\mathalpha}{mathematical bold italic small xi}%
-\UnicodeMathSymbol{"1D744}{\mbfitomicron }{\mathalpha}{mathematical bold italic small omicron}%
-\UnicodeMathSymbol{"1D745}{\mbfitpi }{\mathalpha}{mathematical bold italic small pi}%
-\UnicodeMathSymbol{"1D746}{\mbfitrho }{\mathalpha}{mathematical bold italic small rho}%
-\UnicodeMathSymbol{"1D747}{\mbfitvarsigma }{\mathalpha}{mathematical bold italic small final sigma}%
-\UnicodeMathSymbol{"1D748}{\mbfitsigma }{\mathalpha}{mathematical bold italic small sigma}%
-\UnicodeMathSymbol{"1D749}{\mbfittau }{\mathalpha}{mathematical bold italic small tau}%
-\UnicodeMathSymbol{"1D74A}{\mbfitupsilon }{\mathalpha}{mathematical bold italic small upsilon}%
-\UnicodeMathSymbol{"1D74B}{\mbfitvarphi }{\mathalpha}{mathematical bold italic small phi}%
-\UnicodeMathSymbol{"1D74C}{\mbfitchi }{\mathalpha}{mathematical bold italic small chi}%
-\UnicodeMathSymbol{"1D74D}{\mbfitpsi }{\mathalpha}{mathematical bold italic small psi}%
-\UnicodeMathSymbol{"1D74E}{\mbfitomega }{\mathalpha}{mathematical bold italic small omega}%
-\UnicodeMathSymbol{"1D74F}{\mbfitpartial }{\mathalpha}{mathematical bold italic partial differential}%
-\UnicodeMathSymbol{"1D750}{\mbfitepsilon }{\mathalpha}{mathematical bold italic varepsilon symbol}%
-\UnicodeMathSymbol{"1D751}{\mbfitvartheta }{\mathalpha}{mathematical bold italic theta symbol}%
-\UnicodeMathSymbol{"1D752}{\mbfitvarkappa }{\mathalpha}{mathematical bold italic kappa symbol}%
-\UnicodeMathSymbol{"1D753}{\mbfitphi }{\mathalpha}{mathematical bold italic phi symbol}%
-\UnicodeMathSymbol{"1D754}{\mbfitvarrho }{\mathalpha}{mathematical bold italic rho symbol}%
-\UnicodeMathSymbol{"1D755}{\mbfitvarpi }{\mathalpha}{mathematical bold italic pi symbol}%
-\UnicodeMathSymbol{"1D756}{\mbfsansAlpha }{\mathalpha}{mathematical sans-serif bold capital alpha}%
-\UnicodeMathSymbol{"1D757}{\mbfsansBeta }{\mathalpha}{mathematical sans-serif bold capital beta}%
-\UnicodeMathSymbol{"1D758}{\mbfsansGamma }{\mathalpha}{mathematical sans-serif bold capital gamma}%
-\UnicodeMathSymbol{"1D759}{\mbfsansDelta }{\mathalpha}{mathematical sans-serif bold capital delta}%
-\UnicodeMathSymbol{"1D75A}{\mbfsansEpsilon }{\mathalpha}{mathematical sans-serif bold capital epsilon}%
-\UnicodeMathSymbol{"1D75B}{\mbfsansZeta }{\mathalpha}{mathematical sans-serif bold capital zeta}%
-\UnicodeMathSymbol{"1D75C}{\mbfsansEta }{\mathalpha}{mathematical sans-serif bold capital eta}%
-\UnicodeMathSymbol{"1D75D}{\mbfsansTheta }{\mathalpha}{mathematical sans-serif bold capital theta}%
-\UnicodeMathSymbol{"1D75E}{\mbfsansIota }{\mathalpha}{mathematical sans-serif bold capital iota}%
-\UnicodeMathSymbol{"1D75F}{\mbfsansKappa }{\mathalpha}{mathematical sans-serif bold capital kappa}%
-\UnicodeMathSymbol{"1D760}{\mbfsansLambda }{\mathalpha}{mathematical sans-serif bold capital lambda}%
-\UnicodeMathSymbol{"1D761}{\mbfsansMu }{\mathalpha}{mathematical sans-serif bold capital mu}%
-\UnicodeMathSymbol{"1D762}{\mbfsansNu }{\mathalpha}{mathematical sans-serif bold capital nu}%
-\UnicodeMathSymbol{"1D763}{\mbfsansXi }{\mathalpha}{mathematical sans-serif bold capital xi}%
-\UnicodeMathSymbol{"1D764}{\mbfsansOmicron }{\mathalpha}{mathematical sans-serif bold capital omicron}%
-\UnicodeMathSymbol{"1D765}{\mbfsansPi }{\mathalpha}{mathematical sans-serif bold capital pi}%
-\UnicodeMathSymbol{"1D766}{\mbfsansRho }{\mathalpha}{mathematical sans-serif bold capital rho}%
-\UnicodeMathSymbol{"1D767}{\mbfsansvarTheta }{\mathalpha}{mathematical sans-serif bold capital theta symbol}%
-\UnicodeMathSymbol{"1D768}{\mbfsansSigma }{\mathalpha}{mathematical sans-serif bold capital sigma}%
-\UnicodeMathSymbol{"1D769}{\mbfsansTau }{\mathalpha}{mathematical sans-serif bold capital tau}%
-\UnicodeMathSymbol{"1D76A}{\mbfsansUpsilon }{\mathalpha}{mathematical sans-serif bold capital upsilon}%
-\UnicodeMathSymbol{"1D76B}{\mbfsansPhi }{\mathalpha}{mathematical sans-serif bold capital phi}%
-\UnicodeMathSymbol{"1D76C}{\mbfsansChi }{\mathalpha}{mathematical sans-serif bold capital chi}%
-\UnicodeMathSymbol{"1D76D}{\mbfsansPsi }{\mathalpha}{mathematical sans-serif bold capital psi}%
-\UnicodeMathSymbol{"1D76E}{\mbfsansOmega }{\mathalpha}{mathematical sans-serif bold capital omega}%
-\UnicodeMathSymbol{"1D76F}{\mbfsansnabla }{\mathalpha}{mathematical sans-serif bold nabla}%
-\UnicodeMathSymbol{"1D770}{\mbfsansalpha }{\mathalpha}{mathematical sans-serif bold small alpha}%
-\UnicodeMathSymbol{"1D771}{\mbfsansbeta }{\mathalpha}{mathematical sans-serif bold small beta}%
-\UnicodeMathSymbol{"1D772}{\mbfsansgamma }{\mathalpha}{mathematical sans-serif bold small gamma}%
-\UnicodeMathSymbol{"1D773}{\mbfsansdelta }{\mathalpha}{mathematical sans-serif bold small delta}%
-\UnicodeMathSymbol{"1D774}{\mbfsansvarepsilon }{\mathalpha}{mathematical sans-serif bold small varepsilon}%
-\UnicodeMathSymbol{"1D775}{\mbfsanszeta }{\mathalpha}{mathematical sans-serif bold small zeta}%
-\UnicodeMathSymbol{"1D776}{\mbfsanseta }{\mathalpha}{mathematical sans-serif bold small eta}%
-\UnicodeMathSymbol{"1D777}{\mbfsanstheta }{\mathalpha}{mathematical sans-serif bold small theta}%
-\UnicodeMathSymbol{"1D778}{\mbfsansiota }{\mathalpha}{mathematical sans-serif bold small iota}%
-\UnicodeMathSymbol{"1D779}{\mbfsanskappa }{\mathalpha}{mathematical sans-serif bold small kappa}%
-\UnicodeMathSymbol{"1D77A}{\mbfsanslambda }{\mathalpha}{mathematical sans-serif bold small lambda}%
-\UnicodeMathSymbol{"1D77B}{\mbfsansmu }{\mathalpha}{mathematical sans-serif bold small mu}%
-\UnicodeMathSymbol{"1D77C}{\mbfsansnu }{\mathalpha}{mathematical sans-serif bold small nu}%
-\UnicodeMathSymbol{"1D77D}{\mbfsansxi }{\mathalpha}{mathematical sans-serif bold small xi}%
-\UnicodeMathSymbol{"1D77E}{\mbfsansomicron }{\mathalpha}{mathematical sans-serif bold small omicron}%
-\UnicodeMathSymbol{"1D77F}{\mbfsanspi }{\mathalpha}{mathematical sans-serif bold small pi}%
-\UnicodeMathSymbol{"1D780}{\mbfsansrho }{\mathalpha}{mathematical sans-serif bold small rho}%
-\UnicodeMathSymbol{"1D781}{\mbfsansvarsigma }{\mathalpha}{mathematical sans-serif bold small final sigma}%
-\UnicodeMathSymbol{"1D782}{\mbfsanssigma }{\mathalpha}{mathematical sans-serif bold small sigma}%
-\UnicodeMathSymbol{"1D783}{\mbfsanstau }{\mathalpha}{mathematical sans-serif bold small tau}%
-\UnicodeMathSymbol{"1D784}{\mbfsansupsilon }{\mathalpha}{mathematical sans-serif bold small upsilon}%
-\UnicodeMathSymbol{"1D785}{\mbfsansvarphi }{\mathalpha}{mathematical sans-serif bold small phi}%
-\UnicodeMathSymbol{"1D786}{\mbfsanschi }{\mathalpha}{mathematical sans-serif bold small chi}%
-\UnicodeMathSymbol{"1D787}{\mbfsanspsi }{\mathalpha}{mathematical sans-serif bold small psi}%
-\UnicodeMathSymbol{"1D788}{\mbfsansomega }{\mathalpha}{mathematical sans-serif bold small omega}%
-\UnicodeMathSymbol{"1D789}{\mbfsanspartial }{\mathalpha}{mathematical sans-serif bold partial differential}%
-\UnicodeMathSymbol{"1D78A}{\mbfsansepsilon }{\mathalpha}{mathematical sans-serif bold varepsilon symbol}%
-\UnicodeMathSymbol{"1D78B}{\mbfsansvartheta }{\mathalpha}{mathematical sans-serif bold theta symbol}%
-\UnicodeMathSymbol{"1D78C}{\mbfsansvarkappa }{\mathalpha}{mathematical sans-serif bold kappa symbol}%
-\UnicodeMathSymbol{"1D78D}{\mbfsansphi }{\mathalpha}{mathematical sans-serif bold phi symbol}%
-\UnicodeMathSymbol{"1D78E}{\mbfsansvarrho }{\mathalpha}{mathematical sans-serif bold rho symbol}%
-\UnicodeMathSymbol{"1D78F}{\mbfsansvarpi }{\mathalpha}{mathematical sans-serif bold pi symbol}%
-\UnicodeMathSymbol{"1D790}{\mbfitsansAlpha }{\mathalpha}{mathematical sans-serif bold italic capital alpha}%
-\UnicodeMathSymbol{"1D791}{\mbfitsansBeta }{\mathalpha}{mathematical sans-serif bold italic capital beta}%
-\UnicodeMathSymbol{"1D792}{\mbfitsansGamma }{\mathalpha}{mathematical sans-serif bold italic capital gamma}%
-\UnicodeMathSymbol{"1D793}{\mbfitsansDelta }{\mathalpha}{mathematical sans-serif bold italic capital delta}%
-\UnicodeMathSymbol{"1D794}{\mbfitsansEpsilon }{\mathalpha}{mathematical sans-serif bold italic capital epsilon}%
-\UnicodeMathSymbol{"1D795}{\mbfitsansZeta }{\mathalpha}{mathematical sans-serif bold italic capital zeta}%
-\UnicodeMathSymbol{"1D796}{\mbfitsansEta }{\mathalpha}{mathematical sans-serif bold italic capital eta}%
-\UnicodeMathSymbol{"1D797}{\mbfitsansTheta }{\mathalpha}{mathematical sans-serif bold italic capital theta}%
-\UnicodeMathSymbol{"1D798}{\mbfitsansIota }{\mathalpha}{mathematical sans-serif bold italic capital iota}%
-\UnicodeMathSymbol{"1D799}{\mbfitsansKappa }{\mathalpha}{mathematical sans-serif bold italic capital kappa}%
-\UnicodeMathSymbol{"1D79A}{\mbfitsansLambda }{\mathalpha}{mathematical sans-serif bold italic capital lambda}%
-\UnicodeMathSymbol{"1D79B}{\mbfitsansMu }{\mathalpha}{mathematical sans-serif bold italic capital mu}%
-\UnicodeMathSymbol{"1D79C}{\mbfitsansNu }{\mathalpha}{mathematical sans-serif bold italic capital nu}%
-\UnicodeMathSymbol{"1D79D}{\mbfitsansXi }{\mathalpha}{mathematical sans-serif bold italic capital xi}%
-\UnicodeMathSymbol{"1D79E}{\mbfitsansOmicron }{\mathalpha}{mathematical sans-serif bold italic capital omicron}%
-\UnicodeMathSymbol{"1D79F}{\mbfitsansPi }{\mathalpha}{mathematical sans-serif bold italic capital pi}%
-\UnicodeMathSymbol{"1D7A0}{\mbfitsansRho }{\mathalpha}{mathematical sans-serif bold italic capital rho}%
-\UnicodeMathSymbol{"1D7A1}{\mbfitsansvarTheta }{\mathalpha}{mathematical sans-serif bold italic capital theta symbol}%
-\UnicodeMathSymbol{"1D7A2}{\mbfitsansSigma }{\mathalpha}{mathematical sans-serif bold italic capital sigma}%
-\UnicodeMathSymbol{"1D7A3}{\mbfitsansTau }{\mathalpha}{mathematical sans-serif bold italic capital tau}%
-\UnicodeMathSymbol{"1D7A4}{\mbfitsansUpsilon }{\mathalpha}{mathematical sans-serif bold italic capital upsilon}%
-\UnicodeMathSymbol{"1D7A5}{\mbfitsansPhi }{\mathalpha}{mathematical sans-serif bold italic capital phi}%
-\UnicodeMathSymbol{"1D7A6}{\mbfitsansChi }{\mathalpha}{mathematical sans-serif bold italic capital chi}%
-\UnicodeMathSymbol{"1D7A7}{\mbfitsansPsi }{\mathalpha}{mathematical sans-serif bold italic capital psi}%
-\UnicodeMathSymbol{"1D7A8}{\mbfitsansOmega }{\mathalpha}{mathematical sans-serif bold italic capital omega}%
-\UnicodeMathSymbol{"1D7A9}{\mbfitsansnabla }{\mathalpha}{mathematical sans-serif bold italic nabla}%
-\UnicodeMathSymbol{"1D7AA}{\mbfitsansalpha }{\mathalpha}{mathematical sans-serif bold italic small alpha}%
-\UnicodeMathSymbol{"1D7AB}{\mbfitsansbeta }{\mathalpha}{mathematical sans-serif bold italic small beta}%
-\UnicodeMathSymbol{"1D7AC}{\mbfitsansgamma }{\mathalpha}{mathematical sans-serif bold italic small gamma}%
-\UnicodeMathSymbol{"1D7AD}{\mbfitsansdelta }{\mathalpha}{mathematical sans-serif bold italic small delta}%
-\UnicodeMathSymbol{"1D7AE}{\mbfitsansvarepsilon }{\mathalpha}{mathematical sans-serif bold italic small varepsilon}%
-\UnicodeMathSymbol{"1D7AF}{\mbfitsanszeta }{\mathalpha}{mathematical sans-serif bold italic small zeta}%
-\UnicodeMathSymbol{"1D7B0}{\mbfitsanseta }{\mathalpha}{mathematical sans-serif bold italic small eta}%
-\UnicodeMathSymbol{"1D7B1}{\mbfitsanstheta }{\mathalpha}{mathematical sans-serif bold italic small theta}%
-\UnicodeMathSymbol{"1D7B2}{\mbfitsansiota }{\mathalpha}{mathematical sans-serif bold italic small iota}%
-\UnicodeMathSymbol{"1D7B3}{\mbfitsanskappa }{\mathalpha}{mathematical sans-serif bold italic small kappa}%
-\UnicodeMathSymbol{"1D7B4}{\mbfitsanslambda }{\mathalpha}{mathematical sans-serif bold italic small lambda}%
-\UnicodeMathSymbol{"1D7B5}{\mbfitsansmu }{\mathalpha}{mathematical sans-serif bold italic small mu}%
-\UnicodeMathSymbol{"1D7B6}{\mbfitsansnu }{\mathalpha}{mathematical sans-serif bold italic small nu}%
-\UnicodeMathSymbol{"1D7B7}{\mbfitsansxi }{\mathalpha}{mathematical sans-serif bold italic small xi}%
-\UnicodeMathSymbol{"1D7B8}{\mbfitsansomicron }{\mathalpha}{mathematical sans-serif bold italic small omicron}%
-\UnicodeMathSymbol{"1D7B9}{\mbfitsanspi }{\mathalpha}{mathematical sans-serif bold italic small pi}%
-\UnicodeMathSymbol{"1D7BA}{\mbfitsansrho }{\mathalpha}{mathematical sans-serif bold italic small rho}%
-\UnicodeMathSymbol{"1D7BB}{\mbfitsansvarsigma }{\mathalpha}{mathematical sans-serif bold italic small final sigma}%
-\UnicodeMathSymbol{"1D7BC}{\mbfitsanssigma }{\mathalpha}{mathematical sans-serif bold italic small sigma}%
-\UnicodeMathSymbol{"1D7BD}{\mbfitsanstau }{\mathalpha}{mathematical sans-serif bold italic small tau}%
-\UnicodeMathSymbol{"1D7BE}{\mbfitsansupsilon }{\mathalpha}{mathematical sans-serif bold italic small upsilon}%
-\UnicodeMathSymbol{"1D7BF}{\mbfitsansvarphi }{\mathalpha}{mathematical sans-serif bold italic small phi}%
-\UnicodeMathSymbol{"1D7C0}{\mbfitsanschi }{\mathalpha}{mathematical sans-serif bold italic small chi}%
-\UnicodeMathSymbol{"1D7C1}{\mbfitsanspsi }{\mathalpha}{mathematical sans-serif bold italic small psi}%
-\UnicodeMathSymbol{"1D7C2}{\mbfitsansomega }{\mathalpha}{mathematical sans-serif bold italic small omega}%
-\UnicodeMathSymbol{"1D7C3}{\mbfitsanspartial }{\mathalpha}{mathematical sans-serif bold italic partial differential}%
-\UnicodeMathSymbol{"1D7C4}{\mbfitsansepsilon }{\mathalpha}{mathematical sans-serif bold italic varepsilon symbol}%
-\UnicodeMathSymbol{"1D7C5}{\mbfitsansvartheta }{\mathalpha}{mathematical sans-serif bold italic theta symbol}%
-\UnicodeMathSymbol{"1D7C6}{\mbfitsansvarkappa }{\mathalpha}{mathematical sans-serif bold italic kappa symbol}%
-\UnicodeMathSymbol{"1D7C7}{\mbfitsansphi }{\mathalpha}{mathematical sans-serif bold italic phi symbol}%
-\UnicodeMathSymbol{"1D7C8}{\mbfitsansvarrho }{\mathalpha}{mathematical sans-serif bold italic rho symbol}%
-\UnicodeMathSymbol{"1D7C9}{\mbfitsansvarpi }{\mathalpha}{mathematical sans-serif bold italic pi symbol}%
-\UnicodeMathSymbol{"1D7CA}{\mbfDigamma }{\mathalpha}{mathematical bold capital digamma}%
-\UnicodeMathSymbol{"1D7CB}{\mbfdigamma }{\mathalpha}{mathematical bold small digamma}%
-\UnicodeMathSymbol{"1D7CE}{\mbfzero }{\mathord}{mathematical bold digit 0}%
-\UnicodeMathSymbol{"1D7CF}{\mbfone }{\mathord}{mathematical bold digit 1}%
-\UnicodeMathSymbol{"1D7D0}{\mbftwo }{\mathord}{mathematical bold digit 2}%
-\UnicodeMathSymbol{"1D7D1}{\mbfthree }{\mathord}{mathematical bold digit 3}%
-\UnicodeMathSymbol{"1D7D2}{\mbffour }{\mathord}{mathematical bold digit 4}%
-\UnicodeMathSymbol{"1D7D3}{\mbffive }{\mathord}{mathematical bold digit 5}%
-\UnicodeMathSymbol{"1D7D4}{\mbfsix }{\mathord}{mathematical bold digit 6}%
-\UnicodeMathSymbol{"1D7D5}{\mbfseven }{\mathord}{mathematical bold digit 7}%
-\UnicodeMathSymbol{"1D7D6}{\mbfeight }{\mathord}{mathematical bold digit 8}%
-\UnicodeMathSymbol{"1D7D7}{\mbfnine }{\mathord}{mathematical bold digit 9}%
-\UnicodeMathSymbol{"1D7D8}{\Bbbzero }{\mathord}{mathematical double-struck digit 0}%
-\UnicodeMathSymbol{"1D7D9}{\Bbbone }{\mathord}{mathematical double-struck digit 1}%
-\UnicodeMathSymbol{"1D7DA}{\Bbbtwo }{\mathord}{mathematical double-struck digit 2}%
-\UnicodeMathSymbol{"1D7DB}{\Bbbthree }{\mathord}{mathematical double-struck digit 3}%
-\UnicodeMathSymbol{"1D7DC}{\Bbbfour }{\mathord}{mathematical double-struck digit 4}%
-\UnicodeMathSymbol{"1D7DD}{\Bbbfive }{\mathord}{mathematical double-struck digit 5}%
-\UnicodeMathSymbol{"1D7DE}{\Bbbsix }{\mathord}{mathematical double-struck digit 6}%
-\UnicodeMathSymbol{"1D7DF}{\Bbbseven }{\mathord}{mathematical double-struck digit 7}%
-\UnicodeMathSymbol{"1D7E0}{\Bbbeight }{\mathord}{mathematical double-struck digit 8}%
-\UnicodeMathSymbol{"1D7E1}{\Bbbnine }{\mathord}{mathematical double-struck digit 9}%
-\UnicodeMathSymbol{"1D7E2}{\msanszero }{\mathord}{mathematical sans-serif digit 0}%
-\UnicodeMathSymbol{"1D7E3}{\msansone }{\mathord}{mathematical sans-serif digit 1}%
-\UnicodeMathSymbol{"1D7E4}{\msanstwo }{\mathord}{mathematical sans-serif digit 2}%
-\UnicodeMathSymbol{"1D7E5}{\msansthree }{\mathord}{mathematical sans-serif digit 3}%
-\UnicodeMathSymbol{"1D7E6}{\msansfour }{\mathord}{mathematical sans-serif digit 4}%
-\UnicodeMathSymbol{"1D7E7}{\msansfive }{\mathord}{mathematical sans-serif digit 5}%
-\UnicodeMathSymbol{"1D7E8}{\msanssix }{\mathord}{mathematical sans-serif digit 6}%
-\UnicodeMathSymbol{"1D7E9}{\msansseven }{\mathord}{mathematical sans-serif digit 7}%
-\UnicodeMathSymbol{"1D7EA}{\msanseight }{\mathord}{mathematical sans-serif digit 8}%
-\UnicodeMathSymbol{"1D7EB}{\msansnine }{\mathord}{mathematical sans-serif digit 9}%
-\UnicodeMathSymbol{"1D7EC}{\mbfsanszero }{\mathord}{mathematical sans-serif bold digit 0}%
-\UnicodeMathSymbol{"1D7ED}{\mbfsansone }{\mathord}{mathematical sans-serif bold digit 1}%
-\UnicodeMathSymbol{"1D7EE}{\mbfsanstwo }{\mathord}{mathematical sans-serif bold digit 2}%
-\UnicodeMathSymbol{"1D7EF}{\mbfsansthree }{\mathord}{mathematical sans-serif bold digit 3}%
-\UnicodeMathSymbol{"1D7F0}{\mbfsansfour }{\mathord}{mathematical sans-serif bold digit 4}%
-\UnicodeMathSymbol{"1D7F1}{\mbfsansfive }{\mathord}{mathematical sans-serif bold digit 5}%
-\UnicodeMathSymbol{"1D7F2}{\mbfsanssix }{\mathord}{mathematical sans-serif bold digit 6}%
-\UnicodeMathSymbol{"1D7F3}{\mbfsansseven }{\mathord}{mathematical sans-serif bold digit 7}%
-\UnicodeMathSymbol{"1D7F4}{\mbfsanseight }{\mathord}{mathematical sans-serif bold digit 8}%
-\UnicodeMathSymbol{"1D7F5}{\mbfsansnine }{\mathord}{mathematical sans-serif bold digit 9}%
-\UnicodeMathSymbol{"1D7F6}{\mttzero }{\mathord}{mathematical monospace digit 0}%
-\UnicodeMathSymbol{"1D7F7}{\mttone }{\mathord}{mathematical monospace digit 1}%
-\UnicodeMathSymbol{"1D7F8}{\mtttwo }{\mathord}{mathematical monospace digit 2}%
-\UnicodeMathSymbol{"1D7F9}{\mttthree }{\mathord}{mathematical monospace digit 3}%
-\UnicodeMathSymbol{"1D7FA}{\mttfour }{\mathord}{mathematical monospace digit 4}%
-\UnicodeMathSymbol{"1D7FB}{\mttfive }{\mathord}{mathematical monospace digit 5}%
-\UnicodeMathSymbol{"1D7FC}{\mttsix }{\mathord}{mathematical monospace digit 6}%
-\UnicodeMathSymbol{"1D7FD}{\mttseven }{\mathord}{mathematical monospace digit 7}%
-\UnicodeMathSymbol{"1D7FE}{\mtteight }{\mathord}{mathematical monospace digit 8}%
-\UnicodeMathSymbol{"1D7FF}{\mttnine }{\mathord}{mathematical monospace digit 9}%
-\UnicodeMathSymbol{"1EEF0}{\arabicmaj }{\mathop}{arabic mathematical operator meem with hah with tatweel}%
-\UnicodeMathSymbol{"1EEF1}{\arabichad }{\mathop}{arabic mathematical operator hah with dal}%
-
-% /©
-%
-% ------------------------------------------------
-% The UNICODE-MATH package <wspr.io/unicode-math>
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% Copyright 2006-2019 Will Robertson, LPPL "maintainer"
-% Copyright 2010-2017 Philipp Stephani
-% Copyright 2011-2017 Joseph Wright
-% Copyright 2012-2015 Khaled Hosny
-% ------------------------------------------------
-%
-% ©/
-
diff --git a/macros/latex/contrib/unicode-math/unicode-math.dtx b/macros/latex/contrib/unicode-math/unicode-math.dtx
deleted file mode 100644
index 1253cab5d4..0000000000
--- a/macros/latex/contrib/unicode-math/unicode-math.dtx
+++ /dev/null
@@ -1,116 +0,0 @@
-%%^^A%% unicode-math.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
-%%^^A%% Metadata for the package code, including files and versioning
-
-% \section{Package metadata}
-%
-% List all \texttt{dtx} files for (a) the \texttt{ins} file and~(b) typesetting the code.
-% \begin{macrocode}
-%<*dtx>
-\def\DTXFILES{
- \DTX{unicode-math.dtx}
- \DTX{um-code-opening.dtx}
- \DTX{um-code-variables.dtx}
- \DTX{um-code-api.dtx}
- \DTX{um-code-ui.dtx}
- \DTX{um-code-pkgopt.dtx}
- \DTX{um-code-msg.dtx}
- \DTX{um-code-usv.dtx}
- \DTX{um-code-setchar.dtx}
- \DTX{um-code-mathtext.dtx}
- \DTX{um-code-main.dtx}
- \DTX{um-code-fontopt.dtx}
- \DTX{um-code-fontparam.dtx}
- \DTX{um-code-mathmap.dtx}
- \DTX{um-code-sym-commands.dtx}
- \DTX{um-code-alphabets.dtx}
- \DTX{um-code-primes.dtx}
- \DTX{um-code-sscript.dtx}
- \DTX{um-code-compat.dtx}
- \DTX{um-code-amsmath.dtx}
- \DTX{um-code-epilogue.dtx}
-}
-%</dtx>
-% \end{macrocode}
-%
-% Now exit if we're using plain \TeX\ when loading this file with \texttt{unicode-math.ins}.
-% \begin{macrocode}
-%<*dtx>
-\ifx\plainoutput\undefined\else\expandafter\endinput\fi
-%</dtx>
-% \end{macrocode}
-%
-% Metadata for documentation; the title and authors of the package.
-% \begin{macrocode}
-%<*dtx>
-\title{
- Experimental Unicode mathematical typesetting:
- The \pkg{unicode-math} package
-}
-\author{
- \scshape Will Robertson\\
- \itshape Philipp Stephani, Joseph Wright, Khaled Hosny, and others\\
- \url{http://github.com/wspr/unicode-math}
-}
-%</dtx>
-% \end{macrocode}
-%
-% Declare the package version and date.
-% \begin{macrocode}
-%<base>\RequirePackage{expl3}
-%<base>\ProvidesExplPackage{unicode-math}
-%<package&XE>\ProvidesExplPackage{unicode-math-xetex}
-%<package&LU>\ProvidesExplPackage{unicode-math-luatex}
-%<base|package> {2020/01/31} {0.8q} {Unicode maths in XeLaTeX and LuaLaTeX}
-% \end{macrocode}
-%
-% Here the version and date are setup for typesetting the documentation.
-% \begin{macrocode}
-%<*dtx>
-\date{
- \def\filedate{2020/01/31}
- \def\fileversion{0.8q}
- \filedate \qquad \fileversion
-}
-%</dtx>
-% \end{macrocode}
-%
-% \section{The \texttt{unicode-math.sty} loading file}
-%
-% The \texttt{unicode-math.sty} file is a stub which loads necessary packages
-% and then splits into a XeTeX- or LuaTeX-specific version of the package.
-%
-% \begin{macrocode}
-%<base>\sys_if_engine_luatex:T
-%<base> {
-%<base> \RequirePackageWithOptions{unicode-math-luatex}
-%<base> \endinput
-%<base> }
-%<base>\sys_if_engine_xetex:T
-%<base> {
-%<base> \RequirePackageWithOptions{unicode-math-xetex}
-%<base> \endinput
-%<base> }
-%<base>\msg_new:nnn {unicode-math} {unsupported-engine}
-%<base> { Cannot~ be~ run~ with~ \c_sys_engine_str!\\ Use~ XeLaTeX~ or~ LuaLaTeX~ instead. }
-%<base>\msg_error:nn {unicode-math} {unsupported-engine}
-%<base>\endinput
-% \end{macrocode}
-
-\endinput
-
-% /©
-%
-% ------------------------------------------------
-% The UNICODE-MATH package <wspr.io/unicode-math>
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% Copyright 2006-2019 Will Robertson, LPPL "maintainer"
-% Copyright 2010-2017 Philipp Stephani
-% Copyright 2011-2017 Joseph Wright
-% Copyright 2012-2015 Khaled Hosny
-% ------------------------------------------------
-%
-% ©/
diff --git a/macros/latex/contrib/unicode-math/unicode-math.ins b/macros/latex/contrib/unicode-math/unicode-math.ins
deleted file mode 100644
index d0b4dc08d1..0000000000
--- a/macros/latex/contrib/unicode-math/unicode-math.ins
+++ /dev/null
@@ -1,64 +0,0 @@
-%%^^A%% unicode-math.ins -- part of UNICODE-MATH <wspr.io/unicode-math>
-%%^^A%% Docstrip installer.
-
-\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
-\input unicode-math.dtx\relax
-\input l3docstrip.tex\relax
-\keepsilent
-
-\declarepreamble\defaultpreamble
-
-------------------------------------------------
-The UNICODE-MATH package <wspr.io/unicode-math>
-------------------------------------------------
-This package is free software and may be redistributed and/or modified under
-the conditions of the LaTeX Project Public License, version 1.3c or higher
-(your choice): <http://www.latex-project.org/lppl/>.
-------------------------------------------------
-Copyright 2006-2018 Will Robertson, LPPL "maintainer"
-Copyright 2010-2017 Philipp Stephani
-Copyright 2011-2017 Joseph Wright
-Copyright 2012-2015 Khaled Hosny
-------------------------------------------------
-
-\endpreamble
-
-\nopostamble
-\askforoverwritefalse
-
-\def\FROM#1#2{\from{#1}{#2}}
-\def\FROMDEBUG#1#2{\from{#1}{#2,debug}}
-\ifx\DEBUG\undefined\else\let\FROM\FROMDEBUG\fi
-\def\Msg#1{}
-\def\Generate#1#2{%
- \immediate\write\ttyout{Generating file "#1"}%
- \generate{\file{#1}{#2}}%
-}
-
-\Generate{unicode-math.sty}{\FROM{unicode-math.dtx}{base}}
-
-\def\DTX#1{\FROM{#1}{package,XE}}
-\Generate{unicode-math-xetex.sty}{\DTXFILES}
-
-\def\DTX#1{\FROM{#1}{package,LU}}
-\Generate{unicode-math-luatex.sty}{\DTXFILES}
-
-\endbatchfile
-\endinput
-
-% /©
-%
-% ------------------------------------------------
-% The UNICODE-MATH package <wspr.io/unicode-math>
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% Copyright 2006-2019 Will Robertson, LPPL "maintainer"
-% Copyright 2010-2017 Philipp Stephani
-% Copyright 2011-2017 Joseph Wright
-% Copyright 2012-2015 Khaled Hosny
-% ------------------------------------------------
-%
-% ©/
diff --git a/macros/latex/contrib/unicode-math/unicode-math.ltx b/macros/latex/contrib/unicode-math/unicode-math.ltx
deleted file mode 100644
index c3a13fd370..0000000000
--- a/macros/latex/contrib/unicode-math/unicode-math.ltx
+++ /dev/null
@@ -1,38 +0,0 @@
-%%^^A%% unicode-math.ltx -- part of UNICODE-MATH <wspr.io/unicode-math>
-%%^^A%% User documentation.
-
-\documentclass[a4paper]{ltxdoc}
-\input{um-doc-style.tex}
-\begin{document}
-\maketitle
-
-\input{um-doc-main.tex}
-
-\clearpage
-\appendix
-
-\input{um-doc-stixextract.tex}
-\input{um-doc-nfsssummary.tex}
-\input{um-doc-legacyfontdimen.tex}
-\input{um-doc-mathfontdimen.tex}
-
-\end{document}
-
-\endinput
-
-% /©
-%
-% ------------------------------------------------
-% The UNICODE-MATH package <wspr.io/unicode-math>
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% Copyright 2006-2019 Will Robertson, LPPL "maintainer"
-% Copyright 2010-2017 Philipp Stephani
-% Copyright 2011-2017 Joseph Wright
-% Copyright 2012-2015 Khaled Hosny
-% ------------------------------------------------
-%
-% ©/
diff --git a/macros/latex/contrib/unicode-math/unicode-math.pdf b/macros/latex/contrib/unicode-math/unicode-math.pdf
deleted file mode 100644
index 1d2cf0948a..0000000000
--- a/macros/latex/contrib/unicode-math/unicode-math.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/unicode-math/unimath-example.ltx b/macros/latex/contrib/unicode-math/unimath-example.ltx
deleted file mode 100644
index d8f75961a8..0000000000
--- a/macros/latex/contrib/unicode-math/unimath-example.ltx
+++ /dev/null
@@ -1,69 +0,0 @@
-%%^^A%% unimath-example.ltx -- part of UNICODE-MATH <wspr.io/unicode-math>
-%%^^A%% A minimal example file to demonstrate the package.
-
-%%%%%%%%%%%%%%%%%%%%%%%
-% UNICODE-MATH EXAMPLE FILE
-%%%%%%%%%%%%%%%%%%%%%%%
-
-\documentclass{article}
-
-% Load fontspec and define a document font:
-\usepackage{fontspec}
-\setmainfont{texgyrepagella-regular.otf}
-
-% Load unicode-math and define a math font:
-\usepackage{unicode-math}
-\setmathfont{texgyrepagella-math.otf}
-
-\begin{document}
-\title{An example of \textsf{unicode-math}}
-\author{Will Robertson}
-\maketitle
-
-This is an example of the \textsf{unicode-math} package.
-It allows you to write maths with Unicode input and to use fonts that contain Unicode mathematical glyphs. Follow along in the source code to see how it works.
-
-After loading the package and selecting a font, you shouldn't need to change much to continue to write maths as always.
-\[
- F(s)=\symscr L \{f(t)\}=\int_0^\infty \symup e^{-st}f(t)\,\symup d t
-\]
-
-The style of Latin and Greek letters is set up by default to match the output of standard \LaTeX: Latin letters and Greek lowercase letters are italic, and Greek uppercase letters are upright. These can be configured with the \texttt{math-style} package option.
-
-One very important feature to recognise is that bold maths now works consistently for both Latin and Greek letters. By default, \verb|\symbf| will turn a Latin letter bold and upright, and a Greek letter will remain italic and also become bold. For example:
-\[
- \symbf{a} = a\,\symbf{I} \qquad \symbf{\beta} = \beta\,\symbf{I}
-\]
-This behaviour can be configured with the \texttt{bold-style} package option.
-
-In the examples above, I've used \LaTeX\ commands to input characters like \verb|\beta|, \verb|\infty|, and so on. These may now be typed directly into the source of the document:
-\[
- 𝐉 = ∇×𝐇 \qquad 𝐁 = μ₀(𝐌 + 𝐇)
-\]
-\[
- ∫₀³ xⁿφ₁₂(x)\,ⅆx
-\]
-It does not matter if you use upright or italic characters; they will be normalised according to the setting of the \texttt{math-style} and \texttt{bold-style} options.
-
-And that's a brief introduction to the package. Please see the documentation for further details. This is a new package; feedback, suggestions, and bug reports are all most welcome.
-
-\end{document}
-
-\endinput
-
-% /©
-%
-% ------------------------------------------------
-% The UNICODE-MATH package <wspr.io/unicode-math>
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% Copyright 2006-2019 Will Robertson, LPPL "maintainer"
-% Copyright 2010-2017 Philipp Stephani
-% Copyright 2011-2017 Joseph Wright
-% Copyright 2012-2015 Khaled Hosny
-% ------------------------------------------------
-%
-% ©/
diff --git a/macros/latex/contrib/unicode-math/unimath-example.pdf b/macros/latex/contrib/unicode-math/unimath-example.pdf
deleted file mode 100644
index a339e72f9d..0000000000
--- a/macros/latex/contrib/unicode-math/unimath-example.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/unicode-math/unimath-symbols.ltx b/macros/latex/contrib/unicode-math/unimath-symbols.ltx
deleted file mode 100644
index df6ac0e986..0000000000
--- a/macros/latex/contrib/unicode-math/unimath-symbols.ltx
+++ /dev/null
@@ -1,469 +0,0 @@
-%%^^A%% unimath-symbols.ltx -- part of UNICODE-MATH <wspr.io/unicode-math>
-%%^^A%% Listing of Unicode mathematics symbols using a variety of fonts.
-
-%!TEX TS-program = LuaLaTeX
-
-%%%%%%%%%%%%%%%%%%%%%%%
-% SYMBOLS DEFINED BY UNICODE-MATH
-%%%%%%%%%%%%%%%%%%%%%%%
-
-\documentclass[final]{article}
-\makeatletter
-
-\usepackage{ragged2e,setspace,booktabs,catchfile,shortvrb,geometry,metalogo,textcomp,longtable,tabu,hyperref}
-
-\geometry{margin=3cm}
-\hypersetup{colorlinks,linkcolor=black}
-
-\def\cmd#1{\texttt{\textbackslash\expandafter\@gobble\string#1}}
-
-\usepackage{fontspec}
-\setmainfont{texgyrepagella}%
- [
- Extension = .otf ,
- UprightFont = *-regular,
- ItalicFont = *-italic,
- BoldFont = *-bold,
- BoldItalicFont = *-bolditalic,
- Ligatures=TeX,
- Numbers={Lowercase,Monospaced},
- ]
-\usepackage[math-style=literal,bold-style=literal]{unicode-math}
-
-\ExplSyntaxOn
-\cs_generate_variant:Nn \fontspec_set_fontface:NNnn {c}
-
-\def\FINISH{}
-\newcount\Nfonts
-\def\defmathfont#1#2#3#4{
- \Nfonts=\numexpr\Nfonts+1\relax
- \tl_set:cn {L#1} {#4}
- \newcounter{#1}
- \setcounter{#1}{-1}
- \setmathfont[version=#1,SizeFeatures={
- {Size=-10, Colour=999999},
- {Size=10-, Colour=#3}}]{#2}
- \fontspec_set_fontface:cNnn {#1} \x {ItalicFont={},BoldFont={}} {#2}
- \tl_gput_right:Nn \FINISH {
- \refstepcounter{#1}\label{count:#1}
- }
-}
-\ExplSyntaxOff
-
-\defmathfont{lm}{latinmodern-math.otf}{CC6666}{L}
-\defmathfont{xits}{XITSMath-Regular.otf}{6666CC}{X}
-\defmathfont{stix}{STIX2Math.otf}{66CC66}{S}
-\defmathfont{pagella}{texgyrepagella-math.otf}{AA6666}{P}
-\defmathfont{dejavu}{texgyredejavu-math.otf}{AACC66}{D}
-\defmathfont{fira}{FiraMath-Regular.otf}{AA66CC}{F}
-
-\def\INPUT{\input{unicode-math-table.tex}}
-\def\TABLE{%
-\par\noindent
-\begin{longtabu}[l]{@{}l *{\Nfonts}{c} lX[l]@{}}
- \toprule
- \textsc{usv} & \Llm & \Lxits & \Lstix & \Lpagella & \Ldejavu & \Lfira & Macro & Description \\
- \midrule \endhead
- \INPUT\\
- \bottomrule
-\end{longtabu}
-}
-\makeatletter
-\def\USV#1{\footnotesize\scshape\MakeLowercase{u+\@gobble#1}}
-\makeatother
-\def\CMD#1{\footnotesize\cmd#1}
-\def\DESC#1{%
- \begin{spacing}{0.5}
- \RaggedRight\scriptsize #1%
- \end{spacing}
-}
-
-\newcommand\SHOW[1]{%
- \def\UnicodeMathSymbol##1##2##3##4{%
- \def\1{#1}\def\2{##3}%
- \ifx\1\2\PRINTLINE{##1}{##2}{##4}\fi
- }%
- \TABLE
-}
-\ExplSyntaxOn
-\def\PRINTLINE#1#2#3{
- \def\tempa{
- \USV{#1} &
- \SYMB{#2}{lm}{#1} &
- \SYMB{#2}{xits}{#1} &
- \SYMB{#2}{stix}{#1} &
- \SYMB{#2}{pagella}{#1} &
- \SYMB{#2}{dejavu}{#1} &
- \SYMB{#2}{fira}{#1} &
- \CMD{#2}
- \tl_if_in:NnT \PLAIN {#2}
- {
- \makebox[0pt][l]
- { \color[gray]{0.7} \textsuperscript{\sffamily (p)} }
- }
- \tl_if_in:NnT \LTXSYM {#2}
- {
- \makebox[0pt][l]
- { \color[gray]{0.7} \textsuperscript{\sffamily (l)} }
- }
- \tl_if_in:NnT \AMSSYMB {#2}
- {
- \makebox[0pt][l]
- { \color[gray]{0.7} \textsuperscript{\sffamily (a)} }
- }
- &
- \DESC{#3} \\
- }%
- \expandafter\tempa
-}
-\ExplSyntaxOff
-\def\SYMB#1#2#3{%
- \expandafter\iffontchar\csname#2\endcsname #3\relax
- \refstepcounter{#2}%
- \mathversion{#2}%
- $\displaystyle#1$%
- \fi
-}
-
-\def\PLAIN{\alpha\beta\gamma\delta\epsilon\zeta\eta\theta\iota\kappa\lambda\mu\nu\xi\pi\rho\sigma\tau\upsilon\phi\chi\psi\omega\varepsilon\vartheta\varpi\varrho\varsigma\varphi\Gamma\Delta\Theta\Lambda\Xi\Pi\Sigma\Upsilon\Phi\Psi\Omega
-%
-\aleph\hbar\imath\jmath\ell\wp\Re\Im\partial\infty\prime\emptyset\nabla\surd\top\bot\angle\triangle\forall\exists\neg\flat\natural\sharp\clubsuit\diamondsuit\heartsuit\spadesuit
-%
-\coprod\bigvee\bigwedge\biguplus\bigcap\bigcup\int\prod\sum\bigotimes\bigoplus\bigodot\oint\bigsqcup\smallint
-%
-\triangleleft\triangleright\bigtriangleup\bigtriangledown\wedge\land\vee\lor\cap\cup\ddagger\dagger\sqcap\sqcup\uplus\amalg\diamond\bullet\wr\div\odot\oslash\otimes\ominus\oplus\mp\pm\circ\bigcirc\setminus\cdot\ast\times\star\propto\sqsubseteq\sqsupseteq\parallel\mid\dashv\vdash\nearrow\searrow\nwarrow\swarrow\Leftrightarrow\Leftarrow\Rightarrow\neq\ne\lnot\leq\le\geq\ge\succ\prec\approx\succeq\preceq\supset\subset\supseteq\subseteq\in\ni\owns\gg\ll\not\leftrightarrow\leftarrow\gets\rightarrow\to\mapstochar\mapsto\sim\simeq\perp\equiv\asymp\smile\frown\leftharpoonup\leftharpoondown\rightharpoonup\rightharpoondown
-%
-\joinrel\relbar\Relbar\lhook\hookrightarrow\rhook\hookleftarrow\bowtie\models\Longrightarrow\longrightarrow\longleftarrow\Longleftarrow\longmapsto\longleftrightarrow\Longleftrightarrow\iff
-%
-\ldotp\cdotp\colon\ldots\cdots\vdots\ddots
-%
-\acute\grave\ddot\tilde\bar\breve\check\hat\vec\dot\widetilde\widehat
-%
-\overrightarrow\overleftarrow\overbrace\underbrace\lmoustache\rmoustache\lgroup\rgroup\arrowvert\Arrowvert\bracevert\Vert\vert\uparrow\downarrow\updownarrow\Uparrow\Downarrow\Updownarrow\backslash\rangle\langle\rbrace\lbrace\rceil\lceil\rfloor\lfloor\sqrt}
-
-
-\def\LTXSYM{
-\cong
-\notin
-\rightleftharpoons
-\doteq
-\mathring
-}
-
-\def\AMSSYMB{\boxdot\boxplus\boxtimes\square\blacksquare\centerdot\lozenge\blacklozenge\circlearrowright\circlearrowleft\leftrightharpoons\boxminus\Vdash\Vvdash\vDash\twoheadrightarrow\twoheadleftarrow\leftleftarrows\rightrightarrows\upuparrows\downdownarrows\upharpoonright\restriction\downharpoonright\upharpoonleft\downharpoonleft\rightarrowtail\leftarrowtail\leftrightarrows\rightleftarrows\Lsh\Rsh\rightsquigarrow\leftrightsquigarrow\looparrowleft\looparrowright\circeq\succsim\gtrsim\gtrapprox\multimap\therefore\because\doteqdot\Doteq\triangleq\precsim\lesssim\lessapprox\eqslantless\eqslantgtr\curlyeqprec\curlyeqsucc\preccurlyeq\leqq\leqslant\lessgtr\backprime\risingdotseq\fallingdotseq\succcurlyeq\geqq\geqslant\gtrless\vartriangleright\vartriangleleft\trianglerighteq\trianglelefteq\bigstar\between\blacktriangledown\blacktriangleright\blacktriangleleft\vartriangle\blacktriangle\triangledown\eqcirc\lesseqgtr\gtreqless\lesseqqgtr\gtreqqless\Rrightarrow\Lleftarrow\veebar\barwedge\doublebarwedge\measuredangle\sphericalangle\varpropto\smallsmile\smallfrown\Subset\Supset\Cup\doublecup\Cap\doublecap\curlywedge\curlyvee\leftthreetimes\rightthreetimes\subseteqq\supseteqq\bumpeq\Bumpeq\lll\llless\ggg\gggtr\circledS\pitchfork\dotplus\backsim\backsimeq\complement\intercal\circledcirc\circledast\circleddash\lvertneqq\gvertneqq\nleq\ngeq\nless\ngtr\nprec\nsucc\lneqq\gneqq\nleqslant\ngeqslant\lneq\gneq\npreceq\nsucceq\precnsim\succnsim\lnsim\gnsim\nleqq\ngeqq\precneqq\succneqq\precnapprox\succnapprox\lnapprox\gnapprox\nsim\ncong\diagup\diagdown\varsubsetneq\varsupsetneq\nsubseteqq\nsupseteqq\subsetneqq\supsetneqq\varsubsetneqq\varsupsetneqq\subsetneq\supsetneq\nsubseteq\nsupseteq\nparallel\nmid\nshortmid\nshortparallel\nvdash\nVdash\nvDash\nVDash\ntrianglerighteq\ntrianglelefteq\ntriangleleft\ntriangleright\nleftarrow\nrightarrow\nLeftarrow\nRightarrow\nLeftrightarrow\nleftrightarrow\divideontimes\varnothing\nexists\Finv\Game\eth\eqsim\beth\gimel\daleth\lessdot\gtrdot\ltimes\rtimes\shortmid\shortparallel\smallsetminus\thicksim\thickapprox\approxeq\succapprox\precapprox\curvearrowleft\curvearrowright\digamma\varkappa\Bbbk\hslash\backepsilon}
-
-\input{unicode-math.dtx}
-
-\begin{document}
-\MakeShortVerb\|
-\title{Symbols defined by \textsf{unicode-math}}
-\author{Will Robertson}
-\maketitle
-
-This document uses the file \texttt{unicode-math-table.tex}
-to print every symbol defined by the \textsf{unicode-math}
-package.
-Use this document to find the command name or the Unicode glyph slot for a symbol that you wish to use.
-The following fonts are shown: (with approximate symbol counts)
-\begin{itemize}
-\item[\Llm] \mathversion{lm} $\mathup{Latin\ Modern\ Math}$ (\ref{count:lm})
-\item[\Lxits] \mathversion{xits} $\mathup{XITS\ Math}$ (\ref{count:xits})
-\item[\Lstix] \mathversion{stix} $\mathup{STIX\ Math\ Two}$ (\ref{count:stix})
-\item[\Lpagella] \mathversion{pagella} $\mathup{TeX\ Gyre\ Pagella\ Math}$ (\ref{count:pagella})
-\item[\Ldejavu] \mathversion{dejavu} $\mathup{DejaVu\ Math\ TeX\ Gyre}$ (\ref{count:dejavu})
-\item[\Lfira] \mathversion{fira} $\mathup{Fira\ Math}$ (\ref{count:fira})
-\end{itemize}
-Symbols defined in Plain \TeX\ are indicated with {\color[gray]{0.6} \textsuperscript{\sffamily (p)}} after their macro name.
-\LaTeX\ follows Plain \TeX, but defines a handful more, indicated with {\color[gray]{0.6} \textsuperscript{\sffamily (l)}}.
-Symbols defined in \textsf{amssymb} are indicated with {\color[gray]{0.6} \textsuperscript{\sffamily (a)}}.
-
-Note that this list of fonts is not intended to be exhaustive but I am happy to add new fonts by request if they are distributed in \TeX\ Live.\footnote{Only a single \TeX\ Gyre Math font is shown here by design as they all largely have the same symbol coverage.}
-
-\tableofcontents
-
-\clearpage
-\section{Opening symbols, \cmd\mathopen}
-\begingroup
-\def\sqrt{\sqrtsign{}}
-\def\cuberoot{\cuberootsign{}}
-\def\fourthroot{\fourthrootsign{}}
-\def\longdivision{\longdivisionsign{}}
-\SHOW\mathopen
-\endgroup
-
-\clearpage
-\section{Closing symbols, \cmd\mathclose}
-\SHOW\mathclose
-
-\clearpage
-\section{Fence symbols, \cmd\mathfence}
-\SHOW\mathfence
-
-\section{Punctuation symbols, \cmd\mathpunct}
-\SHOW\mathpunct
-
-\section{`Over' symbols, \cmd\mathover}
-\begingroup
-\def\SYMB#1#2#3{%
- \expandafter\iffontchar\csname#2\endcsname #3\relax
- \refstepcounter{#2}%
- \mathversion{#2}%
- $\displaystyle #1{\mitx+\mity}$%
- \fi
-}
-\SHOW\mathover
-\endgroup
-
-
-\section{`Under' symbols, \cmd\mathunder}
-\begingroup
-\def\SYMB#1#2#3{%
- \expandafter\iffontchar\csname#2\endcsname #3\relax
- \refstepcounter{#2}%
- \mathversion{#2}%
- $\displaystyle #1{\mitx+\mity}$%
- \fi
-}
-\SHOW\mathunder
-\endgroup
-
-\clearpage
-\section{Accents, \cmd\mathaccent}
-
-Note that accents will only be properly placed if used with an OpenType font with the necessary information.
-
-\begingroup
-\def\SYMB#1#2#3{%
- \expandafter\iffontchar\csname#2\endcsname #3\relax
- \refstepcounter{#2}%
- \mathversion{#2}%
- $\displaystyle#1 \mitx$%
- \fi
-}
-\SHOW\mathaccent
-\endgroup
-
-\section{Bottom accents, \cmd\mathbotaccent}
-\begingroup
-\def\SYMB#1#2#3{%
- \expandafter\iffontchar\csname#2\endcsname #3\relax
- \refstepcounter{#2}%
- \mathversion{#2}%
- $\displaystyle#1 \mitx$%
- \fi
-}
-\SHOW\mathbotaccent
-\endgroup
-
-\clearpage
-\section{Big operators, \cmd\mathop}
-
-Of the operators shown below, a subset need to be flagged by \textsf{unicode-math} for \cmd\nolimits\ adjustments.
-The limits behaviour as specified by \textsf{unicode-math} are shown with grey subscripts and superscripts.
-\begingroup
-\def\SYMB#1#2#3{%
- \expandafter\iffontchar\csname#2\endcsname #3\relax
- \stepcounter{#2}%
- \mathversion{#2}%
- $\displaystyle#1_0^1$%
- \fi
-}
-\SHOW\mathop
-\endgroup
-
-\section{Binary relations, \cmd\mathbin}
-\SHOW\mathbin
-
-\clearpage
-\section{Ordinary symbols, \cmd\mathord}
-\SHOW\mathord
-
-\clearpage
-\section{Relation symbols, \cmd\mathrel}
-\SHOW\mathrel
-
-\clearpage
-\section{Alphabetical symbols, \cmd\mathalpha}
-
-% first read in all \mathalpha symbols into a variable:
-\ExplSyntaxOn
-\cs_set:Npn \UnicodeMathSymbol #1#2#3#4 {
- \str_if_eq:nnT {\mathalpha} {#3} {
- \exp_not:n { \UnicodeMathSymbol {#1}{#2}{#3}{#4} }
- }
-}
-\CatchFileEdef
- \ALPHA{unicode-math-table.tex}
- {\char_set_catcode_space:N \ }
-
-% now each time we print an alphabet we remove the slot;
-% this ensures we won't miss anything
-
-\def\INPUT{\ALPHA}
-\cs_new:Npn \SLOTS #1#2 {
- \cs_set:Npn \UnicodeMathSymbol ##1##2##3##4 {
- \bool_lazy_and:nnT
- { \int_compare_p:n {##1 >= #1} }
- { \int_compare_p:n {##1 <= #2} }
- {
- \PRINTLINE{##1}{##2}{##4}
- }
- }
- \TABLE
- \cs_set:Npn \UnicodeMathSymbol ##1##2##3##4 {
- \bool_lazy_or:nnT
- { \int_compare_p:n {##1 > #2} }
- { \int_compare_p:n {##1 < #1} }
- {
- \exp_not:n { \UnicodeMathSymbol {##1}{##2}{##3}{##4} }
- }
- }
- \edef\ALPHA{\ALPHA}
-}
-
-\ExplSyntaxOff
-
-\subsection{Normal weight}
-
-\subsubsection{Upright Greek, uppercase}
-\SLOTS{"00391}{"003A9}
-
-\subsubsection{Upright Greek, lowercase}
-\SLOTS{"003B1}{"003F5}
-
-\subsubsection{Italic, Latin, uppercase}
-\SLOTS{"1D434}{"1D44D}
-
-\subsubsection{Italic, Latin, lowercase}
-\SLOTS{"1D44E}{"1D467}
-
-\subsubsection{Italic Greek, uppercase}
-\SLOTS{"1D6E2}{"1D6FA}
-
-\subsubsection{Italic Greek, lowercase}
-\SLOTS{"1D6FC}{"1D71B}
-
-\subsubsection{Script, Latin, uppercase}
-\SLOTS{"1D49C}{"1D4B5}
-
-\subsubsection{Script, Latin, lowercase}
-\SLOTS{"1D4B6}{"1D4CF}
-
-\subsubsection{Fraktur, Latin, uppercase}
-\SLOTS{"1D504}{"1D51C}
-
-\subsubsection{Fraktur, Latin, lowercase}
-\SLOTS{"1D51E}{"1D537}
-
-\subsubsection{Blackboard, Latin, uppercase}
-\SLOTS{"1D538}{"1D550}
-
-\subsubsection{Blackboard, Latin, lowercase}
-\SLOTS{"1D552}{"1D56B}
-
-\subsubsection{Sans serif, Latin, uppercase}
-\SLOTS{"1D5A0}{"1D5B9}
-
-\subsubsection{Sans serif, Latin, lowercase}
-\SLOTS{"1D5BA}{"1D5D3}
-
-\subsubsection{Italic sans serif, Latin, uppercase}
-\SLOTS{"1D608}{"1D621}
-
-\subsubsection{Italic sans serif, Latin, lowercase}
-\SLOTS{"1D622}{"1D63B}
-
-\subsubsection{Typewriter, Latin, uppercase}
-\SLOTS{"1D670}{"1D689}
-
-\subsubsection{Typewriter, Latin, lowercase}
-\SLOTS{"1D68A}{"1D6A3}
-
-\subsection{Bold}
-
-\subsubsection{Bold, Latin, uppercase}
-\SLOTS{"1D400}{"1D419}
-
-\subsubsection{Bold, Latin, lowercase}
-\SLOTS{"1D41A}{"1D433}
-
-\subsubsection{Bold Greek, uppercase}
-\SLOTS{"1D6A8}{"1D6C0}
-
-\subsubsection{Bold Greek, lowercase}
-\SLOTS{"1D6C2}{"1D6E1}
-
-\subsubsection{Bold italic, Latin, uppercase}
-\SLOTS{"1D468}{"1D481}
-
-\subsubsection{Bold italic, Latin, lowercase}
-\SLOTS{"1D482}{"1D49B}
-
-\subsubsection{Bold italic Greek, uppercase}
-\SLOTS{"1D71C}{"1D734}
-
-\subsubsection{Bold italic Greek, lowercase}
-\SLOTS{"1D736}{"1D755}
-
-\subsubsection{Bold script, Latin, uppercase}
-\SLOTS{"1D4D0}{"1D4E9}
-
-\subsubsection{Bold script, Latin, lowercase}
-\SLOTS{"1D4EA}{"1D503}
-
-\subsubsection{Bold fraktur, Latin, uppercase}
-\SLOTS{"1D56C}{"1D585}
-
-\subsubsection{Bold fraktur, Latin, lowercase}
-\SLOTS{"1D586}{"1D59F}
-
-\subsubsection{Bold sans serif, Latin, uppercase}
-\SLOTS{"1D5D4}{"1D5ED}
-
-\subsubsection{Bold sans serif, Latin, lowercase}
-\SLOTS{"1D5EE}{"1D607}
-
-\subsubsection{Bold italic sans serif, Latin, uppercase}
-\SLOTS{"1D63C}{"1D655}
-
-\subsubsection{Bold italic sans serif, Latin, lowercase}
-\SLOTS{"1D656}{"1D66F}
-
-\subsubsection{Bold sans serif Greek, uppercase}
-\SLOTS{"1D756}{"1D76E}
-
-\subsubsection{Bold sans serif Greek, lowercase}
-\SLOTS{"1D770}{"1D78F}
-
-\subsubsection{Bold italic sans serif Greek, uppercase}
-\SLOTS{"1D790}{"1D7A8}
-
-\subsubsection{Bold italic sans serif Greek, lowercase}
-\SLOTS{"1D7AA}{"1D7C9}
-
-\subsection{Miscellaneous}
-\def\UnicodeMathSymbol#1#2#3#4{\PRINTLINE{#1}{#2}{#4}}
-\TABLE
-
-\FINISH
-
-\end{document}
-
-\endinput
-
-% /©
-%
-% ------------------------------------------------
-% The UNICODE-MATH package <wspr.io/unicode-math>
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% Copyright 2006-2019 Will Robertson, LPPL "maintainer"
-% Copyright 2010-2017 Philipp Stephani
-% Copyright 2011-2017 Joseph Wright
-% Copyright 2012-2015 Khaled Hosny
-% ------------------------------------------------
-%
-% ©/
diff --git a/macros/latex/contrib/unicode-math/unimath-symbols.pdf b/macros/latex/contrib/unicode-math/unimath-symbols.pdf
deleted file mode 100644
index c2b54bc257..0000000000
--- a/macros/latex/contrib/unicode-math/unimath-symbols.pdf
+++ /dev/null
Binary files differ