summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-12-12 03:00:44 +0000
committerNorbert Preining <norbert@preining.info>2023-12-12 03:00:44 +0000
commit20d530d28645a91e4362d87f1b7559a67cfd0e31 (patch)
tree7f82e96b8af3f57651baf0464c5bee8061e0b7f5
parent2bc01316d114d0fb18dec7c0f6f7b0aba6c21d66 (diff)
CTAN sync 202312120300
-rw-r--r--FILES.byname352
-rw-r--r--FILES.byname.gzbin2559258 -> 2559205 bytes
-rw-r--r--FILES.last07days377
-rw-r--r--biblio/ctan-bibdata/ctan.bib12
-rw-r--r--fonts/parsimatn/ParsiMatn-Bold.ttfbin259948 -> 259944 bytes
-rw-r--r--fonts/parsimatn/ParsiMatn-BoldItalic.ttfbin268672 -> 268672 bytes
-rw-r--r--fonts/parsimatn/ParsiMatn-Italic.ttfbin290896 -> 290892 bytes
-rw-r--r--fonts/parsimatn/ParsiMatn-Regular.ttfbin280908 -> 280908 bytes
-rw-r--r--fonts/parsimatn/README.md2
-rw-r--r--fonts/parsimatn/parsimatn-example-of-use.pdfbin92119 -> 92436 bytes
-rw-r--r--fonts/parsimatn/parsimatn-example-of-use.tex4
-rw-r--r--macros/latex/contrib/covington/README5
-rw-r--r--macros/latex/contrib/covington/covington.pdfbin558128 -> 557927 bytes
-rw-r--r--macros/latex/contrib/covington/covington.sty10
-rw-r--r--macros/latex/contrib/covington/covington.tex32
-rw-r--r--macros/latex/contrib/jnuexam/exam-a-a3input.pdfbin93702 -> 0 bytes
-rw-r--r--macros/latex/contrib/jnuexam/exam-a-a3input.tex9
-rw-r--r--macros/latex/contrib/jnuexam/exam-a-a3split.pdfbin92282 -> 0 bytes
-rw-r--r--macros/latex/contrib/jnuexam/exam-a-a3split.tex6
-rw-r--r--macros/latex/contrib/jnuexam/exam-a-answer.pdfbin0 -> 109655 bytes
-rw-r--r--macros/latex/contrib/jnuexam/exam-a-answer.tex (renamed from macros/latex/contrib/jnuexam/exam-a.tex)96
-rw-r--r--macros/latex/contrib/jnuexam/exam-a-empty.pdfbin91806 -> 95853 bytes
-rw-r--r--macros/latex/contrib/jnuexam/exam-a-empty.tex2
-rw-r--r--macros/latex/contrib/jnuexam/exam-a.pdfbin105227 -> 0 bytes
-rw-r--r--macros/latex/contrib/jnuexam/exam-b-a3input.pdfbin93605 -> 0 bytes
-rw-r--r--macros/latex/contrib/jnuexam/exam-b-a3input.tex9
-rw-r--r--macros/latex/contrib/jnuexam/exam-b-a3split.pdfbin92173 -> 0 bytes
-rw-r--r--macros/latex/contrib/jnuexam/exam-b-a3split.tex6
-rw-r--r--macros/latex/contrib/jnuexam/exam-b-answer.pdfbin0 -> 109567 bytes
-rw-r--r--macros/latex/contrib/jnuexam/exam-b-answer.tex6
-rw-r--r--macros/latex/contrib/jnuexam/exam-b-empty.pdfbin91697 -> 95809 bytes
-rw-r--r--macros/latex/contrib/jnuexam/exam-b-empty.tex2
-rw-r--r--macros/latex/contrib/jnuexam/exam-b.pdfbin105117 -> 0 bytes
-rw-r--r--macros/latex/contrib/jnuexam/exam-b.tex6
-rw-r--r--macros/latex/contrib/jnuexam/jnuexam.cls853
-rw-r--r--macros/latex/contrib/jnuexam/jnuexam.pdfbin74065 -> 81129 bytes
-rw-r--r--macros/latex/contrib/jnuexam/jnuexam.tex135
-rw-r--r--macros/latex/contrib/l3kernel/CHANGELOG.md15
-rw-r--r--macros/latex/contrib/l3kernel/README.md2
-rw-r--r--macros/latex/contrib/l3kernel/expl3.dtx10
-rw-r--r--macros/latex/contrib/l3kernel/expl3.pdfbin623407 -> 623156 bytes
-rw-r--r--macros/latex/contrib/l3kernel/interface3.pdfbin1772521 -> 1774220 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3.ins2
-rw-r--r--macros/latex/contrib/l3kernel/l3basics.dtx39
-rw-r--r--macros/latex/contrib/l3kernel/l3bitset.dtx85
-rw-r--r--macros/latex/contrib/l3kernel/l3bootstrap.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3box.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3candidates.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3cctab.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3clist.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3coffins.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3color.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3debug.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3deprecation.dtx22
-rw-r--r--macros/latex/contrib/l3kernel/l3doc.dtx151
-rw-r--r--macros/latex/contrib/l3kernel/l3doc.pdfbin558435 -> 563591 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3docstrip.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3docstrip.pdfbin152023 -> 151750 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3expan.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3file.dtx190
-rw-r--r--macros/latex/contrib/l3kernel/l3flag.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-assign.dtx8
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-aux.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-basics.dtx8
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-convert.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-expo.dtx8
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-extended.dtx8
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-functions.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-logic.dtx8
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-parse.dtx8
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-random.dtx8
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-round.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-symbolic.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-traps.dtx8
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-trig.dtx8
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-types.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3fparray.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3int.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3intarray.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3kernel-functions.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3keys.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3legacy.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3luatex.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3msg.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3names.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3news.pdfbin396222 -> 396222 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news01.pdfbin122959 -> 122959 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news02.pdfbin150919 -> 150919 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news03.pdfbin148747 -> 148747 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news04.pdfbin114754 -> 114754 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news05.pdfbin112524 -> 112524 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news06.pdfbin151591 -> 151591 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news07.pdfbin128344 -> 128344 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news08.pdfbin163484 -> 163484 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news09.pdfbin250159 -> 250159 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news10.pdfbin150302 -> 150302 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news11.pdfbin170102 -> 170102 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news12.pdfbin205020 -> 205020 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3pdf.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3prefixes.pdfbin82696 -> 82696 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3prg.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3prop.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3quark.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3regex.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3seq.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3skip.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3sort.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3str-convert.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3str.dtx10
-rw-r--r--macros/latex/contrib/l3kernel/l3styleguide.pdfbin296516 -> 296516 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3syntax-changes.pdfbin243162 -> 243162 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3sys.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3term-glossary.pdfbin218315 -> 218315 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3text-case.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3text-map.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3text-purify.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3text.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3tl-analysis.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3tl-build.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3tl.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3token.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3unicode.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/source3.pdfbin7508388 -> 7510840 bytes
-rw-r--r--macros/unicodetex/latex/polyglossia/README.md4
-rw-r--r--macros/unicodetex/latex/polyglossia/polyglossia.dtx1536
-rw-r--r--macros/unicodetex/latex/polyglossia/polyglossia.pdfbin371303 -> 374493 bytes
-rw-r--r--systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl2
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb132
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.md52
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha5122
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc16
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.xzbin2493648 -> 2492392 bytes
-rw-r--r--timestamp2
134 files changed, 2440 insertions, 1922 deletions
diff --git a/FILES.byname b/FILES.byname
index 3231edd483..8d6900c24c 100644
--- a/FILES.byname
+++ b/FILES.byname
@@ -2063,12 +2063,12 @@
2023/10/05 | 1710 | biblio/citation-style-language/README.md
2023/10/05 | 12878 | biblio/citation-style-language/vancouver.csl
2023/10/05 | 4531754 | biblio/citation-style-language.zip
-2023/12/10 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
+2023/12/11 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
2022/10/08 | 127 | biblio/ctan-bibdata/biblatex-ctan/ctan.cbx
-2023/12/10 | 2831733 | biblio/ctan-bibdata/ctan.bib
-2023/12/10 | 3708800 | biblio/ctan-bibdata/ctan.pdf
+2023/12/11 | 2831733 | biblio/ctan-bibdata/ctan.bib
+2023/12/11 | 3708800 | biblio/ctan-bibdata/ctan.pdf
2023/01/16 | 1489 | biblio/ctan-bibdata/README
-2023/12/10 | 4113943 | biblio/ctan-bibdata.zip
+2023/12/11 | 4113948 | biblio/ctan-bibdata.zip
2023/02/23 | 3126 | biblio/pbibtex/pbibtex-base/cpp.awk
2023/02/23 | 1009 | biblio/pbibtex/pbibtex-base/generate.sh
2023/02/23 | 22362 | biblio/pbibtex/pbibtex-base/jabbrv.bst
@@ -5429,7 +5429,7 @@
1990/10/02 | 5440 | dviware/vutex/vaxvms.hlp
1990/10/02 | 812 | dviware/vutex/vaxvms.ins
1990/10/02 | 127576 | dviware/vutex/vutex.web
-2023/12/10 | 79998 | FILES.last07days
+2023/12/11 | 78582 | FILES.last07days
2021/07/24 | 1139410 | fonts/aboensis/Aboensis.glyphs
2021/07/24 | 18907382 | fonts/aboensis/aboensis.pdf
2021/07/24 | 137860 | fonts/aboensis/Aboensis-Regular.otf
@@ -112132,14 +112132,14 @@
2014/09/13 | 1618746 | fonts/parisa/source/parisa-shadow.sfd
2014/09/13 | 5749842 | fonts/parisa.zip
2023/09/13 | 4497 | fonts/parsimatn/OFL.txt
-2023/09/29 | 268672 | fonts/parsimatn/ParsiMatn-BoldItalic.ttf
-2023/09/29 | 259948 | fonts/parsimatn/ParsiMatn-Bold.ttf
-2023/09/29 | 92119 | fonts/parsimatn/parsimatn-example-of-use.pdf
-2023/09/29 | 10887 | fonts/parsimatn/parsimatn-example-of-use.tex
-2023/09/29 | 290896 | fonts/parsimatn/ParsiMatn-Italic.ttf
-2023/09/29 | 280908 | fonts/parsimatn/ParsiMatn-Regular.ttf
-2023/09/29 | 766 | fonts/parsimatn/README.md
-2023/09/29 | 694862 | fonts/parsimatn.zip
+2023/12/11 | 268672 | fonts/parsimatn/ParsiMatn-BoldItalic.ttf
+2023/12/11 | 259944 | fonts/parsimatn/ParsiMatn-Bold.ttf
+2023/12/11 | 92436 | fonts/parsimatn/parsimatn-example-of-use.pdf
+2023/12/11 | 10891 | fonts/parsimatn/parsimatn-example-of-use.tex
+2023/12/11 | 290892 | fonts/parsimatn/ParsiMatn-Italic.ttf
+2023/12/11 | 280908 | fonts/parsimatn/ParsiMatn-Regular.ttf
+2023/12/11 | 765 | fonts/parsimatn/README.md
+2023/12/11 | 695176 | fonts/parsimatn.zip
2023/09/08 | 4498 | fonts/parsinevis/OFL.txt
2023/09/29 | 101716 | fonts/parsinevis/ParsiNevis-BoldItalic.ttf
2023/09/29 | 98068 | fonts/parsinevis/ParsiNevis-Bold.ttf
@@ -194732,7 +194732,7 @@
2023/11/09 | 973431 | install/macros/latex/contrib/l3backend.tds.zip
2023/11/01 | 823832 | install/macros/latex/contrib/l3build.tds.zip
2023/12/08 | 4060567 | install/macros/latex/contrib/l3experimental.tds.zip
-2023/12/08 | 14219097 | install/macros/latex/contrib/l3kernel.tds.zip
+2023/12/11 | 14227153 | install/macros/latex/contrib/l3kernel.tds.zip
2023/10/10 | 2257270 | install/macros/latex/contrib/l3packages.tds.zip
2023/10/14 | 606244 | install/macros/latex/contrib/lastpage.tds.zip
2009/09/02 | 556672 | install/macros/latex/contrib/layouts.tds.zip
@@ -194918,7 +194918,7 @@
2013/07/02 | 153964 | install/macros/plain/contrib/plstmary.tds.zip
2008/05/18 | 22279 | install/macros/plain/plnfss.tds.zip
2022/01/15 | 1403657 | install/macros/unicodetex/latex/fontspec.tds.zip
-2023/10/01 | 1273872 | install/macros/unicodetex/latex/polyglossia.tds.zip
+2023/12/11 | 1345696 | install/macros/unicodetex/latex/polyglossia.tds.zip
2016/02/13 | 111305 | install/macros/unicodetex/latex/realscripts.tds.zip
2021/02/09 | 4924350 | install/macros/unicodetex/latex/texnegar.tds.zip
2023/08/13 | 3485348 | install/macros/unicodetex/latex/unicode-math.tds.zip
@@ -218442,11 +218442,11 @@
2006/02/23 | 75218 | macros/latex/contrib/coverpage/SimpleSample.pdf
2006/02/23 | 1521 | macros/latex/contrib/coverpage/SimpleSample.tex
2006/02/24 | 300614 | macros/latex/contrib/coverpage.zip
-2023/12/02 | 558128 | macros/latex/contrib/covington/covington.pdf
-2023/12/02 | 61976 | macros/latex/contrib/covington/covington.sty
-2023/12/02 | 90604 | macros/latex/contrib/covington/covington.tex
-2023/12/02 | 7330 | macros/latex/contrib/covington/README
-2023/12/02 | 592853 | macros/latex/contrib/covington.zip
+2023/12/11 | 557927 | macros/latex/contrib/covington/covington.pdf
+2023/12/11 | 62119 | macros/latex/contrib/covington/covington.sty
+2023/12/11 | 91810 | macros/latex/contrib/covington/covington.tex
+2023/12/11 | 7526 | macros/latex/contrib/covington/README
+2023/12/11 | 592969 | macros/latex/contrib/covington.zip
2011/01/27 | 37617 | macros/latex/contrib/cprotect/cprotect.dtx
2011/01/27 | 623268 | macros/latex/contrib/cprotect/cprotect.pdf
2022/06/25 | 296928 | macros/latex/contrib/cprotectinside/cprotectinside.pdf
@@ -227844,27 +227844,19 @@
2022/03/11 | 1032 | macros/latex/contrib/jmsdelim/README.md
2022/03/11 | 380 | macros/latex/contrib/jmsdelim/refs.bib
2022/03/11 | 407050 | macros/latex/contrib/jmsdelim.zip
-2020/11/06 | 93702 | macros/latex/contrib/jnuexam/exam-a-a3input.pdf
-2020/11/06 | 311 | macros/latex/contrib/jnuexam/exam-a-a3input.tex
-2020/11/06 | 92282 | macros/latex/contrib/jnuexam/exam-a-a3split.pdf
-2018/07/15 | 165 | macros/latex/contrib/jnuexam/exam-a-a3split.tex
-2020/11/06 | 91806 | macros/latex/contrib/jnuexam/exam-a-empty.pdf
-2018/07/15 | 156 | macros/latex/contrib/jnuexam/exam-a-empty.tex
-2020/11/06 | 105227 | macros/latex/contrib/jnuexam/exam-a.pdf
-2019/12/05 | 10262 | macros/latex/contrib/jnuexam/exam-a.tex
-2020/11/06 | 93605 | macros/latex/contrib/jnuexam/exam-b-a3input.pdf
-2020/11/06 | 311 | macros/latex/contrib/jnuexam/exam-b-a3input.tex
-2020/11/06 | 92173 | macros/latex/contrib/jnuexam/exam-b-a3split.pdf
-2018/07/15 | 165 | macros/latex/contrib/jnuexam/exam-b-a3split.tex
-2020/11/06 | 91697 | macros/latex/contrib/jnuexam/exam-b-empty.pdf
-2018/07/15 | 156 | macros/latex/contrib/jnuexam/exam-b-empty.tex
-2020/11/06 | 105117 | macros/latex/contrib/jnuexam/exam-b.pdf
-2019/11/08 | 157 | macros/latex/contrib/jnuexam/exam-b.tex
-2020/11/06 | 26553 | macros/latex/contrib/jnuexam/jnuexam.cls
-2020/11/06 | 74065 | macros/latex/contrib/jnuexam/jnuexam.pdf
-2019/11/08 | 12465 | macros/latex/contrib/jnuexam/jnuexam.tex
+2023/12/11 | 109655 | macros/latex/contrib/jnuexam/exam-a-answer.pdf
+2023/12/11 | 10378 | macros/latex/contrib/jnuexam/exam-a-answer.tex
+2023/12/11 | 95853 | macros/latex/contrib/jnuexam/exam-a-empty.pdf
+2020/11/08 | 163 | macros/latex/contrib/jnuexam/exam-a-empty.tex
+2023/12/11 | 109567 | macros/latex/contrib/jnuexam/exam-b-answer.pdf
+2023/12/10 | 163 | macros/latex/contrib/jnuexam/exam-b-answer.tex
+2023/12/11 | 95809 | macros/latex/contrib/jnuexam/exam-b-empty.pdf
+2020/11/08 | 163 | macros/latex/contrib/jnuexam/exam-b-empty.tex
+2023/12/11 | 42523 | macros/latex/contrib/jnuexam/jnuexam.cls
+2023/12/11 | 81129 | macros/latex/contrib/jnuexam/jnuexam.pdf
+2023/12/11 | 13581 | macros/latex/contrib/jnuexam/jnuexam.tex
2018/07/15 | 175 | macros/latex/contrib/jnuexam/README
-2020/11/06 | 837019 | macros/latex/contrib/jnuexam.zip
+2023/12/11 | 500462 | macros/latex/contrib/jnuexam.zip
2022/09/24 | 437856 | macros/latex/contrib/jobname-suffix/jobname-suffix.pdf
2022/09/24 | 3170 | macros/latex/contrib/jobname-suffix/jobname-suffix.sty
2022/09/24 | 7142 | macros/latex/contrib/jobname-suffix/jobname-suffix.tex
@@ -228614,115 +228606,115 @@
2023/12/08 | 1624 | macros/latex/contrib/l3experimental/xgalley.ins
2023/12/08 | 299916 | macros/latex/contrib/l3experimental/xgalley.pdf
2023/12/08 | 4024785 | macros/latex/contrib/l3experimental.zip
-2023/12/08 | 55327 | macros/latex/contrib/l3kernel/CHANGELOG.md
-2023/12/08 | 70986 | macros/latex/contrib/l3kernel/expl3.dtx
-2023/12/08 | 623407 | macros/latex/contrib/l3kernel/expl3.pdf
-2023/12/08 | 1772521 | macros/latex/contrib/l3kernel/interface3.pdf
-2023/12/08 | 2072 | macros/latex/contrib/l3kernel/interface3.tex
-2023/12/08 | 136125 | macros/latex/contrib/l3kernel/l3basics.dtx
-2023/12/08 | 18863 | macros/latex/contrib/l3kernel/l3bitset.dtx
-2023/12/08 | 12949 | macros/latex/contrib/l3kernel/l3bootstrap.dtx
-2023/12/08 | 87751 | macros/latex/contrib/l3kernel/l3box.dtx
-2023/12/08 | 5772 | macros/latex/contrib/l3kernel/l3candidates.dtx
-2023/12/08 | 33773 | macros/latex/contrib/l3kernel/l3cctab.dtx
-2023/12/08 | 83185 | macros/latex/contrib/l3kernel/l3clist.dtx
-2023/12/08 | 88102 | macros/latex/contrib/l3kernel/l3coffins.dtx
-2023/12/08 | 112275 | macros/latex/contrib/l3kernel/l3color.dtx
-2023/12/08 | 43421 | macros/latex/contrib/l3kernel/l3debug.dtx
-2023/12/08 | 30076 | macros/latex/contrib/l3kernel/l3deprecation.dtx
-2023/12/08 | 156506 | macros/latex/contrib/l3kernel/l3doc.dtx
-2023/12/08 | 558435 | macros/latex/contrib/l3kernel/l3doc.pdf
-2023/12/08 | 2385 | macros/latex/contrib/l3kernel/l3docstrip.dtx
-2023/12/08 | 152023 | macros/latex/contrib/l3kernel/l3docstrip.pdf
-2023/12/08 | 88673 | macros/latex/contrib/l3kernel/l3expan.dtx
-2023/12/08 | 143772 | macros/latex/contrib/l3kernel/l3file.dtx
-2023/12/08 | 10327 | macros/latex/contrib/l3kernel/l3flag.dtx
-2023/12/08 | 11781 | macros/latex/contrib/l3kernel/l3fparray.dtx
-2023/12/08 | 9435 | macros/latex/contrib/l3kernel/l3fp-assign.dtx
-2023/12/08 | 47242 | macros/latex/contrib/l3kernel/l3fp-aux.dtx
-2023/12/08 | 84779 | macros/latex/contrib/l3kernel/l3fp-basics.dtx
-2023/12/08 | 19641 | macros/latex/contrib/l3kernel/l3fp-convert.dtx
-2023/12/08 | 76531 | macros/latex/contrib/l3kernel/l3fp.dtx
-2023/12/08 | 49311 | macros/latex/contrib/l3kernel/l3fp-expo.dtx
-2023/12/08 | 51081 | macros/latex/contrib/l3kernel/l3fp-extended.dtx
-2023/12/08 | 7832 | macros/latex/contrib/l3kernel/l3fp-functions.dtx
-2023/12/08 | 23196 | macros/latex/contrib/l3kernel/l3fp-logic.dtx
-2023/12/08 | 105012 | macros/latex/contrib/l3kernel/l3fp-parse.dtx
-2023/12/08 | 23574 | macros/latex/contrib/l3kernel/l3fp-random.dtx
-2023/12/08 | 18532 | macros/latex/contrib/l3kernel/l3fp-round.dtx
-2023/12/08 | 20268 | macros/latex/contrib/l3kernel/l3fp-symbolic.dtx
-2023/12/08 | 12767 | macros/latex/contrib/l3kernel/l3fp-traps.dtx
-2023/12/08 | 73835 | macros/latex/contrib/l3kernel/l3fp-trig.dtx
-2023/12/08 | 4912 | macros/latex/contrib/l3kernel/l3fp-types.dtx
-2023/12/08 | 6435 | macros/latex/contrib/l3kernel/l3.ins
-2023/12/08 | 30508 | macros/latex/contrib/l3kernel/l3intarray.dtx
-2023/12/08 | 92984 | macros/latex/contrib/l3kernel/l3int.dtx
-2023/12/08 | 27481 | macros/latex/contrib/l3kernel/l3kernel-functions.dtx
-2023/12/08 | 129120 | macros/latex/contrib/l3kernel/l3keys.dtx
-2023/12/08 | 4574 | macros/latex/contrib/l3kernel/l3legacy.dtx
-2023/12/08 | 23828 | macros/latex/contrib/l3kernel/l3luatex.dtx
-2023/12/08 | 82320 | macros/latex/contrib/l3kernel/l3msg.dtx
-2023/12/08 | 80273 | macros/latex/contrib/l3kernel/l3names.dtx
-2023/12/08 | 122959 | macros/latex/contrib/l3kernel/l3news01.pdf
-2023/12/08 | 4937 | macros/latex/contrib/l3kernel/l3news01.tex
-2023/12/08 | 150919 | macros/latex/contrib/l3kernel/l3news02.pdf
-2023/12/08 | 6677 | macros/latex/contrib/l3kernel/l3news02.tex
-2023/12/08 | 148747 | macros/latex/contrib/l3kernel/l3news03.pdf
-2023/12/08 | 6482 | macros/latex/contrib/l3kernel/l3news03.tex
-2023/12/08 | 114754 | macros/latex/contrib/l3kernel/l3news04.pdf
-2023/12/08 | 5429 | macros/latex/contrib/l3kernel/l3news04.tex
-2023/12/08 | 112524 | macros/latex/contrib/l3kernel/l3news05.pdf
-2023/12/08 | 4716 | macros/latex/contrib/l3kernel/l3news05.tex
-2023/12/08 | 151591 | macros/latex/contrib/l3kernel/l3news06.pdf
-2023/12/08 | 6433 | macros/latex/contrib/l3kernel/l3news06.tex
-2023/12/08 | 128344 | macros/latex/contrib/l3kernel/l3news07.pdf
-2023/12/08 | 4977 | macros/latex/contrib/l3kernel/l3news07.tex
-2023/12/08 | 163484 | macros/latex/contrib/l3kernel/l3news08.pdf
-2023/12/08 | 9465 | macros/latex/contrib/l3kernel/l3news08.tex
-2023/12/08 | 250159 | macros/latex/contrib/l3kernel/l3news09.pdf
-2023/12/08 | 107383 | macros/latex/contrib/l3kernel/l3news09.tex
-2023/12/08 | 150302 | macros/latex/contrib/l3kernel/l3news10.pdf
-2023/12/08 | 9999 | macros/latex/contrib/l3kernel/l3news10.tex
-2023/12/08 | 170102 | macros/latex/contrib/l3kernel/l3news11.pdf
-2023/12/08 | 8481 | macros/latex/contrib/l3kernel/l3news11.tex
-2023/12/08 | 205020 | macros/latex/contrib/l3kernel/l3news12.pdf
-2023/12/08 | 14913 | macros/latex/contrib/l3kernel/l3news12.tex
-2023/12/08 | 396222 | macros/latex/contrib/l3kernel/l3news.pdf
-2023/12/08 | 4890 | macros/latex/contrib/l3kernel/l3news.tex
-2023/12/08 | 17153 | macros/latex/contrib/l3kernel/l3pdf.dtx
-2023/12/08 | 48174 | macros/latex/contrib/l3kernel/l3prefixes.csv
-2023/12/08 | 82696 | macros/latex/contrib/l3kernel/l3prefixes.pdf
-2023/12/08 | 2821 | macros/latex/contrib/l3kernel/l3prefixes.tex
-2023/12/08 | 70646 | macros/latex/contrib/l3kernel/l3prg.dtx
-2023/12/08 | 60385 | macros/latex/contrib/l3kernel/l3prop.dtx
-2023/12/08 | 35456 | macros/latex/contrib/l3kernel/l3quark.dtx
-2023/12/08 | 305449 | macros/latex/contrib/l3kernel/l3regex.dtx
-2023/12/08 | 98912 | macros/latex/contrib/l3kernel/l3seq.dtx
-2023/12/08 | 91722 | macros/latex/contrib/l3kernel/l3skip.dtx
-2023/12/08 | 40728 | macros/latex/contrib/l3kernel/l3sort.dtx
-2023/12/08 | 113427 | macros/latex/contrib/l3kernel/l3str-convert.dtx
-2023/12/08 | 82467 | macros/latex/contrib/l3kernel/l3str.dtx
-2023/12/08 | 296516 | macros/latex/contrib/l3kernel/l3styleguide.pdf
-2023/12/08 | 11884 | macros/latex/contrib/l3kernel/l3styleguide.tex
-2023/12/08 | 243162 | macros/latex/contrib/l3kernel/l3syntax-changes.pdf
-2023/12/08 | 6267 | macros/latex/contrib/l3kernel/l3syntax-changes.tex
-2023/12/08 | 36610 | macros/latex/contrib/l3kernel/l3sys.dtx
-2023/12/08 | 218315 | macros/latex/contrib/l3kernel/l3term-glossary.pdf
-2023/12/08 | 7079 | macros/latex/contrib/l3kernel/l3term-glossary.tex
-2023/12/08 | 76366 | macros/latex/contrib/l3kernel/l3text-case.dtx
-2023/12/08 | 48954 | macros/latex/contrib/l3kernel/l3text.dtx
-2023/12/08 | 16627 | macros/latex/contrib/l3kernel/l3text-map.dtx
-2023/12/08 | 20464 | macros/latex/contrib/l3kernel/l3text-purify.dtx
-2023/12/08 | 64037 | macros/latex/contrib/l3kernel/l3tl-analysis.dtx
-2023/12/08 | 12136 | macros/latex/contrib/l3kernel/l3tl-build.dtx
-2023/12/08 | 149134 | macros/latex/contrib/l3kernel/l3tl.dtx
-2023/12/08 | 116349 | macros/latex/contrib/l3kernel/l3token.dtx
-2023/12/08 | 35671 | macros/latex/contrib/l3kernel/l3unicode.dtx
-2023/12/08 | 3062 | macros/latex/contrib/l3kernel/README.md
-2023/12/08 | 24767 | macros/latex/contrib/l3kernel/source3body.tex
-2023/12/08 | 7508388 | macros/latex/contrib/l3kernel/source3.pdf
-2023/12/08 | 2266 | macros/latex/contrib/l3kernel/source3.tex
-2023/12/08 | 13952970 | macros/latex/contrib/l3kernel.zip
+2023/12/11 | 55705 | macros/latex/contrib/l3kernel/CHANGELOG.md
+2023/12/11 | 70977 | macros/latex/contrib/l3kernel/expl3.dtx
+2023/12/11 | 623156 | macros/latex/contrib/l3kernel/expl3.pdf
+2023/12/11 | 1774220 | macros/latex/contrib/l3kernel/interface3.pdf
+2023/12/11 | 2072 | macros/latex/contrib/l3kernel/interface3.tex
+2023/12/11 | 135206 | macros/latex/contrib/l3kernel/l3basics.dtx
+2023/12/11 | 18808 | macros/latex/contrib/l3kernel/l3bitset.dtx
+2023/12/11 | 12949 | macros/latex/contrib/l3kernel/l3bootstrap.dtx
+2023/12/11 | 87751 | macros/latex/contrib/l3kernel/l3box.dtx
+2023/12/11 | 5769 | macros/latex/contrib/l3kernel/l3candidates.dtx
+2023/12/11 | 33773 | macros/latex/contrib/l3kernel/l3cctab.dtx
+2023/12/11 | 83185 | macros/latex/contrib/l3kernel/l3clist.dtx
+2023/12/11 | 88099 | macros/latex/contrib/l3kernel/l3coffins.dtx
+2023/12/11 | 112272 | macros/latex/contrib/l3kernel/l3color.dtx
+2023/12/11 | 43418 | macros/latex/contrib/l3kernel/l3debug.dtx
+2023/12/11 | 30359 | macros/latex/contrib/l3kernel/l3deprecation.dtx
+2023/12/11 | 158158 | macros/latex/contrib/l3kernel/l3doc.dtx
+2023/12/11 | 563591 | macros/latex/contrib/l3kernel/l3doc.pdf
+2023/12/11 | 2385 | macros/latex/contrib/l3kernel/l3docstrip.dtx
+2023/12/11 | 151750 | macros/latex/contrib/l3kernel/l3docstrip.pdf
+2023/12/11 | 88673 | macros/latex/contrib/l3kernel/l3expan.dtx
+2023/12/11 | 144350 | macros/latex/contrib/l3kernel/l3file.dtx
+2023/12/11 | 10325 | macros/latex/contrib/l3kernel/l3flag.dtx
+2023/12/11 | 11779 | macros/latex/contrib/l3kernel/l3fparray.dtx
+2023/12/11 | 9446 | macros/latex/contrib/l3kernel/l3fp-assign.dtx
+2023/12/11 | 47239 | macros/latex/contrib/l3kernel/l3fp-aux.dtx
+2023/12/11 | 84790 | macros/latex/contrib/l3kernel/l3fp-basics.dtx
+2023/12/11 | 19638 | macros/latex/contrib/l3kernel/l3fp-convert.dtx
+2023/12/11 | 76529 | macros/latex/contrib/l3kernel/l3fp.dtx
+2023/12/11 | 49322 | macros/latex/contrib/l3kernel/l3fp-expo.dtx
+2023/12/11 | 51092 | macros/latex/contrib/l3kernel/l3fp-extended.dtx
+2023/12/11 | 7832 | macros/latex/contrib/l3kernel/l3fp-functions.dtx
+2023/12/11 | 23207 | macros/latex/contrib/l3kernel/l3fp-logic.dtx
+2023/12/11 | 105023 | macros/latex/contrib/l3kernel/l3fp-parse.dtx
+2023/12/11 | 23582 | macros/latex/contrib/l3kernel/l3fp-random.dtx
+2023/12/11 | 18529 | macros/latex/contrib/l3kernel/l3fp-round.dtx
+2023/12/11 | 20268 | macros/latex/contrib/l3kernel/l3fp-symbolic.dtx
+2023/12/11 | 12778 | macros/latex/contrib/l3kernel/l3fp-traps.dtx
+2023/12/11 | 73846 | macros/latex/contrib/l3kernel/l3fp-trig.dtx
+2023/12/11 | 4912 | macros/latex/contrib/l3kernel/l3fp-types.dtx
+2023/12/11 | 6503 | macros/latex/contrib/l3kernel/l3.ins
+2023/12/11 | 30506 | macros/latex/contrib/l3kernel/l3intarray.dtx
+2023/12/11 | 92984 | macros/latex/contrib/l3kernel/l3int.dtx
+2023/12/11 | 27482 | macros/latex/contrib/l3kernel/l3kernel-functions.dtx
+2023/12/11 | 129120 | macros/latex/contrib/l3kernel/l3keys.dtx
+2023/12/11 | 4571 | macros/latex/contrib/l3kernel/l3legacy.dtx
+2023/12/11 | 23829 | macros/latex/contrib/l3kernel/l3luatex.dtx
+2023/12/11 | 82320 | macros/latex/contrib/l3kernel/l3msg.dtx
+2023/12/11 | 80273 | macros/latex/contrib/l3kernel/l3names.dtx
+2023/12/11 | 122959 | macros/latex/contrib/l3kernel/l3news01.pdf
+2023/12/11 | 4937 | macros/latex/contrib/l3kernel/l3news01.tex
+2023/12/11 | 150919 | macros/latex/contrib/l3kernel/l3news02.pdf
+2023/12/11 | 6677 | macros/latex/contrib/l3kernel/l3news02.tex
+2023/12/11 | 148747 | macros/latex/contrib/l3kernel/l3news03.pdf
+2023/12/11 | 6482 | macros/latex/contrib/l3kernel/l3news03.tex
+2023/12/11 | 114754 | macros/latex/contrib/l3kernel/l3news04.pdf
+2023/12/11 | 5429 | macros/latex/contrib/l3kernel/l3news04.tex
+2023/12/11 | 112524 | macros/latex/contrib/l3kernel/l3news05.pdf
+2023/12/11 | 4716 | macros/latex/contrib/l3kernel/l3news05.tex
+2023/12/11 | 151591 | macros/latex/contrib/l3kernel/l3news06.pdf
+2023/12/11 | 6433 | macros/latex/contrib/l3kernel/l3news06.tex
+2023/12/11 | 128344 | macros/latex/contrib/l3kernel/l3news07.pdf
+2023/12/11 | 4977 | macros/latex/contrib/l3kernel/l3news07.tex
+2023/12/11 | 163484 | macros/latex/contrib/l3kernel/l3news08.pdf
+2023/12/11 | 9465 | macros/latex/contrib/l3kernel/l3news08.tex
+2023/12/11 | 250159 | macros/latex/contrib/l3kernel/l3news09.pdf
+2023/12/11 | 107383 | macros/latex/contrib/l3kernel/l3news09.tex
+2023/12/11 | 150302 | macros/latex/contrib/l3kernel/l3news10.pdf
+2023/12/11 | 9999 | macros/latex/contrib/l3kernel/l3news10.tex
+2023/12/11 | 170102 | macros/latex/contrib/l3kernel/l3news11.pdf
+2023/12/11 | 8481 | macros/latex/contrib/l3kernel/l3news11.tex
+2023/12/11 | 205020 | macros/latex/contrib/l3kernel/l3news12.pdf
+2023/12/11 | 14913 | macros/latex/contrib/l3kernel/l3news12.tex
+2023/12/11 | 396222 | macros/latex/contrib/l3kernel/l3news.pdf
+2023/12/11 | 4890 | macros/latex/contrib/l3kernel/l3news.tex
+2023/12/11 | 17153 | macros/latex/contrib/l3kernel/l3pdf.dtx
+2023/12/11 | 48174 | macros/latex/contrib/l3kernel/l3prefixes.csv
+2023/12/11 | 82696 | macros/latex/contrib/l3kernel/l3prefixes.pdf
+2023/12/11 | 2821 | macros/latex/contrib/l3kernel/l3prefixes.tex
+2023/12/11 | 70646 | macros/latex/contrib/l3kernel/l3prg.dtx
+2023/12/11 | 60385 | macros/latex/contrib/l3kernel/l3prop.dtx
+2023/12/11 | 35456 | macros/latex/contrib/l3kernel/l3quark.dtx
+2023/12/11 | 305447 | macros/latex/contrib/l3kernel/l3regex.dtx
+2023/12/11 | 98917 | macros/latex/contrib/l3kernel/l3seq.dtx
+2023/12/11 | 91722 | macros/latex/contrib/l3kernel/l3skip.dtx
+2023/12/11 | 40728 | macros/latex/contrib/l3kernel/l3sort.dtx
+2023/12/11 | 113425 | macros/latex/contrib/l3kernel/l3str-convert.dtx
+2023/12/11 | 82465 | macros/latex/contrib/l3kernel/l3str.dtx
+2023/12/11 | 296516 | macros/latex/contrib/l3kernel/l3styleguide.pdf
+2023/12/11 | 11884 | macros/latex/contrib/l3kernel/l3styleguide.tex
+2023/12/11 | 243162 | macros/latex/contrib/l3kernel/l3syntax-changes.pdf
+2023/12/11 | 6267 | macros/latex/contrib/l3kernel/l3syntax-changes.tex
+2023/12/11 | 36611 | macros/latex/contrib/l3kernel/l3sys.dtx
+2023/12/11 | 218315 | macros/latex/contrib/l3kernel/l3term-glossary.pdf
+2023/12/11 | 7079 | macros/latex/contrib/l3kernel/l3term-glossary.tex
+2023/12/11 | 76364 | macros/latex/contrib/l3kernel/l3text-case.dtx
+2023/12/11 | 48952 | macros/latex/contrib/l3kernel/l3text.dtx
+2023/12/11 | 16625 | macros/latex/contrib/l3kernel/l3text-map.dtx
+2023/12/11 | 20462 | macros/latex/contrib/l3kernel/l3text-purify.dtx
+2023/12/11 | 64035 | macros/latex/contrib/l3kernel/l3tl-analysis.dtx
+2023/12/11 | 12133 | macros/latex/contrib/l3kernel/l3tl-build.dtx
+2023/12/11 | 149134 | macros/latex/contrib/l3kernel/l3tl.dtx
+2023/12/11 | 116349 | macros/latex/contrib/l3kernel/l3token.dtx
+2023/12/11 | 35672 | macros/latex/contrib/l3kernel/l3unicode.dtx
+2023/12/11 | 3062 | macros/latex/contrib/l3kernel/README.md
+2023/12/11 | 24767 | macros/latex/contrib/l3kernel/source3body.tex
+2023/12/11 | 7510840 | macros/latex/contrib/l3kernel/source3.pdf
+2023/12/11 | 2266 | macros/latex/contrib/l3kernel/source3.tex
+2023/12/11 | 13960410 | macros/latex/contrib/l3kernel.zip
2023/10/10 | 7555 | macros/latex/contrib/l3packages/CHANGELOG.md
2023/10/10 | 1444 | macros/latex/contrib/l3packages/l3keys2e-demo.tex
2023/10/10 | 12312 | macros/latex/contrib/l3packages/l3keys2e.dtx
@@ -256070,10 +256062,10 @@
2023/04/19 | 2379457 | macros/unicodetex/latex/nwafuthesis/nwafuthesis.pdf
2023/04/19 | 1536 | macros/unicodetex/latex/nwafuthesis/README.md
2023/04/19 | 3472890 | macros/unicodetex/latex/nwafuthesis.zip
-2023/10/01 | 1071210 | macros/unicodetex/latex/polyglossia/polyglossia.dtx
-2023/10/01 | 371303 | macros/unicodetex/latex/polyglossia/polyglossia.pdf
-2023/10/01 | 1942 | macros/unicodetex/latex/polyglossia/README.md
-2023/10/01 | 600020 | macros/unicodetex/latex/polyglossia.zip
+2023/12/11 | 1069800 | macros/unicodetex/latex/polyglossia/polyglossia.dtx
+2023/12/11 | 374493 | macros/unicodetex/latex/polyglossia/polyglossia.pdf
+2023/12/11 | 1959 | macros/unicodetex/latex/polyglossia/README.md
+2023/12/11 | 603313 | macros/unicodetex/latex/polyglossia.zip
2023/09/22 | 90015 | macros/unicodetex/latex/quran-bn/doc/quran-bn-doc.pdf
2023/09/22 | 6514 | macros/unicodetex/latex/quran-bn/doc/quran-bn-doc.tex
2023/09/22 | 47641 | macros/unicodetex/latex/quran-bn/doc/quran-bn-test.pdf
@@ -291828,7 +291820,7 @@
2021/02/07 | 136588 | systems/texlive/tlnet/archive/babel-danish.doc.r57642.tar.xz
2021/02/07 | 2488 | systems/texlive/tlnet/archive/babel-danish.r57642.tar.xz
2021/02/07 | 5792 | systems/texlive/tlnet/archive/babel-danish.source.r57642.tar.xz
-2023/12/07 | 1042648 | systems/texlive/tlnet/archive/babel.doc.r69050.tar.xz
+2023/12/11 | 1043868 | systems/texlive/tlnet/archive/babel.doc.r69085.tar.xz
2021/08/30 | 157392 | systems/texlive/tlnet/archive/babel-dutch.doc.r60362.tar.xz
2021/08/30 | 2920 | systems/texlive/tlnet/archive/babel-dutch.r60362.tar.xz
2021/08/30 | 7968 | systems/texlive/tlnet/archive/babel-dutch.source.r60362.tar.xz
@@ -291917,7 +291909,7 @@
2021/07/10 | 146580 | systems/texlive/tlnet/archive/babel-portuges.doc.r59883.tar.xz
2021/07/10 | 2828 | systems/texlive/tlnet/archive/babel-portuges.r59883.tar.xz
2021/07/10 | 6692 | systems/texlive/tlnet/archive/babel-portuges.source.r59883.tar.xz
-2023/12/07 | 224616 | systems/texlive/tlnet/archive/babel.r69050.tar.xz
+2023/12/11 | 228304 | systems/texlive/tlnet/archive/babel.r69085.tar.xz
2021/04/07 | 113056 | systems/texlive/tlnet/archive/babel-romanian.doc.r58776.tar.xz
2021/04/07 | 2124 | systems/texlive/tlnet/archive/babel-romanian.r58776.tar.xz
2021/04/07 | 4308 | systems/texlive/tlnet/archive/babel-romanian.source.r58776.tar.xz
@@ -291948,7 +291940,7 @@
2021/11/07 | 209804 | systems/texlive/tlnet/archive/babel-sorbian.doc.r60975.tar.xz
2021/11/07 | 3156 | systems/texlive/tlnet/archive/babel-sorbian.r60975.tar.xz
2021/11/07 | 6328 | systems/texlive/tlnet/archive/babel-sorbian.source.r60975.tar.xz
-2023/12/07 | 859628 | systems/texlive/tlnet/archive/babel.source.r69050.tar.xz
+2023/12/11 | 883644 | systems/texlive/tlnet/archive/babel.source.r69085.tar.xz
2021/05/28 | 183140 | systems/texlive/tlnet/archive/babel-spanish.doc.r59367.tar.xz
2021/05/28 | 8876 | systems/texlive/tlnet/archive/babel-spanish.r59367.tar.xz
2021/05/28 | 29800 | systems/texlive/tlnet/archive/babel-spanish.source.r59367.tar.xz
@@ -292620,9 +292612,9 @@
2019/02/28 | 3184 | systems/texlive/tlnet/archive/booklet.r15878.tar.xz
2019/02/28 | 23512 | systems/texlive/tlnet/archive/booklet.source.r15878.tar.xz
2022/01/24 | 278744 | systems/texlive/tlnet/archive/bookman.r61719.tar.xz
-2023/12/10 | 485600 | systems/texlive/tlnet/archive/bookmark.doc.r69081.tar.xz
-2023/12/10 | 8444 | systems/texlive/tlnet/archive/bookmark.r69081.tar.xz
-2023/12/10 | 19372 | systems/texlive/tlnet/archive/bookmark.source.r69081.tar.xz
+2023/12/11 | 475876 | systems/texlive/tlnet/archive/bookmark.doc.r69084.tar.xz
+2023/12/11 | 8024 | systems/texlive/tlnet/archive/bookmark.r69084.tar.xz
+2023/12/11 | 18648 | systems/texlive/tlnet/archive/bookmark.source.r69084.tar.xz
2022/02/28 | 129520 | systems/texlive/tlnet/archive/book-of-common-prayer.doc.r62240.tar.xz
2022/02/28 | 2780 | systems/texlive/tlnet/archive/book-of-common-prayer.r62240.tar.xz
2020/06/08 | 985580 | systems/texlive/tlnet/archive/bookshelf.doc.r55475.tar.xz
@@ -303032,7 +303024,7 @@
2022/09/13 | 600 | systems/texlive/tlnet/archive/texlive-scripts.amd64-freebsd.r64356.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.amd64-netbsd.r64356.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.armhf-linux.r64356.tar.xz
-2023/12/10 | 430688 | systems/texlive/tlnet/archive/texlive-scripts.doc.r69075.tar.xz
+2023/12/11 | 430688 | systems/texlive/tlnet/archive/texlive-scripts.doc.r69083.tar.xz
2020/01/27 | 916 | systems/texlive/tlnet/archive/texlive-scripts-extra.aarch64-linux.r53577.tar.xz
2020/01/27 | 924 | systems/texlive/tlnet/archive/texlive-scripts-extra.amd64-freebsd.r53577.tar.xz
2020/01/27 | 916 | systems/texlive/tlnet/archive/texlive-scripts-extra.amd64-netbsd.r53577.tar.xz
@@ -303054,7 +303046,7 @@
2022/09/13 | 592 | systems/texlive/tlnet/archive/texlive-scripts.i386-linux.r64356.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.i386-netbsd.r64356.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.i386-solaris.r64356.tar.xz
-2023/12/10 | 114268 | systems/texlive/tlnet/archive/texlive-scripts.r69075.tar.xz
+2023/12/11 | 114256 | systems/texlive/tlnet/archive/texlive-scripts.r69083.tar.xz
2022/09/13 | 580 | systems/texlive/tlnet/archive/texlive-scripts.universal-darwin.r64356.tar.xz
2023/05/14 | 60312 | systems/texlive/tlnet/archive/texlive-scripts.windows.r67095.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.x86_64-cygwin.r64356.tar.xz
@@ -303286,9 +303278,9 @@
2019/02/28 | 500 | systems/texlive/tlnet/archive/theatre.r45363.tar.xz
2020/03/24 | 333032 | systems/texlive/tlnet/archive/theoremref.doc.r54512.tar.xz
2020/03/24 | 4104 | systems/texlive/tlnet/archive/theoremref.r54512.tar.xz
-2023/12/08 | 269568 | systems/texlive/tlnet/archive/thermodynamics.doc.r69058.tar.xz
-2023/12/08 | 9172 | systems/texlive/tlnet/archive/thermodynamics.r69058.tar.xz
-2023/12/08 | 34076 | systems/texlive/tlnet/archive/thermodynamics.source.r69058.tar.xz
+2023/12/11 | 266980 | systems/texlive/tlnet/archive/thermodynamics.doc.r69086.tar.xz
+2023/12/11 | 9176 | systems/texlive/tlnet/archive/thermodynamics.r69086.tar.xz
+2023/12/11 | 34088 | systems/texlive/tlnet/archive/thermodynamics.source.r69086.tar.xz
2021/08/13 | 322100 | systems/texlive/tlnet/archive/thesis-ekf.doc.r60228.tar.xz
2021/08/13 | 113096 | systems/texlive/tlnet/archive/thesis-ekf.r60228.tar.xz
2021/08/13 | 9064 | systems/texlive/tlnet/archive/thesis-ekf.source.r60228.tar.xz
@@ -304942,16 +304934,16 @@
2020/07/18 | 47816 | systems/texlive/tlnet/archive/zztex.doc.r55862.tar.xz
2020/07/18 | 101724 | systems/texlive/tlnet/archive/zztex.r55862.tar.xz
2023/08/07 | 125713 | systems/texlive/tlnet/install-tl
-2023/12/10 | 5742920 | systems/texlive/tlnet/install-tl-unx.tar.gz
-2023/12/10 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
-2023/12/10 | 488 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2023/12/11 | 5741537 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2023/12/11 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2023/12/11 | 488 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
2023/05/13 | 5083 | systems/texlive/tlnet/install-tl-windows.bat
-2023/12/10 | 21031770 | systems/texlive/tlnet/install-tl-windows.exe
-2023/12/10 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
-2023/12/10 | 488 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2023/12/10 | 26029654 | systems/texlive/tlnet/install-tl.zip
-2023/12/10 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
-2023/12/10 | 488 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2023/12/11 | 21035152 | systems/texlive/tlnet/install-tl-windows.exe
+2023/12/11 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2023/12/11 | 488 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2023/12/11 | 26029651 | systems/texlive/tlnet/install-tl.zip
+2023/12/11 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2023/12/11 | 488 | systems/texlive/tlnet/install-tl.zip.sha512.asc
2023/03/19 | 1229 | systems/texlive/tlnet/README.md
2023/03/19 | 0 | systems/texlive/tlnet/TEXLIVE_2023
2023/01/17 | 8401 | systems/texlive/tlnet/tlpkg/gpg/pubring.gpg
@@ -304961,7 +304953,7 @@
2023/01/17 | 1280 | systems/texlive/tlnet/tlpkg/gpg/trustdb.gpg
2023/09/20 | 50622 | systems/texlive/tlnet/tlpkg/installer/config.guess
2010/11/11 | 11651 | systems/texlive/tlnet/tlpkg/installer/COPYING.MinGW-runtime.txt
-2023/12/09 | 7453 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
+2023/12/10 | 7457 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2023/08/23 | 221470 | systems/texlive/tlnet/tlpkg/installer/curl/curl-ca-bundle.crt
2020/04/15 | 2606592 | systems/texlive/tlnet/tlpkg/installer/curl/curl.exe
2017/04/16 | 2629 | systems/texlive/tlnet/tlpkg/installer/installer-options.txt
@@ -305003,12 +304995,12 @@
2023/02/21 | 20371 | systems/texlive/tlnet/tlpkg/TeXLive/TLCrypto.pm
2021/12/21 | 5429 | systems/texlive/tlnet/tlpkg/TeXLive/TLDownload.pm
2023/04/08 | 28167 | systems/texlive/tlnet/tlpkg/TeXLive/TLPaper.pm
-2023/12/10 | 18378476 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
-2023/12/10 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2023/12/11 | 18381140 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2023/12/11 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
2023/10/16 | 87924 | systems/texlive/tlnet/tlpkg/TeXLive/TLPDB.pm
-2023/12/10 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
-2023/12/10 | 488 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2023/12/10 | 2493648 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2023/12/11 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2023/12/11 | 488 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2023/12/11 | 2492392 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
2023/02/20 | 58928 | systems/texlive/tlnet/tlpkg/TeXLive/TLPOBJ.pm
2023/06/11 | 42749 | systems/texlive/tlnet/tlpkg/TeXLive/TLPSRC.pm
2023/02/21 | 16138 | systems/texlive/tlnet/tlpkg/TeXLive/TLTREE.pm
@@ -316009,7 +316001,7 @@
2014/07/05 | 611 | systems/win32/yandy/README
2014/07/05 | 1004628 | systems/win32/yandy/yandy-src.tar.xz
2014/07/05 | 1012416 | systems/win32/yandy.zip
-2023/12/11 | 186 | timestamp
+2023/12/12 | 186 | timestamp
2002/08/26 | 61898 | usergrps/dante/antrag.pdf
2002/08/26 | 118217 | usergrps/dante/antrag.ps
2021/11/11 | 917 | usergrps/dante/dtk/doc/beispiel.bib
diff --git a/FILES.byname.gz b/FILES.byname.gz
index 632bf671e8..3f4f3d798d 100644
--- a/FILES.byname.gz
+++ b/FILES.byname.gz
Binary files differ
diff --git a/FILES.last07days b/FILES.last07days
index b82e9cfc74..d66fe0d543 100644
--- a/FILES.last07days
+++ b/FILES.last07days
@@ -1,3 +1,169 @@
+2023/12/11 | 9999 | macros/latex/contrib/l3kernel/l3news10.tex
+2023/12/11 | 98917 | macros/latex/contrib/l3kernel/l3seq.dtx
+2023/12/11 | 95853 | macros/latex/contrib/jnuexam/exam-a-empty.pdf
+2023/12/11 | 95809 | macros/latex/contrib/jnuexam/exam-b-empty.pdf
+2023/12/11 | 9465 | macros/latex/contrib/l3kernel/l3news08.tex
+2023/12/11 | 9446 | macros/latex/contrib/l3kernel/l3fp-assign.dtx
+2023/12/11 | 92984 | macros/latex/contrib/l3kernel/l3int.dtx
+2023/12/11 | 92436 | fonts/parsimatn/parsimatn-example-of-use.pdf
+2023/12/11 | 91810 | macros/latex/contrib/covington/covington.tex
+2023/12/11 | 9176 | systems/texlive/tlnet/archive/thermodynamics.r69086.tar.xz
+2023/12/11 | 91722 | macros/latex/contrib/l3kernel/l3skip.dtx
+2023/12/11 | 88673 | macros/latex/contrib/l3kernel/l3expan.dtx
+2023/12/11 | 883644 | systems/texlive/tlnet/archive/babel.source.r69085.tar.xz
+2023/12/11 | 88099 | macros/latex/contrib/l3kernel/l3coffins.dtx
+2023/12/11 | 87751 | macros/latex/contrib/l3kernel/l3box.dtx
+2023/12/11 | 8481 | macros/latex/contrib/l3kernel/l3news11.tex
+2023/12/11 | 84790 | macros/latex/contrib/l3kernel/l3fp-basics.dtx
+2023/12/11 | 83185 | macros/latex/contrib/l3kernel/l3clist.dtx
+2023/12/11 | 82696 | macros/latex/contrib/l3kernel/l3prefixes.pdf
+2023/12/11 | 82465 | macros/latex/contrib/l3kernel/l3str.dtx
+2023/12/11 | 82320 | macros/latex/contrib/l3kernel/l3msg.dtx
+2023/12/11 | 81129 | macros/latex/contrib/jnuexam/jnuexam.pdf
+2023/12/11 | 80273 | macros/latex/contrib/l3kernel/l3names.dtx
+2023/12/11 | 8024 | systems/texlive/tlnet/archive/bookmark.r69084.tar.xz
+2023/12/11 | 7832 | macros/latex/contrib/l3kernel/l3fp-functions.dtx
+2023/12/11 | 765 | fonts/parsimatn/README.md
+2023/12/11 | 76529 | macros/latex/contrib/l3kernel/l3fp.dtx
+2023/12/11 | 76364 | macros/latex/contrib/l3kernel/l3text-case.dtx
+2023/12/11 | 7526 | macros/latex/contrib/covington/README
+2023/12/11 | 7510840 | macros/latex/contrib/l3kernel/source3.pdf
+2023/12/11 | 73846 | macros/latex/contrib/l3kernel/l3fp-trig.dtx
+2023/12/11 | 70977 | macros/latex/contrib/l3kernel/expl3.dtx
+2023/12/11 | 7079 | macros/latex/contrib/l3kernel/l3term-glossary.tex
+2023/12/11 | 70646 | macros/latex/contrib/l3kernel/l3prg.dtx
+2023/12/11 | 695176 | fonts/parsimatn.zip
+2023/12/11 | 6677 | macros/latex/contrib/l3kernel/l3news02.tex
+2023/12/11 | 6503 | macros/latex/contrib/l3kernel/l3.ins
+2023/12/11 | 6482 | macros/latex/contrib/l3kernel/l3news03.tex
+2023/12/11 | 6433 | macros/latex/contrib/l3kernel/l3news06.tex
+2023/12/11 | 64035 | macros/latex/contrib/l3kernel/l3tl-analysis.dtx
+2023/12/11 | 6267 | macros/latex/contrib/l3kernel/l3syntax-changes.tex
+2023/12/11 | 623156 | macros/latex/contrib/l3kernel/expl3.pdf
+2023/12/11 | 62119 | macros/latex/contrib/covington/covington.sty
+2023/12/11 | 60385 | macros/latex/contrib/l3kernel/l3prop.dtx
+2023/12/11 | 603313 | macros/unicodetex/latex/polyglossia.zip
+2023/12/11 | 592969 | macros/latex/contrib/covington.zip
+2023/12/11 | 5769 | macros/latex/contrib/l3kernel/l3candidates.dtx
+2023/12/11 | 5741537 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2023/12/11 | 563591 | macros/latex/contrib/l3kernel/l3doc.pdf
+2023/12/11 | 557927 | macros/latex/contrib/covington/covington.pdf
+2023/12/11 | 55705 | macros/latex/contrib/l3kernel/CHANGELOG.md
+2023/12/11 | 5429 | macros/latex/contrib/l3kernel/l3news04.tex
+2023/12/11 | 51092 | macros/latex/contrib/l3kernel/l3fp-extended.dtx
+2023/12/11 | 500462 | macros/latex/contrib/jnuexam.zip
+2023/12/11 | 4977 | macros/latex/contrib/l3kernel/l3news07.tex
+2023/12/11 | 4937 | macros/latex/contrib/l3kernel/l3news01.tex
+2023/12/11 | 49322 | macros/latex/contrib/l3kernel/l3fp-expo.dtx
+2023/12/11 | 4912 | macros/latex/contrib/l3kernel/l3fp-types.dtx
+2023/12/11 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2023/12/11 | 48952 | macros/latex/contrib/l3kernel/l3text.dtx
+2023/12/11 | 4890 | macros/latex/contrib/l3kernel/l3news.tex
+2023/12/11 | 488 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2023/12/11 | 488 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2023/12/11 | 488 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2023/12/11 | 488 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2023/12/11 | 48174 | macros/latex/contrib/l3kernel/l3prefixes.csv
+2023/12/11 | 475876 | systems/texlive/tlnet/archive/bookmark.doc.r69084.tar.xz
+2023/12/11 | 47239 | macros/latex/contrib/l3kernel/l3fp-aux.dtx
+2023/12/11 | 4716 | macros/latex/contrib/l3kernel/l3news05.tex
+2023/12/11 | 4571 | macros/latex/contrib/l3kernel/l3legacy.dtx
+2023/12/11 | 43418 | macros/latex/contrib/l3kernel/l3debug.dtx
+2023/12/11 | 430688 | systems/texlive/tlnet/archive/texlive-scripts.doc.r69083.tar.xz
+2023/12/11 | 42523 | macros/latex/contrib/jnuexam/jnuexam.cls
+2023/12/11 | 4113948 | biblio/ctan-bibdata.zip
+2023/12/11 | 40728 | macros/latex/contrib/l3kernel/l3sort.dtx
+2023/12/11 | 396222 | macros/latex/contrib/l3kernel/l3news.pdf
+2023/12/11 | 374493 | macros/unicodetex/latex/polyglossia/polyglossia.pdf
+2023/12/11 | 3708800 | biblio/ctan-bibdata/ctan.pdf
+2023/12/11 | 36611 | macros/latex/contrib/l3kernel/l3sys.dtx
+2023/12/11 | 35672 | macros/latex/contrib/l3kernel/l3unicode.dtx
+2023/12/11 | 35456 | macros/latex/contrib/l3kernel/l3quark.dtx
+2023/12/11 | 34088 | systems/texlive/tlnet/archive/thermodynamics.source.r69086.tar.xz
+2023/12/11 | 33773 | macros/latex/contrib/l3kernel/l3cctab.dtx
+2023/12/11 | 3062 | macros/latex/contrib/l3kernel/README.md
+2023/12/11 | 305447 | macros/latex/contrib/l3kernel/l3regex.dtx
+2023/12/11 | 30506 | macros/latex/contrib/l3kernel/l3intarray.dtx
+2023/12/11 | 30359 | macros/latex/contrib/l3kernel/l3deprecation.dtx
+2023/12/11 | 296516 | macros/latex/contrib/l3kernel/l3styleguide.pdf
+2023/12/11 | 290892 | fonts/parsimatn/ParsiMatn-Italic.ttf
+2023/12/11 | 2831733 | biblio/ctan-bibdata/ctan.bib
+2023/12/11 | 2821 | macros/latex/contrib/l3kernel/l3prefixes.tex
+2023/12/11 | 280908 | fonts/parsimatn/ParsiMatn-Regular.ttf
+2023/12/11 | 27482 | macros/latex/contrib/l3kernel/l3kernel-functions.dtx
+2023/12/11 | 268672 | fonts/parsimatn/ParsiMatn-BoldItalic.ttf
+2023/12/11 | 266980 | systems/texlive/tlnet/archive/thermodynamics.doc.r69086.tar.xz
+2023/12/11 | 26029651 | systems/texlive/tlnet/install-tl.zip
+2023/12/11 | 259944 | fonts/parsimatn/ParsiMatn-Bold.ttf
+2023/12/11 | 250159 | macros/latex/contrib/l3kernel/l3news09.pdf
+2023/12/11 | 2492392 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2023/12/11 | 24767 | macros/latex/contrib/l3kernel/source3body.tex
+2023/12/11 | 243162 | macros/latex/contrib/l3kernel/l3syntax-changes.pdf
+2023/12/11 | 2385 | macros/latex/contrib/l3kernel/l3docstrip.dtx
+2023/12/11 | 23829 | macros/latex/contrib/l3kernel/l3luatex.dtx
+2023/12/11 | 23582 | macros/latex/contrib/l3kernel/l3fp-random.dtx
+2023/12/11 | 23207 | macros/latex/contrib/l3kernel/l3fp-logic.dtx
+2023/12/11 | 228304 | systems/texlive/tlnet/archive/babel.r69085.tar.xz
+2023/12/11 | 2266 | macros/latex/contrib/l3kernel/source3.tex
+2023/12/11 | 218315 | macros/latex/contrib/l3kernel/l3term-glossary.pdf
+2023/12/11 | 21035152 | systems/texlive/tlnet/install-tl-windows.exe
+2023/12/11 | 2072 | macros/latex/contrib/l3kernel/interface3.tex
+2023/12/11 | 205020 | macros/latex/contrib/l3kernel/l3news12.pdf
+2023/12/11 | 20462 | macros/latex/contrib/l3kernel/l3text-purify.dtx
+2023/12/11 | 20268 | macros/latex/contrib/l3kernel/l3fp-symbolic.dtx
+2023/12/11 | 19638 | macros/latex/contrib/l3kernel/l3fp-convert.dtx
+2023/12/11 | 1959 | macros/unicodetex/latex/polyglossia/README.md
+2023/12/11 | 18808 | macros/latex/contrib/l3kernel/l3bitset.dtx
+2023/12/11 | 18648 | systems/texlive/tlnet/archive/bookmark.source.r69084.tar.xz
+2023/12/11 | 18529 | macros/latex/contrib/l3kernel/l3fp-round.dtx
+2023/12/11 | 18381140 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2023/12/11 | 1774220 | macros/latex/contrib/l3kernel/interface3.pdf
+2023/12/11 | 17153 | macros/latex/contrib/l3kernel/l3pdf.dtx
+2023/12/11 | 170102 | macros/latex/contrib/l3kernel/l3news11.pdf
+2023/12/11 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
+2023/12/11 | 16625 | macros/latex/contrib/l3kernel/l3text-map.dtx
+2023/12/11 | 163484 | macros/latex/contrib/l3kernel/l3news08.pdf
+2023/12/11 | 158158 | macros/latex/contrib/l3kernel/l3doc.dtx
+2023/12/11 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2023/12/11 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2023/12/11 | 151750 | macros/latex/contrib/l3kernel/l3docstrip.pdf
+2023/12/11 | 151591 | macros/latex/contrib/l3kernel/l3news06.pdf
+2023/12/11 | 150919 | macros/latex/contrib/l3kernel/l3news02.pdf
+2023/12/11 | 150302 | macros/latex/contrib/l3kernel/l3news10.pdf
+2023/12/11 | 14913 | macros/latex/contrib/l3kernel/l3news12.tex
+2023/12/11 | 149134 | macros/latex/contrib/l3kernel/l3tl.dtx
+2023/12/11 | 148747 | macros/latex/contrib/l3kernel/l3news03.pdf
+2023/12/11 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2023/12/11 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2023/12/11 | 144350 | macros/latex/contrib/l3kernel/l3file.dtx
+2023/12/11 | 14227153 | install/macros/latex/contrib/l3kernel.tds.zip
+2023/12/11 | 13960410 | macros/latex/contrib/l3kernel.zip
+2023/12/11 | 13581 | macros/latex/contrib/jnuexam/jnuexam.tex
+2023/12/11 | 135206 | macros/latex/contrib/l3kernel/l3basics.dtx
+2023/12/11 | 1345696 | install/macros/unicodetex/latex/polyglossia.tds.zip
+2023/12/11 | 12949 | macros/latex/contrib/l3kernel/l3bootstrap.dtx
+2023/12/11 | 129120 | macros/latex/contrib/l3kernel/l3keys.dtx
+2023/12/11 | 128344 | macros/latex/contrib/l3kernel/l3news07.pdf
+2023/12/11 | 12778 | macros/latex/contrib/l3kernel/l3fp-traps.dtx
+2023/12/11 | 122959 | macros/latex/contrib/l3kernel/l3news01.pdf
+2023/12/11 | 12133 | macros/latex/contrib/l3kernel/l3tl-build.dtx
+2023/12/11 | 11884 | macros/latex/contrib/l3kernel/l3styleguide.tex
+2023/12/11 | 11779 | macros/latex/contrib/l3kernel/l3fparray.dtx
+2023/12/11 | 116349 | macros/latex/contrib/l3kernel/l3token.dtx
+2023/12/11 | 114754 | macros/latex/contrib/l3kernel/l3news04.pdf
+2023/12/11 | 114256 | systems/texlive/tlnet/archive/texlive-scripts.r69083.tar.xz
+2023/12/11 | 113425 | macros/latex/contrib/l3kernel/l3str-convert.dtx
+2023/12/11 | 112524 | macros/latex/contrib/l3kernel/l3news05.pdf
+2023/12/11 | 112272 | macros/latex/contrib/l3kernel/l3color.dtx
+2023/12/11 | 109655 | macros/latex/contrib/jnuexam/exam-a-answer.pdf
+2023/12/11 | 109567 | macros/latex/contrib/jnuexam/exam-b-answer.pdf
+2023/12/11 | 10891 | fonts/parsimatn/parsimatn-example-of-use.tex
+2023/12/11 | 107383 | macros/latex/contrib/l3kernel/l3news09.tex
+2023/12/11 | 1069800 | macros/unicodetex/latex/polyglossia/polyglossia.dtx
+2023/12/11 | 105023 | macros/latex/contrib/l3kernel/l3fp-parse.dtx
+2023/12/11 | 1043868 | systems/texlive/tlnet/archive/babel.doc.r69085.tar.xz
+2023/12/11 | 10378 | macros/latex/contrib/jnuexam/exam-a-answer.tex
+2023/12/11 | 10325 | macros/latex/contrib/l3kernel/l3flag.dtx
2023/12/10 | 982866 | systems/win32/miktex/tm/packages/scrabble__doc.tar.lzma
2023/12/10 | 962 | systems/win32/miktex/tm/packages/pr.ini
2023/12/10 | 9360 | systems/win32/miktex/tm/packages/thermodynamics.tar.lzma
@@ -9,7 +175,6 @@
2023/12/10 | 860123 | systems/win32/miktex/tm/packages/babel__source.tar.lzma
2023/12/10 | 8485740 | systems/texlive/tlnet/archive/pdfmanagement-testphase.doc.r69078.tar.xz
2023/12/10 | 8459077 | systems/win32/miktex/tm/packages/pdfmanagement-testphase__doc.tar.lzma
-2023/12/10 | 8444 | systems/texlive/tlnet/archive/bookmark.r69081.tar.xz
2023/12/10 | 830150 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
2023/12/10 | 8225 | systems/win32/miktex/tm/packages/hvextern.tar.lzma
2023/12/10 | 82109 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
@@ -26,6 +191,7 @@
2023/12/10 | 76213 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
2023/12/10 | 7546 | systems/win32/miktex/tm/packages/tutodoc.tar.lzma
2023/12/10 | 75057 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
+2023/12/10 | 7457 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2023/12/10 | 74459 | systems/win32/miktex/tm/packages/yamlvars__doc.tar.lzma
2023/12/10 | 73407 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
2023/12/10 | 73380 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
@@ -53,7 +219,6 @@
2023/12/10 | 58936 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma
2023/12/10 | 585258 | systems/win32/miktex/tm/packages/tkz-elements__doc.tar.lzma
2023/12/10 | 5764 | systems/win32/miktex/tm/packages/inconsolata-nerd-font__source.tar.lzma
-2023/12/10 | 5742920 | systems/texlive/tlnet/install-tl-unx.tar.gz
2023/12/10 | 570304 | systems/win32/miktex/tm/packages/tkz-elements__source.tar.lzma
2023/12/10 | 560791 | systems/win32/miktex/tm/packages/covington__doc.tar.lzma
2023/12/10 | 55957 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
@@ -71,13 +236,7 @@
2023/12/10 | 49722 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
2023/12/10 | 494460 | macros/latex/contrib/bookmark/bookmark.pdf
2023/12/10 | 493123 | macros/latex/contrib/bookmark.zip
-2023/12/10 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
-2023/12/10 | 488 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2023/12/10 | 488 | systems/texlive/tlnet/install-tl.zip.sha512.asc
-2023/12/10 | 488 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2023/12/10 | 488 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
2023/12/10 | 48664 | systems/win32/miktex/tm/packages/proflycee.tar.lzma
-2023/12/10 | 485600 | systems/texlive/tlnet/archive/bookmark.doc.r69081.tar.xz
2023/12/10 | 484858 | systems/win32/miktex/tm/packages/bookmark__doc.tar.lzma
2023/12/10 | 48280 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
2023/12/10 | 48275 | systems/win32/miktex/tm/packages/fbox__doc.tar.lzma
@@ -89,10 +248,8 @@
2023/12/10 | 44096 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
2023/12/10 | 4317 | systems/win32/miktex/tm/packages/ltxcmds.tar.lzma
2023/12/10 | 43117 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
-2023/12/10 | 430688 | systems/texlive/tlnet/archive/texlive-scripts.doc.r69075.tar.xz
2023/12/10 | 42448 | systems/win32/miktex/tm/packages/nicematrix.tar.lzma
2023/12/10 | 419191 | macros/latex/required/babel/base/babel.pdf
-2023/12/10 | 4113943 | biblio/ctan-bibdata.zip
2023/12/10 | 4105 | systems/win32/miktex/tm/packages/decimalcomma__source.tar.lzma
2023/12/10 | 406527 | systems/win32/miktex/tm/packages/ltxcmds__doc.tar.lzma
2023/12/10 | 40373 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
@@ -102,7 +259,6 @@
2023/12/10 | 3770 | systems/win32/miktex/tm/packages/scrabble.tar.lzma
2023/12/10 | 37627 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
2023/12/10 | 37166 | systems/win32/miktex/tm/packages/oberdiek.tar.lzma
-2023/12/10 | 3708800 | biblio/ctan-bibdata/ctan.pdf
2023/12/10 | 3704849 | install/macros/latex/required/babel-base.tds.zip
2023/12/10 | 36772 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
2023/12/10 | 36716 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
@@ -127,19 +283,16 @@
2023/12/10 | 287447 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
2023/12/10 | 2867 | systems/win32/miktex/tm/packages/fbox__source.tar.lzma
2023/12/10 | 2844414 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
-2023/12/10 | 2831733 | biblio/ctan-bibdata/ctan.bib
2023/12/10 | 27883 | systems/win32/miktex/tm/packages/luamplib__source.tar.lzma
2023/12/10 | 272070 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
2023/12/10 | 27203 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
2023/12/10 | 266577 | systems/win32/miktex/tm/packages/argumentation__doc.tar.lzma
2023/12/10 | 265825 | systems/win32/miktex/tm/packages/thermodynamics__doc.tar.lzma
2023/12/10 | 26275 | systems/win32/miktex/tm/packages/heria__source.tar.lzma
-2023/12/10 | 26029654 | systems/texlive/tlnet/install-tl.zip
2023/12/10 | 25631 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
2023/12/10 | 25612 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
2023/12/10 | 2522215 | systems/win32/miktex/tm/packages/inconsolata-nerd-font.tar.lzma
2023/12/10 | 2498 | macros/latex/required/babel/base/README.md
-2023/12/10 | 2493648 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
2023/12/10 | 249321 | systems/win32/miktex/tm/packages/next/miktex-hitex-bin-x64.tar.lzma
2023/12/10 | 245915 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
2023/12/10 | 24134 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
@@ -158,7 +311,6 @@
2023/12/10 | 218845 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
2023/12/10 | 217618 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
2023/12/10 | 2166 | systems/win32/miktex/tm/packages/fbox.tar.lzma
-2023/12/10 | 21031770 | systems/texlive/tlnet/install-tl-windows.exe
2023/12/10 | 2100921 | systems/win32/miktex/tm/packages/nicematrix__doc.tar.lzma
2023/12/10 | 20580 | systems/win32/miktex/tm/packages/simpleicons__source.tar.lzma
2023/12/10 | 203241 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
@@ -170,10 +322,8 @@
2023/12/10 | 1982372 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
2023/12/10 | 19710 | systems/win32/miktex/tm/packages/bookmark__source.tar.lzma
2023/12/10 | 195624 | systems/win32/miktex/tm/packages/circuitikz.tar.lzma
-2023/12/10 | 19372 | systems/texlive/tlnet/archive/bookmark.source.r69081.tar.xz
2023/12/10 | 1868419 | systems/win32/miktex/tm/packages/circuitikz__doc.tar.lzma
2023/12/10 | 1868044 | systems/texlive/tlnet/archive/circuitikz.doc.r69077.tar.xz
-2023/12/10 | 18378476 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
2023/12/10 | 182860 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
2023/12/10 | 17947 | systems/win32/miktex/tm/packages/heria.tar.lzma
2023/12/10 | 178189 | systems/win32/miktex/tm/packages/l3kernel.tar.lzma
@@ -183,9 +333,9 @@
2023/12/10 | 1708799 | systems/win32/miktex/tm/packages/newcomputermodern__doc.tar.lzma
2023/12/10 | 1706555 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
2023/12/10 | 1706072 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
-2023/12/10 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
2023/12/10 | 1661635 | systems/win32/miktex/tm/packages/proflycee__source.tar.lzma
2023/12/10 | 16492 | systems/win32/miktex/tm/packages/blopentype.tar.lzma
+2023/12/10 | 163 | macros/latex/contrib/jnuexam/exam-b-answer.tex
2023/12/10 | 16308 | systems/texlive/tlnet/archive/blopentype.r69080.tar.xz
2023/12/10 | 16033 | systems/win32/miktex/tm/packages/tkz-elements.tar.lzma
2023/12/10 | 159986 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
@@ -193,15 +343,11 @@
2023/12/10 | 15865 | systems/win32/miktex/tm/packages/wheelchart.tar.lzma
2023/12/10 | 157461 | systems/win32/miktex/tm/packages/luamplib__doc.tar.lzma
2023/12/10 | 1541097 | systems/win32/miktex/tm/packages/libertinust1math__doc.tar.lzma
-2023/12/10 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
2023/12/10 | 1531637 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
-2023/12/10 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
2023/12/10 | 1501080 | systems/win32/miktex/tm/packages/proflycee__doc.tar.lzma
2023/12/10 | 149464 | systems/texlive/tlnet/archive/blopentype.doc.r69080.tar.xz
2023/12/10 | 149084 | systems/win32/miktex/tm/packages/blopentype__doc.tar.lzma
-2023/12/10 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
2023/12/10 | 14587 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
-2023/12/10 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
2023/12/10 | 1438440 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
2023/12/10 | 143662 | systems/win32/miktex/tm/packages/pdfmanagement-testphase__source.tar.lzma
2023/12/10 | 141981 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
@@ -226,7 +372,6 @@
2023/12/10 | 117861 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
2023/12/10 | 1172105 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
2023/12/10 | 1150 | systems/win32/miktex/tm/packages/next/pr.ini
-2023/12/10 | 114268 | systems/texlive/tlnet/archive/texlive-scripts.r69075.tar.xz
2023/12/10 | 112417 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
2023/12/10 | 1121840 | systems/win32/miktex/tm/packages/hvextern__doc.tar.lzma
2023/12/10 | 1121244 | systems/texlive/tlnet/archive/context.windows.r69076.tar.xz
@@ -264,7 +409,6 @@
2023/12/09 | 758991 | graphics/pgf/contrib/circuitikz/tex/circuitikz-0.9.6-body.tex
2023/12/09 | 751663 | graphics/pgf/contrib/circuitikz/tex/t-circuitikz-0.9.6.tex
2023/12/09 | 751043 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdf
-2023/12/09 | 7453 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2023/12/09 | 728 | graphics/pgf/contrib/circuitikz/tex/circuitikz-0.4.sty
2023/12/09 | 704238 | macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf
2023/12/09 | 690729 | graphics/pgf/contrib/circuitikz/tex/circuitikz-0.9.3-body.tex
@@ -380,57 +524,31 @@
2023/12/09 | 1021798 | graphics/pgf/contrib/circuitikz/tex/circuitikz-1.2.7-body.tex
2023/12/09 | 1014383 | graphics/pgf/contrib/circuitikz/tex/t-circuitikz-1.2.7.tex
2023/12/09 | 100673 | macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx
-2023/12/08 | 9999 | macros/latex/contrib/l3kernel/l3news10.tex
2023/12/08 | 996 | macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_regular.lua
-2023/12/08 | 98912 | macros/latex/contrib/l3kernel/l3seq.dtx
2023/12/08 | 970 | macros/latex/contrib/onedown/Examples/bidNE.tex
2023/12/08 | 96207 | macros/luatex/generic/luamplib/luamplib.dtx
2023/12/08 | 96044 | macros/latex/contrib/l3experimental/l3galley.dtx
-2023/12/08 | 9465 | macros/latex/contrib/l3kernel/l3news08.tex
-2023/12/08 | 9435 | macros/latex/contrib/l3kernel/l3fp-assign.dtx
2023/12/08 | 9417 | macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_line.lua
-2023/12/08 | 92984 | macros/latex/contrib/l3kernel/l3int.dtx
-2023/12/08 | 9172 | systems/texlive/tlnet/archive/thermodynamics.r69058.tar.xz
-2023/12/08 | 91722 | macros/latex/contrib/l3kernel/l3skip.dtx
2023/12/08 | 9128 | macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_triangles.lua
2023/12/08 | 903 | macros/latex/contrib/tutodoc/code/tdoc-locale-french.cfg.sty
2023/12/08 | 903899 | macros/latex/contrib/onedown/Examples/onedown-examples.pdf
2023/12/08 | 8897 | macros/latex/contrib/l3experimental/CHANGELOG.md
-2023/12/08 | 88673 | macros/latex/contrib/l3kernel/l3expan.dtx
-2023/12/08 | 88102 | macros/latex/contrib/l3kernel/l3coffins.dtx
2023/12/08 | 880 | macros/latex/contrib/tutodoc/code/tdoc-locale-english.cfg.sty
2023/12/08 | 87880 | macros/luatex/latex/yamlvars.zip
-2023/12/08 | 87751 | macros/latex/contrib/l3kernel/l3box.dtx
2023/12/08 | 85254 | macros/luatex/latex/yamlvars/yamlvars.pdf
-2023/12/08 | 8481 | macros/latex/contrib/l3kernel/l3news11.tex
-2023/12/08 | 84779 | macros/latex/contrib/l3kernel/l3fp-basics.dtx
2023/12/08 | 845 | macros/latex/contrib/onedown/Examples/bidNW.tex
-2023/12/08 | 83185 | macros/latex/contrib/l3kernel/l3clist.dtx
-2023/12/08 | 82696 | macros/latex/contrib/l3kernel/l3prefixes.pdf
-2023/12/08 | 82467 | macros/latex/contrib/l3kernel/l3str.dtx
-2023/12/08 | 82320 | macros/latex/contrib/l3kernel/l3msg.dtx
2023/12/08 | 81516 | fonts/libertinust1math/tex/libertinust1math.sty
-2023/12/08 | 80273 | macros/latex/contrib/l3kernel/l3names.dtx
2023/12/08 | 7858 | macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_point.lua
-2023/12/08 | 7832 | macros/latex/contrib/l3kernel/l3fp-functions.dtx
2023/12/08 | 77559 | macros/luatex/generic/penlightplus.zip
-2023/12/08 | 76531 | macros/latex/contrib/l3kernel/l3fp.dtx
2023/12/08 | 76464 | systems/texlive/tlnet/archive/decimalcomma.doc.r69056.tar.xz
-2023/12/08 | 76366 | macros/latex/contrib/l3kernel/l3text-case.dtx
2023/12/08 | 757927 | macros/latex/contrib/tutodoc/doc/tutodoc-fr.pdf
2023/12/08 | 751 | macros/latex/contrib/onedown/Examples/Fontsizes.tex
-2023/12/08 | 7508388 | macros/latex/contrib/l3kernel/source3.pdf
2023/12/08 | 7417 | macros/latex/contrib/onedown/ODw-Italian.dict
-2023/12/08 | 73835 | macros/latex/contrib/l3kernel/l3fp-trig.dtx
2023/12/08 | 7286 | macros/latex/contrib/onedown/Examples/Bidding.tex
2023/12/08 | 7118 | macros/latex/contrib/onedown/Examples/onedown-examples.tex
-2023/12/08 | 70986 | macros/latex/contrib/l3kernel/expl3.dtx
-2023/12/08 | 7079 | macros/latex/contrib/l3kernel/l3term-glossary.tex
-2023/12/08 | 70646 | macros/latex/contrib/l3kernel/l3prg.dtx
2023/12/08 | 7052 | systems/texlive/tlnet/archive/collection-latexextra.r69056.tar.xz
2023/12/08 | 687653 | macros/latex/contrib/tutodoc/doc/tutodoc-en.pdf
2023/12/08 | 682740 | macros/latex/contrib/l3experimental/l3draw-code.pdf
-2023/12/08 | 6677 | macros/latex/contrib/l3kernel/l3news02.tex
2023/12/08 | 66585 | macros/luatex/generic/penlightplus/penlightplus.pdf
2023/12/08 | 6574 | macros/latex/contrib/onedown/ODw-English.dict
2023/12/08 | 6551 | macros/latex/contrib/onedown/ODw-Swedish.dict
@@ -438,68 +556,43 @@
2023/12/08 | 6504 | macros/latex/contrib/onedown/ODw-Spanish.dict
2023/12/08 | 6503 | macros/latex/contrib/onedown/ODw-French.dict
2023/12/08 | 6499 | macros/latex/contrib/onedown/ODw-German.dict
-2023/12/08 | 6482 | macros/latex/contrib/l3kernel/l3news03.tex
2023/12/08 | 6471 | macros/latex/contrib/onedown/ODw-Dutch.dict
2023/12/08 | 6462 | macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_intersections.lua
2023/12/08 | 6453 | macros/latex/contrib/onedown/ODw-Danish.dict
2023/12/08 | 6449 | macros/latex/contrib/onedown/ODw-Norsk.dict
-2023/12/08 | 6435 | macros/latex/contrib/l3kernel/l3.ins
-2023/12/08 | 6433 | macros/latex/contrib/l3kernel/l3news06.tex
-2023/12/08 | 64037 | macros/latex/contrib/l3kernel/l3tl-analysis.dtx
2023/12/08 | 6316862 | fonts/libertinust1math.zip
-2023/12/08 | 6267 | macros/latex/contrib/l3kernel/l3syntax-changes.tex
-2023/12/08 | 623407 | macros/latex/contrib/l3kernel/expl3.pdf
2023/12/08 | 6204 | macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_circle.lua
2023/12/08 | 614 | fonts/inconsolata-nerd-font/README.md
2023/12/08 | 609384 | systems/texlive/tlnet/archive/heria.doc.r69058.tar.xz
-2023/12/08 | 60385 | macros/latex/contrib/l3kernel/l3prop.dtx
2023/12/08 | 6031 | macros/luatex/generic/penlightplus/penlightplus.sty
2023/12/08 | 5867132 | fonts/simpleicons.zip
2023/12/08 | 58083 | macros/latex/contrib/l3experimental/xgalley.dtx
-2023/12/08 | 5772 | macros/latex/contrib/l3kernel/l3candidates.dtx
2023/12/08 | 5653 | macros/latex/contrib/l3experimental/l3draw-layers.dtx
2023/12/08 | 5643 | fonts/libertinust1math/README
2023/12/08 | 5611 | macros/luatex/generic/luamplib/test-luamplib-latex.tex
-2023/12/08 | 558435 | macros/latex/contrib/l3kernel/l3doc.pdf
-2023/12/08 | 55327 | macros/latex/contrib/l3kernel/CHANGELOG.md
-2023/12/08 | 5429 | macros/latex/contrib/l3kernel/l3news04.tex
2023/12/08 | 537824 | macros/latex/contrib/tkz/tkz-elements/doc/tkz-elements.pdf
2023/12/08 | 537824 | macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-main.pdf
2023/12/08 | 532 | macros/latex/contrib/tutodoc/README.md
2023/12/08 | 53005 | macros/latex/contrib/hvextern/doc/hvextern.tex
2023/12/08 | 518932 | macros/latex/contrib/l3experimental/l3draw.pdf
2023/12/08 | 5112 | macros/latex/contrib/l3experimental/l3draw-boxes.dtx
-2023/12/08 | 51081 | macros/latex/contrib/l3kernel/l3fp-extended.dtx
2023/12/08 | 5013 | macros/latex/contrib/onedown/Examples/showAll.tex
-2023/12/08 | 4977 | macros/latex/contrib/l3kernel/l3news07.tex
2023/12/08 | 4972 | systems/texlive/tlnet/archive/pdfrender.r69058.tar.xz
-2023/12/08 | 4937 | macros/latex/contrib/l3kernel/l3news01.tex
-2023/12/08 | 49311 | macros/latex/contrib/l3kernel/l3fp-expo.dtx
-2023/12/08 | 4912 | macros/latex/contrib/l3kernel/l3fp-types.dtx
-2023/12/08 | 48954 | macros/latex/contrib/l3kernel/l3text.dtx
-2023/12/08 | 4890 | macros/latex/contrib/l3kernel/l3news.tex
2023/12/08 | 4875 | macros/latex/contrib/onedown/Examples/Compass.tex
-2023/12/08 | 48174 | macros/latex/contrib/l3kernel/l3prefixes.csv
-2023/12/08 | 47242 | macros/latex/contrib/l3kernel/l3fp-aux.dtx
-2023/12/08 | 4716 | macros/latex/contrib/l3kernel/l3news05.tex
2023/12/08 | 4593 | fonts/libertinust1math/doc/OFL.txt
-2023/12/08 | 4574 | macros/latex/contrib/l3kernel/l3legacy.dtx
2023/12/08 | 45501 | macros/latex/contrib/hvextern/latex/hvextern.sty
2023/12/08 | 4510 | macros/luatex/latex/yamlvars/yamlvars.sty
2023/12/08 | 4448 | macros/latex/contrib/l3experimental/l3draw-state.dtx
2023/12/08 | 4422 | macros/latex/contrib/tkz/tkz-elements/README.md
2023/12/08 | 4394 | fonts/inconsolata-nerd-font/OFL.txt
-2023/12/08 | 43421 | macros/latex/contrib/l3kernel/l3debug.dtx
2023/12/08 | 43028 | macros/latex/contrib/l3experimental/l3draw.dtx
2023/12/08 | 4174 | macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_rectangle.lua
2023/12/08 | 409197 | macros/latex/contrib/l3experimental/l3galley.pdf
-2023/12/08 | 40728 | macros/latex/contrib/l3kernel/l3sort.dtx
2023/12/08 | 4060567 | install/macros/latex/contrib/l3experimental.tds.zip
2023/12/08 | 4024785 | macros/latex/contrib/l3experimental.zip
2023/12/08 | 4011 | macros/latex/contrib/l3experimental/l3opacity.dtx
2023/12/08 | 3983 | macros/latex/contrib/l3experimental/README.md
2023/12/08 | 397989 | macros/latex/contrib/onedown/Examples/onedown-ref.pdf
-2023/12/08 | 396222 | macros/latex/contrib/l3kernel/l3news.pdf
2023/12/08 | 394992 | systems/texlive/tlnet/archive/pdfrender.doc.r69058.tar.xz
2023/12/08 | 394766 | macros/latex/contrib/l3experimental/xcoffins.pdf
2023/12/08 | 3901 | macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_ellipse.lua
@@ -508,42 +601,29 @@
2023/12/08 | 3812 | macros/latex/contrib/onedown/README
2023/12/08 | 3684 | systems/texlive/tlnet/archive/decimalcomma.source.r69056.tar.xz
2023/12/08 | 368314 | macros/latex/contrib/l3experimental/l3str-format.pdf
-2023/12/08 | 36610 | macros/latex/contrib/l3kernel/l3sys.dtx
2023/12/08 | 36026 | macros/latex/contrib/l3experimental/l3draw-points.dtx
-2023/12/08 | 35671 | macros/latex/contrib/l3kernel/l3unicode.dtx
-2023/12/08 | 35456 | macros/latex/contrib/l3kernel/l3quark.dtx
2023/12/08 | 35077 | macros/latex/contrib/l3experimental/xcoffins.dtx
2023/12/08 | 348328 | macros/latex/contrib/l3experimental/l3sys-shell.pdf
-2023/12/08 | 34076 | systems/texlive/tlnet/archive/thermodynamics.source.r69058.tar.xz
-2023/12/08 | 33773 | macros/latex/contrib/l3kernel/l3cctab.dtx
2023/12/08 | 3243 | macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_square.lua
2023/12/08 | 32241 | macros/latex/contrib/l3experimental/l3draw-paths.dtx
2023/12/08 | 31828 | macros/latex/contrib/l3experimental/l3str-format.dtx
2023/12/08 | 3144 | macros/latex/contrib/onedown/Examples/Legends.tex
2023/12/08 | 313872 | macros/latex/contrib/l3experimental/l3opacity.pdf
2023/12/08 | 308820 | macros/latex/contrib/l3experimental/l3benchmark.pdf
-2023/12/08 | 3062 | macros/latex/contrib/l3kernel/README.md
-2023/12/08 | 305449 | macros/latex/contrib/l3kernel/l3regex.dtx
-2023/12/08 | 30508 | macros/latex/contrib/l3kernel/l3intarray.dtx
2023/12/08 | 30220 | macros/luatex/generic/penlightplus/penlightplus.lua
2023/12/08 | 3019 | macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_lines.lua
-2023/12/08 | 30076 | macros/latex/contrib/l3kernel/l3deprecation.dtx
2023/12/08 | 299916 | macros/latex/contrib/l3experimental/xgalley.pdf
-2023/12/08 | 296516 | macros/latex/contrib/l3kernel/l3styleguide.pdf
2023/12/08 | 29491 | macros/latex/contrib/tutodoc/doc/tutodoc-fr.tex
2023/12/08 | 2838 | fonts/simpleicons/enc/simpleiconsone.enc
-2023/12/08 | 2821 | macros/latex/contrib/l3kernel/l3prefixes.tex
2023/12/08 | 280 | fonts/simpleicons/tfm/SimpleIcons--simpleiconsonetwo.tfm
2023/12/08 | 2784 | fonts/simpleicons/enc/simpleiconsfour.enc
2023/12/08 | 27569 | macros/latex/contrib/tutodoc/doc/tutodoc-en.tex
2023/12/08 | 2752 | macros/luatex/generic/luamplib/Makefile
2023/12/08 | 274 | fonts/simpleicons/tex/usimpleiconsonezero.fd
-2023/12/08 | 27481 | macros/latex/contrib/l3kernel/l3kernel-functions.dtx
2023/12/08 | 2729 | macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_maths.lua
2023/12/08 | 2700 | fonts/simpleicons/enc/simpleiconssix.enc
2023/12/08 | 269 | fonts/simpleicons/tex/usimpleiconsonetwo.fd
2023/12/08 | 269 | fonts/simpleicons/tex/usimpleiconsoneone.fd
-2023/12/08 | 269568 | systems/texlive/tlnet/archive/thermodynamics.doc.r69058.tar.xz
2023/12/08 | 2671 | fonts/inconsolata-nerd-font/inconsolata-nerd-font.ins
2023/12/08 | 2663 | fonts/simpleicons/enc/simpleiconsonezero.enc
2023/12/08 | 2660 | fonts/simpleicons/enc/simpleiconstwo.enc
@@ -567,45 +647,30 @@
2023/12/08 | 2547 | macros/latex/contrib/onedown/Examples/Play.tex
2023/12/08 | 2527 | macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_points.lua
2023/12/08 | 2519 | fonts/simpleicons/enc/simpleiconsseven.enc
-2023/12/08 | 250159 | macros/latex/contrib/l3kernel/l3news09.pdf
2023/12/08 | 2497 | macros/latex/contrib/onedown/Examples/bidNS.tex
-2023/12/08 | 24767 | macros/latex/contrib/l3kernel/source3body.tex
2023/12/08 | 2474 | fonts/simpleicons/enc/simpleiconsoneone.enc
2023/12/08 | 2467 | fonts/simpleicons/enc/simpleiconsfive.enc
-2023/12/08 | 243162 | macros/latex/contrib/l3kernel/l3syntax-changes.pdf
2023/12/08 | 2415738 | macros/latex/contrib/onedown.zip
2023/12/08 | 2392 | macros/latex/contrib/onedown/Examples/Wrapping.tex
2023/12/08 | 23878 | macros/latex/contrib/tutodoc/code/tutodoc.sty
-2023/12/08 | 2385 | macros/latex/contrib/l3kernel/l3docstrip.dtx
-2023/12/08 | 23828 | macros/latex/contrib/l3kernel/l3luatex.dtx
-2023/12/08 | 23574 | macros/latex/contrib/l3kernel/l3fp-random.dtx
2023/12/08 | 2342 | macros/latex/contrib/hvextern/Changes
2023/12/08 | 2338089 | fonts/simpleicons/doc/simpleicons.pdf
2023/12/08 | 2326 | macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_regular.lua
-2023/12/08 | 23196 | macros/latex/contrib/l3kernel/l3fp-logic.dtx
2023/12/08 | 2285 | fonts/simpleicons/enc/simpleiconsonetwo.enc
-2023/12/08 | 2266 | macros/latex/contrib/l3kernel/source3.tex
2023/12/08 | 2261136 | fonts/simpleicons/opentype/SimpleIcons.otf
2023/12/08 | 219346 | macros/latex/contrib/onedown/onedown.dtx
-2023/12/08 | 218315 | macros/latex/contrib/l3kernel/l3term-glossary.pdf
2023/12/08 | 2136 | macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_quadrilateral.lua
2023/12/08 | 21241 | macros/latex/contrib/l3experimental/l3draw-softpath.dtx
2023/12/08 | 2090614 | fonts/simpleicons/type1/SimpleIcons.pfb
-2023/12/08 | 2072 | macros/latex/contrib/l3kernel/interface3.tex
2023/12/08 | 2058 | macros/luatex/generic/luamplib/README
-2023/12/08 | 205020 | macros/latex/contrib/l3kernel/l3news12.pdf
-2023/12/08 | 20464 | macros/latex/contrib/l3kernel/l3text-purify.dtx
2023/12/08 | 2044 | macros/latex/contrib/onedown/Examples/bidAll.tex
2023/12/08 | 2040 | macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_parallelogram.lua
-2023/12/08 | 20268 | macros/latex/contrib/l3kernel/l3fp-symbolic.dtx
2023/12/08 | 202441 | install/macros/luatex/generic/luamplib.tds.zip
2023/12/08 | 1984 | macros/latex/contrib/onedown/Examples/ExpertQuiz.tex
2023/12/08 | 1968 | macros/latex/contrib/onedown/onedown.ins
-2023/12/08 | 19641 | macros/latex/contrib/l3kernel/l3fp-convert.dtx
2023/12/08 | 19106 | fonts/inconsolata-nerd-font/LICENSE.txt
2023/12/08 | 1906 | macros/latex/contrib/l3experimental/l3draw.ins
2023/12/08 | 1896 | macros/latex/contrib/onedown/Examples/CardSymbols.tex
-2023/12/08 | 18863 | macros/latex/contrib/l3kernel/l3bitset.dtx
2023/12/08 | 1885 | macros/luatex/generic/blopentype/README.md
2023/12/08 | 1882996 | fonts/inconsolata-nerd-font/InconsolataLGCNerdFontPropo-BoldItalic.ttf
2023/12/08 | 1881344 | fonts/inconsolata-nerd-font/InconsolataLGCNerdFontPropo-Italic.ttf
@@ -617,7 +682,6 @@
2023/12/08 | 1863900 | fonts/inconsolata-nerd-font/InconsolataLGCNerdFont-BoldItalic.ttf
2023/12/08 | 1858964 | fonts/inconsolata-nerd-font/InconsolataLGCNerdFont-Bold.ttf
2023/12/08 | 1856708 | fonts/inconsolata-nerd-font/InconsolataLGCNerdFont-Regular.ttf
-2023/12/08 | 18532 | macros/latex/contrib/l3kernel/l3fp-round.dtx
2023/12/08 | 1849 | macros/latex/contrib/onedown/Examples/showNS-warn-II.tex
2023/12/08 | 1844 | fonts/simpleicons/doc/simpleicons.tex
2023/12/08 | 1837492 | fonts/inconsolata-nerd-font/InconsolataLGCNerdFontMono-BoldItalic.ttf
@@ -625,24 +689,18 @@
2023/12/08 | 1832556 | fonts/inconsolata-nerd-font/InconsolataLGCNerdFontMono-Bold.ttf
2023/12/08 | 1831404 | fonts/inconsolata-nerd-font/InconsolataLGCNerdFontMono-Regular.ttf
2023/12/08 | 1774 | macros/latex/contrib/onedown/Examples/Suits.tex
-2023/12/08 | 1772521 | macros/latex/contrib/l3kernel/interface3.pdf
2023/12/08 | 17620 | systems/texlive/tlnet/archive/heria.r69058.tar.xz
-2023/12/08 | 17153 | macros/latex/contrib/l3kernel/l3pdf.dtx
-2023/12/08 | 170102 | macros/latex/contrib/l3kernel/l3news11.pdf
2023/12/08 | 1691 | macros/latex/contrib/tutodoc/MANIFEST.md
2023/12/08 | 1691 | macros/latex/contrib/tkz/tkz-elements/latex/tkz-elements.sty
2023/12/08 | 16635 | macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-line.tex
-2023/12/08 | 16627 | macros/latex/contrib/l3kernel/l3text-map.dtx
2023/12/08 | 1658 | macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_misc.lua
2023/12/08 | 16498 | macros/latex/contrib/l3experimental/l3benchmark.dtx
-2023/12/08 | 163484 | macros/latex/contrib/l3kernel/l3news08.pdf
2023/12/08 | 1628 | fonts/simpleicons/tex/simpleicons.sty
2023/12/08 | 162734 | fonts/simpleicons/doc/bindings.tex
2023/12/08 | 1624 | macros/latex/contrib/l3experimental/xgalley.ins
2023/12/08 | 16218 | macros/luatex/latex/yamlvars/yamlvars.lua
2023/12/08 | 1569 | macros/latex/contrib/l3experimental/xcoffins.ins
2023/12/08 | 1565 | macros/latex/contrib/l3experimental/l3sys-shell.ins
-2023/12/08 | 156506 | macros/latex/contrib/l3kernel/l3doc.dtx
2023/12/08 | 1564 | macros/latex/contrib/l3experimental/l3str.ins
2023/12/08 | 15629 | macros/luatex/latex/yamlvars/yamlvars.tex
2023/12/08 | 1558 | macros/latex/contrib/l3experimental/l3benchmark.ins
@@ -651,39 +709,24 @@
2023/12/08 | 15386 | fonts/inconsolata-nerd-font/inconsolata-nerd-font.dtx
2023/12/08 | 153614 | macros/luatex/generic/luamplib/luamplib.pdf
2023/12/08 | 15273 | macros/luatex/generic/penlightplus/penlightplus.tex
-2023/12/08 | 152023 | macros/latex/contrib/l3kernel/l3docstrip.pdf
-2023/12/08 | 151591 | macros/latex/contrib/l3kernel/l3news06.pdf
-2023/12/08 | 150919 | macros/latex/contrib/l3kernel/l3news02.pdf
2023/12/08 | 1505 | macros/latex/contrib/onedown/Examples/bidEW.tex
-2023/12/08 | 150302 | macros/latex/contrib/l3kernel/l3news10.pdf
2023/12/08 | 1502 | macros/latex/contrib/onedown/Examples/Select-Hands.tex
2023/12/08 | 1498836 | macros/latex/contrib/hvextern/doc/hvextern.pdf
-2023/12/08 | 14913 | macros/latex/contrib/l3kernel/l3news12.tex
-2023/12/08 | 149134 | macros/latex/contrib/l3kernel/l3tl.dtx
2023/12/08 | 1490 | fonts/inconsolata-nerd-font/CHANGELOG.md
2023/12/08 | 1488 | macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_main.lua
-2023/12/08 | 148747 | macros/latex/contrib/l3kernel/l3news03.pdf
-2023/12/08 | 143772 | macros/latex/contrib/l3kernel/l3file.dtx
2023/12/08 | 142732 | macros/luatex/generic/blopentype/blottest.pdf
-2023/12/08 | 14219097 | install/macros/latex/contrib/l3kernel.tds.zip
2023/12/08 | 1414 | macros/latex/contrib/onedown/Examples/FancyColors.tex
2023/12/08 | 1404659 | fonts/inconsolata-nerd-font/inconsolata-nerd-font.pdf
-2023/12/08 | 13952970 | macros/latex/contrib/l3kernel.zip
2023/12/08 | 1391706 | macros/latex/contrib/hvextern.zip
2023/12/08 | 1389 | macros/latex/contrib/onedown/Examples/Languages.tex
2023/12/08 | 1386 | macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_vector.lua
-2023/12/08 | 136125 | macros/latex/contrib/l3kernel/l3basics.dtx
2023/12/08 | 1360 | macros/latex/contrib/l3experimental/l3draw-code.tex
2023/12/08 | 1353 | fonts/simpleicons/map/simpleicons.map
2023/12/08 | 13439514 | fonts/inconsolata-nerd-font.zip
2023/12/08 | 1339 | macros/luatex/latex/yamlvars/README.md
2023/12/08 | 1317 | fonts/libertinust1math/map/libertinust1math.map
2023/12/08 | 1305 | macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_class.lua
-2023/12/08 | 12949 | macros/latex/contrib/l3kernel/l3bootstrap.dtx
2023/12/08 | 1291 | macros/latex/contrib/onedown/Examples/Hands.tex
-2023/12/08 | 129120 | macros/latex/contrib/l3kernel/l3keys.dtx
-2023/12/08 | 128344 | macros/latex/contrib/l3kernel/l3news07.pdf
-2023/12/08 | 12767 | macros/latex/contrib/l3kernel/l3fp-traps.dtx
2023/12/08 | 1236 | fonts/simpleicons/tfm/SimpleIcons--simpleiconseight.tfm
2023/12/08 | 12361 | macros/latex/contrib/l3experimental/l3sys-shell.dtx
2023/12/08 | 1232 | fonts/simpleicons/tfm/SimpleIcons--simpleiconstwo.tfm
@@ -696,26 +739,14 @@
2023/12/08 | 1232 | fonts/simpleicons/tfm/SimpleIcons--simpleiconsnine.tfm
2023/12/08 | 1232 | fonts/simpleicons/tfm/SimpleIcons--simpleiconsfour.tfm
2023/12/08 | 1232 | fonts/simpleicons/tfm/SimpleIcons--simpleiconsfive.tfm
-2023/12/08 | 122959 | macros/latex/contrib/l3kernel/l3news01.pdf
-2023/12/08 | 12136 | macros/latex/contrib/l3kernel/l3tl-build.dtx
2023/12/08 | 1207 | fonts/simpleicons/README.md
2023/12/08 | 1206322 | macros/latex/contrib/tkz/tkz-elements.zip
-2023/12/08 | 11884 | macros/latex/contrib/l3kernel/l3styleguide.tex
-2023/12/08 | 11781 | macros/latex/contrib/l3kernel/l3fparray.dtx
2023/12/08 | 1172 | systems/texlive/tlnet/archive/decimalcomma.r69056.tar.xz
2023/12/08 | 11715 | macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_triangle.lua
-2023/12/08 | 116349 | macros/latex/contrib/l3kernel/l3token.dtx
2023/12/08 | 1162 | macros/latex/contrib/onedown/Examples/showNS-align.tex
-2023/12/08 | 114754 | macros/latex/contrib/l3kernel/l3news04.pdf
-2023/12/08 | 113427 | macros/latex/contrib/l3kernel/l3str-convert.dtx
2023/12/08 | 1132 | macros/luatex/generic/penlightplus/README.md
-2023/12/08 | 112524 | macros/latex/contrib/l3kernel/l3news05.pdf
-2023/12/08 | 112275 | macros/latex/contrib/l3kernel/l3color.dtx
2023/12/08 | 1109 | macros/latex/contrib/onedown/Examples/showNS-warn-I.tex
2023/12/08 | 1106351 | macros/latex/contrib/onedown/onedown.pdf
-2023/12/08 | 107383 | macros/latex/contrib/l3kernel/l3news09.tex
-2023/12/08 | 105012 | macros/latex/contrib/l3kernel/l3fp-parse.dtx
-2023/12/08 | 10327 | macros/latex/contrib/l3kernel/l3flag.dtx
2023/12/08 | 10138 | macros/latex/contrib/l3experimental/l3draw-transforms.dtx
2023/12/08 | 10125 | macros/luatex/generic/luamplib/NEWS
2023/12/08 | 10048 | systems/texlive/tlnet/archive/pdfrender.source.r69058.tar.xz
@@ -723,7 +754,6 @@
2023/12/07 | 9579 | macros/luatex/generic/blopentype/luatex/blot-fonts.tex
2023/12/07 | 9277 | macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-why.tex
2023/12/07 | 8816 | macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-main.tex
-2023/12/07 | 859628 | systems/texlive/tlnet/archive/babel.source.r69050.tar.xz
2023/12/07 | 8281 | macros/luatex/generic/blopentype/blottest.tex
2023/12/07 | 80591 | macros/latex/contrib/decimalcomma.zip
2023/12/07 | 799 | macros/luatex/generic/blopentype/luatex/blot-files.tex
@@ -745,7 +775,6 @@
2023/12/07 | 274 | macros/luatex/generic/blopentype/luatex/blot-sets.lua
2023/12/07 | 24195 | support/texlogsieve/texlogsieve.tex
2023/12/07 | 22592 | systems/texlive/tlnet/archive/njuthesis.r69051.tar.xz
-2023/12/07 | 224616 | systems/texlive/tlnet/archive/babel.r69050.tar.xz
2023/12/07 | 2139 | macros/luatex/generic/blopentype/luatex/blot-base.lua
2023/12/07 | 209313 | support/texlogsieve/texlogsieve
2023/12/07 | 2024 | systems/texlive/tlnet/archive/spacingtricks.r69048.tar.xz
@@ -755,7 +784,6 @@
2023/12/07 | 12436 | systems/texlive/tlnet/archive/spacingtricks.source.r69048.tar.xz
2023/12/07 | 12367 | support/texlogsieve/texlogsieve.1
2023/12/07 | 1088 | macros/luatex/generic/blopentype/LICENSE
-2023/12/07 | 1042648 | systems/texlive/tlnet/archive/babel.doc.r69050.tar.xz
2023/12/07 | 1012 | systems/texlive/tlnet/archive/collection-luatex.r69052.tar.xz
2023/12/06 | 9817 | usergrps/usergrps/de.html
2023/12/06 | 9763 | usergrps/usergrps/pl.html
@@ -931,72 +959,3 @@
2023/12/05 | 1092680 | fonts/newcomputermodern/otf/NewCMMath-Regular.otf
2023/12/05 | 1077 | macros/unicodetex/latex/njuthesis/README.md
2023/12/05 | 106085 | macros/latex/contrib/oberdiek/bmpsize.dtx
-2023/12/04 | 987276 | systems/texlive/tlnet/archive/scrabble.doc.r69024.tar.xz
-2023/12/04 | 972770 | macros/latex/contrib/nicematrix/nicematrix-code.pdf
-2023/12/04 | 916 | fonts/libertinust1math/vf/LibertinusSerifTH-Italic-tlf-ot1.vf
-2023/12/04 | 8972 | systems/texlive/tlnet/archive/pwebmac.r69027.tar.xz
-2023/12/04 | 8531 | macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty
-2023/12/04 | 77380 | macros/latex/contrib/ufrgscca/doc/ufrgscca.tex
-2023/12/04 | 6988 | fonts/libertinust1math/tfm/libertinust1-mathsfrm-bold.tfm
-2023/12/04 | 666553 | install/macros/latex/contrib/heria.tds.zip
-2023/12/04 | 66238 | macros/generic/ltxcmds/ltxcmds.dtx
-2023/12/04 | 6563 | macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.sty
-2023/12/04 | 6343 | macros/latex/contrib/fbox/doc/fbox.tex
-2023/12/04 | 632740 | macros/latex/contrib/heria.zip
-2023/12/04 | 614351 | macros/latex/contrib/nicematrix/nicematrix.pdf
-2023/12/04 | 598788 | macros/latex/contrib/nicematrix/nicematrix-french.pdf
-2023/12/04 | 594121 | macros/latex/contrib/nicematrix/nicematrix-code.dtx
-2023/12/04 | 590459 | macros/latex/contrib/ufrgscca/doc/ufrgscca.pdf
-2023/12/04 | 5616 | fonts/libertinust1math/tfm/LibertinusSerifTH-Italic-tlf-ot1.tfm
-2023/12/04 | 5555 | macros/latex/contrib/ufrgscca/README.md
-2023/12/04 | 5520 | fonts/libertinust1math/tfm/libertinust1-mathsfrm.tfm
-2023/12/04 | 51602 | macros/latex/contrib/fbox.zip
-2023/12/04 | 48539 | macros/latex/contrib/fbox/doc/fbox.pdf
-2023/12/04 | 4599 | macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-en.tex
-2023/12/04 | 4248 | macros/latex/contrib/fbox/latex/fbox.sty
-2023/12/04 | 419825 | macros/generic/ltxcmds/ltxcmds.pdf
-2023/12/04 | 417634 | macros/generic/ltxcmds.zip
-2023/12/04 | 41273 | macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.tex
-2023/12/04 | 3862 | macros/latex/contrib/heria/heria.ins
-2023/12/04 | 379 | macros/generic/ltxcmds/README.md
-2023/12/04 | 3616 | macros/latex/contrib/ufrgscca/latex/ufrgscca-lists.sty
-2023/12/04 | 3600 | systems/texlive/tlnet/archive/scrabble.r69024.tar.xz
-2023/12/04 | 347 | macros/latex/contrib/fbox/CHANGELOG
-2023/12/04 | 313877 | macros/latex/contrib/heria/heria-proposal.pdf
-2023/12/04 | 303966 | macros/latex/contrib/heria/heria.pdf
-2023/12/04 | 2888 | fonts/libertinust1math/tfm/libertinust1-mathit-bold.tfm
-2023/12/04 | 2860 | fonts/libertinust1math/tfm/libertinust1-mathit.tfm
-2023/12/04 | 27745 | macros/latex/contrib/ufrgscca/latex/ufrgscca-coord.sty
-2023/12/04 | 270220 | systems/texlive/tlnet/archive/argumentation.doc.r69023.tar.xz
-2023/12/04 | 25944 | fonts/libertinust1math/tfm/LibertinusSerifTH-Italic-tlf-t1.tfm
-2023/12/04 | 25540 | macros/latex/contrib/ufrgscca/latex/ufrgscca-curr.sty
-2023/12/04 | 2512 | fonts/libertinust1math/tfm/libertinust1-mathsfit-bold.tfm
-2023/12/04 | 2500 | fonts/libertinust1math/tfm/libertinust1-mathsfit.tfm
-2023/12/04 | 2444 | fonts/libertinust1math/tfm/libertinust1-mathrm.tfm
-2023/12/04 | 2368 | fonts/libertinust1math/vf/libertinust1-mathsfit-bold.vf
-2023/12/04 | 2366196 | macros/latex/contrib/nicematrix.zip
-2023/12/04 | 2364 | fonts/libertinust1math/vf/libertinust1-mathsfit.vf
-2023/12/04 | 2364 | fonts/libertinust1math/tfm/libertinust1-mathrm-bold.tfm
-2023/12/04 | 23485 | macros/latex/contrib/ufrgscca/latex/ufrgscca-ppc.sty
-2023/12/04 | 22548 | macros/latex/contrib/ufrgscca/latex/ufrgscca-abnt.sty
-2023/12/04 | 2064 | macros/latex/contrib/ufrgscca/latex/ufrgscca-base-en.def
-2023/12/04 | 2028 | systems/texlive/tlnet/archive/argumentation.r69023.tar.xz
-2023/12/04 | 2000 | fonts/libertinust1math/vf/libertinust1-mathsfrm-bold.vf
-2023/12/04 | 1996 | fonts/libertinust1math/vf/libertinust1-mathsfrm.vf
-2023/12/04 | 1916 | fonts/libertinust1math/tfm/LibertinusSerif-Italic-tlf-t1-tmp.tfm
-2023/12/04 | 1901 | macros/latex/contrib/ufrgscca/latex/ufrgscca-base-ptBR.def
-2023/12/04 | 18474 | macros/latex/contrib/ufrgscca/latex/ufrgscca-core.sty
-2023/12/04 | 1788 | fonts/libertinust1math/vf/LibertinusSerifTH-Italic-tlf-t1.vf
-2023/12/04 | 1692 | fonts/libertinust1math/tfm/libertinust1-mathsym.tfm
-2023/12/04 | 1692 | fonts/libertinust1math/tfm/libertinust1-mathex.tfm
-2023/12/04 | 16798 | macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-ptBR.tex
-2023/12/04 | 15656 | systems/texlive/tlnet/archive/pwebmac.doc.r69027.tar.xz
-2023/12/04 | 1452 | fonts/libertinust1math/tfm/libertinust1-mathsfi.tfm
-2023/12/04 | 1449 | macros/latex/contrib/heria/README.md
-2023/12/04 | 1284 | fonts/libertinust1math/tfm/libertinust1-mathsfb.tfm
-2023/12/04 | 1264 | fonts/libertinust1math/tfm/libertinust1-mathsf.tfm
-2023/12/04 | 119302 | macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-examples.tex
-2023/12/04 | 11235 | macros/latex/contrib/ufrgscca/latex/ufrgscca.cls
-2023/12/04 | 1122683 | graphics/pgf/contrib/wheelchart.zip
-2023/12/04 | 10274 | macros/latex/contrib/ufrgscca/latex/ufrgscca-cover-ptBR.tex
-2023/12/04 | 100137 | macros/latex/contrib/heria/heria.dtx
diff --git a/biblio/ctan-bibdata/ctan.bib b/biblio/ctan-bibdata/ctan.bib
index 5c4f9e85c3..0615815d1a 100644
--- a/biblio/ctan-bibdata/ctan.bib
+++ b/biblio/ctan-bibdata/ctan.bib
@@ -1,7 +1,7 @@
%% bib file of all CTAN packages
%% (C) Herbert Voß
%%
-%% created at 10-12-2023, 02:00:03
+%% created at 11-12-2023, 02:00:03
%%
%% This file is provided under the terms of the LPPL v1.3 or
@@ -5180,8 +5180,8 @@
title = {The \texttt{babel} package},
subtitle = {Multilingual support for \LaTeX{}, LuaLaTeX, \XeLaTeX{}, and Plain \TeX{}},
author = {Javier Bezos López and Johannes L. Braams},
- date = {2023-12-06},
- version = {3.98},
+ date = {2023-12-10},
+ version = {3.99},
license = {lppl1.3},
mirror = {https://mirror.ctan.org/macros/latex/required/babel/base},
url = {https://ctan.org/pkg/babel},
@@ -9444,8 +9444,8 @@
title = {The \texttt{bookmark} package},
subtitle = {A new bookmark (outline) organization for hyperref},
author = {Heiko Oberdiek},
- date = {2023-12-05},
- version = {1.30},
+ date = {2023-12-10},
+ version = {1.31},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/bookmark},
url = {https://ctan.org/pkg/bookmark},
@@ -77741,7 +77741,7 @@
title = {The \texttt{xfakebold} package},
subtitle = {Fake a regular font for bold characters},
author = {Herbert Voß},
- date = {2023-11-21},
+ date = {2023-12-10},
version = {0.10},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/xfakebold},
diff --git a/fonts/parsimatn/ParsiMatn-Bold.ttf b/fonts/parsimatn/ParsiMatn-Bold.ttf
index da78a556da..35514ff276 100644
--- a/fonts/parsimatn/ParsiMatn-Bold.ttf
+++ b/fonts/parsimatn/ParsiMatn-Bold.ttf
Binary files differ
diff --git a/fonts/parsimatn/ParsiMatn-BoldItalic.ttf b/fonts/parsimatn/ParsiMatn-BoldItalic.ttf
index de3c300769..1ac5ee3523 100644
--- a/fonts/parsimatn/ParsiMatn-BoldItalic.ttf
+++ b/fonts/parsimatn/ParsiMatn-BoldItalic.ttf
Binary files differ
diff --git a/fonts/parsimatn/ParsiMatn-Italic.ttf b/fonts/parsimatn/ParsiMatn-Italic.ttf
index 49565dd3fc..d3b5f6696a 100644
--- a/fonts/parsimatn/ParsiMatn-Italic.ttf
+++ b/fonts/parsimatn/ParsiMatn-Italic.ttf
Binary files differ
diff --git a/fonts/parsimatn/ParsiMatn-Regular.ttf b/fonts/parsimatn/ParsiMatn-Regular.ttf
index ab1ec829d6..d3086e516c 100644
--- a/fonts/parsimatn/ParsiMatn-Regular.ttf
+++ b/fonts/parsimatn/ParsiMatn-Regular.ttf
Binary files differ
diff --git a/fonts/parsimatn/README.md b/fonts/parsimatn/README.md
index d99cfb4327..6435ceef69 100644
--- a/fonts/parsimatn/README.md
+++ b/fonts/parsimatn/README.md
@@ -1,5 +1,5 @@
# parsimatn
-v 2.1 -- September 29, 2023
+v 2.1a -- Decemer 11, 2023
=======================
diff --git a/fonts/parsimatn/parsimatn-example-of-use.pdf b/fonts/parsimatn/parsimatn-example-of-use.pdf
index cbddbdce31..a3a3af30da 100644
--- a/fonts/parsimatn/parsimatn-example-of-use.pdf
+++ b/fonts/parsimatn/parsimatn-example-of-use.pdf
Binary files differ
diff --git a/fonts/parsimatn/parsimatn-example-of-use.tex b/fonts/parsimatn/parsimatn-example-of-use.tex
index 65af3b24a1..8465db21f5 100644
--- a/fonts/parsimatn/parsimatn-example-of-use.tex
+++ b/fonts/parsimatn/parsimatn-example-of-use.tex
@@ -24,9 +24,9 @@
\author{ساده، کارا، آشنا، زیبا}
\date{%
-گونۀ 1.2
+گونۀ 1.2 آ
\quad - \quad \today \\
-\lr{Version 2.1 \quad - \quad \latintoday}
+\lr{Version 2.1a \quad - \quad \latintoday}
}
\usepackage{ptext}
diff --git a/macros/latex/contrib/covington/README b/macros/latex/contrib/covington/README
index ad9431e7cd..168f46b450 100644
--- a/macros/latex/contrib/covington/README
+++ b/macros/latex/contrib/covington/README
@@ -31,6 +31,11 @@ The package consists of the following files:
== CHANGES ==
+* Version 2.14 (2023 December 11)
+ - Add \ownexcounterprep macro to add a prefix (e.g., the chapter)
+ to the (owncounter) example counter.
+ - Document how to (not) number examples per chapter.
+
* Version 2.13 (2023-12-02)
- Fix example numbering with chapters (#16).
diff --git a/macros/latex/contrib/covington/covington.pdf b/macros/latex/contrib/covington/covington.pdf
index d0963ed7ef..d2187619ce 100644
--- a/macros/latex/contrib/covington/covington.pdf
+++ b/macros/latex/contrib/covington/covington.pdf
Binary files differ
diff --git a/macros/latex/contrib/covington/covington.sty b/macros/latex/contrib/covington/covington.sty
index cc17661c09..079d0eef9c 100644
--- a/macros/latex/contrib/covington/covington.sty
+++ b/macros/latex/contrib/covington/covington.sty
@@ -42,8 +42,8 @@
%%% Metadata
%%%
-\def\filedate{2023/12/02}
-\def\fileversion{2.13}
+\def\filedate{2023/12/11}
+\def\fileversion{2.14}
\def\filename{covington.sty}
% Macro to issue warnings
@@ -189,8 +189,10 @@
% Counter to generate unique example ID
\newcounter{explid}
+\def\ownexcounterprep{}
\ifownexcounter
\newcounter{covex}
+ \renewcommand{\thecovex}{\ownexcounterprep\arabic{covex}}%
\newcommand{\@exampleno}{\stepcounter{explid}\refstepcounter{covex}\thecovex}
\else
\newcommand{\@exampleno}{\stepcounter{explid}\refstepcounter{equation}\theequation}
@@ -538,7 +540,9 @@
\setcounter{covfnex}{\arabic{covexsave}}%
\else
\ifownexcounter
- \renewcommand{\thecovex}{\exfmt{covex}}%
+ \ifexfmtchanged%
+ \renewcommand{\thecovex}{\ownexcounterprep\exfmt{covex}}%
+ \fi%
\setcounter{covexsave}{\arabic{covex}}%
\usecounter{covex}% % sets it to zero, unwantedly
\setcounter{covex}{\arabic{covexsave}}% % restores previous value
diff --git a/macros/latex/contrib/covington/covington.tex b/macros/latex/contrib/covington/covington.tex
index 696bfe139c..78861d588e 100644
--- a/macros/latex/contrib/covington/covington.tex
+++ b/macros/latex/contrib/covington/covington.tex
@@ -97,8 +97,8 @@
%
% Titling
%
-\def\pversion{Version 2.13}
-\def\pdate{December 2, 2023}
+\def\pversion{Version 2.14}
+\def\pdate{December 11, 2023}
\title{\textbf{The \cvt\ Package\\\Large Macros for Linguistics}}
\author{Michael A. Covington \and J\"urgen Spitzm\"uller\thanks{Current maintainer.
@@ -163,7 +163,8 @@ to your document preamble. The package has the following options to customize it
By default, \cvt\ uses \LaTeX's equation counter for example numbering, so that if you use equations and numbered examples
in the same paper, you get a single continuous series of numbers. While some people (including the original author of this package)
consider this a feature, others might prefer to number equations and linguistic examples separately. If you count to the latter sort,
- use this option.
+ use this option. Note that the default appearance of the own counter and the equation counter differs if the document has chapters.
+ See sec.~\ref{sec:cbc} for details.
\item{\joption{fnexamplecounter=\jparam{main|own|own-reset}}} Default: \emph{main}.
Specifics of the counter for numbered examples in footnotes.
@@ -890,6 +891,24 @@ as in \pxref{expl} and \pxref{sbex}. It is defined as follows and can be redefin
\end{lstlisting}
+\subsection{Numbering per chapter or continuously}\label{sec:cbc}
+
+With the default (equation) counter which is used for examples, examples automatically get numbered
+per chapter if the document has chapters (e.g., (2.1) for the first example in chapter~2).
+If you want continuously numbered examples instead, use
+\begin{lstlisting}[moretexcs={counterwithout}]
+\counterwithout{equation}{chapter}
+\end{lstlisting}
+which also will change the equation numbering behavior.
+
+With \joption{owncounter}, on the other hand, examples are always continuously numbered by default.
+If you want examples numbered per chapter, do:
+\begin{lstlisting}[moretexcs={counterwithin,ownexcounterprep}]
+\counterwithin*{covex}{chapter}
+\renewcommand\ownexcounterprep{\thechapter.}
+\end{lstlisting}
+
+
\section{Glossing sentences word-by-word}\label{sec:gloss}
To gloss a sentence is to annotate it word-by-word. Most commonly, a
@@ -1647,6 +1666,13 @@ it.
\section{Release history}
+\subsection*{2.14 (2023 December 11)}
+\begin{itemize}
+ \item Add \jcsmacro{ownexcounterprep} macro to add a prefix (e.g., the chapter)
+ to the (owncounter) example counter. See sec.~\ref{sec:cbc}.
+ \item Document how to (not) number examples per chapter.
+\end{itemize}
+
\subsection*{2.13 (2023 December 2)}
\begin{itemize}
\item Fix example numbering with chapters.
diff --git a/macros/latex/contrib/jnuexam/exam-a-a3input.pdf b/macros/latex/contrib/jnuexam/exam-a-a3input.pdf
deleted file mode 100644
index c8828fdeff..0000000000
--- a/macros/latex/contrib/jnuexam/exam-a-a3input.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/jnuexam/exam-a-a3input.tex b/macros/latex/contrib/jnuexam/exam-a-a3input.tex
deleted file mode 100644
index ac2cc9aa31..0000000000
--- a/macros/latex/contrib/jnuexam/exam-a-a3input.tex
+++ /dev/null
@@ -1,9 +0,0 @@
-% -*- coding: utf-8 -*-
-% !TEX program = xelatex
-
-% 直接包含 A4 试卷的 PDF 文件,生成双栏的 A3 试卷
-\documentclass[a3input]{jnuexam}
-\begin{document}
-\includepdf[pages=-,nup=2x1,offset=0 0,delta=0 0]{exam-a-empty}
-%\includepdf[pages=-,nup=2x1,offset=0 0,delta=0 0,frame]{exam-a}
-\end{document}
diff --git a/macros/latex/contrib/jnuexam/exam-a-a3split.pdf b/macros/latex/contrib/jnuexam/exam-a-a3split.pdf
deleted file mode 100644
index 92430159e1..0000000000
--- a/macros/latex/contrib/jnuexam/exam-a-a3split.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/jnuexam/exam-a-a3split.tex b/macros/latex/contrib/jnuexam/exam-a-a3split.tex
deleted file mode 100644
index 140cb573ca..0000000000
--- a/macros/latex/contrib/jnuexam/exam-a-a3split.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-% -*- coding: utf-8 -*-
-% !TEX program = xelatex
-
-% 将原有的 A4 试卷改为 A3 试卷双栏排版
-\PassOptionsToClass{a3paper,noanswer}{jnuexam}
-\input{exam-a}
diff --git a/macros/latex/contrib/jnuexam/exam-a-answer.pdf b/macros/latex/contrib/jnuexam/exam-a-answer.pdf
new file mode 100644
index 0000000000..030ffb6eec
--- /dev/null
+++ b/macros/latex/contrib/jnuexam/exam-a-answer.pdf
Binary files differ
diff --git a/macros/latex/contrib/jnuexam/exam-a.tex b/macros/latex/contrib/jnuexam/exam-a-answer.tex
index 54b2d1ac40..28d7c75552 100644
--- a/macros/latex/contrib/jnuexam/exam-a.tex
+++ b/macros/latex/contrib/jnuexam/exam-a-answer.tex
@@ -4,6 +4,12 @@
%\answerfalse %不显示答案
+\setexam{
+ binding = 2, % 装订线,1 仅空白试卷有,2 试卷和答案都有
+ scratch = 1, % 草稿纸数量,仅空白试卷有,A3 大小,双面印刷
+ seed = 19061116, % 随机数种子,用于改变 B 卷小题的随机顺序
+}
+
\begin{document}
\renewcommand{\niandu}{2017--2018}
@@ -24,8 +30,6 @@
\answertable[3em]{6}{3} % 生成答题栏:行高3em,总共6题,每行3题
-\newpageb % B卷分页点
-
\begin{problem}
设常数$k>0$,函数$f(x)=\ln x-\dfrac{x}{\e}+k$在$(0,+\infty)$内零点的个数为 \fillout{$2$}.
\end{problem}
@@ -67,14 +71,12 @@
\vfill
-\newpagea % A卷分页点
+\newpage
\makepart{单选题}{共~6~小题,每小题~3~分,共~18~分}
\answertable{6}{6} % 生成答题栏:默认行高,总共8题,每行8题
-\newpageb % B卷分页点
-
\begin{problem}
在下列等式中,正确的结果是\pickout{C}
\begin{abcd}
@@ -164,24 +166,22 @@
\bigskip
-\newpagea % A卷分页点
+\newpage
\makepart{计算题}{共~6~小题,每小题~8~分,共~48~分}
-\newpageb % B卷分页点
-
\begin{problem}
求不定积分$\displaystyle\int\e^{2x}\,(\tan x+1)^2\dx$。
\end{problem}
-\bigskip
+\smallskip
\begin{solution}
\everymath{\displaystyle}%
-原式 \? $=\int\e^{2x}\,\sec^2 x\dx+2\int\e^{2x}\,\tan x\dx$ \score{2}
-\+ $=\int\e^{2x}\,\d(\tan x)+ 2\int\e^{2x}\,\tan x\dx$ \score{4}
-\+ $=\e^{2x}\,\tan x - 2\int\e^{2x}\,\tan x\dx+ 2\int\e^{2x}\,\tan x\dx$ \score{6}
-\+ $=\e^{2x}\,\tan x + C$ \score{8}
+原式 \? $=\int\e^{2x}\,\sec^2 x\dx+2\int\e^{2x}\,\tan x\dx$ \points{2}
+\+ $=\int\e^{2x}\,\d(\tan x)+ 2\int\e^{2x}\,\tan x\dx$ \points{4}
+\+ $=\e^{2x}\,\tan x - 2\int\e^{2x}\,\tan x\dx+ 2\int\e^{2x}\,\tan x\dx$ \points{6}
+\+ $=\e^{2x}\,\tan x + C$ \points{8}
\end{solution}
\vfill
@@ -190,23 +190,23 @@
求过点$A(1,2,-1), B(2,3,0),C(3,3,2)$ 的三角形$\triangle ABC$ 的面积和它们确定的平面方程.
\end{problem}
-\bigskip
+\smallskip
\begin{solution}
-由题设$\overrightarrow{AB}=(1,1,1),\overrightarrow{AC}=(2,1,3)$, \score{2}
+由题设$\overrightarrow{AB}=(1,1,1),\overrightarrow{AC}=(2,1,3)$, \points{2}
故$\overrightarrow{AB}\times \overrightarrow{AC}=\begin{vmatrix}
\vec{i}&\vec{j} &\vec{k}\\
1&1&1\\
2&1&3\\
-\end{vmatrix}=(2,-1,-1)$, \score{4}
+\end{vmatrix}=(2,-1,-1)$, \points{4}
三角形$\triangle ABC$ 的面积为$S_{\triangle ABC}=\dfrac{1}{2}\big|\overrightarrow{AB}\times
-\overrightarrow{AC}\big|=\dfrac{1}{2}\sqrt{6}.$ \score{6}
-所求平面的方程为$2(x-2)-(y-3)-z=0$, 即$2x-y-z-1=0$ \score{8}
+\overrightarrow{AC}\big|=\dfrac{1}{2}\sqrt{6}.$ \points{6}
+所求平面的方程为$2(x-2)-(y-3)-z=0$, 即$2x-y-z-1=0$ \points{8}
\end{solution}
\vfill
-\newpage % A,B卷共同分页点
+\newpage
\begin{problem}
计算四阶行列式 $A = \left|\begin{array}{cccc}
@@ -217,7 +217,7 @@
\end{array}\right|$ 的值.
\end{problem}
-\bigskip
+\smallskip
\begin{solution}
$A \? = \left|\begin{array}{cccc}
@@ -234,7 +234,7 @@ $A \? = \left|\begin{array}{cccc}
1 & 2 & 3\\
- 1 & - 6 & 1\\
- 6 & - 8 & 2
- \end{array}\right|$ \score{4}
+ \end{array}\right|$ \points{4}
\+ $= -\left|\begin{array}{ccc}
1 & 2 & 3\\
0 & - 4 & 4\\
@@ -242,31 +242,31 @@ $A \? = \left|\begin{array}{cccc}
\end{array}\right| = - \left|\begin{array}{cc}
- 4 & 4\\
4 & 20
- \end{array}\right| = -(-4\cdot20-4\cdot4) = 96$ \score{8}
+ \end{array}\right| = -(-4\cdot20-4\cdot4) = 96$ \points{8}
\end{solution}
\vfill
\begin{problem}
-用配方法将二次型 $f = x_1^2 + 2 x_1 x_2 - 6 x_1 x_3 + 2 x_2^2 - 12
+利用配方法,将二次型 $f = x_1^2 + 2 x_1 x_2 - 6 x_1 x_3 + 2 x_2^2 - 12
x_2 x_3 + 9 x^2_3$ 化为标准形 $f = d_1 y^2_1 + d_2 y^2_2 + d_3 y^2_3$ .
\end{problem}
-\bigskip
+\smallskip
\begin{solution}
$f \? = x_1^2 + 2 x_1 x_2 - 6 x_1 x_3 + 2 x_2^2 - 12 x_2 x_3 + 9 x^2_3$ \par
\+ $= x_1^2 + 2 x_1 (x_2 - 3 x_3) + (x_2 - 3 x_3)^2 + x_2^2 - 6 x_2 x_3 $ \par
- \+ $= (x_1 + x_2 - 3 x_3)^2 + x_2^2 - 6 x_2 x_3$ \score{3}
+ \+ $= (x_1 + x_2 - 3 x_3)^2 + x_2^2 - 6 x_2 x_3$ \points{3}
\+ $= (x_1 + x_2 - 3 x_3)^2 + x_2^2 - 2 x_2 \cdot 3 x_3 + (3 x_3)^2 - 9x_3^2$ \par
- \+ $= (x_1 + x_2 - 3 x_3)^2 + (x_2 - 3 x_3)^2 - 9 x_3^2$ \score{6}
+ \+ $= (x_1 + x_2 - 3 x_3)^2 + (x_2 - 3 x_3)^2 - 9 x_3^2$ \points{6}
令$y_1 = x_1 + x_2 - 3 x_3, y_2 = x_2 - 3 x_3, y_3 = x_3$, \newline
-则$f = y_1^2 + y_2^2 - 9y_3^2$为标准形.\score{8}
+则$f = y_1^2 + y_2^2 - 9y_3^2$为标准形.\points{8}
\end{solution}
\vfill
-\newpage % A,B卷共同分页点
+\newpage
\begin{problem}
设每发炮弹命中飞机的概率是0.2且相互独立,现在发射100发炮弹.\par
@@ -274,15 +274,15 @@ $f \? = x_1^2 + 2 x_1 x_2 - 6 x_1 x_3 + 2 x_2^2 - 12 x_2 x_3 + 9 x^2_3$ \par
(2) 用中心极限定理估计命中数目$\xi$在10发到30发之间的概率.
\end{problem}
-\bigskip
+\smallskip
\begin{solution}
-$E\xi = n p = 100 \cdot 0.2 = 20, D\xi = n p q = 100 \cdot 0.2 \cdot 0.8 = 16$. \score{2}
+$E\xi = n p = 100 \cdot 0.2 = 20, D\xi = n p q = 100 \cdot 0.2 \cdot 0.8 = 16$. \points{2}
(1) $P (10 < \xi < 30) = P (|\xi - E\xi| < 10) \ge 1 - \frac{D\xi}{10^2}
- = 1 - \frac{16}{100} = 0.84$. \score{4}
+ = 1 - \frac{16}{100} = 0.84$. \points{4}
(2) $P (10 < \xi < 30) \? \approx \Phi_0\left(\frac{30 - 20}{\sqrt{16}}\right)
- - \Phi_0\left(\frac{10 - 20}{\sqrt{16}}\right)$ \score{6}
- \+ $= 2 \Phi_0(2.5) - 1 = 2 \cdot 0.9938 - 1 =0.9876$ \score{8}
+ - \Phi_0\left(\frac{10 - 20}{\sqrt{16}}\right)$ \points{6}
+ \+ $= 2 \Phi_0(2.5) - 1 = 2 \cdot 0.9938 - 1 =0.9876$ \points{8}
\end{solution}
\vfill
@@ -292,19 +292,19 @@ $E\xi = n p = 100 \cdot 0.2 = 20, D\xi = n p q = 100 \cdot 0.2 \cdot 0.8 = 16$.
试检验假设$H_0:\mu=3140$是否成立($\alpha = 0.01$).
\end{problem}
-\bigskip
+\smallskip
\begin{solution}
-(1) 待检假设 $H_0 : \mu = 3140$. \score{1}
-(2) 选取统计量 $T = \frac{\widebar{X}-\mu}{S / \sqrt{n}} \sim t(n-1)$. \score{3}
-(3) 查表得到 $t_{\alpha} = t_{\alpha} (n - 1) = t_{0.01} (15) =2.947$. \score{5}
-(4) 计算统计值 $t = \frac{\widebar{x} - \mu_0}{s/\sqrt{n}} =\frac{3160-3140}{100/4} = 0.8$.\score{7}
-(5) 由于 $| t | < t_{\alpha}$, 故接受 $H_0$, 即假设成立. \score{8}
+(1) 待检假设 $H_0 : \mu = 3140$. \points{1}
+(2) 选取统计量 $T = \frac{\widebar{X}-\mu}{S / \sqrt{n}} \sim t(n-1)$. \points{3}
+(3) 查表得到 $t_{\alpha} = t_{\alpha} (n - 1) = t_{0.01} (15) =2.947$. \points{5}
+(4) 计算统计值 $t = \frac{\widebar{x} - \mu_0}{s/\sqrt{n}} =\frac{3160-3140}{100/4} = 0.8$.\points{7}
+(5) 由于 $| t | < t_{\alpha}$, 故接受 $H_0$, 即假设成立. \points{8}
\end{solution}
\vfill
-\newpagea % A卷分页点
+\newpage
\makepart{证明题}{共~2~小题,每小题~8~分,共~16~分}
@@ -314,7 +314,7 @@ $E\xi = n p = 100 \cdot 0.2 = 20, D\xi = n p q = 100 \cdot 0.2 \cdot 0.8 = 16$.
设数列$\{x_n\}$满足$x_1=\sqrt2$,$x_{n+1}=\sqrt{2+x_n}$.证明数列收敛,并求出极限.
\end{problem}
-\bigskip
+\smallskip
\begin{solution}
(1) 事实上,由于$x_1<2$,且$x_k<2$时
@@ -322,10 +322,10 @@ $$x_{k+1}=\sqrt{2+x_k}<\sqrt{2+2}=2,$$
由数学归纳法知对所有$n$都有$x_n<2$,即数列有上界.
又由于
$$\frac{x_{n+1}}{x_n}=\sqrt{\frac{2}{x_n^2}+\frac{1}{x_n}}>\sqrt{\frac{2}{2^2}+\frac{1}{2}}=1,$$
-所以数列单调增加.由极限存在准则II,数列必定收敛.\score{4}
+所以数列单调增加.由极限存在准则II,数列必定收敛.\points{4}
(2) 设数列的极限为$A$,对递推公式两边同时取极限得到
$$A=\sqrt{2+A}.$$
-解得$A=2$,即数列$\{x_n\}$的极限为$2$.\score{8}
+解得$A=2$,即数列$\{x_n\}$的极限为$2$.\points{8}
\end{solution}
\vfill
@@ -334,13 +334,13 @@ $$A=\sqrt{2+A}.$$
设事件$A$和$B$相互独立,证明$A$和$\widebar{B}$相互独立.
\end{problem}
-\bigskip
+\smallskip
\begin{solution}
-\? $P (A \cdot \widebar{B}) = P (A - B) = P (A - A B)$ \score{2}
-\< $= P (A) - P (A B) = P (A) - P (A) P (B)$ \score{4}
-\< $= P (A) (1 - P (B)) = P (A) P (\widebar{B})$ \score{6}
-所以$A$和$\widebar{B}$相互独立.\score{8}
+\? $P (A \cdot \widebar{B}) = P (A - B) = P (A - A B)$ \points{2}
+\< $= P (A) - P (A B) = P (A) - P (A) P (B)$ \points{4}
+\< $= P (A) (1 - P (B)) = P (A) P (\widebar{B})$ \points{6}
+所以$A$和$\widebar{B}$相互独立.\points{8}
\end{solution}
\vfill
diff --git a/macros/latex/contrib/jnuexam/exam-a-empty.pdf b/macros/latex/contrib/jnuexam/exam-a-empty.pdf
index af4317d58a..c558560089 100644
--- a/macros/latex/contrib/jnuexam/exam-a-empty.pdf
+++ b/macros/latex/contrib/jnuexam/exam-a-empty.pdf
Binary files differ
diff --git a/macros/latex/contrib/jnuexam/exam-a-empty.tex b/macros/latex/contrib/jnuexam/exam-a-empty.tex
index 6da2c24a85..2309945737 100644
--- a/macros/latex/contrib/jnuexam/exam-a-empty.tex
+++ b/macros/latex/contrib/jnuexam/exam-a-empty.tex
@@ -3,4 +3,4 @@
% 重新排版原有的 A4 试卷,不显示答案
\PassOptionsToClass{noanswer}{jnuexam}
-\input{exam-a}
+\input{exam-a-answer}
diff --git a/macros/latex/contrib/jnuexam/exam-a.pdf b/macros/latex/contrib/jnuexam/exam-a.pdf
deleted file mode 100644
index f612be7749..0000000000
--- a/macros/latex/contrib/jnuexam/exam-a.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/jnuexam/exam-b-a3input.pdf b/macros/latex/contrib/jnuexam/exam-b-a3input.pdf
deleted file mode 100644
index 6aec596569..0000000000
--- a/macros/latex/contrib/jnuexam/exam-b-a3input.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/jnuexam/exam-b-a3input.tex b/macros/latex/contrib/jnuexam/exam-b-a3input.tex
deleted file mode 100644
index eb2782fb3e..0000000000
--- a/macros/latex/contrib/jnuexam/exam-b-a3input.tex
+++ /dev/null
@@ -1,9 +0,0 @@
-% -*- coding: utf-8 -*-
-% !TEX program = xelatex
-
-% 直接包含 A4 试卷的 PDF 文件,生成双栏的 A3 试卷
-\documentclass[a3input]{jnuexam}
-\begin{document}
-\includepdf[pages=-,nup=2x1,offset=0 0,delta=0 0]{exam-b-empty}
-%\includepdf[pages=-,nup=2x1,offset=0 0,delta=0 0,frame]{exam-b}
-\end{document}
diff --git a/macros/latex/contrib/jnuexam/exam-b-a3split.pdf b/macros/latex/contrib/jnuexam/exam-b-a3split.pdf
deleted file mode 100644
index 323a2b1eab..0000000000
--- a/macros/latex/contrib/jnuexam/exam-b-a3split.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/jnuexam/exam-b-a3split.tex b/macros/latex/contrib/jnuexam/exam-b-a3split.tex
deleted file mode 100644
index fd39ae4b49..0000000000
--- a/macros/latex/contrib/jnuexam/exam-b-a3split.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-% -*- coding: utf-8 -*-
-% !TEX program = xelatex
-
-% 将原有的 A4 试卷改为 A3 试卷双栏排版
-\PassOptionsToClass{a3paper,noanswer}{jnuexam}
-\input{exam-b}
diff --git a/macros/latex/contrib/jnuexam/exam-b-answer.pdf b/macros/latex/contrib/jnuexam/exam-b-answer.pdf
new file mode 100644
index 0000000000..7cd246095a
--- /dev/null
+++ b/macros/latex/contrib/jnuexam/exam-b-answer.pdf
Binary files differ
diff --git a/macros/latex/contrib/jnuexam/exam-b-answer.tex b/macros/latex/contrib/jnuexam/exam-b-answer.tex
new file mode 100644
index 0000000000..6925ea8fff
--- /dev/null
+++ b/macros/latex/contrib/jnuexam/exam-b-answer.tex
@@ -0,0 +1,6 @@
+% -*- coding: utf-8 -*-
+% !TEX program = xelatex
+
+% 从 A 卷自动生成 B 卷,将题目乱序排列
+\PassOptionsToClass{random}{jnuexam}
+\input{exam-a-answer}
diff --git a/macros/latex/contrib/jnuexam/exam-b-empty.pdf b/macros/latex/contrib/jnuexam/exam-b-empty.pdf
index 363d080b0c..b98b5e7df4 100644
--- a/macros/latex/contrib/jnuexam/exam-b-empty.pdf
+++ b/macros/latex/contrib/jnuexam/exam-b-empty.pdf
Binary files differ
diff --git a/macros/latex/contrib/jnuexam/exam-b-empty.tex b/macros/latex/contrib/jnuexam/exam-b-empty.tex
index 41db22542c..953a4aab9f 100644
--- a/macros/latex/contrib/jnuexam/exam-b-empty.tex
+++ b/macros/latex/contrib/jnuexam/exam-b-empty.tex
@@ -3,4 +3,4 @@
% 重新排版原有的 A4 试卷,不显示答案
\PassOptionsToClass{noanswer}{jnuexam}
-\input{exam-b}
+\input{exam-b-answer}
diff --git a/macros/latex/contrib/jnuexam/exam-b.pdf b/macros/latex/contrib/jnuexam/exam-b.pdf
deleted file mode 100644
index 169d679c22..0000000000
--- a/macros/latex/contrib/jnuexam/exam-b.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/jnuexam/exam-b.tex b/macros/latex/contrib/jnuexam/exam-b.tex
deleted file mode 100644
index 78b04a6bd0..0000000000
--- a/macros/latex/contrib/jnuexam/exam-b.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-% -*- coding: utf-8 -*-
-% !TEX program = xelatex
-
-% 从 A 卷自动生成 B 卷,将题目逆序排列
-\PassOptionsToClass{reverse}{jnuexam}
-\input{exam-a}
diff --git a/macros/latex/contrib/jnuexam/jnuexam.cls b/macros/latex/contrib/jnuexam/jnuexam.cls
index bace8c2a69..5b25fa01d6 100644
--- a/macros/latex/contrib/jnuexam/jnuexam.cls
+++ b/macros/latex/contrib/jnuexam/jnuexam.cls
@@ -6,25 +6,39 @@
% ----------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{jnuexam}[2020/11/06 v1.0 An exam class for Jinan University]
-
-\newif\ifmifengxian \mifengxiantrue % 是否加密封线
-\newif\ifsidebyside \sidebysidefalse % 是否 A3 纸张
-\newif\ifreverse \reversefalse % 是否逆序出题
-\newif\ifanswer \answertrue % 是否显示答案
-\newif\ifamsfonts \amsfontsfalse % 切换数学字体
-\newif\ifsourcehan \sourcehanfalse % 切换思源字体
-\newif\ifdisplay \displayfalse % 切换展示公式
-\newif\ifcollection \collectionfalse % 用于试卷题库
-
-\DeclareOption{a3paper}{\sidebysidetrue}
-\DeclareOption{a3input}{\sidebysidetrue\mifengxianfalse}
-\DeclareOption{reverse}{\reversetrue}
+\ProvidesClass{jnuexam}[2023/12/11 v2.0 An exam class for Jinan University]
+
+%% 旧版本的 LaTeX 不能识别 2022-11-01 这种日期格式
+%\@ifl@t@r\fmtversion{2022-11-01}{}{
+\@ifl@t@r\fmtversion{2022/11/01}{}{
+ \ClassError{jnuexam}{%
+ Your current TeX distribution is quite old.\MessageBreak
+ We need CTeX 3.0+ or MiKTeX 2023+ or TeXLive 2023+%
+ }{Please update your TeX distribution first.}
+}
+
+\newif\ifplain \plainfalse % 是否添加装订线和草稿纸
+\newif\iftwoinone \twoinonefalse % 是否使用 A3 纸张
+\newif\ifoneside \onesidefalse % 是否单面印刷试卷
+\newif\ifresetnumber \resetnumbertrue % 是否对各题型小题分别编号
+\newif\ifrandom \randomfalse % 是否乱序出题
+\newif\ifanswer \answertrue % 是否显示答案
+\newif\ifamsfonts \amsfontsfalse % 切换数学字体
+\newif\ifsourcehan \sourcehanfalse % 切换思源字体
+\newif\ifsolidot \solidotfalse % 是否替换空心句号为实心句号
+\newif\ifcellspace \cellspacefalse % 增加表格列间距
+\newif\ifmedmath \medmathfalse % 切换公式尺寸
+
+\DeclareOption{plain}{\plaintrue}
+\DeclareOption{a3paper}{\twoinonetrue}
+\DeclareOption{a3input}{\twoinonetrue\plaintrue}
+\DeclareOption{oneside}{\onesidetrue}
+\DeclareOption{random}{\randomtrue}
\DeclareOption{noanswer}{\answerfalse}
\DeclareOption{amsfonts}{\amsfontstrue}
\DeclareOption{sourcehan}{\sourcehantrue}
-\DeclareOption{display}{\displaytrue}
-\DeclareOption{collection}{\collectiontrue\mifengxianfalse}
+\DeclareOption{solidot}{\solidottrue}
+\DeclareOption{medmath}{\cellspacetrue\medmathtrue}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{ctexart}} %其它选项
@@ -32,32 +46,61 @@
% 四号 小四号 五号 小五号
% 14bp 12bp 10.5bp 9bp
+% 实际上,在旧版本 ctex 中只能用 cs4size 和 c5size 选项
+% 而新版本 ctex 中,可以利用 zihao 选项指定各种中文字号
+\PassOptionsToPackage{CJKnumber}{xeCJK}
\LoadClass[cs4size,UTF8,noindent]{ctexart}
-\ifamsfonts
- \RequirePackage{amssymb}
-\else
- \RequirePackage[utopia]{mathdesign} % charter, utopia
- \renewcommand\bfdefault{bx}
- \let\oldoiint\oiint\renewcommand{\oiint}{\oldoiint\nolimits}
- \DeclareTextCommandDefault{\nobreakspace}{\leavevmode\nobreak\ }
+% 在旧版本 xeCJK 中,必须用 CJKnumber 选项载入 CJKnumb 包,后面才载入会报错
+% 但在新版本 xeCJK 中 CJKnumber 选项已经被废弃,需要在后面自行载入它
+% 在 xeCJK 中已经禁止载入 CJK,但是在新版本 ctex 宏包中却失效了
+% 我们假装 CJK 已经载入,再载入 CJKnumb,避免出现 \CJKglue 重复定义的问题
+% 注意用 PDFLaTeX 编译时需要用到 CJK,所以只在未定义时才作修改
+\ifdefined\else
+ \@namedef{ver@CJK.sty}{}
+ %\@namedef{opt@CJK.sty}{}
\fi
+\RequirePackage{CJKnumb}
+
+% 新版本 xeCJK 已经废弃并禁用 CJKfntef,改用 xeCJKfntef 取代,我们需要载入后者
+% 注意要保证能在较旧的 TeX 系统中编译,我们只能用 \ifXeTeX 而不能用 \ifxetex
+% 因为旧版本 iftex 宏包只有 \ifXeTeX 命令,而 ifxetex 宏包才有 \ifxetex 命令
+% 在 2019 年 10 月,LaTeX 开发团队接管了 iftex 宏包,新版本同时提供这两个命令
+\RequirePackage{CJKfntef}
+\RequirePackage{iftex}
+\ifXeTeX\@ifpackagelater{xeCJK}{2020/02/10}{\RequirePackage{xeCJKfntef}}{}\fi
-\ifsidebyside
+\iftwoinone
\RequirePackage[a3paper,landscape,twocolumn,columnsep=60mm,left=30mm,right=30mm,top=25mm,bottom=25mm]{geometry}
\else
\RequirePackage[a4paper,left=30mm,right=30mm,top=25mm,bottom=25mm]{geometry}
\fi
-\RequirePackage{tabularx}
-\RequirePackage{lastpage}
-\RequirePackage{fancyhdr}
-\RequirePackage{xcolor}
+\RequirePackage{amsmath}
+\RequirePackage{array}
+\RequirePackage{calc}
\RequirePackage{comment}
+\RequirePackage[inline]{enumitem}
\RequirePackage{environ}
\RequirePackage{etoolbox}
-\RequirePackage{calc}
-\RequirePackage{iftex}
+\RequirePackage{fancyhdr}
+\RequirePackage{zref-user,zref-lastpage}
+\RequirePackage{tabularx}
+\RequirePackage{xcolor}
+\RequirePackage{xkeyval}
+
+\ifplain
+ \allowdisplaybreaks[4]
+\fi
+
+\ifamsfonts
+ \RequirePackage{amssymb}
+\else
+ \RequirePackage[utopia]{mathdesign} % charter, utopia
+ \renewcommand\bfdefault{bx}
+ \let\oldoiint\oiint\renewcommand{\oiint}{\oldoiint\nolimits}
+ \DeclareTextCommandDefault{\nobreakspace}{\leavevmode\nobreak\ }
+\fi
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\newcolumntype{n}[1]{>{\centering\arraybackslash}m{#1}}
@@ -67,55 +110,151 @@
\setlength{\lineskip}{4pt}
%% ---------------------------------------------------------------------------
-%% 密封线命令 \mifengxian
-%% 草稿纸命令 \caogaozhi
-%% 这两个命令仅在 A3 纸张中用到,且需要编译两次才能得到正确结果
+%% 装订线命令 \addbindingline
+%% 草稿纸命令 \addscratchpaper
+%% 这两个命令需要编译两次才能得到正确结果
%% ---------------------------------------------------------------------------
-\newcommand{\mifengxianleft}{
+\newcommand{\setexam}[1]{\setkeys{jnuexam@setup}{#1}}
+
+\ifplain\else
+ \RequirePackage{tikz}
+ \RequirePackage{everypage}
+\fi
+
+\newcommand{\bindinglineleft}{
\path (current page.north west) +(25mm,-25mm) coordinate (a1);
\path (current page.south west) +(25mm,25mm) coordinate (a2);
\draw[dashed] (a1) -- node[left=1mm,text width=1em,inner sep=0pt]{\1{线}\0\1{订}\0\1{装}} (a2);
}
-\newcommand{\mifengxianright}{
+\newcommand{\bindinglineright}{
\path (current page.north east) +(-25mm,-25mm) coordinate (b1);
\path (current page.south east) +(-25mm,25mm) coordinate (b2);
\draw[dashed] (b1) -- node[right=1mm,text width=1em,inner sep=0pt]{\2{装}\0\2{订}\0\2{线}} (b2);
}
-\newcommand{\mifengxianone}{%
+\newcommand{\bindinglineone}{%
\def\0{\\[70mm]}\def\1{\rotatebox{90}}\def\2{\rotatebox{-90}}%
\begin{tikzpicture}[remember picture,overlay,very thick]
- \ifnumodd{\value{page}}{\mifengxianleft}{\mifengxianright}
+ \ifnumodd{\value{page}}{\bindinglineleft}{\bindinglineright}
\end{tikzpicture}}
-\newcommand{\mifengxiantwo}{%
+\newcommand{\bindinglinetwo}{%
\def\0{\\[70mm]}\def\1{\rotatebox{90}}\def\2{\rotatebox{-90}}%
\begin{tikzpicture}[remember picture,overlay,very thick]
- \mifengxianleft\mifengxianright
+ \bindinglineleft\bindinglineright
+\end{tikzpicture}}
+
+\iftwoinone
+ \let\bindingline=\bindinglinetwo
+\else
+ \let\bindingline=\bindinglineone
+\fi
+
+\def\zhuangdingxian{1}
+\define@key{jnuexam@setup}{binding}[2]{\def\zhuangdingxian{#1}}
+
+\newcommand{\addbindingline}{%
+ \ifcase\zhuangdingxian % 0
+ \or % 1
+ \ifbool{answer}{}{\bindingline}%
+ \or % 2
+ \bindingline
+ \fi
+}
+
+\ifplain\else
+ \AddEverypageHook{\addbindingline}
+\fi
+
+\newcommand{\scratchpaperone}{%
+\begin{tikzpicture}[remember picture,overlay,font=\sffamily\fontsize{120pt}{120pt}\selectfont]
+ \node[text=lightgray!40,text width=120pt] at (current page.center) {草\\ 稿\\ 纸};
\end{tikzpicture}}
-\newcommand{\caogaozhi}{%
+\newcommand{\scratchpapertwo}{%
\begin{tikzpicture}[remember picture,overlay,font=\sffamily\fontsize{180pt}{180pt}\selectfont]
\node[text=lightgray!40] at (current page.center) {草\quad 稿\quad 纸};
\end{tikzpicture}}
-\ifmifengxian
- \RequirePackage{tikz}
- \RequirePackage{everypage}
- \ifsidebyside
- \AddEverypageHook{\mifengxiantwo}
- % 在 twocolumn 文档中,\newpage 可能是到下一栏,\clearpage 才能保证到下一页
- \preto{\@enddocumenthook}{\clearpage\pagestyle{empty}\caogaozhi\clearpage\caogaozhi\addtocounter{page}{-2}}
- % 在旧版本 ctex 宏包中不能用 \AtEndDocument 添加含中文的内容,即不能用 \appto 而要用 \preto
- %\AtEndDocument{\clearpage\pagestyle{empty}\caogaozhi\clearpage\caogaozhi\addtocounter{page}{-2}}
- \else
- \AddEverypageHook{\mifengxianone}
- \fi
+\def\caogaozhi{0}
+\define@key{jnuexam@setup}{scratch}[1]{\def\caogaozhi{#1}}
+
+\newcounter{my@empty@page} % 空白页数
+\newcounter{my@scratch@page} % 草稿页数
+\newcounter{my@extra@page} % 空白页数+草稿页数
+
+% 添加空白页,使得草稿纸前页数在单面印刷时为偶数,双面印刷时为4的倍数
+% 添加草稿纸,页数在单面印刷时等于设置值的两倍,双面印刷时等于设置值的4倍
+\newcommand{\doscratchpaperone}{%
+ \clearpage\pagestyle{empty}\let\addbindingline=\relax
+ \ifnumgreater{\caogaozhi}{0}{%
+ \ifbool{oneside}{%
+ \ifnumodd{\value{page}}%
+ {\setcounter{my@empty@page}{0}}%
+ {\setcounter{my@empty@page}{1}}%
+ \setcounter{my@scratch@page}{\caogaozhi*2}%
+ }{%
+ \setcounter{my@empty@page}{(\value{page}+2)/4*4+1-\value{page}}%
+ \setcounter{my@scratch@page}{\caogaozhi*4}%
+ }%
+ \my@add@extra@page
+ }{}%
+}
+
+% 注意在 twocolumn 文档中,\newpage 到下一栏,\clearpage 到下一页
+% 另外注意第一行的 \clearpage 等不能移动到 \my@add@extra@page 命令里
+% 因为 \clearpage 后本页已经结束,page 表示的是下一页的页码
+\newcommand{\doscratchpapertwo}{%
+ \clearpage\pagestyle{empty}\let\addbindingline=\relax
+ \ifnumgreater{\caogaozhi}{0}{%
+ \ifbool{oneside}{%
+ \setcounter{my@empty@page}{0}%
+ \setcounter{my@scratch@page}{\caogaozhi}%
+ }{%
+ \setcounter{my@empty@page}{(\value{page}/2)-(\value{page}/2)/2*2}%
+ \setcounter{my@scratch@page}{\caogaozhi*2}%
+ }%
+ \my@add@extra@page
+ }{}%
+}
+
+\newcommand{\my@add@extra@page}{%
+ \setcounter{my@extra@page}{\value{my@empty@page}+\value{my@scratch@page}}%
+ \whileboolexpr{
+ test{\ifnumgreater{\value{my@empty@page}}{0}}
+ }{%
+ \addtocounter{my@empty@page}{-1}%
+ \leavevmode\clearpage
+ }%
+ \whileboolexpr{
+ test{\ifnumgreater{\value{my@scratch@page}}{0}}
+ }{%
+ \addtocounter{my@scratch@page}{-1}%
+ \leavevmode\scratchpaper\clearpage
+ }%
+ \addtocounter{page}{-\value{my@extra@page}}%
+}
+
+\iftwoinone
+ \let\scratchpaper=\scratchpapertwo
+ \let\doscratchpaper=\doscratchpapertwo
+\else
+ \let\scratchpaper=\scratchpaperone
+ \let\doscratchpaper=\doscratchpaperone
\fi
-\ifsidebyside
+% 在旧版本 ctex 宏包中不能用 \AtEndDocument 添加含中文的内容,即不能用 \appto 而要用 \preto
+\newcommand{\addscratchpaper}{%
+ \preto{\@enddocumenthook}{\doscratchpaper}%
+}
+
+\ifplain\else\ifanswer\else
+ \addscratchpaper
+\fi\fi
+
+\iftwoinone
\RequirePackage{pdfpages}
% 新版本 pdfpages 将 \includepdf 放在文档开头时会有命令未定义的错误
% 见 https://tex.stackexchange.com/questions/352007/ieeetran-and-pdfpages
@@ -167,7 +306,7 @@
\hline
\textbf{考试方式} \\ 开卷~[\isquad{\bijuan}]\quad 闭卷~[\ischeck{\bijuan}] \\
\hline
- \textbf{试卷类别}~(\,A, B, C\,)\\\relax [\,\shijuan\,]\hfill 共~\pageref{LastPage}~页
+ \textbf{试卷类别}~(\,A, B, C\,)\\\relax [\,\shijuan\,]\hfill 共~\zpageref{LastPage}~页
\end{tabular}
}
@@ -181,9 +320,12 @@
\newcommand{\makehead}{
\thispagestyle{plain}
- \centerline{\LARGE\bfseries 暨\quad 南\quad 大\quad 学\quad 考\quad 试\quad 试\quad 卷}
+ \centerline{%
+ \LARGE\bfseries\ifanswer\color{red!80!black}\fi
+ 暨\quad 南\quad 大\quad 学\quad 考\quad 试\quad 试\quad 卷\ifanswer\quad 答\quad 案\fi
+ }%
\vspace{2em}%
- \ifreverse
+ \ifrandom
\ifx\shijuan\my@temp@a\renewcommand{\shijuan}{B}\fi
\ifx\shijuan\my@temp@c\renewcommand{\shijuan}{D}\fi
\fi
@@ -204,9 +346,9 @@
\hline
\textbf{题\quad 号} & 一 & 二 & 三 & 四 & 五 & 六 & 总分\\
\hline
- \textbf{得\quad 分} & & & & & & & \\
+ \textbf{得\quad 分}\rule[-0.75em]{0pt}{2.5em} & & & & & & & \\
\hline
- \textbf{评阅人} & & & & & & & \\
+ \textbf{评阅人}\rule[-0.75em]{0pt}{2.5em} & & & & & & & \\
\hline
\end{tabularx}
}
@@ -219,12 +361,27 @@
\newcommand{\my@headleft}{\hspace{-0.3em}《\kecheng》\kern-0.3em 试卷\,\shijuan}
\newcommand{\my@headright}{姓名\hspace{6em}学号\hspace{6em}}
\newcommand{\my@headtext}{\my@headleft\hfill \my@headright}
-\newcommand{\my@foottext}{第~\thepage~页\quad 共~\pageref{LastPage}~页}
+\newcommand{\my@foottext}{第~\thepage~页\quad 共~\zpageref{LastPage}~页}
+% fancy page style
+\fancyhf{} % 清空页眉页脚
+\iftwoinone
+ \renewcommand{\headrulewidth}{0pt}%
+ \lhead{\small\underline{\my@columnbox{\my@headtext}\strut}}
+ \rhead{\small\underline{\my@columnbox{\my@headtext}\strut}}
+ \lfoot{\small\my@columnbox{\my@foottext}}
+ \rfoot{\small\my@columnbox{\stepcounter{page}\my@foottext}}
+\else
+ \lhead{\small\my@headleft}
+ \rhead{\small\my@headright}
+ \cfoot{\small\my@foottext}
+\fi
+
+% plain page style
\fancypagestyle{plain}{
\renewcommand{\headrulewidth}{0pt}%
\fancyhf{}
- \ifsidebyside
+ \iftwoinone
\rhead{\small\underline{\my@columnbox{\my@headtext\strut}}}
\lfoot{\small\my@columnbox{\my@foottext}}
\rfoot{\small\my@columnbox{\stepcounter{page}\my@foottext}}
@@ -232,18 +389,11 @@
\cfoot{\small\my@foottext}
\fi
}
-\fancyhf{}
-\pagestyle{fancy}
-\ifsidebyside
- \renewcommand{\headrulewidth}{0pt}%
- \lhead{\small\underline{\my@columnbox{\my@headtext}\strut}}
- \rhead{\small\underline{\my@columnbox{\my@headtext}\strut}}
- \lfoot{\small\my@columnbox{\my@foottext}}
- \rfoot{\small\my@columnbox{\stepcounter{page}\my@foottext}}
+
+\ifplain
+ \pagestyle{plain}
\else
- \lhead{\small\my@headleft}
- \rhead{\small\my@headright}
- \cfoot{\small\my@foottext}
+ \pagestyle{fancy}
\fi
%% ---------------------------------------------------------------------------
@@ -251,44 +401,174 @@
%% 附录命令 \makedata
%% 题目环境 problem
%% 解答环境 solution
-%% 逆序选项 reverse
+%% 乱序选项 random
%% ---------------------------------------------------------------------------
+\newif\ifonlyoneproblem \onlyoneproblemfalse % 此部分仅有一道题时不显示题目编号
\xdef\allproblems{}
\xdef\lastproblem{}
-\newcounter{problem}
+\newcounter{problem} % 当前题型的小题编号
+\newcounter{problemreal} % 实际显示的小题编号,在各题型小题统一编号时使用
+\newcounter{totalproblems} % 之前各题型小题总数,在各题型小题统一编号时使用
\newcommand{\solutionname}{解}
\newcounter{choice} % 后面选择题的 abcd 环境要用到
-\newcounter{step} % 后面解答题的 \step 命令要用到
+\newcommand{\hangtext}{}
+\newlength{\hanglength}
+\colorlet{part number}{black}
+\colorlet{problem number}{blue!80!black}
+\colorlet{solution name}{blue!80!black}
+
+\ifrandom
+ \RequirePackage{pgf}
+ \RequirePackage{pgffor}
+\fi
+
+\newcounter{my@shuffle@temp@cnt}
+\newcounter{my@list@temp@cnt}
+
+\newcommand\my@list@print[1]{%
+ \par\renewcommand*{\do}[1]{(##1)}%
+ \dolistloop#1%
+}
+
+\newcommand\my@list@remove[2]{%
+ %\my@list@print\my@shuffle@list
+ \setcounter{my@list@temp@cnt}{0}%
+ \global\let\my@tmpa@list=#1%
+ \gdef#1{}%
+ \par\renewcommand*{\do}[1]{%
+ \stepcounter{my@list@temp@cnt}%
+ \ifnumequal{\value{my@list@temp@cnt}}{#2}{%
+ \def\my@list@item{##1}%
+ %[##1]%
+ }{
+ \listxadd#1{##1}%
+ }%
+ }%
+ \dolistloop\my@tmpa@list
+}
-\newcommand{\printproblems}{\ifreverse\lastproblem\allproblems\fi\xdef\allproblems{}\xdef\lastproblem{}}
+%% 随机数种子不能超过 2147483647 = "7FFFFFFF
+\def\my@random@seed{19061116}
+\define@key{jnuexam@setup}{seed}[19061116]{\def\my@random@seed{#1}}
+
+\newcommand\my@shuffle@problems{%
+ %% 当\pgfmathrandom的参数为3的倍数时,对相邻种子生成的多个随机数分布不均匀
+ %\pgfmathsetseed{\numexpr\my@random@seed+\value{section}-1\relax}%
+ %% 因此我们改用下面的方法,用随机数种子生成下一个随机数种子
+ \pgfmathsetseed{\my@random@seed}%
+ \pgfmathrandominteger\my@random@seed{1}{2147483647}%
+ \ifnumgreater{\value{problem}}{2}{%
+ \gdef\my@shuffle@list{}%
+ \foreach \i in {1,...,\value{problem}} {\listxadd\my@shuffle@list{\i}}%
+ %% 首尾两个小题的位置总要改变
+ \pgfmathrandom{2,\value{problem}}%
+ \my@list@remove\my@shuffle@list{\pgfmathresult}%
+ \global\csletcs{my@problem@b@1}{my@problem@a@\my@list@item}%
+ \ifnumequal{\my@list@item}{\value{problem}}{
+ \pgfmathrandom{\numexpr\value{problem}-1\relax}%
+ \my@list@remove\my@shuffle@list{\pgfmathresult}%
+ \global\csletcs{my@problem@b@\the\value{problem}}{my@problem@a@\my@list@item}%
+ }{%
+ \pgfmathrandom{\numexpr\value{problem}-2\relax}%
+ \my@list@remove\my@shuffle@list{\pgfmathresult}%
+ \global\csletcs{my@problem@b@\the\value{problem}}{my@problem@a@\my@list@item}%
+ }%
+ %% 其他小题的位置没有任何限制
+ \setcounter{my@shuffle@temp@cnt}{1}%
+ \whileboolexpr{%
+ test{\ifnumless{\value{my@shuffle@temp@cnt}}{\numexpr\value{problem}-1\relax}}%
+ }{%
+ \stepcounter{my@shuffle@temp@cnt}%
+ \pgfmathrandom{\numexpr\value{problem}-\value{my@shuffle@temp@cnt}\relax}%
+ \my@list@remove\my@shuffle@list{\pgfmathresult}%
+ \global\csletcs{my@problem@b@\the\value{my@shuffle@temp@cnt}}{%
+ my@problem@a@\my@list@item
+ }%
+ }%
+ }{%
+ \ifnumequal{\value{problem}}{2}{%
+ \global\csletcs{my@problem@b@1}{my@problem@a@2}%
+ \global\csletcs{my@problem@b@2}{my@problem@a@1}%
+ }{}%
+ }%
+}
+
+\newcommand{\printproblems}{%
+ \ifrandom
+ \my@appto@problems
+ \my@shuffle@problems
+ \setcounter{problem}{0}%
+ \allproblems
+ \fi
+ \xdef\allproblems{}%
+ \xdef\lastproblem{}%
+}
\newcommand{\makepart}[2]{%
\printproblems
+ \setcounter{totalproblems}{\value{totalproblems}+\value{problem}}%
\setcounter{problem}{0}%
\stepcounter{section}%
\vspace{1em}%
- \noindent\textbf{\Chinese{section}、#1}(#2)%
- \par\vspace{1em}%
+ \noindent\textbf{\textcolor{part number}{\Chinese{section}}、#1}(#2)%
+ \par\nopagebreak
+ \if\relax\detokenize{#1}\relax % #1 is empty
+ \onlyoneproblemtrue
+ \else
+ \onlyoneproblemfalse
+ \vspace{1em}%
+ \fi
+ %其中设定了\@nobreaktrue,保证在列表前也不分页,详情见 source2e
+ \@afterheading
}
\newcommand{\makedata}[1]{%
- \printproblems\my@stop@reverse
+ \printproblems\my@stop@random
\centerline{\textbf{附录}\quad #1}\smallskip
}
-\preto{\@enddocumenthook}{\printproblems\my@stop@reverse}
+\preto{\@enddocumenthook}{\printproblems\my@stop@random}
\newcommand\ignorepars{\@ifnextchar\par{\expandafter\ignorepars\@gobble}{}}
-\newenvironment{problemreal}{%
- \stepcounter{problem}\setcounter{choice}{0}\setcounter{step}{0}%
- \textbf{\textsf{{\color{blue}\arabic{problem}}.}}\;\,\ignorespaces
-}{\par}
+% 局部定义,仅在当前题目内有效
+\define@key{jnuexam@problem}{points}[-1]{\def\my@problem@points{#1}}
+\define@key{jnuexam@problem}{level}[]{\def\my@problem@level{#1}}
+\define@key{jnuexam@problem}{year}[]{\def\my@problem@year{#1}}
+
+\newcommand{\problempointstext}[1]{(#1 分)}
+
+\newcommand\my@hook@exec@other@keys{}
+
+\newcommand{\execute@problem@keys}[1]{%
+ \setkeys{jnuexam@problem}{#1}%
+ \my@hook@exec@other@keys
+ \ifdefvoid{\my@problem@points}{}{\problempointstext{\my@problem@points}}%
+}
+
+\newenvironment{problemreal}[1][]{%
+ \stepcounter{problem}\setcounter{choice}{0}%
+ \ifresetnumber
+ \ifonlyoneproblem
+ \renewcommand{\hangtext}{\qquad}%
+ \else
+ \renewcommand{\hangtext}{\textbf{\textsf{\textcolor{problem number}{\arabic{problem}}.}}\;\,}%
+ \fi
+ \else
+ \setcounter{problemreal}{\value{totalproblems}+\value{problem}}%
+ \renewcommand{\hangtext}{\textbf{\textsf{\textcolor{problem number}{\arabic{problemreal}}.}}\;\,}%
+ \fi
+ \settowidth{\hanglength}{\hangtext}%
+ \description[leftmargin=\hanglength,labelwidth=0pt,labelsep=0pt,topsep=0pt,parsep=0pt]
+ \item[\hangtext]\execute@problem@keys{#1}%
+}{\enddescription}
\newenvironment{solutionreal}{%
- \setcounter{step}{0}%
- \textbf{\textsf{{\color{blue}\solutionname}.}}\;\,\ignorepars
-}{\par}
+ \renewcommand{\hangtext}{\textbf{\textsf{\textcolor{solution name}{\solutionname}.}}\;\,}%
+ \settowidth{\hanglength}{\hangtext}%
+ \description[leftmargin=\hanglength,labelwidth=0pt,labelsep=0pt,topsep=0pt,parsep=0pt]
+ \item[\hangtext]
+}{\enddescription}
\let \oldnewpage = \newpage
\let \oldvfill = \vfill
@@ -296,42 +576,45 @@
\let \oldmedskip = \medskip
\let \oldbigskip = \bigskip
-\ifreverse
+\ifrandom
+ \newcommand\my@appto@problems{%
+ \xappto\allproblems{\expandonce\lastproblem}%
+ }%
\NewEnviron{problem}{%
- \xdef\allproblems{%
- \unexpanded\expandafter{\lastproblem}%
- \unexpanded\expandafter{\allproblems}%
- }%
- \xdef\lastproblem{%
+ \stepcounter{problem}%
+ \my@appto@problems
+ \csxdef{my@problem@a@\the\value{problem}}{%
\unexpanded{\begin{problemreal}}%
\unexpanded\expandafter{\BODY}%
\unexpanded{\end{problemreal}}%
}%
+ \csxdef{my@problem@b@\the\value{problem}}{%
+ \expandonce{\csname my@problem@a@\the\value{problem}\endcsname}%
+ }%
+ \xdef\lastproblem{%
+ \expandonce{\csname my@problem@b@\the\value{problem}\endcsname}%
+ }%
}
\NewEnviron{solution}{%
- \xdef\lastproblem{%
- \unexpanded\expandafter{\lastproblem}%
+ \csxappto{my@problem@a@\the\value{problem}}{%
\unexpanded{\begin{solutionreal}}%
- \unexpanded\expandafter{\BODY}%
+ \expandonce{\BODY}%
\unexpanded{\end{solutionreal}}%
}%
}
- \renewcommand{\newpage}{\xdef\lastproblem{\noexpand\oldnewpage\unexpanded\expandafter{\lastproblem}}}
- \renewcommand{\vfill}{\xdef\lastproblem{\unexpanded\expandafter{\lastproblem\oldvfill}}}
- \renewcommand{\smallskip}{\xdef\lastproblem{\unexpanded\expandafter{\lastproblem\oldsmallskip}}}
- \renewcommand{\medskip}{\xdef\lastproblem{\unexpanded\expandafter{\lastproblem\oldmedskip}}}
- \renewcommand{\bigskip}{\xdef\lastproblem{\unexpanded\expandafter{\lastproblem\oldbigskip}}}
- \let \newpagea = \relax
- \let \newpageb = \newpage
+ \renewcommand{\newpage}{\gappto\lastproblem{\oldnewpage}}
+ \renewcommand{\vfill}{\csgappto{my@problem@a@\the\value{problem}}{\oldvfill}}
+ \renewcommand{\smallskip}{\csgappto{my@problem@a@\the\value{problem}}{\oldsmallskip}}
+ \renewcommand{\medskip}{\csgappto{my@problem@a@\the\value{problem}}{\oldmedskip}}
+ \renewcommand{\bigskip}{\csgappto{my@problem@a@\the\value{problem}}{\oldbigskip}}
\else
- \newenvironment{problem}{\problemreal}{\endproblemreal}
- \newenvironment{solution}{\solutionreal}{\endsolutionreal}
- \let \newpagea = \newpage
- \let \newpageb = \relax
+ \newenvironment{problem}[1][]{\problemreal[#1]}{\endproblemreal}
+ %\newenvironment{solution}{\solutionreal}{\endsolutionreal}
+ \NewEnviron{solution}{\begin{solutionreal}\BODY\end{solutionreal}}
\fi
-\newcommand{\my@stop@reverse}{%
- \ifreverse
+\newcommand{\my@stop@random}{%
+ \ifrandom
\renewenvironment{problem}{\problemreal}{\endproblemreal}%
\renewenvironment{solution}{\solutionreal}{\endsolutionreal}%
\let \newpage = \oldnewpage
@@ -416,23 +699,34 @@
%% ---------------------------------------------------------------------------
%% 答案切换命令 \answer
-%% 判断命令 \true 和 \false
+%% 判断命令 \tickin 和 \tickout
%% 填空命令 \fillin 和 \fillout
%% 选择命令 \pickin 和 \pickout
%% ---------------------------------------------------------------------------
\newcommand{\answer}[1]{\ifanswer#1\else\phantom{#1}\fi}
-\newcommand{\cdotfill}{\leavevmode\xleaders\hbox to 0.5em{\hss$\cdot$\hss}\hfill\kern0pt\relax}
-\newcommand{\true}{\unskip\nobreak\cdotfill(\makebox[1.5em]{\color{blue}\answer{$\checkmark$}})}
-\newcommand{\false}{\unskip\nobreak\cdotfill(\makebox[1.5em]{\color{blue}\answer{\sffamily x}})}
+\newcommand*{\cdotfill}{\leavevmode\xleaders\hbox to 0.5em{\hss$\cdot$\hss}\hfill\kern0pt\relax}
+
+\newcommand*{\tick@box}[1]{[\makebox[1.5em]{\color{blue}\answer{#1}}]}
+\newcommand*{\tick@text@t}{$\checkmark$}
+\newcommand*{\tick@text@f}{{\large$\times$}}
+\newcommand*{\tick@text@T}{\sffamily T}
+\newcommand*{\tick@text@F}{\sffamily F}
+\newcommand*{\tickin}[1]{\tick@box{\csname tick@text@#1\endcsname}}
+\newcommand*{\tickout}[1]{\unskip\nobreak\cdotfill\tick@box{\csname tick@text@#1\endcsname}}
+% 过时命令,不要再使用
+%\newcommand*{\true}{\tickout{t}}
+%\newcommand*{\false}{\tickout{f}}
+
+\newcommand*{\ulinefill}[1]{\xleaders\hbox{\underline{\vphantom{#1}\kern1pt}}\hfill\kern0pt}
+\newcommand*{\minwidthbox}[2]{\makebox[{\ifdim#1<\width\width\else#1\fi}]{#2}}
-\newcommand{\ulinefill}[1]{\xleaders\hbox{\underline{\vphantom{#1}\kern1pt}}\hfill\kern0pt}
-\newcommand{\fillout}[1]{\allowbreak\hbox{}\nobreak\ulinefill{#1}\underline{\color{blue}\answer{#1}}\ulinefill{#1}}
-\newcommand{\fillin}[1]{\underline{\hspace{1em}\color{blue}\answer{#1}\hspace{1em}}}
+\newcommand*{\fillout}[1]{\allowbreak\hbox{}\nobreak\ulinefill{#1}\underline{\color{blue}\answer{#1}}\ulinefill{#1}}
+\newcommand*{\fillin}[1]{\underline{\hspace{1em}\color{blue}\minwidthbox{2em}{\answer{#1}}\hspace{1em}}}
-\newcommand{\pickout}[1]{\unskip\nobreak\cdotfill(\makebox[1.5em]{\color{blue}\answer{#1}})}
-\newcommand{\pickin}[1]{\unskip\nobreak\hspace{0.3em}(\makebox[1.5em]{\color{blue}\answer{#1}})\hspace{0.3em}\ignorespaces}
+\newcommand*{\pickout}[1]{\unskip\nobreak\cdotfill(\makebox[1.5em]{\color{blue}\answer{#1}})}
+\newcommand*{\pickin}[1]{\unskip\nobreak\hspace{0.3em}(\makebox[1.5em]{\color{blue}\answer{#1}})\hspace{0.3em}\ignorespaces}
%% ---------------------------------------------------------------------------
%% 选择题四个选项排版环境,根据四个选项的长度自动排成一行、两行或四行
@@ -440,6 +734,7 @@
%% ---------------------------------------------------------------------------
\newlength{\my@item@len}
+\newlength{\my@label@len}
\newcommand\my@item@temp{%
\unskip\cr\stepcounter{choice}(\Alph{choice})\ %
@@ -449,7 +744,13 @@
\stepcounter{choice}(\Alph{choice})\ \ignorespaces
}
\newcommand\my@item@par{%
- \par\stepcounter{choice}(\Alph{choice})\ \ignorespaces
+ \stepcounter{choice}%
+ \def\my@label@text{(\Alph{choice})\ }%
+ \settowidth{\my@label@len}{\my@label@text}%
+ \par \parshape 2 \hanglength \linewidth
+ \dimexpr\hanglength + \my@label@len\relax
+ \dimexpr\linewidth - \my@label@len\relax
+ \my@label@text\ignorespaces
}
\NewEnviron{abcd}{
@@ -514,13 +815,14 @@
}
%% ---------------------------------------------------------------------------
-%% 解答题步骤命令 \step
+%% 设定有序列表使用悬挂缩进,并指定前两级有序列表的标签格式
+%% 标签宽度按最宽者自动设定,左边距自动计算,竖直空白全部去掉
+%% 最后的 itemjoin 设定行内有序列表 enumerate* 两项之间的空白
%% ---------------------------------------------------------------------------
-\newcommand{\step}{%
- \stepcounter{step}%
- \textsf{(\arabic{step})}\;\,%
-}
+\setlist[enumerate]{labelindent=0pt,labelsep=0.2em,itemindent=0pt,leftmargin=*,nosep,itemjoin=\quad}
+\setlist[enumerate,1]{label=(\arabic*)}
+\setlist[enumerate,2]{label=(\alph*),widest*=1}
%% ---------------------------------------------------------------------------
%% 自由对齐命令 \tabpoint, \tabto, \tableft
@@ -593,48 +895,31 @@
\let \< = \tableft
%% ---------------------------------------------------------------------------
-%% 评分命令 \score
+%% 评分命令 \points
%% ---------------------------------------------------------------------------
\PassOptionsToPackage{tbtags}{amsmath}
\RequirePackage{amsmath}
-\newcommand{\myscore}[1]{\textcolor{red}{#1\kern0.15em 分}}
+\newcommand{\mypoints}[1]{\textcolor{red}{#1\kern0.15em 分}}
-\newcommand{\scoretext}[1]{\mbox{}\nobreak\hfill$\cdots\cdots$\myscore{#1}\par\noindent\ignorespaces}
-\newcommand{\scoreeqno}[1]{\eqno{\cdots\cdots\text{\myscore{#1}}}}
-\newcommand{\scoretag}[1]{\tag*{$\cdots\cdots$\myscore{#1}}}
+\newcommand{\pointstext}[1]{\mbox{}\nobreak\hfill$\cdots\cdots$\mypoints{#1}\par\noindent\ignorespaces}
+\newcommand{\pointseqno}[1]{\eqno{\cdots\cdots\text{\mypoints{#1}}}}
+\newcommand{\pointstag}[1]{\tag*{$\cdots\cdots$\mypoints{#1}}}
-\newrobustcmd{\score}[1]{%
+\newrobustcmd{\points}[1]{%
\ifbool{mmode}{%
- \ifdefstrequal{\tag}{\dft@tag}{\scoreeqno{#1}}{\scoretag{#1}}%
+ \ifdefstrequal{\tag}{\dft@tag}{\pointseqno{#1}}{\pointstag{#1}}%
}{%
- \scoretext{#1}%
+ \pointstext{#1}%
}%
}
-
-%% ---------------------------------------------------------------------------
-%% 文档选项 display 将全部公式都设为展示公式
-%% 命令 \display 将当前环境的公式都设为展示公式
-%% ---------------------------------------------------------------------------
-
-\newcommand{\display}{\everymath\expandafter{\the\everymath\displaystyle}}
-\ifbool{display}{
- \RequirePackage[math]{cellspace}
- \setlength\cellspacetoplimit{2pt}
- \setlength\cellspacebottomlimit{2pt}
- \addparagraphcolumntypes{X}
- % Fix cellspace bug before version 1.7
- % See https://tex.stackexchange.com/a/385581
- \@ifpackagelater{cellspace}{2017/08/12}{}{
- \patchcmd{\@endpbox}{\color@endgroup}{\expandafter\color@endgroup}{}{}
- }
- \display
-}{}
+%\let\score=\points % \score 命令已经废弃,不要再使用
%% ---------------------------------------------------------------------------
%% 载入个人定制文件 jnuexam.cfg
%% 中文字体切换选项 sourcehan
+%% 实心句号替换选项 solidot
%% ---------------------------------------------------------------------------
\InputIfFileExists{jnuexam.cfg}{}{}
@@ -647,50 +932,149 @@
%\setCJKsansfont{思源黑体}
}
-\ifbool{sourcehan}{
- % https://sourceforge.net/p/xetex/code/ci/master/tree/source/texk/web2c/xetexdir/NEWS
- \ifbool{XeTeX}{ % TeXLive 2015
- \ifdimless{\the\XeTeXversion\XeTeXrevision pt}{0.99992pt}{}{\my@set@sourcehan}
- }{}
- \ifbool{LuaTeX}{\my@set@sourcehan}{}
-}{}
+\AtBeginDocument{%
+ \ifbool{sourcehan}{%
+ % https://sourceforge.net/p/xetex/code/ci/master/tree/source/texk/web2c/xetexdir/NEWS
+ \ifbool{XeTeX}{% TeXLive 2015
+ \ifdimless{\the\XeTeXversion\XeTeXrevision pt}{0.99992pt}{}{\my@set@sourcehan}%
+ }{}%
+ \ifbool{LuaTeX}{\my@set@sourcehan}{}%
+ }{}%
+}
+
+%% 这里不能用 \ifbool,因为涉及到 catcode 的改变
+\ifsolidot
+ \ifXeTeX
+ \catcode`。=\active\def。{.}%
+ \else\ifLuaTeX
+ \catcode`。=\active\def。{.}%
+ \fi
+ \fi
+\fi
%% ---------------------------------------------------------------------------
-%% 试卷题库选项 collection
+%% 在 tabular 和 array 等表格环境中添加列间距
+%% 避免单元格里出现的分式太过接近上面和下面行
%% ---------------------------------------------------------------------------
-\ifcollection
- \RequirePackage{hyperref}
- \hypersetup{
- pdfstartview={FitH},
- bookmarksnumbered=true,
- unicode=true,
- hidelinks=true
- %colorlinks=true,
- %linkcolor=black
- }
- \appto{\endproblem}{\medskip}
- \appto{\endsolution}{\medskip}
- \preto{\problem}{\ifnum\value{problem}=9 \setcounter{problem}{-1}\fi}
- \pagestyle{plain}
- \let\chapter=\part
- \@addtoreset{section}{part}
- \RequirePackage{xkeyval}
- \define@key{jnuexam}{level}[]{\def\my@collection@level{#1}}
- \define@key{jnuexam}{year}[]{\def\my@collection@year{#1}}
- \define@key{jnuexam}{name}[]{\def\my@collection@name{#1}}
- \newcommand{\info}[1]{%
- \setkeys{jnuexam}{level,year,name,#1}% 重置之前的数据
- \my@collection@info@do
+\newcommand{\my@do@cellspace}{%
+ \RequirePackage[math]{cellspace}%
+ \setlength\cellspacetoplimit{2pt}%
+ \setlength\cellspacebottomlimit{2pt}%
+ \addparagraphcolumntypes{X}%
+ \newcolumntype{0}[1]{>{\bcolumn ##1\@nil}##1<{\ecolumn}}%
+ \newcolumntype{5}[1]{>{$}0{##1}<{$}}%
+ % Fix cellspace bug before version 1.7
+ % See https://tex.stackexchange.com/a/385581
+ \@ifpackagelater{cellspace}{2017/08/12}{}{%
+ \patchcmd{\@endpbox}{\color@endgroup}{\expandafter\color@endgroup}{}{}%
+ }%
+}
+
+\AtBeginDocument{%
+ \ifcellspace \my@do@cellspace \fi
+}
+
+%% ---------------------------------------------------------------------------
+%% 统一行间公式和行内公式的巨算符和分式的尺寸
+%% 利用开头的 medmath 选项可以启用此部分设定
+%% ---------------------------------------------------------------------------
+
+\newcommand{\my@do@medmath}{%
+ \RequirePackage[mediummath]{nccmath}%
+ %% 补充 \oiint 命令的调整
+ \ifdef{\oiint}{%
+ \let\NCC@op@oiint=\oiint
+ \DeclareRobustCommand{\oiintop}{\mathop{\medmath{\NCC@op@oiint}}}%
+ \def\oiint{\DOTSI\NCC@op@prepare{\oiintop}}%
+ }{}%
+ %% 设定 nccmath 的积分号校正尺寸
+ %% 后面已经改用相对尺寸,不再需要
+ %\ifamsfonts
+ % \medintcorr{0.5em}
+ %\else
+ % \medintcorr{0.3em}
+ %\fi
+ %% 使用 nccmath 宏包后,cases 环境包含定积分时将无法编译,这里重新定义此环境
+ %% 注意相比 amsmath 的原始定义,我们这里将 \quad 从两列之间移动到第二列最前面
+ %% 这是因为,我们常将 cases 用于只有一列的方程组,这样处理末尾不会有多余空白
+ \ifbool{cellspace}{%
+ \renewenvironment{cases}{%
+ \left\{\linespread{1.0}\selectfont\def\arraystretch{1.2}%
+ \begin{array}{@{}5l@{}>{\quad}5l@{}}%
+ }{%
+ \end{array}\right.%
+ }%
+ }{%
+ \renewenvironment{cases}{%
+ \left\{\linespread{1.0}\selectfont\def\arraystretch{1.2}%
+ \begin{array}{@{}l@{}>{\quad}l@{}}%
+ }{%
+ \end{array}\right.%
+ }%
}
- \newcommand{\my@collection@info@do}{%
- \bigskip\hrule\nopagebreak\vspace{0.4em}\nopagebreak
- \ifdefempty{\my@collection@level}{}{Level = \my@collection@level\quad}%
- \ifdefempty{\my@collection@year}{}{Year = \my@collection@year\quad}%
- \ifdefempty{\my@collection@name}{}{Name = \my@collection@name\quad}%
- \nopagebreak\vspace{0.4em}\nopagebreak\hrule\medskip
+ %% 当 minipage 或 \parbox 仅包含行间公式时,盒子的右边距丢失,这里修正它
+ %% 其他类似问题的描述见 http://tex.stackexchange.com/q/22170
+ \let\start@gather=\NCC@startgather
+ \let\start@align=\NCC@startalign
+ \let\start@multline=\NCC@startmultline
+ \let\mathdisplay=\NCC@startdisplay
+}
+
+\newcommand{\my@do@medmath@fix}{%
+ %% 修正在角标处的非积分巨算符尺寸
+ %% 参考了 scalerel 宏包对数学样式的保存方法
+ % 非角标巨算符保持为 \displaystyle 巨算符的 80% 大小
+ % 一级角标巨算符修改为 \textstyle 巨算符的 80% 大小
+ % 二级角标巨算符修改为 \scriptstyle 巨算符的 80% 大小
+ \def\@my@style@D{\displaystyle}%
+ \def\@my@style@T{\displaystyle}%
+ \def\@my@style@S{\textstyle}%
+ \def\@my@style@s{\scriptstyle}%
+ \def\my@style@saved{\csname @my@style@\@my@style@switch\endcsname}%
+ \newcommand{\my@style@this}[1]{%
+ \mathchoice{\def\@my@style@switch{D}##1}{\def\@my@style@switch{T}##1}
+ {\def\@my@style@switch{S}##1}{\def\@my@style@switch{s}##1}%
+ }%
+ \DeclareRobustCommand*\medmath[1]{\NCC@select@msize
+ \mathord{\my@style@this{\raise\@tempdima\hbox{\NCC@prepare@msize$\my@style@saved ##1$}}}%
}
-\fi
+ %% 修正在角标处的积分算符尺寸和上下限位置
+ \newlength{\@my@em}%
+ \setlength{\@my@em}{1em}%
+ \ifamsfonts
+ \medintcorr{0.5\@my@em}%
+ \else
+ \medintcorr{0.3\@my@em}%
+ \fi
+ \newcommand{\my@style@unit}[1]{%
+ \mathchoice{\setlength{\@my@em}{1em}##1}{\setlength{\@my@em}{1em}##1}
+ {\setlength{\@my@em}{0.5em}##1}{\setlength{\@my@em}{0.3em}##1}%
+ }%
+ \let\my@saved@op@printm=\NCC@op@printm
+ \def\NCC@op@printm{\my@style@unit{\my@saved@op@printm}}%
+ %% 修正在角标位置的分式和嵌套分式
+ %% 总是使用当前样式尺寸来排版分式的分子和分母
+ \newcommand{\my@larger@frac}[2]{%
+ \mathchoice{\genfrac{}{}{}{0}{##1}{##2}}{\genfrac{}{}{}{0}{##1}{##2}}%
+ {\genfrac{}{}{}{1}{##1}{##2}}{\genfrac{}{}{}{2}{##1}{##2}}%
+ }%
+ \DeclareRobustCommand{\frac}[2]{%
+ \mathchoice{\mfrac{##1}{##2}}{\mfrac{##1}{##2}}%
+ {\my@larger@frac{##1}{##2}}{\my@larger@frac{##1}{##2}}%
+ }%
+ \patchcmd{\NCC@prepare@msize}{%
+ \def\frac{\protect\NCC@innerfrac{}}%
+ }{%
+ \let\frac=\my@larger@frac
+ }{}{}%
+}
+
+\AtBeginDocument{%
+ \ifmedmath
+ \my@do@medmath \my@do@medmath@fix
+ \fi
+}
%% ---------------------------------------------------------------------------
%% 载入常用宏包,定义常用命令
@@ -713,26 +1097,55 @@
\xeCJKsetcharclass{"2460}{"24FF}{1} % 带圈数字字母,括号数字字母,带点数字等
}{}
-\RequirePackage{CJKfntef}
\RequirePackage{multirow}
-\RequirePackage{diagbox}
\RequirePackage{tabu}
+\RequirePackage{diagbox}
+%% 修正 \diagbox 在 array 环境中使用的问题
+\newrobustcmd{\diagboxtwo}[3][]{%
+ \ifbool{mmode}{%
+ \hbox{\let\tabcolsep=\arraycolsep\diagbox[#1]{$#2$}{$#3$}}%
+ }{%
+ \diagbox[#1]{#2}{#3}%
+ }
+}
+\newrobustcmd{\diagboxthree}[4][]{%
+ \ifbool{mmode}{%
+ \hbox{\let\tabcolsep=\arraycolsep\diagbox[#1]{$#2$}{$#3$}{$#4$}}%
+ }{%
+ \diagbox[#1]{#2}{#3}{#4}%
+ }
+}
+
+\RequirePackage{mathtools} % \mathllap 命令,pmatrix* 环境等
\RequirePackage{extarrows}
\RequirePackage{relsize}
\newcommand{\Int}{\mathop{\mathlarger{\int}}}
+\AtBeginDocument{%
+ \let\my@saved@lim=\lim \def\lim{\my@saved@lim\limits}%
+ \let\my@saved@sum=\sum \def\sum{\my@saved@sum\limits}%
+ \let\my@saved@prod=\prod \def\prod{\my@saved@prod\limits}%
+}
+%\newcommand{\limit}{\lim\limits} % 废弃命令,不要再使用
+
\newcommand{\e}{\mathrm{e}}
-\newcommand{\limit}{\lim\limits}
\newcommand{\R}{\mathbb{R}}
+\DeclareMathOperator{\arccot}{arccot}
\DeclareMathOperator{\Corr}{\rho}
\DeclareMathOperator{\Cov}{Cov}
+\DeclareMathOperator{\diag}{diag}
\DeclareMathOperator{\grad}{grad}
\DeclareMathOperator{\Prj}{Prj}
+\DeclareMathOperator{\tr}{tr}
\DeclareMathOperator{\Var}{Var}
+\DeclareMathOperator{\diver}{div}
+\let\division=\div
+\let\div=\diver
+
\newcommand{\diff}{\mathop{}\!\mathrm{d}}
\newcommand{\dx}{\diff x}
\newcommand{\dy}{\diff y}
@@ -750,6 +1163,23 @@
\renewrobustcmd{\d}{\ifbool{mmode}{\diff}{\oldd}}%
}
+\let\pd=\partial
+\newcommand{\pdf}{\pd f}
+\newcommand{\pdg}{\pd g}
+\newcommand{\pdh}{\pd h}
+\newcommand{\pdl}{\pd l}
+\newcommand{\pdn}{\pd n}
+\newcommand{\pdu}{\pd u}
+\newcommand{\pdv}{\pd v}
+\newcommand{\pdx}{\pd x}
+\newcommand{\pdy}{\pd y}
+\newcommand{\pdz}{\pd z}
+\newcommand{\pdF}{\pd F}
+\newcommand{\pdL}{\pd L}
+\newcommand{\pdP}{\pd P}
+\newcommand{\pdQ}{\pd Q}
+\newcommand{\pdR}{\pd R}
+
% from mathabx package
\DeclareFontFamily{U}{mathx}{\hyphenchar\font45}
\DeclareFontShape{U}{mathx}{m}{n}{<-> mathx10}{}
@@ -778,7 +1208,44 @@
\def\T{\mathrm{T}\kern-.5pt}
-\newrobustcmd{\wfrac}[3][2pt]{%
- {\begingroup\hspace{#1}#2\hspace{#1}\endgroup\over\hspace{#1}#3\hspace{#1}}%
+% 分数线长一点的分数,\wfrac[2pt]{x}{y} 表示左右加 2pt
+% 和前面的 medmath 一样,将代码放在 \AtBeginDocument 里
+\AtBeginDocument{%
+ \newrobustcmd{\wfrac}[3][2pt]{%
+ \frac{\hspace{#1}#2\hspace{#1}}{\hspace{#1}#3\hspace{#1}}%
+ }%
+ \newrobustcmd{\wdfrac}[3][2pt]{%
+ \dfrac{\hspace{#1}#2\hspace{#1}}{\hspace{#1}#3\hspace{#1}}%
+ }%
+ \newrobustcmd{\wtfrac}[3][2pt]{%
+ \tfrac{\hspace{#1}#2\hspace{#1}}{\hspace{#1}#3\hspace{#1}}%
+ }%
}
+% 使用 stix font 中的 white arrows
+\ifxetex
+ %\IfFileExists{STIX-Regular.otf}{% 在 TeXLive 中无效
+ \IfFileExists{stix.sty}{%
+ \newfontfamily{\mystix}{STIX} % stix v1.1
+ }{%
+ \newfontfamily{\mystix}{STIXGeneral} % stix v1.0
+ }
+ \newrobustcmd\leftwhitearrow{%
+ \mathrel{\text{\normalfont\mystix\symbol{"21E6}}}%
+ }
+ \newrobustcmd\upwhitearrow{%
+ \mathrel{\text{\normalfont\mystix\symbol{"21E7}}}%
+ }
+ \newrobustcmd\rightwhitearrow{%
+ \mathrel{\text{\normalfont\mystix\symbol{"21E8}}}%
+ }
+ \newrobustcmd\downwhitearrow{%
+ \mathrel{\text{\normalfont\mystix\symbol{"21E9}}}%
+ }
+\else
+ \let \leftwhitearrow = \Leftarrow
+ \let \rightwhitearrow = \Rightarrow
+ \let \upwhitearrow = \Uparrow
+ \let \downwhitearrow = \Downarrow
+\fi
+
diff --git a/macros/latex/contrib/jnuexam/jnuexam.pdf b/macros/latex/contrib/jnuexam/jnuexam.pdf
index 495aed8bcc..b8a0d9e33b 100644
--- a/macros/latex/contrib/jnuexam/jnuexam.pdf
+++ b/macros/latex/contrib/jnuexam/jnuexam.pdf
Binary files differ
diff --git a/macros/latex/contrib/jnuexam/jnuexam.tex b/macros/latex/contrib/jnuexam/jnuexam.tex
index bfc98e0834..891c0663ee 100644
--- a/macros/latex/contrib/jnuexam/jnuexam.tex
+++ b/macros/latex/contrib/jnuexam/jnuexam.tex
@@ -77,6 +77,8 @@
\titlepage
\end{frame}
+\section{模板介绍}
+
\begin{framex}
\frametitle{简单介绍}
本文档介绍 \verb!jnuexam! 文档类。这个文档类提供暨南大学考试试卷的 LaTeX 模板。
@@ -84,7 +86,7 @@
这个模板将格式和内容分开,而且可以从一份 \verb!tex! 文件编译出四份试卷(A卷 / B卷 / A卷答案 / B卷答案),使用方便。
\par
这个模板的最新版本可以在下面地址下载:\newline
- \href{https://lvjr.bitbucket.io/jnuexam.html?\the\year}{https://lvjr.bitbucket.io/jnuexam.html}
+ \color{blue}{\href{https://lvjr.bitbucket.io/jnuexam.html?\the\year}{\ttfamily https://lvjr.bitbucket.io/jnuexam.html}}
\end{framex}
\begin{framex}
@@ -98,8 +100,39 @@
推荐用较先进的 \verb!XeLaTeX! 编译。
\end{framex}
+\section{试卷结构}
+
\begin{framex}
\frametitle{试卷结构}
+下面是 \verb!jnuexam! 试卷文档的基本结构:
+\begin{code}
+\documentclass{jnuexam}
+% 导言区
+\begin{document}
+% 正文区
+\end{document}
+\end{code}
+导言区用于设定装订线和草稿纸等等选项。\par
+正文区用于填写试卷表头和输入试卷内容。
+\end{framex}
+
+\begin{framex}
+\frametitle{装订草稿}
+在文档的导言区可以设定装订线和草稿纸。比如:
+\begin{code}
+\setexam{
+ binding = 2, % 装订线
+ scratch = 1, % 草稿纸
+}
+\end{code}
+其中 \verb!binding! 取 0 表示没有装订线,
+取 1 表示仅空白试卷有,取 2 表示空白试卷和试卷答案都有。\par
+而 \verb!scratch! 的取值表示草稿纸数量,以 A3 大小双面印刷计算。
+草稿纸仅在空白试卷中出现,试卷答案里不会带草稿纸。
+\end{framex}
+
+\begin{framex}
+\frametitle{试卷正文}
\begin{code}
\documentclass{jnuexam}
\begin{document}
@@ -145,14 +178,19 @@
\makepart{判断题}{题数分值}
\begin{problem}
-第一道判断题描述。\true
+第一道判断题描述。\tickout{t}
\end{problem}
\begin{problem}
-第二道判断题描述。\false
+第二道判断题描述。\tickout{f}
\end{problem}
\end{code}
-其中 \verb!\true! 和 \verb!\false! 命令分别表示正确和错误。
+其中 \verb!\tickout{t}! 和 \verb!\tickout{f}!
+分别表示打勾(\textcolor{blue}{$\checkmark$})和打叉(\textcolor{blue}{\large$\times$})。
+还可用大写的 \verb!\tickout{T}! 和 \verb!\tickout{F}!,
+分别表示输出 \textcolor{blue}{\textsf{T}} 和 \textcolor{blue}{\textsf{F}}。
+\par
+答案必须放在 \verb!\tickout! 命令里;这样才能在生成空白试卷时隐藏它。
\end{framex}
\begin{framex}
@@ -274,14 +312,14 @@
\begin{framex}
\frametitle{评分命令}
计算题和证明题等主观题的排版方法是完全一样的。在编写这些主观题的解答时,
-可以用 \verb!\score! 命令给出各步骤得分。比如:
+可以用 \verb!\points! 命令给出各步骤得分。比如:
\begin{code}
\begin{solution}
-$1+1=2$ \score{4}
-$2+2=4$ \score{8}
+$1+1=2$ \points{4}
+$2+2=4$ \points{8}
\end{solution}
\end{code}
-评分命令 \verb!\score! 也可在 \verb!align*! 等数学环境中使用,此时评分显示在公式编号位置。
+评分命令 \verb!\points! 也可在 \verb!align*! 等数学环境中使用,此时评分显示在公式编号位置。
\end{framex}
\begin{framex}
@@ -289,11 +327,11 @@ $2+2=4$ \score{8}
此文档类提供几个对齐命令,用于在不同行之间对齐。比如
\vskip1em\hrule
我们有$(a+b)^2 = (a+b)(a+b)$ \par
-\leavevmode\phantom{我们有$(a+b)^2$}${}= a^2 + 2ab + b^2$ \cdotfill 2分
+\leavevmode\phantom{我们有$(a+b)^2$}${}= a^2 + 2ab + b^2$ \hfill$\cdots\cdots$ 2分
\vskip0.6em\hrule\vskip1em
\begin{code}
我们有$(a+b)^2 \? = (a+b)(a+b)$ \\
- \+$= a^2+2ab+b^2$ \score{2}
+ \+$= a^2+2ab+b^2$ \points{2}
\end{code}
第一个公式内部的 \verb!\?! 保存当前水平位置,
而第二个公式前面的 \verb!\+! 表示跳到之前保存的位置。
@@ -306,11 +344,11 @@ $2+2=4$ \score{8}
此文档类提供几个对齐命令,用于在不同行的对齐。比如
\vskip1em\hrule
我们有$(a+b)^2 = (a+b)(a+b)$ \par
-\leavevmode\phantom{我们\,}${}= a^2 + 2ab + b^2$ \cdotfill 2分
+\leavevmode\phantom{我们\,}${}= a^2 + 2ab + b^2$ \hfill$\cdots\cdots$ 2分
\vskip0.6em\hrule\vskip1em
\begin{code}
我们有 \? $(a+b)^2 = (a+b)(a+b)$ \\
- \< $= a^2+2ab+b^2$ \score{2}
+ \< $= a^2+2ab+b^2$ \points{2}
\end{code}
第一行公式前面的 \verb!\?! 保存当前水平位置,
而第二行公式前面的 \verb!\<! 表示跳到之前保存位置的左侧(左移一个等号的宽度)。
@@ -345,26 +383,28 @@ $2+2=4$ \score{8}
附录数据必须放在 \verb!\makedata! 命令后面;否则在从A卷生成B卷时会出问题。
\end{framex}
+\section{模板选项}
+
\begin{framex}
\frametitle{空白试卷}
-假设 \verb!exam-a.tex! 是含答案的试卷。新建一个包含以下内容的 \verb!exam-a-empty.tex! 文档,
+假设 \verb!exam-a-answer.tex! 是含答案的试卷。新建一个包含以下内容的 \verb!exam-a-empty.tex! 文档,
编译后将得到不含答案的空白试卷。
\begin{code}
\PassOptionsToClass{noanswer}{jnuexam}
-\input{exam-a}
+\input{exam-a-answer}
\end{code}
也就是说,给 \verb!jnuexam! 文档类加上 \verb!noanswer! 选项后,编译时将会自动隐藏试卷答案。
\end{framex}
\begin{framex}
-\frametitle{逆序出题}
-假设 \verb!exam-a.tex! 是含答案的A卷。新建一个包含以下内容的 \verb!exam-b.tex! 文档,
-编译后将得到逆序出题的B卷。
+\frametitle{乱序出题}
+假设 \verb!exam-a-answer.tex! 是含答案的A卷。新建一个包含以下内容的 \verb!exam-b-answer.tex! 文档,
+编译后将得到乱序出题的B卷。
\begin{code}
-\PassOptionsToClass{reverse}{jnuexam}
-\input{exam-a}
+\PassOptionsToClass{random}{jnuexam}
+\input{exam-a-answer}
\end{code}
-也就是说,给 \verb!jnuexam! 文档类加上 \verb!reverse! 选项后,编译时将会逆序排列各题型的小题。
+也就是说,给 \verb!jnuexam! 文档类加上 \verb!random! 选项后,编译时将会乱序排列各题型的小题。
\end{framex}
\begin{framex}
@@ -383,48 +423,35 @@ $2+2=4$ \score{8}
\hline
\end{tabularx}\par
当然,竖直空白命令可以连续使用多个,以得到所需的空白。
+\vfill
+在试卷中可以使用分页命令 \verb!\newpage!,
+\alert{不要}使用其他分页命令,比如 \verb!\clearpage! 等,
+以免导致 B 卷格式错乱。
\end{framex}
\begin{framex}
-\frametitle{分页命令}
-分页命令 \verb!\newpage! 同样可以使用。由于A卷和B卷的小题顺序相反,
-其中的分页位置通常也不同。因此这里另外提供 \verb!\newpagea! 和 \verb!\newpageb! 命令,
-分别只对 A 卷和 B 卷有效。
-\par
-\renewcommand{\arraystretch}{1.3}%
-\begin{tabularx}{\linewidth}{l<{\qquad}X}
- \hline
- \texttt{\string\newpage} & 分页,对A卷和B卷均有效 \\
- \hline
- \texttt{\string\newpagea} & 分页,仅对A卷有效 \\
- \hline
- \texttt{\string\newpageb} & 分页,仅对B卷有效 \\
- \hline
-\end{tabularx}\par
-在试卷中\alert{不要}使用其他分页命令,比如 \verb!\clearpage! 等。
+\frametitle{双栏试卷}
+假设 \verb!exam-a-empty.tex! 是原来试卷的 TeX 文件。新建一个包含以下内容的文档,
+编译后将得到的 A3 纸张的试卷。
+\begin{code}
+\PassOptionsToClass{a3paper}{jnuexam}
+\input{exam-a-empty}
+\end{code}
+也就是说,给 \verb!jnuexam! 文档类加上 \verb!a3paper! 选项后,编译时将会按照 A3 纸张排版出双栏试卷。
\end{framex}
\begin{framex}
-\frametitle{分页例子}
-关于分页命令的使用,可以看下面的典型例子:
-\begin{code}
-\makepart{某题型}{题型分值}
-\newpageb
-\begin{problem}第一题\end{problem}\vfill
-\begin{problem}第二题\end{problem}\vfill
-\newpage
-\begin{problem}第三题\end{problem}\vfill
-\begin{problem}第四题\end{problem}\vfill
-\newpagea
-\end{code}
-这样编译得到的A卷就是这样的顺序:
+\frametitle{双栏试卷}
+假设 \verb!exam-a-empty.pdf! 是原来试卷的 PDF 文件。新建一个包含以下内容的文档,
+编译后将得到的 A3 纸张的试卷。
\begin{code}
-第一题 第二题 分页 第三题 第四题 分页
-\end{code}
-而编译得到的B卷就是这样的顺序:
-\begin{code}
-第四题 第三题 分页 第二题 第一题 分页
+\documentclass[a3input]{jnuexam}
+\begin{document}
+\includepdf[pages=-,nup=2x1]{exam-a-empty}
+\end{document}
\end{code}
+%\includepdf[pages=-,nup=2x1,offset=0 0,delta=0 0]{exam-a-empty}
+这种用法直接读入 A4 试卷的 PDF 文件,生成双栏的 A3 试卷,适合没有 TeX 文件时使用。
\end{framex}
\end{document}
diff --git a/macros/latex/contrib/l3kernel/CHANGELOG.md b/macros/latex/contrib/l3kernel/CHANGELOG.md
index 104535d2b0..726d647298 100644
--- a/macros/latex/contrib/l3kernel/CHANGELOG.md
+++ b/macros/latex/contrib/l3kernel/CHANGELOG.md
@@ -7,6 +7,17 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2023-12-11]
+
+## [2023-12-12]
+
+### Fixed
+- Support for deprecated `pdf` module functions (issue \#1373)
+- Generate stub `l3bitset` for transitional support
+
+### Changed
+- Use keyval handler for `l3doc` class options
+
## [2023-12-08]
### Added
@@ -1606,7 +1617,9 @@ this project uses date-based 'snapshot' version identifiers.
- Step functions have been added for dim variables,
e.g. `\dim_step_inline:nnnn`
-[Unreleased]: https://github.com/latex3/latex3/compare/2023-12-08...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2023-12-11...HEAD
+[2023-12-11]: https://github.com/latex3/latex3/compare/2023-12-12...2023-12-11
+[2023-12-12]: https://github.com/latex3/latex3/compare/2023-12-08...2023-12-12
[2023-12-08]: https://github.com/latex3/latex3/compare/2023-11-09...2023-12-08
[2023-11-09]: https://github.com/latex3/latex3/compare/2023-11-01...2023-11-09
[2023-11-01]: https://github.com/latex3/latex3/compare/2023-10-23...2023-11-01
diff --git a/macros/latex/contrib/l3kernel/README.md b/macros/latex/contrib/l3kernel/README.md
index 89ceea4ab4..3ad1051d46 100644
--- a/macros/latex/contrib/l3kernel/README.md
+++ b/macros/latex/contrib/l3kernel/README.md
@@ -1,7 +1,7 @@
LaTeX3 Programming Conventions
==============================
-Release 2023-12-08
+Release 2023-12-11
Overview
--------
diff --git a/macros/latex/contrib/l3kernel/expl3.dtx b/macros/latex/contrib/l3kernel/expl3.dtx
index 835b29d525..7c6ffe952b 100644
--- a/macros/latex/contrib/l3kernel/expl3.dtx
+++ b/macros/latex/contrib/l3kernel/expl3.dtx
@@ -24,7 +24,7 @@
%
%<*driver|generic|package|2ekernel>
%</driver|generic|package|2ekernel>
-\def\ExplFileDate{2023-12-08}%
+\def\ExplFileDate{2023-12-11}%
%<*driver>
\documentclass[full]{l3doc}
\usepackage{graphicx}
@@ -39,7 +39,7 @@
% \begin{itemize}\def\makelabel##1{\hss\llap{\bfseries##1}}}{\end{itemize}}
%
% \title{^^A
-% The \textsf{expl3} package and \LaTeX3 programming^^A
+% The \pkg{expl3} package and \LaTeX3 programming^^A
% }
%
% \author{^^A
@@ -51,7 +51,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
@@ -1437,12 +1437,12 @@
% an older version of the kernel, so we \emph{must} patch.
%
% In \texttt{package} mode, if these commands exist, then we are using
-% a version of \LaTeXe{} with \textsf{expl3} preloaded (any version)
+% a version of \LaTeXe{} with \pkg{expl3} preloaded (any version)
% and in any case patching is already done or the macros are in the
% format itself, so nothing to do.
% But if in \texttt{package} mode these macros don't exist, we have an
% even older version of \LaTeXe{} which doesn't even have
-% \textsf{expl3} preloaded, so patching is necessary.
+% \pkg{expl3} preloaded, so patching is necessary.
%
% All this means that in both \texttt{2ekernel} and \texttt{package}
% mode we have to check whether \cs{@expl@sys@load@backend@@@@}
diff --git a/macros/latex/contrib/l3kernel/expl3.pdf b/macros/latex/contrib/l3kernel/expl3.pdf
index 37608a09f7..6981f1fc34 100644
--- a/macros/latex/contrib/l3kernel/expl3.pdf
+++ b/macros/latex/contrib/l3kernel/expl3.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/interface3.pdf b/macros/latex/contrib/l3kernel/interface3.pdf
index b015376448..b7598e7082 100644
--- a/macros/latex/contrib/l3kernel/interface3.pdf
+++ b/macros/latex/contrib/l3kernel/interface3.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3.ins b/macros/latex/contrib/l3kernel/l3.ins
index 248017ba2f..7f1d882f8c 100644
--- a/macros/latex/contrib/l3kernel/l3.ins
+++ b/macros/latex/contrib/l3kernel/l3.ins
@@ -152,6 +152,8 @@ and all files in that bundle must be distributed together.
\generate{\file{l3names.def} {\from{l3names.dtx} {names}}}
+\generate{\file{l3bitset.sty} {\from{l3bitset.dtx} {stub}}}
+
% Lua code
\def\MetaPrefix{--}
diff --git a/macros/latex/contrib/l3kernel/l3basics.dtx b/macros/latex/contrib/l3kernel/l3basics.dtx
index d4f447287b..716edf4c7c 100644
--- a/macros/latex/contrib/l3kernel/l3basics.dtx
+++ b/macros/latex/contrib/l3kernel/l3basics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
@@ -1417,7 +1417,7 @@
% \end{macro}
%
% \begin{macro}[EXP]{\exp_after:wN, \exp_not:N, \exp_not:n}
-% The five |\exp_| functions are used in the \textsf{l3expan} module
+% The five |\exp_| functions are used in the \pkg{l3expan} module
% where they are described.
% \begin{macrocode}
\tex_let:D \exp_after:wN \tex_expandafter:D
@@ -1448,7 +1448,7 @@
% \begin{macro}{\scan_stop:, \group_begin:, \group_end:}
% The next three are basic functions for which there also exist
% versions that are safe inside alignments. These safe versions are
-% defined in the \textsf{l3prg} module.
+% defined in the \pkg{l3prg} module.
% \begin{macrocode}
\tex_let:D \scan_stop: \tex_relax:D
\tex_let:D \group_begin: \tex_begingroup:D
@@ -1513,10 +1513,10 @@
%
% \begin{variable}{\c_zero_int}
% We need the constant \cs{c_zero_int}
-% which is used by some functions in the \textsf{l3alloc} module. The
-% rest are defined in the \textsf{l3int} module -- at least for the
+% which is used by some functions in current module. The
+% rest are defined in the \pkg{l3int} module -- at least for the
% ones that can be defined with \cs{tex_chardef:D} or
-% \cs{tex_mathchardef:D}. For other constants the \textsf{l3int} module is
+% \cs{tex_mathchardef:D}. For other constants the \pkg{l3int} module is
% required but it can't be used until the allocation has been set
% up properly!
% \begin{macrocode}
@@ -1525,8 +1525,8 @@
% \end{variable}
%
% \begin{variable}{\c_max_register_int}
-% This is here as this particular integer is needed both in package
-% mode and to bootstrap \pkg{l3alloc}, and is documented in \pkg{l3int}.
+% This is here as this particular integer is needed in modules
+% loaded before \pkg{l3int}, and is documented in \pkg{l3int}.
% \LuaTeX{} and those which contain parts of the Omega extensions have
% more registers available than \eTeX{}.
% \begin{macrocode}
@@ -2316,7 +2316,7 @@
%<@@=cs>
% \end{macrocode}
%
-% \begin{function}{\@@_count_signature:N}
+% \begin{function}[EXP]{\@@_count_signature:N}
% \begin{syntax}
% \cs{@@_count_signature:N} \meta{function}
% \end{syntax}
@@ -2327,27 +2327,6 @@
% the marker value $-1$.
% \end{function}
%
-% \begin{function}[EXP]{\@@_get_function_name:N}
-% \begin{syntax}
-% \cs{@@_get_function_name:N} \meta{function}
-% \end{syntax}
-% Splits the \meta{function} into the \meta{name} (\emph{i.e.}~the part
-% before the colon) and the \meta{signature} (\emph{i.e.}~after the colon).
-% The \meta{name} is then left in the input stream without the escape
-% character present made up of tokens with category code $12$
-% (other).
-% \end{function}
-%
-% \begin{function}[EXP]{\@@_get_function_signature:N}
-% \begin{syntax}
-% \cs{@@_get_function_signature:N} \meta{function}
-% \end{syntax}
-% Splits the \meta{function} into the \meta{name} (\emph{i.e.}~the part
-% before the colon) and the \meta{signature} (\emph{i.e.}~after the colon).
-% The \meta{signature} is then left in the input stream made up of
-% tokens with category code $12$ (other).
-% \end{function}
-%
% \begin{function}{\@@_tmp:w}
% Function used for various short-term usages, for instance defining
% functions whose definition involves tokens which are hard to insert
diff --git a/macros/latex/contrib/l3kernel/l3bitset.dtx b/macros/latex/contrib/l3kernel/l3bitset.dtx
index 101a2aa414..545d7c3357 100644
--- a/macros/latex/contrib/l3kernel/l3bitset.dtx
+++ b/macros/latex/contrib/l3kernel/l3bitset.dtx
@@ -30,7 +30,7 @@
%</driver>
% \fi
% \title{^^A
-% The \pkg{l3bitset} package \\ Bitsets ^^A
+% The \pkg{l3bitset} package\\ Bitsets^^A
% }
%
% \author{^^A
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
@@ -73,15 +73,15 @@
%
% \section{Creating bitsets}
%
-% \begin{function}[added = 2021-01-26,updated=2020-12-29]
+% \begin{function}[added = 2023-11-15]
% {\bitset_new:N,\bitset_new:c,\bitset_new:Nn, \bitset_new:cn}
% \begin{syntax}
% \cs{bitset_new:N} \meta{bitset var} \\
% \cs{bitset_new:Nn} \meta{bitset var}
-% \{
-% \meta{name1} |=| \meta{index1} |,|
-% \meta{name2} |=| \meta{index2} |,| \ldots{}
-% \}
+% ~~\{
+% ~~~~\meta{name1} |=| \meta{index1} |,|
+% ~~~~\meta{name2} |=| \meta{index2} |,| \ldots{}
+% ~~\}
% \end{syntax}
% Creates a new \meta{bitset var} or raises an error if the name is already taken.
% The declaration is global. The \meta{bitset var} is initially $0$.
@@ -112,14 +112,14 @@
% can be extended or changed with the next function.
% \end{function}
%
-% \begin{function}[added = 2021-01-26]
+% \begin{function}[added = 2023-11-15]
% {\bitset_addto_named_index:Nn}
% \begin{syntax}
% \cs{bitset_addto_named_index:Nn} \meta{bitset var}
-% \{
-% \meta{name1} |=| \meta{index1} |,|
-% \meta{name2} |=| \meta{index2} |,| \ldots{}
-% \}
+% ~~\{
+% ~~~~\meta{name1} |=| \meta{index1} |,|
+% ~~~~\meta{name2} |=| \meta{index2} |,| \ldots{}
+% ~~\}
% \end{syntax}
% This extends or changes the name--index pairs for \meta{bitset var}
% globally as described for \cs{bitset_new:Nn}.
@@ -152,7 +152,7 @@
% \bitset_set_true:Nn \l_pdfannot_F_bitset {3}
% \end{verbatim}
%
-% \begin{function}[EXP, pTF,added = 2021-01-26]
+% \begin{function}[EXP, pTF,added = 2023-11-15]
% {\bitset_if_exist:N, \bitset_if_exist:c}
% \begin{syntax}
% \cs{bitset_if_exist_p:N} \meta{bitset var}
@@ -163,14 +163,13 @@
%
% \section{Setting and unsetting bits}
%
-% \begin{function}[added = 2021-01-26]
+% \begin{function}[added = 2023-11-15]
% {
% \bitset_set_true:Nn, \bitset_set_true:cn,
% \bitset_gset_true:Nn, \bitset_gset_true:cn
% }
% \begin{syntax}
-% \cs{bitset_set_true:Nn} \meta{bitset var} \Arg{name}\\
-% \cs{bitset_gset_true:Nn} \meta{bitset var} \Arg{name}
+% \cs{bitset_set_true:Nn} \meta{bitset var} \Arg{name}
% \end{syntax}
% This sets the bit of the index position represented by \Arg{name} to $1$.
% \Arg{name} should be either one of the predeclared names
@@ -179,14 +178,13 @@
% If needed the length of the bit vector is enlarged.
% \end{function}
%
-% \begin{function}[added = 2021-01-26]
+% \begin{function}[added = 2023-11-15]
% {
% \bitset_set_false:Nn, \bitset_set_false:cn,
-% \bitset_gset_false:Nn, \bitset_set_false:cn
+% \bitset_gset_false:Nn, \bitset_gset_false:cn
% }
% \begin{syntax}
-% \cs{bitset_set_false:Nn} \meta{bitset var} \Arg{name}\\
-% \cs{bitset_gset_false:Nn} \meta{bitset var} \Arg{name}
+% \cs{bitset_set_false:Nn} \meta{bitset var} \Arg{name}
% \end{syntax}
% This unsets the bit of the index position represented by \Arg{name} (sets
% it to $0$).
@@ -199,21 +197,20 @@
% by \cs{bitset_show:N}.
% \end{function}
%
-% \begin{function}[added = 2021-01-26]
+% \begin{function}[added = 2023-11-15]
% {\bitset_clear:N,\bitset_clear:c,\bitset_gclear:N,\bitset_gclear:c}
% \begin{syntax}
-% \cs{bitset_clear:N} \meta{bitset var} \\
-% \cs{bitset_gclear:N} \meta{bitset var}
+% \cs{bitset_clear:N} \meta{bitset var}
% \end{syntax}
% This resets the bitset to the initial state. The declared names are not changed.
% \end{function}
%
% \section{Using bitsets}
%
-% \begin{function}[EXP,added = 2021-01-26]
+% \begin{function}[EXP,added = 2023-11-15]
% {\bitset_item:Nn, \bitset_item:cn}
% \begin{syntax}
-% \cs{bitset_item:Nn} \meta{bitset var} \Arg{name}
+% \cs{bitset_item:Nn} \meta{bitset var} \Arg{name}
% \end{syntax}
% \cs{bitset_item:Nn} outputs \texttt{1} if the bit with
% the index number represented by \Arg{name} is set and \texttt{0} otherwise.
@@ -221,7 +218,7 @@
% |1|, |2|, |3|, \ldots, or one of the names added manually.
% \end{function}
%
-% \begin{function}[EXP,added = 2021-01-26]
+% \begin{function}[EXP,added = 2023-11-15]
% {\bitset_to_bin:N, \bitset_to_bin:c}
% \begin{syntax}
% \cs{bitset_to_bin:N} \meta{bitset var}
@@ -230,7 +227,8 @@
% a binary (string) number in the input stream.
% If no bit has been set yet, the output is zero.
% \end{function}
-% \begin{function}[EXP,added = 2021-01-26]
+%
+% \begin{function}[EXP,added = 2023-11-15]
% {\bitset_to_arabic:N, \bitset_to_arabic:c}
% \begin{syntax}
% \cs{bitset_to_arabic:N} \meta{bitset var}
@@ -242,7 +240,7 @@
% based on \cs{fp_eval:n} otherwise.
% \end{function}
%
-% \begin{function}[added = 2021-01-26]
+% \begin{function}[added = 2023-11-15]
% {\bitset_show:N, \bitset_show:c}
% \begin{syntax}
% \cs{bitset_show:N} \meta{bitset var}
@@ -250,7 +248,7 @@
% Displays the binary and decimal value of the \meta{bitset var} on the terminal,
% \end{function}
%
-% \begin{function}[added = 2021-01-26]
+% \begin{function}[added = 2023-11-15]
% {\bitset_log:N, \bitset_log:c}
% \begin{syntax}
% \cs{bitset_log:N} \meta{bitset var}
@@ -272,15 +270,6 @@
%<@@=bitset>
% \end{macrocode}
%
-% Transitional support.
-% \begin{macrocode}
-\cs_if_exist:NT \@expl@finalise@setup@@@@
- {
- \tl_gput_right:Nn \@expl@finalise@setup@@@@
- { \disable@package@load { l3bitset } { } }
- }
-% \end{macrocode}
-%
% A bitset is a string variable.
% \begin{macro}{\bitset_new:N, \bitset_new:c}
% \begin{macro}{\bitset_new:Nn, \bitset_new:cn}
@@ -337,8 +326,7 @@
\prg_new_eq_conditional:NNn
\bitset_if_exist:N \str_if_exist:N { p , T , F , TF }
\prg_new_eq_conditional:NNn
- \bitset_if_exist:c \str_if_exist:c
- { p , T , F , TF }
+ \bitset_if_exist:c \str_if_exist:c { p , T , F , TF }
% \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_set_true:Nn, \@@_gset_true:Nn, \@@_set_false:Nn, \@@_gset_false:Nn}
@@ -418,6 +406,8 @@
% {
% \bitset_set_true:Nn, \bitset_set_true:cn,
% \bitset_gset_true:Nn, \bitset_gset_true:cn,
+% \bitset_set_false:Nn, \bitset_set_false:cn,
+% \bitset_gset_false:Nn, \bitset_gset_false:cn
% }
% \begin{macro}{\@@_set_aux:NNn}
% The user commands must first translate the argument to an index number.
@@ -599,6 +589,21 @@
%</package>
% \end{macrocode}
%
+% \subsection{Stub package}
+%
+% \begin{macrocode}
+%<*stub>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ProvidesExplPackage{l3bitset}{2023-12-11}{}
+ {L3 Experimental bitset support}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</stub>
+% \end{macrocode}
+%
% \end{implementation}
%
% \PrintIndex
diff --git a/macros/latex/contrib/l3kernel/l3bootstrap.dtx b/macros/latex/contrib/l3kernel/l3bootstrap.dtx
index 169279638c..1b9a6e18e6 100644
--- a/macros/latex/contrib/l3kernel/l3bootstrap.dtx
+++ b/macros/latex/contrib/l3kernel/l3bootstrap.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3box.dtx b/macros/latex/contrib/l3kernel/l3box.dtx
index 62c6ea7379..25de02e6fb 100644
--- a/macros/latex/contrib/l3kernel/l3box.dtx
+++ b/macros/latex/contrib/l3kernel/l3box.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3candidates.dtx b/macros/latex/contrib/l3kernel/l3candidates.dtx
index 2ebb8a9344..044f23b41d 100644
--- a/macros/latex/contrib/l3kernel/l3candidates.dtx
+++ b/macros/latex/contrib/l3kernel/l3candidates.dtx
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \textsf{l3candidates} package\\ Experimental additions to
+% The \pkg{l3candidates} package\\ Experimental additions to
% \pkg{l3kernel}^^A
% }
%
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3cctab.dtx b/macros/latex/contrib/l3kernel/l3cctab.dtx
index 3806feffa1..03e6b6f8b5 100644
--- a/macros/latex/contrib/l3kernel/l3cctab.dtx
+++ b/macros/latex/contrib/l3kernel/l3cctab.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3clist.dtx b/macros/latex/contrib/l3kernel/l3clist.dtx
index 966de0333e..4783ba761f 100644
--- a/macros/latex/contrib/l3kernel/l3clist.dtx
+++ b/macros/latex/contrib/l3kernel/l3clist.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3coffins.dtx b/macros/latex/contrib/l3kernel/l3coffins.dtx
index 576a11d47b..217fd933c2 100644
--- a/macros/latex/contrib/l3kernel/l3coffins.dtx
+++ b/macros/latex/contrib/l3kernel/l3coffins.dtx
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \textsf{l3coffins} package\\ Coffin code layer^^A
+% The \pkg{l3coffins} package\\ Coffin code layer^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3color.dtx b/macros/latex/contrib/l3kernel/l3color.dtx
index fa8508262a..2fa59821b4 100644
--- a/macros/latex/contrib/l3kernel/l3color.dtx
+++ b/macros/latex/contrib/l3kernel/l3color.dtx
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \textsf{l3color} package\\ Color support^^A
+% The \pkg{l3color} package\\ Color support^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3debug.dtx b/macros/latex/contrib/l3kernel/l3debug.dtx
index ad908c22fa..884ecdf6ac 100644
--- a/macros/latex/contrib/l3kernel/l3debug.dtx
+++ b/macros/latex/contrib/l3kernel/l3debug.dtx
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \textsf{l3debug} package\\ Debugging support^^A
+% The \pkg{l3debug} package\\ Debugging support^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
@@ -128,7 +128,7 @@
%
% Standard file identification.
% \begin{macrocode}
-\ProvidesExplFile{l3debug.def}{2023-12-08}{}{L3 Debugging support}
+\ProvidesExplFile{l3debug.def}{2023-12-11}{}{L3 Debugging support}
% \end{macrocode}
%
% \begin{variable}{\s_@@_stop}
diff --git a/macros/latex/contrib/l3kernel/l3deprecation.dtx b/macros/latex/contrib/l3kernel/l3deprecation.dtx
index 0338019900..f046e4a263 100644
--- a/macros/latex/contrib/l3kernel/l3deprecation.dtx
+++ b/macros/latex/contrib/l3kernel/l3deprecation.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
@@ -449,6 +449,10 @@
%
% \subsection{Deprecated \pkg{l3file} functions}
%
+% \begin{macrocode}
+%<@@=file>
+% \end{macrocode}
+%
% \begin{macro}[deprecated]
% {
% \iow_shipout_x:Nn, \iow_shipout_x:Nx,
@@ -501,6 +505,10 @@
%
% \subsection{Deprecated \pkg{l3pdf} functions}
%
+% \begin{macrocode}
+%<@@=pdf>
+% \end{macrocode}
+%
% \begin{variable}[deprecated]{\g_@@_object_prop}
% For tracking objects.
% \begin{macrocode}
@@ -599,6 +607,10 @@
%
% \subsection{Deprecated \pkg{l3seq} functions}
%
+% \begin{macrocode}
+%<@@=seq>
+% \end{macrocode}
+%
% \begin{macro}[deprecated]{\seq_indexed_map_inline:Nn}
% \begin{macro}[EXP, deprecated]{ \seq_indexed_map_function:NN}
% \begin{macrocode}
@@ -641,6 +653,10 @@
%
% \subsection{Deprecated \pkg{l3text} functions}
%
+% \begin{macrocode}
+%<@@=text>
+% \end{macrocode}
+%
% \begin{macro}[EXP, deprecated]{\text_titlecase:n}
% \begin{macro}[EXP, deprecated]{\text_titlecase:nn}
% \begin{macrocode}
@@ -715,6 +731,10 @@
%
% \subsection{Deprecated \pkg{l3token} functions}
%
+% \begin{macrocode}
+%<@@=char>
+% \end{macrocode}
+%
% \begin{macro}[EXP, deprecated]{\char_to_utfviii_bytes:n}
% \begin{macrocode}
\__kernel_patch_deprecation:nnNNpn { 2022-10-09 } { [ \codepoint_generate:nn ] }
diff --git a/macros/latex/contrib/l3kernel/l3doc.dtx b/macros/latex/contrib/l3kernel/l3doc.dtx
index b6f98aa366..983df56fab 100644
--- a/macros/latex/contrib/l3kernel/l3doc.dtx
+++ b/macros/latex/contrib/l3kernel/l3doc.dtx
@@ -57,11 +57,10 @@ and all files in that bundle must be distributed together.
%</driver>
%
%<*driver|class>
-\RequirePackage{expl3,calc}
+\RequirePackage{calc}
%</driver|class>
%
%<*driver>
-\ProvidesFile{l3doc.dtx}[2023/08/09 L3 Experimental documentation class]
\documentclass{l3doc}
\usepackage{framed}
\begin{document}
@@ -72,7 +71,7 @@ and all files in that bundle must be distributed together.
% This isn't included in the typeset documentation because it's a bit
% ugly:
%<*class>
-\ProvidesExplClass{l3doc}{2023-08-09}{}
+\ProvidesExplClass{l3doc}{2023-12-11}{}
{L3 Experimental documentation class}
%</class>
% \fi
@@ -85,7 +84,7 @@ and all files in that bundle must be distributed together.
% require you to do updates, if the class changes.}}
%
% \author{\Team}
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
% \maketitle
% \tableofcontents
%
@@ -221,6 +220,56 @@ and all files in that bundle must be distributed together.
% Latin Modern fonts. To prevent this, use the class option
% |cm-default|.
%
+% \subsection{Class options}
+%
+% The class recognises a number of options, some of which are generally
+% useful and some of which are aimed squarely at use by the kernel team only.
+%
+% \DescribeOption{full}
+% \DescribeOption{onlydoc}
+% When the \texttt{full} option is set (the standard setting), both the
+% documentation and implementation parts of the source are typeset. If on the
+% other hand the \texttt{onlydoc} option is set, only the documentation part
+% is typeset.
+%
+% \DescribeOption{lm-default}
+% Selects whether the standard font set up is Latin Modern in the \texttt{T1}
+% encoding (the standard setting) or leaves the font setup unchanged.
+%
+% \DescribeOption{kernel}
+% Determines whether \pkg{l3doc} treats |\__kernel_| commands and
+% |\(c|g|l)__kernel_| variables as allowable in code. In general,
+% \emph{no} internal material from outside the current module is allowed.
+% However, for bootstrapping the \pkg{expl3} kernel, a small number of
+% cross-module functions are needed. To suppress the error message that
+% would otherwise arise, the class option \texttt{kernel} may be given.
+%
+% \DescribeOption{check}
+% When the \texttt{check} option is given, the class will record all commands
+% defined and documented in a \texttt{\meta{name}.cmds} file. This will show
+% which are both documented and defined, which are only documented and which
+% are only defined. (Here, \enquote{defined} means listed using a
+% \texttt{macro} or \texttt{variable} environment in the implementation part of
+% the source file).
+%
+% \DescribeOption{checktest}
+% When \texttt{checktest} is given as an option, the class will check that each
+% function entry in the implementation part of the source is marked using
+% \cs{UnitTest}.
+%
+% \DescribeOption{show-notes}
+% \DescribeOption{hide-notes}
+% These complementary options determine if the information given using the
+% \cs{NB} and \cs{NOTE} commands is printed.
+%
+% \DescribeOption{cs-break}
+% \DescribeOption{cs-break-nohyphen}
+% The commands \cs{cmd} and \cs{cs} allow hyphenation of control sequences
+% after (most) underscores. By default, a hyphen is used to mark the
+% hyphenation, but this can be changed with the \texttt{cs-break-nohyphen}
+% class option. To disable hyphenation of control sequences entirely, use
+% \texttt{cs-break = false}.
+%
% \subsection{Partitioning documentation and implementation}
%
% \pkg{doc} uses the \cs{OnlyDocumentation}/\cs{AlsoImplementation}
@@ -299,7 +348,8 @@ and all files in that bundle must be distributed together.
% These commands allow hyphenation of control sequences after (most) underscores.
% By default, a hyphen is used to mark the hyphenation, but this can be changed with
% the \texttt{cs-break-nohyphen} class option.
-% To disable hyphenation of control sequencies entirely, use \texttt{cs-break-off}.
+% To disable hyphenation of control sequences entirely, use
+% \texttt{cs-break = false}.
% \end{function}
%
%
@@ -1385,67 +1435,36 @@ and all files in that bundle must be distributed together.
% \subsection{Options and configuration}
%
% \begin{macrocode}
-\DeclareOption { a5paper } { \@latexerr { Option~not~supported } { } }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\DeclareOption { full }
+\DeclareKeys [ l3doc / options ]
{
- \bool_gset_true:N \g_@@_typeset_documentation_bool
- \bool_gset_true:N \g_@@_typeset_implementation_bool
- }
-\DeclareOption { onlydoc }
- {
- \bool_gset_true:N \g_@@_typeset_documentation_bool
- \bool_gset_false:N \g_@@_typeset_implementation_bool
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\DeclareOption { check }
- { \bool_gset_true:N \g_@@_checkfunc_bool }
-\DeclareOption { nocheck }
- { \bool_gset_false:N \g_@@_checkfunc_bool }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\DeclareOption { checktest }
- { \bool_gset_true:N \g_@@_checktest_bool }
-\DeclareOption { nochecktest }
- { \bool_gset_false:N \g_@@_checktest_bool }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\DeclareOption { kernel }
- { \bool_gset_true:N \g_@@_kernel_bool }
-\DeclareOption { stdmodule }
- { \bool_gset_false:N \g_@@_kernel_bool }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\DeclareOption { cm-default }
- { \bool_gset_false:N \g_@@_lmodern_bool }
-\DeclareOption { lm-default }
- { \bool_gset_true:N \g_@@_lmodern_bool }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\DeclareOption { cs-break-off }
- { \bool_gset_false:N \g_@@_cs_break_bool }
-\DeclareOption { cs-break-nohyphen }
- { \PassOptionsToPackage{nohyphen}{underscore} }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\DeclareOption { show-notes }
- { \bool_gset_true:N \g_@@_show_notes_bool }
-\DeclareOption { hide-notes }
- { \bool_gset_false:N \g_@@_show_notes_bool }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\DeclareOption* { \PassOptionsToClass { \CurrentOption } { article } }
-\ExecuteOptions { full, kernel, nocheck, nochecktest, lm-default }
+ a5paper .code:n = \@latexerr { Option~not~supported } { } ,
+ full .code:n =
+ {
+ \bool_gset_true:N \g_@@_typeset_documentation_bool
+ \bool_gset_true:N \g_@@_typeset_implementation_bool
+ } ,
+ onlydoc .code:n =
+ {
+ \bool_gset_true:N \g_@@_typeset_documentation_bool
+ \bool_gset_false:N \g_@@_typeset_implementation_bool
+ } ,
+ check .bool_gset:N = \g_@@_checkfunc_bool ,
+ checktest .bool_gset:N = \g_@@_checktest_bool ,
+ kernel .bool_gset:N = \g_@@_kernel_bool ,
+ stdmodule .bool_gset_inverse:N = \g_@@_kernel_bool ,
+ lm-default .bool_gset:N = \g_@@_lmodern_bool ,
+ cs-break .bool_gset_inverse:N = \g_@@_cs_break_bool ,
+ cs-break-nohyphen .code:n = \PassOptionsToPackage{nohyphen}{underscore} ,
+ show-notes .bool_gset:N = \g_@@_show_notes_bool,
+ hide-notes .bool_gset_inverse:N = \g_@@_show_notes_bool
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareUnknownKeyHandler [ l3doc / options ]
+ { \PassOptionsToClass { \CurrentOption } { article } }
+\SetKeys [ l3doc / options ]
+ { full , kernel , check = false , checktest = false , lm-default }
\PassOptionsToClass { a4paper } { article }
% \end{macrocode}
%
@@ -1467,7 +1486,7 @@ and all files in that bundle must be distributed together.
% \end{macrocode}
%
% \begin{macrocode}
-\ProcessOptions
+\ProcessKeyOptions [ l3doc / options ]
% \end{macrocode}
%
%
diff --git a/macros/latex/contrib/l3kernel/l3doc.pdf b/macros/latex/contrib/l3kernel/l3doc.pdf
index f292e02ce2..2ca0d9cbc4 100644
--- a/macros/latex/contrib/l3kernel/l3doc.pdf
+++ b/macros/latex/contrib/l3kernel/l3doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3docstrip.dtx b/macros/latex/contrib/l3kernel/l3docstrip.dtx
index ebf9af795f..0d21cb4833 100644
--- a/macros/latex/contrib/l3kernel/l3docstrip.dtx
+++ b/macros/latex/contrib/l3kernel/l3docstrip.dtx
@@ -63,7 +63,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3docstrip.pdf b/macros/latex/contrib/l3kernel/l3docstrip.pdf
index f5a61766e1..887d4d5247 100644
--- a/macros/latex/contrib/l3kernel/l3docstrip.pdf
+++ b/macros/latex/contrib/l3kernel/l3docstrip.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3expan.dtx b/macros/latex/contrib/l3kernel/l3expan.dtx
index 36fb87f2ac..e4b8a9967d 100644
--- a/macros/latex/contrib/l3kernel/l3expan.dtx
+++ b/macros/latex/contrib/l3kernel/l3expan.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3file.dtx b/macros/latex/contrib/l3kernel/l3file.dtx
index 8545a83947..d33fe899d8 100644
--- a/macros/latex/contrib/l3kernel/l3file.dtx
+++ b/macros/latex/contrib/l3kernel/l3file.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
@@ -673,7 +673,9 @@
% \end{texnote}
% \end{function}
%
-% \section{File operation functions}
+% \section{File opertions}
+%
+% \subsection{Basic file operations}
%
% \begin{variable}[added = 2017-06-21]
% {
@@ -722,94 +724,13 @@
% \cs{l_file_search_path_seq}.
% \end{function}
%
-% \begin{function}[noTF, added = 2019-01-16, updated = 2019-02-16]
-% {\file_get:nnN, \file_get:VnN}
-% \begin{syntax}
-% \cs{file_get:nnN} \Arg{file name} \Arg{setup} \meta{tl}
-% \cs{file_get:nnNTF} \Arg{file name} \Arg{setup} \meta{tl} \Arg{true code} \Arg{false code}
-% \end{syntax}
-% Defines \meta{tl} to the contents of \meta{file name}.
-% Category codes may need to be set appropriately via the \meta{setup}
-% argument.
-% The non-branching version sets the \meta{tl} to \cs{q_no_value} if the file is
-% not found. The branching version runs the \meta{true code} after the
-% assignment to \meta{tl} if the file is found, and \meta{false code}
-% otherwise.
-% \end{function}
-%
-% \begin{function}[noTF, updated = 2019-02-16]
-% {\file_get_full_name:nN, \file_get_full_name:VN}
-% \begin{syntax}
-% \cs{file_get_full_name:nN} \Arg{file name} \meta{tl}
-% \cs{file_get_full_name:nNTF} \Arg{file name} \meta{tl} \Arg{true code} \Arg{false code}
-% \end{syntax}
-% Searches for \meta{file name} in the path as detailed for
-% \cs{file_if_exist:nTF}, and if found sets the \meta{tl var} the
-% fully-qualified name of the file, \emph{i.e.}~the path and file name.
-% This includes an extension |.tex| when the given \meta{file name}
-% has no extension but the file found has that extension.
-% In the non-branching version, the \meta{tl var} will be set to
-% \cs{q_no_value} in the case that the file does not exist.
-% \end{function}
-%
-% \begin{function}[added = 2019-09-03, rEXP]{\file_full_name:n, \file_full_name:V}
-% \begin{syntax}
-% \cs{file_full_name:n} \Arg{file name}
-% \end{syntax}
-% Searches for \meta{file name} in the path as detailed for
-% \cs{file_if_exist:nTF}, and if found leaves the
-% fully-qualified name of the file, \emph{i.e.}~the path and file name,
-% in the input stream.
-% This includes an extension |.tex| when the given \meta{file name}
-% has no extension but the file found has that extension.
-% If the file is not found on the path, the expansion is empty.
-% \end{function}
+% \subsection{Information about files and file contents}
%
-% \begin{function}[added = 2017-06-23, updated = 2020-06-24]
-% {\file_parse_full_name:nNNN, \file_parse_full_name:VNNN}
-% \begin{syntax}
-% \cs{file_parse_full_name:nNNN} \Arg{full name} \meta{dir} \meta{name} \meta{ext}
-% \end{syntax}
-% Parses the \meta{full name} and splits it into three parts, each of
-% which is returned by setting the appropriate local string variable:
-% \begin{itemize}
-% \item The \meta{dir}: everything up to the last |/| (path separator)
-% in the \meta{file path}. As with system \texttt{PATH} variables
-% and related functions, the \meta{dir} does \emph{not} include the
-% trailing |/| unless it points to the root directory. If there is no path (only
-% a file name), \meta{dir} is empty.
-% \item The \meta{name}: everything after the last |/| up to the last |.|,
-% where both of those characters are optional. The \meta{name} may
-% contain multiple |.| characters. It is empty if \meta{full name}
-% consists only of a directory name.
-% \item The \meta{ext}: everything after the last |.| (including the dot).
-% The \meta{ext} is empty if there is no |.| after the last |/|.
-% \end{itemize}
-%
-% Before parsing, the \meta{full name} is expanded until only non-expandable
-% tokens remain, except that active characters are also not expanded.
-% Quotes (|"|) are invalid in file names and are discarded from the input.
-% \end{function}
-%
-% \begin{function}[EXP, added = 2020-06-24]
-% {\file_parse_full_name:n, \file_parse_full_name:V}
-% \begin{syntax}
-% \cs{file_parse_full_name:n} \Arg{full name}
-% \end{syntax}
-% Parses the \meta{full name} as described for \cs{file_parse_full_name:nNNN},
-% and leaves \meta{dir}, \meta{name}, and \meta{ext} in the input stream,
-% each inside a pair of braces.
-% \end{function}
-%
-% \begin{function}[EXP, added = 2020-06-24]
-% {\file_parse_full_name_apply:nN, \file_parse_full_name_apply:VN}
-% \begin{syntax}
-% \cs{file_parse_full_name_apply:nN} \Arg{full name} \meta{function}
-% \end{syntax}
-% Parses the \meta{full name} as described for \cs{file_parse_full_name:nNNN},
-% and passes \meta{dir}, \meta{name}, and \meta{ext} as arguments to \meta{function},
-% as an \texttt{n}-type argument each, in this order.
-% \end{function}
+% Functions in this section return information about files as \pkg{expl3}
+% \texttt{str} data, \emph{except} that the non-expandable functions set their
+% return \emph{token list} to \cs{q_no_value} if the file requested is not
+% found. As such, comparison of file names, hashes, sizes, etc., should use
+% \cs{str_if_eq:nnTF} rather than \cs{tl_if_eq:nnTF} and so on.
%
% \begin{function}[rEXP, added = 2019-11-19]
% {
@@ -947,6 +868,97 @@
% This is not available in older versions of \XeTeX{}.
% \end{function}
%
+% \begin{function}[noTF, updated = 2019-02-16]
+% {\file_get_full_name:nN, \file_get_full_name:VN}
+% \begin{syntax}
+% \cs{file_get_full_name:nN} \Arg{file name} \meta{tl}
+% \cs{file_get_full_name:nNTF} \Arg{file name} \meta{tl} \Arg{true code} \Arg{false code}
+% \end{syntax}
+% Searches for \meta{file name} in the path as detailed for
+% \cs{file_if_exist:nTF}, and if found sets the \meta{tl var} the
+% fully-qualified name of the file, \emph{i.e.}~the path and file name.
+% This includes an extension |.tex| when the given \meta{file name}
+% has no extension but the file found has that extension.
+% In the non-branching version, the \meta{tl var} will be set to
+% \cs{q_no_value} in the case that the file does not exist.
+% \end{function}
+%
+% \begin{function}[added = 2019-09-03, rEXP]{\file_full_name:n, \file_full_name:V}
+% \begin{syntax}
+% \cs{file_full_name:n} \Arg{file name}
+% \end{syntax}
+% Searches for \meta{file name} in the path as detailed for
+% \cs{file_if_exist:nTF}, and if found leaves the
+% fully-qualified name of the file, \emph{i.e.}~the path and file name,
+% in the input stream.
+% This includes an extension |.tex| when the given \meta{file name}
+% has no extension but the file found has that extension.
+% If the file is not found on the path, the expansion is empty.
+% \end{function}
+%
+% \begin{function}[added = 2017-06-23, updated = 2020-06-24]
+% {\file_parse_full_name:nNNN, \file_parse_full_name:VNNN}
+% \begin{syntax}
+% \cs{file_parse_full_name:nNNN} \Arg{full name} \meta{dir} \meta{name} \meta{ext}
+% \end{syntax}
+% Parses the \meta{full name} and splits it into three parts, each of
+% which is returned by setting the appropriate local string variable:
+% \begin{itemize}
+% \item The \meta{dir}: everything up to the last |/| (path separator)
+% in the \meta{file path}. As with system \texttt{PATH} variables
+% and related functions, the \meta{dir} does \emph{not} include the
+% trailing |/| unless it points to the root directory. If there is no path (only
+% a file name), \meta{dir} is empty.
+% \item The \meta{name}: everything after the last |/| up to the last |.|,
+% where both of those characters are optional. The \meta{name} may
+% contain multiple |.| characters. It is empty if \meta{full name}
+% consists only of a directory name.
+% \item The \meta{ext}: everything after the last |.| (including the dot).
+% The \meta{ext} is empty if there is no |.| after the last |/|.
+% \end{itemize}
+%
+% Before parsing, the \meta{full name} is expanded until only non-expandable
+% tokens remain, except that active characters are also not expanded.
+% Quotes (|"|) are invalid in file names and are discarded from the input.
+% \end{function}
+%
+% \begin{function}[EXP, added = 2020-06-24]
+% {\file_parse_full_name:n, \file_parse_full_name:V}
+% \begin{syntax}
+% \cs{file_parse_full_name:n} \Arg{full name}
+% \end{syntax}
+% Parses the \meta{full name} as described for \cs{file_parse_full_name:nNNN},
+% and leaves \meta{dir}, \meta{name}, and \meta{ext} in the input stream,
+% each inside a pair of braces.
+% \end{function}
+%
+% \begin{function}[EXP, added = 2020-06-24]
+% {\file_parse_full_name_apply:nN, \file_parse_full_name_apply:VN}
+% \begin{syntax}
+% \cs{file_parse_full_name_apply:nN} \Arg{full name} \meta{function}
+% \end{syntax}
+% Parses the \meta{full name} as described for \cs{file_parse_full_name:nNNN},
+% and passes \meta{dir}, \meta{name}, and \meta{ext} as arguments to \meta{function},
+% as an \texttt{n}-type argument each, in this order.
+% \end{function}
+%
+% \subsection{Accessing file contents}
+%
+% \begin{function}[noTF, added = 2019-01-16, updated = 2019-02-16]
+% {\file_get:nnN, \file_get:VnN}
+% \begin{syntax}
+% \cs{file_get:nnN} \Arg{file name} \Arg{setup} \meta{tl}
+% \cs{file_get:nnNTF} \Arg{file name} \Arg{setup} \meta{tl} \Arg{true code} \Arg{false code}
+% \end{syntax}
+% Defines \meta{tl} to the contents of \meta{file name}.
+% Category codes may need to be set appropriately via the \meta{setup}
+% argument.
+% The non-branching version sets the \meta{tl} to \cs{q_no_value} if the file is
+% not found. The branching version runs the \meta{true code} after the
+% assignment to \meta{tl} if the file is found, and \meta{false code}
+% otherwise. The file content will be tokenized using the current
+% category code régime,
+% \end{function}
%
% \begin{function}[updated = 2017-06-26]{\file_input:n, \file_input:V}
% \begin{syntax}
diff --git a/macros/latex/contrib/l3kernel/l3flag.dtx b/macros/latex/contrib/l3kernel/l3flag.dtx
index d94897f87d..d0203d5209 100644
--- a/macros/latex/contrib/l3kernel/l3flag.dtx
+++ b/macros/latex/contrib/l3kernel/l3flag.dtx
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \textsf{l3flag} package: Expandable flags^^A
+% The \pkg{l3flag} package\\ Expandable flags^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-assign.dtx b/macros/latex/contrib/l3kernel/l3fp-assign.dtx
index 42f915af33..f5d3e6bb38 100644
--- a/macros/latex/contrib/l3kernel/l3fp-assign.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-assign.dtx
@@ -30,8 +30,10 @@
%</driver>
% \fi
%
-% \title{The \textsf{l3fp-assign} package\\
-% Floating point expressions}
+% \title{^^A
+% The \pkg{l3fp-assign} package\\
+% Floating point expressions^^A
+% }
% \author{^^A
% The \LaTeX{} Project\thanks
% {^^A
@@ -40,7 +42,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
% \maketitle
%
% \begin{documentation}
diff --git a/macros/latex/contrib/l3kernel/l3fp-aux.dtx b/macros/latex/contrib/l3kernel/l3fp-aux.dtx
index 53ce603de0..20c68b2964 100644
--- a/macros/latex/contrib/l3kernel/l3fp-aux.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-aux.dtx
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \textsf{l3fp-aux} package\\ Support for floating points^^A
+% The \pkg{l3fp-aux} package\\ Support for floating points^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-basics.dtx b/macros/latex/contrib/l3kernel/l3fp-basics.dtx
index e0e8965aea..7d2c3527d2 100644
--- a/macros/latex/contrib/l3kernel/l3fp-basics.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-basics.dtx
@@ -30,8 +30,10 @@
%</driver>
% \fi
%
-% \title{The \textsf{l3fp-basics} package\\
-% Floating point arithmetic}
+% \title{^^A
+% The \pkg{l3fp-basics} package\\
+% Floating point arithmetic^^A
+% }
% \author{^^A
% The \LaTeX{} Project\thanks
% {^^A
@@ -40,7 +42,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-convert.dtx b/macros/latex/contrib/l3kernel/l3fp-convert.dtx
index 0a8252da36..4a1c9f2211 100644
--- a/macros/latex/contrib/l3kernel/l3fp-convert.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-convert.dtx
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \textsf{l3fp-convert} package\\ Floating point conversion^^A
+% The \pkg{l3fp-convert} package\\ Floating point conversion^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-expo.dtx b/macros/latex/contrib/l3kernel/l3fp-expo.dtx
index 7f29ebf992..bf385275ef 100644
--- a/macros/latex/contrib/l3kernel/l3fp-expo.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-expo.dtx
@@ -30,8 +30,10 @@
%</driver>
% \fi
%
-% \title{The \textsf{l3fp-expo} package\\
-% Floating point exponential-related functions}
+% \title{^^A
+% The \pkg{l3fp-expo} package\\
+% Floating point exponential-related functions^^A
+% }
% \author{^^A
% The \LaTeX{} Project\thanks
% {^^A
@@ -40,7 +42,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-extended.dtx b/macros/latex/contrib/l3kernel/l3fp-extended.dtx
index 7103a8d4ea..9350c1c41b 100644
--- a/macros/latex/contrib/l3kernel/l3fp-extended.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-extended.dtx
@@ -30,8 +30,10 @@
%</driver>
% \fi
%
-% \title{The \textsf{l3fp-extended} package\\
-% Manipulating numbers with extended precision, for internal use}
+% \title{^^A
+% The \pkg{l3fp-extended} package\\
+% Manipulating numbers with extended precision, for internal use^^A
+% }
% \author{^^A
% The \LaTeX{} Project\thanks
% {^^A
@@ -40,7 +42,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-functions.dtx b/macros/latex/contrib/l3kernel/l3fp-functions.dtx
index 5b5a29395f..3ed473a097 100644
--- a/macros/latex/contrib/l3kernel/l3fp-functions.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-functions.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-logic.dtx b/macros/latex/contrib/l3kernel/l3fp-logic.dtx
index 692b2839a3..004290b05d 100644
--- a/macros/latex/contrib/l3kernel/l3fp-logic.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-logic.dtx
@@ -30,8 +30,10 @@
%</driver>
% \fi
%
-% \title{The \textsf{l3fp-logic} package\\
-% Floating point conditionals}
+% \title{^^A
+% The \pkg{l3fp-logic} package\\
+% Floating point conditionals^^A
+% }
% \author{^^A
% The \LaTeX{} Project\thanks
% {^^A
@@ -40,7 +42,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-parse.dtx b/macros/latex/contrib/l3kernel/l3fp-parse.dtx
index 025bd5b7e3..0bc6861903 100644
--- a/macros/latex/contrib/l3kernel/l3fp-parse.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-parse.dtx
@@ -30,8 +30,10 @@
%</driver>
% \fi
%
-% \title{The \textsf{l3fp-parse} package\\
-% Floating point expression parsing}
+% \title{^^A
+% The \pkg{l3fp-parse} package\\
+% Floating point expression parsing^^A
+% }
% \author{^^A
% The \LaTeX{} Project\thanks
% {^^A
@@ -40,7 +42,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-random.dtx b/macros/latex/contrib/l3kernel/l3fp-random.dtx
index 09097cc68e..28a9d11dde 100644
--- a/macros/latex/contrib/l3kernel/l3fp-random.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-random.dtx
@@ -30,8 +30,10 @@
%</driver>
% \fi
%
-% \title{The \textsf{l3fp-random} package\\
-% Floating point random numbers}
+% \title{^^A
+% The \pkg{l3fp-random} package\\
+% Floating point random numbers
+% }
% \author{^^A
% The \LaTeX{} Project\thanks
% {^^A
@@ -40,7 +42,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-round.dtx b/macros/latex/contrib/l3kernel/l3fp-round.dtx
index 961c60363f..4fbc392922 100644
--- a/macros/latex/contrib/l3kernel/l3fp-round.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-round.dtx
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \textsf{l3fp-round} package\\ Rounding floating points^^A
+% The \pkg{l3fp-round} package\\ Rounding floating points^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-symbolic.dtx b/macros/latex/contrib/l3kernel/l3fp-symbolic.dtx
index 7b25907b77..596eb65a22 100644
--- a/macros/latex/contrib/l3kernel/l3fp-symbolic.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-symbolic.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-traps.dtx b/macros/latex/contrib/l3kernel/l3fp-traps.dtx
index 0371eddb5d..e2ce4ea35a 100644
--- a/macros/latex/contrib/l3kernel/l3fp-traps.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-traps.dtx
@@ -30,8 +30,10 @@
%</driver>
% \fi
%
-% \title{The \textsf{l3fp-traps} package\\
-% Trapping floating-point exceptions}
+% \title{^^A
+% The \pkg{l3fp-traps} package\\
+% Trapping floating-point exceptions^^A
+% }
% \author{^^A
% The \LaTeX{} Project\thanks
% {^^A
@@ -40,7 +42,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
% \maketitle
%
% \begin{documentation}
diff --git a/macros/latex/contrib/l3kernel/l3fp-trig.dtx b/macros/latex/contrib/l3kernel/l3fp-trig.dtx
index 2c62fd572b..9c329e4b95 100644
--- a/macros/latex/contrib/l3kernel/l3fp-trig.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-trig.dtx
@@ -30,8 +30,10 @@
%</driver>
% \fi
%
-% \title{The \textsf{l3fp-trig} package\\
-% Floating point trigonometric functions}
+% \title{^^A
+% The \pkg{l3fp-trig} package\\
+% Floating point trigonometric functions^^A
+% }
% \author{^^A
% The \LaTeX{} Project\thanks
% {^^A
@@ -40,7 +42,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-types.dtx b/macros/latex/contrib/l3kernel/l3fp-types.dtx
index 100e3f00f4..46fe0c19c3 100644
--- a/macros/latex/contrib/l3kernel/l3fp-types.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-types.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp.dtx b/macros/latex/contrib/l3kernel/l3fp.dtx
index 526a2a81bc..3da05f4d19 100644
--- a/macros/latex/contrib/l3kernel/l3fp.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp.dtx
@@ -37,7 +37,7 @@
%
%
% \title{^^A
-% The \textsf{l3fp} package: Floating points^^A
+% The \pkg{l3fp} package\\ Floating points^^A
% }
%
% \author{^^A
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fparray.dtx b/macros/latex/contrib/l3kernel/l3fparray.dtx
index 9e9acd795d..61c5fce745 100644
--- a/macros/latex/contrib/l3kernel/l3fparray.dtx
+++ b/macros/latex/contrib/l3kernel/l3fparray.dtx
@@ -32,7 +32,7 @@
%
%
% \title{^^A
-% The \textsf{l3fparray} package: Fast global floating point arrays^^A
+% The \pkg{l3fparray} package\\ Fast global floating point arrays^^A
% }
%
% \author{^^A
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3int.dtx b/macros/latex/contrib/l3kernel/l3int.dtx
index f50b3e0add..b3282ff9da 100644
--- a/macros/latex/contrib/l3kernel/l3int.dtx
+++ b/macros/latex/contrib/l3kernel/l3int.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3intarray.dtx b/macros/latex/contrib/l3kernel/l3intarray.dtx
index b566791654..130da0503e 100644
--- a/macros/latex/contrib/l3kernel/l3intarray.dtx
+++ b/macros/latex/contrib/l3kernel/l3intarray.dtx
@@ -32,7 +32,7 @@
%
%
% \title{^^A
-% The \textsf{l3intarray} package: Fast global integer arrays^^A
+% The \pkg{l3intarray} package\\ Fast global integer arrays^^A
% }
%
% \author{^^A
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
index 72ea6c7480..b9602fd17c 100644
--- a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
+++ b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3kernel-functions} package: Kernel-reserved functions^^A
+% The \pkg{l3kernel-functions} package\\ Kernel-reserved functions^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3keys.dtx b/macros/latex/contrib/l3kernel/l3keys.dtx
index 75c4c34f22..c300e3e5ee 100644
--- a/macros/latex/contrib/l3kernel/l3keys.dtx
+++ b/macros/latex/contrib/l3kernel/l3keys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3legacy.dtx b/macros/latex/contrib/l3kernel/l3legacy.dtx
index 915ae07bb8..2311d28bba 100644
--- a/macros/latex/contrib/l3kernel/l3legacy.dtx
+++ b/macros/latex/contrib/l3kernel/l3legacy.dtx
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \textsf{l3legacy} package\\ Interfaces to legacy concepts^^A
+% The \pkg{l3legacy} package\\ Interfaces to legacy concepts^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3luatex.dtx b/macros/latex/contrib/l3kernel/l3luatex.dtx
index d94a2c6ad6..d3be98cb59 100644
--- a/macros/latex/contrib/l3kernel/l3luatex.dtx
+++ b/macros/latex/contrib/l3kernel/l3luatex.dtx
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3luatex} package: \LuaTeX-specific functions^^A
+% The \pkg{l3luatex} package\\ \LuaTeX-specific functions^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3msg.dtx b/macros/latex/contrib/l3kernel/l3msg.dtx
index b12cdab55c..f9c4dd9945 100644
--- a/macros/latex/contrib/l3kernel/l3msg.dtx
+++ b/macros/latex/contrib/l3kernel/l3msg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3names.dtx b/macros/latex/contrib/l3kernel/l3names.dtx
index 1441e889c3..c1478161d6 100644
--- a/macros/latex/contrib/l3kernel/l3names.dtx
+++ b/macros/latex/contrib/l3kernel/l3names.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3news.pdf b/macros/latex/contrib/l3kernel/l3news.pdf
index 31847b224c..2c87f4f00c 100644
--- a/macros/latex/contrib/l3kernel/l3news.pdf
+++ b/macros/latex/contrib/l3kernel/l3news.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news01.pdf b/macros/latex/contrib/l3kernel/l3news01.pdf
index 6d13ba9cac..2caf5448b9 100644
--- a/macros/latex/contrib/l3kernel/l3news01.pdf
+++ b/macros/latex/contrib/l3kernel/l3news01.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news02.pdf b/macros/latex/contrib/l3kernel/l3news02.pdf
index 4580c998e7..7bf6c3b5b7 100644
--- a/macros/latex/contrib/l3kernel/l3news02.pdf
+++ b/macros/latex/contrib/l3kernel/l3news02.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news03.pdf b/macros/latex/contrib/l3kernel/l3news03.pdf
index b839d9cce4..7e790309ac 100644
--- a/macros/latex/contrib/l3kernel/l3news03.pdf
+++ b/macros/latex/contrib/l3kernel/l3news03.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news04.pdf b/macros/latex/contrib/l3kernel/l3news04.pdf
index c0c15503c2..c0e7744a12 100644
--- a/macros/latex/contrib/l3kernel/l3news04.pdf
+++ b/macros/latex/contrib/l3kernel/l3news04.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news05.pdf b/macros/latex/contrib/l3kernel/l3news05.pdf
index 82d7bb879a..09a8a17473 100644
--- a/macros/latex/contrib/l3kernel/l3news05.pdf
+++ b/macros/latex/contrib/l3kernel/l3news05.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news06.pdf b/macros/latex/contrib/l3kernel/l3news06.pdf
index e701e98aeb..e17d4ba600 100644
--- a/macros/latex/contrib/l3kernel/l3news06.pdf
+++ b/macros/latex/contrib/l3kernel/l3news06.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news07.pdf b/macros/latex/contrib/l3kernel/l3news07.pdf
index 399c31714d..ee3855783f 100644
--- a/macros/latex/contrib/l3kernel/l3news07.pdf
+++ b/macros/latex/contrib/l3kernel/l3news07.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news08.pdf b/macros/latex/contrib/l3kernel/l3news08.pdf
index b031c0de15..8673d4a078 100644
--- a/macros/latex/contrib/l3kernel/l3news08.pdf
+++ b/macros/latex/contrib/l3kernel/l3news08.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news09.pdf b/macros/latex/contrib/l3kernel/l3news09.pdf
index a52cdd0900..00fff384ee 100644
--- a/macros/latex/contrib/l3kernel/l3news09.pdf
+++ b/macros/latex/contrib/l3kernel/l3news09.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news10.pdf b/macros/latex/contrib/l3kernel/l3news10.pdf
index cd866e817e..dcac23758d 100644
--- a/macros/latex/contrib/l3kernel/l3news10.pdf
+++ b/macros/latex/contrib/l3kernel/l3news10.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news11.pdf b/macros/latex/contrib/l3kernel/l3news11.pdf
index 63f715833f..1a3a1038f6 100644
--- a/macros/latex/contrib/l3kernel/l3news11.pdf
+++ b/macros/latex/contrib/l3kernel/l3news11.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news12.pdf b/macros/latex/contrib/l3kernel/l3news12.pdf
index 7e25add880..5ff84d3990 100644
--- a/macros/latex/contrib/l3kernel/l3news12.pdf
+++ b/macros/latex/contrib/l3kernel/l3news12.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3pdf.dtx b/macros/latex/contrib/l3kernel/l3pdf.dtx
index ae07ef82a6..09013a7a7f 100644
--- a/macros/latex/contrib/l3kernel/l3pdf.dtx
+++ b/macros/latex/contrib/l3kernel/l3pdf.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3prefixes.pdf b/macros/latex/contrib/l3kernel/l3prefixes.pdf
index 896c9f448e..f174ef9e0f 100644
--- a/macros/latex/contrib/l3kernel/l3prefixes.pdf
+++ b/macros/latex/contrib/l3kernel/l3prefixes.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3prg.dtx b/macros/latex/contrib/l3kernel/l3prg.dtx
index 201d7bde90..668bf41d08 100644
--- a/macros/latex/contrib/l3kernel/l3prg.dtx
+++ b/macros/latex/contrib/l3kernel/l3prg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3prop.dtx b/macros/latex/contrib/l3kernel/l3prop.dtx
index bf1a1a0c33..91e8c07fbf 100644
--- a/macros/latex/contrib/l3kernel/l3prop.dtx
+++ b/macros/latex/contrib/l3kernel/l3prop.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3quark.dtx b/macros/latex/contrib/l3kernel/l3quark.dtx
index 21d6dbc9d7..10fa3584aa 100644
--- a/macros/latex/contrib/l3kernel/l3quark.dtx
+++ b/macros/latex/contrib/l3kernel/l3quark.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3regex.dtx b/macros/latex/contrib/l3kernel/l3regex.dtx
index f9e2663cc3..900a1c2c82 100644
--- a/macros/latex/contrib/l3kernel/l3regex.dtx
+++ b/macros/latex/contrib/l3kernel/l3regex.dtx
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \textsf{l3regex} package: Regular expressions in \TeX{}^^A
+% The \pkg{l3regex} package\\ Regular expressions in \TeX{}^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3seq.dtx b/macros/latex/contrib/l3kernel/l3seq.dtx
index 5021a70077..c32985545a 100644
--- a/macros/latex/contrib/l3kernel/l3seq.dtx
+++ b/macros/latex/contrib/l3kernel/l3seq.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
@@ -1120,7 +1120,7 @@
% \end{macrocode}
% \end{variable}
%
-% \begin{macro}{\@@_item:n}
+% \begin{macro}[EXP]{\@@_item:n}
% The delimiter is always defined, but when used incorrectly simply
% removes its argument and hits an undefined control sequence to
% raise an error.
diff --git a/macros/latex/contrib/l3kernel/l3skip.dtx b/macros/latex/contrib/l3kernel/l3skip.dtx
index 750c0995f3..cac06a49ea 100644
--- a/macros/latex/contrib/l3kernel/l3skip.dtx
+++ b/macros/latex/contrib/l3kernel/l3skip.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3sort.dtx b/macros/latex/contrib/l3kernel/l3sort.dtx
index c152564304..ab7531a313 100644
--- a/macros/latex/contrib/l3kernel/l3sort.dtx
+++ b/macros/latex/contrib/l3kernel/l3sort.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3str-convert.dtx b/macros/latex/contrib/l3kernel/l3str-convert.dtx
index 0da2e88de8..ff4cacf868 100644
--- a/macros/latex/contrib/l3kernel/l3str-convert.dtx
+++ b/macros/latex/contrib/l3kernel/l3str-convert.dtx
@@ -32,7 +32,7 @@
%
%
% \title{^^A
-% The \textsf{l3str-convert} package: String encoding conversions^^A
+% The \pkg{l3str-convert} package\\ String encoding conversions^^A
% }
%
% \author{^^A
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3str.dtx b/macros/latex/contrib/l3kernel/l3str.dtx
index fc8594bf0b..fa26d53426 100644
--- a/macros/latex/contrib/l3kernel/l3str.dtx
+++ b/macros/latex/contrib/l3kernel/l3str.dtx
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3str} package: Strings^^A
+% The \pkg{l3str} package\\ Strings^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
@@ -129,9 +129,9 @@
%
% \begin{function}[added = 2015-09-18]
% {
-% \str_clear_new:N, \str_clear_new:c,
-% \str_gclear_new:N, \str_gclear_new:c
-% }
+% \str_clear_new:N, \str_clear_new:c,
+% \str_gclear_new:N, \str_gclear_new:c
+% }
% \begin{syntax}
% \cs{str_clear_new:N} \meta{str~var}
% \end{syntax}
diff --git a/macros/latex/contrib/l3kernel/l3styleguide.pdf b/macros/latex/contrib/l3kernel/l3styleguide.pdf
index 4d360a1d9c..6bf6d1bc46 100644
--- a/macros/latex/contrib/l3kernel/l3styleguide.pdf
+++ b/macros/latex/contrib/l3kernel/l3styleguide.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
index 9997a20d32..63f01138b7 100644
--- a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
+++ b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3sys.dtx b/macros/latex/contrib/l3kernel/l3sys.dtx
index a268294772..8ae4bbb18d 100644
--- a/macros/latex/contrib/l3kernel/l3sys.dtx
+++ b/macros/latex/contrib/l3kernel/l3sys.dtx
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3sys} package: System/runtime functions^^A
+% The \pkg{l3sys} package\\ System/runtime functions^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.pdf b/macros/latex/contrib/l3kernel/l3term-glossary.pdf
index 3e672dc8d9..8e3ca84f08 100644
--- a/macros/latex/contrib/l3kernel/l3term-glossary.pdf
+++ b/macros/latex/contrib/l3kernel/l3term-glossary.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3text-case.dtx b/macros/latex/contrib/l3kernel/l3text-case.dtx
index 5651243cd9..b09f9f2108 100644
--- a/macros/latex/contrib/l3kernel/l3text-case.dtx
+++ b/macros/latex/contrib/l3kernel/l3text-case.dtx
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \textsf{l3text-case} package: text processing (case changing)^^A
+% The \pkg{l3text-case} package\\ Text processing (case changing)^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3text-map.dtx b/macros/latex/contrib/l3kernel/l3text-map.dtx
index f728915387..6dbb1a9950 100644
--- a/macros/latex/contrib/l3kernel/l3text-map.dtx
+++ b/macros/latex/contrib/l3kernel/l3text-map.dtx
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \textsf{l3text-map} package: text processing (mapping)^^A
+% The \pkg{l3text-map} package\\ Text processing (mapping)^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3text-purify.dtx b/macros/latex/contrib/l3kernel/l3text-purify.dtx
index 8c955419ce..854cbb7e26 100644
--- a/macros/latex/contrib/l3kernel/l3text-purify.dtx
+++ b/macros/latex/contrib/l3kernel/l3text-purify.dtx
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \textsf{l3text-purify} package: text processing (purification)^^A
+% The \pkg{l3text-purify} package\\ Text processing (purification)^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3text.dtx b/macros/latex/contrib/l3kernel/l3text.dtx
index 85eedfab13..d47eb59825 100644
--- a/macros/latex/contrib/l3kernel/l3text.dtx
+++ b/macros/latex/contrib/l3kernel/l3text.dtx
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \textsf{l3text} package: Text processing^^A
+% The \pkg{l3text} package\\ Text processing^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
index 746b68c2f0..14d7bcacb9 100644
--- a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
+++ b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
@@ -32,7 +32,7 @@
%
%
% \title{^^A
-% The \textsf{l3tl-analysis} package: Analysing token lists^^A
+% The \pkg{l3tl-analysis} package\\ Analysing token lists^^A
% }
%
% \author{^^A
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3tl-build.dtx b/macros/latex/contrib/l3kernel/l3tl-build.dtx
index 43b08d902d..ad8e56b739 100644
--- a/macros/latex/contrib/l3kernel/l3tl-build.dtx
+++ b/macros/latex/contrib/l3kernel/l3tl-build.dtx
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \textsf{l3tl-build} package\\ Piecewise \texttt{tl} constructions^^A
+% The \pkg{l3tl-build} package\\ Piecewise \texttt{tl} constructions^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3tl.dtx b/macros/latex/contrib/l3kernel/l3tl.dtx
index 0f38c95aa7..682f2cdcf5 100644
--- a/macros/latex/contrib/l3kernel/l3tl.dtx
+++ b/macros/latex/contrib/l3kernel/l3tl.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3token.dtx b/macros/latex/contrib/l3kernel/l3token.dtx
index bf882c57e4..30ae67a205 100644
--- a/macros/latex/contrib/l3kernel/l3token.dtx
+++ b/macros/latex/contrib/l3kernel/l3token.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3unicode.dtx b/macros/latex/contrib/l3kernel/l3unicode.dtx
index adab2aa934..f2b1983c41 100644
--- a/macros/latex/contrib/l3kernel/l3unicode.dtx
+++ b/macros/latex/contrib/l3kernel/l3unicode.dtx
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3unicode} package: Unicode support functions^^A
+% The \pkg{l3unicode} package\\ Unicode support functions^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2023-12-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/source3.pdf b/macros/latex/contrib/l3kernel/source3.pdf
index f46549de13..fc0be1908b 100644
--- a/macros/latex/contrib/l3kernel/source3.pdf
+++ b/macros/latex/contrib/l3kernel/source3.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/polyglossia/README.md b/macros/unicodetex/latex/polyglossia/README.md
index f5f86367da..a2f6bf506e 100644
--- a/macros/unicodetex/latex/polyglossia/README.md
+++ b/macros/unicodetex/latex/polyglossia/README.md
@@ -1,4 +1,4 @@
-# THE POLYGLOSSIA PACKAGE v1.65
+# THE POLYGLOSSIA PACKAGE v1.66
## Multilingual typesetting with XeLaTeX and LuaLaTeX
This package provides an alternative to Babel for users of XeLaTeX and LuaLaTeX.
@@ -27,7 +27,7 @@ Polyglossia makes it possible to automate the following tasks:
# LICENCE
Copyright (c) 2008-2010 François Charette, 2013 Élie Roux, 2011-2023 Arthur Reutenauer,
-Copyright (c) 2019-2023 Bastien Roucariès, 2019-2023 Jürgen Spitzmüller
+Copyright (c) 2019-2023 Bastien Roucariès, 2019-2023 Jürgen Spitzmüller, 2023 Udi Fogiel
Except where otherwise noted, Polyglossia is placed under the terms of the MIT licence
(https://opensource.org/licenses/MIT).
diff --git a/macros/unicodetex/latex/polyglossia/polyglossia.dtx b/macros/unicodetex/latex/polyglossia/polyglossia.dtx
index 06fa02dd7a..2adeb09db9 100644
--- a/macros/unicodetex/latex/polyglossia/polyglossia.dtx
+++ b/macros/unicodetex/latex/polyglossia/polyglossia.dtx
@@ -8,7 +8,7 @@
\iffalse
%</internal>
%<*README>
-# THE POLYGLOSSIA PACKAGE v1.65
+# THE POLYGLOSSIA PACKAGE v1.66
## Multilingual typesetting with XeLaTeX and LuaLaTeX
This package provides an alternative to Babel for users of XeLaTeX and LuaLaTeX.
@@ -37,7 +37,7 @@ Polyglossia makes it possible to automate the following tasks:
# LICENCE
Copyright (c) 2008-2010 François Charette, 2013 Élie Roux, 2011-2023 Arthur Reutenauer,
-Copyright (c) 2019-2023 Bastien Roucariès, 2019-2023 Jürgen Spitzmüller
+Copyright (c) 2019-2023 Bastien Roucariès, 2019-2023 Jürgen Spitzmüller, 2023 Udi Fogiel
Except where otherwise noted, Polyglossia is placed under the terms of the MIT licence
(https://opensource.org/licenses/MIT).
@@ -307,6 +307,8 @@ to track the issues and follow progress.
\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-odia.ldf}{\from{polyglossia.dtx}{gloss-odia.ldf}}}
+\generate{\file{gloss-or.ldf}{\from{polyglossia.dtx}{gloss-or.ldf}}}
\generate{\file{gloss-pa.ldf}{\from{polyglossia.dtx}{gloss-pa.ldf}}}
\generate{\file{gloss-persian.ldf}{\from{polyglossia.dtx}{gloss-persian.ldf}}}
\generate{\file{gloss-piedmontese.ldf}{\from{polyglossia.dtx}{gloss-piedmontese.ldf}}}
@@ -354,6 +356,7 @@ to track the issues and follow progress.
\generate{\file{devanagaridigits.map}{\from{polyglossia.dtx}{devanagaridigits.map}}}
\generate{\file{farsidigits.map}{\from{polyglossia.dtx}{farsidigits.map}}}
\generate{\file{gurmukhidigits.map}{\from{polyglossia.dtx}{gurmukhidigits.map}}}
+\generate{\file{odiadigits.map}{\from{polyglossia.dtx}{odiadigits.map}}}
\generate{\file{thaidigits.map}{\from{polyglossia.dtx}{thaidigits.map}}}
\def\MetaPrefix{-- }
\generate{\file{polyglossia-french.lua}{\from{polyglossia.dtx}{polyglossia-french.lua}}}
@@ -397,7 +400,7 @@ to track the issues and follow progress.
hyperindex=false,
hyperfootnotes=false,
pdftitle={Polyglossia: Modern multilingual typesetting with XeLaTeX and LuaLaTeX},
- pdfauthor={F Charette, A Reutenauer, B Roucariès, J Spitzmüller},
+ pdfauthor={F Charette, A Reutenauer, U Fogiel, B Roucariès, J Spitzmüller},
pdfkeywords={xetex, xelatex, luatex, lualatex, multilingual, babel, hyphenation}
]{hyperref}
\usepackage{array}
@@ -550,7 +553,7 @@ to track the issues and follow progress.
% \\[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}}
+% \and \TA{Udi Fogiel} \and \TA{Bastien Roucariès} \and \TA{Jürgen Spitzmüller}}
% \date{\filedate \qquad \fileversion\thanks{Please report bugs to \url{http://github.com/reutenauer/polyglossia/issues}}\\
% \footnotesize (\textsc{pdf} file generated on \today)}
%
@@ -644,29 +647,29 @@ to track the issues and follow progress.
%
% \begin{table}[ht]\centering
% \caption{\label{tab:lang}Languages currently supported in \pkg{polyglossia}}
-% ^^A Produced with tools/insert-language-list.rb -- JS, 2022-11-23
-% ^^A Edited by hand -- JS, 2022-11-23
+% ^^A Produced with tools/insert-language-list.rb -- JS, 2023-11-06
% \begin{tabular}{lllll}
% \toprule
-% \TX{afrikaans} & danish & icelandic & nko & \TX{spanish} \\
-% albanian & divehi & interlingua & \TX{norwegian}& swedish \\
-% amharic & \TX{dutch} & \TX{italian} & occitan & \TX{syriac} \\
-% \TX{arabic} & \TX{english} & japanese & \TX{persian} & tamil \\
-% \TX{armenian} & \TX{esperanto}& kannada & piedmontese & telugu \\
-% asturian & estonian & khmer & \TX{polish} & \TX{thai} \\
-% basque & \TX{finnish} & \TX{korean} &\TX{portuguese}& \TX{tibetan} \\
-% \TX{belarusian} & \TX{french} & \TX{kurdish} & \TX{punjabi} & turkish \\
-% \TX{bengali} & friulian & \TX{lao} & romanian & turkmen \\
-% bosnian & \TX{gaelic} & \TX{latin} & romansh & \TX{ukrainian}\\
-% breton & galician & latvian & \TX{russian} & \TX{urdu} \\
-% bulgarian & \TX{georgian} & lithuanian & \TX{sami} & \TX{uyghur} \\
-% \TX{catalan} & \TX{german} & macedonian & \TX{sanskrit} & vietnamese \\
-% \TX{chinese} & \TX{greek} & \TX{malay} & \TX{serbian} & \TX{welsh} \\
-% coptic & \TX{hebrew} & malayalam & \TX{slovak} & \\
-% \TX{croatian} & \TX{hindi} & \TX{marathi} & \TX{slovenian}& \\
-% \TX{czech} & \TX{hungarian}& \TX{mongolian}& \TX{sorbian} & \\
+% \TX{afrikaans} & danish & icelandic & nko & \TX{sorbian}\\
+% albanian & divehi & interlingua & \TX{norwegian} & \TX{spanish}\\
+% amharic & \TX{dutch} & \TX{italian} & occitan & swedish \\
+% \TX{arabic} & \TX{english} & japanese & \TX{odia} & \TX{syriac}\\
+% \TX{armenian} & \TX{esperanto} & kannada & \TX{persian} & tamil \\
+% asturian & estonian & khmer & piedmontese & telugu \\
+% basque & \TX{finnish} & \TX{korean} & \TX{polish} & \TX{thai} \\
+% \TX{belarusian} & \TX{french} & \TX{kurdish} & \TX{portuguese} & \TX{tibetan}\\
+% \TX{bengali} & friulian & \TX{lao} & \TX{punjabi} & turkish \\
+% bosnian & \TX{gaelic} & \TX{latin} & romanian & turkmen \\
+% breton & galician & latvian & romansh & \TX{ukrainian}\\
+% bulgarian & \TX{georgian} & lithuanian & \TX{russian} & \TX{urdu} \\
+% \TX{catalan} & \TX{german} & macedonian & \TX{sami} & \TX{uyghur}\\
+% \TX{chinese} & \TX{greek} & \TX{malay} & \TX{sanskrit} & vietnamese\\
+% coptic & \TX{hebrew} & malayalam & \TX{serbian} & \TX{welsh}\\
+% \TX{croatian} & \TX{hindi} & \TX{marathi} & \TX{slovak} & \\
+% \TX{czech} & \TX{hungarian} & \TX{mongolian} & \TX{slovenian} & \\
% \bottomrule
% \end{tabular}
+%
% \end{table}
%
% \paragraph{Version Notes} The support for Amharic\new{1.0.1} should be considered an experimental attempt to
@@ -692,6 +695,8 @@ to track the issues and follow progress.
% compatibility reasons.
% Version 1.46\new{1.46} introduces support for Afrikaans, Belarusian, Bosnian and Georgian.
% Version 1.52\new{1.52} introduces support for Uyghur.
+% Version 1.59\new{1.59} adds support for (simplified and traditional) Chinese and for Punjabi.
+% Version 1.66\new{1.66} introduces support for Odia.
%
%
% \subsection{Relation to and use of Babel language names}\label{sec:babelnames}
@@ -907,6 +912,7 @@ to track the issues and follow progress.
% nl & dutch & \tabularnewline
% nn & norwegian & variant=nynorsk [\emph{default}] \tabularnewline
% oc & occitan & \tabularnewline
+% or & odia & changecounternumbering=false, numerals=Devanagari [\emph{default}] \tabularnewline
% pa & punjabi & numerals=gurmukhi \tabularnewline
% pl & polish & \tabularnewline
% pms & piedmontese & \tabularnewline
@@ -2099,6 +2105,14 @@ to track the issues and follow progress.
% \item \xpgchoicekey[1.45]{variant}{\xpgvalue{bokmal} or \xpgpresetvalue{nynorsk}}
% \end{itemize}
%
+% \subsection[odia]{odia\new{1.66}}\label{odia}
+% \paragraph*{Options:}
+% \begin{itemize}
+% \item \xpgchoicekey{numerals}{\xpgvalue{western}, \xpgpresetvalue{devanagari}, or \xpgvalue{odia}}
+% \item \xpgboolkeyfalse{changecounternumbering}
+% Use specified numerals for headings and page numbers.
+% \end{itemize}
+%
% \subsection{persian}\label{persian}
% \paragraph*{Options:}
% \begin{itemize}
@@ -2735,6 +2749,7 @@ to track the issues and follow progress.
% \item \Cmd\khmerdigits
% \item \Cmd\laodigits
% \item \Cmd\nkodigits
+% \item \Cmd\odiadigits
% \item \Cmd\thaidigits
% \item \Cmd\tibetandigits
% \end{itemize}
@@ -2926,6 +2941,10 @@ to track the issues and follow progress.
% 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.
%
+% With the test\new{1.66} \displaycmd{\IfCharIsAvailableTF\marg{char code}\marg{true condition}\marg{false condition}}{\IfCharIsAvailableTF}
+% you can test for the availability of a character and execute different code depending whether or not this is the case
+% (this replaces the undocument internal command \cmd{\xpg@if@char@available}).
+%
%
% \section{Accessing language information}\label{sec:langinfo}
%
@@ -3007,9 +3026,31 @@ to track the issues and follow progress.
% \noindent Finally, if you want to know whether a specific language option has been set, you can use\new{1.47}
% \displaycmd{\iflanguageoption\marg{lang}\marg{key}\marg{value}\marg{true}\marg{false}}{\iflanguageoption}
%
+%
% \section{Revision history}
%
% \bgroup\footnotesize
+% \subsection*{1.66 (2023/12/02)}
+%
+% \subsubsection*{Bug fixes}
+% \begin{itemize}
+% \item Fix OpenType language and script tags in Chinese (\TXI{606}).
+% \item Fix resetting of language specifications at the end of a local font
+% set with \pkg{babel} legacy means (\cmd{\foreignlanguage} or \texttt{otherlanguage*}
+% environment) (\TXI{607}).
+% \item Fix lowercasing of \cmd{\textlang}'s first mandatory argument.
+% Now the casing does not change (language tag was lower-cased always) (\TXI{608}).
+% \item Add missing BCP-47 alias for Khmer (\TXI{611}).
+% \item Stop \cmd{\charifavailable} from looking ahead for more numbers or gobbling a space (\TXI{613}).
+% \end{itemize}
+%
+% \subsubsection*{New Features}
+% \begin{itemize}
+% \item Add support for Odia, provided by \TA{Avisek Jena} and \TA{Ashok Das}.
+% \item New auxiliary package ¦odiadigits¦
+% \item Add auxiliary command \cmd{\IfCharIsAvailableTF} to complement \cmd{\charifavailable}.
+% \end{itemize}
+%
% \subsection*{1.65 (2023/10/01)}
%
% \subsubsection*{Bug fixes}
@@ -4027,13 +4068,14 @@ to track the issues and follow progress.
% \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}, user \TA{fakhriaunur}, \TA{Udi Fogiel}, \TA{Philipp Gesang}, \TA{Kevin Godby},
+% In alphabetical order: \TA{Ignas Anikevicius}, \TA{Sina Ahmadi}, \TA{Matthew Bertucci}, \TA{Wouter Bolsterlee}, \TA{Christian Buhtz},
+% \TA{Ashok Das}, \TA{Oleg Domanov}, user \TA{fakhriaunur}, \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{Gyula Magyarkuti}, \TA{José Mancera}, \TA{Miquel Ortega},
% \TA{Yevgen Pogribnyi}, \TA{Will Robertson}, \TA{Maïeul Rouquette}, \TA{Elie Roux}, \TA{Hugo Roy}, \TA{Guy Rutenberg},
-% \TA{Marcin Serwin}, \TA{Arvinder Singh}, \TA{Philipp Stephani}, \TA{Niranjan Tambe}, \TA{Takuji Tanaka}, \TA{Osman Tursun},
-% \TA{Keno Wehr}, \TA{Dominik Wujastyk}, \TA{Sertaç Ö. Yıldız}, \TA{Maksim Zholudev}, \TA{Yan Zhou}, and \TA{Stefan Zlatinov}.
+% \TA{Marcin Serwin}, \TA{Arvinder Singh}, \TA{Avisek Jena}, \TA{Philipp Stephani}, \TA{Niranjan Tambe}, \TA{Takuji Tanaka},
+% \TA{Osman Tursun}, \TA{Keno Wehr}, \TA{Dominik Wujastyk}, \TA{Sertaç Ö. Yıldız}, \TA{Andrey Zgarbul}, \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}.
%
@@ -4059,20 +4101,14 @@ to track the issues and follow progress.
% \subsection{polyglossia.sty}
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{polyglossia}[2023/10/01 v1.65
- Modern multilingual typesetting with XeLaTeX and LuaLaTeX]
+\ProvidesExplPackage
+ {polyglossia} {2023/12/11} {v1.66}
+ {Modern multilingual typesetting with XeLaTeX and LuaLaTeX}
\RequirePackage{etoolbox}
-\RequirePackage{makecmds}
\RequirePackage{xkeyval}[2008/08/13]
% Will raise error if used with anything else than XeTeX or LuaTeX
\RequirePackage{fontspec}[2010/06/08]% v2.0
\RequirePackage{iftex}
-\RequirePackage{expl3}
-\RequirePackage{l3keys2e}
-\RequirePackage{xparse}
-
-% fontspec now uses LaTeX3 packages such as expl3, so we need this:
-\ExplSyntaxOn
% Execute code #3 if package #1 has been loaded already, else
% add to package hook #2
@@ -4080,23 +4116,7 @@ to track the issues and follow progress.
\@ifpackageloaded{#1}{#3}{\AddToHook{#2}{#3}}%
}
-% safe according to expl3 bug #960
-\cs_generate_variant:Nn \prop_item:Nn { Ne, Nf, No, Nx }
-\cs_generate_variant:Nn \clist_set:Nn { Ne, Nf, No, Nx }
-\cs_generate_variant:Nn \clist_gput_right:Nn {Ne}
-\cs_generate_variant:Nn \prop_get:NnN {NeN}
-\cs_generate_variant:Nn \prop_gput:Nnn {Nne, Nee, Nen}
-\cs_generate_variant:Nn \cs_gset:Npn {Npe}
-\cs_generate_variant:Nn \cs_new:Nn {Ne}
-\cs_generate_variant:Nn \cs_new_nopar:Nn {Ne}
-\cs_generate_variant:Nn \cs_gset_nopar:Npn {Npe}
-\cs_generate_variant:Nn \cs_gset_nopar:Npn {cpe}
-\cs_generate_variant:Nn \tl_set:Nn {Ne}
-\cs_generate_variant:Nn \str_foldcase:n {e}
-\prg_generate_conditional_variant:Nnn \file_if_exist:n {e} {TF, T, F, p}
-\prg_generate_conditional_variant:Nnn \tl_if_blank:n {e} {TF, T, F, p}
-\prg_generate_conditional_variant:Nnn \clist_if_in:Nn {Ne} {TF, T, F, p}
-\prg_generate_conditional_variant:Nnn \prop_if_in:Nn {Ne} {TF, T, F, p}
+\prg_generate_conditional_variant:Nnn \clist_if_in:Nn {Ne} {TF, T, F} % check if needed
% correct a bug in tracklang
\__xpg_at_package_hook:nnn{tracklang}{file/tracklang.sty/after}{%
\@ifpackagelater{tracklang}{2019/08/30}{}{\global\def\AddTrackedLangage{\AddTrackedLanguage}}
@@ -4105,10 +4125,10 @@ to track the issues and follow progress.
%% This is for compatibility with Babel-aware package:
\def\languageshorthands#1{\relax} % this is for scrlttr2 class
\def\bbl@cs#1{\csname bbl@#1\endcsname}
-\AtEndPreamble{\let\bbl@set@language\xpg@set@language@aux} %for biblatex
-\AtEndPreamble{\let\bbl@main@language\xpg@main@language} %for biblatex
-\AtEndPreamble{
- \providecommand\texorpdfstring[2]{#1} % dummy command if hyperref is not loaded
+\AddToHook{begindocument/before}{
+ \let\bbl@set@language\xpg@set@language@aux % for biblatex
+ \let\bbl@main@language\xpg@main@language % for biblatex
+ \providecommand\texorpdfstring[2]{#1} % dummy command if hyperref is not loaded
}
\sys_if_engine_luatex:T{
@@ -4201,7 +4221,7 @@ to track the issues and follow progress.
% error out if lang is not loaded
\cs_new_nopar:Nn \polyglossia@error@iflangnotloaded:n
{
- \seq_if_in:NxF \__xpg_langs_loaded {#1}
+ \seq_if_in:NeF \__xpg_langs_loaded {#1}
{
\xpg@error{language~ #1~ is~ not~ loaded.~ Please~ load~ it~ before~ using~ it.}
}
@@ -4237,16 +4257,12 @@ to track the issues and follow progress.
\def\@@ensure@maindir#1{\ifcsundef{@ensure@maindir}{#1}{\@ensure@maindir{#1}}}
%% Used by the language definitions files for right-to-left languages
-\def\RequireBidi{
- \str_case_e:nnF{\c_sys_engine_str}{
- {luatex}{\ifx\@onlypreamble\@notprerr\else\RequirePackage{luabidi}\fi}
- {xetex}{\ifx\@onlypreamble\@notprerr\else\RequirePackage{bidi}\fi}
- }
+\def\RequireBidi
{
- \xpg@warning{You’re running a TeX engine that is not LuaTeX or XeTeX.\MessageBreak
- That is almost guaranteed to cause problems.}
+ \sys_if_engine_luatex:TF
+ {\ifx\@onlypreamble\@notprerr\else\RequirePackage{luabidi}\fi}
+ {\ifx\@onlypreamble\@notprerr\else\RequirePackage{bidi}\fi}
}
-}
% if #1 is LR run #2 else #3
\prg_set_conditional:Nnn \__xpg_if_LR_str:n {p, T, F, TF}
@@ -4296,7 +4312,6 @@ to track the issues and follow progress.
\RLE
}
}
- \ExplSyntaxOff
}
\__xpg_at_package_hook:nnn{luabidi}{package/luabidi/after}{
\cs_gset_nopar:Nn{\polyglossia@setpardirection:n}{
@@ -4320,18 +4335,9 @@ to track the issues and follow progress.
}
% emulate \RTLmain
-\cs_new_nopar:Nn \__xpg_setRTLmain: {}
-\str_case_e:nnF{\c_sys_engine_str}{
- {luatex}{\cs_gset:Nn \__xpg_setRTLmain: {\setRTLmain}}
- {xetex}{\cs_gset:Nn \__xpg_setRTLmain: {\@RTLmaintrue\setnonlatin}}
-}
-{
- \cs_gset:Nn \__xpg_setRTLmain:
- {
- \xpg@warning{You’re~ running a~ TeX~ engine~ that~ is~ not~ LuaTeX~ or~ XeTeX.\MessageBreak
- That~ is~ almost~ guaranteed~ to~ cause~ problems.}
- }
-}
+\sys_if_engine_luatex:TF
+ { \cs_new_nopar:Nn \__xpg_setRTLmain: { \setRTLmain } }
+ { \cs_new_nopar:Nn \__xpg_setRTLmain: { \@RTLmaintrue\setnonlatin } }
%% compatibility with babel
\let\addto\gappto % gappto is defined in etoolbox
@@ -4356,7 +4362,6 @@ to track the issues and follow progress.
\newcommand*\PolyglossiaSetup[2]{
\polyglossia@keys_define_lang:n{#1}
\keys_set:nn { polyglossia / #1 } { #2 }
- \prop_log:N{\polyglossia@langsetup}
\polyglossia_setup_hyphen:n {#1}
%define booleans etoolbox style and set defaults
%% TODO ? \providetoggle{#1@setup@done}%
@@ -4364,16 +4369,18 @@ to track the issues and follow progress.
\csgdef{init@extras@#1}{}
\csgdef{init@noextras@#1}{} % we don't use this yet: remove?
% here we do the fontsetup:
- \polyglossia@lang@autosetupfont:n{#1}
+ \xpg__auto_setupfont:n { #1 }
%% TODO? \toggletrue{#1@setup@done}
- % reinit \do
- \def\do##1{\setotherlanguage{##1}}
% register base alias
\xpg_language_alias { #1 } { #1 }
}
-% Adjust language key setting after initial setup
-% This is needed, e.g., for languages with varying script
+% Adjust language key setting after initial setup.
+% Principally any key can be altered this way.
+% The command is mainly used in gloss file where
+% different options (variant, script, etc.) result
+% in different babel names, bcp47 specification,
+% or OpenType language or script tags.
\DeclareDocumentCommand \SetLanguageKeys { m m }
{
\clist_map_inline:nn { #1 } { \keys_set:nn { polyglossia / ##1 } { #2 } }
@@ -4475,8 +4482,8 @@ to track the issues and follow progress.
#1 / script
.code:n = {
\prop_gput:Nnn{\polyglossia@langsetup}{#1/script}{##1}
- \prop_gput:Nnx{\polyglossia@langsetup}{#1/lcscript}
- {\tl_if_empty:nF{##1}{\str_lowercase:n##1}}
+ \prop_gput:Nne{\polyglossia@langsetup}{#1/lcscript}
+ {\tl_if_empty:nF{##1}{\str_lowercase:n{##1}}}
},
#1 / script
.value_required:n = true,
@@ -4495,7 +4502,7 @@ to track the issues and follow progress.
#1 / language
.value_required:n = true,
#1 / language
- .initial:x = {\str_upper_case:n#1},
+ .initial:x = {\str_uppercase:n#1},
% the language tag
#1 / langtag
.code:n = {\prop_gput:Nnn{\polyglossia@langsetup}{#1/langtag}{##1}},
@@ -4570,7 +4577,7 @@ to track the issues and follow progress.
#1 / hyphennames
.code:n = {
\clist_set:Nn{\l_tmpa_clist}{##1}
- \prop_gput:Nnx{\polyglossia@langsetup}{#1/hyphennames}{\clist_use:Nn \l_tmpa_clist {,}}
+ \prop_gput:Nne{\polyglossia@langsetup}{#1/hyphennames}{\clist_use:Nn \l_tmpa_clist {,}}
},
#1 / hyphennames
.value_required:n = true,
@@ -4615,50 +4622,17 @@ to track the issues and follow progress.
#1 / totalhyphenmin
.value_required:n = false,
% frenchspacing
- #1 / frenchspacing
- .code:n = {
- \str_case_e:nnTF{##1}{
- {true}{}
- {false}{}
- }
- {}
- {\xpg@error{frenchspacing~should~be~true~or~false. Is~ "##1"~ for~ language~ "#1"}}
- \prop_gput:Nnn{\polyglossia@langsetup}{#1/frenchspacing}{##1}
- },
- #1 / frenchspacing
- .default:n = true,
- #1 / frenchspacing
- .initial:n = false,
+ #1 / frenchspacing .bool_gset:c = g__xpg_#1_fs_bool ,
+ #1 / frenchspacing .default:n = true ,
+ #1 / frenchspacing .initial:n = false ,
% indent first line
- #1 / indentfirst
- .code:n = {
- \str_case_e:nnTF{##1}{
- {true}{}
- {false}{}
- }
- {}
- {\xpg@error{indentfirst~should~be~true~or~false. Is~ "##1"~ for~ language "#1"}}
- \prop_gput:Nnn{\polyglossia@langsetup}{#1/indentfirst}{##1}
- },
- #1 / indentfirst
- .default:n = true,
- #1 / indentfirst
- .initial:n = false,
+ #1 / indentfirst .bool_gset:c = g__xpg_#1_if_bool ,
+ #1 / indentfirst .default:n = true ,
+ #1 / indentfirst .initial:n = false ,
% fontsetup
- #1 / fontsetup
- .code:n = {
- \str_case_e:nnTF{##1}{
- {true}{}
- {false}{}
- }
- {}
- {\xpg@error{fontsetup~should~be~true~or~false. Is "##1"~ for~ language~ "#1"}}
- \prop_gput:Nnn{\polyglossia@langsetup}{#1/fontsetup}{##1}
- },
- #1 / fontsetup
- .default:n = true,
- #1 / fontsetup
- .initial:n = false,
+ #1 / fontsetup .bool_gset:c = g__xpg_#1_fontsetup_bool ,
+ #1 / fontsetup .default:n = true ,
+ #1 / fontsetup .initial:n = false ,
% environment name
#1 / envname
.code:n = {
@@ -4703,220 +4677,64 @@ to track the issues and follow progress.
\polyglossia@Clang@@arabic{#2}
}
-% print using main language
-% #2 is the numeral to print
-% #3 is the mainlanguage (should be expanded)
-% #4 is the current language (should be expanded)
-% #1 is the option list (should be expanded)
-% #5 is the name of the field to use
-\cs_new:Nn \polyglossia_localnumeral_mainlang:nnnnn {
- \foreignlanguage{#3}{\use:c {\prop_item:Nn \polyglossia@langsetup {#3/#5}} {#1} {#2}}
-}
-
+\tl_new:N \l__xpg_localnumeral_tl
+\bool_new:N \l__xpg_localnumeral_bool
-% print using local language
-% #2 is the numeral to print
-% #3 is the mainlanguage (should be expanded)
-% #4 is the current language (should be expanded)
-% #1 is the option list (should be expanded)
-% #5 is the name of the field to use
-\cs_new:Nn \polyglossia_localnumeral_locallang:nnnnn {
- \use:c {\prop_item:Nn \polyglossia@langsetup {#4/#5}} {#1} {#2}
-}
-
-% this function try to resolve some simple parameter about lang
-% call #2 then branching if found
-% call parameter #3 if not found
-% (use curing)
-\cs_new:Npn \polyglossia_localnumeral_callshortcutorlong:nF #1#2 {
- \str_case:nnF{#1}{
- {lang=local}{\polyglossia_localnumeral_locallang:nnnnn}
- }
- {#2}
-}
-
-\cs_new:Npn \polyglossia_iii_map_csv_field_split_kv_iii_localnumeral:w #1 = #2 \q_stop {
- \str_case:nnF{#2}{
- {local} {\clist_map_break:n{\use_i:nn \polyglossia_localnumeral_locallang:nnnnn }}
- {default}{\clist_map_break:n{\use_i:nn \polyglossia_localnumeral_locallang:nnnnn }}
- {*} {\clist_map_break:n{\use_i:nn\polyglossia_localnumeral_mainlang:nnnnn }}
- {main} {\clist_map_break:n{\use_i:nn\polyglossia_localnumeral_mainlang:nnnnn }}
- }{
- \clist_map_break:n{ \use_i_ii:nnn \polyglossia_localnumeral_langlang:nnnnnn {{#2}} }
- }
-}
-
-
-% call the language
-% #3 is the numeral to print
-% #4 is the mainlanguage (should be expanded)
-% #5 is the current language (should be expanded)
-% #2 is the option list (should be expanded)
-% #6 is the name of the field to use
-% #1 is the language used
-\cs_new:Nn \polyglossia_localnumeral_langlang:nnnnnn {
- \foreignlanguage{#1}{\use:c {\prop_item:Nn \polyglossia@langsetup {#1/#6}} {#2} {#3}}
-}
-
-
-% check if empty value
-\cs_new:Npn \polyglossia_iii_map_csv_field_split_kv_ii_localnumeral:w #1 #2 = #3 \q_stop {
- \quark_if_no_value:NTF {#3}
+\keys_define:nn { polyglossia / localnumeral }
{
- \clist_map_break:n{\use_i:nn \polyglossia_localnumeral_locallang:nnnnn}
+ lang .choice:,
+ lang / main .code:n = \tl_set:Nn \l__xpg_localnumeral_tl { \mainlanguagename } ,
+ lang / local .code:n = \tl_set:Nn \l__xpg_localnumeral_tl { \languagename }
+ \bool_set_true:N \l__xpg_localnumeral_bool ,
+ lang / unknown .code:n = \tl_set:Nn \l__xpg_localnumeral_tl { #1 } ,
}
+
+\cs_new:Npn \__xpg_localnumeral:nnn #1 #2 #3
{
- \polyglossia_iii_map_csv_field_split_kv_iii_localnumeral:w #1 \q_stop
+ \group_begin:
+ \keys_set:ne { polyglossia / localnumeral } { #2 }
+ \bool_if:NF \l__xpg_localnumeral_bool { \foreignlanguage { \l__xpg_localnumeral_tl } }
+ { \use:c { \prop_item:Ne \polyglossia@langsetup
+ { \l__xpg_localnumeral_tl / #3 } } { } { #1 } }
+ \group_end:
}
-}
-\cs_new:Npn \polyglossia_iii_map_csv_field_split_kv_i_localnumeral:nw #1 #2 = #3 \q_stop {
- % parse only lang tag
- \tl_trim_spaces_apply:nN {#2} \str_if_eq:nnT {lang}
+\NewDocumentCommand \localnumeral { s ={ lang } O{ local } m }
{
- % if empty value
- \quark_if_nil:nTF{#3}
- {
- \clist_map_break:n{\use_i:nn \polyglossia_localnumeral_locallang:nnnn}
- }
- {
- % here we know what we have an equal sign
- \polyglossia_iii_map_csv_field_split_kv_ii_localnumeral:w {#1} #1 \q_no_value \q_stop
- }
+ \IfBooleanTF { #1 }
+ {
+ \exp_args:Nc \__xpg_localnumeral:nnn { c@#3 } { #2 } { localnumeral }
+ }
+ {
+ \__xpg_localnumeral:nnn { #3 } { #2 } { localnumeral }
+ }
}
-}
-% map function
-\cs_new:Nn \polyglossia_iii_map_csv_localnumeral:n {
- % fast case is do nothing is empty
- \tl_if_empty:nF{#1}
+\NewDocumentCommand \Localnumeral { s ={ lang } O{ local } m }
{
- \polyglossia_iii_map_csv_field_split_kv_i_localnumeral:nw {#1} #1 = \q_nil \q_stop
+ \IfBooleanTF { #1 }
+ {
+ \exp_args:Nc \__xpg_localnumeral:nnn { c@#3 } { #2 } { Localnumeral }
+ }
+ {
+ \__xpg_localnumeral:nnn { #3 } { #2 } { Localnumeral }
+ }
}
-}
-
-% treat option is empty and option is lang=local
-% #2 number
-% #3 mainlanguage
-% #4 locallanguage
-% #5 field to call
-% #1 option
-% strip space to option
-\cs_new:Nn \polyglossia_iii_localnumeral:nnnnn {
- \tl_if_blank:nTF{#1}
- {
- \polyglossia_localnumeral_mainlang:nnnnn
+\cs_new_nopar:Npn \xpg__french_spacing:n #1
+ {
+ \bool_if:cTF { g__xpg_#1_fs_bool }
+ { \frenchspacing } { \nonfrenchspacing }
}
+
+\cs_new_nopar:Npn \xpg__indent_first:n #1
{
- \str_if_eq:nnTF{#1}{lang=local}
- {
- \polyglossia_localnumeral_locallang:nnnnn
- }
- {
- % use postscript like trick push to stack {#1} {#2} {#3} {#4}
- \polyglossia_localnumeral_callshortcutorlong:nF {#1}
- {
- % same trick here if found we emit \use_i:nn
- % thus discarding the default choice that is not lang specified thus local
- \clist_map_function:nN {#1} {\polyglossia_iii_map_csv_localnumeral:n}
- \polyglossia_localnumeral_locallang:nnnnn
- }
- }
- {#1} {#2} {#3} {#4} {#5}
+ \bool_if:cTF { g__xpg_#1_if_bool }
+ { \french@indent } { \nofrench@indent }
}
-}
-
-
-% internal helper useful for oeee and onnn
-% #1 number
-% #2 mainlanguage
-% #3 locallanguage
-% #4 option
-% #5 field to call
-% strip space to option
-\cs_new:Nn \polyglossia_ii_localnumeral:nnnnn {
- \tl_trim_spaces_apply:nN {#4} \polyglossia_iii_localnumeral:nnnnn {#1}{#2}{#3}{#5}
-}
-\cs_generate_variant:Nn \polyglossia_ii_localnumeral:nnnnn {
- eeenn, eeeon, eeeen
-}
-
-% convert the counter to value
-% #1 counter
-% #2 mainlanguage
-% #3 locallanguage
-% #4 option
-\cs_new:Nn \polyglossia_i_localnumeral:nnnnn
-{
- \polyglossia_ii_localnumeral:eeeen {\int_value:w #1} {#2} {#3} {#4} {#5}
-}
-
-% print number usage \localnumeral[option]{numeral}
-% or \localnumeral*[option]{counter}
-% \Localnumeral[]{numeral} use main language
-% \localnumeral{numeral} use local language
-\NewExpandableDocumentCommand{\localnumeral}{som}
-{
- \IfBooleanTF{#1}%
- {% starred: take counter
- \exp_args:Nc \polyglossia_i_localnumeral:nnnnn {c@#3}
- {\mainlanguagename} {\languagename} {\IfNoValueTF {#2}{lang=local}{#2}} {localnumeral}
- }{% unstarred: take number
- \polyglossia_ii_localnumeral:eeeen {\int_eval:n{#3}}
- {\mainlanguagename} {\languagename} {\IfNoValueTF {#2}{lang=local}{#2}} {localnumeral}
- }
-}
-
-% print number usage \Localnumeral[option]{numeral}
-% or \Localnumeral*[option]{counter}
-% \Localnumeral[]{numeral} use main language
-% \localnumeral{numeral} use local language
-\NewExpandableDocumentCommand{\Localnumeral}{som}
-{
- \IfBooleanTF{#1}
- {% starred: take counter
- \exp_args:Nc \polyglossia_i_localnumeral:nnnnn {c@#3}
- {\mainlanguagename} {\languagename} {\IfNoValueTF {#2}{lang=local}{#2}} {Localnumeral}
- }{% unstarred: take number
- \polyglossia_ii_localnumeral:eeeon {\int_eval:n{#3}}
- {\mainlanguagename} {\languagename} {\IfNoValueTF {#2}{lang=local}{#2}} {Localnumeral}
- }
-}
-
-\cs_new_nopar:Nn{\polyglossia@lang@frenchspacing:n}{
- \prop_get:NxNTF \polyglossia@langsetup {#1/frenchspacing} \l_tmpa_tl
- {
- \str_case_e:nnF{\l_tmpa_tl}{
- {true}{\frenchspacing}
- {false}{\nonfrenchspacing}
- }
- {\xpg@error{frenchspacing~should~be~true~or~false. Is~"\l_tmpa_ttl"~ for~ language~ "#1"}}
- }
- {
- \xpg@error{Could~ not~ retrieve~ key~ frenchspacing~ for~ language~ "#1"}
- \prop_show:N{\polyglossia@langsetup}
- }
-}
-
-\cs_new_nopar:Nn{\polyglossia@lang@indentfirst:n}{
- \prop_get:NxNTF \polyglossia@langsetup {#1/indentfirst} \l_tmpa_tl
- {
- \str_case_e:nnF{\l_tmpa_tl}{
- {true}{\french@indent}
- {false}{\nofrench@indent}
- }
- {\xpg@error{indentfirst~should~be~true~or~false. Is~"\l_tmpa_ttl"~ for~ language~ "#1"}}
- }
- {
- \xpg@error{Could~ not~ retrieve~ key~ indentfirst~ for~ language~ "#1"}
- \prop_show:N{\polyglossia@langsetup}
- }
-}
-
\cs_new:Nn{\polyglossia@lang@setpardirection:n}{
- \prop_get:NxNTF \polyglossia@langsetup {#1/direction} \l_tmpa_tl
+ \prop_get:NeNTF \polyglossia@langsetup {#1/direction} \l_tmpa_tl
{
\polyglossia@setpardirection:n{\l_tmpa_tl}
}
@@ -4928,7 +4746,7 @@ to track the issues and follow progress.
\cs_new:Nn{\polyglossia@lang@settextdirection:nn}{
- \prop_get:NxNTF \polyglossia@langsetup {#1/direction} \l_tmpa_tl
+ \prop_get:NeNTF \polyglossia@langsetup {#1/direction} \l_tmpa_tl
{
\polyglossia@settextdirection:n{\l_tmpa_tl}{#2}
}
@@ -4938,10 +4756,6 @@ to track the issues and follow progress.
}
}
-\AtEndDocument{
- \prop_log:N{\polyglossia@langsetup}
- \prop_log:N{\__xpg_alias}
-}
\def\xpg@lastlanguage{0}
\providebool{xpg@hyphenation@disabled}
@@ -4983,8 +4797,8 @@ to track the issues and follow progress.
%\def\xpg@fontsetup@none#1{\csgdef{#1@font}{\ifcsdef{#1font}{\csname #1font\endcsname}{}}} %<-- simplistic
%\def\xpg@fontsetup@custom#1{\csuse{#1@font}}
-\cs_new:Nn \polyglossia@lang@autosetupfont:n {
- \str_if_eq:eeTF{\prop_item:Nn{\polyglossia@langsetup}{#1/fontsetup}}{true}
+\cs_new:Npn \xpg__auto_setupfont:n #1 {
+ \bool_if:cTF { g__xpg_#1_fontsetup_bool }
{
\str_if_eq:eeTF{\prop_item:Nn{\polyglossia@langsetup}{#1/lcscript}}{latin}
{\xpg@fontsetup@latin{#1}}
@@ -5223,8 +5037,7 @@ to track the issues and follow progress.
%% when no patterns are available, we use \l@nohyphenation, assigned to 255
%% (suggestion by Enrico Gregorio)
-\str_case_e:nn{\c_sys_engine_str}{
- {luatex}
+\sys_if_engine_luatex:TF
{
\@ifundefined{l@nohyphenation}
{\chardef\l@nohyphenation=\directlua{
@@ -5232,12 +5045,9 @@ to track the issues and follow progress.
}
{}
}
- {xetex}
{
\@ifundefined{l@nohyphenation}{\chardef\l@nohyphenation=255 }{}
}
-}
-
%we call this macro when a gloss file is not found for a given language
\def\xpg@nogloss#1{
@@ -5300,7 +5110,7 @@ to track the issues and follow progress.
% try to load a language file
\cs_new:Nn \polyglossia_load_lang_definition:nn {
- \file_if_exist:eTF{gloss-#2.lde}
+ \file_if_exist:nTF{gloss-#2.lde}
{
\RequireLanguageDefinitionExtension[#1]{#2}
\setkeys{#2}{#1}
@@ -5333,14 +5143,14 @@ to track the issues and follow progress.
% load a master language from an alias file
\newcommand*\xpg@load@master@language[1] {
- \file_if_exist:eTF{gloss-#1.lde}
+ \file_if_exist:nTF{gloss-#1.lde}
{
\RequireLanguageDefinitionExtension{#1}
}
{
\xpg@input{gloss-#1.ldf}
}
- \seq_if_in:NxF \__xpg_langs_loaded {#1}
+ \seq_if_in:NeF \__xpg_langs_loaded {#1}
{
% define environment and command if not alias
\str_if_eq:eeT {\prop_item:Ne \__xpg_alias {#1/target}} {#1} {
@@ -5375,9 +5185,6 @@ to track the issues and follow progress.
}
\cs_generate_variant:Nn \xpg_define_language_commands:n {e}
-\AtBeginDocument{
- \prop_log:N{\__xpg_alias}
-}
% resolve alias property #1 lang #2 item
\cs_new:Nn \xpg_alias_prop_item:nn {
@@ -5489,19 +5296,17 @@ to track the issues and follow progress.
% The starred version does not define commands and environments
\IfBooleanF {#1}
{
- \exp_args:Nc \providecommand {text#4} [2][] {}
- \exp_args:Nc \renewcommand {text#4} [2][]
- {
- \__xpg_textlanguage:een{##1}{#4}{##2}
- }
- \exp_args:Nc \providecommand {#4} {}
- \exp_args:Ne \renewenvironment {#4}
- {
- \begin{otherlanguage}{#4}
- }
- {
- \end{otherlanguage}
- }
+ \exp_args:Nc \DeclareDocumentCommand {text#4} { O{} m }
+ {
+ \__xpg_textlanguage:een {##1} {#4} {##2}
+ }
+ \DeclareDocumentEnvironment { #4 } { }
+ {
+ \begin{otherlanguage}{#4}
+ }
+ {
+ \end{otherlanguage}
+ }
}
\tl_clear_new:N \__xpg_alias_option_tl
\prop_clear_new:N \__xpg_language_alias_prop
@@ -5543,7 +5348,7 @@ to track the issues and follow progress.
\clist_gput_right:Ne \xpg@loaded {\xpg_alias_base_lang:n{##2}}
}
}
- \seq_if_in:NxF \__xpg_langs_loaded {#2}
+ \seq_if_in:NeF \__xpg_langs_loaded {#2}
{
\polyglossia_load_lang_definition:nn{#1}{#2}
% define environment and command if not alias
@@ -5552,9 +5357,9 @@ to track the issues and follow progress.
{#2/DefineCommandsCmd}}
{#2}
}
- \exp_args:Nnx \seq_gput_right:Nn \__xpg_langs_loaded {#2}
+ \seq_gput_right:Ne \__xpg_langs_loaded {#2}
}
- \polyglossia@set@default@language:ee {\xpg_alias_add_to_option_i:nn{#2}{#1}}
+ \exp_args:Nee \polyglossia@set@default@language:nn {\xpg_alias_add_to_option_i:nn{#2}{#1}}
{\xpg_alias_base_lang:n{#2}}
}
@@ -5628,18 +5433,11 @@ to track the issues and follow progress.
% Set luatex main language
\sys_if_engine_luatex:T
{
- \directlua{polyglossia.set_default_language('\luatexluaescapestring{\string#2}')}%
+ \directlua{polyglossia.set_default_language('\luaescapestring{\string#2}')}%
}
}
-\cs_generate_variant:Nn\polyglossia@set@default@language:nn {
- ee, ef, en, eo, ex,
- fe, ff, fn, fo, fx,
- ne, nf, no, nx,
- oe, of, on, oo, ox,
- xe, xf, xn, xo, xx
-}
-\let\setmainlanguage=\setdefaultlanguage
+\DeclareCommandCopy \setmainlanguage \setdefaultlanguage
% Returns the language ID of the current language
% Currently supported: bcp-47
@@ -5975,7 +5773,7 @@ to track the issues and follow progress.
% Declare secondary language #2 with language options #1
\DeclareDocumentCommand \setotherlanguage { O{} m }
{
- \seq_if_in:NxF \__xpg_langs_loaded {#2}
+ \seq_if_in:NeF \__xpg_langs_loaded {#2}
{
\polyglossia_load_lang_definition:ee {#1} {#2}
% define environment and command if not alias
@@ -5986,7 +5784,7 @@ to track the issues and follow progress.
}
\polyglossia@set@other@language:ee {\xpg_alias_add_to_option_i:nn{#2}{#1}}
{\xpg_alias_base_lang:n{#2}}
- \exp_args:Nnx \seq_gput_right:Nn \__xpg_langs_loaded {#2}
+ \seq_gput_right:Ne \__xpg_langs_loaded {#2}
}
}
@@ -5999,7 +5797,7 @@ to track the issues and follow progress.
\polyglossia@set@lang@options:nnn {#2} {#1} {@xpg@other@langvariant}
\csgdef{#2@gvar}{\otherlanguagevariant}
- \prop_get:NxNT \polyglossia@langsetup {#2/babelname} \l_tmpa_tl
+ \prop_get:NeNT \polyglossia@langsetup {#2/babelname} \l_tmpa_tl
{ \xdef\otherlanguagebabelname{\l_tmpa_tl} }
\cs_gset_eq:cc{#2@gbabelname}{otherlanguagebabelname}
}
@@ -6017,9 +5815,10 @@ to track the issues and follow progress.
\gdef\otherlanguagevariant{#1}
}
-\newcommand\setotherlanguages[1]{
- \def\do##1{\setotherlanguage{##1}}
- \exp_args:Nx\docsvlist{#1}}
+\NewDocumentCommand \setotherlanguages { m }
+ {
+ \clist_map_function:eN { #1 } \setotherlanguage
+ }
\def\common@language{% FIXME is this really needed???
\ifbool{xpg@hyphenation@disabled}{
@@ -6040,9 +5839,13 @@ to track the issues and follow progress.
% where \text<alias> would cause clashes
% (e.g., \textit)
\newcommand\textlang[3][]{
- \xpg@str@lowercase{\xpg@tmp@lang}{#2}
- \__xpg_textlanguage:een {#1} {\xpg@tmp@lang} {#3}
-}%
+ \__xpg_textlanguage:een {#1} {#2} {#3}
+}
+
+% prevent the language tag in \textlang
+% (second argument) from being affected
+% inside case changing commands (e.g. \MakeUppercase)
+\tl_put_right:Nn \l_text_case_exclude_arg_tl { \textlang }
% Alias to {<lang>}, but more suitable
% for specific (esp. tag-based) aliases
@@ -6121,6 +5924,30 @@ to track the issues and follow progress.
\polyglossia@setforeignlanguage[#1]{#2}
}
+% Stack to store matrix languages
+\seq_new:N \__xpg_current_matrixlang_stack
+
+% Store embedding language when an embedded language is switched to
+\cs_new_nopar:Nn \__xpg_store_matrixlang:
+{
+ \seq_gput_left:Nn \__xpg_current_matrixlang_stack \languagename
+}
+
+% When an embedded language is closed, reset to the embedding language
+% and remove stored matrix language from stack
+\cs_new_nopar:Nn \__xpg_reset_to_matrixlang:
+{
+ % if stack is empty, use main language
+ \seq_gpop_left:NNTF \__xpg_current_matrixlang_stack \l_tmpa_tl
+ { \cs_set_eq:NN \__xpg_current_matrixlang \l_tmpa_tl }
+ { \cs_set_eq:NN \__xpg_current_matrixlang \mainlanguagename }
+ % Reset the language's/script's font families if the embedding script is latin
+ \str_if_eq:eeT{\prop_item:Ne{\polyglossia@langsetup}{\__xpg_current_matrixlang/lcscript}}{latin}
+ {\resetfontlatin}
+ % In case a \<lang>font is defined, re-activate that
+ \exp_args:Ne \xpg@set@normalfont{\__xpg_current_matrixlang}
+}
+
% internal wrapper for foreign language
% #1 option
% #2 alias
@@ -6132,10 +5959,12 @@ to track the issues and follow progress.
{
\msg_show:nnn { polyglossia } { languagenotloaded } {#2}
}{
+ \__xpg_store_matrixlang:
\group_begin:
\xpg@otherlanguage[\xpg_alias_add_to_option_i:nn{#2}{#1}]{#3}
\polyglossia@lang@settextdirection:nn{#3}{#4}
\group_end:
+ \__xpg_reset_to_matrixlang:
}
}
\cs_generate_variant:Nn \__xpg_foreignlanguage:nnnn {eeen}
@@ -6146,9 +5975,13 @@ to track the issues and follow progress.
\renewenvironment{otherlanguage*}[2][]
{%
+ \__xpg_store_matrixlang:
\__xpg_otherlanguage:eee {#1} {#2} {\xpg_alias_base_lang:n{#2}}
}
-{\egroup}
+{
+ \egroup
+ \__xpg_reset_to_matrixlang:
+}
% internal wrapper
% #1 option
@@ -6196,8 +6029,7 @@ to track the issues and follow progress.
\msg_show:nnn { polyglossia } { languagenotloaded } {#2}
}
{
- % Store embedding language name
- \global\let\xpg@save@languagename\languagename
+ \__xpg_store_matrixlang:
\group_begin:
\bool_set_true:N \__xpg_inline_lang
\xpg@otherlanguage[#1]{#3}
@@ -6207,11 +6039,7 @@ to track the issues and follow progress.
\cs_if_exist_use:c{date@bbl@\babelname}
\polyglossia@lang@settextdirection:nn{#3}{#4}
\group_end:
- % Reset the language's/script's font families if the embedding script is latin
- \str_if_eq:eeT{\prop_item:Ne{\polyglossia@langsetup}{\xpg@save@languagename/lcscript}}{latin}
- {\resetfontlatin}
- % In case a \<lang>font is defined, re-activate that
- \xpg@set@normalfont{\xpg@save@languagename}
+ \__xpg_reset_to_matrixlang:
}
}
\cs_generate_variant:Nn \__xpg_textlanguage:nnnn {nnen}
@@ -6273,7 +6101,7 @@ to track the issues and follow progress.
}
\sys_if_engine_luatex:T
{
- \directlua{polyglossia.select_language('\luatexluaescapestring{\string#3}',
+ \directlua{polyglossia.select_language('\luaescapestring{\string#3}',
\the\csname l@#3\endcsname)}
}
\polyglossia@register@language:nn{#2}{#3}
@@ -6418,36 +6246,28 @@ to track the issues and follow progress.
}
% Check if the current font has a given glyph
-\prg_set_conditional:Npnn \polyglossia@check@if@char@available:N #1 { p , T , F , TF }
-{
- \str_case_e:nnF{\c_sys_engine_str}{
- {luatex}{
- \int_compare:nNnTF { \directlua{polyglossia.check_char(0x#1)} } > { 0 }
- {\prg_return_true:}
- {\prg_return_false:}
- }
- {xetex}{
- \int_compare:nNnTF { \the\XeTeXcharglyph"#1 } > { 0 }
- {\prg_return_true:}
- {\prg_return_false:}
- }
- }
+\prg_new_conditional:Npnn \__polyglossia_if_char:N #1 { TF }
{
- \xpg@warning{You’re ~ running ~ a ~ TeX engine ~ that ~ is ~
- not ~ LuaTeX ~ or ~ XeTeX.\MessageBreak
- That~ is~ almost~ guaranteed~ to~ cause~ problems.}
- \prg_return_false:
+ \iffontchar\font\int_from_hex:n { #1 }~
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
}
-}
% Test if a char (by char code) is available in the current font
-\newcommand*\xpg@if@char@available[3]{
- \polyglossia@check@if@char@available:NTF{#1}{#2}{#3}
-}
+% and print it, if so, otherwise print the replacement #2
+\NewExpandableDocumentCommand \charifavailable { m m }
+ {
+ \exp_args:Nno \__polyglossia_if_char:NTF { #1 } { \Uchar"#1 } { #2 }
+ }
-\newcommand*\charifavailable[2]{
- \xpg@if@char@available{#1}{\char"#1}{#2}
-}
+% Test if a char (by char code) is available in the current font
+% if so, do #2, else do #3
+\NewDocumentCommand \IfCharIsAvailableTF { m m m }
+ {
+ \__polyglossia_if_char:NTF{#1}{#2}{#3}
+ }
\newcommand*{\xpg@set@language@nonaux}[2][]{
@@ -6582,24 +6402,10 @@ to track the issues and follow progress.
% Set hyphenation patterns for a given language. This does the right
% thing both for XeTeX and LuaTeX
\newcommand*\xpg@set@hyphenation@patterns[1]{
- \str_case_e:nnF{\c_sys_engine_str}{
- {luatex}
- {
- \polyglossia@luatex@load@lang{#1}
- \language=\csname l@#1\endcsname
- }
- {xetex}
- {
- \language=\csname l@#1\endcsname
- }
- }
- {
- \xpg@warning{You’re~running~a~TeX~engine~that~is~not~LuaTeX~or~XeTeX.\MessageBreak
- That~is~almost~guaranteed~to~cause~problems.}
- }
+ \sys_if_engine_luatex:T { \polyglossia@luatex@load@lang{#1} }
+ \language=\csname l@#1\endcsname
}
-
\newcommand*\@select@language[2][]{
% hook for compatibility with biblatex
\select@language{#2}
@@ -6617,7 +6423,7 @@ to track the issues and follow progress.
\cs_if_exist_use:c{date@bbl@\babelname}
\polyglossia@local@marks:n{#2}
\csuse{init@extras@#2}%
- \polyglossia@lang@indentfirst:n{#2}
+ \xpg__indent_first:n { #2 }
\csuse{blockextras@#2}%
% This is a hook for external packages which want to access variants
% via babelname (such as biblatex)
@@ -6676,14 +6482,12 @@ to track the issues and follow progress.
\__xpg_use_or_warn:c{#2@language}
\cs_if_exist_use:c{#2@numbers}
\use@localhyphenmins[#1]{#2}
- \polyglossia@lang@frenchspacing:n{#2}
+ \xpg__french_spacing:n { #2 }
}
\let\xpg@pop@language\relax
-\provideenvironment{otherlanguage}{}{}
-
%
% Keep track of the active (nested) languages and options
%
@@ -6696,13 +6500,11 @@ to track the issues and follow progress.
\cs_generate_variant:Nn \polyglossia@stack@language:nn {nx}
-\cs_generate_variant:Nn \seq_set_split:Nnn {Nnx}
-
\cs_new:Nn \polyglossia@unstack@language:n
{
\clist_gpop:NNTF \l_xpg_lang_stack \l_tmpa_tl {
% Stored format = options:language => split:
- \seq_set_split:Nnx \l_tmpa_seq {:} \l_tmpa_tl
+ \seq_set_split:Nne \l_tmpa_seq {:} \l_tmpa_tl
\seq_get_left:NN \l_tmpa_seq \l_tmpb_tl
\seq_get_right:NN \l_tmpa_seq \l_tmpc_tl
% Execute passed command with language and maybe options
@@ -6715,22 +6517,22 @@ to track the issues and follow progress.
{}
}
-\renewenvironment{otherlanguage}[2][]
-{
- % Get real current (pre-switch) options (incl. defaults)
- \clist_clear_new:N \l_xpg_current_options
- \prop_map_inline:cn {xpg@current@options@\languagename}
+\DeclareDocumentEnvironment { otherlanguage } { O{} m }
{
- \clist_put_right:Nn \l_xpg_current_options {##1=##2}
+ % Get real current (pre-switch) options (incl. defaults)
+ \clist_clear_new:N \l_xpg_current_options
+ \prop_map_inline:cn {xpg@current@options@\languagename}
+ {
+ \clist_put_right:Nn \l_xpg_current_options {##1=##2}
+ }
+ % Store current (pre-switch) options and language on stack
+ \polyglossia@stack@language:nx{\clist_use:Nn \l_xpg_current_options {,}}{\languagename}
+ \selectlanguage[#1]{#2}
+ }
+ {
+ % restore previous language in aux file and remove closed one from stack
+ \polyglossia@unstack@language:n{xpg@set@language@only@aux}
}
- % Store current (pre-switch) options and language on stack
- \polyglossia@stack@language:nx{\clist_use:Nn \l_xpg_current_options {,}}{\languagename}
- \selectlanguage[#1]{#2}
-}
-{
- % restore previous language in aux file and remove closed one from stack
- \polyglossia@unstack@language:n{xpg@set@language@only@aux}
-}
\newcommand{\setlocalhyphenmins}[3]{
\xpg@ifdefined{#1}{
@@ -6793,7 +6595,7 @@ to track the issues and follow progress.
}
\sys_if_engine_luatex:T{
% Set \totalhyphenmin if specified
- \prop_get:NxNTF \polyglossia@langsetup {#2/totalhyphenmin} \l_tmpa_tl
+ \prop_get:NeNTF \polyglossia@langsetup {#2/totalhyphenmin} \l_tmpa_tl
{
\xpg@info{totalhyphenmin: '\l_tmpa_tl'}
\expandafter\hyphenationmin \l_tmpa_tl
@@ -6805,25 +6607,23 @@ to track the issues and follow progress.
% Babel previously compiled in hyphenrules into the kernel (via hyphen.cfg)
% but this is no longer the case. In any case, we roll our own one now
% and possibly overwrite babel's.
-\provideenvironment{hyphenrules}{}{}
-
% As opposed to the one inherited from switch.def/babel, our environment
% supports language options and aliases.
-\renewenvironment{hyphenrules}[2][]
-{
- % Check for real language name and options
- \edef\xpg@tmp@opts{\xpg_alias_add_to_option_i:nn{#2}{#1}}
- \edef\xpg@tmp@lang{\xpg_alias_base_lang:n{#2}}
- % Register the language options
- \polyglossia@set@lang@options:nnn {\xpg@tmp@lang} {\xpg@tmp@opts} {@xpg@set@langvariant}
- % Now switch patterns
- \__xpg_use_or_warn:c{\use:c{xpg@tmp@lang}@language}
- % And activate hyphenmins
- \use@localhyphenmins[\xpg@tmp@opts]{\xpg@tmp@lang}
-}
-{}
+\DeclareDocumentEnvironment { hyphenrules } { O{} m }
+ {
+ % Check for real language name and options
+ \edef\xpg@tmp@opts{\xpg_alias_add_to_option_i:nn{#2}{#1}}
+ \edef\xpg@tmp@lang{\xpg_alias_base_lang:n{#2}}
+ % Register the language options
+ \polyglossia@set@lang@options:nnn {\xpg@tmp@lang} {\xpg@tmp@opts} {@xpg@set@langvariant}
+ % Now switch patterns
+ \__xpg_use_or_warn:c{\use:c{xpg@tmp@lang}@language}
+ % And activate hyphenmins
+ \use@localhyphenmins[\xpg@tmp@opts]{\xpg@tmp@lang}
+ }
+ { }
-\AtEndPreamble{
+\AddToHook{begindocument/before}{
\@ifpackageloaded{bidi}{
\providecommand*{\aemph}[1]{$\overline{\hboxR{#1}}$}
}{}
@@ -6872,7 +6672,7 @@ to track the issues and follow progress.
% load by default latex
\setmainlanguage{latex}
% then process key in order to overwrite
-\ProcessKeysOptions{polyglossia}
+\ProcessKeyOptions[polyglossia]
% Set the LuaTeX renderer. As opposed to fontspec, we use Harfbuzz by default.
% This can be changed via the luatexrenderer package option.
@@ -6933,7 +6733,6 @@ to track the issues and follow progress.
\def\xpg@option#1#2{
\ifcsundef{xpg@main@language}{\setdefaultlanguage}{\setotherlanguage}
[#1]{#2}}
-\ExplSyntaxOff
% \end{macrocode}
% \iffalse
@@ -7642,7 +7441,7 @@ Shawwāl\or Dhū ’l-Qaʿda\or Dhū ’l-Ḥijja\fi}
% \begin{macrocode}
--
-- polyglossia-punct.lua
--- part of polyglossia v1.65 -- 2023/10/01
+-- part of polyglossia v1.66 -- 2023/12/11
--
require('polyglossia-punct')
@@ -7709,7 +7508,7 @@ polyglossia.deactivate_french_punct = deactivate_french_punct
% \begin{macrocode}
--
-- polyglossia-korean.lua
--- part of polyglossia v1.65 -- 2023/10/01
+-- part of polyglossia v1.66 -- 2023/12/11
--
local glyph_id = node.id"glyph"
@@ -8327,7 +8126,7 @@ prepend_to_callback ("hpack_filter",
% \begin{macrocode}
--
-- polyglossia-latin.lua
--- part of polyglossia v1.65 -- 2023/10/01
+-- part of polyglossia v1.66 -- 2023/12/11
--
require('polyglossia-punct')
@@ -8382,7 +8181,7 @@ polyglossia.deactivate_latin_punct = deactivate_latin_punct
% \begin{macrocode}
--
-- polyglossia-punct.lua
--- part of polyglossia v1.65 -- 2023/10/01
+-- part of polyglossia v1.66 -- 2023/12/11
--
require('polyglossia') -- just in case...
@@ -8750,7 +8549,7 @@ polyglossia.clear_spaced_characters = clear_spaced_characters
% \begin{macrocode}
--
-- polyglossia-sanskrit.lua
--- part of polyglossia v1.65 -- 2023/10/01
+-- part of polyglossia v1.66 -- 2023/12/11
--
require('polyglossia-punct')
@@ -8800,7 +8599,7 @@ polyglossia.deactivate_sanskrit_punct = deactivate_sanskrit_punct
% \begin{macrocode}
--
-- polyglossia-tibt.lua
--- part of polyglossia v1.65 -- 2023/10/01
+-- part of polyglossia v1.66 -- 2023/12/11
--
require('polyglossia') -- just in case...
@@ -8903,7 +8702,7 @@ polyglossia.desactivate_tibt_eol = desactivate
% \begin{macrocode}
--
-- polyglossia.lua
--- part of polyglossia v1.65 -- 2023/10/01
+-- part of polyglossia v1.66 -- 2023/12/11
--
local module_name = "polyglossia"
@@ -8937,34 +8736,6 @@ 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
@@ -9084,7 +8855,6 @@ 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
@@ -10256,9 +10026,9 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-latex.lde}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
-\ProvidesLanguageDefinitionExtension{gloss-latex}{2023/10/01}{v1.65}{polyglossia: module for default language}
+\ProvidesLanguageDefinitionExtension{gloss-latex}{2023/12/11}{v1.66}{polyglossia: module for default language}
\PolyglossiaSetup{latex}{
bcp47=en-US,
@@ -10306,7 +10076,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-acadien.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-acadien.ldf}[polyglossia: module for Canadian (Acadian) French]
@@ -10323,7 +10093,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-aeb.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-aeb.ldf}[polyglossia: module for aeb (Arabic)]
@@ -10340,7 +10110,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-af.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-af.ldf}[polyglossia: module for af (Afrikaans)]
@@ -10357,7 +10127,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-afb.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-afb.ldf}[polyglossia: module for afb (Arabic)]
@@ -10374,7 +10144,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-afrikaans.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-afrikaans.ldf}[polyglossia: module for Afrikaans]
@@ -10479,7 +10249,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-albanian.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-albanian.ldf}[polyglossia: module for Albanian]
@@ -10536,7 +10306,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-am.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-am.ldf}[polyglossia: module for am (Amharic)]
@@ -10553,7 +10323,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-american.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-american.ldf}[polyglossia: module for American English]
@@ -10570,7 +10340,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-amharic.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-amharic.ldf}[polyglossia: module for Amharic]
\PolyglossiaSetup{amharic}{
@@ -10790,7 +10560,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-apd.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-apd.ldf}[polyglossia: module for apd (Arabic)]
@@ -10807,7 +10577,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-ar-IQ.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-ar-IQ.ldf}[polyglossia: module for ar-IQ (Arabic)]
@@ -10826,7 +10596,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-ar-JO.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-ar-JO.ldf}[polyglossia: module for ar-JO (Arabic)]
@@ -10845,7 +10615,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-ar-LB.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-ar-LB.ldf}[polyglossia: module for ar-LB (Arabic)]
@@ -10864,7 +10634,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-ar-MR.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-ar-MR.ldf}[polyglossia: module for ar-MR (Arabic)]
@@ -10883,7 +10653,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-ar-PS.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-ar-PS.ldf}[polyglossia: module for ar-PS (Arabic)]
@@ -10902,7 +10672,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-ar-SY.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-ar-SY.ldf}[polyglossia: module for ar-SY (Arabic)]
@@ -10921,7 +10691,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-ar-YE.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-ar-YE.ldf}[polyglossia: module for ar-YE (Arabic)]
@@ -10940,7 +10710,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-ar.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-ar.ldf}[polyglossia: module for ar (Arabic)]
@@ -10957,7 +10727,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-arabic.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-arabic.ldf}[polyglossia: module for Arabic]
\RequireBidi
@@ -11347,7 +11117,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-armenian.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-armenian.ldf}[polyglossia: module for Armenian]
@@ -11555,7 +11325,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-arq.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-arq.ldf}[polyglossia: module for arq (Arabic)]
@@ -11572,7 +11342,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-ary.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-ary.ldf}[polyglossia: module for ary (Arabic)]
@@ -11589,7 +11359,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-arz.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-arz.ldf}[polyglossia: module for arz (Arabic)]
@@ -11606,7 +11376,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-ast.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-ast.ldf}[polyglossia: module for ast (Asturian)]
@@ -11623,7 +11393,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-asturian.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
% Translated by Xuacu <xuacusk8 at gmail dot com>
% Contributed by Kevin Godby <godbyk at gmail dot com>
@@ -11683,7 +11453,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-australian.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-australian.ldf}[polyglossia: module for Australian English]
@@ -11700,7 +11470,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-austrian.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-austrian.ldf}[polyglossia: module for Austrian German (old spelling)]
@@ -11717,7 +11487,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-ayl.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-ayl.ldf}[polyglossia: module for ayl (Arabic)]
@@ -11734,7 +11504,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-bahasa.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-bahasa.ldf}[polyglossia: module for Bahasa Indonesia]
@@ -11751,7 +11521,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-bahasai.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-bahasai.ldf}[polyglossia: module for Bahasa Indonesia]
@@ -11769,7 +11539,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-bahasam.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-bahasam.ldf}[polyglossia: module for Bahasa Melayu]
@@ -11787,7 +11557,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-basque.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-basque.ldf}[polyglossia: module for Basque]
\PolyglossiaSetup{basque}{
@@ -11845,7 +11615,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-be-tarask.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-be-tarask.ldf}[polyglossia: module for be-tarask (Belarusian)]
@@ -11862,7 +11632,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-be.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-be.ldf}[polyglossia: module for be (Belarusian)]
@@ -11879,7 +11649,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-belarusian.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-belarusian.ldf}[polyglossia: module for Belarusian]
@@ -12207,7 +11977,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-bengali.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
% Translations provided by সাজেদুর রহিম জোয়ারদার <toshazed@gmail.com>
% TODO implement Bengali calendar
@@ -12348,7 +12118,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-bg.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-bg.ldf}[polyglossia: module for bg (Bulgarian)]
@@ -12365,7 +12135,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-bn.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-bn.ldf}[polyglossia: module for bn (Bengali)]
@@ -12382,7 +12152,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-bo.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-bo.ldf}[polyglossia: module for bo (Tibetan)]
@@ -12399,7 +12169,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-bosnian.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-bosnian.ldf}[polyglossia: module for Bosnian]
@@ -12463,7 +12233,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-br.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-br.ldf}[polyglossia: module for br (Breton)]
@@ -12480,7 +12250,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-brazil.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-brazil.ldf}[polyglossia: module for Brazilian Portuguese]
@@ -12499,7 +12269,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-breton.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-breton.ldf}[polyglossia: module for Breton]
\PolyglossiaSetup{breton}{
@@ -12607,7 +12377,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-british.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-british.ldf}[polyglossia: module for British English]
@@ -12624,7 +12394,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-bs.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-bs.ldf}[polyglossia: module for bs (Bosnian)]
@@ -12641,7 +12411,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-bulgarian.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-bulgarian.ldf}[polyglossia: module for Bulgarian]
\PolyglossiaSetup{bulgarian}{
@@ -12743,7 +12513,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-ca.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-ca.ldf}[polyglossia: module for ca (Catalan)]
@@ -12760,7 +12530,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-canadian.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-canadian.ldf}[polyglossia: module for Canadian English]
@@ -12777,7 +12547,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-canadien.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-canadien.ldf}[polyglossia: module for Canadian French]
@@ -12794,7 +12564,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-catalan.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-catalan.ldf}[polyglossia: module for Catalan]
\PolyglossiaSetup{catalan}{
@@ -12842,7 +12612,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
\else
\leftllkern=0pt\rightllkern=0pt\raiselldim=0pt%
\setbox0\hbox{l}%
- \xpg@if@char@available{00B7}%
+ \IfCharIsAvailableTF{00B7}%
{\setbox2\hbox{\char"00B7}\setbox1\hbox{l}}%
{\setbox2\hbox{.}\setbox1\hbox{l\/}}%
\setbox3\hbox{.}%
@@ -12870,7 +12640,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
\else
\leftllkern=0pt\rightllkern=0pt\raiselldim=0pt%
\setbox0\hbox{L}%
- \xpg@if@char@available{00B7}%
+ \IfCharIsAvailableTF{00B7}%
{\setbox2\hbox{\char"00B7}\setbox1\hbox{L}}%
{\setbox2\hbox{.}\setbox1\hbox{L\/}}%
\setbox3\hbox{.}%
@@ -12963,7 +12733,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-chinese.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-chinese.ldf}[polyglossia: module for Chinese]
@@ -12974,7 +12744,8 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
bcp47-script=Hans,
script=CJK,
scripttag=hani,
- language=Chinese,
+ language={Chinese Simplified},
+ langtag=ZHS,
hyphennames={nohyphenation},
frenchspacing=false,
fontsetup=true,
@@ -13005,22 +12776,22 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
\ifcase\xpg@nr\relax
% cn:
\chinese@traditionalfalse
- \SetLanguageKeys{chinese}{bcp47=zh-CN,bcp47-language=zh,bcp47-region=CN,bcp47-script=Hans}%
+ \SetLanguageKeys{chinese}{language={Chinese Simplified},langtag=ZHS,bcp47=zh-CN,bcp47-language=zh,bcp47-region=CN,bcp47-script=Hans}%
\xpg@info{Option: Chinese, variant=simplified}%
\or
% simplified:
\chinese@traditionalfalse
- \SetLanguageKeys{chinese}{bcp47=zh-CN,bcp47-language=zh,bcp47-region=CN,bcp47-script=Hans}%
+ \SetLanguageKeys{chinese}{language={Chinese Simplified},langtag=ZHS,bcp47=zh-CN,bcp47-language=zh,bcp47-region=CN,bcp47-script=Hans}%
\xpg@info{Option: Chinese, variant=simplified}%
\or
% tw:
\chinese@traditionaltrue
- \SetLanguageKeys{chinese}{bcp47=zh-TW,bcp47-language=zh,bcp47-region=TW,bcp47-script=Hant}%
+ \SetLanguageKeys{chinese}{language={Chinese Traditional},langtag=ZHT,bcp47=zh-TW,bcp47-language=zh,bcp47-region=TW,bcp47-script=Hant}%
\xpg@info{Option: Chinese, variant=traditional}%
\or
% traditional:
\chinese@traditionaltrue
- \SetLanguageKeys{chinese}{bcp47=zh-TW,bcp47-language=zh,bcp47-region=TW,bcp47-script=Hant}%
+ \SetLanguageKeys{chinese}{language={Chinese Traditional},langtag=ZHT,bcp47=zh-TW,bcp47-language=zh,bcp47-region=TW,bcp47-script=Hant}%
\xpg@info{Option: Chinese, variant=traditional}%
\fi
}{\xpg@warning{Unknown Chinese variant `#1'}}
@@ -13253,7 +13024,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-ckb-Arab.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-ckb-Arab.ldf}[polyglossia: module for ckb-Arab (Kurdish)]
@@ -13270,7 +13041,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-ckb-Latn.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-ckb-Latn.ldf}[polyglossia: module for ckb-Latn (Kurdish)]
@@ -13287,7 +13058,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-ckb.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-ckb.ldf}[polyglossia: module for ckb (Kurdish)]
@@ -13304,7 +13075,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-cop.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-cop.ldf}[polyglossia: module for cop (Coptic)]
@@ -13321,7 +13092,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-coptic.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-coptic.ldf}[polyglossia: module for Coptic]
\PolyglossiaSetup{coptic}{
@@ -13377,7 +13148,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-croatian.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-croatian.ldf}[polyglossia: module for Croatian]
\PolyglossiaSetup{croatian}{
@@ -13653,7 +13424,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-cy.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-cy.ldf}[polyglossia: module for cy (Welsh)]
@@ -13670,7 +13441,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-cz.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-cz.ldf}[polyglossia: module for cz (Czech)]
@@ -13687,7 +13458,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-czech.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-czech.ldf}[polyglossia: module for Czech]
@@ -13946,7 +13717,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-da.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-da.ldf}[polyglossia: module for da (Danish)]
@@ -13963,7 +13734,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-danish.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-danish.ldf}[polyglossia: module for Danish]
\PolyglossiaSetup{danish}{
@@ -14020,7 +13791,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-de-AT-1901.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-de-AT-1901.ldf}[polyglossia: module for de-AT-1901 (Austrian German, old spelling)]
@@ -14037,7 +13808,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-de-AT-1996.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-de-AT-1996.ldf}[polyglossia: module for de-AT-1996 (Austrian German)]
@@ -14054,7 +13825,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-de-AT.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-de-AT.ldf}[polyglossia: module for de-AT (Austrian German)]
@@ -14071,7 +13842,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-de-CH-1901.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-de-CH-1901.ldf}[polyglossia: module for de-CH-1901 (Swiss German, old spelling)]
@@ -14088,7 +13859,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-de-CH-1996.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-de-CH-1996.ldf}[polyglossia: module for de-CH-1996 (Swiss German)]
@@ -14105,7 +13876,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-de-CH.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-de-CH.ldf}[polyglossia: module for de-CH (Swiss German)]
@@ -14122,7 +13893,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-de-DE-1901.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-de-DE-1901.ldf}[polyglossia: module for de-DE-1901 (Germany's German, old spelling)]
@@ -14139,7 +13910,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-de-DE-1996.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-de-DE-1996.ldf}[polyglossia: module for de-DE-1996 (Germany's German)]
@@ -14156,7 +13927,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-de-DE.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-de-DE.ldf}[polyglossia: module for de-DE (Germany's German)]
@@ -14173,7 +13944,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-de-Latf-AT-1901.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-de-AT-1901-Latf.ldf}[polyglossia: module for de-AT-1901-Latf (Austrian German, old spelling)]
@@ -14190,7 +13961,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-de-Latf-AT-1996.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-de-AT-1996-Latf.ldf}[polyglossia: module for de-AT-1996-Latf (Austrian German)]
@@ -14207,7 +13978,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-de-Latf-AT.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-de-AT-Latf.ldf}[polyglossia: module for de-AT-Latf (Austrian German)]
@@ -14224,7 +13995,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-de-Latf-CH-1901.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-de-CH-1901-Latf.ldf}[polyglossia: module for de-CH-1901-Latf (Swiss German, old spelling)]
@@ -14241,7 +14012,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-de-Latf-CH-1996.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-de-CH-1996-Latf.ldf}[polyglossia: module for de-CH-1996-Latf (Swiss German)]
@@ -14258,7 +14029,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-de-Latf-CH.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-de-CH-Latf.ldf}[polyglossia: module for de-CH-Latf (Swiss German)]
@@ -14275,7 +14046,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-de-Latf-DE-1901.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-de-DE-1901-Latf.ldf}[polyglossia: module for de-DE-1901-Latf (Germany's German, old spelling)]
@@ -14292,7 +14063,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-de-Latf-DE-1996.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-de-DE-1996-Latf.ldf}[polyglossia: module for de-DE-1996-Latf (Germany's German)]
@@ -14309,7 +14080,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-de-Latf-DE.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-de-DE-Latf.ldf}[polyglossia: module for de-DE-Latf (Germany's German)]
@@ -14326,7 +14097,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-de-Latf.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-de-Latf.ldf}[polyglossia: module for de-Latf (German)]
@@ -14343,7 +14114,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-de.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-de.ldf}[polyglossia: module for de (German)]
@@ -14360,7 +14131,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-divehi.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-divehi.ldf}[polyglossia: module for Divehi]
@@ -14415,7 +14186,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-dsb.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-dsb.ldf}[polyglossia: module for dsb (Sorbian)]
@@ -14432,7 +14203,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-dutch.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-dutch.ldf}[polyglossia: module for Dutch]
\PolyglossiaSetup{dutch}{
@@ -14642,7 +14413,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-dv.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-dv.ldf}[polyglossia: module for dv (Divehi)]
@@ -14659,7 +14430,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-el-monoton.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-el-monoton.ldf}[polyglossia: module for el-monoton (Greek)]
@@ -14676,7 +14447,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-el-polyton.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-el-polyton.ldf}[polyglossia: module for el-polyton (Greek)]
@@ -14693,7 +14464,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-el.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-el.ldf}[polyglossia: module for el (Greek)]
@@ -14710,7 +14481,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-en-AU.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-en-AU.ldf}[polyglossia: module for en-AU (Australian English)]
@@ -14727,7 +14498,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-en-CA.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-en-CA.ldf}[polyglossia: module for en-CA (Canadan English)]
@@ -14744,7 +14515,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-en-GB.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-en-GB.ldf}[polyglossia: module for en-GB (British English)]
@@ -14761,7 +14532,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-en-NZ.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-en-NZ.ldf}[polyglossia: module for en-NZ (Newzealand English)]
@@ -14778,7 +14549,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-en-US.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-en-US.ldf}[polyglossia: module for en-US (American English)]
@@ -14795,7 +14566,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-en.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-en.ldf}[polyglossia: module for en (English)]
@@ -14812,7 +14583,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-english.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-english.ldf}[polyglossia: module for English]
@@ -15023,7 +14794,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-eo.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-eo.ldf}[polyglossia: module for eo (Esperanto)]
@@ -15040,7 +14811,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-es-ES.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-es-ES.ldf}[polyglossia: module for es-ES (Spain's Spanish)]
@@ -15057,7 +14828,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-es-MX.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-es-MX.ldf}[polyglossia: module for es-MX (Mexican Spanish)]
@@ -15074,7 +14845,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-es.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-es.ldf}[polyglossia: module for es (Spanish)]
@@ -15091,7 +14862,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-esperanto.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-esperanto.ldf}[polyglossia: module for Esperanto]
\PolyglossiaSetup{esperanto}{
@@ -15171,7 +14942,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-estonian.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-estonian.ldf}[polyglossia: module for Estonian]
\PolyglossiaSetup{estonian}{
@@ -15228,7 +14999,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-et.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-et.ldf}[polyglossia: module for et (Estonian)]
@@ -15245,7 +15016,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-eu.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-eu.ldf}[polyglossia: module for eu (Basque)]
@@ -15262,7 +15033,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-fa.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-fa.ldf}[polyglossia: module for fa (Persian)]
@@ -15279,7 +15050,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-farsi.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-farsi.ldf}[polyglossia: module for Farsi]
@@ -15297,7 +15068,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-fi.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-fi.ldf}[polyglossia: module for fi (Finnish)]
@@ -15314,7 +15085,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-finnish.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-finnish.ldf}[polyglossia: module for Finnish]
\PolyglossiaSetup{finnish}{
@@ -15434,7 +15205,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-fr-CA-u-sd-canb.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-fr-CA-u-sd-canb.ldf}[polyglossia: module for fr-CA-u-sd-canb (Canadian French, Acadian subvariety)]
@@ -15451,7 +15222,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-fr-CA.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-fr-CA.ldf}[polyglossia: module for fr-CA (Canadian French)]
@@ -15468,7 +15239,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-fr-CH.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-fr-CH.ldf}[polyglossia: module for fr-CH (Swiss French)]
@@ -15485,7 +15256,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-fr-FR.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-fr-FR.ldf}[polyglossia: module for fr-FR (France's French)]
@@ -15502,7 +15273,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-fr.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-fr.ldf}[polyglossia: module for fr (French)]
@@ -15519,7 +15290,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-french.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-french.ldf}[polyglossia: module for French]
@@ -16065,7 +15836,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-friulan.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-friulan.ldf}[polyglossia: module for Friulian]
@@ -16082,7 +15853,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-friulian.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-friulian.ldf}[polyglossia: module for Friulian]
@@ -16168,7 +15939,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-fur.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-fur.ldf}[polyglossia: module for fur (Friulian)]
@@ -16185,7 +15956,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-ga.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-ga.ldf}[polyglossia: module for ga (Gaelic)]
@@ -16202,7 +15973,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-gaelic.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-gaelic.ldf}[polyglossia: module for Gaelic]
@@ -16332,7 +16103,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-galician.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-galician.ldf}[polyglossia: module for Galician]
\PolyglossiaSetup{galician}{
@@ -16389,7 +16160,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-gd.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-gd.ldf}[polyglossia: module for gd (Gaelic)]
@@ -16406,7 +16177,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-georgian.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-georgian.ldf}[polyglossia: module for Georgian]
@@ -16654,7 +16425,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-german.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-german.ldf}[polyglossia: module for German]
@@ -17003,7 +16774,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-germanb.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-germanb.ldf}[polyglossia: module for German (old spelling)]
@@ -17020,7 +16791,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-gl.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-gl.ldf}[polyglossia: module for gl (Galician)]
@@ -17037,7 +16808,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-grc.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-grc.ldf}[polyglossia: module for grc (Greek)]
@@ -17054,7 +16825,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-greek.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-greek.ldf}[polyglossia: module for Greek]
@@ -17522,7 +17293,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-he.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-he.ldf}[polyglossia: module for he (Hebrew)]
@@ -17539,7 +17310,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-hebrew.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-hebrew.ldf}[polyglossia: module for Hebrew]
@@ -17713,7 +17484,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-hi.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-hi.ldf}[polyglossia: module for hi (Hindi)]
@@ -17730,7 +17501,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-hindi.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
% UTF-8 strings kindly provided by Zdenĕk Wagner, 10-03-2008
% with corrections and additional contributions by Anshuman Pandey
@@ -17849,7 +17620,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-hr.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-hr.ldf}[polyglossia: module for hr (Croatian)]
@@ -17866,7 +17637,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-hsb.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-hsb.ldf}[polyglossia: module for hsb (Higher Sorbian)]
@@ -17883,7 +17654,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-hu.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-hu.ldf}[polyglossia: module for hu (Hungarian)]
@@ -17900,7 +17671,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-hungarian.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-hungarian.ldf}[polyglossia: module for Hungarian]
@@ -18299,7 +18070,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-hy.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-hy.ldf}[polyglossia: module for hy (Armenian)]
@@ -18316,7 +18087,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-ia.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-ia.ldf}[polyglossia: module for ia (Interlingua)]
@@ -18333,7 +18104,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-icelandic.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-icelandic.ldf}[polyglossia: module for Icelandic]
\PolyglossiaSetup{icelandic}{
@@ -18391,7 +18162,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-id.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-id.ldf}[polyglossia: module for id (Malay)]
@@ -18408,7 +18179,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-interlingua.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-interlingua.ldf}[polyglossia: module for Interlingua]
\PolyglossiaSetup{interlingua}{
@@ -18466,7 +18237,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-irish.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-irish.ldf}[polyglossia: module for Irish]
@@ -18484,7 +18255,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-is.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-is.ldf}[polyglossia: module for is (Icelandic)]
@@ -18501,7 +18272,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-it.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-it.ldf}[polyglossia: module for it (Italian)]
@@ -18519,7 +18290,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
% \subsection{gloss-italian.ldf}
% \begin{macrocode}
% !TEX encoding = UTF-8 Unicode
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-italian.ldf}[polyglossia: module for Italian]
\PolyglossiaSetup{italian}{
@@ -18671,7 +18442,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-ja.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-ja.ldf}[polyglossia: module for ja (Japanese)]
@@ -18688,7 +18459,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-japanese.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-japanese.ldf}[polyglossia: module for Japanese]
@@ -18926,7 +18697,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-ka.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-ka.ldf}[polyglossia: module for ka (Georgian)]
@@ -18944,7 +18715,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
% \subsection{gloss-kannada.ldf}
% \begin{macrocode}
%% gloss-kannada.ldf
-%% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+%% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%%
%% Copyright 2011 Aravinda VK <hallimanearavind AT gmail.com>,
%% Shankar Prasad <prasad.mvs AT gmail.com>,
@@ -19067,7 +18838,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-khmer.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-khmer.ldf}[polyglossia: module for Khmer]
\PolyglossiaSetup{khmer}{
@@ -19082,6 +18853,10 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
fontsetup=true,%
localnumeral=khmernumerals%
}
+
+% BCP-47 compliant aliases
+\setlanguagealias*{khmer}{km}
+
\newif\if@khmer@numerals
\def\tmp@khmer{khmer}
\define@key{khmer}{numerals}[arabic]{%
@@ -19094,7 +18869,9 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
\SetLanguageKeys{khmer}{bcp47-extension-u=nu-latn}%
\fi%
}
+
\setkeys{khmer}{numerals}
+
\def\captionskhmer{%
\def\prefacename{អារម្ភកថា}%
\def\refname{ឯកសារយោង}%
@@ -19244,7 +19021,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-km.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-km.ldf}[polyglossia: module for km (Khmer)]
@@ -19261,7 +19038,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-kmr-Arab.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-kmr-Arab.ldf}[polyglossia: module for kmr-Arab (Kurdish)]
@@ -19278,7 +19055,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-kmr-Latn.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-kmr-Latn.ldf}[polyglossia: module for kmr-Latn (Kurdish)]
@@ -19295,7 +19072,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-kmr.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-kmr.ldf}[polyglossia: module for kmr (Kurdish)]
@@ -19312,7 +19089,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-kn.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-kn.ldf}[polyglossia: module for kn (Kannada)]
@@ -19329,7 +19106,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-ko.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-ko.ldf}[polyglossia: module for ko (Korean)]
@@ -19346,7 +19123,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-korean.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-korean.ldf}[polyglossia: module for Korean]
@@ -19826,7 +19603,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-ku-Arab.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-ku-Arab.ldf}[polyglossia: module for ku-Arab (Kurdish)]
@@ -19843,7 +19620,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-ku-Latn.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-ku-Latn.ldf}[polyglossia: module for ku-Latn (Kurdish)]
@@ -19860,7 +19637,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-ku.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-ku.ldf}[polyglossia: module for ku (Kurdish)]
@@ -19877,7 +19654,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-kurdish.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
% Created on September 1, 2019
% Last updated on May 17, 2020
@@ -20239,7 +20016,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
\if@western@numerals
\number#1%
\else
- \xpg@if@char@available{06F0}%
+ \IfCharIsAvailableTF{06F0}%
{\@ensure@LTR{\farsidigits{\number#1}}}%
{\@ensure@LTR{\arabicdigits{\number#1}}}%
\fi
@@ -20374,7 +20151,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-kurmanji.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-kurmanji.ldf}[polyglossia: module for Kurmanji Kurdish]
@@ -20391,7 +20168,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-la-x-classic.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-la-xclassic.ldf}[polyglossia: module for la-xclassic (Latin)]
@@ -20408,7 +20185,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-la-x-ecclesia.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-la-xecclesiastic.ldf}[polyglossia: module for la-xecclesiastic (Latin)]
@@ -20425,7 +20202,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-la-x-medieval.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-la-xmedieval.ldf}[polyglossia: module for la-xmedieval (Latin)]
@@ -20442,7 +20219,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-la.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-la.ldf}[polyglossia: module for la (Latin)]
@@ -20459,7 +20236,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-lao.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-lao.ldf}[polyglossia: module for Lao]
@@ -20570,7 +20347,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-latin.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-latin.ldf}[polyglossia: module for Latin]
@@ -21685,7 +21462,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-latinclassic.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-latinclassic.ldf}[polyglossia: module for classic Latin]
@@ -21702,7 +21479,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-latinecclesiastic.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-latinecclesiastic.ldf}[polyglossia: module for ecclesiastic Latin]
@@ -21719,7 +21496,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-latinmedieval.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-latinmedieval.ldf}[polyglossia: module for medieval Latin]
@@ -21736,7 +21513,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-latvian.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-latvian.ldf}[polyglossia: module for Latvian]
\PolyglossiaSetup{latvian}{
@@ -21794,7 +21571,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-lithuanian.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
% Translated by Paulius Sladkevičius <komsas@gmail.com>
@@ -21876,7 +21653,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-lo.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-lo.ldf}[polyglossia: module for lo (Lao)]
@@ -21893,7 +21670,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-lowersorbian.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-lowersorbian.ldf}[polyglossia: module for Lower Sorbian]
@@ -21910,7 +21687,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-lsorbian.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-lsorbian.ldf}[polyglossia: module for Lower Sorbian]
@@ -21928,7 +21705,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-lt.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-lt.ldf}[polyglossia: module for lt (Lithuanian)]
@@ -21945,7 +21722,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-lv.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-lv.ldf}[polyglossia: module for lv (Latvian)]
@@ -21962,7 +21739,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-macedonian.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-macedonian.ldf}[polyglossia: module for Macedonian]
\PolyglossiaSetup{macedonian}{
@@ -22061,7 +21838,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-magyar.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-magyar.ldf}[polyglossia: module for Hungarian (Magyar)]
@@ -22078,7 +21855,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-malay.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-malay.ldf}[polyglossia: module for Malay]
@@ -22277,7 +22054,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-malayalam.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-malayalam.ldf}[polyglossia: module for Malayalam]
@@ -22347,7 +22124,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-marathi.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
% Translations provided by Abhijit Navale <abhi_navale@live.in>
% Ordinals (1-100) added by Niranjan Tambe <niranjanvikastambe@gmail.com> on 14th December, 2019
@@ -22497,7 +22274,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-mk.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-mk.ldf}[polyglossia: module for mk (Macedonian)]
@@ -22514,7 +22291,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-ml.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-ml.ldf}[polyglossia: module for ml (Malayalam)]
@@ -22531,7 +22308,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-mn.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-mn.ldf}[polyglossia: module for mn (Mongolian)]
@@ -22548,7 +22325,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-mongolian.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-mongolian.ldf}[polyglossia: module for Mongolian]
@@ -22787,7 +22564,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-mr.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-mr.ldf}[polyglossia: module for mr (Marathi)]
@@ -22804,7 +22581,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-naustrian.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-naustrian.ldf}[polyglossia: module for Austrian German (current spelling)]
@@ -22821,7 +22598,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-nb.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-nb.ldf}[polyglossia: module for nb (Norwegian)]
@@ -22838,7 +22615,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-newzealand.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-newzealand.ldf}[polyglossia: module for Newzealand English]
@@ -22855,7 +22632,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-ngerman.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-ngerman.ldf}[polyglossia: module for German (current spelling)]
@@ -22872,7 +22649,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-nko.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-nko.ldf}[Polyglossia: module for N’Ko]
\PolyglossiaSetup{nko}{%
@@ -22970,7 +22747,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-norsk.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-norsk.ldf}[polyglossia: module for Norwegian (Bokmal)]
@@ -22988,7 +22765,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-norwegian.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-norwegian.ldf}[polyglossia: module for Norwegian]
\PolyglossiaSetup{norwegian}{
@@ -23115,7 +22892,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-nswissgerman.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-nswissgerman.ldf}[polyglossia: module for Swiss German (current spelling)]
@@ -23132,7 +22909,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-nynorsk.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-nynorsk.ldf}[polyglossia: module for Norwegian (Nynorsk)]
@@ -23150,7 +22927,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-occitan.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
%%
%% This is file `gloss-occitan.ldf',
@@ -23325,13 +23102,190 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
% \end{macrocode}
% \iffalse
%</gloss-occitan.ldf>
+%<*gloss-odia.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-odia.ldf}
+% \begin{macrocode}
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
+%
+% Translations provided by ଅଶୋକ ଦାସ୍ <das@pas.rochester.edu> and ଅଭିଷେକ ଜେନା <avisekjena@gmail.com>
+% TODO implement Odia calendar
+
+\ProvidesFile{gloss-odia.ldf}[polyglossia: module for Odia]
+
+\RequirePackage{devanagaridigits}
+\RequirePackage{odiadigits}
+
+\PolyglossiaSetup{odia}{
+ bcp47=or,
+ bcp47-language=or,
+ bcp47-script=Orya,
+ script=Odia,
+ scripttag=odia,
+ langtag=ODI,
+ hyphennames={odia},
+ hyphenmins={2,2},%CHECK
+ fontsetup=true,
+ localnumeral=odianumerals
+ %TODO nouppercase=true,
+}
+
+% BCP-47 compliant aliases
+\setlanguagealias*{odia}{or}
+
+
+%Adapted from gloss-bengali.ldf
+
+\newif\ifodia@devanagari@numerals
+\newif\ifodia@odia@numerals
+\define@choicekey*+{odia}{numerals}[\xpg@val\xpg@nr]{Devanagari,Odia,Western}[Devanagari]{%
+ \ifcase\xpg@nr\relax
+ % Devanagari:
+ \odia@odia@numeralsfalse%
+ \odia@devanagari@numeralstrue%
+ \SetLanguageKeys{odia}{bcp47=or,bcp47-language=or,bcp47-extension-u=nu-deva}%
+ \or
+ % Odia:
+ \odia@odia@numeralstrue%
+ \odia@devanagari@numeralsfalse%
+ \or
+ % Western:
+ \odia@odia@numeralsfalse%
+ \odia@devanagari@numeralsfalse%
+ \SetLanguageKeys{odia}{bcp47=or,bcp47-language=or,bcp47-extension-u=nu-latn}%
+ \fi
+ \xpg@info{Option: Odia, numerals=\xpg@val}%
+}{\xpg@warning{Unknown Odia numeral `#1'}}
+
+\def\extras@odia{}
+\def\noextras@odia{}
+
+\define@boolkey{odia}[odia@]{changecounternumbering}[true]{}
+
+% Register default options
+\xpg@initialize@gloss@options{odia}{changecounternumbering=false,numerals=Devanagari}
+
+\def\captionsodia{%
+ \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\dateodia{%
+ \def\odiamonth{%
+ \ifcase\month\or
+ ଜାନୁଆରୀ\or
+ ଫେବୃଆରୀ\or
+ ମାର୍ଚ୍ଚ\or
+ ଏପ୍ରିଲ୍\or
+ ମେ\or
+ ଜୁନ୍\or
+ ଜୁଲାଇ\or
+ ଅଗଷ୍ଟ\or
+ ସେପ୍ଟେମ୍ବର\or
+ ଅକ୍ଟୋବର\or
+ ନଭେମ୍ବର\or
+ ଡିସେମ୍ବର\fi}%
+ \def\today{\odianumber\day\space\odiamonth\space\odianumber\year}%
+}
+
+\newcommand{\odianumerals}[2]{\odianumber{#2}}
+
+\def\odianumber#1{%
+ \ifodia@devanagari@numerals
+ \devanagaridigits{\number#1}%
+ \else
+ \ifodia@odia@numerals
+ \odiadigits{\number#1}%
+ \else % Assumed Western
+ \number#1%
+ \fi
+ \fi%
+}
+
+\def\odia@globalnumbers{%
+ \ifodia@changecounternumbering
+ \let\@arabic\odianumber%
+ \renewcommand\thefootnote{\localnumeral*{footnote}}%
+ \fi
+}
+
+%Adapted from gloss-marathi.ldf
+
+\def\odia@akshar#1{\ifcase#1\or ଅ\or ଆ\or ଇ\or ଈ\or ଉ\or ଊ\or ଋ\or ଏ\or ଐ\or ଓ\or ଔ\else\@ctrerr\fi}
+
+\def\odia@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\odia@numbers{%
+ \let\@alph\odia@alph
+ \let\@Alph\devanagari@letter
+ \let\@roman\odia@akshar
+ \let\@Roman\devanagari@letter
+}
+
+
+% Store original definition
+\let\xpg@save@arabic\@arabic
+
+\def\noodia@globalnumbers{%
+ \let\@arabic\xpg@save@arabic%
+}
+
+
+
+\def\blockextras@odia{\extras@odia}
+\def\inlineextras@odia{\extras@odia}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-odia.ldf>
+%<*gloss-or.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-or.ldf}
+% \begin{macrocode}
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
+%
+\ProvidesFile{gloss-odia.ldf}[polyglossia: module for or (Odia)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{odia}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-or.ldf>
%<*gloss-pa.ldf>
% \fi
% \clearpage
%
% \subsection{gloss-pa.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-pa.ldf}[polyglossia: module for pa (Punjabi)]
@@ -23348,7 +23302,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-persian.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-persian.ldf}[polyglossia: module for Persian]
@@ -23457,7 +23411,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
\if@western@numerals
\number#1%
\else
- \xpg@if@char@available{06F0}%
+ \IfCharIsAvailableTF{06F0}%
{\@ensure@LTR{\farsidigits{\number#1}}}%
{\@ensure@LTR{\arabicdigits{\number#1}}}%
\fi
@@ -23589,7 +23543,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
% \subsection{gloss-piedmontese.ldf}
% \begin{macrocode}
% !TEX encoding = UTF-8 Unicode
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-piedmontese.ldf}[2013/02/12 v1.0 polyglossia: module for Piedmontese]
\makeatletter
@@ -23719,7 +23673,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-polish.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-polish.ldf}[polyglossia: module for Polish]
@@ -23978,7 +23932,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-polutonikogreek.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-polutonikogreek.ldf}[polyglossia: module for polytonic Greek]
@@ -23995,7 +23949,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-portuges.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-portuges.ldf}[polyglossia: module for Portuguese]
@@ -24015,7 +23969,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-portuguese.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-portuguese.ldf}[polyglossia: module for Portuguese]
@@ -24246,7 +24200,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-punjabi.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
% UTF-8 strings kindly provided by
% Arvinder Singh Kang, <17-11-2022>
@@ -24354,7 +24308,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-romanian.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-romanian.ldf}[polyglossia: module for Romanian]
@@ -24413,7 +24367,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-romansh.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-romansh.ldf}[polyglossia: module for Romansh]
\makeatletter
@@ -24471,7 +24425,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-russian.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-russian.ldf}[polyglossia: module for Russian]
@@ -24870,7 +24824,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-sami.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-sami.ldf}[polyglossia: module for Sami]
@@ -24974,7 +24928,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-samin.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-samin.ldf}[polyglossia: module for Northern Sami]
@@ -24992,7 +24946,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-sanskrit.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-sanskrit.ldf}[polyglossia: module for Sanskrit]
@@ -25151,7 +25105,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-scottish.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-scottish.ldf}[polyglossia: module for Scottish Gaelic]
@@ -25169,7 +25123,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-serbian.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-serbian.ldf}[polyglossia: module for Serbian]
%TODO split into gloss-serbiancyr.ldf and gloss-serbianlat.ldf
@@ -25592,7 +25546,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-serbianc.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-serbianc.ldf}[polyglossia: module for Serbian (cyrillic)]
@@ -25609,7 +25563,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-slovak.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-slovak.ldf}[polyglossia: module for Slovak]
@@ -25876,7 +25830,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-slovene.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-slovene.ldf}[polyglossia: module for Slovenian]
@@ -25893,7 +25847,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-slovenian.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-slovenian.ldf}[polyglossia: module for Slovenian]
@@ -25985,7 +25939,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-sorbian.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-sorbian.ldf}[polyglossia: module for Sorbian]
@@ -26176,7 +26130,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-spanish.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-spanish.ldf}[polyglossia: module for Spanish]
@@ -26416,7 +26370,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-spanishmx.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-spanishmx.ldf}[polyglossia: module for Mexican Spanish]
@@ -26433,7 +26387,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-swedish.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-swedish.ldf}[polyglossia: module for Swedish]
@@ -26498,7 +26452,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-swissgerman.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-swissgerman.ldf}[polyglossia: module for Swiss German (old spelling)]
@@ -26515,7 +26469,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-syriac.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-syriac.ldf}[polyglossia: module for Syriac]
@@ -26650,7 +26604,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%%% 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}%
+ \IfCharIsAvailableTF{0661}%
{\@ensure@LTR{\protect\arabicdigits{\number#1}}}%
{\@ensure@LTR{\arabicdigits{\number#1}}
\ifcsdef{arabicfont}%
@@ -26788,7 +26742,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-tamil.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-tamil.ldf}[polyglossia: module for Tamil]
@@ -26858,7 +26812,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-telugu.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-telugu.ldf}[polyglossia: module for Telugu]
@@ -26931,7 +26885,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-thai.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-thai.ldf}[polyglossia: module for Thai]
%% This is partly based on thai-latex for Babel:
@@ -27089,7 +27043,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-tibetan.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-tibetan.ldf}[polyglossia: module for Tibetan]
%% Copyright 2013 Elie Roux
@@ -27315,7 +27269,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-turkish.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-turkish.ldf}[polyglossia: module for Turkish]
\RequirePackage{hijrical}
@@ -27433,7 +27387,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-turkmen.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-turkmen.ldf}[polyglossia: module for Turkmen]
%% Translations provided by Nazar Annagurban <nazartm at gmail dot com>
@@ -27491,7 +27445,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-ug.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-ug.ldf}[polyglossia: module for ug (Uyghur)]
% BCP 47 tag for Uyghur
@@ -27507,7 +27461,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-ukrainian.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-ukrainian.ldf}[polyglossia: module for Ukrainian]
% Strings taken from Babel
@@ -27806,7 +27760,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-uppersorbian.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-uppersorbian.ldf}[polyglossia: module for Upper Sorbian]
@@ -27823,7 +27777,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-urdu.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
%%% Adapted from a file contributed by Kamal Abdali
\ProvidesFile{gloss-urdu.ldf}[polyglossia: module for Urdu]
@@ -28073,7 +28027,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-usorbian.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-usorbian.ldf}[polyglossia: module for Upper Sorbian]
@@ -28091,7 +28045,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-uyghur.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-uyghur.ldf}[polyglossia: module for Uyghur]
%% Translations provided by Osman Tursun (Github Account: neouyghur)
@@ -28532,7 +28486,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-vietnamese.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-vietnamese.ldf}[polyglossia: module for Vietnamese]
%% Strings contributed by Daniel Owens < dhowens . pmbx . net >
@@ -28591,7 +28545,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-welsh.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-welsh.ldf}[polyglossia: module for Welsh]
@@ -28691,7 +28645,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-zh-CN.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-zh-CN.ldf}[polyglossia: module for zh-CN (Chinese)]
@@ -28708,7 +28662,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \subsection{gloss-zh-TW.ldf}
% \begin{macrocode}
-% Language definition file (part of polyglossia v1.65 -- 2023/10/01)
+% Language definition file (part of polyglossia v1.66 -- 2023/12/11)
%
\ProvidesFile{gloss-zh-TW.ldf}[polyglossia: module for zh-TW (Chinese)]
@@ -28844,6 +28798,31 @@ U+0039 <> U+0A6F ;
% \end{macrocode}
% \iffalse
%</gurmukhidigits.map>
+%<*odiadigits.map>
+% \fi
+% \clearpage
+%
+% \subsection{odiadigits.map}
+% \begin{macrocode}
+; FC ...
+LHSName "Digits"
+RHSName "OdiaDigits"
+
+pass(Unicode)
+U+0030 <> U+0B66 ;
+U+0031 <> U+0B67 ;
+U+0032 <> U+0B68 ;
+U+0033 <> U+0B69 ;
+U+0034 <> U+0B6A ;
+U+0035 <> U+0B6B ;
+U+0036 <> U+0B6C ;
+U+0037 <> U+0B6D ;
+U+0038 <> U+0B6E ;
+U+0039 <> U+0B6F ;
+
+% \end{macrocode}
+% \iffalse
+%</odiadigits.map>
%<*thaidigits.map>
% \fi
% \clearpage
@@ -28877,7 +28856,7 @@ U+0039 <> U+0E59 ;
% \begin{macrocode}
--
-- polyglossia-punct.lua
--- part of polyglossia v1.65 -- 2023/10/01
+-- part of polyglossia v1.66 -- 2023/12/11
--
require('polyglossia-punct')
@@ -28944,7 +28923,7 @@ polyglossia.deactivate_french_punct = deactivate_french_punct
% \begin{macrocode}
--
-- polyglossia-korean.lua
--- part of polyglossia v1.65 -- 2023/10/01
+-- part of polyglossia v1.66 -- 2023/12/11
--
local glyph_id = node.id"glyph"
@@ -29562,7 +29541,7 @@ prepend_to_callback ("hpack_filter",
% \begin{macrocode}
--
-- polyglossia-latin.lua
--- part of polyglossia v1.65 -- 2023/10/01
+-- part of polyglossia v1.66 -- 2023/12/11
--
require('polyglossia-punct')
@@ -29617,7 +29596,7 @@ polyglossia.deactivate_latin_punct = deactivate_latin_punct
% \begin{macrocode}
--
-- polyglossia-punct.lua
--- part of polyglossia v1.65 -- 2023/10/01
+-- part of polyglossia v1.66 -- 2023/12/11
--
require('polyglossia') -- just in case...
@@ -29985,7 +29964,7 @@ polyglossia.clear_spaced_characters = clear_spaced_characters
% \begin{macrocode}
--
-- polyglossia-sanskrit.lua
--- part of polyglossia v1.65 -- 2023/10/01
+-- part of polyglossia v1.66 -- 2023/12/11
--
require('polyglossia-punct')
@@ -30035,7 +30014,7 @@ polyglossia.deactivate_sanskrit_punct = deactivate_sanskrit_punct
% \begin{macrocode}
--
-- polyglossia-tibt.lua
--- part of polyglossia v1.65 -- 2023/10/01
+-- part of polyglossia v1.66 -- 2023/12/11
--
require('polyglossia') -- just in case...
@@ -30138,7 +30117,7 @@ polyglossia.desactivate_tibt_eol = desactivate
% \begin{macrocode}
--
-- polyglossia.lua
--- part of polyglossia v1.65 -- 2023/10/01
+-- part of polyglossia v1.66 -- 2023/12/11
--
local module_name = "polyglossia"
@@ -30172,34 +30151,6 @@ 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
@@ -30319,7 +30270,6 @@ 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
diff --git a/macros/unicodetex/latex/polyglossia/polyglossia.pdf b/macros/unicodetex/latex/polyglossia/polyglossia.pdf
index 8259987bf3..6d76a007bd 100644
--- a/macros/unicodetex/latex/polyglossia/polyglossia.pdf
+++ b/macros/unicodetex/latex/polyglossia/polyglossia.pdf
Binary files differ
diff --git a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
index 149cbaf24b..83db30a920 100644
--- a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
+++ b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
@@ -10,7 +10,6 @@ $mirrors = {
},
'Asia' => {
'China' => {
- 'https://mirror.bjtu.edu.cn/CTAN/' => 1,
'https://mirror.nyist.edu.cn/CTAN/' => 1,
'https://mirrors.aliyun.com/CTAN/' => 1,
'https://mirrors.bfsu.edu.cn/CTAN/' => 1,
@@ -49,6 +48,7 @@ $mirrors = {
},
'Korea' => {
'http://ftp.ktug.org/tex-archive/' => 1,
+ 'https://ftp.kaist.ac.kr/tex-archive/' => 1,
'https://kr.mirrors.cicku.me/ctan/' => 1,
'https://lab.uklee.pe.kr/tex-archive/' => 1,
'https://mirror.kakao.com/CTAN/' => 1,
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb b/systems/texlive/tlnet/tlpkg/texlive.tlpdb
index 91c06899ee..61a82e6c6d 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb
@@ -26,11 +26,11 @@ depend container_split_src_files/1
depend frozen/0
depend minrelease/2016
depend release/2023
-depend revision/69081
+depend revision/69086
name 00texlive.image
category TLCore
-revision 69081
+revision 69084
shortdesc TeX Live files only in the source repository
longdesc The files here are not copied by the installer and containers
longdesc are not built for them; they exist only in the source
@@ -4820,7 +4820,7 @@ depend setting_available_architectures:aarch64-linux amd64-freebsd amd64-netbsd
name 00texlive.installer
category TLCore
-revision 69075
+revision 69083
shortdesc TeX Live standalone installer package
longdesc This package defines the files to go into the installer
longdesc archives (install-tl-unx.tar.gz, install-tl.zip) built by the
@@ -28555,7 +28555,7 @@ catalogue-version 1.0
name babel
category Package
-revision 69050
+revision 69085
shortdesc Multilingual support for LaTeX, LuaLaTeX, XeLaTeX, and Plain TeX
relocated 1
longdesc This package manages culturally-determined typographical (and
@@ -28565,27 +28565,27 @@ longdesc several, in which case the document may switch from one
longdesc language to another in a variety of ways. Babel uses
longdesc contributed configuration files that provide the detail of what
longdesc has to be done for each language, as well as .ini files for
-longdesc about 275 languages from around the World, including many
+longdesc about 300 languages from around the World, including many
longdesc written in non-Latin and RTL scripts. Many of them work with
longdesc pdfLaTeX, as well as with XeLaTeX and LuaLaTeX, out of the box.
longdesc A few even work with plain formats.
-containersize 224616
-containerchecksum d10bc8f8203fd15a173fd97f02f234538a9091dbdecaa03972b73d209dfcb39f37d3d02be1e40d9867bb82c36877697c87af757dbaf971cfd1ff442e682de2a5
-doccontainersize 1042648
-doccontainerchecksum a7f7090fdb18a629d8d7b35963491661464f68f75d633adff42ab74e02c9d67304a898ef85d300a9d8dfa3e1564f7305b1fc1be657c756fa4cc7b20d4b1bfb4f
+containersize 228304
+containerchecksum 658741ed33a93351c192e0fa79132c85183c8f1db0f1f2cbe87a6f3fa35fd29768120ad354527485a78dfd83932d06a95bf340cd2acebb1476005a66075d1625
+doccontainersize 1043868
+doccontainerchecksum fd4b51b2d04d4955c5d568eb0f5746accb605a7272da3071317f234756b56d4afad150439e32f6f8fd8f611e78cc93815762d801189e643f7b8abdf02d5ecbd4
docfiles size=261
RELOC/doc/latex/babel/README.md details="Readme"
RELOC/doc/latex/babel/babel-code.pdf details="Code documentation"
RELOC/doc/latex/babel/babel.pdf details="User guide"
-srccontainersize 859628
-srccontainerchecksum 662fe958f903d64cc40d8f1c704619d73b3f1399f0ec8969080e51734b839312c4576c4fbae8e525cc4a9040985445d722486600ad0a859c31130cd080ed0c60
-srcfiles size=458
+srccontainersize 883644
+srccontainerchecksum 72e1b830318169d23efca27c5803dbbbd96e40adb0dbcef658a2ad137f82d528e41e904867689b3e404a1026f00f04599db6c5afd2e1661d366cd48578c0e7c6
+srcfiles size=469
RELOC/source/latex/babel/babel.dtx
RELOC/source/latex/babel/babel.ins
RELOC/source/latex/babel/bbcompat.dtx
RELOC/source/latex/babel/bbidxglo.dtx
RELOC/source/latex/babel/locale.zip
-runfiles size=1210
+runfiles size=1265
RELOC/makeindex/babel/bbglo.ist
RELOC/makeindex/babel/bbind.ist
RELOC/tex/generic/babel/UKenglish.sty
@@ -28640,6 +28640,8 @@ runfiles size=1210
RELOC/tex/generic/babel/locale/aa/babel-afar.tex
RELOC/tex/generic/babel/locale/ab/babel-ab.ini
RELOC/tex/generic/babel/locale/ab/babel-abkhazian.tex
+ RELOC/tex/generic/babel/locale/ae/babel-ae.ini
+ RELOC/tex/generic/babel/locale/ae/babel-avestan.tex
RELOC/tex/generic/babel/locale/af/babel-af.ini
RELOC/tex/generic/babel/locale/af/babel-afrikaans.tex
RELOC/tex/generic/babel/locale/agq/babel-aghem.tex
@@ -28684,6 +28686,14 @@ runfiles size=1210
RELOC/tex/generic/babel/locale/ar/babel-arabic-tn.tex
RELOC/tex/generic/babel/locale/ar/babel-arabic-tunisia.tex
RELOC/tex/generic/babel/locale/ar/babel-arabic.tex
+ RELOC/tex/generic/babel/locale/arc/babel-aramaic-nabataean.tex
+ RELOC/tex/generic/babel/locale/arc/babel-aramaic-nbat.tex
+ RELOC/tex/generic/babel/locale/arc/babel-aramaic-palm.tex
+ RELOC/tex/generic/babel/locale/arc/babel-aramaic-palmyrene.tex
+ RELOC/tex/generic/babel/locale/arc/babel-aramaic.tex
+ RELOC/tex/generic/babel/locale/arc/babel-arc-Nbat.ini
+ RELOC/tex/generic/babel/locale/arc/babel-arc-Palm.ini
+ RELOC/tex/generic/babel/locale/arc/babel-arc.ini
RELOC/tex/generic/babel/locale/arz/babel-arz.ini
RELOC/tex/generic/babel/locale/arz/babel-egyptianarabic.tex
RELOC/tex/generic/babel/locale/as/babel-as.ini
@@ -28694,6 +28704,8 @@ runfiles size=1210
RELOC/tex/generic/babel/locale/ast/babel-asturian.tex
RELOC/tex/generic/babel/locale/awa/babel-awa.ini
RELOC/tex/generic/babel/locale/awa/babel-awadhi.tex
+ RELOC/tex/generic/babel/locale/ay/babel-ay.ini
+ RELOC/tex/generic/babel/locale/ay/babel-aymara.tex
RELOC/tex/generic/babel/locale/az/babel-az-Cyrl.ini
RELOC/tex/generic/babel/locale/az/babel-az-Latn.ini
RELOC/tex/generic/babel/locale/az/babel-az.ini
@@ -28702,12 +28714,18 @@ runfiles size=1210
RELOC/tex/generic/babel/locale/az/babel-azerbaijani-latin.tex
RELOC/tex/generic/babel/locale/az/babel-azerbaijani-latn.tex
RELOC/tex/generic/babel/locale/az/babel-azerbaijani.tex
+ RELOC/tex/generic/babel/locale/ba/babel-ba.ini
+ RELOC/tex/generic/babel/locale/ba/babel-bashkir.tex
RELOC/tex/generic/babel/locale/bal/babel-bal.ini
RELOC/tex/generic/babel/locale/bal/babel-baluchi.tex
RELOC/tex/generic/babel/locale/ban/babel-balinese.tex
RELOC/tex/generic/babel/locale/ban/babel-ban.ini
+ RELOC/tex/generic/babel/locale/bar/babel-bar.ini
+ RELOC/tex/generic/babel/locale/bar/babel-bavarian.tex
RELOC/tex/generic/babel/locale/bas/babel-bas.ini
RELOC/tex/generic/babel/locale/bas/babel-basaa.tex
+ RELOC/tex/generic/babel/locale/bbc/babel-bataktoba.tex
+ RELOC/tex/generic/babel/locale/bbc/babel-bbc.ini
RELOC/tex/generic/babel/locale/be/babel-be.ini
RELOC/tex/generic/babel/locale/be/babel-belarusian.tex
RELOC/tex/generic/babel/locale/bem/babel-bem.ini
@@ -28747,6 +28765,8 @@ runfiles size=1210
RELOC/tex/generic/babel/locale/ca/babel-catalan.tex
RELOC/tex/generic/babel/locale/cch/babel-atsam.tex
RELOC/tex/generic/babel/locale/cch/babel-cch.ini
+ RELOC/tex/generic/babel/locale/ccp/babel-ccp.ini
+ RELOC/tex/generic/babel/locale/ccp/babel-chakma.tex
RELOC/tex/generic/babel/locale/ce/babel-ce.ini
RELOC/tex/generic/babel/locale/ce/babel-chechen.tex
RELOC/tex/generic/babel/locale/ceb/babel-ceb.ini
@@ -28969,6 +28989,8 @@ runfiles size=1210
RELOC/tex/generic/babel/locale/ig/babel-igbo.tex
RELOC/tex/generic/babel/locale/ii/babel-ii.ini
RELOC/tex/generic/babel/locale/ii/babel-sichuanyi.tex
+ RELOC/tex/generic/babel/locale/inh/babel-ingush.tex
+ RELOC/tex/generic/babel/locale/inh/babel-inh.ini
RELOC/tex/generic/babel/locale/is/babel-icelandic.tex
RELOC/tex/generic/babel/locale/is/babel-is.ini
RELOC/tex/generic/babel/locale/it/babel-it.ini
@@ -28999,6 +29021,8 @@ runfiles size=1210
RELOC/tex/generic/babel/locale/kea/babel-kea.ini
RELOC/tex/generic/babel/locale/kgp/babel-kaingang.tex
RELOC/tex/generic/babel/locale/kgp/babel-kgp.ini
+ RELOC/tex/generic/babel/locale/khb/babel-khb.ini
+ RELOC/tex/generic/babel/locale/khb/babel-lu.tex
RELOC/tex/generic/babel/locale/khq/babel-khq.ini
RELOC/tex/generic/babel/locale/khq/babel-koyrachiini.tex
RELOC/tex/generic/babel/locale/ki/babel-ki.ini
@@ -29037,6 +29061,8 @@ runfiles size=1210
RELOC/tex/generic/babel/locale/ksf/babel-ksf.ini
RELOC/tex/generic/babel/locale/ksh/babel-colognian.tex
RELOC/tex/generic/babel/locale/ksh/babel-ksh.ini
+ RELOC/tex/generic/babel/locale/kv/babel-komi.tex
+ RELOC/tex/generic/babel/locale/kv/babel-kv.ini
RELOC/tex/generic/babel/locale/kw/babel-cornish.tex
RELOC/tex/generic/babel/locale/kw/babel-kw.ini
RELOC/tex/generic/babel/locale/ky/babel-ky.ini
@@ -29051,14 +29077,23 @@ runfiles size=1210
RELOC/tex/generic/babel/locale/la/babel-la.ini
RELOC/tex/generic/babel/locale/la/babel-latin.tex
RELOC/tex/generic/babel/locale/la/babel-medievallatin.tex
+ RELOC/tex/generic/babel/locale/lab/babel-lab.ini
+ RELOC/tex/generic/babel/locale/lab/babel-lineara.tex
RELOC/tex/generic/babel/locale/lad/babel-lad.ini
RELOC/tex/generic/babel/locale/lad/babel-ladino.tex
RELOC/tex/generic/babel/locale/lag/babel-lag.ini
RELOC/tex/generic/babel/locale/lag/babel-langi.tex
RELOC/tex/generic/babel/locale/lb/babel-lb.ini
RELOC/tex/generic/babel/locale/lb/babel-luxembourgish.tex
+ RELOC/tex/generic/babel/locale/lep/babel-lep.ini
+ RELOC/tex/generic/babel/locale/lep/babel-lepcha.tex
RELOC/tex/generic/babel/locale/lg/babel-ganda.tex
RELOC/tex/generic/babel/locale/lg/babel-lg.ini
+ RELOC/tex/generic/babel/locale/lif/babel-lif-Limb.ini
+ RELOC/tex/generic/babel/locale/lif/babel-lif.ini
+ RELOC/tex/generic/babel/locale/lif/babel-limbu-limb.tex
+ RELOC/tex/generic/babel/locale/lif/babel-limbu-limbu.tex
+ RELOC/tex/generic/babel/locale/lif/babel-limbu.tex
RELOC/tex/generic/babel/locale/lij/babel-ligurian.tex
RELOC/tex/generic/babel/locale/lij/babel-lij.ini
RELOC/tex/generic/babel/locale/lkt/babel-lakota.tex
@@ -29083,6 +29118,11 @@ runfiles size=1210
RELOC/tex/generic/babel/locale/lv/babel-lv.ini
RELOC/tex/generic/babel/locale/mai/babel-mai.ini
RELOC/tex/generic/babel/locale/mai/babel-maithili.tex
+ RELOC/tex/generic/babel/locale/mak/babel-mak-Bugi.ini
+ RELOC/tex/generic/babel/locale/mak/babel-mak.ini
+ RELOC/tex/generic/babel/locale/mak/babel-makasar-bugi.tex
+ RELOC/tex/generic/babel/locale/mak/babel-makasar-buginese.tex
+ RELOC/tex/generic/babel/locale/mak/babel-makasar.tex
RELOC/tex/generic/babel/locale/mas/babel-mas.ini
RELOC/tex/generic/babel/locale/mas/babel-masai.tex
RELOC/tex/generic/babel/locale/mer/babel-mer.ini
@@ -29125,6 +29165,8 @@ runfiles size=1210
RELOC/tex/generic/babel/locale/my/babel-my.ini
RELOC/tex/generic/babel/locale/myv/babel-erzya.tex
RELOC/tex/generic/babel/locale/myv/babel-myv.ini
+ RELOC/tex/generic/babel/locale/myz/babel-classicalmandaic.tex
+ RELOC/tex/generic/babel/locale/myz/babel-myz.ini
RELOC/tex/generic/babel/locale/mzn/babel-mazanderani.tex
RELOC/tex/generic/babel/locale/mzn/babel-mzn.ini
RELOC/tex/generic/babel/locale/naq/babel-nama.tex
@@ -29133,6 +29175,8 @@ runfiles size=1210
RELOC/tex/generic/babel/locale/nb/babel-norwegianbokmal.tex
RELOC/tex/generic/babel/locale/nd/babel-nd.ini
RELOC/tex/generic/babel/locale/nd/babel-northndebele.tex
+ RELOC/tex/generic/babel/locale/nds/babel-lowgerman.tex
+ RELOC/tex/generic/babel/locale/nds/babel-nds.ini
RELOC/tex/generic/babel/locale/ne/babel-ne.ini
RELOC/tex/generic/babel/locale/ne/babel-nepali.tex
RELOC/tex/generic/babel/locale/new/babel-new.ini
@@ -29213,6 +29257,8 @@ runfiles size=1210
RELOC/tex/generic/babel/locale/raj/babel-rajasthani.tex
RELOC/tex/generic/babel/locale/rm/babel-rm.ini
RELOC/tex/generic/babel/locale/rm/babel-romansh.tex
+ RELOC/tex/generic/babel/locale/rmo/babel-rmo.ini
+ RELOC/tex/generic/babel/locale/rmo/babel-sinteromani.tex
RELOC/tex/generic/babel/locale/rn/babel-rn.ini
RELOC/tex/generic/babel/locale/rn/babel-rundi.tex
RELOC/tex/generic/babel/locale/ro/babel-moldavian.tex
@@ -29301,6 +29347,8 @@ runfiles size=1210
RELOC/tex/generic/babel/locale/sl/babel-slovenian.tex
RELOC/tex/generic/babel/locale/smn/babel-inarisami.tex
RELOC/tex/generic/babel/locale/smn/babel-smn.ini
+ RELOC/tex/generic/babel/locale/smp/babel-samaritan.tex
+ RELOC/tex/generic/babel/locale/smp/babel-smp.ini
RELOC/tex/generic/babel/locale/sn/babel-shona.tex
RELOC/tex/generic/babel/locale/sn/babel-sn.ini
RELOC/tex/generic/babel/locale/so/babel-so.ini
@@ -29356,6 +29404,8 @@ runfiles size=1210
RELOC/tex/generic/babel/locale/szl/babel-szl.ini
RELOC/tex/generic/babel/locale/ta/babel-ta.ini
RELOC/tex/generic/babel/locale/ta/babel-tamil.tex
+ RELOC/tex/generic/babel/locale/tdd/babel-tainua.tex
+ RELOC/tex/generic/babel/locale/tdd/babel-tdd.ini
RELOC/tex/generic/babel/locale/te/babel-te.ini
RELOC/tex/generic/babel/locale/te/babel-telugu.tex
RELOC/tex/generic/babel/locale/teo/babel-teo.ini
@@ -29386,6 +29436,8 @@ runfiles size=1210
RELOC/tex/generic/babel/locale/tt/babel-tt.ini
RELOC/tex/generic/babel/locale/twq/babel-tasawaq.tex
RELOC/tex/generic/babel/locale/twq/babel-twq.ini
+ RELOC/tex/generic/babel/locale/txg/babel-tangut.tex
+ RELOC/tex/generic/babel/locale/txg/babel-txg.ini
RELOC/tex/generic/babel/locale/tzm/babel-centralatlastamazight.tex
RELOC/tex/generic/babel/locale/tzm/babel-tzm.ini
RELOC/tex/generic/babel/locale/ug/babel-ug.ini
@@ -29425,6 +29477,8 @@ runfiles size=1210
RELOC/tex/generic/babel/locale/wae/babel-walser.tex
RELOC/tex/generic/babel/locale/wal/babel-wal.ini
RELOC/tex/generic/babel/locale/wal/babel-wolaytta.tex
+ RELOC/tex/generic/babel/locale/war/babel-war.ini
+ RELOC/tex/generic/babel/locale/war/babel-waray.tex
RELOC/tex/generic/babel/locale/wo/babel-wo.ini
RELOC/tex/generic/babel/locale/wo/babel-wolof.tex
RELOC/tex/generic/babel/locale/xh/babel-xh.ini
@@ -29501,7 +29555,7 @@ catalogue-contact-repository https://github.com/latex3/babel
catalogue-ctan /macros/latex/required/babel/base
catalogue-license lppl1.3
catalogue-topics multilingual
-catalogue-version 3.98
+catalogue-version 3.99
name babel-albanian
category Package
@@ -44990,7 +45044,7 @@ catalogue-topics font font-type1 font-collection
name bookmark
category Package
-revision 69081
+revision 69084
shortdesc A new bookmark (outline) organization for hyperref
relocated 1
longdesc This package implements a new bookmark (outline) organization
@@ -44998,27 +45052,23 @@ longdesc for package hyperref. Bookmark properties such as style and
longdesc color can now be set. Other action types are available (URI,
longdesc GoToR, Named). The bookmarks are generated in the first compile
longdesc run. Package hyperref uses two runs.
-containersize 8444
-containerchecksum aa7fdd7ff9361108e6cd6f16c67b81cc37987a287062d5ae7c7aaabff30eac7a61207c384278e98b125d75c9550d661146a5e9342db0ddf7ef20887bf362148b
-doccontainersize 485600
-doccontainerchecksum 268aaff2021a2cd1f4f0d4a507b23dcbea6b896cc86beb19490f500579e62a8547bf85f83113aa85ccfc1c836a943ef4741d5ea9fc52c0f232a6ba9482ec42a5
-docfiles size=126
+containersize 8024
+containerchecksum 0a95a2839415393f430eac43a0cac3ac1c4397d68b037167d0e66595e82cda6ef11078bee63855ed1de66191f2f241418705ff819dbe02ac4e3c68ba88eec52d
+doccontainersize 475876
+doccontainerchecksum 1c6a24efbee2e8734955b40b9908a8f5af95d6d4b8aa330c72ae7dde5c9fa374af6bbe7651f46c87bdc11f69a38b5d81d03152eb10d0eddc334b87276fddf252
+docfiles size=123
RELOC/doc/latex/bookmark/README.md details="Readme"
RELOC/doc/latex/bookmark/bookmark-example.tex
RELOC/doc/latex/bookmark/bookmark.pdf details="Package documentation"
-srccontainersize 19372
-srccontainerchecksum cc7b71da9c5e154d5afc952ea573fc726532bf81a499d0f784555ad790646fda469b7ada2c4a47e219542016c919d20b2de8fd799db139b43c5f838bba3de961
-srcfiles size=31
- RELOC/source/latex/bookmark/bookmark-frozen.dtx
+srccontainersize 18648
+srccontainerchecksum d9087686dad4b3d68e8520888fd1787ab707c0bb196777144865e2a9419112a3e3cd25064ed4c0d0d5a31a195c84d4793d0063e17037c74ce3eff20e03def946
+srcfiles size=24
RELOC/source/latex/bookmark/bookmark.dtx
-runfiles size=25
- RELOC/tex/latex/bookmark/bkm-dvipdfm-2019-12-03.def
+ RELOC/source/latex/bookmark/bookmark.ins
+runfiles size=15
RELOC/tex/latex/bookmark/bkm-dvipdfm.def
- RELOC/tex/latex/bookmark/bkm-dvips-2019-12-03.def
RELOC/tex/latex/bookmark/bkm-dvips.def
- RELOC/tex/latex/bookmark/bkm-pdftex-2019-12-03.def
RELOC/tex/latex/bookmark/bkm-pdftex.def
- RELOC/tex/latex/bookmark/bkm-vtex-2019-12-03.def
RELOC/tex/latex/bookmark/bkm-vtex.def
RELOC/tex/latex/bookmark/bookmark.sty
catalogue-contact-bugs https://github.com/ho-tex/bookmark/issues
@@ -45026,7 +45076,7 @@ catalogue-contact-repository https://github.com/ho-tex/bookmark
catalogue-ctan /macros/latex/contrib/bookmark
catalogue-license lppl1.3c
catalogue-topics hyper
-catalogue-version 1.30
+catalogue-version 1.31
name bookshelf
category Package
@@ -317583,7 +317633,7 @@ docfiles size=376
name texlive-scripts
category TLCore
-revision 69075
+revision 69083
shortdesc TeX Live infrastructure programs
longdesc Includes install-tl, tl-portable, rungs, etc.; not needed for
longdesc tlmgr to run but still ours. Not included in tlcritical.
@@ -317591,10 +317641,10 @@ depend texlive-scripts.ARCH
depend texlive.infra
execute addMap mathpple.map
postaction shortcut type=menu name="TeX Live command-line" cmd=TEXDIR/tlpkg/installer/tl-cmd.bat
-containersize 114268
-containerchecksum b2ad25745601b6bb1ac5a56b704a812030d20b785b894ff1b8bafc835da825a7da22b956853b8fd56c87d410b6b62d72c86985cad6a290c60d5d15fa7992ae8c
+containersize 114256
+containerchecksum ee643c78c9f2d5ce58db1dea7518057c66421592c32a49d28d3aa0f8ecd650a2f5c8c402503c63a467f102ba1c55ea312a50286101a01d7bf7e116fcc052533f
doccontainersize 430688
-doccontainerchecksum 391df4546801fee15d2e79863655052320a8be70058c2d2a9cb8125449bdd99f3534671abc62f0b671726bab8c3692a1d9fe0b4f8d6c2770274bbd3def1c9024
+doccontainerchecksum 1d19f202f51d06a454ff88d0b33ba41fd708000fabd61869d42f18e51bd6dd6befd8b160339b8d61d7b1bc17e8c57b70e39fc0856beb4d123e4eee05741e1cb9
docfiles size=560
doc.html
texmf-dist/doc/man/man1/fmtutil-sys.1
@@ -321979,7 +322029,7 @@ catalogue-topics label-ref maths-theorem
name thermodynamics
category Package
-revision 69058
+revision 69086
shortdesc Macros for multicomponent thermodynamics documents
relocated 1
longdesc This package makes typesetting quantities found in
@@ -322005,16 +322055,16 @@ longdesc fractions/masses/etc. being held constant in derivatives.
longdesc Conversion of notes between textbooks is trivial for textbooks
longdesc supported by the package, and more general changes in notation
longdesc are also possible through package options.
-containersize 9172
-containerchecksum 6af52b1c08d083d84401c24e6f63ecac304952a2675f13fd7759f92b0df0f9f887ec80b015f2f33d625ffdacacbd5069fc691ca55a44706d1a1c61253bf60fad
-doccontainersize 269568
-doccontainerchecksum 5393afc303ce889e7ca706353ce732918cf7a9e7366513c276f68781d5e6d4f7dfe9a509457608c44c07e668f62174278174d32b8d021a0a99284d83cff657a5
+containersize 9176
+containerchecksum 0bae277827251a42a366ce85aee49d762e08025b96472f8102a54b7a9f1e74622bfa0064aeaa6dfee5248ef84977fd47389fc91049c057caf75c33930ade37ba
+doccontainersize 266980
+doccontainerchecksum 3e2ae382e61ec8734e6cffe6c4d5efbe853a3c6748e1d8e75c2e4fa0ed6e7ada7f8a79424f49c43a753bcf6ce867b84ee353c553ba412c0386d58d2d4f5f437f
docfiles size=71
RELOC/doc/latex/thermodynamics/README.md details="Readme"
RELOC/doc/latex/thermodynamics/thermodynamics-examples.tex
RELOC/doc/latex/thermodynamics/thermodynamics.pdf details="Package documentation"
-srccontainersize 34076
-srccontainerchecksum 529d79a5dd6adb1b2268719798f03314bd286cd71e03550a716c32c34bf46489482c2280664a903279a733d33297a117af9de6ee9fc12723e42e4c95541670bb
+srccontainersize 34088
+srccontainerchecksum 0ddadff5d744ca8f45bab8f471685e9afdcb494e60aa6ba0c32c8a75bce536adc6544c097e95da02457059b5bb96ed37508217577caf16c963af6e07651ae721
srcfiles size=43
RELOC/source/latex/thermodynamics/thermodynamics.dtx
RELOC/source/latex/thermodynamics/thermodynamics.ins
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
index e499d2d65b..22e347fb64 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
@@ -1 +1 @@
-d5f91393c27199af03f2d7590c528e5c texlive.tlpdb
+ec4f30db84a05ba0ac295ad064eb69d1 texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
index 5c919e49fd..ef39af3211 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
@@ -1 +1 @@
-f4ed9abf3a1d1367f76bb5b2529eb0bdbdbfb9feac76fa5884bd3006c730426f1f99cdf3b1b17e8e77bc2051724ba8089f03f94d889af124903b9de553913a91 texlive.tlpdb
+02d54a9086e42e95dbad94859c8acb64f0db200ae11df175fab50f7f8c2c7034b947ce4a0c19aa2dc53c1ba6abc7d2c67f73daa2f988b65460dfc621ef094112 texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
index 9cd7e06800..356937a10a 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
@@ -1,11 +1,11 @@
-----BEGIN PGP SIGNATURE-----
-iQEzBAEBCgAdFiEE2PL4YFeoV+QqiBBqTOGHfhlDjHAFAmV1DAEACgkQTOGHfhlD
-jHD7oQf/QPUz/BPO21uPvmeY4ox65i8iSy+HuilLA5LYMv1XR+saXpq9zW7JUB6Z
-9MS2ElTZs472aiqJXvh8sZ7GtmBuzYjTPspNrgmZRHvbgBGyL2xTtyfQVYmr/5aD
-Q5qMB7jcQzxir0G4Ekfxxw3X656wN/tN2FKjPDIns9Cfdq0C+CnnubHVs3SORvZD
-1MrJzonXj3BLSnh5NzxHOmVvCxp/xNbYDL5uauoMANLd5iTwi/YHMi0SH1//qfWc
-kezBjiUx6ia4I8tgwH4zBdtwx+xDiLecVWU6xzWxz0HWVQhV+xEZQv2I3g4QyAp5
-5ogfF1Jtw+eDuZi05PE4DmRlW1DPZA==
-=GqKy
+iQEzBAEBCgAdFiEE2PL4YFeoV+QqiBBqTOGHfhlDjHAFAmV2W5kACgkQTOGHfhlD
+jHBt6Qf+KJ7iqbhIIGtcoOQo6+cjKhV+cxDeK4hIoan969M+VncnseFXXJ9uXo3c
+r4EOG+18oQlnQsFVhfARIekkwmTs/TGeWOr7YRDSSr9lwk0WhXql+kiCJHOMKHRH
+ub8Mra2UVxvAIwVC+l8F+x+IfywfprwDKh/DracDkrkx8MXl8xOL6nU4n5yMJn+4
+5Sah2iMqNiU3uhdUmBK80LR5kuZ4n5CRvXrR4xXrRxH7Nn0D60W15cENaxKTxtLl
+3FHtG4fBG62PniVvEgJbKsJyOITkN/7ptpUuJzkchHm1U5LbCC0Sn0LBg2/jHeM+
+eAbPg0XDaSkO6Q3pLLG7THqHb8kUkg==
+=IQ+R
-----END PGP SIGNATURE-----
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
index 9c6e201c58..a1d36ac783 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
Binary files differ
diff --git a/timestamp b/timestamp
index c999ed969a..c5e88e8aa0 100644
--- a/timestamp
+++ b/timestamp
@@ -2,4 +2,4 @@
# The source CTAN of this site's material:
dante.ctan.org
# The year-month-day-hour-minute of this site's material:
-2023-12-11-02-02
+2023-12-12-02-02