summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2022-12-12 03:03:41 +0000
committerNorbert Preining <norbert@preining.info>2022-12-12 03:03:41 +0000
commitd9c472147310b678beb9f80f0e90fc82f8825ec5 (patch)
tree70534e066d5d0d30ac8c0b9939e574a2696e8d83
parent6e749f2b4d0cbb91f8d2c872981d7ebba3a0fb52 (diff)
CTAN sync 202212120303
-rw-r--r--FILES.byname682
-rw-r--r--FILES.byname.gzbin2485283 -> 2485343 bytes
-rw-r--r--FILES.last07days604
-rw-r--r--biblio/ctan-bibdata/ctan.bib26
-rw-r--r--biblio/ctan-bibdata/ctan.pdfbin3626872 -> 3627464 bytes
-rw-r--r--macros/latex/contrib/cooking-units/cooking-units.dtx2304
-rw-r--r--macros/latex/contrib/cooking-units/cooking-units.pdfbin742764 -> 744837 bytes
-rw-r--r--macros/latex/contrib/hereapplies/ChangeLog.md7
-rw-r--r--macros/latex/contrib/hereapplies/hereapplies-doc.pdfbin366039 -> 366138 bytes
-rw-r--r--macros/latex/contrib/hereapplies/hereapplies-example.pdfbin49556 -> 49410 bytes
-rw-r--r--macros/latex/contrib/hereapplies/hereapplies.sty16
-rw-r--r--macros/latex/contrib/hereapplies/package.json2
-rw-r--r--macros/latex/contrib/quantumarticle/README.md8
-rw-r--r--macros/latex/contrib/quantumarticle/quantum-bibliographystyle-demo.bib2
-rw-r--r--macros/latex/contrib/quantumarticle/quantum-bibliographystyle-demo.pdfbin261448 -> 265403 bytes
-rw-r--r--macros/latex/contrib/quantumarticle/quantum-bibliographystyle-demo.tex11
-rw-r--r--macros/latex/contrib/quantumarticle/quantum-template.pdfbin435047 -> 438812 bytes
-rw-r--r--macros/latex/contrib/quantumarticle/quantum-template.tex2
-rw-r--r--macros/latex/contrib/quantumarticle/quantum.bst28
-rw-r--r--macros/latex/contrib/quantumarticle/quantumarticle.cls42
-rw-r--r--macros/latex/contrib/quantumarticle/quantumarticle.pdfbin291173 -> 261220 bytes
-rw-r--r--macros/latex/contrib/quantumarticle/quantumarticle.tex142
-rw-r--r--macros/latex/contrib/thalie/CHANGELOG.md37
-rw-r--r--macros/latex/contrib/thalie/README.md10
-rw-r--r--macros/latex/contrib/thalie/thalie.dtx2298
-rw-r--r--macros/latex/contrib/thalie/thalie.ins59
-rw-r--r--macros/latex/contrib/thalie/thalie.pdfbin484998 -> 242799 bytes
-rw-r--r--macros/latex/contrib/thalie/thalie.sty693
-rw-r--r--macros/latex/contrib/thalie/thalie.tex1325
-rw-r--r--macros/latex/contrib/tuda-ci/README.md9
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdfbin551914 -> 551834 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdfbin598742 -> 598742 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdfbin570428 -> 570428 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdfbin559873 -> 559873 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdfbin567047 -> 567048 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdfbin635903 -> 635934 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdfbin536024 -> 536023 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdfbin662322 -> 662413 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdfbin527090 -> 527003 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdfbin563674 -> 563674 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdfbin627530 -> 627537 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex2
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex2
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib2
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex2
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco2
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex2
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex2
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex2
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex2
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex2
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex2
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex2
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex2
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa-mecheng.sty6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudabeamer.cls6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudacolors.def6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudacolors.sty6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudaexercise.cls8
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudafonts.sty6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudaletter.cls6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo2
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudamecheng.cfg6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudaposter.cls6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudapub.cls19
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudarules.sty6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudasciposter.cls6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo2
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudathesis.cfg6
-rw-r--r--macros/xetex/latex/xduts/README.md4
-rw-r--r--macros/xetex/latex/xduts/xduts.dtx204
-rw-r--r--macros/xetex/latex/xduts/xduts.pdfbin316974 -> 321917 bytes
-rw-r--r--support/TeX4ht/source/ChangeLog6
-rw-r--r--support/TeX4ht/source/tex4ht-4ht.tex5
-rw-r--r--systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl3
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb91
-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.asc14
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.xzbin2431948 -> 2432352 bytes
-rw-r--r--systems/win32/miktex/tm/packages/files.csv.lzmabin750235 -> 750777 bytes
-rw-r--r--systems/win32/miktex/tm/packages/next/files.csv.lzmabin750201 -> 751004 bytes
-rw-r--r--systems/win32/miktex/tm/packages/next/pr.ini10
-rw-r--r--systems/win32/miktex/tm/packages/pr.ini12
-rw-r--r--timestamp2
98 files changed, 4690 insertions, 4173 deletions
diff --git a/FILES.byname b/FILES.byname
index 3cf61649f7..ae9e4a71a0 100644
--- a/FILES.byname
+++ b/FILES.byname
@@ -2035,12 +2035,12 @@
2022/09/23 | 1673 | biblio/citation-style-language/README.md
2022/09/23 | 11958 | biblio/citation-style-language/vancouver.csl
2022/09/23 | 591448 | biblio/citation-style-language.zip
-2022/12/10 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
+2022/12/11 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
2022/10/08 | 127 | biblio/ctan-bibdata/biblatex-ctan/ctan.cbx
-2022/12/10 | 2748446 | biblio/ctan-bibdata/ctan.bib
-2022/12/10 | 3627200 | biblio/ctan-bibdata/ctan.pdf
+2022/12/11 | 2748442 | biblio/ctan-bibdata/ctan.bib
+2022/12/11 | 3626872 | biblio/ctan-bibdata/ctan.pdf
2022/10/08 | 1415 | biblio/ctan-bibdata/README
-2022/12/10 | 4021446 | biblio/ctan-bibdata.zip
+2022/12/11 | 4020274 | biblio/ctan-bibdata.zip
2022/02/06 | 3110 | biblio/pbibtex/pbibtex-base/cpp.awk
2022/02/06 | 1009 | biblio/pbibtex/pbibtex-base/generate.sh
2022/02/06 | 22422 | biblio/pbibtex/pbibtex-base/jabbrv.bst
@@ -5414,7 +5414,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
-2022/12/10 | 72468 | FILES.last07days
+2022/12/11 | 58652 | 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
@@ -190473,7 +190473,7 @@
2022/06/24 | 6335831 | install/macros/latex/contrib/tcolorbox.tds.zip
2009/06/22 | 771373 | install/macros/latex/contrib/tdsfrmath.tds.zip
2019/09/29 | 5325410 | install/macros/latex/contrib/testidx.tds.zip
-2022/10/09 | 507609 | install/macros/latex/contrib/thalie.tds.zip
+2022/12/11 | 267075 | install/macros/latex/contrib/thalie.tds.zip
2013/01/06 | 389729 | install/macros/latex/contrib/threadcol.tds.zip
2014/03/09 | 752162 | install/macros/latex/contrib/thumbs.tds.zip
2022/10/05 | 1734686 | install/macros/latex/contrib/thuthesis.tds.zip
@@ -213571,11 +213571,11 @@
2014/12/28 | 409523 | macros/latex/contrib/cookingsymbols/cookingsymbols.pdf
2014/12/28 | 494 | macros/latex/contrib/cookingsymbols/README
2014/12/28 | 386109 | macros/latex/contrib/cookingsymbols.zip
-2022/06/06 | 356181 | macros/latex/contrib/cooking-units/cooking-units.dtx
-2022/06/06 | 1655 | macros/latex/contrib/cooking-units/cooking-units.ins
-2022/06/06 | 742764 | macros/latex/contrib/cooking-units/cooking-units.pdf
-2022/06/06 | 1469 | macros/latex/contrib/cooking-units/README.md
-2022/06/06 | 801421 | macros/latex/contrib/cooking-units.zip
+2022/12/11 | 380508 | macros/latex/contrib/cooking-units/cooking-units.dtx
+2022/12/11 | 1655 | macros/latex/contrib/cooking-units/cooking-units.ins
+2022/12/11 | 744837 | macros/latex/contrib/cooking-units/cooking-units.pdf
+2022/12/11 | 1469 | macros/latex/contrib/cooking-units/README.md
+2022/12/11 | 809420 | macros/latex/contrib/cooking-units.zip
2006/12/09 | 68397 | macros/latex/contrib/cooking.zip
2009/10/12 | 24947 | macros/latex/contrib/cookybooky/cookybooky.dtx
2009/10/10 | 1719 | macros/latex/contrib/cookybooky/cookybooky.ins
@@ -220676,19 +220676,19 @@
2020/04/10 | 1003 | macros/latex/contrib/hepunits/README
2020/04/10 | 101262 | macros/latex/contrib/hepunits.zip
2005/12/14 | 3617 | macros/latex/contrib/hep.zip
-2022/09/13 | 2610 | macros/latex/contrib/hereapplies/ChangeLog.md
-2022/09/13 | 34523 | macros/latex/contrib/hereapplies/COPYING
-2022/09/13 | 16345 | macros/latex/contrib/hereapplies/hereapplies-doc.lyx
-2022/09/13 | 366039 | macros/latex/contrib/hereapplies/hereapplies-doc.pdf
-2022/09/13 | 8039 | macros/latex/contrib/hereapplies/hereapplies-doc.tex
-2022/09/13 | 49556 | macros/latex/contrib/hereapplies/hereapplies-example.pdf
-2022/09/13 | 930 | macros/latex/contrib/hereapplies/hereapplies-example.tex
-2022/09/13 | 19864 | macros/latex/contrib/hereapplies/hereapplies.sty
-2022/09/13 | 5022 | macros/latex/contrib/hereapplies/lyx-module/hereapplies-example.lyx
-2022/09/13 | 2853 | macros/latex/contrib/hereapplies/lyx-module/hereapplies.module
-2022/09/13 | 743 | macros/latex/contrib/hereapplies/package.json
-2022/09/13 | 5851 | macros/latex/contrib/hereapplies/README.md
-2022/09/13 | 432294 | macros/latex/contrib/hereapplies.zip
+2022/12/11 | 2717 | macros/latex/contrib/hereapplies/ChangeLog.md
+2022/12/11 | 34523 | macros/latex/contrib/hereapplies/COPYING
+2022/12/11 | 16345 | macros/latex/contrib/hereapplies/hereapplies-doc.lyx
+2022/12/11 | 366138 | macros/latex/contrib/hereapplies/hereapplies-doc.pdf
+2022/12/11 | 8039 | macros/latex/contrib/hereapplies/hereapplies-doc.tex
+2022/12/11 | 49410 | macros/latex/contrib/hereapplies/hereapplies-example.pdf
+2022/12/11 | 930 | macros/latex/contrib/hereapplies/hereapplies-example.tex
+2022/12/11 | 19930 | macros/latex/contrib/hereapplies/hereapplies.sty
+2022/12/11 | 5022 | macros/latex/contrib/hereapplies/lyx-module/hereapplies-example.lyx
+2022/12/11 | 2853 | macros/latex/contrib/hereapplies/lyx-module/hereapplies.module
+2022/12/11 | 743 | macros/latex/contrib/hereapplies/package.json
+2022/12/11 | 5851 | macros/latex/contrib/hereapplies/README.md
+2022/12/11 | 432320 | macros/latex/contrib/hereapplies.zip
2009/11/22 | 439 | macros/latex/contrib/here/here.sty
2009/11/22 | 399 | macros/latex/contrib/here/README
2009/11/22 | 866 | macros/latex/contrib/here.zip
@@ -229480,21 +229480,21 @@
2009/01/24 | 625 | macros/latex/contrib/qtree/README
2009/01/24 | 224630 | macros/latex/contrib/qtree.zip
2022/03/24 | 47088 | macros/latex/contrib/quantumarticle/example-plot.pdf
-2022/03/25 | 58266 | macros/latex/contrib/quantumarticle/quantumarticle.cls
-2022/03/24 | 291173 | macros/latex/contrib/quantumarticle/quantumarticle.pdf
-2022/03/25 | 24396 | macros/latex/contrib/quantumarticle/quantumarticle.tex
-2022/03/25 | 15316 | macros/latex/contrib/quantumarticle/quantum-bibliographystyle-demo.bib
-2022/03/24 | 261448 | macros/latex/contrib/quantumarticle/quantum-bibliographystyle-demo.pdf
-2022/03/25 | 17289 | macros/latex/contrib/quantumarticle/quantum-bibliographystyle-demo.tex
-2022/03/25 | 44755 | macros/latex/contrib/quantumarticle/quantum.bst
-2022/03/24 | 435047 | macros/latex/contrib/quantumarticle/quantum-template.pdf
-2022/03/25 | 18431 | macros/latex/contrib/quantumarticle/quantum-template.tex
-2022/03/25 | 36389 | macros/latex/contrib/quantumarticle/quantumview.cls
-2022/03/25 | 1428 | macros/latex/contrib/quantumarticle/quantumview-template.bib
+2022/12/11 | 58247 | macros/latex/contrib/quantumarticle/quantumarticle.cls
+2022/12/10 | 261220 | macros/latex/contrib/quantumarticle/quantumarticle.pdf
+2022/12/11 | 24305 | macros/latex/contrib/quantumarticle/quantumarticle.tex
+2022/12/11 | 15341 | macros/latex/contrib/quantumarticle/quantum-bibliographystyle-demo.bib
+2022/12/10 | 265403 | macros/latex/contrib/quantumarticle/quantum-bibliographystyle-demo.pdf
+2022/12/11 | 17941 | macros/latex/contrib/quantumarticle/quantum-bibliographystyle-demo.tex
+2022/12/11 | 45228 | macros/latex/contrib/quantumarticle/quantum.bst
+2022/12/10 | 438812 | macros/latex/contrib/quantumarticle/quantum-template.pdf
+2022/12/11 | 18821 | macros/latex/contrib/quantumarticle/quantum-template.tex
+2022/12/11 | 36389 | macros/latex/contrib/quantumarticle/quantumview.cls
+2022/12/11 | 1428 | macros/latex/contrib/quantumarticle/quantumview-template.bib
2022/03/24 | 264391 | macros/latex/contrib/quantumarticle/quantumview-template.pdf
-2022/03/25 | 3846 | macros/latex/contrib/quantumarticle/quantumview-template.tex
-2022/03/25 | 8033 | macros/latex/contrib/quantumarticle/README.md
-2022/03/25 | 1324351 | macros/latex/contrib/quantumarticle.zip
+2022/12/11 | 3846 | macros/latex/contrib/quantumarticle/quantumview-template.tex
+2022/12/11 | 8348 | macros/latex/contrib/quantumarticle/README.md
+2022/12/11 | 1332962 | macros/latex/contrib/quantumarticle.zip
2016/09/28 | 13334 | macros/latex/contrib/quicktype/QT.png
2016/09/28 | 121926 | macros/latex/contrib/quicktype/Quicktype.pdf
2016/09/28 | 48326 | macros/latex/contrib/quicktype/QuicktypeSample.pdf
@@ -233838,18 +233838,18 @@
2017/05/01 | 3024 | macros/latex/contrib/thaienum/thaienum.sty
2017/05/01 | 25851 | macros/latex/contrib/thaienum/thaienum.tex
2017/05/01 | 188056 | macros/latex/contrib/thaienum.zip
-2022/10/09 | 3108 | macros/latex/contrib/thalie/CHANGELOG.md
-2022/10/09 | 1001 | macros/latex/contrib/thalie/dicts/thalie-english.trsl
-2022/10/09 | 1643 | macros/latex/contrib/thalie/dicts/thalie-fallback.trsl
-2022/10/09 | 1027 | macros/latex/contrib/thalie/dicts/thalie-french.trsl
-2022/10/09 | 1067 | macros/latex/contrib/thalie/dicts/thalie-german.trsl
-2022/10/09 | 1022 | macros/latex/contrib/thalie/dicts/thalie-italian.trsl
-2022/10/09 | 19106 | macros/latex/contrib/thalie/LICENSE.txt
-2022/10/09 | 1582 | macros/latex/contrib/thalie/README.md
-2022/10/09 | 78784 | macros/latex/contrib/thalie/thalie.dtx
-2022/10/09 | 2167 | macros/latex/contrib/thalie/thalie.ins
-2022/10/09 | 484998 | macros/latex/contrib/thalie/thalie.pdf
-2022/10/09 | 501727 | macros/latex/contrib/thalie.zip
+2022/12/11 | 3513 | macros/latex/contrib/thalie/CHANGELOG.md
+2022/12/11 | 1001 | macros/latex/contrib/thalie/dicts/thalie-english.trsl
+2022/12/11 | 1643 | macros/latex/contrib/thalie/dicts/thalie-fallback.trsl
+2022/12/11 | 1027 | macros/latex/contrib/thalie/dicts/thalie-french.trsl
+2022/12/11 | 1067 | macros/latex/contrib/thalie/dicts/thalie-german.trsl
+2022/12/11 | 1022 | macros/latex/contrib/thalie/dicts/thalie-italian.trsl
+2022/12/11 | 19106 | macros/latex/contrib/thalie/LICENSE.txt
+2022/12/11 | 1526 | macros/latex/contrib/thalie/README.md
+2022/12/11 | 242799 | macros/latex/contrib/thalie/thalie.pdf
+2022/12/11 | 18740 | macros/latex/contrib/thalie/thalie.sty
+2022/12/11 | 54308 | macros/latex/contrib/thalie/thalie.tex
+2022/12/11 | 265735 | macros/latex/contrib/thalie.zip
2016/11/17 | 8537 | macros/latex/contrib/theatre/doc/help_source/createrules.tex
2016/11/17 | 9150 | macros/latex/contrib/theatre/doc/help_source/creerlesroles.tex
2016/11/17 | 5003 | macros/latex/contrib/theatre/doc/help_source/ExampleMacBeth.tex
@@ -235238,60 +235238,60 @@
2010/12/07 | 1604 | macros/latex/contrib/tucv/tucv.ins
2010/12/07 | 180557 | macros/latex/contrib/tucv/tucv.pdf
2010/12/06 | 260987 | macros/latex/contrib/tucv.zip
-2022/11/04 | 551914 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdf
-2022/11/04 | 598742 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdf
-2022/11/04 | 570428 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdf
-2022/11/04 | 559873 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdf
-2022/11/04 | 567047 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdf
-2022/11/04 | 635903 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdf
-2022/11/04 | 536024 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdf
-2022/11/04 | 662322 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdf
-2022/11/04 | 527090 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdf
-2022/11/04 | 563674 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdf
-2022/11/04 | 627530 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdf
-2022/11/04 | 3175 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex
-2022/11/04 | 7336 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex
-2022/11/04 | 2644 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib
-2022/11/04 | 16613 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex
-2022/11/04 | 3871 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco
-2022/11/04 | 6881 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex
-2022/11/04 | 5391 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex
-2022/11/04 | 28251 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex
-2022/11/04 | 5859 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex
-2022/11/04 | 29286 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex
-2022/11/04 | 2350 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex
-2022/11/04 | 8887 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex
-2022/11/04 | 28136 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex
-2022/11/04 | 17443 | macros/latex/contrib/tuda-ci/README.md
-2022/11/04 | 3815 | macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty
-2022/11/04 | 2180 | macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty
-2022/11/04 | 8579 | macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty
-2022/11/04 | 9376 | macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty
-2022/11/04 | 10078 | macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa-mecheng.sty
-2022/11/04 | 2172 | macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty
-2022/11/04 | 1685 | macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo
-2022/11/04 | 1684 | macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo
-2022/11/04 | 1680 | macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo
-2022/11/04 | 1682 | macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo
-2022/11/04 | 1684 | macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo
-2022/11/04 | 1686 | macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo
-2022/11/04 | 7022 | macros/latex/contrib/tuda-ci/tex/tudabeamer.cls
-2022/11/04 | 4441 | macros/latex/contrib/tuda-ci/tex/tudacolors.def
-2022/11/04 | 6041 | macros/latex/contrib/tuda-ci/tex/tudacolors.sty
-2022/11/04 | 32972 | macros/latex/contrib/tuda-ci/tex/tudaexercise.cls
-2022/11/04 | 3287 | macros/latex/contrib/tuda-ci/tex/tudafonts.sty
-2022/11/04 | 14150 | macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls
-2022/11/04 | 16909 | macros/latex/contrib/tuda-ci/tex/tudaletter.cls
-2022/11/04 | 5381 | macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo
-2022/11/04 | 9751 | macros/latex/contrib/tuda-ci/tex/tudamecheng.cfg
-2022/11/04 | 4328 | macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty
-2022/11/04 | 19801 | macros/latex/contrib/tuda-ci/tex/tudaposter.cls
-2022/11/04 | 43218 | macros/latex/contrib/tuda-ci/tex/tudapub.cls
-2022/11/04 | 6466 | macros/latex/contrib/tuda-ci/tex/tudarules.sty
-2022/11/04 | 19503 | macros/latex/contrib/tuda-ci/tex/tudasciposter.cls
-2022/11/04 | 5433 | macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo
-2022/11/04 | 32496 | macros/latex/contrib/tuda-ci/tex/tudathesis.cfg
-2022/11/04 | 6443082 | macros/latex/contrib/tuda-ci.zip
+2022/12/11 | 551834 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdf
+2022/12/11 | 598742 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdf
+2022/12/11 | 570428 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdf
+2022/12/11 | 559873 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdf
+2022/12/11 | 567048 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdf
+2022/12/11 | 635934 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdf
+2022/12/11 | 536023 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdf
+2022/12/11 | 662413 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdf
+2022/12/11 | 527003 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdf
+2022/12/11 | 563674 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdf
+2022/12/11 | 627537 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdf
+2022/12/11 | 3175 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex
+2022/12/11 | 7336 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex
+2022/12/11 | 2644 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib
+2022/12/11 | 16613 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex
+2022/12/11 | 3871 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco
+2022/12/11 | 6881 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex
+2022/12/11 | 5391 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex
+2022/12/11 | 28251 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex
+2022/12/11 | 5859 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex
+2022/12/11 | 29286 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex
+2022/12/11 | 2350 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex
+2022/12/11 | 8887 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex
+2022/12/11 | 28136 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex
+2022/12/11 | 17634 | macros/latex/contrib/tuda-ci/README.md
+2022/12/11 | 3815 | macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty
+2022/12/11 | 2180 | macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty
+2022/12/11 | 8579 | macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty
+2022/12/11 | 9376 | macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty
+2022/12/11 | 10078 | macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa-mecheng.sty
+2022/12/11 | 2172 | macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty
+2022/12/11 | 1685 | macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo
+2022/12/11 | 1684 | macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo
+2022/12/11 | 1680 | macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo
+2022/12/11 | 1682 | macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo
+2022/12/11 | 1684 | macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo
+2022/12/11 | 1686 | macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo
+2022/12/11 | 7022 | macros/latex/contrib/tuda-ci/tex/tudabeamer.cls
+2022/12/11 | 4441 | macros/latex/contrib/tuda-ci/tex/tudacolors.def
+2022/12/11 | 6041 | macros/latex/contrib/tuda-ci/tex/tudacolors.sty
+2022/12/11 | 33060 | macros/latex/contrib/tuda-ci/tex/tudaexercise.cls
+2022/12/11 | 3287 | macros/latex/contrib/tuda-ci/tex/tudafonts.sty
+2022/12/11 | 14150 | macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls
+2022/12/11 | 16909 | macros/latex/contrib/tuda-ci/tex/tudaletter.cls
+2022/12/11 | 5381 | macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo
+2022/12/11 | 9751 | macros/latex/contrib/tuda-ci/tex/tudamecheng.cfg
+2022/12/11 | 4328 | macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty
+2022/12/11 | 19801 | macros/latex/contrib/tuda-ci/tex/tudaposter.cls
+2022/12/11 | 43385 | macros/latex/contrib/tuda-ci/tex/tudapub.cls
+2022/12/11 | 6466 | macros/latex/contrib/tuda-ci/tex/tudarules.sty
+2022/12/11 | 19503 | macros/latex/contrib/tuda-ci/tex/tudasciposter.cls
+2022/12/11 | 5433 | macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo
+2022/12/11 | 32496 | macros/latex/contrib/tuda-ci/tex/tudathesis.cfg
+2022/12/11 | 6443213 | macros/latex/contrib/tuda-ci.zip
2022/08/09 | 1107 | macros/latex/contrib/tudscr/doc/LICENSE.md
2022/08/09 | 1126953 | macros/latex/contrib/tudscr/doc/tudscr.pdf
2022/08/09 | 1111795 | macros/latex/contrib/tudscr/doc/tudscr_print.pdf
@@ -250140,12 +250140,12 @@
2011/05/07 | 5176 | macros/xetex/latex/unisugar/unisugar.sty
2011/05/07 | 25480 | macros/xetex/latex/unisugar/unisugar.tex
2011/05/08 | 495308 | macros/xetex/latex/unisugar.zip
-2022/12/06 | 3125 | macros/xetex/latex/xduts/README.md
-2022/12/06 | 881135 | macros/xetex/latex/xduts/xdulogo.pdf
-2022/12/06 | 252062 | macros/xetex/latex/xduts/xduts.dtx
-2022/12/06 | 1111 | macros/xetex/latex/xduts/xduts.ins
-2022/12/06 | 316974 | macros/xetex/latex/xduts/xduts.pdf
-2022/12/06 | 1242819 | macros/xetex/latex/xduts.zip
+2022/12/11 | 3670 | macros/xetex/latex/xduts/README.md
+2022/12/11 | 881135 | macros/xetex/latex/xduts/xdulogo.pdf
+2022/12/11 | 254826 | macros/xetex/latex/xduts/xduts.dtx
+2022/12/11 | 1111 | macros/xetex/latex/xduts/xduts.ins
+2022/12/11 | 321917 | macros/xetex/latex/xduts/xduts.pdf
+2022/12/11 | 1248222 | macros/xetex/latex/xduts.zip
2017/08/03 | 11999 | macros/xetex/latex/xechangebar/cbtest1.tex
2017/08/03 | 338 | macros/xetex/latex/xechangebar/README
2017/08/03 | 35213 | macros/xetex/latex/xechangebar/xechangebar.sty
@@ -279958,7 +279958,7 @@
2021/05/03 | 629 | support/TeX4ht/doc/README
2020/08/24 | 358454 | support/TeX4ht/doc/TeX4ht-doc.tex
2021/05/11 | 262 | support/TeX4ht/README
-2022/12/09 | 211044 | support/TeX4ht/source/ChangeLog
+2022/12/10 | 211240 | support/TeX4ht/source/ChangeLog
2021/05/03 | 1375 | support/TeX4ht/source/checklog.lua
2021/05/03 | 1189 | support/TeX4ht/source/common-code.tex
2021/05/03 | 2727 | support/TeX4ht/source/common-info.tex
@@ -279970,7 +279970,7 @@
2021/05/03 | 1121 | support/TeX4ht/source/README
2021/05/03 | 1744 | support/TeX4ht/source/t1fontmake.lua
2021/05/03 | 297 | support/TeX4ht/source/t1fontsample.tex
-2022/12/09 | 1151095 | support/TeX4ht/source/tex4ht-4ht.tex
+2022/12/10 | 1151104 | support/TeX4ht/source/tex4ht-4ht.tex
2021/05/03 | 7127 | support/TeX4ht/source/tex4ht-auto-script.tex
2021/05/16 | 1539 | support/TeX4ht/source/tex4ht-bibtex2.tex
2022/06/05 | 21307 | support/TeX4ht/source/tex4ht-cond4ht.tex
@@ -284814,8 +284814,8 @@
2022/08/24 | 20600 | systems/texlive/tlnet/archive/beamerswitch.source.r64182.tar.xz
2022/09/13 | 690552 | systems/texlive/tlnet/archive/beamerthemeamurmaple.doc.r64346.tar.xz
2022/09/13 | 6028 | systems/texlive/tlnet/archive/beamerthemeamurmaple.r64346.tar.xz
-2022/06/23 | 848076 | systems/texlive/tlnet/archive/beamertheme-arguelles.doc.r63691.tar.xz
-2022/06/23 | 2116 | systems/texlive/tlnet/archive/beamertheme-arguelles.r63691.tar.xz
+2022/12/11 | 1012920 | systems/texlive/tlnet/archive/beamertheme-arguelles.doc.r65234.tar.xz
+2022/12/11 | 2676 | systems/texlive/tlnet/archive/beamertheme-arguelles.r65234.tar.xz
2019/02/28 | 332524 | systems/texlive/tlnet/archive/beamertheme-cuerna.doc.r42161.tar.xz
2019/02/28 | 2492 | systems/texlive/tlnet/archive/beamertheme-cuerna.r42161.tar.xz
2019/02/28 | 4008 | systems/texlive/tlnet/archive/beamertheme-cuerna.source.r42161.tar.xz
@@ -284866,7 +284866,7 @@
2020/04/22 | 5992 | systems/texlive/tlnet/archive/bearwear.source.r54826.tar.xz
2022/09/04 | 476940 | systems/texlive/tlnet/archive/beaulivre.doc.r64280.tar.xz
2022/09/04 | 4628 | systems/texlive/tlnet/archive/beaulivre.r64280.tar.xz
-2022/11/21 | 894364 | systems/texlive/tlnet/archive/beebe.r65056.tar.xz
+2022/12/11 | 898760 | systems/texlive/tlnet/archive/beebe.r65233.tar.xz
2022/05/08 | 785552 | systems/texlive/tlnet/archive/begingreek.doc.r63255.tar.xz
2022/05/08 | 1808 | systems/texlive/tlnet/archive/begingreek.r63255.tar.xz
2022/05/08 | 7856 | systems/texlive/tlnet/archive/begingreek.source.r63255.tar.xz
@@ -291711,9 +291711,9 @@
2019/02/28 | 3124 | systems/texlive/tlnet/archive/milog.r41610.tar.xz
2020/03/17 | 1565768 | systems/texlive/tlnet/archive/milsymb.doc.r54361.tar.xz
2020/03/17 | 22172 | systems/texlive/tlnet/archive/milsymb.r54361.tar.xz
-2022/02/02 | 195724 | systems/texlive/tlnet/archive/mindflow.doc.r61843.tar.xz
-2022/02/02 | 2548 | systems/texlive/tlnet/archive/mindflow.r61843.tar.xz
-2022/02/02 | 6572 | systems/texlive/tlnet/archive/mindflow.source.r61843.tar.xz
+2022/12/11 | 202452 | systems/texlive/tlnet/archive/mindflow.doc.r65236.tar.xz
+2022/12/11 | 2536 | systems/texlive/tlnet/archive/mindflow.r65236.tar.xz
+2022/12/11 | 6520 | systems/texlive/tlnet/archive/mindflow.source.r65236.tar.xz
2019/02/28 | 281540 | systems/texlive/tlnet/archive/minibox.doc.r30914.tar.xz
2019/02/28 | 1052 | systems/texlive/tlnet/archive/minibox.r30914.tar.xz
2019/02/28 | 3056 | systems/texlive/tlnet/archive/minibox.source.r30914.tar.xz
@@ -292251,9 +292251,9 @@
2019/02/28 | 1172 | systems/texlive/tlnet/archive/nextpage.r15878.tar.xz
2019/02/28 | 184888 | systems/texlive/tlnet/archive/nfssext-cfr.doc.r43640.tar.xz
2019/02/28 | 5276 | systems/texlive/tlnet/archive/nfssext-cfr.r43640.tar.xz
-2019/02/28 | 598780 | systems/texlive/tlnet/archive/nicefilelist.doc.r28527.tar.xz
-2019/02/28 | 6364 | systems/texlive/tlnet/archive/nicefilelist.r28527.tar.xz
-2019/02/28 | 7160 | systems/texlive/tlnet/archive/nicefilelist.source.r28527.tar.xz
+2022/12/11 | 600708 | systems/texlive/tlnet/archive/nicefilelist.doc.r65235.tar.xz
+2022/12/11 | 6392 | systems/texlive/tlnet/archive/nicefilelist.r65235.tar.xz
+2022/12/11 | 7364 | systems/texlive/tlnet/archive/nicefilelist.source.r65235.tar.xz
2019/02/28 | 225404 | systems/texlive/tlnet/archive/niceframe.doc.r36086.tar.xz
2019/02/28 | 34512 | systems/texlive/tlnet/archive/niceframe.r36086.tar.xz
2019/02/28 | 7064 | systems/texlive/tlnet/archive/niceframe.source.r36086.tar.xz
@@ -295329,14 +295329,14 @@
2022/02/27 | 108804 | systems/texlive/tlnet/archive/tex4ht.amd64-freebsd.r62206.tar.xz
2022/02/27 | 87364 | systems/texlive/tlnet/archive/tex4ht.amd64-netbsd.r62220.tar.xz
2022/04/21 | 69948 | systems/texlive/tlnet/archive/tex4ht.armhf-linux.r63092.tar.xz
-2022/12/10 | 136384 | systems/texlive/tlnet/archive/tex4ht.doc.r65231.tar.xz
+2022/12/11 | 136384 | systems/texlive/tlnet/archive/tex4ht.doc.r65237.tar.xz
2022/03/01 | 58328 | systems/texlive/tlnet/archive/tex4ht.i386-cygwin.r62282.tar.xz
2022/02/27 | 93760 | systems/texlive/tlnet/archive/tex4ht.i386-freebsd.r62206.tar.xz
2022/02/27 | 91280 | systems/texlive/tlnet/archive/tex4ht.i386-linux.r62210.tar.xz
2022/02/27 | 76200 | systems/texlive/tlnet/archive/tex4ht.i386-netbsd.r62220.tar.xz
2022/02/27 | 83964 | systems/texlive/tlnet/archive/tex4ht.i386-solaris.r62206.tar.xz
-2022/12/10 | 976252 | systems/texlive/tlnet/archive/tex4ht.r65231.tar.xz
-2022/12/10 | 1288856 | systems/texlive/tlnet/archive/tex4ht.source.r65231.tar.xz
+2022/12/11 | 976280 | systems/texlive/tlnet/archive/tex4ht.r65237.tar.xz
+2022/12/11 | 1297964 | systems/texlive/tlnet/archive/tex4ht.source.r65237.tar.xz
2022/02/28 | 184748 | systems/texlive/tlnet/archive/tex4ht.universal-darwin.r62258.tar.xz
2022/02/27 | 57768 | systems/texlive/tlnet/archive/tex4ht.win32.r62199.tar.xz
2022/03/01 | 58016 | systems/texlive/tlnet/archive/tex4ht.x86_64-cygwin.r62279.tar.xz
@@ -295590,7 +295590,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
-2022/12/10 | 423416 | systems/texlive/tlnet/archive/texlive-scripts.doc.r65227.tar.xz
+2022/12/11 | 423420 | systems/texlive/tlnet/archive/texlive-scripts.doc.r65233.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
@@ -295614,7 +295614,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
-2022/12/10 | 113652 | systems/texlive/tlnet/archive/texlive-scripts.r65227.tar.xz
+2022/12/11 | 113664 | systems/texlive/tlnet/archive/texlive-scripts.r65233.tar.xz
2022/09/13 | 580 | systems/texlive/tlnet/archive/texlive-scripts.universal-darwin.r64356.tar.xz
2022/11/29 | 36264 | systems/texlive/tlnet/archive/texlive-scripts.win32.r65128.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.x86_64-cygwin.r64356.tar.xz
@@ -297465,16 +297465,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
2022/07/17 | 124404 | systems/texlive/tlnet/install-tl
-2022/12/10 | 5834240 | systems/texlive/tlnet/install-tl-unx.tar.gz
-2022/12/10 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
-2022/12/10 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2022/12/11 | 5834301 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2022/12/11 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2022/12/11 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
2021/04/11 | 4945 | systems/texlive/tlnet/install-tl-windows.bat
-2022/12/10 | 20433315 | systems/texlive/tlnet/install-tl-windows.exe
-2022/12/10 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
-2022/12/10 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2022/12/10 | 25518478 | systems/texlive/tlnet/install-tl.zip
-2022/12/10 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
-2022/12/10 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2022/12/11 | 20435288 | systems/texlive/tlnet/install-tl-windows.exe
+2022/12/11 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2022/12/11 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2022/12/11 | 25518494 | systems/texlive/tlnet/install-tl.zip
+2022/12/11 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2022/12/11 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
2022/04/03 | 1229 | systems/texlive/tlnet/README.md
2022/04/03 | 0 | systems/texlive/tlnet/TEXLIVE_2022
2022/02/28 | 7791 | systems/texlive/tlnet/tlpkg/gpg/pubring.gpg
@@ -297484,7 +297484,7 @@
2022/02/28 | 1280 | systems/texlive/tlnet/tlpkg/gpg/trustdb.gpg
2022/10/09 | 49938 | systems/texlive/tlnet/tlpkg/installer/config.guess
2010/11/11 | 11651 | systems/texlive/tlnet/tlpkg/installer/COPYING.MinGW-runtime.txt
-2022/12/09 | 7084 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
+2022/12/10 | 7159 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2022/10/13 | 225403 | 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
@@ -297527,12 +297527,12 @@
2021/05/16 | 20371 | systems/texlive/tlnet/tlpkg/TeXLive/TLCrypto.pm
2021/12/21 | 5429 | systems/texlive/tlnet/tlpkg/TeXLive/TLDownload.pm
2021/12/21 | 27582 | systems/texlive/tlnet/tlpkg/TeXLive/TLPaper.pm
-2022/12/10 | 17886857 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
-2022/12/10 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2022/12/11 | 17886810 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2022/12/11 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
2022/04/18 | 86658 | systems/texlive/tlnet/tlpkg/TeXLive/TLPDB.pm
-2022/12/10 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
-2022/12/10 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2022/12/10 | 2431948 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2022/12/11 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2022/12/11 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2022/12/11 | 2432352 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
2022/09/14 | 58922 | systems/texlive/tlnet/tlpkg/TeXLive/TLPOBJ.pm
2022/10/04 | 42404 | systems/texlive/tlnet/tlpkg/TeXLive/TLPSRC.pm
2021/12/21 | 16130 | systems/texlive/tlnet/tlpkg/TeXLive/TLTREE.pm
@@ -301473,9 +301473,9 @@
2022/09/13 | 515066 | systems/win32/miktex/tm/packages/beamerthemeamurmaple__doc.tar.lzma
2022/09/13 | 176863 | systems/win32/miktex/tm/packages/beamerthemeamurmaple__source.tar.lzma
2022/09/13 | 6241 | systems/win32/miktex/tm/packages/beamerthemeamurmaple.tar.lzma
-2022/06/26 | 852244 | systems/win32/miktex/tm/packages/beamertheme-arguelles__doc.tar.lzma
+2022/12/11 | 1018292 | systems/win32/miktex/tm/packages/beamertheme-arguelles__doc.tar.lzma
2022/06/26 | 955 | systems/win32/miktex/tm/packages/beamertheme-arguelles__source.tar.lzma
-2022/06/26 | 2333 | systems/win32/miktex/tm/packages/beamertheme-arguelles.tar.lzma
+2022/12/11 | 2891 | systems/win32/miktex/tm/packages/beamertheme-arguelles.tar.lzma
2016/10/04 | 457031 | systems/win32/miktex/tm/packages/beamertheme-cuerna.tar.lzma
2015/12/08 | 1525974 | systems/win32/miktex/tm/packages/beamertheme-detlevcm.tar.lzma
2016/05/31 | 168629 | systems/win32/miktex/tm/packages/beamertheme-epyt.tar.lzma
@@ -302034,8 +302034,8 @@
2022/05/04 | 6254 | systems/win32/miktex/tm/packages/circledtext.tar.lzma
2010/03/08 | 182332 | systems/win32/miktex/tm/packages/circle.tar.lzma
2009/07/13 | 270032 | systems/win32/miktex/tm/packages/circ.tar.lzma
-2022/11/15 | 1721800 | systems/win32/miktex/tm/packages/circuitikz__doc.tar.lzma
-2022/11/15 | 161620 | systems/win32/miktex/tm/packages/circuitikz.tar.lzma
+2022/12/11 | 1753610 | systems/win32/miktex/tm/packages/circuitikz__doc.tar.lzma
+2022/12/11 | 189122 | systems/win32/miktex/tm/packages/circuitikz.tar.lzma
2004/11/28 | 18758 | systems/win32/miktex/tm/packages/cirth.cab
2022/10/06 | 233692 | systems/win32/miktex/tm/packages/citation-style-language__doc.tar.lzma
2022/01/24 | 1742 | systems/win32/miktex/tm/packages/citation-style-language__source.tar.lzma
@@ -302975,7 +302975,7 @@
2022/11/01 | 5115 | systems/win32/miktex/tm/packages/filehook.tar.lzma
2012/12/04 | 924573 | systems/win32/miktex/tm/packages/fileinfo.tar.lzma
2011/09/21 | 281409 | systems/win32/miktex/tm/packages/filemod.tar.lzma
-2022/12/10 | 750235 | systems/win32/miktex/tm/packages/files.csv.lzma
+2022/12/11 | 750777 | systems/win32/miktex/tm/packages/files.csv.lzma
2001/05/14 | 5617 | systems/win32/miktex/tm/packages/finbib.tar.lzma
2015/10/20 | 44379 | systems/win32/miktex/tm/packages/findhyph.tar.lzma
2011/10/21 | 89323 | systems/win32/miktex/tm/packages/fink.tar.lzma
@@ -304527,248 +304527,248 @@
2016/07/16 | 344819 | systems/win32/miktex/tm/packages/midnight.tar.lzma
2010/03/16 | 190135 | systems/win32/miktex/tm/packages/midpage.tar.lzma
2022/07/26 | 51788 | systems/win32/miktex/tm/packages/miktex-arctrl-bin-2.9.tar.lzma
-2022/11/25 | 57210 | systems/win32/miktex/tm/packages/miktex-arctrl-bin-x64-2.9.tar.lzma
+2022/12/11 | 57192 | systems/win32/miktex/tm/packages/miktex-arctrl-bin-x64-2.9.tar.lzma
2022/07/26 | 1023495 | systems/win32/miktex/tm/packages/miktex-asymptote-bin-2.9.tar.lzma
-2022/11/25 | 1168019 | systems/win32/miktex/tm/packages/miktex-asymptote-bin-x64-2.9.tar.lzma
+2022/12/11 | 1168244 | systems/win32/miktex/tm/packages/miktex-asymptote-bin-x64-2.9.tar.lzma
2022/07/26 | 28812 | systems/win32/miktex/tm/packages/miktex-autosp-bin-2.9.tar.lzma
-2022/11/25 | 31769 | systems/win32/miktex/tm/packages/miktex-autosp-bin-x64-2.9.tar.lzma
+2022/12/11 | 31697 | systems/win32/miktex/tm/packages/miktex-autosp-bin-x64-2.9.tar.lzma
2022/07/26 | 30075 | systems/win32/miktex/tm/packages/miktex-axohelp-bin-2.9.tar.lzma
-2022/11/25 | 35340 | systems/win32/miktex/tm/packages/miktex-axohelp-bin-x64-2.9.tar.lzma
+2022/12/11 | 35269 | systems/win32/miktex/tm/packages/miktex-axohelp-bin-x64-2.9.tar.lzma
2022/07/26 | 56698 | systems/win32/miktex/tm/packages/miktex-bibarts-bin-2.9.tar.lzma
-2022/11/25 | 65886 | systems/win32/miktex/tm/packages/miktex-bibarts-bin-x64-2.9.tar.lzma
+2022/12/11 | 65857 | systems/win32/miktex/tm/packages/miktex-bibarts-bin-x64-2.9.tar.lzma
2022/07/26 | 83765 | systems/win32/miktex/tm/packages/miktex-bibtex8bit-bin-2.9.tar.lzma
-2022/11/25 | 101696 | systems/win32/miktex/tm/packages/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
+2022/12/11 | 101500 | systems/win32/miktex/tm/packages/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
2022/07/26 | 69127 | systems/win32/miktex/tm/packages/miktex-bibtex-bin-2.9.tar.lzma
-2022/11/25 | 77610 | systems/win32/miktex/tm/packages/miktex-bibtex-bin-x64-2.9.tar.lzma
+2022/12/11 | 77632 | systems/win32/miktex/tm/packages/miktex-bibtex-bin-x64-2.9.tar.lzma
2022/07/26 | 27365 | systems/win32/miktex/tm/packages/miktex-bzip2-bin-2.9.tar.lzma
-2022/11/25 | 31582 | systems/win32/miktex/tm/packages/miktex-bzip2-bin-x64-2.9.tar.lzma
+2022/12/11 | 31598 | systems/win32/miktex/tm/packages/miktex-bzip2-bin-x64-2.9.tar.lzma
2022/07/26 | 332598 | systems/win32/miktex/tm/packages/miktex-cairo-bin-2.9.tar.lzma
-2022/11/25 | 394923 | systems/win32/miktex/tm/packages/miktex-cairo-bin-x64-2.9.tar.lzma
+2022/12/11 | 394702 | systems/win32/miktex/tm/packages/miktex-cairo-bin-x64-2.9.tar.lzma
2013/06/24 | 447360 | systems/win32/miktex/tm/packages/miktex-cairo-bin-x86-2.9.tar.lzma
2022/07/26 | 32659 | systems/win32/miktex/tm/packages/miktex-chktex-bin-2.9.tar.lzma
-2022/11/25 | 37121 | systems/win32/miktex/tm/packages/miktex-chktex-bin-x64-2.9.tar.lzma
+2022/12/11 | 38825 | systems/win32/miktex/tm/packages/miktex-chktex-bin-x64-2.9.tar.lzma
2022/07/26 | 51394 | systems/win32/miktex/tm/packages/miktex-cjkutils-bin-2.9.tar.lzma
-2022/11/25 | 57959 | systems/win32/miktex/tm/packages/miktex-cjkutils-bin-x64-2.9.tar.lzma
+2022/12/11 | 57860 | systems/win32/miktex/tm/packages/miktex-cjkutils-bin-x64-2.9.tar.lzma
2022/03/12 | 5022 | systems/win32/miktex/tm/packages/miktex-config-2.9.tar.lzma
2022/07/26 | 244550 | systems/win32/miktex/tm/packages/miktex-console-bin-2.9.tar.lzma
-2022/11/25 | 271188 | systems/win32/miktex/tm/packages/miktex-console-bin-x64-2.9.tar.lzma
+2022/12/11 | 271111 | systems/win32/miktex/tm/packages/miktex-console-bin-x64-2.9.tar.lzma
2022/07/26 | 179664 | systems/win32/miktex/tm/packages/miktex-curl-bin-2.9.tar.lzma
-2022/11/25 | 196603 | systems/win32/miktex/tm/packages/miktex-curl-bin-x64-2.9.tar.lzma
+2022/12/11 | 196600 | systems/win32/miktex/tm/packages/miktex-curl-bin-x64-2.9.tar.lzma
2022/07/26 | 93078 | systems/win32/miktex/tm/packages/miktex-cweb-bin-2.9.tar.lzma
-2022/11/25 | 103568 | systems/win32/miktex/tm/packages/miktex-cweb-bin-x64-2.9.tar.lzma
+2022/12/11 | 103535 | systems/win32/miktex/tm/packages/miktex-cweb-bin-x64-2.9.tar.lzma
2022/07/26 | 21304 | systems/win32/miktex/tm/packages/miktex-devnag-bin-2.9.tar.lzma
-2022/11/25 | 24055 | systems/win32/miktex/tm/packages/miktex-devnag-bin-x64-2.9.tar.lzma
+2022/12/11 | 24059 | systems/win32/miktex/tm/packages/miktex-devnag-bin-x64-2.9.tar.lzma
2020/02/07 | 785398 | systems/win32/miktex/tm/packages/miktex-dict-british.tar.lzma
2016/11/02 | 171725 | systems/win32/miktex/tm/packages/miktex-dict-english.tar.lzma
2016/11/02 | 292320 | systems/win32/miktex/tm/packages/miktex-dict-french.tar.lzma
2016/11/02 | 967418 | systems/win32/miktex/tm/packages/miktex-dict-german.tar.lzma
2020/05/17 | 460366 | systems/win32/miktex/tm/packages/miktex-doc-2.9.tar.lzma
-2022/11/25 | 473816 | systems/win32/miktex/tm/packages/miktex-doc.tar.lzma
+2022/12/11 | 473624 | systems/win32/miktex/tm/packages/miktex-doc.tar.lzma
2022/07/26 | 46387 | systems/win32/miktex/tm/packages/miktex-dvicopy-bin-2.9.tar.lzma
-2022/11/25 | 52731 | systems/win32/miktex/tm/packages/miktex-dvicopy-bin-x64-2.9.tar.lzma
+2022/12/11 | 52624 | systems/win32/miktex/tm/packages/miktex-dvicopy-bin-x64-2.9.tar.lzma
2022/07/26 | 285874 | systems/win32/miktex/tm/packages/miktex-dvipdfmx-bin-2.9.tar.lzma
-2022/11/25 | 327036 | systems/win32/miktex/tm/packages/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
+2022/12/11 | 327447 | systems/win32/miktex/tm/packages/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
2021/11/30 | 5049 | systems/win32/miktex/tm/packages/miktex-dvipdfmx.tar.lzma
2022/07/26 | 41442 | systems/win32/miktex/tm/packages/miktex-dvipng-bin-2.9.tar.lzma
-2022/11/25 | 45756 | systems/win32/miktex/tm/packages/miktex-dvipng-bin-x64-2.9.tar.lzma
+2022/12/11 | 45707 | systems/win32/miktex/tm/packages/miktex-dvipng-bin-x64-2.9.tar.lzma
2022/07/26 | 120742 | systems/win32/miktex/tm/packages/miktex-dvips-bin-2.9.tar.lzma
-2022/11/25 | 135969 | systems/win32/miktex/tm/packages/miktex-dvips-bin-x64-2.9.tar.lzma
+2022/12/11 | 136093 | systems/win32/miktex/tm/packages/miktex-dvips-bin-x64-2.9.tar.lzma
2017/04/09 | 4195 | systems/win32/miktex/tm/packages/miktex-dvips.tar.lzma
2022/07/26 | 1311595 | systems/win32/miktex/tm/packages/miktex-dvisvgm-bin-2.9.tar.lzma
-2022/11/25 | 1458983 | systems/win32/miktex/tm/packages/miktex-dvisvgm-bin-x64-2.9.tar.lzma
+2022/12/11 | 1459611 | systems/win32/miktex/tm/packages/miktex-dvisvgm-bin-x64-2.9.tar.lzma
2022/07/26 | 99307 | systems/win32/miktex/tm/packages/miktex-epstopdf-bin-2.9.tar.lzma
-2022/11/25 | 121211 | systems/win32/miktex/tm/packages/miktex-epstopdf-bin-x64-2.9.tar.lzma
+2022/12/11 | 121055 | systems/win32/miktex/tm/packages/miktex-epstopdf-bin-x64-2.9.tar.lzma
2016/11/03 | 672 | systems/win32/miktex/tm/packages/miktex-etex.tar.lzma
2022/07/26 | 43659 | systems/win32/miktex/tm/packages/miktex-expat-bin-2.9.tar.lzma
-2022/11/25 | 48929 | systems/win32/miktex/tm/packages/miktex-expat-bin-x64-2.9.tar.lzma
+2022/12/11 | 48935 | systems/win32/miktex/tm/packages/miktex-expat-bin-x64-2.9.tar.lzma
2022/07/26 | 25280 | systems/win32/miktex/tm/packages/miktex-findtexmf-bin-2.9.tar.lzma
-2022/11/25 | 28772 | systems/win32/miktex/tm/packages/miktex-findtexmf-bin-x64-2.9.tar.lzma
+2022/12/11 | 28727 | systems/win32/miktex/tm/packages/miktex-findtexmf-bin-x64-2.9.tar.lzma
2022/07/26 | 56918 | systems/win32/miktex/tm/packages/miktex-fmt-bin-2.9.tar.lzma
-2022/11/25 | 62733 | systems/win32/miktex/tm/packages/miktex-fmt-bin-x64-2.9.tar.lzma
+2022/12/11 | 62737 | systems/win32/miktex/tm/packages/miktex-fmt-bin-x64-2.9.tar.lzma
2015/09/08 | 11241 | systems/win32/miktex/tm/packages/miktex-fontconfig-base.tar.lzma
2022/07/26 | 136111 | systems/win32/miktex/tm/packages/miktex-fontconfig-bin-2.9.tar.lzma
-2022/11/25 | 155796 | systems/win32/miktex/tm/packages/miktex-fontconfig-bin-x64-2.9.tar.lzma
+2022/12/11 | 155441 | systems/win32/miktex/tm/packages/miktex-fontconfig-bin-x64-2.9.tar.lzma
2016/11/04 | 3555 | systems/win32/miktex/tm/packages/miktex-fontconfig.tar.lzma
2022/07/26 | 74078 | systems/win32/miktex/tm/packages/miktex-fonts-bin-2.9.tar.lzma
-2022/11/25 | 79732 | systems/win32/miktex/tm/packages/miktex-fonts-bin-x64-2.9.tar.lzma
+2022/12/11 | 79774 | systems/win32/miktex/tm/packages/miktex-fonts-bin-x64-2.9.tar.lzma
2022/07/26 | 71907 | systems/win32/miktex/tm/packages/miktex-freeglut-bin-2.9.tar.lzma
-2022/11/25 | 81233 | systems/win32/miktex/tm/packages/miktex-freeglut-bin-x64-2.9.tar.lzma
+2022/12/11 | 81476 | systems/win32/miktex/tm/packages/miktex-freeglut-bin-x64-2.9.tar.lzma
2022/07/26 | 259267 | systems/win32/miktex/tm/packages/miktex-freetype2-bin-2.9.tar.lzma
-2022/11/25 | 296258 | systems/win32/miktex/tm/packages/miktex-freetype2-bin-x64-2.9.tar.lzma
+2022/12/11 | 296249 | systems/win32/miktex/tm/packages/miktex-freetype2-bin-x64-2.9.tar.lzma
2022/07/26 | 22141 | systems/win32/miktex/tm/packages/miktex-fribidixetex-bin-2.9.tar.lzma
-2022/11/25 | 25196 | systems/win32/miktex/tm/packages/miktex-fribidixetex-bin-x64-2.9.tar.lzma
+2022/12/11 | 25222 | systems/win32/miktex/tm/packages/miktex-fribidixetex-bin-x64-2.9.tar.lzma
2022/07/26 | 97375 | systems/win32/miktex/tm/packages/miktex-gd-bin-2.9.tar.lzma
-2022/11/25 | 112874 | systems/win32/miktex/tm/packages/miktex-gd-bin-x64-2.9.tar.lzma
+2022/12/11 | 113108 | systems/win32/miktex/tm/packages/miktex-gd-bin-x64-2.9.tar.lzma
2018/09/25 | 10777812 | systems/win32/miktex/tm/packages/miktex-ghostscript-bin.tar.lzma
2018/09/25 | 11056498 | systems/win32/miktex/tm/packages/miktex-ghostscript-bin-x64.tar.lzma
2022/07/26 | 64580 | systems/win32/miktex/tm/packages/miktex-graphite2-bin-2.9.tar.lzma
-2022/11/25 | 73361 | systems/win32/miktex/tm/packages/miktex-graphite2-bin-x64-2.9.tar.lzma
+2022/12/11 | 73287 | systems/win32/miktex/tm/packages/miktex-graphite2-bin-x64-2.9.tar.lzma
2022/07/26 | 96681 | systems/win32/miktex/tm/packages/miktex-gregorio-bin-2.9.tar.lzma
-2022/11/25 | 115775 | systems/win32/miktex/tm/packages/miktex-gregorio-bin-x64-2.9.tar.lzma
+2022/12/11 | 115795 | systems/win32/miktex/tm/packages/miktex-gregorio-bin-x64-2.9.tar.lzma
2022/07/26 | 38665 | systems/win32/miktex/tm/packages/miktex-gsf2pk-bin-2.9.tar.lzma
-2022/11/25 | 44051 | systems/win32/miktex/tm/packages/miktex-gsf2pk-bin-x64-2.9.tar.lzma
+2022/12/11 | 44041 | systems/win32/miktex/tm/packages/miktex-gsf2pk-bin-x64-2.9.tar.lzma
2022/07/26 | 484112 | systems/win32/miktex/tm/packages/miktex-harfbuzz-bin-2.9.tar.lzma
-2022/11/25 | 572484 | systems/win32/miktex/tm/packages/miktex-harfbuzz-bin-x64-2.9.tar.lzma
+2022/12/11 | 571290 | systems/win32/miktex/tm/packages/miktex-harfbuzz-bin-x64-2.9.tar.lzma
2019/09/28 | 1103778 | systems/win32/miktex/tm/packages/miktex-harftex-bin-2.9.tar.lzma
2019/09/28 | 1272652 | systems/win32/miktex/tm/packages/miktex-harftex-bin-x64-2.9.tar.lzma
2022/07/26 | 204264 | systems/win32/miktex/tm/packages/miktex-hitex-bin.tar.lzma
-2022/11/25 | 247398 | systems/win32/miktex/tm/packages/miktex-hitex-bin-x64.tar.lzma
+2022/12/11 | 247415 | systems/win32/miktex/tm/packages/miktex-hitex-bin-x64.tar.lzma
2022/07/26 | 152533 | systems/win32/miktex/tm/packages/miktex-hunspell-bin-2.9.tar.lzma
-2022/11/25 | 175499 | systems/win32/miktex/tm/packages/miktex-hunspell-bin-x64-2.9.tar.lzma
+2022/12/11 | 175460 | systems/win32/miktex/tm/packages/miktex-hunspell-bin-x64-2.9.tar.lzma
2017/11/02 | 7484214 | systems/win32/miktex/tm/packages/miktex-icu-bin.tar.lzma
2022/11/25 | 9247550 | systems/win32/miktex/tm/packages/miktex-icu-bin-x64.tar.lzma
2022/07/26 | 95516 | systems/win32/miktex/tm/packages/miktex-jpeg-bin-2.9.tar.lzma
-2022/11/25 | 109747 | systems/win32/miktex/tm/packages/miktex-jpeg-bin-x64-2.9.tar.lzma
+2022/12/11 | 109694 | systems/win32/miktex/tm/packages/miktex-jpeg-bin-x64-2.9.tar.lzma
2022/07/26 | 16454 | systems/win32/miktex/tm/packages/miktex-kpathsea-bin-2.9.tar.lzma
-2022/11/25 | 18366 | systems/win32/miktex/tm/packages/miktex-kpathsea-bin-x64-2.9.tar.lzma
+2022/12/11 | 18354 | systems/win32/miktex/tm/packages/miktex-kpathsea-bin-x64-2.9.tar.lzma
2022/07/26 | 28492 | systems/win32/miktex/tm/packages/miktex-lacheck-bin-2.9.tar.lzma
-2022/11/25 | 30501 | systems/win32/miktex/tm/packages/miktex-lacheck-bin-x64-2.9.tar.lzma
+2022/12/11 | 30888 | systems/win32/miktex/tm/packages/miktex-lacheck-bin-x64-2.9.tar.lzma
2021/03/18 | 1262 | systems/win32/miktex/tm/packages/miktex-latex.tar.lzma
2022/07/26 | 631347 | systems/win32/miktex/tm/packages/miktex-lcdf-typetools-bin-2.9.tar.lzma
-2022/11/25 | 702393 | systems/win32/miktex/tm/packages/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
+2022/12/11 | 702440 | systems/win32/miktex/tm/packages/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
2022/07/26 | 532312 | systems/win32/miktex/tm/packages/miktex-libressl-bin-2.9.tar.lzma
-2022/11/25 | 599454 | systems/win32/miktex/tm/packages/miktex-libressl-bin-x64-2.9.tar.lzma
+2022/12/11 | 599835 | systems/win32/miktex/tm/packages/miktex-libressl-bin-x64-2.9.tar.lzma
2022/07/26 | 477940 | systems/win32/miktex/tm/packages/miktex-log4cxx-bin-2.9.tar.lzma
-2022/11/25 | 530941 | systems/win32/miktex/tm/packages/miktex-log4cxx-bin-x64-2.9.tar.lzma
+2022/12/11 | 530546 | systems/win32/miktex/tm/packages/miktex-log4cxx-bin-x64-2.9.tar.lzma
2019/01/02 | 71265 | systems/win32/miktex/tm/packages/miktex-lua52-bin-2.9.tar.lzma
2019/01/02 | 80005 | systems/win32/miktex/tm/packages/miktex-lua52-bin-x64-2.9.tar.lzma
2022/07/26 | 94055 | systems/win32/miktex/tm/packages/miktex-lua53-bin-2.9.tar.lzma
-2022/11/25 | 103521 | systems/win32/miktex/tm/packages/miktex-lua53-bin-x64-2.9.tar.lzma
+2022/12/11 | 103771 | systems/win32/miktex/tm/packages/miktex-lua53-bin-x64-2.9.tar.lzma
2022/07/26 | 1733266 | systems/win32/miktex/tm/packages/miktex-luatex-bin-2.9.tar.lzma
-2022/11/27 | 1999208 | systems/win32/miktex/tm/packages/miktex-luatex-bin-x64-2.9.tar.lzma
+2022/12/11 | 2002691 | systems/win32/miktex/tm/packages/miktex-luatex-bin-x64-2.9.tar.lzma
2016/11/06 | 11511 | systems/win32/miktex/tm/packages/miktex-luatex.tar.lzma
2022/07/26 | 67910 | systems/win32/miktex/tm/packages/miktex-lzma-bin-2.9.tar.lzma
-2022/11/25 | 73942 | systems/win32/miktex/tm/packages/miktex-lzma-bin-x64-2.9.tar.lzma
+2022/12/11 | 73953 | systems/win32/miktex/tm/packages/miktex-lzma-bin-x64-2.9.tar.lzma
2022/07/26 | 27717 | systems/win32/miktex/tm/packages/miktex-makeindex-bin-2.9.tar.lzma
-2022/11/25 | 32345 | systems/win32/miktex/tm/packages/miktex-makeindex-bin-x64-2.9.tar.lzma
+2022/12/11 | 32426 | systems/win32/miktex/tm/packages/miktex-makeindex-bin-x64-2.9.tar.lzma
2022/07/26 | 7735 | systems/win32/miktex/tm/packages/miktex-md5-bin-2.9.tar.lzma
-2022/11/25 | 8802 | systems/win32/miktex/tm/packages/miktex-md5-bin-x64-2.9.tar.lzma
+2022/12/11 | 8812 | systems/win32/miktex/tm/packages/miktex-md5-bin-x64-2.9.tar.lzma
2022/07/26 | 190604 | systems/win32/miktex/tm/packages/miktex-metafont-bin-2.9.tar.lzma
-2022/11/25 | 209022 | systems/win32/miktex/tm/packages/miktex-metafont-bin-x64-2.9.tar.lzma
+2022/12/11 | 209096 | systems/win32/miktex/tm/packages/miktex-metafont-bin-x64-2.9.tar.lzma
2016/11/04 | 675 | systems/win32/miktex/tm/packages/miktex-metafont.tar.lzma
2022/07/26 | 251086 | systems/win32/miktex/tm/packages/miktex-metapost-bin-2.9.tar.lzma
-2022/11/25 | 287014 | systems/win32/miktex/tm/packages/miktex-metapost-bin-x64-2.9.tar.lzma
+2022/12/11 | 286796 | systems/win32/miktex/tm/packages/miktex-metapost-bin-x64-2.9.tar.lzma
2016/11/04 | 687 | systems/win32/miktex/tm/packages/miktex-metapost.tar.lzma
2022/07/26 | 99463 | systems/win32/miktex/tm/packages/miktex-mfware-bin-2.9.tar.lzma
-2022/11/25 | 105526 | systems/win32/miktex/tm/packages/miktex-mfware-bin-x64-2.9.tar.lzma
+2022/12/11 | 105431 | systems/win32/miktex/tm/packages/miktex-mfware-bin-x64-2.9.tar.lzma
2022/12/08 | 23104 | systems/win32/miktex/tm/packages/miktex-misc.tar.lzma
2021/12/09 | 64527 | systems/win32/miktex/tm/packages/miktex-mkfntmap-bin-2.9.tar.lzma
2021/12/09 | 74601 | systems/win32/miktex/tm/packages/miktex-mkfntmap-bin-x64-2.9.tar.lzma
2022/07/26 | 126901 | systems/win32/miktex/tm/packages/miktex-mktex-bin-2.9.tar.lzma
-2022/11/25 | 140843 | systems/win32/miktex/tm/packages/miktex-mktex-bin-x64-2.9.tar.lzma
+2022/12/11 | 140633 | systems/win32/miktex/tm/packages/miktex-mktex-bin-x64-2.9.tar.lzma
2022/07/26 | 287501 | systems/win32/miktex/tm/packages/miktex-mo-bin-2.9.tar.lzma
-2022/11/25 | 326824 | systems/win32/miktex/tm/packages/miktex-mo-bin-x64-2.9.tar.lzma
+2022/12/11 | 327094 | systems/win32/miktex/tm/packages/miktex-mo-bin-x64-2.9.tar.lzma
2022/07/26 | 199806 | systems/win32/miktex/tm/packages/miktex-mpfr-bin-2.9.tar.lzma
-2022/11/25 | 181621 | systems/win32/miktex/tm/packages/miktex-mpfr-bin-x64-2.9.tar.lzma
+2022/12/11 | 181759 | systems/win32/miktex/tm/packages/miktex-mpfr-bin-x64-2.9.tar.lzma
2022/07/26 | 49743 | systems/win32/miktex/tm/packages/miktex-mpmcli-bin-2.9.tar.lzma
-2022/11/25 | 55833 | systems/win32/miktex/tm/packages/miktex-mpmcli-bin-x64-2.9.tar.lzma
+2022/12/11 | 55770 | systems/win32/miktex/tm/packages/miktex-mpmcli-bin-x64-2.9.tar.lzma
2022/07/26 | 31439 | systems/win32/miktex/tm/packages/miktex-mspack-bin-2.9.tar.lzma
-2022/11/25 | 35190 | systems/win32/miktex/tm/packages/miktex-mspack-bin-x64-2.9.tar.lzma
+2022/12/11 | 35191 | systems/win32/miktex/tm/packages/miktex-mspack-bin-x64-2.9.tar.lzma
2022/07/26 | 38309 | systems/win32/miktex/tm/packages/miktex-mthelp-bin-2.9.tar.lzma
-2022/11/25 | 43866 | systems/win32/miktex/tm/packages/miktex-mthelp-bin-x64-2.9.tar.lzma
+2022/12/11 | 43809 | systems/win32/miktex/tm/packages/miktex-mthelp-bin-x64-2.9.tar.lzma
2022/07/26 | 43447 | systems/win32/miktex/tm/packages/miktex-mtprint-bin-2.9.tar.lzma
-2022/11/25 | 48021 | systems/win32/miktex/tm/packages/miktex-mtprint-bin-x64-2.9.tar.lzma
+2022/12/11 | 48163 | systems/win32/miktex/tm/packages/miktex-mtprint-bin-x64-2.9.tar.lzma
2022/07/26 | 45780 | systems/win32/miktex/tm/packages/miktex-m-tx-bin-2.9.tar.lzma
-2022/11/25 | 52430 | systems/win32/miktex/tm/packages/miktex-m-tx-bin-x64-2.9.tar.lzma
+2022/12/11 | 52496 | systems/win32/miktex/tm/packages/miktex-m-tx-bin-x64-2.9.tar.lzma
2006/05/19 | 1267123 | systems/win32/miktex/tm/packages/miktex-omega-base.cab
2020/05/12 | 354540 | systems/win32/miktex/tm/packages/miktex-omega-bin-2.9.tar.lzma
2020/05/12 | 387734 | systems/win32/miktex/tm/packages/miktex-omega-bin-x64-2.9.tar.lzma
2016/11/04 | 746 | systems/win32/miktex/tm/packages/miktex-omega.tar.lzma
2022/07/26 | 197278 | systems/win32/miktex/tm/packages/miktex-omegaware-bin-2.9.tar.lzma
-2022/11/25 | 213642 | systems/win32/miktex/tm/packages/miktex-omegaware-bin-x64-2.9.tar.lzma
+2022/12/11 | 213720 | systems/win32/miktex/tm/packages/miktex-omegaware-bin-x64-2.9.tar.lzma
2022/07/26 | 36415 | systems/win32/miktex/tm/packages/miktex-patgen-bin.tar.lzma
-2022/11/25 | 41710 | systems/win32/miktex/tm/packages/miktex-patgen-bin-x64.tar.lzma
+2022/12/11 | 41714 | systems/win32/miktex/tm/packages/miktex-patgen-bin-x64.tar.lzma
2022/07/26 | 754258 | systems/win32/miktex/tm/packages/miktex-pdftex-bin-2.9.tar.lzma
-2022/11/25 | 828140 | systems/win32/miktex/tm/packages/miktex-pdftex-bin-x64-2.9.tar.lzma
+2022/12/11 | 829498 | systems/win32/miktex/tm/packages/miktex-pdftex-bin-x64-2.9.tar.lzma
2016/11/10 | 1683 | systems/win32/miktex/tm/packages/miktex-pdftex.tar.lzma
2022/07/26 | 200463 | systems/win32/miktex/tm/packages/miktex-pixman-bin-2.9.tar.lzma
-2022/11/25 | 203441 | systems/win32/miktex/tm/packages/miktex-pixman-bin-x64-2.9.tar.lzma
+2022/12/11 | 203438 | systems/win32/miktex/tm/packages/miktex-pixman-bin-x64-2.9.tar.lzma
2022/07/26 | 210552 | systems/win32/miktex/tm/packages/miktex-pmx-bin-2.9.tar.lzma
-2022/11/25 | 245766 | systems/win32/miktex/tm/packages/miktex-pmx-bin-x64-2.9.tar.lzma
+2022/12/11 | 245772 | systems/win32/miktex/tm/packages/miktex-pmx-bin-x64-2.9.tar.lzma
2022/07/26 | 79370 | systems/win32/miktex/tm/packages/miktex-png-bin-2.9.tar.lzma
-2022/11/25 | 88396 | systems/win32/miktex/tm/packages/miktex-png-bin-x64-2.9.tar.lzma
+2022/12/11 | 88410 | systems/win32/miktex/tm/packages/miktex-png-bin-x64-2.9.tar.lzma
2022/07/26 | 1180255 | systems/win32/miktex/tm/packages/miktex-poppler-bin-2.9.tar.lzma
-2022/11/25 | 1338670 | systems/win32/miktex/tm/packages/miktex-poppler-bin-x64-2.9.tar.lzma
+2022/12/11 | 1333253 | systems/win32/miktex/tm/packages/miktex-poppler-bin-x64-2.9.tar.lzma
2022/07/26 | 20173 | systems/win32/miktex/tm/packages/miktex-popt-bin-2.9.tar.lzma
-2022/11/25 | 24014 | systems/win32/miktex/tm/packages/miktex-popt-bin-x64-2.9.tar.lzma
+2022/12/11 | 24011 | systems/win32/miktex/tm/packages/miktex-popt-bin-x64-2.9.tar.lzma
2022/07/26 | 31551 | systems/win32/miktex/tm/packages/miktex-posix-bin-2.9.tar.lzma
-2022/11/25 | 37560 | systems/win32/miktex/tm/packages/miktex-posix-bin-x64-2.9.tar.lzma
+2022/12/11 | 37548 | systems/win32/miktex/tm/packages/miktex-posix-bin-x64-2.9.tar.lzma
2022/07/26 | 64801 | systems/win32/miktex/tm/packages/miktex-ps2pk-bin-2.9.tar.lzma
-2022/11/25 | 72811 | systems/win32/miktex/tm/packages/miktex-ps2pk-bin-x64-2.9.tar.lzma
+2022/12/11 | 72910 | systems/win32/miktex/tm/packages/miktex-ps2pk-bin-x64-2.9.tar.lzma
2016/07/29 | 121451 | systems/win32/miktex/tm/packages/miktex-psutils-base.tar.lzma
2022/07/26 | 50923 | systems/win32/miktex/tm/packages/miktex-psutils-bin-2.9.tar.lzma
-2022/11/25 | 58115 | systems/win32/miktex/tm/packages/miktex-psutils-bin-x64-2.9.tar.lzma
+2022/12/11 | 58172 | systems/win32/miktex/tm/packages/miktex-psutils-bin-x64-2.9.tar.lzma
2022/07/26 | 699984 | systems/win32/miktex/tm/packages/miktex-ptex-bin.tar.lzma
-2022/11/25 | 760514 | systems/win32/miktex/tm/packages/miktex-ptex-bin-x64.tar.lzma
+2022/12/11 | 680202 | systems/win32/miktex/tm/packages/miktex-ptex-bin-x64.tar.lzma
2021/03/08 | 8242908 | systems/win32/miktex/tm/packages/miktex-qt5-bin.tar.lzma
2021/03/08 | 9576187 | systems/win32/miktex/tm/packages/miktex-qt5-bin-x64.tar.lzma
2022/07/26 | 1355602 | systems/win32/miktex/tm/packages/miktex-runtime-bin-2.9.tar.lzma
-2022/11/27 | 1512702 | systems/win32/miktex/tm/packages/miktex-runtime-bin-x64-2.9.tar.lzma
+2022/12/11 | 1512794 | systems/win32/miktex/tm/packages/miktex-runtime-bin-x64-2.9.tar.lzma
2022/07/26 | 42689 | systems/win32/miktex/tm/packages/miktex-synctex-bin-2.9.tar.lzma
-2022/11/25 | 52713 | systems/win32/miktex/tm/packages/miktex-synctex-bin-x64-2.9.tar.lzma
+2022/12/11 | 52674 | systems/win32/miktex/tm/packages/miktex-synctex-bin-x64-2.9.tar.lzma
2020/05/17 | 74366 | systems/win32/miktex/tm/packages/miktex-tdsutil-bin-2.9.tar.lzma
2022/07/26 | 57357 | systems/win32/miktex/tm/packages/miktex-tdsutil-bin.tar.lzma
2020/05/17 | 82298 | systems/win32/miktex/tm/packages/miktex-tdsutil-bin-x64-2.9.tar.lzma
-2022/11/25 | 64334 | systems/win32/miktex/tm/packages/miktex-tdsutil-bin-x64.tar.lzma
+2022/12/11 | 64473 | systems/win32/miktex/tm/packages/miktex-tdsutil-bin-x64.tar.lzma
2022/07/26 | 25544 | systems/win32/miktex/tm/packages/miktex-teckit-bin-2.9.tar.lzma
-2022/11/25 | 27750 | systems/win32/miktex/tm/packages/miktex-teckit-bin-x64-2.9.tar.lzma
+2022/12/11 | 27795 | systems/win32/miktex/tm/packages/miktex-teckit-bin-x64-2.9.tar.lzma
2022/07/26 | 16512 | systems/win32/miktex/tm/packages/miktex-tex2xindy-bin-2.9.tar.lzma
-2022/11/25 | 18468 | systems/win32/miktex/tm/packages/miktex-tex2xindy-bin-x64-2.9.tar.lzma
+2022/12/11 | 18473 | systems/win32/miktex/tm/packages/miktex-tex2xindy-bin-x64-2.9.tar.lzma
2022/07/26 | 64457 | systems/win32/miktex/tm/packages/miktex-tex4ht-bin-2.9.tar.lzma
-2022/11/25 | 71231 | systems/win32/miktex/tm/packages/miktex-tex4ht-bin-x64-2.9.tar.lzma
+2022/12/11 | 71199 | systems/win32/miktex/tm/packages/miktex-tex4ht-bin-x64-2.9.tar.lzma
2020/01/26 | 4527 | systems/win32/miktex/tm/packages/miktex-tex4ht.tar.lzma
2022/07/26 | 157170 | systems/win32/miktex/tm/packages/miktex-tex-bin-2.9.tar.lzma
-2022/11/25 | 173429 | systems/win32/miktex/tm/packages/miktex-tex-bin-x64-2.9.tar.lzma
+2022/12/11 | 173392 | systems/win32/miktex/tm/packages/miktex-tex-bin-x64-2.9.tar.lzma
2022/07/26 | 58378 | systems/win32/miktex/tm/packages/miktex-texify-bin-2.9.tar.lzma
-2022/11/25 | 69176 | systems/win32/miktex/tm/packages/miktex-texify-bin-x64-2.9.tar.lzma
+2022/12/11 | 69223 | systems/win32/miktex/tm/packages/miktex-texify-bin-x64-2.9.tar.lzma
2016/11/05 | 748 | systems/win32/miktex/tm/packages/miktex-texinfo.tar.lzma
2016/11/05 | 724 | systems/win32/miktex/tm/packages/miktex-tex.tar.lzma
2022/07/26 | 100549 | systems/win32/miktex/tm/packages/miktex-texware-bin-2.9.tar.lzma
-2022/11/25 | 109294 | systems/win32/miktex/tm/packages/miktex-texware-bin-x64-2.9.tar.lzma
+2022/12/11 | 109229 | systems/win32/miktex/tm/packages/miktex-texware-bin-x64-2.9.tar.lzma
2022/07/26 | 2697009 | systems/win32/miktex/tm/packages/miktex-texworks-bin-2.9.tar.lzma
-2022/11/25 | 2831740 | systems/win32/miktex/tm/packages/miktex-texworks-bin-x64-2.9.tar.lzma
+2022/12/11 | 2831528 | systems/win32/miktex/tm/packages/miktex-texworks-bin-x64-2.9.tar.lzma
2022/07/26 | 55433 | systems/win32/miktex/tm/packages/miktex-ttf2pk2-bin-2.9.tar.lzma
-2022/11/25 | 61879 | systems/win32/miktex/tm/packages/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
+2022/12/11 | 61816 | systems/win32/miktex/tm/packages/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
2022/07/30 | 466661 | systems/win32/miktex/tm/packages/miktex-ucrt-bin.tar.lzma
2021/12/05 | 474134 | systems/win32/miktex/tm/packages/miktex-ucrt-bin-x64.tar.lzma
2022/07/26 | 37062 | systems/win32/miktex/tm/packages/miktex-upmendex-bin.tar.lzma
-2022/11/25 | 42399 | systems/win32/miktex/tm/packages/miktex-upmendex-bin-x64.tar.lzma
+2022/12/11 | 42460 | systems/win32/miktex/tm/packages/miktex-upmendex-bin-x64.tar.lzma
2022/07/26 | 28691 | systems/win32/miktex/tm/packages/miktex-uriparser-bin-2.9.tar.lzma
-2022/11/25 | 33889 | systems/win32/miktex/tm/packages/miktex-uriparser-bin-x64-2.9.tar.lzma
+2022/12/11 | 33860 | systems/win32/miktex/tm/packages/miktex-uriparser-bin-x64-2.9.tar.lzma
2015/10/12 | 2312969 | systems/win32/miktex/tm/packages/miktex-vc120-bin.tar.lzma
2015/10/12 | 2544479 | systems/win32/miktex/tm/packages/miktex-vc120-bin-x64.tar.lzma
2022/07/30 | 2787012 | systems/win32/miktex/tm/packages/miktex-vc140-bin.tar.lzma
2021/12/05 | 3085218 | systems/win32/miktex/tm/packages/miktex-vc140-bin-x64.tar.lzma
2022/07/26 | 67924 | systems/win32/miktex/tm/packages/miktex-web-bin-2.9.tar.lzma
-2022/11/25 | 74277 | systems/win32/miktex/tm/packages/miktex-web-bin-x64-2.9.tar.lzma
+2022/12/11 | 74302 | systems/win32/miktex/tm/packages/miktex-web-bin-x64-2.9.tar.lzma
2016/04/19 | 634372 | systems/win32/miktex/tm/packages/miktex-xetex-base.tar.lzma
2022/07/26 | 316671 | systems/win32/miktex/tm/packages/miktex-xetex-bin-2.9.tar.lzma
-2022/11/25 | 352448 | systems/win32/miktex/tm/packages/miktex-xetex-bin-x64-2.9.tar.lzma
+2022/12/11 | 352377 | systems/win32/miktex/tm/packages/miktex-xetex-bin-x64-2.9.tar.lzma
2016/11/05 | 2089 | systems/win32/miktex/tm/packages/miktex-xetex.tar.lzma
2015/06/27 | 136065 | systems/win32/miktex/tm/packages/miktex-xindy-base.tar.lzma
2015/06/19 | 1712962 | systems/win32/miktex/tm/packages/miktex-xindy-bin.tar.lzma
2015/06/19 | 1714958 | systems/win32/miktex/tm/packages/miktex-xindy-bin-x64.tar.lzma
2015/06/19 | 369481 | systems/win32/miktex/tm/packages/miktex-xindy-doc.tar.lzma
2022/07/26 | 55762 | systems/win32/miktex/tm/packages/miktex-xml2pmx-bin.tar.lzma
-2022/11/25 | 57426 | systems/win32/miktex/tm/packages/miktex-xml2pmx-bin-x64.tar.lzma
+2022/12/11 | 57385 | systems/win32/miktex/tm/packages/miktex-xml2pmx-bin-x64.tar.lzma
2022/07/26 | 591407 | systems/win32/miktex/tm/packages/miktex-yap-bin-2.9.tar.lzma
-2022/11/25 | 637236 | systems/win32/miktex/tm/packages/miktex-yap-bin-x64-2.9.tar.lzma
+2022/12/11 | 637246 | systems/win32/miktex/tm/packages/miktex-yap-bin-x64-2.9.tar.lzma
2018/01/12 | 138155 | systems/win32/miktex/tm/packages/miktex-zip-bin.tar.lzma
2018/01/12 | 157226 | systems/win32/miktex/tm/packages/miktex-zip-bin-x64.tar.lzma
2022/07/26 | 39695 | systems/win32/miktex/tm/packages/miktex-zlib-bin-2.9.tar.lzma
-2022/11/25 | 43705 | systems/win32/miktex/tm/packages/miktex-zlib-bin-x64-2.9.tar.lzma
-2022/12/10 | 306083 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
-2022/12/10 | 1856763 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
-2022/12/10 | 1629440 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
+2022/12/11 | 43709 | systems/win32/miktex/tm/packages/miktex-zlib-bin-x64-2.9.tar.lzma
+2022/12/11 | 306201 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
+2022/12/11 | 1858709 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
+2022/12/11 | 1629843 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
2022/07/26 | 13519 | systems/win32/miktex/tm/packages/miktex-zzip-bin-2.9.tar.lzma
-2022/11/25 | 14427 | systems/win32/miktex/tm/packages/miktex-zzip-bin-x64-2.9.tar.lzma
+2022/12/11 | 14432 | systems/win32/miktex/tm/packages/miktex-zzip-bin-x64-2.9.tar.lzma
2016/07/15 | 35914 | systems/win32/miktex/tm/packages/mil3.tar.lzma
2004/11/11 | 10497 | systems/win32/miktex/tm/packages/miller.cab
2016/07/06 | 405919 | systems/win32/miktex/tm/packages/milog.tar.lzma
2020/03/18 | 1596082 | systems/win32/miktex/tm/packages/milsymb.tar.lzma
-2022/02/07 | 196468 | systems/win32/miktex/tm/packages/mindflow__doc.tar.lzma
-2022/02/07 | 6897 | systems/win32/miktex/tm/packages/mindflow__source.tar.lzma
-2022/02/07 | 2753 | systems/win32/miktex/tm/packages/mindflow.tar.lzma
+2022/12/11 | 203459 | systems/win32/miktex/tm/packages/mindflow__doc.tar.lzma
+2022/12/11 | 6862 | systems/win32/miktex/tm/packages/mindflow__source.tar.lzma
+2022/12/11 | 2765 | systems/win32/miktex/tm/packages/mindflow.tar.lzma
2013/07/01 | 286736 | systems/win32/miktex/tm/packages/minibox.tar.lzma
2017/04/13 | 193445 | systems/win32/miktex/tm/packages/minidocument.tar.lzma
2014/01/06 | 486298 | systems/win32/miktex/tm/packages/minifp.tar.lzma
@@ -305012,105 +305012,107 @@
2022/11/01 | 230073 | systems/win32/miktex/tm/packages/newverbs__doc.tar.lzma
2022/11/01 | 7969 | systems/win32/miktex/tm/packages/newverbs__source.tar.lzma
2022/11/01 | 3030 | systems/win32/miktex/tm/packages/newverbs.tar.lzma
-2022/12/10 | 750201 | systems/win32/miktex/tm/packages/next/files.csv.lzma
-2022/12/10 | 57193 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
-2022/12/10 | 1166875 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
-2022/12/10 | 31764 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
-2022/12/10 | 35294 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
-2022/12/10 | 65862 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
-2022/12/10 | 101630 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
-2022/12/10 | 77660 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
-2022/12/10 | 31601 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
-2022/12/10 | 394909 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
-2022/12/10 | 37093 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
-2022/12/10 | 57834 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
-2022/12/10 | 271337 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
-2022/12/10 | 196628 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
-2022/12/10 | 103600 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
-2022/12/10 | 24056 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
-2022/12/10 | 472949 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma
-2022/12/10 | 52696 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
-2022/12/10 | 327524 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
-2022/12/10 | 45807 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
-2022/12/10 | 135904 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
-2022/12/10 | 1456967 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
-2022/12/10 | 121163 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
-2022/12/10 | 48904 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
-2022/12/10 | 28756 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
-2022/12/10 | 62760 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
-2022/12/10 | 155989 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
-2022/12/10 | 79828 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
-2022/12/10 | 81504 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
-2022/12/10 | 296170 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
-2022/12/10 | 25206 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
-2022/12/10 | 113240 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
-2022/12/10 | 73380 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
-2022/12/10 | 115703 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
-2022/12/10 | 44063 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
-2022/12/10 | 571421 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
-2022/12/10 | 247461 | systems/win32/miktex/tm/packages/next/miktex-hitex-bin-x64.tar.lzma
-2022/12/10 | 175407 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
-2022/12/10 | 109733 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
-2022/12/10 | 18360 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
-2022/12/10 | 30512 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
-2022/12/10 | 702353 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
-2022/12/10 | 601513 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
-2022/12/10 | 529983 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
-2022/12/10 | 103715 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
-2022/12/10 | 2003548 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
-2022/12/10 | 73953 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
-2022/12/10 | 32326 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
-2022/12/10 | 8830 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
-2022/12/10 | 208997 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
-2022/12/10 | 287108 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
-2022/12/10 | 105441 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
-2022/12/10 | 140853 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
-2022/12/10 | 326704 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
-2022/12/10 | 181611 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
-2022/12/10 | 55789 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
-2022/12/10 | 35210 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
-2022/12/10 | 43904 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
-2022/12/10 | 48187 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
-2022/12/10 | 52534 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
-2022/12/10 | 213527 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
-2022/12/10 | 41742 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
-2022/12/10 | 827386 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
-2022/12/10 | 203417 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
-2022/12/10 | 245747 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
-2022/12/10 | 88421 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
-2022/12/10 | 1336998 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
-2022/12/10 | 24047 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
-2022/12/10 | 37415 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
-2022/12/10 | 72797 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
-2022/12/10 | 58447 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
-2022/12/10 | 759351 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin-x64.tar.lzma
-2022/12/10 | 1515629 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
-2022/12/10 | 52723 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
-2022/12/10 | 64357 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma
-2022/12/10 | 27714 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
-2022/12/10 | 18524 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
-2022/12/10 | 71212 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
-2022/12/10 | 173477 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
-2022/12/10 | 69201 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
-2022/12/10 | 109333 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
-2022/12/10 | 2831704 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
-2022/12/10 | 61643 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
-2022/12/10 | 42474 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma
-2022/12/10 | 33890 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
-2022/12/10 | 74329 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
-2022/12/10 | 352404 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
-2022/12/10 | 57426 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma
-2022/12/10 | 637120 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
-2022/12/10 | 43697 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
-2022/12/10 | 306077 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
-2022/12/10 | 1856794 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
-2022/12/10 | 1629813 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
-2022/12/10 | 14445 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
+2022/12/11 | 751004 | systems/win32/miktex/tm/packages/next/files.csv.lzma
+2022/12/11 | 57223 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
+2022/12/11 | 1167249 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
+2022/12/11 | 31743 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
+2022/12/11 | 35303 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
+2022/12/11 | 65884 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
+2022/12/11 | 101569 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
+2022/12/11 | 77644 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
+2022/12/11 | 31614 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
+2022/12/11 | 394589 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
+2022/12/11 | 37121 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
+2022/12/11 | 57830 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
+2022/12/11 | 271547 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
+2022/12/11 | 196588 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
+2022/12/11 | 103601 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
+2022/12/11 | 24095 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
+2022/12/11 | 472943 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma
+2022/12/11 | 52665 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
+2022/12/11 | 327649 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
+2022/12/11 | 45795 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
+2022/12/11 | 136079 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
+2022/12/11 | 1456951 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
+2022/12/11 | 121131 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
+2022/12/11 | 48965 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
+2022/12/11 | 28774 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
+2022/12/11 | 62770 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
+2022/12/11 | 155978 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
+2022/12/11 | 79798 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
+2022/12/11 | 81286 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
+2022/12/11 | 296347 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
+2022/12/11 | 25217 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
+2022/12/11 | 112954 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
+2022/12/11 | 73383 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
+2022/12/11 | 115791 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
+2022/12/11 | 44076 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
+2022/12/11 | 572055 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
+2022/12/11 | 247566 | systems/win32/miktex/tm/packages/next/miktex-hitex-bin-x64.tar.lzma
+2022/12/11 | 175498 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
+2022/12/11 | 109678 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
+2022/12/11 | 18365 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
+2022/12/11 | 30515 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
+2022/12/11 | 702098 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
+2022/12/11 | 600529 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
+2022/12/11 | 530011 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
+2022/12/11 | 103872 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
+2022/12/11 | 2017064 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
+2022/12/11 | 73921 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
+2022/12/11 | 32317 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
+2022/12/11 | 8827 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
+2022/12/11 | 209046 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
+2022/12/11 | 287055 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
+2022/12/11 | 105359 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
+2022/12/11 | 140726 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
+2022/12/11 | 327054 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
+2022/12/11 | 181676 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
+2022/12/11 | 55758 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
+2022/12/11 | 35223 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
+2022/12/11 | 43846 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
+2022/12/11 | 48163 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
+2022/12/11 | 52544 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
+2022/12/11 | 213659 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
+2022/12/11 | 41726 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
+2022/12/11 | 825935 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
+2022/12/11 | 203409 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
+2022/12/11 | 245735 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
+2022/12/11 | 88425 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
+2022/12/11 | 1337822 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
+2022/12/11 | 24045 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
+2022/12/11 | 37409 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
+2022/12/11 | 72731 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
+2022/12/11 | 58720 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
+2022/12/11 | 759113 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin-x64.tar.lzma
+2022/12/11 | 1514891 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
+2022/12/11 | 52740 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
+2022/12/11 | 64359 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma
+2022/12/11 | 27739 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
+2022/12/11 | 18482 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
+2022/12/11 | 71229 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
+2022/12/11 | 173531 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
+2022/12/11 | 69180 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
+2022/12/11 | 109224 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
+2022/12/11 | 2831231 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
+2022/12/11 | 61743 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
+2022/12/11 | 42490 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma
+2022/12/11 | 33892 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
+2022/12/11 | 74455 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
+2022/12/11 | 352323 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
+2022/12/11 | 57426 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma
+2022/12/11 | 637429 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
+2022/12/11 | 43709 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
+2022/12/11 | 306158 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
+2022/12/11 | 1859452 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
+2022/12/11 | 1630086 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
+2022/12/11 | 14451 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
2019/03/12 | 1412 | systems/win32/miktex/tm/packages/nextpage.tar.lzma
-2022/12/10 | 1150 | systems/win32/miktex/tm/packages/next/pr.ini
+2022/12/11 | 1150 | systems/win32/miktex/tm/packages/next/pr.ini
2018/07/06 | 145915 | systems/win32/miktex/tm/packages/nexus-otf.tar.lzma
2017/03/30 | 191149 | systems/win32/miktex/tm/packages/nfssext-cfr.tar.lzma
-2012/12/20 | 612251 | systems/win32/miktex/tm/packages/nicefilelist.tar.lzma
+2022/12/11 | 604085 | systems/win32/miktex/tm/packages/nicefilelist__doc.tar.lzma
+2022/12/11 | 7799 | systems/win32/miktex/tm/packages/nicefilelist__source.tar.lzma
+2022/12/11 | 6709 | systems/win32/miktex/tm/packages/nicefilelist.tar.lzma
2022/06/26 | 219542 | systems/win32/miktex/tm/packages/niceframe__doc.tar.lzma
2022/06/26 | 7330 | systems/win32/miktex/tm/packages/niceframe__source.tar.lzma
2022/06/26 | 37551 | systems/win32/miktex/tm/packages/niceframe.tar.lzma
@@ -305634,7 +305636,7 @@
2022/02/22 | 6917 | systems/win32/miktex/tm/packages/preview.tar.lzma
2019/06/20 | 375963 | systems/win32/miktex/tm/packages/prftree.tar.lzma
2021/04/23 | 274028 | systems/win32/miktex/tm/packages/principia.tar.lzma
-2022/12/10 | 920 | systems/win32/miktex/tm/packages/pr.ini
+2022/12/11 | 1098 | systems/win32/miktex/tm/packages/pr.ini
2010/09/27 | 248469 | systems/win32/miktex/tm/packages/printlen.tar.lzma
2008/06/17 | 77313 | systems/win32/miktex/tm/packages/proba.tar.lzma
2017/07/12 | 988486 | systems/win32/miktex/tm/packages/probsoln.tar.lzma
@@ -307651,7 +307653,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
-2022/12/11 | 186 | timestamp
+2022/12/12 | 186 | timestamp
2002/08/26 | 61898 | usergrps/dante/antrag.pdf
2002/08/26 | 118217 | usergrps/dante/antrag.ps
2022/02/28 | 917 | usergrps/dante/dtk/doc/beispiel.bib
diff --git a/FILES.byname.gz b/FILES.byname.gz
index 3f702fedda..1291057417 100644
--- a/FILES.byname.gz
+++ b/FILES.byname.gz
Binary files differ
diff --git a/FILES.last07days b/FILES.last07days
index 203aced8a4..5b9f201a7c 100644
--- a/FILES.last07days
+++ b/FILES.last07days
@@ -1,43 +1,357 @@
+2022/12/11 | 976280 | systems/texlive/tlnet/archive/tex4ht.r65237.tar.xz
+2022/12/11 | 9751 | macros/latex/contrib/tuda-ci/tex/tudamecheng.cfg
+2022/12/11 | 9376 | macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty
+2022/12/11 | 930 | macros/latex/contrib/hereapplies/hereapplies-example.tex
+2022/12/11 | 898760 | systems/texlive/tlnet/archive/beebe.r65233.tar.xz
+2022/12/11 | 8887 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex
+2022/12/11 | 88425 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
+2022/12/11 | 88410 | systems/win32/miktex/tm/packages/miktex-png-bin-x64-2.9.tar.lzma
+2022/12/11 | 8827 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
+2022/12/11 | 8812 | systems/win32/miktex/tm/packages/miktex-md5-bin-x64-2.9.tar.lzma
+2022/12/11 | 881135 | macros/xetex/latex/xduts/xdulogo.pdf
+2022/12/11 | 8579 | macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty
+2022/12/11 | 8348 | macros/latex/contrib/quantumarticle/README.md
+2022/12/11 | 829498 | systems/win32/miktex/tm/packages/miktex-pdftex-bin-x64-2.9.tar.lzma
+2022/12/11 | 825935 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
+2022/12/11 | 81476 | systems/win32/miktex/tm/packages/miktex-freeglut-bin-x64-2.9.tar.lzma
+2022/12/11 | 81286 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
+2022/12/11 | 809420 | macros/latex/contrib/cooking-units.zip
+2022/12/11 | 8039 | macros/latex/contrib/hereapplies/hereapplies-doc.tex
+2022/12/11 | 79798 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
+2022/12/11 | 79774 | systems/win32/miktex/tm/packages/miktex-fonts-bin-x64-2.9.tar.lzma
+2022/12/11 | 7799 | systems/win32/miktex/tm/packages/nicefilelist__source.tar.lzma
+2022/12/11 | 77644 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
+2022/12/11 | 77632 | systems/win32/miktex/tm/packages/miktex-bibtex-bin-x64-2.9.tar.lzma
+2022/12/11 | 759113 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin-x64.tar.lzma
+2022/12/11 | 751004 | systems/win32/miktex/tm/packages/next/files.csv.lzma
+2022/12/11 | 750777 | systems/win32/miktex/tm/packages/files.csv.lzma
+2022/12/11 | 744837 | macros/latex/contrib/cooking-units/cooking-units.pdf
+2022/12/11 | 74455 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
+2022/12/11 | 743 | macros/latex/contrib/hereapplies/package.json
+2022/12/11 | 74302 | systems/win32/miktex/tm/packages/miktex-web-bin-x64-2.9.tar.lzma
+2022/12/11 | 73953 | systems/win32/miktex/tm/packages/miktex-lzma-bin-x64-2.9.tar.lzma
+2022/12/11 | 73921 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
+2022/12/11 | 7364 | systems/texlive/tlnet/archive/nicefilelist.source.r65235.tar.xz
+2022/12/11 | 73383 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
+2022/12/11 | 7336 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex
+2022/12/11 | 73287 | systems/win32/miktex/tm/packages/miktex-graphite2-bin-x64-2.9.tar.lzma
+2022/12/11 | 72910 | systems/win32/miktex/tm/packages/miktex-ps2pk-bin-x64-2.9.tar.lzma
+2022/12/11 | 72731 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
+2022/12/11 | 71229 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
+2022/12/11 | 71199 | systems/win32/miktex/tm/packages/miktex-tex4ht-bin-x64-2.9.tar.lzma
+2022/12/11 | 702440 | systems/win32/miktex/tm/packages/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
+2022/12/11 | 7022 | macros/latex/contrib/tuda-ci/tex/tudabeamer.cls
+2022/12/11 | 702098 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
+2022/12/11 | 69223 | systems/win32/miktex/tm/packages/miktex-texify-bin-x64-2.9.tar.lzma
+2022/12/11 | 69180 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
+2022/12/11 | 6881 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex
+2022/12/11 | 6862 | systems/win32/miktex/tm/packages/mindflow__source.tar.lzma
+2022/12/11 | 680202 | systems/win32/miktex/tm/packages/miktex-ptex-bin-x64.tar.lzma
+2022/12/11 | 6709 | systems/win32/miktex/tm/packages/nicefilelist.tar.lzma
+2022/12/11 | 662413 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdf
+2022/12/11 | 65884 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
+2022/12/11 | 65857 | systems/win32/miktex/tm/packages/miktex-bibarts-bin-x64-2.9.tar.lzma
+2022/12/11 | 6520 | systems/texlive/tlnet/archive/mindflow.source.r65236.tar.xz
+2022/12/11 | 6466 | macros/latex/contrib/tuda-ci/tex/tudarules.sty
+2022/12/11 | 64473 | systems/win32/miktex/tm/packages/miktex-tdsutil-bin-x64.tar.lzma
+2022/12/11 | 6443213 | macros/latex/contrib/tuda-ci.zip
+2022/12/11 | 64359 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma
+2022/12/11 | 6392 | systems/texlive/tlnet/archive/nicefilelist.r65235.tar.xz
+2022/12/11 | 637429 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
+2022/12/11 | 637246 | systems/win32/miktex/tm/packages/miktex-yap-bin-x64-2.9.tar.lzma
+2022/12/11 | 635934 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdf
+2022/12/11 | 62770 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
+2022/12/11 | 627537 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdf
+2022/12/11 | 62737 | systems/win32/miktex/tm/packages/miktex-fmt-bin-x64-2.9.tar.lzma
+2022/12/11 | 61816 | systems/win32/miktex/tm/packages/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
+2022/12/11 | 61743 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
+2022/12/11 | 6041 | macros/latex/contrib/tuda-ci/tex/tudacolors.sty
+2022/12/11 | 604085 | systems/win32/miktex/tm/packages/nicefilelist__doc.tar.lzma
+2022/12/11 | 600708 | systems/texlive/tlnet/archive/nicefilelist.doc.r65235.tar.xz
+2022/12/11 | 600529 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
+2022/12/11 | 599835 | systems/win32/miktex/tm/packages/miktex-libressl-bin-x64-2.9.tar.lzma
+2022/12/11 | 598742 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdf
+2022/12/11 | 58720 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
+2022/12/11 | 5859 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex
+2022/12/11 | 5851 | macros/latex/contrib/hereapplies/README.md
+2022/12/11 | 5834301 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2022/12/11 | 58247 | macros/latex/contrib/quantumarticle/quantumarticle.cls
+2022/12/11 | 58172 | systems/win32/miktex/tm/packages/miktex-psutils-bin-x64-2.9.tar.lzma
+2022/12/11 | 57860 | systems/win32/miktex/tm/packages/miktex-cjkutils-bin-x64-2.9.tar.lzma
+2022/12/11 | 57830 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
+2022/12/11 | 57426 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma
+2022/12/11 | 57385 | systems/win32/miktex/tm/packages/miktex-xml2pmx-bin-x64.tar.lzma
+2022/12/11 | 57223 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
+2022/12/11 | 572055 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
+2022/12/11 | 57192 | systems/win32/miktex/tm/packages/miktex-arctrl-bin-x64-2.9.tar.lzma
+2022/12/11 | 571290 | systems/win32/miktex/tm/packages/miktex-harfbuzz-bin-x64-2.9.tar.lzma
+2022/12/11 | 570428 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdf
+2022/12/11 | 567048 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdf
+2022/12/11 | 563674 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdf
+2022/12/11 | 559873 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdf
+2022/12/11 | 55770 | systems/win32/miktex/tm/packages/miktex-mpmcli-bin-x64-2.9.tar.lzma
+2022/12/11 | 55758 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
+2022/12/11 | 551834 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdf
+2022/12/11 | 5433 | macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo
+2022/12/11 | 54308 | macros/latex/contrib/thalie/thalie.tex
+2022/12/11 | 5391 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex
+2022/12/11 | 5381 | macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo
+2022/12/11 | 536023 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdf
+2022/12/11 | 530546 | systems/win32/miktex/tm/packages/miktex-log4cxx-bin-x64-2.9.tar.lzma
+2022/12/11 | 530011 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
+2022/12/11 | 52740 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
+2022/12/11 | 527003 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdf
+2022/12/11 | 52674 | systems/win32/miktex/tm/packages/miktex-synctex-bin-x64-2.9.tar.lzma
+2022/12/11 | 52665 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
+2022/12/11 | 52624 | systems/win32/miktex/tm/packages/miktex-dvicopy-bin-x64-2.9.tar.lzma
+2022/12/11 | 52544 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
+2022/12/11 | 52496 | systems/win32/miktex/tm/packages/miktex-m-tx-bin-x64-2.9.tar.lzma
+2022/12/11 | 5022 | macros/latex/contrib/hereapplies/lyx-module/hereapplies-example.lyx
+2022/12/11 | 49410 | macros/latex/contrib/hereapplies/hereapplies-example.pdf
+2022/12/11 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2022/12/11 | 48965 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
+2022/12/11 | 48935 | systems/win32/miktex/tm/packages/miktex-expat-bin-x64-2.9.tar.lzma
+2022/12/11 | 48163 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
+2022/12/11 | 48163 | systems/win32/miktex/tm/packages/miktex-mtprint-bin-x64-2.9.tar.lzma
+2022/12/11 | 473624 | systems/win32/miktex/tm/packages/miktex-doc.tar.lzma
+2022/12/11 | 472943 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma
+2022/12/11 | 45795 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
+2022/12/11 | 45707 | systems/win32/miktex/tm/packages/miktex-dvipng-bin-x64-2.9.tar.lzma
+2022/12/11 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2022/12/11 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2022/12/11 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2022/12/11 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2022/12/11 | 45228 | macros/latex/contrib/quantumarticle/quantum.bst
+2022/12/11 | 4441 | macros/latex/contrib/tuda-ci/tex/tudacolors.def
+2022/12/11 | 44076 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
+2022/12/11 | 44041 | systems/win32/miktex/tm/packages/miktex-gsf2pk-bin-x64-2.9.tar.lzma
+2022/12/11 | 43846 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
+2022/12/11 | 43809 | systems/win32/miktex/tm/packages/miktex-mthelp-bin-x64-2.9.tar.lzma
+2022/12/11 | 43709 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
+2022/12/11 | 43709 | systems/win32/miktex/tm/packages/miktex-zlib-bin-x64-2.9.tar.lzma
+2022/12/11 | 43385 | macros/latex/contrib/tuda-ci/tex/tudapub.cls
+2022/12/11 | 4328 | macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty
+2022/12/11 | 432320 | macros/latex/contrib/hereapplies.zip
+2022/12/11 | 42490 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma
+2022/12/11 | 42460 | systems/win32/miktex/tm/packages/miktex-upmendex-bin-x64.tar.lzma
+2022/12/11 | 423420 | systems/texlive/tlnet/archive/texlive-scripts.doc.r65233.tar.xz
+2022/12/11 | 41726 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
+2022/12/11 | 41714 | systems/win32/miktex/tm/packages/miktex-patgen-bin-x64.tar.lzma
+2022/12/11 | 4020274 | biblio/ctan-bibdata.zip
+2022/12/11 | 394702 | systems/win32/miktex/tm/packages/miktex-cairo-bin-x64-2.9.tar.lzma
+2022/12/11 | 394589 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
+2022/12/11 | 38825 | systems/win32/miktex/tm/packages/miktex-chktex-bin-x64-2.9.tar.lzma
+2022/12/11 | 3871 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco
+2022/12/11 | 3846 | macros/latex/contrib/quantumarticle/quantumview-template.tex
+2022/12/11 | 3815 | macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty
+2022/12/11 | 380508 | macros/latex/contrib/cooking-units/cooking-units.dtx
+2022/12/11 | 37548 | systems/win32/miktex/tm/packages/miktex-posix-bin-x64-2.9.tar.lzma
+2022/12/11 | 37409 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
+2022/12/11 | 37121 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
+2022/12/11 | 3670 | macros/xetex/latex/xduts/README.md
+2022/12/11 | 366138 | macros/latex/contrib/hereapplies/hereapplies-doc.pdf
+2022/12/11 | 36389 | macros/latex/contrib/quantumarticle/quantumview.cls
+2022/12/11 | 3626872 | biblio/ctan-bibdata/ctan.pdf
+2022/12/11 | 35303 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
+2022/12/11 | 35269 | systems/win32/miktex/tm/packages/miktex-axohelp-bin-x64-2.9.tar.lzma
+2022/12/11 | 352377 | systems/win32/miktex/tm/packages/miktex-xetex-bin-x64-2.9.tar.lzma
+2022/12/11 | 352323 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
+2022/12/11 | 35223 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
+2022/12/11 | 35191 | systems/win32/miktex/tm/packages/miktex-mspack-bin-x64-2.9.tar.lzma
+2022/12/11 | 3513 | macros/latex/contrib/thalie/CHANGELOG.md
+2022/12/11 | 34523 | macros/latex/contrib/hereapplies/COPYING
+2022/12/11 | 33892 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
+2022/12/11 | 33860 | systems/win32/miktex/tm/packages/miktex-uriparser-bin-x64-2.9.tar.lzma
+2022/12/11 | 33060 | macros/latex/contrib/tuda-ci/tex/tudaexercise.cls
+2022/12/11 | 3287 | macros/latex/contrib/tuda-ci/tex/tudafonts.sty
+2022/12/11 | 327649 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
+2022/12/11 | 327447 | systems/win32/miktex/tm/packages/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
+2022/12/11 | 327094 | systems/win32/miktex/tm/packages/miktex-mo-bin-x64-2.9.tar.lzma
+2022/12/11 | 327054 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
+2022/12/11 | 32496 | macros/latex/contrib/tuda-ci/tex/tudathesis.cfg
+2022/12/11 | 32426 | systems/win32/miktex/tm/packages/miktex-makeindex-bin-x64-2.9.tar.lzma
+2022/12/11 | 32317 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
+2022/12/11 | 321917 | macros/xetex/latex/xduts/xduts.pdf
+2022/12/11 | 3175 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex
+2022/12/11 | 31743 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
+2022/12/11 | 31697 | systems/win32/miktex/tm/packages/miktex-autosp-bin-x64-2.9.tar.lzma
+2022/12/11 | 31614 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
+2022/12/11 | 31598 | systems/win32/miktex/tm/packages/miktex-bzip2-bin-x64-2.9.tar.lzma
+2022/12/11 | 30888 | systems/win32/miktex/tm/packages/miktex-lacheck-bin-x64-2.9.tar.lzma
+2022/12/11 | 306201 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
+2022/12/11 | 306158 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
+2022/12/11 | 30515 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
+2022/12/11 | 296347 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
+2022/12/11 | 296249 | systems/win32/miktex/tm/packages/miktex-freetype2-bin-x64-2.9.tar.lzma
+2022/12/11 | 29286 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex
+2022/12/11 | 2891 | systems/win32/miktex/tm/packages/beamertheme-arguelles.tar.lzma
+2022/12/11 | 28774 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
+2022/12/11 | 28727 | systems/win32/miktex/tm/packages/miktex-findtexmf-bin-x64-2.9.tar.lzma
+2022/12/11 | 287055 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
+2022/12/11 | 286796 | systems/win32/miktex/tm/packages/miktex-metapost-bin-x64-2.9.tar.lzma
+2022/12/11 | 2853 | macros/latex/contrib/hereapplies/lyx-module/hereapplies.module
+2022/12/11 | 2831528 | systems/win32/miktex/tm/packages/miktex-texworks-bin-x64-2.9.tar.lzma
+2022/12/11 | 2831231 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
+2022/12/11 | 28251 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex
+2022/12/11 | 28136 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex
+2022/12/11 | 27795 | systems/win32/miktex/tm/packages/miktex-teckit-bin-x64-2.9.tar.lzma
+2022/12/11 | 27739 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
+2022/12/11 | 2765 | systems/win32/miktex/tm/packages/mindflow.tar.lzma
+2022/12/11 | 2748442 | biblio/ctan-bibdata/ctan.bib
+2022/12/11 | 2717 | macros/latex/contrib/hereapplies/ChangeLog.md
+2022/12/11 | 271547 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
+2022/12/11 | 271111 | systems/win32/miktex/tm/packages/miktex-console-bin-x64-2.9.tar.lzma
+2022/12/11 | 2676 | systems/texlive/tlnet/archive/beamertheme-arguelles.r65234.tar.xz
+2022/12/11 | 267075 | install/macros/latex/contrib/thalie.tds.zip
+2022/12/11 | 265735 | macros/latex/contrib/thalie.zip
+2022/12/11 | 2644 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib
+2022/12/11 | 25518494 | systems/texlive/tlnet/install-tl.zip
+2022/12/11 | 254826 | macros/xetex/latex/xduts/xduts.dtx
+2022/12/11 | 2536 | systems/texlive/tlnet/archive/mindflow.r65236.tar.xz
+2022/12/11 | 25222 | systems/win32/miktex/tm/packages/miktex-fribidixetex-bin-x64-2.9.tar.lzma
+2022/12/11 | 25217 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
+2022/12/11 | 247566 | systems/win32/miktex/tm/packages/next/miktex-hitex-bin-x64.tar.lzma
+2022/12/11 | 247415 | systems/win32/miktex/tm/packages/miktex-hitex-bin-x64.tar.lzma
+2022/12/11 | 245772 | systems/win32/miktex/tm/packages/miktex-pmx-bin-x64-2.9.tar.lzma
+2022/12/11 | 245735 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
+2022/12/11 | 2432352 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2022/12/11 | 24305 | macros/latex/contrib/quantumarticle/quantumarticle.tex
+2022/12/11 | 242799 | macros/latex/contrib/thalie/thalie.pdf
+2022/12/11 | 24095 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
+2022/12/11 | 24059 | systems/win32/miktex/tm/packages/miktex-devnag-bin-x64-2.9.tar.lzma
+2022/12/11 | 24045 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
+2022/12/11 | 24011 | systems/win32/miktex/tm/packages/miktex-popt-bin-x64-2.9.tar.lzma
+2022/12/11 | 2350 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex
+2022/12/11 | 2180 | macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty
+2022/12/11 | 2172 | macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty
+2022/12/11 | 213720 | systems/win32/miktex/tm/packages/miktex-omegaware-bin-x64-2.9.tar.lzma
+2022/12/11 | 213659 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
+2022/12/11 | 209096 | systems/win32/miktex/tm/packages/miktex-metafont-bin-x64-2.9.tar.lzma
+2022/12/11 | 209046 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
+2022/12/11 | 20435288 | systems/texlive/tlnet/install-tl-windows.exe
+2022/12/11 | 203459 | systems/win32/miktex/tm/packages/mindflow__doc.tar.lzma
+2022/12/11 | 203438 | systems/win32/miktex/tm/packages/miktex-pixman-bin-x64-2.9.tar.lzma
+2022/12/11 | 203409 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
+2022/12/11 | 202452 | systems/texlive/tlnet/archive/mindflow.doc.r65236.tar.xz
+2022/12/11 | 2017064 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
+2022/12/11 | 2002691 | systems/win32/miktex/tm/packages/miktex-luatex-bin-x64-2.9.tar.lzma
+2022/12/11 | 19930 | macros/latex/contrib/hereapplies/hereapplies.sty
+2022/12/11 | 19801 | macros/latex/contrib/tuda-ci/tex/tudaposter.cls
+2022/12/11 | 196600 | systems/win32/miktex/tm/packages/miktex-curl-bin-x64-2.9.tar.lzma
+2022/12/11 | 196588 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
+2022/12/11 | 19503 | macros/latex/contrib/tuda-ci/tex/tudasciposter.cls
+2022/12/11 | 19106 | macros/latex/contrib/thalie/LICENSE.txt
+2022/12/11 | 189122 | systems/win32/miktex/tm/packages/circuitikz.tar.lzma
+2022/12/11 | 18821 | macros/latex/contrib/quantumarticle/quantum-template.tex
+2022/12/11 | 18740 | macros/latex/contrib/thalie/thalie.sty
+2022/12/11 | 1859452 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
+2022/12/11 | 1858709 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
+2022/12/11 | 18482 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
+2022/12/11 | 18473 | systems/win32/miktex/tm/packages/miktex-tex2xindy-bin-x64-2.9.tar.lzma
+2022/12/11 | 18365 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
+2022/12/11 | 18354 | systems/win32/miktex/tm/packages/miktex-kpathsea-bin-x64-2.9.tar.lzma
+2022/12/11 | 181759 | systems/win32/miktex/tm/packages/miktex-mpfr-bin-x64-2.9.tar.lzma
+2022/12/11 | 181676 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
+2022/12/11 | 17941 | macros/latex/contrib/quantumarticle/quantum-bibliographystyle-demo.tex
+2022/12/11 | 17886810 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2022/12/11 | 17634 | macros/latex/contrib/tuda-ci/README.md
+2022/12/11 | 175498 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
+2022/12/11 | 175460 | systems/win32/miktex/tm/packages/miktex-hunspell-bin-x64-2.9.tar.lzma
+2022/12/11 | 1753610 | systems/win32/miktex/tm/packages/circuitikz__doc.tar.lzma
+2022/12/11 | 173531 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
+2022/12/11 | 173392 | systems/win32/miktex/tm/packages/miktex-tex-bin-x64-2.9.tar.lzma
+2022/12/11 | 16909 | macros/latex/contrib/tuda-ci/tex/tudaletter.cls
+2022/12/11 | 1686 | macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo
+2022/12/11 | 1685 | macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo
+2022/12/11 | 1684 | macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo
+2022/12/11 | 1684 | macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo
+2022/12/11 | 1682 | macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo
+2022/12/11 | 1680 | macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo
+2022/12/11 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
+2022/12/11 | 16613 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex
+2022/12/11 | 1655 | macros/latex/contrib/cooking-units/cooking-units.ins
+2022/12/11 | 1643 | macros/latex/contrib/thalie/dicts/thalie-fallback.trsl
+2022/12/11 | 16345 | macros/latex/contrib/hereapplies/hereapplies-doc.lyx
+2022/12/11 | 1630086 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
+2022/12/11 | 1629843 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
+2022/12/11 | 155978 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
+2022/12/11 | 155441 | systems/win32/miktex/tm/packages/miktex-fontconfig-bin-x64-2.9.tar.lzma
+2022/12/11 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2022/12/11 | 15341 | macros/latex/contrib/quantumarticle/quantum-bibliographystyle-demo.bib
+2022/12/11 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2022/12/11 | 1526 | macros/latex/contrib/thalie/README.md
+2022/12/11 | 1514891 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
+2022/12/11 | 1512794 | systems/win32/miktex/tm/packages/miktex-runtime-bin-x64-2.9.tar.lzma
+2022/12/11 | 1469 | macros/latex/contrib/cooking-units/README.md
+2022/12/11 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2022/12/11 | 1459611 | systems/win32/miktex/tm/packages/miktex-dvisvgm-bin-x64-2.9.tar.lzma
+2022/12/11 | 1456951 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
+2022/12/11 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2022/12/11 | 14451 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
+2022/12/11 | 14432 | systems/win32/miktex/tm/packages/miktex-zzip-bin-x64-2.9.tar.lzma
+2022/12/11 | 1428 | macros/latex/contrib/quantumarticle/quantumview-template.bib
+2022/12/11 | 14150 | macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls
+2022/12/11 | 140726 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
+2022/12/11 | 140633 | systems/win32/miktex/tm/packages/miktex-mktex-bin-x64-2.9.tar.lzma
+2022/12/11 | 136384 | systems/texlive/tlnet/archive/tex4ht.doc.r65237.tar.xz
+2022/12/11 | 136093 | systems/win32/miktex/tm/packages/miktex-dvips-bin-x64-2.9.tar.lzma
+2022/12/11 | 136079 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
+2022/12/11 | 1337822 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
+2022/12/11 | 1333253 | systems/win32/miktex/tm/packages/miktex-poppler-bin-x64-2.9.tar.lzma
+2022/12/11 | 1332962 | macros/latex/contrib/quantumarticle.zip
+2022/12/11 | 1297964 | systems/texlive/tlnet/archive/tex4ht.source.r65237.tar.xz
+2022/12/11 | 1248222 | macros/xetex/latex/xduts.zip
+2022/12/11 | 121131 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
+2022/12/11 | 121055 | systems/win32/miktex/tm/packages/miktex-epstopdf-bin-x64-2.9.tar.lzma
+2022/12/11 | 1168244 | systems/win32/miktex/tm/packages/miktex-asymptote-bin-x64-2.9.tar.lzma
+2022/12/11 | 1167249 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
+2022/12/11 | 115795 | systems/win32/miktex/tm/packages/miktex-gregorio-bin-x64-2.9.tar.lzma
+2022/12/11 | 115791 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
+2022/12/11 | 1150 | systems/win32/miktex/tm/packages/next/pr.ini
+2022/12/11 | 113664 | systems/texlive/tlnet/archive/texlive-scripts.r65233.tar.xz
+2022/12/11 | 113108 | systems/win32/miktex/tm/packages/miktex-gd-bin-x64-2.9.tar.lzma
+2022/12/11 | 112954 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
+2022/12/11 | 1111 | macros/xetex/latex/xduts/xduts.ins
+2022/12/11 | 1098 | systems/win32/miktex/tm/packages/pr.ini
+2022/12/11 | 109694 | systems/win32/miktex/tm/packages/miktex-jpeg-bin-x64-2.9.tar.lzma
+2022/12/11 | 109678 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
+2022/12/11 | 109229 | systems/win32/miktex/tm/packages/miktex-texware-bin-x64-2.9.tar.lzma
+2022/12/11 | 109224 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
+2022/12/11 | 1067 | macros/latex/contrib/thalie/dicts/thalie-german.trsl
+2022/12/11 | 105431 | systems/win32/miktex/tm/packages/miktex-mfware-bin-x64-2.9.tar.lzma
+2022/12/11 | 105359 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
+2022/12/11 | 103872 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
+2022/12/11 | 103771 | systems/win32/miktex/tm/packages/miktex-lua53-bin-x64-2.9.tar.lzma
+2022/12/11 | 103601 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
+2022/12/11 | 103535 | systems/win32/miktex/tm/packages/miktex-cweb-bin-x64-2.9.tar.lzma
+2022/12/11 | 1027 | macros/latex/contrib/thalie/dicts/thalie-french.trsl
+2022/12/11 | 1022 | macros/latex/contrib/thalie/dicts/thalie-italian.trsl
+2022/12/11 | 1018292 | systems/win32/miktex/tm/packages/beamertheme-arguelles__doc.tar.lzma
+2022/12/11 | 101569 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
+2022/12/11 | 101500 | systems/win32/miktex/tm/packages/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
+2022/12/11 | 1012920 | systems/texlive/tlnet/archive/beamertheme-arguelles.doc.r65234.tar.xz
+2022/12/11 | 10078 | macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa-mecheng.sty
+2022/12/11 | 1001 | macros/latex/contrib/thalie/dicts/thalie-english.trsl
2022/12/10 | 9804 | graphics/pgf/contrib/circuitikz/tex/pgfcircflow.tex
-2022/12/10 | 976252 | systems/texlive/tlnet/archive/tex4ht.r65231.tar.xz
2022/12/10 | 9538 | graphics/pgf/contrib/circuitikz/tex/pgfcirccurrent.tex
2022/12/10 | 938 | graphics/pgf/contrib/circuitikz/doc/circuitikz-context.tex
2022/12/10 | 937130 | graphics/pgf/contrib/circuitikz/tex/circuitikz-1.1.2-body.tex
2022/12/10 | 929934 | graphics/pgf/contrib/circuitikz/tex/t-circuitikz-1.1.2.tex
-2022/12/10 | 920 | systems/win32/miktex/tm/packages/pr.ini
-2022/12/10 | 88421 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
-2022/12/10 | 8830 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
2022/12/10 | 876 | macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/beamerfontthemeArguelles.sty
2022/12/10 | 8445 | graphics/pgf/contrib/circuitikz/doc/ctikzmanutils.sty
2022/12/10 | 841340 | graphics/pgf/contrib/circuitikz/tex/circuitikz-1.0-body.tex
2022/12/10 | 834142 | graphics/pgf/contrib/circuitikz/tex/t-circuitikz-1.0.tex
2022/12/10 | 83192 | graphics/pgf/contrib/circuitikz/tex/pgfcircquadpoles.tex
-2022/12/10 | 827386 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
-2022/12/10 | 81504 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
-2022/12/10 | 79828 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
-2022/12/10 | 77660 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
2022/12/10 | 771 | macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/beamerouterthemeArguelles.sty
-2022/12/10 | 759351 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin-x64.tar.lzma
2022/12/10 | 758991 | graphics/pgf/contrib/circuitikz/tex/circuitikz-0.9.6-body.tex
2022/12/10 | 751663 | graphics/pgf/contrib/circuitikz/tex/t-circuitikz-0.9.6.tex
-2022/12/10 | 750235 | systems/win32/miktex/tm/packages/files.csv.lzma
-2022/12/10 | 750201 | systems/win32/miktex/tm/packages/next/files.csv.lzma
-2022/12/10 | 74329 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
-2022/12/10 | 73953 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
-2022/12/10 | 73380 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
2022/12/10 | 728 | graphics/pgf/contrib/circuitikz/tex/circuitikz-0.4.sty
-2022/12/10 | 72797 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
-2022/12/10 | 71212 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
-2022/12/10 | 702353 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
-2022/12/10 | 69201 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
+2022/12/10 | 7159 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2022/12/10 | 6915 | macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/README.md
2022/12/10 | 690729 | graphics/pgf/contrib/circuitikz/tex/circuitikz-0.9.3-body.tex
2022/12/10 | 683433 | graphics/pgf/contrib/circuitikz/tex/t-circuitikz-0.9.3.tex
-2022/12/10 | 65862 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
2022/12/10 | 657335 | macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/demo/demo-arguelles.pdf
-2022/12/10 | 64357 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma
2022/12/10 | 641 | graphics/pgf/contrib/circuitikz/tex/circuitikz-0.8.3.sty
-2022/12/10 | 637120 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
2022/12/10 | 635 | graphics/pgf/contrib/circuitikz/tex/circuitikz-0.7.sty
2022/12/10 | 635 | graphics/pgf/contrib/circuitikz/tex/circuitikz-0.6.sty
2022/12/10 | 633 | graphics/pgf/contrib/circuitikz/tex/circuitikz-0.9.6.sty
@@ -45,165 +359,67 @@
2022/12/10 | 632 | graphics/pgf/contrib/circuitikz/tex/circuitikz-1.1.2.sty
2022/12/10 | 632 | graphics/pgf/contrib/circuitikz/tex/circuitikz-0.9.3.sty
2022/12/10 | 631 | graphics/pgf/contrib/circuitikz/tex/circuitikz-1.4.6.sty
-2022/12/10 | 62760 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
2022/12/10 | 626 | graphics/pgf/contrib/circuitikz/tex/circuitikz-1.0.sty
-2022/12/10 | 61643 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
2022/12/10 | 615315 | install/macros/latex/contrib/nicefilelist.tds.zip
2022/12/10 | 613713 | macros/latex/contrib/nicefilelist.zip
-2022/12/10 | 601513 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
-2022/12/10 | 58447 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
-2022/12/10 | 5834240 | systems/texlive/tlnet/install-tl-unx.tar.gz
-2022/12/10 | 57834 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
-2022/12/10 | 57426 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma
-2022/12/10 | 57193 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
-2022/12/10 | 571421 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
2022/12/10 | 56360 | graphics/pgf/contrib/circuitikz/tex/pgfcircmonopoles.tex
2022/12/10 | 561 | macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/beamercolorthemeArguelles.sty
-2022/12/10 | 55789 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
2022/12/10 | 537281 | systems/win32/miktex/tm/packages/lt3rawobjects__doc.tar.lzma
2022/12/10 | 536804 | systems/texlive/tlnet/archive/lt3rawobjects.doc.r65230.tar.xz
-2022/12/10 | 529983 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
-2022/12/10 | 52723 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
-2022/12/10 | 52696 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
-2022/12/10 | 52534 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
2022/12/10 | 516430 | graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.tex
-2022/12/10 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
-2022/12/10 | 48904 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
-2022/12/10 | 48187 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
-2022/12/10 | 472949 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma
2022/12/10 | 47166 | graphics/pgf/contrib/circuitikz/doc/changelog.tex
-2022/12/10 | 45807 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
-2022/12/10 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2022/12/10 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
-2022/12/10 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2022/12/10 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
-2022/12/10 | 44063 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
-2022/12/10 | 43904 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
-2022/12/10 | 43697 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
-2022/12/10 | 42474 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma
-2022/12/10 | 423416 | systems/texlive/tlnet/archive/texlive-scripts.doc.r65227.tar.xz
+2022/12/10 | 438812 | macros/latex/contrib/quantumarticle/quantum-template.pdf
2022/12/10 | 422295 | graphics/pgf/contrib/circuitikz/tex/circuitikz-0.8.3-body.tex
2022/12/10 | 418 | graphics/pgf/contrib/circuitikz/doc/compatibility.tex
-2022/12/10 | 41742 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
2022/12/10 | 416850 | graphics/pgf/contrib/circuitikz/tex/t-circuitikz-0.8.3.tex
2022/12/10 | 41491 | graphics/pgf/contrib/circuitikz/tex/pgfcirc.defines.tex
2022/12/10 | 403567 | graphics/pgf/contrib/circuitikz/tex/circuitikz-0.7-body.tex
-2022/12/10 | 4021446 | biblio/ctan-bibdata.zip
-2022/12/10 | 394909 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
2022/12/10 | 393884 | graphics/pgf/contrib/circuitikz/tex/circuitikz-0.6-body.tex
2022/12/10 | 3901 | macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/demo/demo-arguelles.tex
2022/12/10 | 3867 | systems/win32/miktex/tm/packages/lt3rawobjects.tar.lzma
2022/12/10 | 3802 | graphics/pgf/contrib/circuitikz/README.md
2022/12/10 | 377503 | graphics/pgf/contrib/circuitikz/tex/pgfcirctripoles.tex
-2022/12/10 | 37415 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
2022/12/10 | 3724 | systems/texlive/tlnet/archive/lt3rawobjects.r65230.tar.xz
-2022/12/10 | 37093 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
2022/12/10 | 364117 | graphics/pgf/contrib/circuitikz/tex/circuitikz-0.4-body.tex
-2022/12/10 | 3627200 | biblio/ctan-bibdata/ctan.pdf
2022/12/10 | 3590 | graphics/pgf/contrib/circuitikz/tex/t-circuitikz.tex
2022/12/10 | 35438 | graphics/pgf/contrib/circuitikz/tex/pgfcircvoltage.tex
-2022/12/10 | 35294 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
-2022/12/10 | 352404 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
-2022/12/10 | 35210 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
-2022/12/10 | 33890 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
2022/12/10 | 33313 | graphics/pgf/contrib/circuitikz/tex/pgfcircshapes.tex
-2022/12/10 | 327524 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
-2022/12/10 | 326704 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
2022/12/10 | 3241670 | install/graphics/pgf/contrib/circuitikz.tds.zip
-2022/12/10 | 32326 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
2022/12/10 | 3221863 | graphics/pgf/contrib/circuitikz.zip
-2022/12/10 | 31764 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
-2022/12/10 | 31601 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
2022/12/10 | 3150 | graphics/pgf/contrib/circuitikz/tex/ctikzstyle-legacy.tex
-2022/12/10 | 306083 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
-2022/12/10 | 306077 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
-2022/12/10 | 30512 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
-2022/12/10 | 296170 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
-2022/12/10 | 28756 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
-2022/12/10 | 287108 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
-2022/12/10 | 2831704 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
2022/12/10 | 281961 | graphics/pgf/contrib/circuitikz/tex/pgfcircbipoles.tex
2022/12/10 | 280 | graphics/pgf/contrib/circuitikz/tex/ctikzstyle-example.tex
-2022/12/10 | 27714 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
-2022/12/10 | 2748446 | biblio/ctan-bibdata/ctan.bib
2022/12/10 | 2734873 | systems/win32/miktex/tm/packages/simpleicons.tar.lzma
-2022/12/10 | 271337 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
2022/12/10 | 2709564 | systems/texlive/tlnet/archive/simpleicons.r65229.tar.xz
+2022/12/10 | 265403 | macros/latex/contrib/quantumarticle/quantum-bibliographystyle-demo.pdf
+2022/12/10 | 261220 | macros/latex/contrib/quantumarticle/quantumarticle.pdf
2022/12/10 | 2578 | macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/beamerinnerthemeArguelles.sty
-2022/12/10 | 25518478 | systems/texlive/tlnet/install-tl.zip
-2022/12/10 | 25206 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
-2022/12/10 | 247461 | systems/win32/miktex/tm/packages/next/miktex-hitex-bin-x64.tar.lzma
-2022/12/10 | 245747 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
-2022/12/10 | 2431948 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
-2022/12/10 | 24056 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
-2022/12/10 | 24047 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
2022/12/10 | 2188 | graphics/pgf/contrib/circuitikz/tex/ctikzstyle-romano.tex
2022/12/10 | 215467 | macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/demo/demo-arguelles-serif.gif
-2022/12/10 | 213527 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
-2022/12/10 | 208997 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
+2022/12/10 | 211240 | support/TeX4ht/source/ChangeLog
2022/12/10 | 208835 | macros/latex/contrib/mindflow.zip
-2022/12/10 | 20433315 | systems/texlive/tlnet/install-tl-windows.exe
-2022/12/10 | 203417 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
2022/12/10 | 203366 | macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/demo/demo-arguelles-sans.gif
-2022/12/10 | 2003548 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
2022/12/10 | 1994465 | systems/win32/miktex/tm/packages/simpleicons__doc.tar.lzma
2022/12/10 | 1988208 | systems/texlive/tlnet/archive/simpleicons.doc.r65229.tar.xz
-2022/12/10 | 196628 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
-2022/12/10 | 1856794 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
-2022/12/10 | 1856763 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
-2022/12/10 | 18524 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
-2022/12/10 | 18360 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
-2022/12/10 | 181611 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
-2022/12/10 | 17886857 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
2022/12/10 | 17883 | systems/win32/miktex/tm/packages/simpleicons__source.tar.lzma
2022/12/10 | 17645 | graphics/pgf/contrib/circuitikz/doc/circuitikz-context.pdf
-2022/12/10 | 175407 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
-2022/12/10 | 173477 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
-2022/12/10 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
2022/12/10 | 16722 | graphics/pgf/contrib/circuitikz/tex/pgfcircpath.tex
-2022/12/10 | 1629813 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
-2022/12/10 | 1629440 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
2022/12/10 | 1629420 | graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.pdf
2022/12/10 | 1583 | macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/beamerthemeArguelles.sty
-2022/12/10 | 155989 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
2022/12/10 | 15442 | graphics/pgf/contrib/circuitikz/tex/pgfcirclabel.tex
-2022/12/10 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
-2022/12/10 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
-2022/12/10 | 1515629 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
-2022/12/10 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
2022/12/10 | 14587 | graphics/pgf/contrib/circuitikz/tex/pgfcircutils.tex
-2022/12/10 | 1456967 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
-2022/12/10 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
-2022/12/10 | 14445 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
-2022/12/10 | 140853 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
2022/12/10 | 13737 | graphics/pgf/contrib/circuitikz/tex/circuitikz.sty
-2022/12/10 | 136384 | systems/texlive/tlnet/archive/tex4ht.doc.r65231.tar.xz
-2022/12/10 | 135904 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
-2022/12/10 | 1336998 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
-2022/12/10 | 1288856 | systems/texlive/tlnet/archive/tex4ht.source.r65231.tar.xz
2022/12/10 | 12165 | systems/win32/miktex/tm/packages/lt3rawobjects__source.tar.lzma
-2022/12/10 | 121163 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
2022/12/10 | 11808 | systems/texlive/tlnet/archive/lt3rawobjects.source.r65230.tar.xz
-2022/12/10 | 1166875 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
-2022/12/10 | 115703 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
-2022/12/10 | 1150 | systems/win32/miktex/tm/packages/next/pr.ini
-2022/12/10 | 113652 | systems/texlive/tlnet/archive/texlive-scripts.r65227.tar.xz
-2022/12/10 | 113240 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
+2022/12/10 | 1151104 | support/TeX4ht/source/tex4ht-4ht.tex
2022/12/10 | 112203 | graphics/pgf/contrib/circuitikz/tex/pgfcircmultipoles.tex
-2022/12/10 | 109733 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
-2022/12/10 | 109333 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
2022/12/10 | 1081680 | graphics/pgf/contrib/circuitikz/tex/circuitikz-1.4.6-body.tex
2022/12/10 | 1073051 | graphics/pgf/contrib/circuitikz/tex/t-circuitikz-1.4.6.tex
2022/12/10 | 1072 | macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/LICENSE
2022/12/10 | 1055235 | macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles.zip
-2022/12/10 | 105441 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
-2022/12/10 | 103715 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
-2022/12/10 | 103600 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
2022/12/10 | 1021798 | graphics/pgf/contrib/circuitikz/tex/circuitikz-1.2.7-body.tex
-2022/12/10 | 101630 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
2022/12/10 | 1014383 | graphics/pgf/contrib/circuitikz/tex/t-circuitikz-1.2.7.tex
2022/12/09 | 8411 | support/TeX4ht/source/mktex4ht-cnf.tex
-2022/12/09 | 7084 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2022/12/09 | 699480 | macros/latex/contrib/lt3rawobjects/lt3rawobjects.pdf
2022/12/09 | 6898 | systems/win32/miktex/tm/packages/pixelart.tar.lzma
2022/12/09 | 665 | fonts/simpleicons/README.md
@@ -240,7 +456,6 @@
2022/12/09 | 2242 | macros/latex/contrib/lt3rawobjects/lt3rawobjects.ins
2022/12/09 | 216649 | fonts/simpleicons/tex/simpleiconsglyphs-pdftex.tex
2022/12/09 | 212601 | fonts/simpleicons/tex/simpleiconsglyphs-xeluatex.tex
-2022/12/09 | 211044 | support/TeX4ht/source/ChangeLog
2022/12/09 | 1978740 | fonts/simpleicons/doc/simpleicons.pdf
2022/12/09 | 1875904 | fonts/simpleicons/opentype/SimpleIcons.otf
2022/12/09 | 1844 | fonts/simpleicons/doc/simpleicons.tex
@@ -259,7 +474,6 @@
2022/12/09 | 1232 | fonts/simpleicons/tfm/SimpleIcons--simpleiconsEight.tfm
2022/12/09 | 1228 | fonts/simpleicons/tfm/SimpleIcons--simpleiconsOne.tfm
2022/12/09 | 115563634 | macros/context/latest/cont-tmf.zip
-2022/12/09 | 1151095 | support/TeX4ht/source/tex4ht-4ht.tex
2022/12/09 | 1119 | fonts/simpleicons/map/simpleicons.map
2022/12/08 | 93496 | systems/texlive/tlnet/archive/jourcl.doc.r65221.tar.xz
2022/12/08 | 7626 | systems/win32/miktex/tm/packages/dtxdescribe.tar.lzma
@@ -434,7 +648,6 @@
2022/12/07 | 10042 | support/digestif/LICENSE.md
2022/12/06 | 972 | systems/texlive/tlnet/archive/collection-binextra.r65204.tar.xz
2022/12/06 | 92517 | macros/latex/contrib/hfutexam/hfutexam_cankaodaan.pdf
-2022/12/06 | 881135 | macros/xetex/latex/xduts/xdulogo.pdf
2022/12/06 | 872300 | systems/texlive/tlnet/archive/mathfont.doc.r65205.tar.xz
2022/12/06 | 832716 | systems/texlive/tlnet/archive/lineno.doc.r65204.tar.xz
2022/12/06 | 78032 | macros/latex/contrib/datetime2-contrib/datetime2-icelandic.zip
@@ -483,15 +696,12 @@
2022/12/06 | 340 | systems/texlive/tlnet/archive/digestif.aarch64-linux.r65210.tar.xz
2022/12/06 | 32923 | macros/latex/contrib/univie-ling/tex/univie-ling-wlg.cls
2022/12/06 | 32805 | macros/latex/contrib/univie-ling/doc/univie-ling-thesis.tex
-2022/12/06 | 316974 | macros/xetex/latex/xduts/xduts.pdf
-2022/12/06 | 3125 | macros/xetex/latex/xduts/README.md
2022/12/06 | 311 | macros/latex/contrib/hfutexam/README.md
2022/12/06 | 29536 | macros/latex/contrib/univie-ling/doc/univie-ling-paper.tex
2022/12/06 | 28551 | macros/latex/contrib/univie-ling/tex/univie-ling-handout.cls
2022/12/06 | 26799 | macros/latex/contrib/univie-ling/doc/univie-ling-expose.tex
2022/12/06 | 26739 | macros/latex/contrib/univie-ling/tex/univie-ling-thesis.cls
2022/12/06 | 26337 | macros/latex/contrib/univie-ling/doc/univie-ling-handout.tex
-2022/12/06 | 252062 | macros/xetex/latex/xduts/xduts.dtx
2022/12/06 | 24919 | macros/latex/contrib/univie-ling/tex/univie-ling-paper.cls
2022/12/06 | 24366 | macros/latex/contrib/univie-ling/biblatex-univie-ling/univie-ling.bbx
2022/12/06 | 2258 | macros/latex/contrib/univie-ling/doc/templates/template-wlg-article.tex
@@ -515,9 +725,7 @@
2022/12/06 | 124714188 | systems/win32/TLW64/tl-win64.zip
2022/12/06 | 1243516 | systems/texlive/tlnet/archive/latexindent.doc.r65208.tar.xz
2022/12/06 | 1243104 | systems/texlive/tlnet/archive/siunitx.doc.r65207.tar.xz
-2022/12/06 | 1242819 | macros/xetex/latex/xduts.zip
2022/12/06 | 116920 | systems/texlive/tlnet/archive/siunitx.source.r65207.tar.xz
-2022/12/06 | 1111 | macros/xetex/latex/xduts/xduts.ins
2022/12/06 | 10056 | macros/latex/contrib/univie-ling/README
2022/12/05 | 996 | macros/latex/contrib/siunitx/README.md
2022/12/05 | 9912 | macros/latex/contrib/siunitx/siunitx-symbol.dtx
@@ -596,135 +804,3 @@
2022/12/05 | 1061956 | systems/texlive/tlnet/archive/kpathsea.doc.r65200.tar.xz
2022/12/05 | 103909 | macros/latex/contrib/siunitx/siunitx-unit.dtx
2022/12/05 | 0 | macros/latex/contrib/nicefilelist/source/empty.f
-2022/12/04 | 9843 | support/latexindent/LatexIndent/Lines.pm
-2022/12/04 | 94352 | macros/latex/contrib/ppt-slides/socrates.jpg
-2022/12/04 | 932594 | macros/latex/contrib/ppt-slides/ppt-slides.pdf
-2022/12/04 | 8960 | systems/texlive/tlnet/archive/graphics-pln.r65187.tar.xz
-2022/12/04 | 8829 | support/latexindent/LatexIndent/IfElseFi.pm
-2022/12/04 | 88026 | biblio/bibtex/contrib/urlbst/configure
-2022/12/04 | 8699591 | support/latexindent/bin/windows/latexindent.exe
-2022/12/04 | 8462 | support/latexindent/LatexIndent/FileExtension.pm
-2022/12/04 | 838 | support/latexindent/LatexIndent/Version.pm
-2022/12/04 | 828596 | systems/texlive/tlnet/archive/optex.r65185.tar.xz
-2022/12/04 | 8284 | systems/texlive/tlnet/archive/latex-firstaid-dev.source.r65181.tar.xz
-2022/12/04 | 788536 | systems/texlive/tlnet/archive/ppt-slides.doc.r65194.tar.xz
-2022/12/04 | 777388 | systems/texlive/tlnet/archive/uplatex.doc.r65197.tar.xz
-2022/12/04 | 7329 | support/latexindent/LatexIndent/BackUpFileProcedure.pm
-2022/12/04 | 7280 | support/latexindent/LatexIndent/MandatoryArgument.pm
-2022/12/04 | 721712 | systems/texlive/tlnet/archive/latex-base-dev.source.r65180.tar.xz
-2022/12/04 | 7161 | support/latexindent/documentation/figure-schematic.png
-2022/12/04 | 6964 | support/latexindent/LatexIndent/TrailingComments.pm
-2022/12/04 | 6808 | support/latexindent/LatexIndent/Environment.pm
-2022/12/04 | 6735 | biblio/bibtex/contrib/urlbst/urlbst.bib
-2022/12/04 | 6694 | support/latexindent/LatexIndent/Item.pm
-2022/12/04 | 65444 | systems/texlive/tlnet/archive/njuthesis.source.r65196.tar.xz
-2022/12/04 | 6522 | support/latexindent/LatexIndent/OptionalArgument.pm
-2022/12/04 | 65059 | support/latexindent/LatexIndent/AlignmentAtAmpersand.pm
-2022/12/04 | 6389449 | support/latexindent/bin/macos/latexindent
-2022/12/04 | 6308 | systems/texlive/tlnet/archive/ppt-slides.source.r65194.tar.xz
-2022/12/04 | 629000 | systems/texlive/tlnet/archive/pdfextra.doc.r65184.tar.xz
-2022/12/04 | 6159918 | support/latexindent/bin/linux/latexindent
-2022/12/04 | 6023 | support/latexindent/LatexIndent/Else.pm
-2022/12/04 | 5809 | support/latexindent/LatexIndent/UnNamedGroupingBracesBrackets.pm
-2022/12/04 | 54385 | support/latexindent/documentation/latexindent-yaml-schema.json
-2022/12/04 | 5430 | support/latexindent/LatexIndent/KeyEqualsValuesBraces.pm
-2022/12/04 | 5390 | support/latexindent/LatexIndent/Check.pm
-2022/12/04 | 5325 | biblio/bibtex/contrib/urlbst/Makefile.in
-2022/12/04 | 5313 | macros/latex/contrib/mathfont/README.txt
-2022/12/04 | 5206 | support/latexindent/documentation/contributors.bib
-2022/12/04 | 50744 | systems/texlive/tlnet/archive/uplatex.source.r65197.tar.xz
-2022/12/04 | 48856 | support/latexindent/LatexIndent/GetYamlSettings.pm
-2022/12/04 | 4816 | support/latexindent/LatexIndent/BlankLines.pm
-2022/12/04 | 467744 | systems/texlive/tlnet/archive/amiri.r65191.tar.xz
-2022/12/04 | 44096 | support/latexindent/documentation/logo.png
-2022/12/04 | 4402 | support/latexindent/documentation/latex-indent.bib
-2022/12/04 | 4365 | support/latexindent/LatexIndent/RoundBrackets.pm
-2022/12/04 | 4340 | support/latexindent/LatexIndent/NamedGroupingBracesBrackets.pm
-2022/12/04 | 423876 | systems/texlive/tlnet/archive/biblatex-publist.doc.r65182.tar.xz
-2022/12/04 | 420248 | systems/texlive/tlnet/archive/semantex.doc.r65183.tar.xz
-2022/12/04 | 41936 | systems/texlive/tlnet/archive/platex.r65197.tar.xz
-2022/12/04 | 4160 | systems/texlive/tlnet/archive/ppt-slides.r65194.tar.xz
-2022/12/04 | 408010 | support/latexindent/documentation/latexindent.tex
-2022/12/04 | 40224 | systems/texlive/tlnet/archive/bithesis.source.r65195.tar.xz
-2022/12/04 | 3989 | macros/latex/contrib/ppt-slides/ppt-templates/ppt-9x6.tex
-2022/12/04 | 3812 | macros/latex/contrib/hfutexam/hfutexam_shijuan.tex
-2022/12/04 | 3747 | support/latexindent/LatexIndent/Replacement.pm
-2022/12/04 | 3720 | macros/unicodetex/latex/bithesis/bithesis.ins
-2022/12/04 | 36234 | biblio/bibtex/contrib/urlbst/alphaurl.bst
-2022/12/04 | 3482 | support/latexindent/LatexIndent/HorizontalWhiteSpace.pm
-2022/12/04 | 3472 | systems/texlive/tlnet/archive/latex-firstaid-dev.r65181.tar.xz
-2022/12/04 | 3412 | support/latexindent/latexindent.pl
-2022/12/04 | 3339 | support/latexindent/LatexIndent/Tokens.pm
-2022/12/04 | 32940 | biblio/bibtex/contrib/urlbst/plainurl.bst
-2022/12/04 | 329334 | biblio/bibtex/contrib/urlbst.zip
-2022/12/04 | 32656 | biblio/bibtex/contrib/urlbst/abbrvurl.bst
-2022/12/04 | 31515420 | systems/texlive/tlnet/archive/latex-base-dev.doc.r65180.tar.xz
-2022/12/04 | 30357 | biblio/bibtex/contrib/urlbst/unsrturl.bst
-2022/12/04 | 29492 | biblio/bibtex/contrib/urlbst/urlbst
-2022/12/04 | 29433 | biblio/bibtex/contrib/urlbst/urlbst.in
-2022/12/04 | 27328 | support/latexindent/LatexIndent/Verbatim.pm
-2022/12/04 | 272 | macros/latex/contrib/ppt-slides/DEPENDS.txt
-2022/12/04 | 2701 | support/latexindent/LatexIndent/Switches.pm
-2022/12/04 | 2690 | support/latexindent/LatexIndent/Preamble.pm
-2022/12/04 | 26516 | systems/texlive/tlnet/archive/semantex.r65183.tar.xz
-2022/12/04 | 265128 | systems/texlive/tlnet/archive/latex-firstaid-dev.doc.r65181.tar.xz
-2022/12/04 | 2643 | macros/unicodetex/latex/bithesis/contributing-zh.md
-2022/12/04 | 2640 | macros/latex/contrib/ppt-slides/ppt-slides.ins
-2022/12/04 | 25512 | systems/texlive/tlnet/archive/pdfextra.r65184.tar.xz
-2022/12/04 | 251788 | systems/texlive/tlnet/archive/urlbst.doc.r65190.tar.xz
-2022/12/04 | 24708 | systems/texlive/tlnet/archive/amiri.doc.r65191.tar.xz
-2022/12/04 | 24410 | support/latexindent/LatexIndent/Arguments.pm
-2022/12/04 | 2422 | biblio/bibtex/contrib/urlbst/README
-2022/12/04 | 2332 | macros/unicodetex/latex/bithesis/contributing.md
-2022/12/04 | 23272 | systems/texlive/tlnet/archive/urlbst.source.r65190.tar.xz
-2022/12/04 | 2320 | support/latexindent/LatexIndent/Logger.pm
-2022/12/04 | 229684 | systems/texlive/tlnet/archive/latex-base-dev.r65180.tar.xz
-2022/12/04 | 22818 | support/latexindent/LatexIndent/Document.pm
-2022/12/04 | 2252 | systems/texlive/tlnet/archive/graphics-pln.doc.r65187.tar.xz
-2022/12/04 | 222858 | biblio/bibtex/contrib/urlbst/urlbst.pdf
-2022/12/04 | 21928 | systems/texlive/tlnet/archive/bithesis.r65195.tar.xz
-2022/12/04 | 21779 | biblio/bibtex/contrib/urlbst/urlbst.html
-2022/12/04 | 2166 | biblio/bibtex/contrib/urlbst/configure.ac
-2022/12/04 | 21564 | support/latexindent/LatexIndent/Indent.pm
-2022/12/04 | 20663 | biblio/bibtex/contrib/urlbst/urlbst.tex
-2022/12/04 | 20388 | support/latexindent/LatexIndent/Sentence.pm
-2022/12/04 | 2008 | support/latexindent/README
-2022/12/04 | 1993 | macros/unicodetex/latex/bithesis/README.md
-2022/12/04 | 19922 | support/latexindent/defaultSettings.yaml
-2022/12/04 | 19636 | systems/texlive/tlnet/archive/njuthesis.r65196.tar.xz
-2022/12/04 | 194792 | macros/unicodetex/latex/bithesis/bithesis.dtx
-2022/12/04 | 19106 | biblio/bibtex/contrib/urlbst/LICENCE-lppl.txt
-2022/12/04 | 18522 | support/latexindent/LatexIndent/ModifyLineBreaks.pm
-2022/12/04 | 18502 | macros/latex/contrib/ppt-slides/ppt-slides.dtx
-2022/12/04 | 18092 | biblio/bibtex/contrib/urlbst/LICENCE-gpl-2.0.txt
-2022/12/04 | 17979 | support/latexindent/LatexIndent/Wrap.pm
-2022/12/04 | 1620 | macros/latex/contrib/ppt-slides/README.md
-2022/12/04 | 1558 | support/latexindent/latexindent-module-installer.pl
-2022/12/04 | 1519012 | systems/texlive/tlnet/archive/optex.doc.r65185.tar.xz
-2022/12/04 | 1500064 | systems/texlive/tlnet/archive/platex.doc.r65197.tar.xz
-2022/12/04 | 1485 | support/latexindent/LatexIndent/DoubleBackSlash.pm
-2022/12/04 | 14844 | systems/texlive/tlnet/archive/uplatex.r65197.tar.xz
-2022/12/04 | 1420 | macros/latex/contrib/ppt-slides/ppt-schemes/ppt-light.tex
-2022/12/04 | 1420 | macros/latex/contrib/ppt-slides/ppt-schemes/ppt-light-mono.tex
-2022/12/04 | 1420 | macros/latex/contrib/ppt-slides/ppt-schemes/ppt-dark.tex
-2022/12/04 | 1420 | macros/latex/contrib/ppt-slides/ppt-schemes/ppt-dark-mono.tex
-2022/12/04 | 14108 | systems/texlive/tlnet/archive/urlbst.r65190.tar.xz
-2022/12/04 | 139172 | systems/texlive/tlnet/archive/platex.source.r65197.tar.xz
-2022/12/04 | 13890 | support/latexindent/LatexIndent/Special.pm
-2022/12/04 | 13420 | support/latexindent/LatexIndent/HiddenChildren.pm
-2022/12/04 | 12897 | support/latexindent/LatexIndent/LogFile.pm
-2022/12/04 | 12646 | support/latexindent/LatexIndent/Braces.pm
-2022/12/04 | 12200 | systems/texlive/tlnet/archive/biblatex-publist.r65182.tar.xz
-2022/12/04 | 11 | biblio/bibtex/contrib/urlbst/VERSION
-2022/12/04 | 1167612 | systems/texlive/tlnet/archive/njuthesis.doc.r65196.tar.xz
-2022/12/04 | 1166672 | support/latexindent/documentation/latexindent.pdf
-2022/12/04 | 11300 | support/latexindent/LatexIndent/FileContents.pm
-2022/12/04 | 11142 | support/latexindent/LatexIndent/Heading.pm
-2022/12/04 | 1078 | macros/latex/contrib/ppt-slides/LICENSE.txt
-2022/12/04 | 1076205 | macros/unicodetex/latex/bithesis.zip
-2022/12/04 | 10622 | support/latexindent/LatexIndent/Command.pm
-2022/12/04 | 10530 | macros/latex/contrib/hfutexam/hfutexam_simple.tex
-2022/12/04 | 1046235 | macros/unicodetex/latex/bithesis/bithesis.pdf
-2022/12/04 | 1038670 | fonts/amiri.zip
-2022/12/04 | 1030676 | systems/texlive/tlnet/archive/bithesis.doc.r65195.tar.xz
-2022/12/04 | 1018762 | macros/latex/contrib/ppt-slides.zip
diff --git a/biblio/ctan-bibdata/ctan.bib b/biblio/ctan-bibdata/ctan.bib
index b2f977711b..27c97e91a4 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 11-12-2022, 02:01:33
+%% created at 12-12-2022, 02:01:39
%%
%% This file is provided under the terms of the LPPL v1.3 or
@@ -15076,8 +15076,8 @@
title = {The \texttt{cooking-units} package},
subtitle = {Typeset and convert units for cookery books and recipes},
author = {Ben Vitecek},
- date = {2022-06-06},
- version = {2.01},
+ date = {2022-12-11},
+ version = {3.00},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/cooking-units},
url = {https://ctan.org/pkg/cooking-units},
@@ -30853,8 +30853,8 @@
title = {The \texttt{hereapplies} package},
subtitle = {A \LaTeX{} package for referencing groups of pages that share something in common},
author = {{Unknown}},
- date = {2022-09-13},
- version = {1.0.0},
+ date = {2022-12-11},
+ version = {1.0.1},
license = {gpl3+},
mirror = {https://mirror.ctan.org/macros/latex/contrib/hereapplies},
url = {https://ctan.org/pkg/hereapplies},
@@ -56621,8 +56621,8 @@
title = {The \texttt{quantumarticle} package},
subtitle = {Document class for submissions to the Quantum journal},
author = {{Quantum — the open journal for quantum science} and Johannes Jakob Meyer and Christian Gogolin},
- date = {2022-03-25},
- version = {6.0},
+ date = {2022-12-11},
+ version = {6.1},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/quantumarticle},
url = {https://ctan.org/pkg/quantumarticle},
@@ -67535,8 +67535,8 @@
title = {The \texttt{thalie} package},
subtitle = {Typeset drama plays},
author = {Louis Paternault},
- date = {2022-10-09},
- version = {0.12a},
+ date = {2022-12-11},
+ version = {0.13a},
license = {lppl1.3},
mirror = {https://mirror.ctan.org/macros/latex/contrib/thalie},
url = {https://ctan.org/pkg/thalie},
@@ -70499,8 +70499,8 @@
title = {The \texttt{tuda-ci} package},
subtitle = {\LaTeX{} templates of Technische Universität Darmstadt},
author = {Marei Peischl},
- date = {2022-11-04},
- version = {3.28},
+ date = {2022-12-11},
+ version = {3.29},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/tuda-ci},
url = {https://ctan.org/pkg/tuda-ci},
@@ -75119,8 +75119,8 @@
title = {The \texttt{xduts} package},
subtitle = {Xidian University \TeX{} Suite},
author = {{Unknown}},
- date = {2022-12-06},
- version = {3.1.1.2},
+ date = {2022-12-11},
+ version = {4.0.1.0},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/xetex/latex/xduts},
url = {https://ctan.org/pkg/xduts},
diff --git a/biblio/ctan-bibdata/ctan.pdf b/biblio/ctan-bibdata/ctan.pdf
index 888acdcad4..9378f29f27 100644
--- a/biblio/ctan-bibdata/ctan.pdf
+++ b/biblio/ctan-bibdata/ctan.pdf
Binary files differ
diff --git a/macros/latex/contrib/cooking-units/cooking-units.dtx b/macros/latex/contrib/cooking-units/cooking-units.dtx
index b953801209..ad55c18e70 100644
--- a/macros/latex/contrib/cooking-units/cooking-units.dtx
+++ b/macros/latex/contrib/cooking-units/cooking-units.dtx
@@ -817,6 +817,9 @@ and the derived file cooking-units.sty.
% \changes {2022/06/06} {2.01} {Implement a way to define the plural-finding algorithm.}
% \changes {2022/06/06} {2.01} {Add two public commands \cs{cookingunits_print_fraction:nnn} and \cs{cookingunits_print_range:nn}.}
%
+% \changes {2022/11/27} {3.00} {Allow ranges and fractions to be combined!}
+% \changes {2022/11/27} {3.00} {New input type: products!}
+% \changes {2022/11/27} {3.00} {Change |cutext-range-unit| to |cutext-range-phrase|.}
%
%
%
@@ -829,7 +832,7 @@ and the derived file cooking-units.sty.
%
%
% \maketitle
-%
+%^^A \TODO{Test für Phrases schreiben!}
%
% \begin{documentation}
% \begin{abstract}
@@ -875,6 +878,10 @@ and the derived file cooking-units.sty.
% See \cref{sec:bug-feed} for more details. Wanna just check the
% existing translations? See \cref{sec:Translations}.
%
+% \subsection{What's new?}
+% Since v3.00 fraction and ranges can now be combined!
+% Furthermore, products are introduced! Check the next section for more info.
+%
% \section {The Commands}
% \label{sec:commands}
%
@@ -891,8 +898,9 @@ and the derived file cooking-units.sty.
% \end{itemize}
%
% Numbers and units are printed using \mycs{cunum}. The numerical part
-% can interpret \verb|_| and \texttt{/} as (mixed) fractions and
-% \verb|--| as a separator for ranges; to convert units use the option
+% can interpret \verb|_| and \texttt{/} as (mixed) fractions,
+% \verb|--| as a separator for ranges and |x| or |\times| for products;
+% to convert units use the option
% \texttt{\meta{old-unit}=\meta{new-unit}}\footnote{New keys can be
% added and defined, see \cref{sec:pred-units} and
% \cref{sec:def-units} for further information.}. It furthermore
@@ -913,12 +921,19 @@ and the derived file cooking-units.sty.
% \cunum{2,3}{kg} \\
% \cunum{2--3}{kg} \\
% \cunum{2.5--3.5}{kg} \\
+% \cunum{2.5 x 3.5}{kg} \\
+% \cunum{2.5 \times 3.5}{kg} \\
+% \cunum{2.5 x 3 \times 4,5}{kg} \\
% \cunum[kg=g]{2.5--3,5}{kg} \\
+% \cunum[kg=g]{2.5 x 3,5}{kg} \\
% \cunum[C=F]{200}{C} \\
% \cunum[C=F]{180--200}{C} \\
% \cunum{1/2}{m} \\
% \cunum{1_1/2}{m} \\
% \cunum[m=cm]{1_1/2}{m} \\
+% \cunum{1_1/2--2}{m} \\
+% \cunum[m=cm]{1--1_1/2}{m} \\
+% \cunum[m=cm]{1 x 1_1/2 x 2}{m} \\
% \cunum{?}{l} \\
% \cunum{50}{dag} \\
% \cunum{5}[0]{dag} \\
@@ -935,7 +950,8 @@ and the derived file cooking-units.sty.
% v1.10 it works similar\footnote{One could also say \enquote{exactly
% like}.} to \mycs{cunum}: it allows the conversion between units and
% interprets the numerical part (again |_| and |/| are used for
-% (mixed) fractions and |--| for ranges). Furthermore, \cCutext\ allow
+% (mixed) fractions, |--| for ranges and |x| or |\times| for products).
+% Furthermore, \cCutext\ allow
% the usages of numerals (see \cref{sec:load-time-options} for more information).
%^^A if the package
%^^A option \opt{use-fmtcount-numerals} (see \cref{sec:load-time-options})
@@ -948,6 +964,7 @@ and the derived file cooking-units.sty.
% \cutext{1}{l} \\
% \Cutext{1}{l} \\
% \Cutext{1--2}{l} \\
+% \Cutext{1 x 2}{l} \\
% \cutext{12}{l} \\
% \Cutext{13}{l}
% \end{cuexamplecode}
@@ -958,6 +975,7 @@ and the derived file cooking-units.sty.
% \Cutext{1}{l} \\
% \cutext{1--2}{l} \\
% \Cutext{1--2}{l} \\
+% \Cutext{1 x 2}{l} \\
% \cutext{12}{l} \\
% \Cutext{13}{l}
% \end{cuexamplecode}
@@ -973,6 +991,7 @@ and the derived file cooking-units.sty.
% \cutext{1}{l} \\
% \Cutext{1}{l} \\
% \cutext{1--2}{l} \\
+% \cutext{1 x 2}{l} \\
% \cutext{12}{l} \\
% \Cutext{13}{l} \\
% \Cutext{?}{l} \\
@@ -981,14 +1000,16 @@ and the derived file cooking-units.sty.
%
%
% \lstinline|\cuam| works like \mycs{cunum}, but without a unit, so
-% changing units doesn't affect it. Like \mycs{cunum} \texttt{\_} and
-% \texttt{/} are used to imply a (mixed) fraction and |--| is used for ranges.
+% changing units doesn't affect it. It has the same syntax as \mycs{cunum}.
%
% \begin{cuexamplecode}
% \cuam{3} \\
% \cuam{2--3} \\
+% \cuam{2 x 3 x 4} \\
% \cuam{2/3} \\
-% \cuam{1_2/3}
+% \cuam{1_2/3} \\
+% \cuam{2/3--1_2/3} \\
+% \cuam{2/3 x 1 x 1_2/3}
% \end{cuexamplecode}
%
% Furthermore it allows the concept of \enquote{phrases} (replacing a positive integer
@@ -1005,6 +1026,7 @@ and the derived file cooking-units.sty.
% \cuam{24} \\
% \cuam{12--24} \\
% \cuam{12--13}\\
+% \cuam{12x24x36} \\
% \cuam{18} \\
% \cuam{60}
% \end{cuexamplecode}
@@ -1103,20 +1125,19 @@ and the derived file cooking-units.sty.
% While using \cCutext\ one may wonder which rules are used in order to determine
% if the printed unit is singular or plural. If rules for a specific language are not found
% the default ruleset is used. There are currently two rule sets: One default
-% and one if you are using french.
+% and one for the french language.
%
-% Each set has three seperate rules: one for \enquote{normal} numbers, one for
+% Each set has three separate rules: one for \enquote{normal} numbers, one for
% ranges and one for fractions.
%
% \subsubsection*{French}
%
% Use singular if:
% \begin{description}
-% \item[normal] The absolute value of the number is smaller $2$
+% \item[number] The absolute value of the number is smaller $2$
% \item[fraction] The absolute value of the evaluated fraction is smaller $2$.
% (e.g.\ $1\,\sfrac{1}{2} = 1.5$ uses singular, $2\,\sfrac{3}{4} = 2.75$ uses plural).
-% \item[range] The absolute value of the second number is smaller $2$.
-% (e.g.\ \cuam{1--2}: Take $2$.)
+% \item[range/product] Take the last item and use one of the rules above.
% \end{description}
%
% For sources see \cite{Plural-French-Academia}, \cite{Plural-French-absolute-1} \&
@@ -1127,9 +1148,9 @@ and the derived file cooking-units.sty.
%
% Use singular if:
% \begin{description}
-% \item[normal] The number is equal to $1$.
-% \item[fraction] There is no mixed fraction part and the nominator is equal to $1$.
-% \item[range] The second number is equal to $1$. (e.g.\ \cuam{1--2}: Take $2$.)
+% \item[number] The number is equal to $1$.
+% \item[fraction] There is no mixed fraction part and the numerator is equal to $1$.
+% \item[range/product] Take the last item and use one of the rules above.
% \end{description}
%
% \section{Predefined units \& some notes}
@@ -1682,15 +1703,15 @@ and the derived file cooking-units.sty.
% name and symbol for given language you can use \lstinline|\cudefinename|;
% to only change symbols use \lstinline|\cudefinesymbol|.
%
-% \begin{function}{decimal-mark,cutext-range-sign, one(m),one(f),one(n)}
+% \begin{function}{decimal-mark,cutext-range-phrase, one(m),one(f),one(n)}
% Those are special keys (as they cannot be used as units). Not only
% are printed units language depending, but as is the decimal mark
% (|.| or |,|) and the text which substitutes the range-sign.
% To set the decimal mark use
% \opt{decimal-mark} (see examples below), to set the range-sign for \cCutext\
-% use \opt{cutext-range-sign}.
+% use \opt{cutext-range-phrase}.
%
-% Note that \opt{cutext-range-sign} is \enquote{overwritten} by the \emph{option}
+% Note that \opt{cutext-range-phrase} is \enquote{overwritten} by the \emph{option}
% \opt{cutext-range-sign}. If the \emph{option} is set, then the language symbol
% will be ignored.
%
@@ -1738,7 +1759,7 @@ and the derived file cooking-units.sty.
% {h} {hour} [hours]
% {C} {degree\space Celsius} [degrees\space Celsius]
% {decimal-marker} {.}
-% {cutext-range-sign} {~to~}
+% {cutext-range-phrase} {~to~}
% {one(m)} {one}
% {one(f)} {one}
% {one(n)} {one}
@@ -1753,7 +1774,7 @@ and the derived file cooking-units.sty.
% {h} {Stunde} [Stunden] <f>
% {C} {Grad\space Celsius}
% {decimal-marker} {,}
-% {cutext-range-sign} {~bis~}
+% {cutext-range-phrase} {~bis~}
% {one(m)} {ein}
% {one(f)} {eine}
% {one(n)} {ein}
@@ -1785,7 +1806,7 @@ and the derived file cooking-units.sty.
% \cudefinesymbol {English}
% {
% {decimal-mark} {.}
-% {cutext-range-sign} {~to~}
+% {cutext-range-phrase} {~to~}
% {one(m)} {one}
% {one(f)} {one}
% {one(n)} {one}
@@ -1793,7 +1814,7 @@ and the derived file cooking-units.sty.
% \cudefinesymbol {German}
% {
% {decimal-mark} {,}
-% {cutext-range-sign} {~bis~}
+% {cutext-range-phrase} {~bis~}
% {one(m)} {ein}
% {one(f)} {eine}
% {one(n)} {ein}
@@ -1804,7 +1825,7 @@ and the derived file cooking-units.sty.
% {dl} {dL}
% {cl} {cL}
% {ml} {mL}
-% {cutext-range-sign} {~\`{a}~}
+% {cutext-range-phrase} {~\`{a}~}
% {decimal-mark} {,}
% {one(m)} {un}
% {one(f)} {une}
@@ -2410,7 +2431,7 @@ and the derived file cooking-units.sty.
% Allows \meta{character(s)} to be used in the first mandatory argument of
% \mycs{cunum}, \mycs{cuam}, \cCutext{} without raising an error (you can customize this
% behavior, see \opt{set-unknown-message}). By default it is set to |?|.
-% Please note that the sign |<| is not allowed as a special sign.
+% Please note that the sign |<| is not allowed as a special sign.
% \end{function}
%
% \begin{cuexamplecode}
@@ -3197,7 +3218,6 @@ and the derived file cooking-units.sty.
%
%
%
-%
% \begin{function}{42}
% \begin{syntax}
% 42 = \meta{true/false}
@@ -3213,6 +3233,7 @@ and the derived file cooking-units.sty.
% \cunum{180}{C} \\
% \cunum{15/4}{s} \\
% \cunum{1--2}{min} \\
+% \cunum{1x2x3}{min} \\
% \cunum{?}{l}
% \end{cuexamplecode}
%
@@ -3693,14 +3714,14 @@ and the derived file cooking-units.sty.
% \begin{macrocode}
\ProvidesExplPackage
{cooking-units}
- {2022/06/06}
- {2.01}
+ {2022/12/10}
+ {3.00}
{Ein Paket fuer Kocheinheiten}
% \end{macrocode}
%
% Checking if \pkg{expl3} is up-to-date, otherwise abort the loading of the package.
% \begin{macrocode}
-\@ifpackagelater { expl3 } { 2022/02/24 }
+\@ifpackagelater { expl3 } { 2022-09-28 }
{ }
{
\PackageError { cooking-units } { Support~package~expl3~too~old }
@@ -3853,9 +3874,9 @@ and the derived file cooking-units.sty.
% Commands to print numerals. Either use default or set yourself.
% \begin{macrocode}
\cs_new:Npn \@@_print_numeral:n #1
- { \msg_error:nnn {cooking-units} { define-numeral-function } }
+ { \msg_error:nn {cooking-units} { define-numeral-function } #1 }
\cs_new:Npn \@@_print_Numeral:n #1
- { \msg_error:nnn {cooking-units} { define-Numeral-function } }
+ { \msg_error:nn {cooking-units} { define-Numeral-function } #1 }
\bool_if:NT \g_@@_opt_numeral_bool
{
\cs_set_eq:NN \@@_print_numeral:n \numberstringnum
@@ -3921,6 +3942,7 @@ and the derived file cooking-units.sty.
% , \l_@@_input_allowed_special_signs_tl
% , \g_@@_input_str_hash_one_tl
% , \l_@@_input_range_sign_tl
+% , \l_@@_input_times_sign_tl
% , \l_@@_cutext_space_tl
% , \l_@@_cutext_numeral_space_tl
% , \l_@@_cuphrase_space_tl
@@ -3965,6 +3987,7 @@ and the derived file cooking-units.sty.
\tl_new:N \l_@@_input_allowed_special_signs_tl
\tl_new:N \g_@@_input_str_hash_one_tl
\tl_new:N \l_@@_input_range_sign_tl
+\tl_new:N \l_@@_input_times_sign_tl
\tl_new:N \l_@@_cutext_space_tl
\tl_new:N \l_@@_cutext_numeral_space_tl
\tl_new:N \l_@@_cuphrase_space_tl
@@ -3985,8 +4008,8 @@ and the derived file cooking-units.sty.
\tl_new:N \l_@@_stored_units_tl
\tl_new:N \l_@@_stored_formula_tl
\tl_new:N \l_@@_base_tl
-\tl_new:N \l_cookingunits_raw_amount_a_tl
-\tl_new:N \l_cookingunits_raw_amount_b_tl
+\tl_new:N \l_@@_times_space_tl
+\tl_new:N \l_@@_times_sign_tl
% \end{macrocode}
% \begin{macrocode}
\tl_new:N \l_@@_cmd_hook_tl
@@ -4004,6 +4027,7 @@ and the derived file cooking-units.sty.
% \begin{macrocode}
\tl_set:Nn \l_@@_input_digits_tl { 0123456789 }
\tl_set:Nn \l_@@_input_range_sign_tl { -- }
+\tl_set:Nn \l_@@_input_times_sign_tl { \times x X }
\tl_set:Nn \l_@@_input_fraction_sign_tl { / }
\tl_set:Nn \l_@@_input_mixed_fraction_sign_tl { _ }
\tl_set:Nn \l_@@_input_decimal_mark_tl { . , }
@@ -4012,11 +4036,13 @@ and the derived file cooking-units.sty.
\tl_gset_rescan:Nnn \g_@@_input_str_hash_one_tl
{ \char_set_catcode_letter:N \# } {#1}
\tl_set:Nn \l_@@_allwed_integer_math_operators_tl { +-()*/ }
+\tl_set:Nn \l_@@_times_sign_tl { \ensuremath { \times } }
% \end{macrocode}
% \begin{macrocode}
\tl_set:Nn \l_@@_cunum_range_sign_tl { -- }
\tl_set:Nn \l_@@_cutext_range_sign_tl { }
\tl_set:Nn \l_@@_value_unit_space_tl { \thinspace }
+\tl_set:Nn \l_@@_times_space_tl { \, } % \:
\tl_set:Nn \l_@@_cutext_space_tl { ~ }
\tl_set:Nn \l_@@_cutext_numeral_space_tl { \space }
\tl_set:Nn \l_@@_cuphrase_space_tl { \space }
@@ -4279,6 +4305,21 @@ and the derived file cooking-units.sty.
\bool_new:N \l_@@_contains_valid_key_bool
\bool_new:N \l_@@_check_decimal_bool
\bool_new:N \l_@@_unit_error_bool
+\bool_new:N \l_@@_rf_contains_fraction_bool
+\bool_new:N \l_@@_rf_contains_range_bool
+\bool_new:N \l_@@_rf_contains_times_bool
+\bool_new:N \l_@@_rf_check_fraction_bool
+\bool_new:N \l_@@_lokal_eval_fractions_bool
+\seq_new:N \l_@@_split_input_seq
+\seq_new:N \l_@@_parsed_seq
+\seq_new:N \l_@@_numbers_to_check_seq
+\int_new:N \l_@@_largest_common_divisor_int
+\seq_new:N \l_@@_reduced_numbers_seq
+\bool_new:N \l_@@_seperator_after_fraction_bool
+\seq_new:N \l_@@_prepared_printing_seq
+\int_new:N \l_@@_nr_of_items
+\seq_new:N \l_@@_processed_seq
+\tl_new:N \l_@@_precompiled_options_tl
% \end{macrocode}
% \end{macro}
%
@@ -4514,13 +4555,27 @@ and the derived file cooking-units.sty.
{
\tl_map_inline:nn {#1}
{
- \str_if_eq:nnT {##1} { < }
+ \str_if_eq:nnTF {##1} { < }
{
\msg_error:nn { cooking-units } { <-not-allowed-as-special-sign }
\tl_map_break:n { \use_none:nn }
}
}
- \use:n { \tl_set:Nn \l_@@_input_allowed_special_signs_tl {#1} }
+ \use:n
+ {
+ \str_if_in:nnTF {#1} { x }
+ {
+ \tl_remove_all:Nn \l_@@_input_times_sign_tl { x }
+ \tl_remove_all:Nn \l_@@_input_times_sign_tl { X }
+ }{
+ \str_if_in:nnT {#1} { X }
+ {
+ \tl_remove_all:Nn \l_@@_input_times_sign_tl { x }
+ \tl_remove_all:Nn \l_@@_input_times_sign_tl { X }
+ }
+ }
+ \tl_set:Nn \l_@@_input_allowed_special_signs_tl {#1}
+ }
} ,
set-special-sign .groups:n = { parse } ,
% \end{macrocode}
@@ -4536,6 +4591,13 @@ and the derived file cooking-units.sty.
{
\msg_error:nn { cooking-units } { <-not-allowed-as-special-sign }
}{
+ \bool_lazy_or:nnT
+ { \str_if_eq_p:nn {##1} { x } }
+ { \str_if_eq_p:nn {##1} { X } }
+ {
+ \tl_remove_all:Nn \l_@@_input_times_sign_tl { x }
+ \tl_remove_all:Nn \l_@@_input_times_sign_tl { X }
+ }
\tl_put_right:Nn \l_@@_input_allowed_special_signs_tl {##1}
}
}
@@ -4578,6 +4640,7 @@ and the derived file cooking-units.sty.
% \begin{macrocode}
print-numerals .bool_set:N = \l_@@_pckopt_print_numeral_bool ,
print-numerals .default:n = { true } ,
+ print-numerals .groups:n = { unit-hook } ,
% \end{macrocode}
% \end{macro}
%
@@ -4586,6 +4649,7 @@ and the derived file cooking-units.sty.
% \begin{macrocode}
use-numerals-below .int_set:N = \l_@@_print_numerals_below_int ,
use-numerals-below .default:n = { 13 } ,
+ use-numerals-below .groups:n = { unit-hook } ,
% \end{macrocode}
%\end{macro}
%
@@ -4612,6 +4676,9 @@ and the derived file cooking-units.sty.
cunum-range-sign .default:n = { -- } ,
cutext-range-sign .tl_set:N = \l_@@_cutext_range_sign_tl ,
cutext-range-sign .default:n = { -- } ,
+ range-sign .groups:n = { unit-hook } ,
+ cunum-range-sign .groups:n = { unit-hook } ,
+ cutext-range-sign .groups:n = { unit-hook } ,
% \end{macrocode}
%\end{macro}
%
@@ -4620,6 +4687,7 @@ and the derived file cooking-units.sty.
% \begin{macrocode}
use-phrases .bool_set:N = \l_@@_pckopt_use_phrases_bool ,
use-phrases .default:n = { true } ,
+ use-phrases .groups:n = { unit-hook } ,
% \end{macrocode}
% \end{macro}
%
@@ -4641,6 +4709,7 @@ and the derived file cooking-units.sty.
\l_@@_pckopt_round_precision_negative_bool
} ,
round-precision .default:n = { 2 } ,
+ round-precision .groups:n = { unit-hook } ,
% \end{macrocode}
%\end{macro}
%
@@ -4651,16 +4720,16 @@ and the derived file cooking-units.sty.
round-to-int .choices:nn =
{ true , false }
{
- \msg_error:nnnn { cooking-units } { Option-deprecated } { round-to-int } { round-precision = 0 }
- \int_compare:nNnTF { \l_keys_choice_int } = { 1 }
+ \msg_error:nnnn { cooking-units }
+ { Option-deprecated } { round-to-int } { round-precision = 0 }
+ \int_compare:nNnT { \l_keys_choice_int } = { 1 }
{
\int_set:Nn \l_@@_round_precision_int { 0 }
- }{
-
}
\use:c { bool_set_ \l_keys_choice_tl :N } \l_@@_pckopt_round_to_int_bool
} ,
round-to-int .default:n = { false } ,
+ round-to-int .groups:n = { unit-hook } ,
% \end{macrocode}
%\end{macro}
%
@@ -4680,6 +4749,7 @@ and the derived file cooking-units.sty.
}
},
round-half .default:n = { default },
+ round-half .groups:n = { unit-hook } ,
% \end{macrocode}
% \end{macro}
%
@@ -4726,6 +4796,7 @@ and the derived file cooking-units.sty.
% \begin{macrocode}
mixed-fraction-space .dim_set:N = \l_@@_mixed_frac_dim ,
mixed-fraction-space .default:n = { 0.1 em } ,
+ mixed-fraction-space .groups:n = { unit-hook } ,
% \end{macrocode}
%\end{macro}
%
@@ -4735,6 +4806,7 @@ and the derived file cooking-units.sty.
% \begin{macrocode}
cutext-space .tl_set:N = \l_@@_cutext_space_tl ,
cutext-space .default:n = { ~ } ,
+ cutext-space .groups:n = { unit-hook } ,
% \end{macrocode}
% \end{macro}
%
@@ -4744,6 +4816,7 @@ and the derived file cooking-units.sty.
% \begin{macrocode}
cutext-numeral-space .tl_set:N = \l_@@_cutext_numeral_space_tl ,
cutext-numeral-space .default:n = { \space } ,
+ cutext-numeral-space .groups:n = { unit-hook } ,
% \end{macrocode}
% \end{macro}
%
@@ -4752,6 +4825,7 @@ and the derived file cooking-units.sty.
% \begin{macrocode}
phrase-space .tl_set:N = \l_@@_cuphrase_space_tl ,
phrase-space .default:n = { ~ } ,
+ phrase-space .groups:n = { unit-hook } ,
% \end{macrocode}
% \end{macro}
%
@@ -4760,9 +4834,18 @@ and the derived file cooking-units.sty.
% \begin{macrocode}
amount-unit-space .tl_set:N = \l_@@_value_unit_space_tl ,
amount-unit-space .default:n = { \thinspace } ,
+ amount-unit-space .groups:n = { unit-hook } ,
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{ amount-unit-space }
+% Setting the space between the value and the printed unit.
+% \begin{macrocode}
+ times-space .tl_set:N = \l_@@_times_space_tl ,
+ times-space .default:n = { \: } ,
+ times-space .groups:n = { unit-hook } ,
+% \end{macrocode}
+%\end{macro}
%
%
%
@@ -5163,12 +5246,34 @@ and the derived file cooking-units.sty.
% I do not allow fractions and ranges in the same input. Maybe I will
% change this.
% \begin{macrocode}
-\msg_new:nnnn { cooking-units } { fraction-not-allowed-with-range }
+%\msg_new:nnnn { cooking-units } { fraction-not-allowed-with-range }
+% {
+% You \ cannot \ use \ '/' \ ( and \ '_' )\ in \ combination \
+% with \ '\l_@@_input_range_sign_tl' \ in \ '#1'.
+% }{
+% You \ cannot \ use \ fractions \ with \ a \ range.
+% \msg_see_documentation_text:n { cooking-units }
+% }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\msg_new:nnnn { cooking-units } { range-too-many-items }
+ {
+ A \ range \ is \ only \ allowed \ to \ have \ a \ maximum \ of
+ \ two \ items. \ You \ have \ #1 \ items \ in \ '#2'.
+ }{
+ You \ cannot \ use \ more \ than \ two \ '--' .
+ \msg_see_documentation_text:n { cooking-units }
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\msg_new:nnnn { cooking-units } { range-and-times-not-allowed }
{
- You \ cannot \ use \ '/' \ ( and \ '_' )\ in \ combination \
- with \ '\l_@@_input_range_sign_tl' \ in \ '#1'.
+ It \ is \ not \ allowed \ to \ mix \ ranges \ ('--') \ and \
+ times \ in \ '#1'.
}{
- You \ cannot \ use \ fractions \ with \ a \ range.
+ Do \ not \ use \ times \ and \ ranges \ in \ the \ same \ command.
\msg_see_documentation_text:n { cooking-units }
}
% \end{macrocode}
@@ -5892,17 +5997,6 @@ and the derived file cooking-units.sty.
% \begin{macrocode}
\prg_new_conditional:Npnn \@@_if_contain_decimals:NN #1#2 { TF }
{
-% \@@_if_contains_decimal:NTF #1
-% {
-% \@@_if_print_type_equal:nTF { range }
-% {
-% \@@_if_contains_decimal:NTF #2
-% { \prg_return_true: }
-% { \prg_return_false: }
-% }
-% { \prg_return_true: }
-% }
-% { \prg_return_false: }
\@@_if_contains_decimal:NTF #1
{ \prg_return_true: }
{
@@ -6081,7 +6175,7 @@ and the derived file cooking-units.sty.
\@@_if_unit_has_a_key:VTF #1
{
\tl_set_eq:Nc \l_@@_tmp_unit_tl { l_@@_base_key_unit_ #1 _tl }
- \prop_get:cnNT { l_@@_new_cukeys_ \l_@@_tmp_unit_tl _prop }
+ \prop_get:cnNT { l_@@_rf_cukeys_ \l_@@_tmp_unit_tl _prop }
{ Liste } \l_@@_tmpa_seq
{
\@@_seq_get_overlap:NNTF \g_@@_natural_units_seq \l_@@_tmpa_seq
@@ -6138,7 +6232,7 @@ and the derived file cooking-units.sty.
\cs_new:Npn \@@_prepare_going_bonkers:N #1
{
\tl_set_eq:Nc \l_@@_tmp_unit_tl { l_@@_base_key_unit_ #1 _tl }
- \prop_get:cnN { l_@@_new_cukeys_ \l_@@_tmp_unit_tl _prop } { Liste } \l_@@_tmpa_seq
+ \prop_get:cnN { l_@@_rf_cukeys_ \l_@@_tmp_unit_tl _prop } { Liste } \l_@@_tmpa_seq
\bool_set_false:N \l_@@_tmpa_bool
\bool_until_do:Nn \l_@@_tmpa_bool
{
@@ -6164,29 +6258,56 @@ and the derived file cooking-units.sty.
%
%
%
-% \begin{macro}{\@@_tl_eval:Nn}
+% \begin{macro}{\@@_tl_set_eval:Nn}
% I am using this construction often enough, so \dots\ yeah.
% \begin{macrocode}
-\cs_new:Npn \@@_tl_eval:Nn #1#2 { \tl_set:Nf #1 { \fp_eval:n {#2} } }
-\cs_generate_variant:Nn \@@_tl_eval:Nn { Nv, cn }
+\cs_new:Npn \@@_tl_set_eval:Nn #1#2 { \tl_set:Nf #1 { \fp_eval:n {#2} } }
+\cs_generate_variant:Nn \@@_tl_set_eval:Nn { Nv, cn }
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{ \@@_bool_reverse:N }
+% Also used sometimes.
+% \begin{macrocode}
+\cs_new:Npn \@@_bool_reverse:N #1
+ { \bool_if:NTF #1 { \bool_set_false:N } { \bool_set_true:N } #1 }
+% \end{macrocode}
+% \end{macro}
%
+% \begin{macro}{\@@_rf_seq_put_right:Nnnnnn, \@@_rf_seq_put_right:NnVVVV, \@@_rf_seq_put_right:NnnnnV}
+% Nothing special here, just a wrapper used later.
+% \begin{macrocode}
+\cs_new:Npn \@@_rf_seq_put_right:Nnnnnn #1 #2#3#4#5#6
+ { \seq_put_right:Nn #1 { {#2} {#3} {#4} {#5} {#6} } }
+\cs_generate_variant:Nn \@@_rf_seq_put_right:Nnnnnn { NnVVVV, NnnVVV, NnnnnV }
+% \end{macrocode}
+% \end{macro}
%
-% \begin{macro}{ }
+%
+% \begin{macro}{ \@@_change_unit:TF }
% I am using this construction often enough, so \dots\ yeah.
% Note that if the evaluation is |true|, the path taken is the |false| one.
% \begin{macrocode}
\prg_new_conditional:Npnn \@@_change_unit: { TF }
{
- \@@_if_print_type_equal:nTF { fraction }
+ \@@_if_state_equal:nTF { special_sign }
{ \prg_return_false: }
- {
- \@@_if_state_equal:nTF { special_sign }
- { \prg_return_false: }
- { \prg_return_true: }
+ {
+ \bool_if:NTF \l_@@_rf_contains_fraction_bool
+ {
+ \bool_if:NTF \l_@@_lokal_eval_fractions_bool
+ { \prg_return_true: }
+ { \prg_return_false: }
+ }
+ { \prg_return_true: }
}
+% \bool_if:NTF \l_@@_rf_contains_fraction_bool
+% { \prg_return_false: }
+% {
+% \@@_if_state_equal:nTF { special_sign }
+% { \prg_return_false: }
+% { \prg_return_true: }
+% }
}
% \end{macrocode}
% \end{macro}
@@ -6339,7 +6460,7 @@ and the derived file cooking-units.sty.
\tl_if_in:NnT #2 { - }
{
\tl_remove_once:Nn #2 { - }
- \bool_if:NTF #1 { \bool_set_false:N } { \bool_set_true:N } #1
+ \@@_bool_reverse:N #1
}
\@@_check_minus_remove_and_reverse:NN #1
}
@@ -6657,6 +6778,7 @@ and the derived file cooking-units.sty.
\seq_gset_from_clist:Nn \g_@@_allowed_special_keys_seq
{
cutext-range-sign ,
+ cutext-range-phrase ,
decimal-mark ,
one (m) ,
one (f) ,
@@ -6697,11 +6819,16 @@ and the derived file cooking-units.sty.
% \end{macrocode}
%
% \begin{macrocode}
-\@@_culang_def_base:nnn { name } { cutext-range-sign } { -- }
-\@@_culang_def_base:nnn { name-pl } { cutext-range-sign } { \c_@@_no_translation_str }
-\@@_culang_def_for:nnnn { German } { name } { cutext-range-sign } { ~bis~ }
-\@@_culang_def_for:nnnn { English } { name } { cutext-range-sign } { ~to~ }
-\@@_culang_def_for:nnnn { French } { name } { cutext-range-sign } { ~\`{a}~ }
+\@@_culang_def_base:nnn { name } { cutext-range-phrase } { -- }
+%\@@_culang_def_base:nnn { name } { cutext-range-sign } { -- }
+%\@@_culang_def_base:nnn { name-pl } { cutext-range-sign } { \c_@@_no_translation_str }
+\@@_culang_def_base:nnn { name-pl } { cutext-range-phrase } { \c_@@_no_translation_str }
+%\@@_culang_def_for:nnnn { German } { name } { cutext-range-sign } { ~bis~ }
+%\@@_culang_def_for:nnnn { English } { name } { cutext-range-sign } { ~to~ }
+%\@@_culang_def_for:nnnn { French } { name } { cutext-range-sign } { ~\`{a}~ }
+\@@_culang_def_for:nnnn { German } { name } { cutext-range-phrase } { ~bis~ }
+\@@_culang_def_for:nnnn { English } { name } { cutext-range-phrase } { ~to~ }
+\@@_culang_def_for:nnnn { French } { name } { cutext-range-phrase } { ~\`{a}~ }
% \end{macrocode}
%
%
@@ -6765,10 +6892,6 @@ and the derived file cooking-units.sty.
{ normal , special_sign , 42 , error }
\@@_def_new_type:nnn { cmd_type } { TF , T , p }
{ cunum , cCutext , cuam }
-\@@_def_new_type:nnn { parse_and_process_type } { TF , T }
- { number , range , fraction }
-\@@_def_new_type:nnn { print_type } { TF , T }
- { unknown , number , range , fraction }
\@@_def_new_type:nnn { bonkers_state } { }
{ normal , going , fully , xD }
% \end{macrocode}
@@ -6798,78 +6921,78 @@ and the derived file cooking-units.sty.
%
%
%
-% \begin{macro}{ \@@_do_the_stuff:nnnnn , \@@_do_the_stuff:nnnnn }
-% Main command shared by |\cunum|, etc.\ It reads the input
-% parses options and decides (depending on which command was used)
-% what to do with the stuff and how to print it.
+% \begin{macro}{ \@@_rf_main_command:nnnnnnm \@@_rf_main_command:nnnnnV }
% \begin{macrocode}
-\cs_new:Npn \@@_do_the_stuff:nnnnnn #1#2#3#4#5#6
+\cs_new:Npn \@@_rf_main_command:nnnnnn #1#2#3#4#5#6
{
% #1 -- label
% #2 -- options
% #3 -- amount
% #4 -- space
% #5 -- unit
- \@@_initialice_accordingly:nnnn {#1} {#4} {#2} {#5}
- \@@_use_hook_accordingly:
- \@@_parse_the_amount:n {#3}
- \@@_general_checkups:
+ \@@_rf_initialice:nnnn {#1} {#2} {#5} {#4}
+ \@@_rf_use_hook_accordingly:
+ \@@_rf_parse_the_amount:n {#3}
+ \@@_rf_general_checkups:
\@@_if_state_equal:nTF { normal }
- { \@@_process_amount_normally:n {#2} }
- { \@@_process_amount_special: }
- \@@_new_print_amount_correctly:
- \@@_new_print_unit_correctly:
+ {
+ \@@_rf_process_amount_normally:n {#2}
+ \@@_rf_post_process_amount:
+ }{
+ \@@_rf_process_amount_special:
+ }
+ \@@_rf_prepare_amount_printing:N \l_@@_processed_seq
+ \@@_rf_print_amount_correctly:
+ \@@_rf_print_unit_correctly:
}
-\cs_generate_variant:Nn \@@_do_the_stuff:nnnnnn { nnnnV }
+\cs_generate_variant:Nn \@@_rf_main_command:nnnnnn { nnnnV }
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\@@_initialice_accordingly:nnnn , \@@_initialice_addon_cutext: }
-% This cs first initializes stuff that is equal for all commands, then
-% does command-specific things. The default stuff includes checking if the
-% unit is valid, setting some bools, sets options (including change of units), etc.
%
-% For |\cunum| we set the space used for |\phantom|, for |\cuam| we do nothing.
+% \subsubsection{Initialization}
+%
+% \begin{macro}{\@@_rf_initialice:nnnn }
+% A hub command for several steps. See the inividual commands for more
+% details. As each command is slightly different in execution, do some setup
+% depending on which command is currently in use.
% \begin{macrocode}
-\cs_new:Npn \@@_initialice_accordingly:nnnn #1#2#3#4
+\cs_new:Npn \@@_rf_initialice:nnnn #1#2#3#4
{
- \@@_initialize_new_default:nnn {#1} {#3} {#4}
- \@@_initialize_new_default_units:
+ \@@_rf_initialice_default:nnn {#1} {#2} {#3}
+ \@@_rf_initialize_units:
+ \@@_rf_setup_bools_for_process_and_prints:
\tl_case:NnF \l_@@_cmd_type_tl
{
- \c_@@_cmd_type_cunum_tl { \tl_set:Nn \l_@@_phantom_tl {#2} }
+ \c_@@_cmd_type_cunum_tl { \tl_set:Nn \l_@@_phantom_tl {#4} }
\c_@@_cmd_type_cCutext_tl { \@@_initialice_addon_cutext: }
\c_@@_cmd_type_cuam_tl { }
}
{ \@@_create_internal_error:nN { init-acc } \l_@@_cmd_type_tl }
}
% \end{macrocode}
-% For \cCutext\ we first check if the user wants to use \cCutext\ at all.
-% If not, change it to |\cunum|.
-% \begin{macrocode}
-\cs_new:Npn \@@_initialice_addon_cutext:
- {
- \bool_if:NT \l_@@_pckopt_cutext_to_cunum_bool
- { \@@_set_cmd_type_to:n { cunum } }
- \bool_set_false:N \l_@@_cutext_use_single_bool
- }
-% \end{macrocode}
% \end{macro}
+
+% \begin{macro}{\@@_rf_initialice_default:nnn}
+% Set some variables to their default value, set the options (unit changes, etc.), check if
+% a label
+% is used and make sure the units are defined.
%
-%
-% \begin{macro}{ \@@_initialize_new_default:nnn , \@@_initialize_new_default:nnV ,
-% \@@_intialize_new_default_units:
-% }
-% Shared by all commands and (nearly) first thing done. Sets the options,
-% sets the unit (and expands it if necessary), checks if unit is defined.
-% For |\cuam| the unit is a special |\c_@@_no_unit_marker_tl|. I could just check
-% if |\cuam| is used, but I think this is more general. If the marker is used
-% we do nothing, else we we check how the units change.
+% We set the state to |42| in case of using the \opt{42} option to later proceeed to the
+% special post-processing case.
% \begin{macrocode}
-\cs_new:Npn \@@_initialize_new_default:nnn #1#2#3
+\cs_new:Npn \@@_rf_initialice_default:nnn #1#2#3
{
+ \tl_clear:N \l_@@_phantom_tl
\tl_clear:N \l_@@_option_unit_tl
- \tl_if_empty:nF {#2} { \keys_set:nn { cooking-units } {#2} }
+ \tl_clear:N \l_@@_precompiled_options_tl
+ \bool_set_false:N \l_@@_lokal_recalc_for_people_bool
+ \bool_set_false:N \l_@@_lokal_eval_fractions_bool
+ \tl_if_empty:nF {#2}
+ {
+ \keys_precompile:nnN { cooking-units } {#2} \l_@@_precompiled_options_tl
+ \l_@@_precompiled_options_tl
+ }
\IfNoValueF {#1}
{ \@@_reference_label_and_persons:n {#1} }
\@@_expand_unit_input:Nn \l_@@_original_unit_tl {#3}
@@ -6879,113 +7002,91 @@ and the derived file cooking-units.sty.
\bool_set_true:N \l_@@_unit_error_bool
}
{ \@@_set_state_to:n { normal } }
- \@@_set_parse_and_process_type_to:n { number }
- \@@_set_print_type_to:n { unknown }
- \tl_clear:N \l_@@_phantom_tl
- \@@_initialize_new_default_units:
+ \bool_if:NT \l_@@_pckopt_fourty_two_bool
+ { \@@_set_state_to:n { 42 } }
}
% \end{macrocode}
-% First, convert the original unit to eV or a bonkers unit if necessary.
-% If we have an unit-change, store the wanted unit in |\l_@@_option_unit_tl|.
+% \end{macro}
+% \begin{macro}{\@@_rf_initialize_units:}
+% Looks more complicated than it is. |\l_@@_option_unit_tl| is the conversion unit (aka.\
+% the unit that should be printed if a unit-change is requested).
+% If |\cuam| is used there is no unit, but
+% a special marker instead: Set the option unit to the original unit as it does not matter.
+%
+% A bonkers unit change overrules a \enquote{eV} unit change; so if both are true,
+% prefer the bonkers one. All currently active unit-conversions are stored in the property
+% list |\l_@@_change_unit_prop|; get the conversion unit (if exists) and store it into
+% |\l_@@_option_unit_tl|.
% \begin{macrocode}
-\cs_new:Npn \@@_initialize_new_default_units:
+\cs_new:Npn \@@_rf_initialize_units:
{
\@@_if_no_unit_marker:NTF \l_@@_original_unit_tl
{ \tl_set_eq:NN \l_@@_option_unit_tl \l_@@_original_unit_tl }
- { \@@_intialize_new_default_units_aux: }
- }
-\cs_new:Npn \@@_intialize_new_default_units_aux:
- {
- \bool_if:NTF \l_@@_pckopt_bonkers_bool
- { \@@_changing_unit_bonkers:N \l_@@_original_unit_tl }
- {
- \bool_if:NT \l_@@_pckopt_convert_to_eV_bool
- { \@@_convert_to_eV:N \l_@@_original_unit_tl }
- }
- \prop_get:NVNF \l_@@_change_unit_prop \l_@@_original_unit_tl \l_@@_option_unit_tl
- { \tl_set_eq:NN \l_@@_option_unit_tl \l_@@_original_unit_tl }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_initialise_new_after_parsing:n}
-% As the name suggests, this one is used \emph{after} parsing the amount.
-% This is done in order to know if there is an error, if the unit needs
-% to be changed and if this command needs to be called at all.
-%
-% It is kinda difficult to decide which unit is the correct one, as it may change
-% due to unit-options. In theory this could lead to an infinite loop,
-% so I decide in this place how things are printed and which unit
-% is used.
-%
-% Well, in the end I only decide if a fraction is printed or not. The case of error or
-% special signs were already sorted out.
-%
-% To make sure the lokal options override the unit-options, we set
-% the options again after unit-options.
-% \begin{macrocode}
-\cs_new_protected:Npn \@@_initialise_new_after_parsing:n #1
- {
- \clist_if_empty:cF { l_@@_unit_option_ \l_@@_decided_unit_tl _clist }
- {
- \keys_set_filter:nnv
- { cooking-units }
- { change-unit }
- { l_@@_unit_option_ \l_@@_decided_unit_tl _clist }
- \tl_if_empty:nF {#1} { \keys_set:nn { cooking-units } {#1} }
+ {
+ \bool_if:NTF \l_@@_pckopt_bonkers_bool
+ { \@@_changing_unit_bonkers:N \l_@@_original_unit_tl }
+ {
+ \bool_if:NT \l_@@_pckopt_convert_to_eV_bool
+ { \@@_convert_to_eV:N \l_@@_original_unit_tl }
+ }
+ \prop_get:NVNF \l_@@_change_unit_prop \l_@@_original_unit_tl \l_@@_option_unit_tl
+ { \tl_set_eq:NN \l_@@_option_unit_tl \l_@@_original_unit_tl }
}
- \bool_set_eq:NN \l_@@_lokal_numeral_bool \l_@@_pckopt_print_numeral_bool
}
-\cs_new:Npn \@@_decide_unit:
- {
- \@@_change_unit:TF
- { \tl_set_eq:NN \l_@@_decided_unit_tl \l_@@_option_unit_tl }
- { \tl_set_eq:NN \l_@@_decided_unit_tl \l_@@_original_unit_tl }
- }
% \end{macrocode}
% \end{macro}
-%
-% \begin{macro}{\@@_new_setup_bools_for_process_and_prints:}
-% Determines some stuff for later use in the processing/printing department.
-% It checks if the amount needs to be recalculated; and if fractions should be
-% printed or not.
+% \begin{macro}{\@@_rf_setup_bools_for_process_and_prints:}
+% Set some booleans for later use (after parsing). Funnily enough, we can already
+% decide some future interactions like a evaluation of fractions or if the amount should
+% be recalculated to fit the references number of persons. We can do this, as for
+% errors or special-signs we skip the process where those booleans would be needed.
% \begin{macrocode}
-\cs_new:Npn \@@_new_setup_bools_for_process_and_prints:
+\cs_new:Npn \@@_rf_setup_bools_for_process_and_prints:
{
- \bool_set_false:N \l_@@_lokal_recalc_for_people_bool
\bool_lazy_and:nnT
{ \l_@@_reference_given_bool }
{ \l_@@_pckopt_recalculate_amount_bool }
- {
+ {
\int_compare:nNnF
{ \l_@@_wanted_number_of_persons_int }
=
{ \l_@@_local_number_of_persons_int }
{ \bool_set_true:N \l_@@_lokal_recalc_for_people_bool }
}
- \@@_if_print_type_equal:nT { fraction }
+ \bool_lazy_or:nnTF
+ { \l_@@_pckopt_eval_fractions_bool }
+ { \l_@@_lokal_recalc_for_people_bool }
+ { \bool_set_true:N \l_@@_lokal_eval_fractions_bool }
{
- \bool_lazy_or:nnTF
- { \l_@@_pckopt_eval_fractions_bool }
- { \l_@@_lokal_recalc_for_people_bool }
- { \@@_set_print_type_to:n { number } }
- {
-% "Convert" fractions \emph{only} if a unit change is requested.
- \bool_lazy_and:nnT
- { \l_@@_pckopt_convert_fractions_bool }
- { ! \tl_if_eq_p:NN \l_@@_option_unit_tl \l_@@_original_unit_tl }
- { \@@_set_print_type_to:n { number } }
- }
+% "Convert" fractions \emph{only} if a unit change is requested.
+ \bool_lazy_and:nnT
+ { \l_@@_pckopt_convert_fractions_bool }
+ { ! \tl_if_eq_p:NN \l_@@_option_unit_tl \l_@@_original_unit_tl }
+ { \bool_set_true:N \l_@@_lokal_eval_fractions_bool }
}
}
% \end{macrocode}
% \end{macro}
+% \begin{macro}{\@@_initialice_addon_cutext:}
+% For \cCutext\ we first check if the user wants to use \cCutext\ at all.
+% If not, change it to |\cunum|.
+% \begin{macrocode}
+\cs_new:Npn \@@_initialice_addon_cutext:
+ {
+ \bool_set_false:N \l_@@_cutext_use_single_bool
+ \bool_if:NT \l_@@_pckopt_cutext_to_cunum_bool
+ { \@@_set_cmd_type_to:n { cunum } }
+ }
+% \end{macrocode}
+% \end{macro}
%
-% \begin{macro}{ \@@_use_hook_accordingly: }
-% Hooks are straightforward. I know which command I used and thus set the
+% \subsubsection{Hooks}
+%
+% \begin{macro}{ \@@_rf_use_hook_accordingly: }
+% Hooks are straightforward. I know the current command and thus use the
% respective hook.
% \begin{macrocode}
-\cs_new:Npn \@@_use_hook_accordingly:
+\cs_new:Npn \@@_rf_use_hook_accordingly:
{
\l_@@_cmd_hook_tl
\tl_case:NnF \l_@@_cmd_type_tl
@@ -7006,600 +7107,1275 @@ and the derived file cooking-units.sty.
%
%
%
-% \begin{macro}{ \@@_general_checkups: }
-% Doing some general stuff and tests which are done before further processing
-% the amount.
+% \subsubsection{Parsing}
+%
+% \begin{macro}{\@@_rf_parse_the_amount:n}
+% We finally set the amount. Afterwards make sure some tokens have the correct
+% catcode (and remove all spaces). Not quite sure if I should also set the catcode for
+% |-| or others.
+%
+% If the amount is empty or the draft mode is active do some preperations to just print
+% the input, else parse the amount.
% \begin{macrocode}
-\cs_new:Npn \@@_general_checkups:
+\cs_new:Npn \@@_rf_parse_the_amount:n #1
{
- \tl_set_eq:NN \l_@@_print_type_tl \l_@@_parse_and_process_type_tl
- \@@_if_state_equal:nT { normal }
- { \@@_new_setup_bools_for_process_and_prints: }
- \@@_decide_unit:
- \@@_if_cmd_type_equal:nT { cCutext }
- { \@@_cutext_check_if_translation_available: }
+ \@@_expand_amount_input:Nn \l_@@_original_amount_tl {#1}
+ \tl_set_rescan:NnV \l_@@_original_amount_tl
+ {
+ \char_set_catcode_letter:N \_ %
+ \char_set_catcode_ignore:N \ %
+ \char_set_catcode_other:N ? %
+ } \l_@@_original_amount_tl
+ \bool_lazy_any:nTF
+ {
+ { \tl_if_empty_p:N \l_@@_original_amount_tl }
+ { \l_@@_pckopt_draft_bool }
+ }
+ { \@@_rf_prepare_just_print_input: }
+ {
+ \@@_rf_split_and_parse_input:N \l_@@_original_amount_tl
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_rf_prepare_just_print_input:}
+% There is no \enquote{real} \enquote{print the input}, instead act as if there
+% was an error (which is the same as just printing the input).
+% \begin{macrocode}
+\cs_new:Npn \@@_rf_prepare_just_print_input:
+ {
+ \@@_set_state_to:n { error }
+ \tl_if_empty:NT \l_@@_original_amount_tl
+ { \@@_create_error:nn { cooking-units } { empty-amount } }
}
% \end{macrocode}
% \end{macro}
+
+% \begin{macro}{ \@@_rf_split_and_parse_input:N }
+% Here we split and parse the amount. First it is split (separating ranges and
+% times into their separate values). Afterwards the split parts are parsed for
+% special signs, if they contain the allowed input-tokens, etc.
%
+% |\use_none_delimit_by_q_nil:w \q_nil| allows me to \enquote{jump} here in case
+% of an error.
%
+% After everything is done everything is stored into |\l_@@_parsed_seq|.
+% \begin{macrocode}
+\cs_new:Npn \@@_rf_split_and_parse_input:N #1
+ {
+ \tl_set_eq:NN \l_@@_tmpa_tl #1
+ \@@_rf_prepare_input_before_split:N \l_@@_tmpa_tl
+ \@@_rf_split_input:V \l_@@_tmpa_tl
+ \@@_rf_parse_input:N \l_@@_split_input_seq
+ \use_none_delimit_by_q_nil:w \q_nil
+ }
+% \end{macrocode}
+% \end{macro}
%
-% \begin{macro}{\@@_process_amount_normally:n}
-% This command is called after parsing the amount if no special-sign, error
-% or so is encountered. First, initialize some stuff that is going to be important.
-% Afterwards, if \cCutext\ is used, check if a translation is available.
-% Then process the input depending on which case (number, range, fraction) we had.
+% \begin{macro}{\@@_rf_prepare_input_before_split:N }
+% As the name suggests we make some preparations before we split.
+% We could do this (especially checking for a special sign) during the parsing,
+% but I think it is cleaner to do it now. First checks if a special sign is in the amount,
+% second replaces the times (|\times|, |xX|) or range-sign (|--|) with an internal
+% token.
% \begin{macrocode}
-\cs_new:Npn \@@_process_amount_normally:n #1
+\cs_new:Npn \@@_rf_prepare_input_before_split:N #1
{
- \@@_initialise_new_after_parsing:n {#1}
- \tl_case:NnF \l_@@_parse_and_process_type_tl
+ \@@_rf_prepare_input_check_for_special_sign:N #1
+ \@@_rf_prepare_input_check_for_range_or_times_sign:N #1
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_rf_prepare_input_check_for_special_sign:N,
+% \@@_rf_prepare_input_check_for_range_or_times_sign:N}
+% Loops over all user-given (or predefined) special signs and tests the input
+% for their appearances. If we find one (more are not really necessary), set the state
+% to |special_sign|.
+% \begin{macrocode}
+\cs_new:Npn \@@_rf_prepare_input_check_for_special_sign:N #1
+ {
+ \tl_map_inline:Nn \l_@@_input_allowed_special_signs_tl
{
- \c_@@_parse_and_process_type_number_tl \@@_new_process_number_in_input:
- \c_@@_parse_and_process_type_range_tl \@@_new_process_range_in_input:
- \c_@@_parse_and_process_type_fraction_tl \@@_new_process_fraction_in_input:
+ \tl_if_in:NnT #1 {##1}
+ {
+ \@@_if_state_equal:nF { error }
+ { \@@_set_state_to:n { special_sign } }
+ \tl_map_break:
+ }
}
- { \@@_create_internal_error:nN { process_the_input } \l_@@_parse_and_process_type_tl }
}
% \end{macrocode}
-% \end{macro}
+% Here we replace all valid \enquote{times} signs and \enquote{range} signs
+% with |\q_@@_range|. Both use the same marker as a combination between those
+% two is not allowed (cannot use ranges and times).
%
-% \begin{macro}
-% This is called if the state is not \enquote{normal}. So the whole \enquote{process}
-% part is skipped. If a special sign was detected, print a warining. If
-% the 42-bool is true, change the amount accordingly. Nothing else is done.
+% Doing the times-loop first (for no real particular reason), all occurrences of a valid
+% times-sign are replaced. No breaking the loop here as a mix of different signs may
+% be used.
+%
+% Afterwards all occurences of the one valid range sign are replaced by |\q_@@_range|.
+% Furthermore, create an error if times signs and ranges are used both at once.
% \begin{macrocode}
-\cs_new:Npn \@@_process_amount_special:
+\cs_new:Npn \@@_rf_prepare_input_check_for_range_or_times_sign:N #1
{
- \@@_if_state_equal:nT { special_sign }
- { \msg_warning:nnV { cooking-units } { amount-not-known } \l_@@_original_amount_tl }
- \bool_if:NT \l_@@_pckopt_fourty_two_bool
- { \@@_prepare_fourty_two_amount: }
+ \tl_map_inline:Nn \l_@@_input_times_sign_tl
+ {
+ \tl_if_in:NnT #1 {##1}
+ {
+ \tl_replace_all:Nnn #1 {##1} { \q_@@_range }
+ \bool_set_true:N \l_@@_rf_contains_times_bool
+ }
+ }
+ \tl_if_in:NVT #1 \l_@@_input_range_sign_tl
+ {
+ \tl_replace_all:NVn #1 \l_@@_input_range_sign_tl { \q_@@_range }
+ \bool_set_true:N \l_@@_rf_contains_range_bool
+ \bool_if:NT \l_@@_rf_contains_times_bool
+ { \@@_create_error:n { range-and-times-not-allowed } }
+ }
}
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\@@_rf_split_input:n, \@@_rf_split_input:V}
+% Here the splitting the amount into a sequence of values is done.
+% Sequences are quite handy here as we can just loop over all split items
+% and we have an arbitrary number of parts (1, 2 or even 20).
%
-% \begin{macro}{ \@@_prepare_fourty_two_amount: }
-% Simply replaces all variables with |42|. We can change all (except for the mixed fraction tl)
-% as we know if we are going to print a \enquote{number}, \enquote{range} or
-% \enquote{fraction}.
+% Not quite sure if keeping the spaces is necessary, but I guess this is a minor
+% optimisation (as |keep_spaces| does not actively remove spaces).
+%
+% After the \enquote{main} splitting we still need to make some furhter splitting
+% for frations. This does not result into additional seq-items.
+%
+% After everything is done, the split parts are stored into the sequence
+% |\l_@@_split_input_seq|.
% \begin{macrocode}
-\cs_new:Npn \@@_prepare_fourty_two_amount:
+\cs_new:Npn \@@_rf_split_input:n #1
{
- \tl_set:Nn \l_@@_number_tmpa_tl { 42 }
- \tl_set:Nn \l_@@_number_tmpb_tl { 42 }
- \tl_if_empty:NF \l_@@_mixed_fraction_tl
- { \tl_set:Nn \l_@@_mixed_fraction_tl { 42 } }
- \@@_if_state_equal:nT { special_sign }
- {
- \tl_put_right:Nn \l_@@_number_tmpa_tl { (!) }
- \tl_put_right:Nn \l_@@_number_tmpb_tl { (!) }
- \tl_if_empty:NF \l_@@_mixed_fraction_tl
- { \tl_put_right:Nn \l_@@_mixed_fraction_tl { (!) } }
+ \seq_clear:N \l_@@_split_input_seq
+ \seq_set_split_keep_spaces:Nnn \l_@@_tmpa_seq { \q_@@_range } {#1}
+ \int_set:Nn \l_@@_nr_of_items { \seq_count:N \l_@@_tmpa_seq }
+ \bool_if:NT \l_@@_rf_contains_range_bool
+ {
+ \int_compare:nNnT { \l_@@_nr_of_items } > { 2 }
+ {
+ \@@_create_error:nf { range-too-many-items }
+ { \int_use:N \l_@@_nr_of_items }
+ }
}
- }
+ \seq_map_function:NN \l_@@_tmpa_seq \@@_rf_split_inividual_item:n
+ }
+\cs_generate_variant:Nn \@@_rf_split_input:n { V }
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\@@_rf_split_inividual_item:n}
+% For a fraction the |/| token is neccessary. Thus, if not |/| is found we have a normal
+% number.
%
+% |\l_@@_split_input_seq| contains 4 brace-pairs. First contains a boolean denoting if
+% we have a fraction or not. 2nd, 3rd and 4th contains the inivdual parts of the fraction
+% (2nd contains the mixed-fraction part; 3rd the numerator and 4th the denominator).
+% If there is no fraction we store the number in the 4th brace-pair.
+% \begin{macrocode}
+\cs_new:Npn \@@_rf_split_inividual_item:n #1
+ {
+ \tl_if_in:nnTF {#1} { / }
+ { \@@_rf_split_fraction:ww #1 \q_stop }
+ {
+ %% normal number
+ \tl_if_empty:nT {#1}
+ { \@@_create_error:n { empty-argument } }
+ \seq_put_right:Nn \l_@@_split_input_seq { { \c_false_bool } {} {} {#1} }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
%
-% \subsubsection{Process the input}
+% \begin{macro}{\@@_rf_split_fraction:ww, \@@_rf_split_mixed_fraction:wwn}
+% Here we split the fractions into numerator |#1| and denominator |#2|.
+% A mixed-fraction sign is only allowed in the numerator part, having it in |#2| throws
+% an error (case: |1/2_3|). If a mixed fraction sign is found in |#1| we do furhter splitting,
+% else we store the values in |\l_@@_split_input_seq|.
%
-% \begin{macro}{ \@@_new_process_number_in_input: }
-% Straightforward. The number only consists of a number. Thus
-% calculate the things necessary and post process it depending on the command
-% (|\cunum|, etc.)\ used.
+% Furthermore we set |\l_@@_rf_contains_fraction_bool| to true. This is done for all
+% sequence parts as it changes unit-chaning behavior.
% \begin{macrocode}
-\cs_new:Npn \@@_new_process_number_in_input:
+\cs_new:Npn \@@_rf_split_fraction:ww #1 / #2 \q_stop
{
- \@@_calculate_and_store_in:N \l_@@_number_tmpa_tl
- \@@_post_process_accordingly:NN \l_@@_number_tmpa_tl \q_no_value
+ \bool_set_true:N \l_@@_rf_contains_fraction_bool
+ \tl_if_in:nnT {#2} { _ }
+ { \@@_create_error:n { fraction-wrong-order } }
+ \tl_if_empty:nT {#2}
+ { \@@_create_error:n { empty-argument } }
+ \tl_if_in:nnTF {#1} { _ }
+ {
+ \@@_rf_split_mixed_fraction:wwn #1 \q_stop {#2}
+ }{
+ \tl_if_empty:nT {#1}
+ { \@@_create_error:n { empty-argument } }
+ \seq_put_right:Nn \l_@@_split_input_seq { { \c_true_bool } {} {#1} {#2} }
+ }
+ }
+% \end{macrocode}
+% Straighforward. |#1| is the mixed-fraction part, |#2| is the numerator and |#3|
+% is the denominator. Make sure they are not empty and store them.
+% \begin{macrocode}
+\cs_new:Npn \@@_rf_split_mixed_fraction:wwn #1 _ #2 \q_stop #3
+ {
+ \tl_if_empty:nT {#1}
+ { \@@_create_error:n { empty-argument } }
+ \tl_if_empty:nT {#2}
+ { \@@_create_error:n { empty-argument } }
+ \seq_put_right:Nn \l_@@_split_input_seq { { \c_true_bool } {#1} {#2} {#3} }
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{ \@@_new_process_range_in_input: }
-% Same as before, this time with two variables.
+%
+%
+% \begin{macro}{\@@_rf_parse_input:N}
+% Now that splitting is done, we start parsing! Using sequences, we jus loop ober
+% every item. (Which is extremly useful as we can loop over 1 or 100 items).
% \begin{macrocode}
-\cs_new:Npn \@@_new_process_range_in_input:
+\cs_new:Npn \@@_rf_parse_input:N #1
{
- \@@_calculate_and_store_in:N \l_@@_number_tmpa_tl
- \@@_calculate_and_store_in:N \l_@@_number_tmpb_tl
- \@@_post_process_accordingly:NN \l_@@_number_tmpa_tl \l_@@_number_tmpb_tl
+ \seq_clear:N \l_@@_parsed_seq
+ \seq_map_inline:Nn #1
+ { \@@_rf_parse_input:nnnn ##1 }
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{ \@@_new_process_range_in_input: }
-% Here we are a bit more complicated, but not much.
-% For fractions, we generally do not calculate the several numbers.
+% \begin{macro}{\@@_rf_parse_input:nnnn}
+% Looks more intimidating than it is. The 4 arguments are the ones from
+% |\l_@@_split_input_seq| and are thus:
+% \begin{itemize}
+% \item |#1|: Contains this item a fraction?
+% \item |#2|: mixed-fraction part (if it exists for this item).
+% \item |#3|: numerator part (if it exists for this item).
+% \item |#4|: number part or (if it is a fraction) or denominator.
+% \end{itemize}
+%
+% If we have a fraction we parse the inividual parts and store them temporarily in
+% tl's. Afterwards we remove all minus signs, but remember if the whole fraction is
+% positive or negative. Store the parsed parts into |\l_@@_parsed_seq| (this time with
+% 5 items!).
%
-% First, remove the minus signs from the numbers (if any).
-% Afterwards check if the printing type is a \enquote{number} (\enquote{range} is
-% not possible). If a \enquote{number} is requested, convert the fraction
-% to a number (simply by calculating the fraction). If we have a fraction, nothing
-% else needs to be done.
+% If we just have a single number, parse it and store it in |\l_@@_parsed_seq|.
+%
+% |\l_@@_parsed_seq| contains 5 items. First is, again, if the item contains a fraction.
+% 2nd is new, is only used in combination with fractions (else it is empty) and stores
+% if the fraction is positive or negative (aka.\ if there is a minus sign in front of it
+% during printing).
% \begin{macrocode}
-\cs_new:Npn \@@_new_process_fraction_in_input:
+\cs_new:Npn \@@_rf_parse_input:nnnn #1 #2#3#4
{
- \@@_process_and_remove_minus_in_fraction:NNNN \l_@@_minus_bool
- \l_@@_mixed_fraction_tl
- \l_@@_number_tmpa_tl
- \l_@@_number_tmpb_tl
- \@@_if_print_type_equal:nTF { number }
- {
- \@@_convert_fraction_to_number_in_input:NNN
- \l_@@_mixed_fraction_tl
- \l_@@_number_tmpa_tl
- \l_@@_number_tmpb_tl
- }{
- \@@_post_process_fraction_accordingly:NNN
- \l_@@_mixed_fraction_tl
- \l_@@_number_tmpa_tl
+ \bool_set_eq:NN \l_@@_rf_check_fraction_bool #1
+ \bool_if:NTF #1
+ {
+ \@@_parse_input_and_safe_in:nN {#2} \l_@@_mixed_fraction_tl
+ \@@_parse_input_and_safe_in:nN {#3} \l_@@_number_tmpa_tl
+ \@@_parse_input_and_safe_in:nN {#4} \l_@@_number_tmpb_tl
+ \@@_rf_frac_remove_minus:NNN
+ \l_@@_mixed_fraction_tl
+ \l_@@_number_tmpa_tl
+ \l_@@_number_tmpb_tl
+ \@@_rf_seq_put_right:NnVVVV
+ \l_@@_parsed_seq
+ {#1} \l_@@_minus_bool
+ \l_@@_mixed_fraction_tl
+ \l_@@_number_tmpa_tl
\l_@@_number_tmpb_tl
+ }{
+ \@@_parse_input_and_safe_in:nN {#4} \l_@@_number_tmpb_tl
+ \@@_rf_seq_put_right:NnnnnV \l_@@_parsed_seq
+ {#1} { } { } { } \l_@@_number_tmpb_tl
}
}
% \end{macrocode}
-% This command loops over each variable, removes the minus and reverses the
-% bool if needed.
+% \end{macro}
+%
+%
+% \begin{macro}{\@@_rf_frac_remove_minus:NNN}
+% Removes the minus signs from the inividual fraction parts, but remembers
+% if we have removed an odd or even number of minus signs. This will determine
+% if the whole fraction is negative or not.
% \begin{macrocode}
-\cs_new:Npn \@@_process_and_remove_minus_in_fraction:NNNN #1 #2#3#4
+\cs_new:Npn \@@_rf_frac_remove_minus:NNN #1#2#3
{
- \bool_set_false:N #1
- \@@_check_minus_remove_and_reverse:NN
- #1 #2#3#4
- \q_nil
- }
+ \bool_set_false:N \l_@@_minus_bool
+ \tl_if_empty:NF #1
+ {
+ \exp_last_unbraced:NNV
+ \@@_rf_frac_remove_minus_aux:Nww #1 #1 \q_stop
+ }
+ \exp_last_unbraced:NNV
+ \@@_rf_frac_remove_minus_aux:Nww #2 #2 \q_stop
+ \exp_last_unbraced:NNV
+ \@@_rf_frac_remove_minus_aux:Nww #3 #3 \q_stop
+ }
% \end{macrocode}
-% Convert a fraction to a number. Check if the denominator is 0, if so, print an
-% error. Else, simply evaluate the fraction. If the minus bool is true,
-% add a minus sign on the left. Afterwards, process it as a number.
+% Not sure if |\token_if_eq_charcode| is the best choice, but I think I stole it from
+% \pkg{siunitx}, so it should be fine.
% \begin{macrocode}
-\cs_new:Npn \@@_convert_fraction_to_number_in_input:NNN #1#2#3
+\cs_new:Npn \@@_rf_frac_remove_minus_aux:Nww #1 #2#3 \q_stop
{
- \fp_compare:nNnTF {#3} = { 0 }
- { \@@_create_error:n { Division-by-zero } }
- {
- \@@_tl_eval:Nn \l_@@_number_tmpa_tl { #1 + #2 / #3 }
- \bool_if:NT \l_@@_minus_bool
- { \tl_put_left:Nn \l_@@_number_tmpa_tl { - } }
- \@@_new_process_number_in_input:
+ \token_if_eq_charcode:NNTF #2 -
+ {
+ \@@_bool_reverse:N \l_@@_minus_bool
+ \tl_set:Nn #1 {#3}
}
+ { \tl_set:Nn #1 {#2#3} }
}
% \end{macrocode}
% \end{macro}
%
%
-% \begin{macro}{ \@@_new_print_amount_correctly: }
-% After parsing, processing, etc.\ it is time to print the amount.
-% If an error was raised, simply print the \enquote{unparsed} original amount.
+% \subsubsection{Processing}
+%
%
-% Else, print the amount depending on \enquote{number}, \enquote{range}
-% or \enquote{fraction}. \enquote{number} and \enquote{range} are printed
-% according to the command used (|\cunum|, etc.). Fractions are printed
-% indipendently from the commands.
+%
+% \begin{macro}{\@@_rf_process_amount_special:}
+% In case the current state is not-normal we end up here. No (real) processing is
+% done here, just a warning message is printed. Here we also change the input
+% if \opt{42} is used.
% \begin{macrocode}
-\cs_new:Npn \@@_new_print_amount_correctly:
+\cs_new:Npn \@@_rf_process_amount_special:
{
- \@@_if_state_equal:nTF { error }
- { \l_@@_original_amount_tl }
+ \@@_if_state_equal:nT { special_sign }
+ { \msg_warning:nnV { cooking-units } { amount-not-known } \l_@@_original_amount_tl }
+ \bool_if:NTF \l_@@_pckopt_fourty_two_bool
+ { \@@_rf_prepare_fourty_two_amount: }
+ { \seq_set_eq:NN \l_@@_processed_seq \l_@@_parsed_seq }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_rf_process_amount_normally:n}
+% Now that we know e.g.\ if we have an unit change (no special sign, fractions?, etc.)
+% we do some more initializing. Afterwards, process the input (e.g.\ evaluate fractions
+% if needed, scale the amount depending on the unit, etc.).
+% \begin{macrocode}
+\cs_new:Npn \@@_rf_process_amount_normally:n #1
+ {
+ \@@_rf_initialise_after_parsing:n {#1}
+ \seq_clear:N \l_@@_processed_seq
+ \seq_map_inline:Nn \l_@@_parsed_seq
{
- \tl_case:NnF \l_@@_print_type_tl
- {
- \c_@@_print_type_number_tl
- {
- \@@_print_number_accordingly:N
- \l_@@_number_tmpa_tl
- }
- \c_@@_print_type_range_tl
- {
- \@@_print_range_accordingly:NN
- \l_@@_number_tmpa_tl
- \l_@@_number_tmpb_tl
- }
- \c_@@_print_type_fraction_tl
- {
- \@@_culang_let:nnN { name } { decimal-mark } \l_@@_translation_tmpa_tl
- \tl_replace_once:Nnn \l_@@_mixed_fraction_tl { . } \l_@@_translation_tmpa_tl
- \tl_replace_once:Nnn \l_@@_number_tmpa_tl { . } \l_@@_translation_tmpa_tl
- \tl_replace_once:Nnn \l_@@_number_tmpb_tl { . } \l_@@_translation_tmpa_tl
- \@@_print_fractions:Nnn
- \l_@@_mixed_fraction_tl
- \l_@@_number_tmpa_tl
- \l_@@_number_tmpb_tl
- }
- }
- { \@@_create_internal_error:nN { print_the_input } \l_@@_print_type_tl }
+ \@@_rf_process_amount_normally:nnnnn ##1
}
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{ \@@_new_print_unit_correctly: , \@@_print_unit_in_case_of_error: }
-% Prints the unit. In case of error, print the unit more or less directly.
-% Even in case of error there needs to be the correct spacing, etc.
+% \begin{macro}{\@@_rf_process_amount_normally:nnnnn}
+% Looks more intimidating (again) as it is. Here are the arguments:
+%
+% \begin{itemize}
+% \item |#1|: Contains this item a fraction? (Boolean)
+% \item |#2|: (Only non-empty for fractions) Is the fraction negative?
+% \item |#2|: mixed-fraction part (if it exists for this item).
+% \item |#3|: numerator part (if it exists for this item).
+% \item |#4|: number part or denominator (if it is a fraction) .
+% \end{itemize}
%
-% Else, parse the unit depending on the command used. For |\cuam| no unit
-% is printed, but a phrase can be required.
+% Two cases here: Do we have a fraction or not.
+%
+% If we have a fraction and no evaluation is done, do nothing essentially.
+% Else an evaluation of the fraction is required and the whole thing is calculated.
+% Do some Division-by-zero checks; make sure the resulting number is negative
+% (|#2| argument) and do some further calculations with the resulting number.
+% Afterwards, store the number in |\l_@@_processed_seq|. (Note that we define the
+% fraction-boolean as |\c_false_bool|).
+%
+% If the current item is simply a number, do some further calculations and store the result
+% in |\l_@@_processed_seq|.
+%
% \begin{macrocode}
-\cs_new:Npn \@@_new_print_unit_correctly:
+\cs_new:Npn \@@_rf_process_amount_normally:nnnnn #1#2#3#4#5
{
- \@@_if_state_equal:nTF { error }
- {
- \tl_case:NnF \l_@@_cmd_type_tl
- { \c_@@_cmd_type_cuam_tl { } }
- { \@@_print_unit_in_case_of_error: }
- }
+ \bool_if:NTF #1
{
- \tl_case:NnF \l_@@_cmd_type_tl
+ \bool_if:NTF \l_@@_lokal_eval_fractions_bool
{
- \c_@@_cmd_type_cunum_tl { \@@_cunum_print_correct_unit: }
- \c_@@_cmd_type_cCutext_tl { \@@_cutext_print_correct_unitname: }
- \c_@@_cmd_type_cuam_tl { \@@_cuam_print_correct_unitphrase: }
-% \c_@@_cmd_type_cucomp_tl { \@@_cunum_print_correct_unit: }
+ \bool_set_false:N \l_@@_rf_contains_fraction_bool
+ \fp_compare:nNnT {#5} = { 0 }
+ { \@@_create_error:n { Division-by-zero } }
+ \@@_tl_set_eval:Nn \l_@@_number_tmpb_tl { #3 + #4/#5 }
+ \int_compare:nNnT {#2} = { \c_one_int }
+ { \tl_put_left:Nn \l_@@_number_tmpb_tl { - } }
+ \@@_calculate_and_store_in:N \l_@@_number_tmpb_tl
+ \@@_rf_seq_put_right:NnnnnV \l_@@_processed_seq
+ { \c_false_bool } { } {} {} \l_@@_number_tmpb_tl
+ }{
+ \@@_rf_seq_put_right:Nnnnnn \l_@@_processed_seq
+ {#1} {#2} {#3} {#4} {#5}
+ }
+ }{
+ \tl_if_empty:nF {#2}
+ { \@@_create_internal_error:nN
+ { non-empty-sign-for-non-fraction } \l_@@_original_amount_tl
}
- { \@@_create_internal_error:nN { print-unit-acc } \l_@@_cmd_type_tl }
+ \tl_set:Nn \l_@@_number_tmpb_tl {#5}
+ \@@_calculate_and_store_in:N \l_@@_number_tmpb_tl
+ \@@_rf_seq_put_right:NnnnnV \l_@@_processed_seq
+ {#1} { } { } { } \l_@@_number_tmpb_tl
}
}
% \end{macrocode}
-% Prints the unit in case of error. Make sure the unit is printed correctly
-% with the correct spacing. If the unit is unknown, just print the input.
+% \end{macro}
+%
+% \begin{macro}{\@@_rf_post_process_amount:}
+% Doing some post-processing. This is dependend on which command was used
+% (\cCutext\ has some other functionalities than |\cuam|).
% \begin{macrocode}
-\cs_new:Npn \@@_print_unit_in_case_of_error:
+\cs_new:Npn \@@_rf_post_process_amount:
{
- \tl_if_empty:NF \l_@@_phantom_tl { \phantom { \l_@@_phantom_tl } }
- \tl_use:N \l_@@_value_unit_space_tl
- \bool_if:NTF \l_@@_unit_error_bool
- { \l_@@_original_unit_tl }
- { \@@_culang_print:nV { unit-symbol } \l_@@_original_unit_tl }
- }
+ \tl_case:NnF \l_@@_cmd_type_tl
+ {
+ \c_@@_cmd_type_cunum_tl { \@@_rf_cunum_post_process:N \l_@@_processed_seq }
+ \c_@@_cmd_type_cCutext_tl { \@@_rf_cutext_post_process:N \l_@@_processed_seq }
+ \c_@@_cmd_type_cuam_tl { \@@_cuam_post_process:N \l_@@_processed_seq }
+ }{
+ \@@_create_internal_error:nN { post-process } \l_@@_cmd_type_tl
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@@_rf_cunum_post_process:N}
+% Nothing is done here.
+% \begin{macrocode}
+\cs_new:Npn \@@_rf_cunum_post_process:N #1 { }
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\@@_rf_cutext_post_process:N}
+% Ok, first decide if we need the plural or singular version of the unit. We can do it
+% now as we will not \enquote{reduce} the amounts (as |\cuam| is able to do).
%
-% \begin{macro} { \@@_print_number_accordingly:N }
-% Prints the input |#1| according to the used command.
-% This command is
-% also used in ranges.
+% If numerals should be used and we do \emph{not} have a fraction (in all items)
+% we first check if all items only contain integers. If they all are integers, check if numerals
+% can be used.
% \begin{macrocode}
-\cs_new:Npn \@@_print_number_accordingly:N #1
+\cs_new:Npn \@@_rf_cutext_post_process:N #1
{
- \tl_case:NnF \l_@@_cmd_type_tl
+ \@@_rf_check_plural:N #1
+ \bool_lazy_and:nnT
+ { \l_@@_lokal_numeral_bool }
+ { ! \l_@@_rf_contains_fraction_bool }
+ {
+ \@@_rf_check_if_decimal:NNTF #1 \l_@@_numbers_to_check_seq
+ { \bool_set_false:N \l_@@_lokal_numeral_bool }
+ { \@@_rf_check_if_numerals_can_be_used:N \l_@@_numbers_to_check_seq }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{ \@@_rf_check_plural:N }
+% For plural-checking we alawys use the last item (and hope that in no language we would
+% need to e.g.\ use the first item). |\l_@@_tmpa_tl| contains 5 braced pairs; so one
+% expansion allows |\@@_rf_check_plural_aux:nnnnn| to get them.
+% \begin{macrocode}
+\cs_new:Npn \@@_rf_check_plural:N #1
+ {
+ \seq_get_right:NN #1 \l_@@_tmpa_tl
+ \exp_after:wN \@@_rf_check_plural_aux:nnnnn \l_@@_tmpa_tl
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_rf_check_plural_aux:nnnnn}
+% So \dots\ the algorithm used to determine plural or singular is depending on the
+% current language (french has other rules than english or german) and if we have a
+% fraction or not. Call the respective command and hope that the result is correct.
+% \begin{macrocode}
+\cs_new:Npn \@@_rf_check_plural_aux:nnnnn #1#2#3#4#5
+ {
+ \bool_if:NTF #1
{
- \c_@@_cmd_type_cunum_tl { \@@_print_numerical_input:N #1 }
- \c_@@_cmd_type_cCutext_tl { \@@_cutext_print_input:N #1 }
- \c_@@_cmd_type_cuam_tl { \@@_cuam_print_numerical_input:N #1 }
+ \@@_culang_let:nnN { pluraltest } { fraction } \l_@@_translation_tmpa_tl
+ \use:c { @@_pluraltest_fraction_ \l_@@_translation_tmpa_tl :nnn }
+ {#3} {#4} {#5}
+ }{
+ \@@_culang_let:nnN { pluraltest } { normal } \l_@@_translation_tmpa_tl
+ \use:c { @@_pluraltest_normal_ \l_@@_translation_tmpa_tl :n } {#5}
}
- { \@@_create_internal_error:nN { print-input-acc } \l_@@_cmd_type_tl }
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro} { \@@_print_range_accordingly:NN , \@@_print_range_sign: }
-% Prints ranges. It simply prints the numbers twice, inbetween a range sign.
+%
+% \begin{macro}{\@@_rf_check_if_decimal:NN, \@@_rf_check_if_decimal_aux:Nnnnnn}
+% Test if all items are integers or not. As the numbers are stored in tl's and not in
+% fp's or int's we can just check for a |.|. If one is found, we have a decimal. To do this
+% efficiently we loop through all items, get the needed number (we have no fractions,
+% we checked that earlier), store it in |#2| for later use and |\tl_put_right:Nn| it into
+% |\l_@@_tmpa_tl|. |\l_@@_tmpa_tl| will then contain all numbers that need to be
+% checked as a single string. |#2| is a sequence we can use in the future (is is more
+% practical as it only contains a single number and not 6 braced pairs; making looping
+% easier it can be placed directly where we need it).
+% \begin{macrocode}
+\prg_new_conditional:Npnn \@@_rf_check_if_decimal:NN #1#2 { TF }
+ {
+ \tl_clear:N \l_@@_tmpa_tl
+ \seq_clear:N #2
+ \seq_map_inline:Nn #1
+ {
+ \@@_rf_check_if_decimal_aux:Nnnnnn #2 ##1
+ }
+ \tl_if_in:NnTF \l_@@_tmpa_tl { . }
+ { \prg_return_true: }
+ { \prg_return_false: }
+ }
+% \end{macrocode}
+%
% \begin{macrocode}
-\cs_new:Npn \@@_print_range_accordingly:NN #1#2
+\cs_new:Npn \@@_rf_check_if_decimal_aux:Nnnnnn #1#2#3#4#5#6
{
- \@@_print_number_accordingly:N #1
- \@@_print_range_sign:
- \@@_print_number_accordingly:N #2
+ \tl_put_right:Nn \l_@@_tmpa_tl {#6}
+ \seq_put_right:Nn #1 {#6}
}
% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \begin{macro}{\@@_rf_check_if_numerals_can_be_used:N}
+% The items of sequence in |#1| only contains a number and not the 6 braced pairs.
+% This makes this loop a lot more straightforward to write.
% \begin{macrocode}
-\cs_new:Npn \@@_print_range_sign:
+\cs_new:Npn \@@_rf_check_if_numerals_can_be_used:N #1
{
- \@@_if_cmd_type_equal:nTF { cunum }
- { \tl_use:N \l_@@_cunum_range_sign_tl }
- {
- \bool_lazy_or:nnTF
- { \@@_if_cmd_type_equal_p:n { cCutext } }
- { \l_@@_lokal_numeral_bool }
- {
- \bool_set_false:N \l_@@_cutext_uppercase_word_bool
- \tl_if_empty:NTF \l_@@_cutext_range_sign_tl
- { \@@_culang_print:nn { name } { cutext-range-sign } }
- { \tl_use:N \l_@@_cutext_range_sign_tl }
+ \seq_map_inline:Nn #1
+ {
+ \bool_lazy_and:nnF
+ { \int_compare_p:nNn {##1} < { \l_@@_print_numerals_below_int } }
+ { \int_compare_p:nNn {##1} > { 0 } }
+ {
+ \bool_set_false:N \l_@@_lokal_numeral_bool
+ \seq_map_break:
}
- { \tl_use:N \l_@@_cunum_range_sign_tl }
- }
+ }
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{ \@@_post_process_accordingly:NN }
-% After evaluating and changing the amounts (due to unit changing, rounding, etc.)
-% we post process the input (only for numbers and ranges). For |\cunum| nothing
-% needs to be done. For \cCutext\ and |\cuam| we post process the values accordingly
-% (checking if integer, etc.)
+%
+% \begin{macro}{\@@_cuam_post_process:N}
+% Ok, shit gets real at this point. Compared to the other post process stuffs (especially
+% |\cunum|) here we do more complicated things. This is mostly due to |\cuam| allowing
+% phrases (\enquote{12} to \enquote{1 Dutzend}). This needs its own processing algorithm.
+% Furthermore, we still allow numerals (and we need to be careful because both can be used
+% at the same time). Of course, all this is only done if the input conists of only integers (and
+% no fractions)
% \begin{macrocode}
-\cs_new:Npn \@@_post_process_accordingly:NN #1#2
+\cs_new:Npn \@@_cuam_post_process:N #1
{
- \tl_case:NnF \l_@@_cmd_type_tl
+ \bool_if:NF \l_@@_rf_contains_fraction_bool
{
- \c_@@_cmd_type_cunum_tl { }
- \c_@@_cmd_type_cCutext_tl { \@@_cutext_post_process_input:NN #1#2 }
- \c_@@_cmd_type_cuam_tl { \@@_cuam_post_process_input:NN #1#2 }
-% \c_@@_cmd_type_cucomp_tl { }
- }{
- \@@_create_internal_error:nN { post-process } \l_@@_cmd_type_tl
+ \@@_rf_check_if_decimal:NNTF #1 \l_@@_numbers_to_check_seq
+ { \bool_set_false:N \l_@@_lokal_numeral_bool }
+ {
+ \bool_if:NT \l_@@_pckopt_use_phrases_bool
+ { \@@_rf_cuam_post_process_input_phrases:NN #1 \l_@@_numbers_to_check_seq }
+ \bool_if:NT \l_@@_lokal_numeral_bool
+ { \@@_rf_check_if_numerals_can_be_used:N \l_@@_numbers_to_check_seq }
+ }
}
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{ \@@_post_process_fraction_accordingly:NNN }
-% Decided to make this into its own command. This post processes fractions
-% which is only needed by \cCutext.
+% \begin{macro}{\@@_rf_cuam_post_process_input_phrases:NN}
+% This algorithm is thankfully much simpler compared to the old one!
+% First, we get the property list for the current language that contains
+% the phrases. If there are none (aka.\ if it is equal to |\c_@@_no_translation_str|)
+% we just skip to the end. Else we get the number-sequence from the property
+% list. |#2| is the list of numbers from the input. |\l_@@_number_tmpa_tl| will contain the
+% largest common divisor $l$ between those numbers (e.g. $2$, $4$ and $6$ have the
+% largest common divisor of $l=2$; $12$ and $16$ have $l=4$). If it is $l=1$ we do
+% nothing (as there is none). Else, take it as a upper cap (there cannot be a common
+% divisor above $l$; thus only check phrase numbers $n \leq l$).
% \begin{macrocode}
-\cs_new:Npn \@@_post_process_fraction_accordingly:NNN #1#2#3
+\cs_new:Npn \@@_rf_cuam_post_process_input_phrases:NN #1#2
{
- \tl_case:NnF \l_@@_cmd_type_tl
+ \@@_culang_get_phrase_prop:N \l_@@_phrase_prop
+ \tl_if_eq:NNT \c_@@_no_translation_str \l_@@_phrase_prop
+ { \use_none_delimit_by_q_stop:w }
+ \prop_get:NnN \l_@@_phrase_prop { seq } \l_@@_phrase_numbers_seq
+ \@@_get_largest_common_divisor:NN #2 \l_@@_largest_common_divisor_int
+ \int_compare:nNnF { \l_@@_largest_common_divisor_int } = { 1 }
{
- \c_@@_cmd_type_cunum_tl { }
- \c_@@_cmd_type_cCutext_tl { \@@_cutext_post_process_fraction_input:NNN #1#2#3 }
- \c_@@_cmd_type_cuam_tl { }
- }{
- \@@_create_internal_error:nN { post-process-frac } \l_@@_cmd_type_tl
+ \@@_find_common_phrase:NNV #1#2 \l_@@_largest_common_divisor_int
}
+ \use_none_delimit_by_q_stop:w
+ \q_stop
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{ \@@_print_numerical_input:N }
-% The base printing command for numbers. Makes sure the minus sign
-% and decimal-mark are correct.
+% \begin{macro}{\@@_get_largest_common_divisor:NN, \@@_get_largest_common_divisor_aux:Nn}
+% |#1| is the sequence of numbers we want to check (we need in later; thus no
+% \enquote{pop}); in |#2| we will store the largest common
+% divisor $l$. The \enquote{find the largest common divisor} algorithm is only needed
+% if we have more than $1$ item (so if we have a range or a times).
+%
+% $l$ must be the same for all numbers.
+%
% \begin{macrocode}
-\cs_new_protected:Npn \@@_print_numerical_input:N #1
+\cs_new:Npn \@@_get_largest_common_divisor:NN #1#2
{
- \tl_if_in:NnT #1 { . }
+ \seq_get_left:NN #1 \l_@@_tmpa_tl
+ \int_set:Nn #2 { \l_@@_tmpa_tl }
+ \bool_lazy_or:nnT
+ \l_@@_rf_contains_range_bool
+ \l_@@_rf_contains_times_bool
+ {
+ \seq_map_inline:Nn #1
+ {
+ \@@_get_largest_common_divisor_aux:Nn #2 {##1}
+ \int_compare:nNnT {#2} = { 1 }
+ { \seq_map_break: }
+ }
+ }
+ }
+% \end{macrocode}
+%
+% The source for the algorithm is \url{https://en.wikipedia.org/wiki/Euclidean_algorithm#Implementations}.
+% To make my future life easier, here is the copy-and-pasted code:
+% \begin{verbatim}
+% function gcd(a, b)
+% while b \neq 0
+% t := b
+% b := a mod b
+% a := t
+% return a
+% \end{verbatim}
+% and here is the algorithm with the current variables:
+% \begin{verbatim}
+% function gcd(#1, b)
+% while b \neq 0
+% a := b
+% b := #1 mod b
+% #1 := a
+% return #2
+% \end{verbatim}
+%
+% \begin{macrocode}
+\cs_new:Npn \@@_get_largest_common_divisor_aux:Nn #1#2
+ {
+ \int_set:Nn \l_@@_tmpb_int {#2}
+ \int_until_do:nNnn { \l_@@_tmpb_int } = { 0 }
{
- \@@_culang_let:nnN { name } { decimal-mark } \l_@@_translation_tmpa_tl
- \tl_replace_once:Nnn #1 { . } { \l_@@_translation_tmpa_tl }
+ \int_set_eq:NN \l_@@_tmpa_int \l_@@_tmpb_int
+ \int_set:Nn \l_@@_tmpb_int
+ { \int_mod:nn {#1} { \l_@@_tmpb_int } }
+ \int_set_eq:NN #1 \l_@@_tmpa_int
}
- \tl_replace_once:Nnn #1 { - } \c_@@_minus_tl
- #1
}
% \end{macrocode}
% \end{macro}
%
%
-% \begin{macro}{ \@@_print_fractions:Nnn }
-% The name of this function is the name of the game: It prints fractions.
-% The minus sign is always put in front of the fraction.
%
-% The first argument regards the mixed fraction part. It is either empty
-% or not empty. If empty, do nothing. Else insert and add space.
+% \begin{macro}{\@@_find_common_phrase:NNn}
+% Ok, this one is complicated.
+% |#1| is the original prcoess sequence; |#2| is the sequence of numbers-to-check
+% (which were extracted from |#1| in a previous step to make loops easier);
+% |#3| is the largest common divisor $l$ which requires $l>1|$.
%
-% The 2nd and 3rd argument are the nominator and denominator, they are
-% used in the fraction command directly.
+% As a reminder, |\l_@@_phrase_numbers_seq| contains two braced-pairs:
+% first is the phrase-number, second is a boolean which defines if multiples of the
+% phrase-number should be checked too. The phrase-number is thus gained by
+% |\use_i:nn ##1| which must be smaller or equal to $l$ (I explain why in a previous
+% function). So do nothing if it is larger. |\l_@@_phrase_numbers_seq| is also sorted
+% from largest to smallest, so no |\seq_map_break:| unless we found a number.
%
-% All three arguments are currently tl varables, but only the first is a dedicated
-% \enquote{can only take one token}.
+% If for the current phrase number all values have an integer quotient (|\l_@@_tmpa_bool|
+% remains |true| after |\@@_find_common_phrase_aux:Nnn|) (integer quotients are stored in
+% |\l_@@_reduced_numbers_seq|) we gain the other properties from this phrase-number
+% like the phrase-text (\enquote{Dutzend}) and its gender; break the loop.
%
-% Since v.1.10(alpha) it also prints the minus sign (hopefully correct).
+% If the loop was terminated via a break |\l_@@_tmpa_bool| remains |true| and
+% we continue with updating the values in sequences |#1| and |#2|.
% \begin{macrocode}
-\cs_new:Npn \@@_print_fractions:Nnn #1#2#3
+\cs_new:Npn \@@_find_common_phrase:NNn #1 #2#3
{
- \bool_if:NT \l_@@_minus_bool { \c_@@_minus_tl }
- \tl_if_empty:NF #1
+ \bool_set_false:N \l_@@_lokal_phrase_bool
+ \seq_map_inline:Nn \l_@@_phrase_numbers_seq
+ {
+ \int_compare:nNnF { \use_i:nn ##1 } > {#3}
+ {
+ \bool_set_true:N \l_@@_tmpa_bool
+ \seq_clear:N \l_@@_reduced_numbers_seq
+ \@@_find_common_phrase_aux:Nnn #2 ##1
+ \bool_if:NT \l_@@_tmpa_bool
+ {
+ \int_compare:nNnTF { \l_@@_tmpa_int } = { 1 }
+ { \prop_get:NnN \l_@@_phrase_prop { ##1 } \l_@@_phrase_text_tl }
+ { \prop_get:NnN \l_@@_phrase_prop { ##1 - pl } \l_@@_phrase_text_tl }
+ \prop_get:NnN \l_@@_phrase_prop { ##1 - gender } \l_@@_phrase_gender_tl
+ \seq_map_break:
+ }
+ }
+ }
+ \bool_if:NT \l_@@_tmpa_bool
{
- #1
- \skip_horizontal:N \l_@@_mixed_frac_dim
+ \bool_set_true:N \l_@@_lokal_phrase_bool
+ \seq_set_eq:NN #2 \l_@@_reduced_numbers_seq
+ \@@_update_values:NN #1 \l_@@_reduced_numbers_seq
+ }
+ }
+\cs_generate_variant:Nn \@@_find_common_phrase:NNn { NNV }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_find_common_phrase_aux:Nnn}
+% Thankfully a lot more simplified compared to a previous version.
+% The idea is simple: loop over all numbers in |#1| (the \enquote{numbers-to-check}
+% sequence) and figure out if all its items are a multiple of the phrase-number |#2|.
+% If multiples should not be checked (boolean |#3|) we set the multiple to be
+% $1$. Else we use |\int_div_truncate:nn| to find the closest (checks Wikipedia for
+% terminology) integer quotient. Afterwards we see if the quotient (calculated ot $1$)
+% times the phrase number |#2| is equal to the original value (We check if the modulo is
+% $0$). We do not use the modulo directly as we need the quotient for further uses
+% (if an integer quotient without reminder exists).
+%
+% If integer quotient times phrase number equals the original one, we store the
+% quotient in |\l_@@_reduced_numbers_seq| for later usage. If we have one whiff
+% we break the loop as there are no integer quotients for the current phrase-number.
+%
+% \begin{macrocode}
+\cs_new:Npn \@@_find_common_phrase_aux:Nnn #1 #2#3
+ {
+ \seq_map_inline:Nn #1
+ {
+ \bool_if:NTF #3
+ { \int_set:Nn \l_@@_tmpa_int { 1 } }
+ { \int_set:Nn \l_@@_tmpa_int { \int_div_truncate:nn {##1} {#2} } }
+ \int_compare:nNnTF { \l_@@_tmpa_int * #2 } = {##1}
+ { \seq_put_right:NV \l_@@_reduced_numbers_seq \l_@@_tmpa_int }
+ { \bool_set_false:N \l_@@_tmpa_bool \seq_map_break: }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@@_update_values:NN, \@@_update_values_aux:Nnnnnn}
+% Here we update the numbers in |\l_@@_processed_seq| (given in |#1|) with
+% the integer quotient numbers in |#2|). Do a copy of |#1| (to loop over it) than clear
+% the process-sequence |#1|. Looping is not necessary as we technically know
+% every information, but this makes it a bit easier in case I change things in the future
+% (I can also add some tests).
+\cs_new:Npn \@@_update_values:NN #1#2
+ {
+ \seq_set_eq:NN \l_@@_tmpa_seq #1
+ \seq_clear:N #1
+ \seq_map_inline:Nn \l_@@_tmpa_seq
+ {
+ \@@_update_values_aux:NNnnnnn #1 #2 ##1
}
- \@@_frac:nn {#2} {#3}
+ }
+\cs_new:Npn \@@_update_values_aux:NNnnnnn #1 #2#3#4#5#6#7
+ {
+ \bool_if:NT #3
+ { \@@_create_internal_error:nn { fraction-wrong-value } {#3} }
+ \tl_if_empty:nF {#4#5#6}
+ { \@@_create_internal_error:nn { update-values-non-empty } {#4;;#5;;#6} }
+ \seq_pop_left:NN #2 \l_@@_tmpa_tl
+ \@@_rf_seq_put_right:NnnnnV #1
+ {#3} {#4} {#5} {#6} \l_@@_tmpa_tl
}
% \end{macrocode}
% \end{macro}
%
%
+% \subsubsection{Printing}
%
+% \begin{macro}{\@@_rf_prepare_amount_printing:N}
+% Printing the amount depends on the commands and the results-to-be-printed
+% are stored into |\l_@@_prepared_printing_seq|. If fractions and ranges are combined,
+% a small space is inserted between the fraction and the range sign, but \emph{only}
+% if it is \emph{not} the last item in the sequence. |\l_@@_nr_of_items| stores the number
+% of items in the sequence. If the last item in the loop is encountered (by checking if
+% the index |##1| is equal to |\l_@@_tmpa_int|) give the auxiliary function |\c_true_bool|
+% and it will figure out the rest.
+% \begin{macrocode}
+\cs_new:Npn \@@_rf_prepare_amount_printing:N #1
+ {
+ \tl_case:NnF \l_@@_cmd_type_tl
+ {
+ \c_@@_cmd_type_cunum_tl
+ { \cs_set_eq:NN \@@_print_number:n \@@_print_number_default:n }
+ \c_@@_cmd_type_cCutext_tl
+ { \cs_set_eq:NN \@@_print_number:n \@@_cutext_print_number:n }
+ \c_@@_cmd_type_cuam_tl
+ { \cs_set_eq:NN \@@_print_number:n \@@_cuam_print_number:n }
+ }
+ { \@@_create_internal_error:nN { post-process } \l_@@_cmd_type_tl }
+ \bool_set_false:N \l_@@_seperator_after_fraction_bool
+ \seq_clear:N \l_@@_prepared_printing_seq
+ \seq_map_indexed_inline:Nn #1
+ {
+ \int_compare:nNnTF { \l_@@_nr_of_items } = {##1}
+ { \@@_rf_prepare_amount_printing_aux:nnnnnn { \c_true_bool } }
+ { \@@_rf_prepare_amount_printing_aux:nnnnnn { \c_false_bool } }
+ ##2
+ }
+ }
+% \end{macrocode}
+% \end{macro}
%
-% \subsection {Parsing and checking numbers}
+% \begin{macro}{\@@_rf_prepare_amount_printing_aux:nnnnnn}
+% |#1| is a boolean which signifies if the last item of the sequence is encountered.
+% |#2| to |#6| are our typical sequence-arguments. All this function acutally does
+% is to store the to-be-printed stuff into |\l_@@_prepared_printing_seq|. Could be
+% optimized a bit more. The booleans are set here so that later on |\seq_use:Nn| can
+% be used.
+% \begin{macrocode}
+\cs_new:Npn \@@_rf_prepare_amount_printing_aux:nnnnnn #1#2#3#4#5#6
+ {
+ \bool_if:NTF #2
+ {
+ \seq_put_right:Nn \l_@@_prepared_printing_seq
+ {
+ \@@_print_fraction:nnnn {#3} {#4} {#5} {#6}
+ \bool_set_false:N \l_@@_cutext_uppercase_word_bool
+ \bool_if:NTF #1
+ { \bool_set_false:N \l_@@_seperator_after_fraction_bool }
+ { \bool_set_true:N \l_@@_seperator_after_fraction_bool }
+ }
+ }{
+ \seq_put_right:Nn \l_@@_prepared_printing_seq
+ {
+ \@@_print_number:n {#6}
+ \bool_set_false:N \l_@@_cutext_uppercase_word_bool
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
%
-% This subsection contains macros for splitting and checking the input.
%
-% \begin{macro}{\@@_create_error:n, \@@_create_error_and_stop:n , \@@_create_error:nn }
-% Create error messages and set case to \enquote{error}.
+% \begin{macro}{\@@_print_fraction:nnnn}
+% Printing a fraction is quite easy and straightforward. Use |\@@_print_number_default:n|
+% for correct decimal-printing.
% \begin{macrocode}
-\cs_new:Npn \@@_create_internal_error:nN #1#2
+\cs_new:Npn \@@_print_fraction:nnnn #1#2#3#4
{
- \@@_set_state_to:n { error }
- \msg_error:nnnV { cooking-units } { internal-error } {#1} #2
+ \int_compare:nNnT {#1} = { 1 } { \c_@@_minus_tl }
+ \tl_if_empty:nF {#2}
+ {
+ \@@_print_number_default:n {#2}
+ \skip_horizontal:N \l_@@_mixed_frac_dim
+ }
+ \@@_frac:nn { \@@_print_number_default:n {#3} } { \@@_print_number_default:n {#4} }
}
-\cs_new:Npn \@@_create_error:n #1
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \begin{macro}{\@@_print_number:n}
+% This command will be redefined.
+% \begin{macrocode}
+\cs_new:Npn \@@_print_number:n #1 {}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_print_number_default:n}
+% Do two things: Replace the dot with the correct decimal-sign of the current language
+% and replace the |-| token with the correct minus sign.
+% \begin{macrocode}
+\cs_new:Npn \@@_print_number_default:n #1
{
- \@@_set_state_to:n { error }
- \msg_error:nnV { cooking-units } {#1} \l_@@_original_amount_tl
+ \tl_set:Nn \l_@@_tmpa_tl {#1}
+ \tl_if_in:NnT \l_@@_tmpa_tl { . }
+ {
+ \@@_culang_let:nnN { name } { decimal-mark } \l_@@_translation_tmpa_tl
+ \tl_replace_once:Nnn \l_@@_tmpa_tl { . } { \l_@@_translation_tmpa_tl }
+ }
+ \tl_replace_once:Nnn \l_@@_tmpa_tl { - } \c_@@_minus_tl
+ \l_@@_tmpa_tl
}
-\cs_new:Npn \@@_create_error_and_stop:n #1
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_cutext_print_number:n, \@@_cutext_print_input_aux:nn, \@@_cutext_print_input_aux:nV}
+% For \cCutext\ we pretty much always print the numbers using |\@@_print_number_default:n| (like |\cunum| does). However, \cCutext\ have the
+% ability to print numerals (if the input can be transformed into one).
+%
+% For numerals we captialize in the case of |\Cutext| and print it normally (assuming
+% lowercase) for |\cutext|. If the number is equal to $1$ we use the special
+% |one(m)|, |one(f)| or |one(n)| translation (which also gets captialized if needed).
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_cutext_print_number:n #1
{
- \@@_create_error:n {#1}
- \use_none_delimit_by_q_nil:w
+ \bool_if:NTF \l_@@_lokal_numeral_bool
+ { \@@_cutext_print_input_aux:nV {#1} \l_@@_decided_unit_tl }
+ { \@@_print_number_default:n {#1} }
}
-\cs_new:Npn \@@_create_error:nn #1#2
+\cs_new_protected:Npn \@@_cutext_print_input_aux:nn #1#2
{
- \@@_set_state_to:n { error }
- \msg_error:nnnV { cooking-units } {#1} {#2} \l_@@_original_amount_tl
+ \int_compare:nNnTF {#1} = { 1 }
+ {
+ \@@_culang_one_let:NnT \l_@@_translation_tmpa_tl {#2}
+ {
+ \bool_if:NT \l_@@_cutext_uppercase_word_bool
+ {
+ \text_uppercase:x { \tl_head:V \l_@@_translation_tmpa_tl }
+ \tl_tail:V
+ }
+ }
+ \l_@@_translation_tmpa_tl
+ }{
+ \bool_if:NTF \l_@@_cutext_uppercase_word_bool
+ { \@@_print_Numeral:n {#1} }
+ { \@@_print_numeral:n {#1} }
+ }
}
+\cs_generate_variant:Nn \@@_cutext_print_input_aux:nn { nV }
% \end{macrocode}
% \end{macro}
%
-% \begin{macro} { \@@_parse_the_amount:n }
-% Does what the name suggests. |#1| is the input given by the user without changes.
-% It is then stored in |\l_@@_original_amount_tl| (which can be expanded, etc.).
-% Afterwards we rescan the input to remove spaces and make sure \_ and ? have
-% correct catcodes (last one can be active; screws some stuff up if it is so).
-% Then decides what's supposed to happen next.
+% \begin{macro}{\@@_cuam_print_number:n, \@@_cuam_print_numerical_input_aux:nn, \@@_cuam_print_numerical_input_aux:nV }
+% If both a phrase and a numeral is requested we do some more complicated stuff,
+% else just print a number.
+%
+% If the numeral is \emph{not} equal to $1$ use the |\@@_print_numeral:n| function.
+% Else get the translation for |one(m)|, |one(f)| or |one(n)| (depends).
% \begin{macrocode}
-\cs_new:Npn \@@_parse_the_amount:n #1
+\cs_new_protected:Npn \@@_cuam_print_number:n #1
{
- \@@_expand_amount_input:Nn \l_@@_original_amount_tl {#1}
- \tl_set_rescan:NnV \l_@@_original_amount_tl
+ \bool_lazy_and:nnTF
+ { \l_@@_lokal_phrase_bool }
+ { \l_@@_lokal_numeral_bool }
{
- \char_set_catcode_letter:N \_ %
- \char_set_catcode_ignore:N \ %
- \char_set_catcode_other:N ? %
- } \l_@@_original_amount_tl
- \bool_lazy_any:nTF
+ \@@_cuam_print_numerical_input_aux:nV {#1} \l_@@_phrase_number_tl
+ }
+ { \@@_print_number_default:n {#1} }
+ }
+\cs_new:Npn \@@_cuam_print_numerical_input_aux:nn #1#2
+ {
+ \int_compare:nNnTF {#1} = { 1 }
{
- { \tl_if_empty_p:N \l_@@_original_amount_tl }
- { \l_@@_pckopt_draft_bool }
+ \@@_culang_one_let_by_gender:NVTF
+ \l_@@_translation_tmpa_tl \l_@@_phrase_gender_tl
+ { \l_@@_translation_tmpa_tl }
+ {
+ \@@_print_numeral:n {#1}
+ \bool_set_false:N \l_@@_lokal_numeral_bool
+ }
}
- { \@@_prepare_just_print_input: }
- { \@@_split_and_parse_input: }
+ { \@@_print_numeral:n {#1} }
}
+\cs_generate_variant:Nn \@@_cuam_print_numerical_input_aux:nn { nV }
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\@@_split_and_parse_input: }
-% If the weitd option \opt{42} is used, set the state to \enquote{42}.
-% Copy the original amount and prepapre to split the input.
+%
+%
+% \begin{macro}{\@@_rf_print_amount_correctly:}
+% In case of an error just print the original input.
+%
+% Else we check how many items the printing sequence has. If it is $1$
+% print the sequence with an empty argument.
+%
+% Else: Do we print ranges? Do we print times? If neither, there is something wrong.
% \begin{macrocode}
-\cs_new:Npn \@@_split_and_parse_input:
+\cs_new:Npn \@@_rf_print_amount_correctly:
{
- \bool_if:NT \l_@@_pckopt_fourty_two_bool
- { \@@_set_state_to:n { 42 } }
- \tl_set_eq:NN \l_@@_tmpa_tl \l_@@_original_amount_tl
- \@@_prepare_to_split_input:N \l_@@_tmpa_tl
+ \@@_if_state_equal:nTF { error }
+ {
+ \l_@@_original_amount_tl
+ }{
+ \int_compare:nNnTF { \l_@@_nr_of_items } = { 1 }
+ { \seq_use:Nn \l_@@_prepared_printing_seq { } }
+ {
+ \bool_if:NTF \l_@@_rf_contains_range_bool
+ { \seq_use:Nn \l_@@_prepared_printing_seq { \@@_rf_print_range_sign: } }
+ {
+ \bool_if:NTF \l_@@_rf_contains_times_bool
+ { \seq_use:Nn \l_@@_prepared_printing_seq { \@@_print_times_sign: } }
+ {
+ \@@_create_internal_error:nx { neither-range-nor-times }
+ {
+ \fp_eval:n
+ { \l_@@_rf_contains_range_bool + 2*\l_@@_rf_contains_times_bool }
+ }
+ }
+ }
+ }
+ }
}
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\@@_prepare_just_print_input: }
-% If we decide the input is just to be printed, set it to \enquote{error}
-% (because I am lazy and do not want to create another case to check).
+%
+% \begin{macro}{\@@_rf_print_unit_correctly:}
+% Quite straightforward.
% \begin{macrocode}
-\cs_new:Npn \@@_prepare_just_print_input:
+\cs_new:Npn \@@_rf_print_unit_correctly:
{
- \@@_set_state_to:n { error }
- \tl_if_empty:NT \l_@@_original_amount_tl
- { \@@_create_error:nn { cooking-units } { empty-amount } }
+ \@@_if_state_equal:nTF { error }
+ {
+ \tl_if_eq:NNF \l_@@_cmd_type_tl \c_@@_cmd_type_cuam_tl
+ { \@@_rf_print_unit_in_case_of_error: }
+ }
+ { \@@_rf_print_unit_or_phrase: }
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{ \@@_prepare_to_split_input:N}
-% Adapts the state into \enquote{range} or \enquote{fraction} if needed.
-% By default it is set to \enquote{number}. Ranges and Fractions are not allowed
-% together. Afterwards, split the input. If we encounter an error, we can use
-% |\use_none_delimit_by_q_nil:w| during the code to jump to this point.
-% This makes bailing out from the command more easy.
+% \begin{macro}{\@@_rf_print_unit_or_phrase:}
+% Printing the unit depends on the unit; nothing more or less.
% \begin{macrocode}
-\cs_new:Npn \@@_prepare_to_split_input:N #1
+\cs_new:Npn \@@_rf_print_unit_or_phrase:
{
- \tl_if_in:NVT #1 \l_@@_input_range_sign_tl
+ \tl_case:NnF \l_@@_cmd_type_tl
{
- \tl_replace_once:NVn #1 \l_@@_input_range_sign_tl { \q_@@_range }
- \@@_set_parse_and_process_type_to:n { range }
- }
- \tl_if_in:NnT #1 { / }
- {
- \@@_if_parse_and_process_type_equal:nT { range }
- { \@@_create_error_and_stop:n { fraction-not-allowed-with-range } }
- \@@_set_parse_and_process_type_to:n { fraction }
+ \c_@@_cmd_type_cunum_tl { \@@_cunum_print_correct_unit: }
+ \c_@@_cmd_type_cCutext_tl { \@@_cutext_print_correct_unitname: }
+ \c_@@_cmd_type_cuam_tl { \@@_cuam_print_correct_unitphrase: }
}
- \@@_split_and_parse:N #1
- \use_none_delimit_by_q_nil:w \q_nil
+ { \@@_create_internal_error:nN { print-unit-acc } \l_@@_cmd_type_tl }
}
% \end{macrocode}
% \end{macro}
%
%
-% \begin{macro}{ \@@_split_and_parse:N}
-% Splits the input into fractions or ranges (or numbers).
+%
+%
+%
+% \begin{macro}{\@@_rf_initialise_after_parsing:n}
+% As the name suggests, this one is used \emph{after} parsing the amount.
+% This is done in order to know if there is an error, if the unit needs
+% to be changed and if this command needs to be called at all.
+%
+% It is kinda difficult to decide which unit is the correct one, as it may change
+% due to unit-options. In theory this could lead to an infinite loop,
+% so I decide in this place how things are printed and which unit
+% is used.
+%
+% Well, in the end I only decide if a fraction is printed or not. The case of error or
+% special signs were already sorted out.
+%
+% To make sure the lokal options override the unit-options, we set
+% the options again after unit-options.
% \begin{macrocode}
-\cs_new:Npn \@@_split_and_parse:N #1
- {
- \tl_case:NnF \l_@@_parse_and_process_type_tl
+\cs_new_protected:Npn \@@_rf_initialise_after_parsing:n #1
+ {
+ \clist_if_empty:cF { l_@@_unit_option_ \l_@@_decided_unit_tl _clist }
{
- \c_@@_parse_and_process_type_number_tl { \@@_split_and_parse_number:V }
- \c_@@_parse_and_process_type_range_tl { \@@_split_and_parse_range:V }
- \c_@@_parse_and_process_type_fraction_tl { \@@_split_and_parse_fraction:V }
- }
- { \@@_create_internal_error:nN { split } \l_@@_parse_and_process_type_tl }
- #1
+ \keys_set_groups:nnv
+ { cooking-units }
+ { unit-hook }
+ { l_@@_unit_option_ \l_@@_decided_unit_tl _clist }
+ }
+ \tl_if_empty:nF {#1} { \l_@@_precompiled_options_tl }
+ \@@_if_cmd_type_equal:nTF { cunum }
+ { \bool_set_false:N \l_@@_lokal_numeral_bool }
+ { \bool_set_eq:NN \l_@@_lokal_numeral_bool \l_@@_pckopt_print_numeral_bool }
}
+\cs_new:Npn \@@_decide_unit:
+ {
+ \@@_change_unit:TF
+ { \tl_set_eq:NN \l_@@_decided_unit_tl \l_@@_option_unit_tl }
+ { \tl_set_eq:NN \l_@@_decided_unit_tl \l_@@_original_unit_tl }
+ }
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{ \@@_split_and_parse_number:n }
-% Gets the input , parses it and stores it into |\l_@@_number_tmpa_tl|.
+%
+%
+%
+%
+% \begin{macro}{ \@@_rf_general_checkups: }
+% Doing some general stuff and tests which are done before further processing
+% the amount.
% \begin{macrocode}
-\cs_new:Npn \@@_split_and_parse_number:n #1
+\cs_new:Npn \@@_rf_general_checkups:
{
- \@@_parse_input_and_safe_in:nN {#1} \l_@@_number_tmpa_tl
+ \@@_decide_unit:
+ \@@_if_cmd_type_equal:nT { cCutext }
+ { \@@_rf_cutext_check_if_translation_available: }
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{ \@@_split_and_parse_range:n , \@@_split_and_parse_range_aux:ww }
-% Splits the input along |\q_@@_range|, parses the two parts and that's it.
+%
+%
+% \begin{macro}{ \@@_rf_prepare_fourty_two_amount: }
+% Simply replaces all variables with |42|. We can change all (except for the mixed fraction tl)
+% as we know if we are going to print a \enquote{number}, \enquote{range} or
+% \enquote{fraction}.
% \begin{macrocode}
-\cs_new:Npn \@@_split_and_parse_range:n #1
+\cs_new:Npn \@@_rf_prepare_fourty_two_amount:
{
- \@@_split_and_parse_range_aux:ww #1 \q_stop
+ \seq_map_inline:Nn \l_@@_parsed_seq
+ {
+ \@@_rf_prepare_fourty_two_amount_aux:nnnnn
+ ##1
+ }
+ }
+\tl_const:Nn \c_@@_fourty_two_tl { 42 }
+\tl_const:Nn \c_@@_fourty_two_unknown_tl { 42(!) }
+\cs_new:Npn \@@_rf_prepare_fourty_two_amount_aux:nnnnn #1#2#3#4#5
+ {
+ \tl_clear:N \l_@@_mixed_fraction_tl
+ \tl_clear:N \l_@@_number_tmpa_tl
+ \@@_if_state_equal:nTF { special_sign }
+ { \tl_set_eq:NN \l_@@_number_tmpb_tl \c_@@_fourty_two_unknown_tl }
+ { \tl_set_eq:NN \l_@@_number_tmpb_tl \c_@@_fourty_two_tl }
+ \bool_if:NT #1
+ {
+ \tl_if_empty:nF {#3}
+ { \tl_set_eq:NN \l_@@_mixed_fraction_tl \l_@@_number_tmpb_tl }
+ \tl_if_empty:nF {#4}
+ { \tl_set_eq:NN \l_@@_number_tmpa_tl \l_@@_number_tmpb_tl }
+ }
+ \@@_rf_seq_put_right:NnnVVV \l_@@_processed_seq
+ {#1} {#2} \l_@@_mixed_fraction_tl \l_@@_number_tmpa_tl \l_@@_number_tmpb_tl
}
-\cs_new:Npn \@@_split_and_parse_range_aux:ww #1 \q_@@_range #2 \q_stop
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \subsubsection{Process the input}
+%
+%
+% \begin{macro}{ \@@_rf_print_unit_in_case_of_error: }
+% Prints the unit in case of error. Make sure the unit is printed correctly
+% with the correct spacing. If the unit is unknown, just print the input.
+% \begin{macrocode}
+\cs_new:Npn \@@_rf_print_unit_in_case_of_error:
{
- \@@_parse_input_and_safe_in:nN {#1} \l_@@_number_tmpa_tl
- \@@_parse_input_and_safe_in:nN {#2} \l_@@_number_tmpb_tl
- }
+ \tl_if_empty:NF \l_@@_phantom_tl { \phantom { \l_@@_phantom_tl } }
+ \tl_use:N \l_@@_value_unit_space_tl
+ \bool_if:NTF \l_@@_unit_error_bool
+ { \l_@@_original_unit_tl }
+ { \@@_culang_print:nV { unit-symbol } \l_@@_original_unit_tl }
+ }
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{ \@@_split_and_parse_fraction:n , \@@_split_and_parse_fraction_mixed:ww , \@@_split_and_parse_fraction_frac:ww }
-% A bit more tricky. We check first if a mixed fraction part exists. If not the function
-% get's |\q_nil|. Then we read the nominator and denominator. Inbetween we check
-% for errors
+%
+%
+% \begin{macro} { \@@_rf_print_range_sign: , \@@_print_times_sign: }
+% Prints ranges. It simply prints the numbers twice, inbetween a range sign.
% \begin{macrocode}
-\cs_new:Npn \@@_split_and_parse_fraction:n #1
+\cs_new:Npn \@@_rf_print_range_sign:
+ {
+% \@@_if_cmd_type_equal:nTF { cunum }
+% {
+% \bool_if:NT \l_@@_seperator_after_fraction_bool { \, }
+% \tl_use:N \l_@@_cunum_range_sign_tl
+% }{
+ \bool_lazy_or:nnTF
+ { \@@_if_cmd_type_equal_p:n { cCutext } }
+ { \l_@@_lokal_numeral_bool }
+ {
+ \tl_if_empty:NTF \l_@@_cutext_range_sign_tl
+ {
+ \@@_culang_print:nn { name } { cutext-range-phrase }
+ }
+ { \tl_use:N \l_@@_cutext_range_sign_tl }
+ }{
+ \bool_if:NT \l_@@_seperator_after_fraction_bool { \, }
+ \tl_use:N \l_@@_cunum_range_sign_tl
+ }
+% }
+ }
+\cs_new:Npn \@@_print_times_sign:
{
- \@@_split_and_parse_fraction_mixed:ww
- #1 \q_stop / \q_recursion_tail _ \q_nil \q_stop
- \q_recursion_stop
+ \l_@@_times_space_tl \l_@@_times_sign_tl \l_@@_times_space_tl
}
% \end{macrocode}
-% Gets the mixed fraction part (if it exists). If |#2| is |\q_nil| the part does not
-% exist. |#1| must then be of part |a/b|.
+% \end{macro}
%
-% If |#2| is \emph{not} |\q_nil| it contains the fraction part with |a/b|.
-% Parse the mixed fraction part and store it. Seperate |#2|.
+%
+% \begin{macro}{ \@@_print_numerical_input:N }
+% The base printing command for numbers. Makes sure the minus sign
+% and decimal-mark are correct.
% \begin{macrocode}
-\cs_new:Npn \@@_split_and_parse_fraction_mixed:ww #1 _ #2 \q_stop
+\cs_new_protected:Npn \@@_print_numerical_input:N #1
{
- \quark_if_nil:nTF {#2}
- {
- \tl_clear:N \l_@@_mixed_fraction_tl
- \@@_split_and_parse_fraction_frac:ww #1 \q_stop
- }{
- \@@_parse_input_and_safe_in:nN {#1} \l_@@_mixed_fraction_tl
- \@@_split_and_parse_fraction_frac:ww #2 \q_stop
+ \tl_if_in:NnT #1 { . }
+ {
+ \@@_culang_let:nnN { name } { decimal-mark } \l_@@_translation_tmpa_tl
+ \tl_replace_once:Nnn #1 { . } { \l_@@_translation_tmpa_tl }
}
+ \tl_replace_once:Nnn #1 { - } \c_@@_minus_tl
+ #1
}
% \end{macrocode}
-% Seperates nominator and denominator. If |#2| is equal to |\q_recursion_tail|
-% we probably had a construction like |a/b_c|, which is wrong. If so, create an error.
-% If everything is correct, parse the input and store it.
+% \end{macro}
+%
+%
+%
+%
+%
+% \subsection {Parsing and checking numbers}
+%
+% This subsection contains macros for splitting and checking the input.
+%
+% \begin{macro}{\@@_create_error:n, \@@_create_error_and_stop:n , \@@_create_error:nn }
+% Create error messages and set case to \enquote{error}.
% \begin{macrocode}
-\cs_new:Npn \@@_split_and_parse_fraction_frac:ww #1 / #2 \q_stop
+\cs_new:Npn \@@_create_internal_error:nN #1#2
{
- \quark_if_recursion_tail_stop_do:nn {#2}
- { \@@_create_error:n { fraction-wrong-order } }
- \@@_parse_input_and_safe_in:nN {#1} \l_@@_number_tmpa_tl
- \@@_parse_input_and_safe_in:nN {#2} \l_@@_number_tmpb_tl
- \use_none_delimit_by_q_recursion_stop:w
+ \@@_set_state_to:n { error }
+ \msg_error:nnnV { cooking-units } { internal-error } {#1} #2
+ }
+\cs_new:Npn \@@_create_internal_error:nn #1#2
+ {
+ \@@_set_state_to:n { error }
+ \msg_error:nnnn { cooking-units } { internal-error } {#1} #2
}
+\cs_generate_variant:Nn \@@_create_internal_error:nn { nx }
+\cs_new:Npn \@@_create_error:n #1
+ {
+ \@@_set_state_to:n { error }
+ \msg_error:nnV { cooking-units } {#1} \l_@@_original_amount_tl
+ }
+\cs_new:Npn \@@_create_error_and_stop:n #1
+ {
+ \@@_create_error:n {#1}
+ \use_none_delimit_by_q_nil:w
+ }
+\cs_new:Npn \@@_create_error:nn #1#2
+ {
+ \@@_set_state_to:n { error }
+ \msg_error:nnnV { cooking-units } {#1} {#2} \l_@@_original_amount_tl
+ }
+\cs_generate_variant:Nn \@@_create_error:nn { nf }
% \end{macrocode}
% \end{macro}
-% \begin{macro}{ \@@_split_and_parse_number:V ,
-% \@@_split_and_parse_range:V , \@@_split_and_parse_fraction:V }
-% Some variants.
+%
+% \begin{macro}{\@@_prepare_just_print_input: }
+% If we decide the input is just to be printed, set it to \enquote{error}
+% (because I am lazy and do not want to create another case to check).
% \begin{macrocode}
-\cs_generate_variant:Nn \@@_split_and_parse_number:n { V }
-\cs_generate_variant:Nn \@@_split_and_parse_range:n { V }
-\cs_generate_variant:Nn \@@_split_and_parse_fraction:n { V }
+\cs_new:Npn \@@_prepare_just_print_input:
+ {
+ \@@_set_state_to:n { error }
+ \tl_if_empty:NT \l_@@_original_amount_tl
+ { \@@_create_error:nn { cooking-units } { empty-amount } }
+ }
% \end{macrocode}
% \end{macro}
%
+%
+%
+%
+%
+%
% \begin{macro}{ \@@_parse_input_and_safe_in:nN }
% Parses through |#1| and makes sure it is correct. This includes checking if there
% is only one decimal sign and other stuff. The \enquote{correct}
@@ -7609,6 +8385,7 @@ and the derived file cooking-units.sty.
{
\tl_clear:N \l_@@_tmpa_tl
\bool_set_false:N \l_@@_check_decimal_bool
+ \bool_set_false:N \l_@@_minus_bool
\cs_set_eq:NN \@@_parse:N \@@_start_loop:N
\tl_map_function:nN {#1} \@@_parse:N
\@@_if_state_equal:nF { error }
@@ -7618,21 +8395,24 @@ and the derived file cooking-units.sty.
% \end{macro}
%
% \begin{macro}{ \@@_start_loop:N }
-% This function seperates the input into two parts with the first
-% part being the first token. This token is checked if or if not
-% it is a sign. If it is a sign it is put into
-% \lstinline|\l_@@_tmpa_tl|, if not it is checked normally by
-% \lstinline|\@@_parse_input_loop_aux:N|. \#2 (the other
-% tokens) is then given to \lstinline|\tl_map_function:nN|. This
-% also works if the input only consists of one token with \#2 being
-% empty (hopefully).
+% First, check for signs ($+$ and $-$ by default). If a sign is found and is $+$, do nothing
+% and repat the sign-checking-process. If the sign is a $-$ reverese the boolean
+% |\l_@@_minus_bool|. Reversing it is necessary to simulate mathematics of e.g. $+-+-1$
+% or $-+-+-1$, etc. If a non-sign is found, check if a minus sign is added and parse
+% the rest. |\token_if_eq_charcode:NNF| is stolen from \pkg{siunitx}.
% \begin{macrocode}
\cs_new:Npn \@@_start_loop:N #1
{
- \cs_set_eq:NN \@@_parse:N \@@_parse_input_loop_aux:N
\tl_if_in:NnTF \l_@@_input_value_signs_tl {#1}
- { \tl_put_right:Nn \l_@@_tmpa_tl {#1} }
- { \tl_map_function:nN {#1} \@@_parse:N }
+ {
+ \token_if_eq_charcode:NNT #1 -
+ { \@@_bool_reverse:N \l_@@_minus_bool }
+ }{
+ \bool_if:NT \l_@@_minus_bool
+ { \tl_put_left:Nn \l_@@_tmpa_tl { - } }
+ \cs_set_eq:NN \@@_parse:N \@@_parse_input_loop_aux:N
+ \tl_map_function:nN {#1} \@@_parse:N
+ }
}
% \end{macrocode}
% \end{macro}
@@ -7680,7 +8460,7 @@ and the derived file cooking-units.sty.
{
\tl_if_in:NnTF \l_@@_input_mixed_fraction_sign_tl {#1}
{
- \@@_if_parse_and_process_type_equal:nTF { fraction }
+ \bool_if:NTF \l_@@_rf_check_fraction_bool
{ \@@_create_error:n { Second-mixed-fraction-sign-not-allowed } }
{ \@@_create_error:n { missing-slash } }
}
@@ -7753,9 +8533,9 @@ and the derived file cooking-units.sty.
\fp_set:Nn \l_@@_tmpa_fp {#1}
\tl_if_in:cnTF { l_@@_unit_change_ \l_@@_original_unit_tl _tl } { \l_@@_tmpa_fp }
{
- \@@_tl_eval:Nv #1 { l_@@_unit_change_ \l_@@_original_unit_tl _tl }
+ \@@_tl_set_eval:Nv #1 { l_@@_unit_change_ \l_@@_original_unit_tl _tl }
}{
- \@@_tl_eval:Nn #1
+ \@@_tl_set_eval:Nn #1
{ \l_@@_tmpa_fp * \tl_use:c { l_@@_unit_change_ \l_@@_original_unit_tl _tl } }
}
}
@@ -7769,12 +8549,19 @@ and the derived file cooking-units.sty.
% persons is different then the one given by |\culabel|. Before
% evaluation, check if the unit is one of those that cannot be changed.
% \begin{macrocode}
+\bool_new:N \l_@@_curef_forbidden_unit_msg_used_bool
\cs_new:Npn \@@_calc_references_and_store_in:N #1
{
\bool_if:NT \l_@@_lokal_recalc_for_people_bool
{
\seq_if_in:NVTF \l_@@_curef_do_not_change_seq \l_@@_decided_unit_tl
- { \msg_error:nnV { cooking-units } { curef-forbidden-unit } \l_@@_decided_unit_tl }
+ {
+ \bool_if:NF \l_@@_curef_forbidden_unit_msg_used_bool
+ {
+ \msg_error:nnV { cooking-units } { curef-forbidden-unit } \l_@@_decided_unit_tl
+ \bool_set_true:N \l_@@_curef_forbidden_unit_msg_used_bool
+ }
+ }
{ \@@_calc_references_and_store_in_aux:N #1 }
}
}
@@ -7783,7 +8570,7 @@ and the derived file cooking-units.sty.
% \begin{macrocode}
\cs_new:Npn \@@_calc_references_and_store_in_aux:N #1
{
- \@@_tl_eval:Nn #1
+ \@@_tl_set_eval:Nn #1
{
#1 *
\l_@@_wanted_number_of_persons_int /
@@ -7807,7 +8594,7 @@ and the derived file cooking-units.sty.
{ \bool_set_true:N \l_@@_round_number_bool }
{ \@@_check_number_for_rounding:V #1 }
\bool_if:NT \l_@@_round_number_bool
- { \@@_tl_eval:Nn #1 { round ( \@@_rounding_function:n {#1} ) } }
+ { \@@_tl_set_eval:Nn #1 { round ( \@@_rounding_function:n {#1} ) } }
}
% \end{macrocode}
% \end{macro}
@@ -7955,7 +8742,7 @@ and the derived file cooking-units.sty.
\cs_new:Npn \@@_cunum:nnnnn #1#2#3#4#5
{
\@@_set_cmd_type_to:n { cunum }
- \@@_do_the_stuff:nnnnnn {#1} {#2} {#3} {#4} {#5} { }
+ \@@_rf_main_command:nnnnnn {#1} {#2} {#3} {#4} {#5} { }
}
% \end{macrocode}
% \end{macro}
@@ -8025,7 +8812,7 @@ and the derived file cooking-units.sty.
\cs_new:Npn \@@_cutext:nnnn #1#2#3#4
{
\@@_set_cmd_type_to:n { cCutext }
- \@@_do_the_stuff:nnnnnn {#1} {#2} {#3} { } {#4} { }
+ \@@_rf_main_command:nnnnnn {#1} {#2} {#3} { } {#4} { }
}
% \end{macrocode}
% \end{macro}
@@ -8097,13 +8884,13 @@ and the derived file cooking-units.sty.
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{ \@@_cutext_check_if_translation_available: }
+% \begin{macro}{ \@@_rf_cutext_check_if_translation_available: }
% Checks if a unitname of the current unit exists. If yes, continue.
% here we can also decide if the unit should be kept the same or not
% as we know that we stay in \enquote{cCutext}.
% If not, change the command to \enquote{cunum}.
% \begin{macrocode}
-\cs_new:Npn \@@_cutext_check_if_translation_available:
+\cs_new:Npn \@@_rf_cutext_check_if_translation_available:
{
\bool_if:NTF \l_@@_pckopt_cutext_keep_unit_bool
{ \tl_set_eq:NN \l_@@_curr_unit_tl \l_@@_original_unit_tl }
@@ -8136,34 +8923,12 @@ and the derived file cooking-units.sty.
% need to be integers. If they are not, numerals cannot be used. If one or both
% are integers, if they are below |\l_@@_print_numerals_below_int|.
% \begin{macrocode}
-\cs_new:Npn \@@_cutext_post_process_input:NN #1#2
- {
- \@@_if_parse_and_process_type_equal:nTF { range }
- {
- \@@_culang_let:nnN { pluraltest } { range } \l_@@_translation_tmpa_tl
- \use:c { @@_pluraltest_range_ \l_@@_translation_tmpa_tl :NN } #1#2
-% \@@_cutext_check_if_plural_is_needed:N #2
- }{
- \@@_culang_let:nnN { pluraltest } { normal } \l_@@_translation_tmpa_tl
- \use:c { @@_pluraltest_normal_ \l_@@_translation_tmpa_tl :N } #1
-% \@@_cutext_check_if_plural_is_needed:N #1
- }
- \bool_if:NT \l_@@_lokal_numeral_bool
- {
- \@@_if_contain_decimals:NNTF #1#2
- { \bool_set_false:N \l_@@_lokal_numeral_bool }
- { \@@_check_if_integer_can_be_numerals:NN #1#2 }
- }
- }
+
% \end{macrocode}
% \end{macro}
% \begin{macro} { \@@_cutext_post_process_fraction_input:NNN }
% \begin{macrocode}
-\cs_new:Npn \@@_cutext_post_process_fraction_input:NNN #1#2#3
- {
- \@@_culang_let:nnN { pluraltest } { fraction } \l_@@_translation_tmpa_tl
- \use:c { @@_pluraltest_fraction_ \l_@@_translation_tmpa_tl :NNN } #1#2#3
- }
+
% \end{macrocode}
% \end{macro}
% \begin{macro} { \@@_cutext_check_if_plural_is_needed:N }
@@ -8180,32 +8945,6 @@ and the derived file cooking-units.sty.
% \end{macro}
%
%
-% \begin{macro} { \@@_check_if_integer_can_be_numerals:NN }
-% At this point we know that we have integers, so check if they are
-% below |\l_@@_print_numerals_below_int|. If they are, fine. Else,
-% set the boolean to false.
-% \begin{macrocode}
-\cs_new:Npn \@@_check_if_integer_can_be_numerals:NN #1#2
- {
- \@@_if_parse_and_process_type_equal:nTF { range }
- {
- \bool_lazy_all:nF
- {
- { \int_compare_p:nNn {#1} < { \l_@@_print_numerals_below_int } }
- { \int_compare_p:nNn {#2} < { \l_@@_print_numerals_below_int } }
- { \int_compare_p:nNn {#1} > { 0 } }
- { \int_compare_p:nNn {#2} > { 0 } }
- }
- { \bool_set_false:N \l_@@_lokal_numeral_bool }
- }{
- \bool_lazy_and:nnF
- { \int_compare_p:nNn {#1} < { \l_@@_print_numerals_below_int } }
- { \int_compare_p:nNn {#1} > { 0 } }
- { \bool_set_false:N \l_@@_lokal_numeral_bool }
- }
- }
-% \end{macrocode}
-% \end{macro}
%
%
%
@@ -8225,7 +8964,13 @@ and the derived file cooking-units.sty.
\prg_new_conditional:Npnn \@@_if_no_unit_marker:N #1 { TF , F }
{
\tl_if_eq:NNTF \c_@@_no_unit_marker_tl #1
- { \prg_return_true: }
+ {
+ \tl_if_eq:NNF \l_@@_cmd_type_tl \c_@@_cmd_type_cuam_tl
+ {
+ \@@_create_internal_error:nN { cmd-type-no-unit-maker } \l_@@_cmd_type_tl
+ }
+ \prg_return_true:
+ }
{ \prg_return_false: }
}
\seq_gput_right:NV \g_@@_list_of_defined_units_seq \c_@@_no_unit_marker_tl
@@ -8257,7 +9002,7 @@ and the derived file cooking-units.sty.
\cs_new:Npn \@@_cuam:nnn #1#2#3
{
\@@_set_cmd_type_to:n { cuam }
- \@@_do_the_stuff:nnnnVn {#1} {#2} {#3} { } \c_@@_no_unit_marker_tl { }
+ \@@_rf_main_command:nnnnVn {#1} {#2} {#3} { } \c_@@_no_unit_marker_tl { }
}
% \end{macrocode}
% \end{macro}
@@ -8271,17 +9016,7 @@ and the derived file cooking-units.sty.
% Afterwards check if phrases are used and can be used at all. This needs
% to be done before the numeral check as it can change the input.
% \begin{macrocode}
-\cs_new_protected:Npn \@@_cuam_post_process_input:NN #1#2
- {
- \@@_if_contain_decimals:NNTF #1#2
- { \bool_set_false:N \l_@@_lokal_numeral_bool }
- {
- \bool_if:NT \l_@@_pckopt_use_phrases_bool
- { \@@_cuam_post_process_input_phrases:NN #1#2 }
- \bool_if:NT \l_@@_lokal_numeral_bool
- { \@@_check_if_integer_can_be_numerals:NN #1#2 }
- }
- }
+
% \end{macrocode}
% \end{macro}
%\begin{macro}{ \@@_cuam_post_process_input_phrases:NN}
@@ -8294,85 +9029,10 @@ and the derived file cooking-units.sty.
% It is important for ranges to check both values and then decide if phrases
% are used or not.
% \begin{macrocode}
-\cs_new:Npn \@@_cuam_post_process_input_phrases:NN #1#2
- {
- \@@_culang_get_phrase_prop:N \l_@@_phrase_prop
- \tl_if_eq:NNT \c_@@_no_translation_str \l_@@_phrase_prop
- { \use_none_delimit_by_q_stop:w }
- \prop_get:NnN \l_@@_phrase_prop { seq } \l_@@_phrase_numbers_seq
-%
- \@@_cuam_post_process_input_phrases_aux:NNN
- #1 \l_@@_tmpa_int \l_@@_phrase_number_tl
- \bool_if:NF \l_@@_lokal_phrase_bool
- { \use_none_delimit_by_q_stop:w }
-%
- \@@_if_parse_and_process_type_equal:nTF { range }
- {
- \bool_if:NT \l_@@_phrase_negative_bool
- { \use_none_delimit_by_q_stop:w }
- \@@_cuam_post_process_input_phrases_range:NN
- #2 \l_@@_tmpb_int
- \bool_if:NF \l_@@_lokal_phrase_bool
- { \use_none_delimit_by_q_stop:w }
- \tl_set:NV #1 \l_@@_tmpa_int
- \tl_set:NV #2 \l_@@_tmpb_int
- \@@_cuam_get_phrase_name:NVN
- \l_@@_phrase_text_tl \l_@@_phrase_number_tl #2
- }{
- \tl_set:NV #1 \l_@@_tmpa_int
- \@@_cuam_get_phrase_name:NVN
- \l_@@_phrase_text_tl \l_@@_phrase_number_tl #1
- }
- \use_none_delimit_by_q_stop:w \q_stop
- }
+
% \end{macrocode}
% \begin{macrocode}
-\cs_new:Npn \@@_cuam_post_process_input_phrases_aux:NNN #1#2#3
- {
- \bool_set_false:N \l_@@_lokal_phrase_bool
- \seq_map_inline:Nn \l_@@_phrase_numbers_seq
- {
- \int_compare:nNnF { \int_abs:n {##1} } > {#1}
- {
- \prop_get:NnN \l_@@_phrase_prop { ##1-singlebool } \l_tmpa_tl
- \int_compare:nNnTF { \l_tmpa_tl } = { 1 }
- { \bool_set_true:N \l_@@_phrase_negative_bool }
- {
- \bool_set_false:N \l_@@_phrase_negative_bool
- \tl_set:Nf \l_tmpa_tl { \int_div_truncate:nn {#1} {##1} }
- }
- \int_compare:nNnT { \int_abs:n {##1} * \l_tmpa_tl } = {#1}
- {
- \tl_set_eq:NN #2 \l_tmpa_tl
- \tl_set:Nn #3 {##1}
- \bool_set_true:N \l_@@_lokal_phrase_bool
- \seq_map_break:
- }
- }
- }
- }
-\cs_new:Npn \@@_cuam_post_process_input_phrases_range:NN #1#2
- {
- \int_set:Nn \l_tmpa_int
- {
- \int_div_truncate:nn {#1} { \int_abs:n {\l_@@_phrase_number_tl } }
- }
- \int_compare:nNnTF { \int_abs:n {\l_@@_phrase_number_tl} * \l_tmpa_int } = {#1}
- {
- \int_set_eq:NN #2 \l_tmpa_int
- \bool_set_true:N \l_@@_lokal_phrase_bool
- }{
- \bool_set_false:N \l_@@_lokal_phrase_bool
- }
- }
-\cs_new:Npn \@@_cuam_get_phrase_name:NnN #1#2#3
- {
- \int_compare:nNnTF {#3} = { 1 }
- { \prop_get:NnN \l_@@_phrase_prop {#2} #1 }
- { \prop_get:NnN \l_@@_phrase_prop { #2-pl } #1 }
- \prop_get:NnN \l_@@_phrase_prop { #2-gender } \l_@@_phrase_gender_tl
- }
-\cs_generate_variant:Nn \@@_cuam_get_phrase_name:NnN { NVN }
+
% \end{macrocode}
% \end{macro}
%
@@ -8403,7 +9063,9 @@ and the derived file cooking-units.sty.
{
\@@_culang_one_let_by_gender:NVTF
\l_@@_translation_tmpa_tl \l_@@_phrase_gender_tl
- { \l_@@_translation_tmpa_tl }
+ {
+ \l_@@_translation_tmpa_tl
+ }
{
\@@_print_numeral:V #1
\bool_set_false:N \l_@@_lokal_numeral_bool
@@ -8440,13 +9102,7 @@ and the derived file cooking-units.sty.
\cs_new:Npn \cookingunits_print_fraction:nnn #1#2#3
{
\group_begin:
- \@@_set_amount:Nn \l_@@_mixed_fraction_tl {#1}
- \@@_set_amount:Nn \l_@@_number_tmpa_tl {#2}
- \@@_set_amount:Nn \l_@@_number_tmpb_tl {#3}
- \@@_print_fractions:Nnn
- \l_@@_mixed_fraction_tl
- \l_@@_number_tmpa_tl
- \l_@@_number_tmpb_tl
+ \@@_print_fraction:nnnn { 0 } {#1} {#2} {#3}
\group_end:
}
% \end{macrocode}
@@ -8457,9 +9113,9 @@ and the derived file cooking-units.sty.
{
\group_begin:
\@@_set_cmd_type_to:n { cunum }
- #1
- \@@_print_range_sign:
- #2
+ \@@_print_number_default:n {#1}
+ \@@_rf_print_range_sign:
+ \@@_print_number_default:n {#2}
\group_end:
}
% \end{macrocode}
@@ -8610,7 +9266,7 @@ and the derived file cooking-units.sty.
\@@_if_state_equal:nF { error }
{
\exp_args:NV \@@_initialice_cukeys_define:n \l_@@_curr_unit_tl
- \@@_tl_eval:Nn \l_@@_new_key_base_tl { 1 / (\l_@@_base_tl) }
+ \@@_tl_set_eval:Nn \l_@@_new_key_base_tl { 1 / (\l_@@_base_tl) }
\tl_clear:N \l_@@_curr_unit_tl
}
}
@@ -8708,7 +9364,7 @@ and the derived file cooking-units.sty.
\use_none_delimit_by_q_stop:w
}
\tl_set_eq:Nc \l_@@_original_unit_tl { l_@@_base_key_unit_ \l_@@_curr_unit_tl _tl }
- \prop_set_eq:Nc \l_@@_tmpa_prop { l_@@_new_cukeys_ \l_@@_original_unit_tl _prop }
+ \prop_set_eq:Nc \l_@@_tmpa_prop { l_@@_rf_cukeys_ \l_@@_original_unit_tl _prop }
\prop_get:NnN \l_@@_tmpa_prop {#1} \l_@@_new_key_base_tl
\prop_get:NnN \l_@@_tmpa_prop { Liste } \l_@@_tmpa_seq
\prop_get:NnN \l_@@_tmpa_prop { single } \l_@@_tmpa_tl
@@ -8749,7 +9405,7 @@ and the derived file cooking-units.sty.
\@@_if_state_equal:nF { error }
{
\@@_initialice_cukeys_add:V \l_@@_curr_unit_tl
- \@@_tl_eval:Nn \l_@@_new_key_base_tl { (\l_@@_new_key_base_tl) / (\l_@@_base_tl) }
+ \@@_tl_set_eval:Nn \l_@@_new_key_base_tl { (\l_@@_new_key_base_tl) / (\l_@@_base_tl) }
}
}
% \end{macrocode}
@@ -8826,7 +9482,7 @@ and the derived file cooking-units.sty.
{
\prop_gclear:N \g_@@_master_changer_prop
\@@_cukeys_prepare_lists:N \l_@@_original_unit_tl
- \@@_new_cukeys_create_keys:V \l_@@_original_unit_tl
+ \@@_rf_cukeys_create_keys:V \l_@@_original_unit_tl
}
}
\cs_generate_variant:Nn \@@_cukeys_prepare_parsing_keys:nn { nV }
@@ -8894,7 +9550,7 @@ and the derived file cooking-units.sty.
{
\int_incr:N \l_@@_nr_of_units_int
\bool_if:NF \l_@@_single_key_bool
- { \@@_tl_eval:Nn \l_@@_tmpb_tl { (\l_@@_tmpb_tl) * (\l_@@_new_key_base_tl) } }
+ { \@@_tl_set_eval:Nn \l_@@_tmpb_tl { (\l_@@_tmpb_tl) * (\l_@@_new_key_base_tl) } }
\seq_if_in:NVF \l_@@_tmpa_seq \l_@@_option_unit_tl
{ \seq_put_right:NV \l_@@_tmpa_seq \l_@@_option_unit_tl }
\prop_put:NnV \l_@@_tmpa_prop {#1} \l_@@_tmpb_tl
@@ -8920,10 +9576,10 @@ and the derived file cooking-units.sty.
% \begin{macrocode}
\cs_new:Npn \@@_cukeys_prepare_lists:N #1
{
- \prop_clear_new:c { l_@@_new_cukeys_ #1 _prop }
- \prop_set_eq:cN { l_@@_new_cukeys_ #1 _prop } \l_@@_tmpa_prop
- \prop_put:cnV { l_@@_new_cukeys_ #1 _prop } { Liste } \l_@@_tmpa_seq
- \prop_put:cnV { l_@@_new_cukeys_ #1 _prop } { single } \l_@@_single_key_bool
+ \prop_clear_new:c { l_@@_rf_cukeys_ #1 _prop }
+ \prop_set_eq:cN { l_@@_rf_cukeys_ #1 _prop } \l_@@_tmpa_prop
+ \prop_put:cnV { l_@@_rf_cukeys_ #1 _prop } { Liste } \l_@@_tmpa_seq
+ \prop_put:cnV { l_@@_rf_cukeys_ #1 _prop } { single } \l_@@_single_key_bool
\tl_set:cn { l_@@_unit_change_ #1 _tl } { 1 }
\tl_set_eq:cN { l_@@_base_key_unit_ #1 _tl } #1
\bool_if:NF \l_@@_single_key_bool
@@ -8938,33 +9594,33 @@ and the derived file cooking-units.sty.
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{ \@@_new_cukeys_create_keys:n , \@@_new_cukeys_create_keys:V }
+% \begin{macro}{ \@@_rf_cukeys_create_keys:n , \@@_rf_cukeys_create_keys:V }
% Here we start creating the keys. If seperate into two cases:
% Do we have a single-key or not. If yes, just create the key |#1|
% and do what needs to be done. If not, we need to create a bunch of
% keys for each unit in the list.
% \begin{macrocode}
-\cs_new:Npn \@@_new_cukeys_create_keys:n #1
+\cs_new:Npn \@@_rf_cukeys_create_keys:n #1
{
% % #1: original_unit
\clist_set_from_seq:NN \l_@@_tmpa_clist \l_@@_tmpa_seq
\bool_if:NTF \l_@@_single_key_bool
{
- \@@_new_cukeys_define_key:nVn
+ \@@_rf_cukeys_define_key:nVn
{#1} \l_@@_tmpa_clist {#1}
}{
\seq_map_inline:Nn \l_@@_tmpa_seq
{
- \@@_new_cukeys_define_key:nVn
+ \@@_rf_cukeys_define_key:nVn
{##1} \l_@@_tmpa_clist {#1}
}
}
}
-\cs_generate_variant:Nn \@@_new_cukeys_create_keys:n { V }
+\cs_generate_variant:Nn \@@_rf_cukeys_create_keys:n { V }
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{ \@@_new_cukeys_define_key:nnn , \@@_new_cukeys_define_key:nVn }
+% \begin{macro}{ \@@_rf_cukeys_define_key:nnn , \@@_rf_cukeys_define_key:nVn }
% Now we define some key(s). |#1| is the unit and key-to-be-defined.
% As |#1| is not expanded, this can contain control sequences, etc. not need for worry
% here.
@@ -8980,7 +9636,7 @@ and the derived file cooking-units.sty.
% In order to remind the user which choices each key have, define an error
% message for unknown keys.
% \begin{macrocode}
-\cs_new:Npn \@@_new_cukeys_define_key:nnn #1#2#3
+\cs_new:Npn \@@_rf_cukeys_define_key:nnn #1#2#3
{
\@@_if_unit_has_a_key:nF {#1}
{ \seq_put_right:Nn \l_@@_list_of_defined_keys_seq {#1} }
@@ -9003,7 +9659,7 @@ and the derived file cooking-units.sty.
#1 .groups:n = { change-unit }
}
}
-\cs_generate_variant:Nn \@@_new_cukeys_define_key:nnn { nVn }
+\cs_generate_variant:Nn \@@_rf_cukeys_define_key:nnn { nVn }
% \end{macrocode}
% \end{macro}
%
@@ -9050,7 +9706,7 @@ and the derived file cooking-units.sty.
% so direct retrival of the value is possible in this case.
%
% If |#1| and |#3| are different, we need to do some work. First, get the list
-% of key-values |l_@@_new_cukeys_ #3 _prop| and store it in |\l_@@_tmpa_prop|.
+% of key-values |l_@@_rf_cukeys_ #3 _prop| and store it in |\l_@@_tmpa_prop|.
% Now eval.
%
% Having unit |a| and wanting unit |b|, we need the value to go from |a| to |b|
@@ -9062,10 +9718,10 @@ and the derived file cooking-units.sty.
{
\str_if_eq:nnTF {#1} {#3}
{
- \prop_get:cnc { l_@@_new_cukeys_ #1 _prop } {#2} { l_@@_unit_change_ #1 _tl }
+ \prop_get:cnc { l_@@_rf_cukeys_ #1 _prop } {#2} { l_@@_unit_change_ #1 _tl }
}{
- \prop_set_eq:Nc \l_@@_tmpa_prop { l_@@_new_cukeys_ #3 _prop }
- \@@_tl_eval:cn { l_@@_unit_change_ #1 _tl }
+ \prop_set_eq:Nc \l_@@_tmpa_prop { l_@@_rf_cukeys_ #3 _prop }
+ \@@_tl_set_eval:cn { l_@@_unit_change_ #1 _tl }
{
( \prop_item:Nn \l_@@_tmpa_prop {#2} ) /
( \prop_item:Nn \l_@@_tmpa_prop {#1} )
@@ -9341,7 +9997,7 @@ and the derived file cooking-units.sty.
\seq_clear_new:c { l_@@_list_ ##1 _seq }
\tl_set_eq:Nc \l_@@_curr_unit_tl { l_@@_base_key_unit_ ##2 _tl }
\prop_set_eq:cc { l_@@_keys_ ##1 _prop }
- { l_@@_new_cukeys_ \l_@@_curr_unit_tl _prop }
+ { l_@@_rf_cukeys_ \l_@@_curr_unit_tl _prop }
\prop_get:cnc { l_@@_keys_ ##1 _prop } { Liste } { l_@@_list_ ##1 _seq }
}
}
@@ -9371,7 +10027,7 @@ and the derived file cooking-units.sty.
\tl_put_right:Nx \l_@@_stored_formula_tl
{ { (
\exp_not:N \prop_item:Nn
- \exp_not:c { l_@@_new_cukeys_ \l_@@_original_unit_tl _prop } {#1}
+ \exp_not:c { l_@@_rf_cukeys_ \l_@@_original_unit_tl _prop } {#1}
) } }
\int_compare:nNnTF { \l_@@_depth_int } = { \l_@@_nr_of_units_int }
{
@@ -9437,7 +10093,7 @@ and the derived file cooking-units.sty.
\prop_get:NnN \l_@@_derived_units_prop {#1} \l_@@_tmpa_tl
\prop_get:NnN \l_@@_derived_units_prop {#2} \l_@@_tmpb_tl
\prop_put:Nnn \l_@@_change_unit_prop {#1} {#2}
- \@@_tl_eval:cn { l_@@_unit_change_ #1 _tl }
+ \@@_tl_set_eval:cn { l_@@_unit_change_ #1 _tl }
{
(\l_@@_tmpb_tl) / (\l_@@_tmpa_tl)
}
@@ -9571,7 +10227,9 @@ and the derived file cooking-units.sty.
\quark_if_recursion_tail_stop:n {#1}
\seq_if_in:NnTF \g_@@_allowed_special_keys_seq {#1}
{
- \@@_set_unit:Nn \l_@@_curr_unit_tl {#1}
+ \str_if_eq:nnTF { cutext-range-sign } {#1}
+ { \@@_set_unit:Nn \l_@@_curr_unit_tl { cutext-range-phrase } }
+ { \@@_set_unit:Nn \l_@@_curr_unit_tl {#1} }
\bool_set_true:N \l_@@_tmpa_bool
}{
\@@_error_if_unit_not_defined:nNT {#1} \l_@@_curr_unit_tl
@@ -9691,7 +10349,6 @@ and the derived file cooking-units.sty.
% (just a number), \enquote{range} and \enquote{fraction}.
% \begin{macrocode}
\@@_culang_def_base:nnn { pluraltest } { normal } { \c_@@_no_translation_str }
-\@@_culang_def_base:nnn { pluraltest } { range } { \c_@@_no_translation_str }
\@@_culang_def_base:nnn { pluraltest } { fraction } { \c_@@_no_translation_str }
% \end{macrocode}
% \end{macro}
@@ -9703,22 +10360,16 @@ and the derived file cooking-units.sty.
% For ranges take the last value, for fractions make sure there are no mixed fractions
% and that the nominator is equal to $1$.
% \begin{macrocode}
-\cs_set:cpn { @@_pluraltest_normal_ \c_@@_no_translation_str :N } #1
+\cs_set:cpn { @@_pluraltest_normal_ \c_@@_no_translation_str :n } #1
{
\fp_compare:nNnTF {#1} = { 1.0 }
{ \bool_set_true:N } { \bool_set_false:N }
\l_@@_cutext_use_single_bool
}
-\cs_set:cpn { @@_pluraltest_range_ \c_@@_no_translation_str :NN } #1#2
- {
- \fp_compare:nNnTF {#2} = { 1.0 }
- { \bool_set_true:N } { \bool_set_false:N }
- \l_@@_cutext_use_single_bool
- }
-\cs_set:cpn { @@_pluraltest_fraction_ \c_@@_no_translation_str :NNN } #1#2#3
+\cs_set:cpn { @@_pluraltest_fraction_ \c_@@_no_translation_str :nnn } #1#2#3
{
- \tl_if_empty:NTF #1
- { \fp_compare:nNnTF {#2} = { 1.0 } } { \use_ii:nn }
+ \tl_if_empty:nTF {#1}
+ { \fp_compare:nNnTF {#2} = { \c_one_fp } } { \use_ii:nn }
{ \bool_set_true:N } { \bool_set_false:N }
\l_@@_cutext_use_single_bool
}
@@ -9731,17 +10382,12 @@ and the derived file cooking-units.sty.
\cs_new:Npn \@@_pluraltest_define:nn #1#2
{
\@@_culang_def_for:nnnn {#1} { pluraltest } { normal } {#1}
- \cs_set:cpn { @@_pluraltest_normal_ #1 :N } ##1 {#2}
- }
-\cs_new:Npn \@@_pluraltest_define_range:nn #1#2
- {
- \@@_culang_def_for:nnnn {#1} { pluraltest } { range } {#1}
- \cs_set:cpn { @@_pluraltest_range_ #1 :NN } ##1##2 {#2}
+ \cs_set:cpn { @@_pluraltest_normal_ #1 :n } ##1 {#2}
}
\cs_new:Npn \@@_pluraltest_define_fraction:nn #1#2
{
\@@_culang_def_for:nnnn {#1} { pluraltest } { fraction } {#1}
- \cs_set:cpn { @@_pluraltest_fraction_ #1 :NNN } ##1##2##3 {#2}
+ \cs_set:cpn { @@_pluraltest_fraction_ #1 :nnn } ##1##2##3 {#2}
}
% \end{macrocode}
% \end{macro}
@@ -9760,15 +10406,9 @@ and the derived file cooking-units.sty.
{ \bool_set_true:N } { \bool_set_false:N }
\l_@@_cutext_use_single_bool
}
-\@@_pluraltest_define_range:nn { French }
- {
- \fp_compare:nNnTF { \fp_abs:n {#2} } < { 2.0 }
- { \bool_set_true:N } { \bool_set_false:N }
- \l_@@_cutext_use_single_bool
- }
\@@_pluraltest_define_fraction:nn { French }
{
- \quark_if_nil:NTF #1
+ \tl_if_empty:nTF {#1}
{ \fp_compare:nNnTF { #2/#3 } < { 2.0 } }
{ \fp_compare:nNnTF { #1 + #2/#3 } < { 2.0 } }
{ \bool_set_true:N } { \bool_set_false:N }
@@ -9805,13 +10445,15 @@ and the derived file cooking-units.sty.
\quark_if_recursion_tail_stop_do:nn {#2}
{ \msg_error:nn { cooking-units } { missing-argument } }
\seq_if_in:NnTF \g_@@_allowed_special_keys_seq {#1}
- { \@@_culang_def_for:Vnnn \l_@@_language_tl { name } }
- {
+ {
+ \str_if_eq:nnTF { cutext-range-sign } {#1}
+ { \@@_culang_def_for:Vnnn \l_@@_language_tl { name } { cutext-range-phrase } {#2} }
+ { \@@_culang_def_for:Vnnn \l_@@_language_tl { name } {#1} {#2} }
+ }{
\@@_error_if_unit_not_defined:nTF {#1}
- { \use_none:nn }
- { \@@_culang_def_for:Vnnn \l_@@_language_tl { unit-symbol } }
+ { \use_none:nn {#1} {#2} }
+ { \@@_culang_def_for:Vnnn \l_@@_language_tl { unit-symbol } {#1} {#2} }
}
- {#1} {#2}
\@@_cuprint_define_printed_unit:nn
}
% \end{macrocode}
@@ -9822,7 +10464,7 @@ and the derived file cooking-units.sty.
%
%
%
-% \begin{macro}{ }
+% \begin{macro}{ phrase }
% Defining phrases. Phrases (sadly) depend on the language.
% The idea is going to be: Each language has its own property list
% which is going to be stored for each language. Later, the property
@@ -9834,7 +10476,7 @@ and the derived file cooking-units.sty.
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{ }
+% \begin{macro}{ \@@_culang_get_phrase_prop:N }
% \begin{macrocode}
\cs_new:Npn \@@_culang_get_phrase_prop:N #1
{
@@ -9858,14 +10500,17 @@ and the derived file cooking-units.sty.
% Defining some phrases. This command is just a wrapper for the
% subcommand.
% \begin{macrocode}
+\tl_new:N \l_@@_phrase_tmp_tl
+\tl_new:N \l_@@_phrase_tmpb_tl
+\seq_new:N \l_@@_phrase_full_seq
\NewDocumentCommand \cudefinephrase { m m }
{
- \@@_new_cuphrase_add:nn {#1} {#2}
+ \@@_rf_cuphrase_add:nn {#1} {#2}
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{ \@@_new_cuphrase_add:nn }
+% \begin{macro}{ \@@_rf_cuphrase_add:nn }
% |#1| is the language, |#2| is something to be parsed.
% I am also not quite happy with this construction, but it works.
%
@@ -9888,28 +10533,25 @@ and the derived file cooking-units.sty.
%
% Then store the variables and thats it.
% \begin{macrocode}
-\cs_new:Npn \@@_new_cuphrase_add:nn #1#2
+\cs_new:Npn \@@_rf_cuphrase_add:nn #1#2
{
\tl_set:Nn \l_@@_language_tl {#1}
\@@_culang_if_translation_exists_for:VnnTF \l_@@_language_tl
{ phrase } { phrase-lang }
{
-% \@@_culang_let_for:VnnN \l_@@_language_tl { phrase } { phrase-prop }
-% \l_@@_phrase_prop
\prop_set_eq:Nc \l_@@_phrase_prop { l_@@_ \l_@@_language_tl _phrase_prop }
\prop_get:NnN \l_@@_phrase_prop { seq } \l_@@_phrase_numbers_seq
}{
\prop_new:c { l_@@_ \l_@@_language_tl _phrase_prop }
\prop_clear:N \l_@@_phrase_prop
\seq_clear:N \l_@@_phrase_numbers_seq
+ \seq_clear:N \l_@@_phrase_full_seq
}
\@@_sanitize_arrows:n {#2}
\@@_parse_phrase:V \l_@@_sanitise_tl
- \@@_new_cuphrase_sort_sequence:N \l_@@_phrase_numbers_seq
+ \@@_rf_cuphrase_sort_sequence:N \l_@@_phrase_numbers_seq
\prop_put:NnV \l_@@_phrase_prop { seq } \l_@@_phrase_numbers_seq
\prop_set_eq:cN { l_@@_ \l_@@_language_tl _phrase_prop } \l_@@_phrase_prop
-% \@@_culang_def_for:VnnV
-% \l_@@_language_tl { phrase } { phrase-prop } \l_@@_phrase_prop
\@@_culang_def_for:VnnV
\l_@@_language_tl { phrase } { phrase-lang } \l_@@_language_tl
}
@@ -9936,6 +10578,8 @@ and the derived file cooking-units.sty.
\@@_set_state_to:n { normal }
\bool_set_false:N \l_@@_tmpa_bool
\tl_clear:N \l_@@_curr_unit_tl
+ \tl_clear:N \l_@@_phrase_tmp_tl
+ \tl_clear:N \l_@@_phrase_tmpb_tl
\prop_clear:N \l_@@_tmpa_prop
\@@_parse_stuff_mandatories_plus_star:nn
}
@@ -9973,13 +10617,20 @@ and the derived file cooking-units.sty.
{
\int_set:Nn \l_@@_tmpa_int {#1}
\tl_set:NV \l_@@_curr_unit_tl \l_@@_tmpa_int
- \bool_if:NT \l_@@_tmpa_bool
- { \tl_put_left:Nn \l_@@_curr_unit_tl { - } }
+ \tl_put_right:Nx \l_@@_phrase_tmpb_tl { { \l_@@_curr_unit_tl } }
}{
\@@_set_state_to:n { error }
\msg_error:nnn { cooking-units} { phrase-unit-not-an-integer } {#1}
}
+ \bool_if:NTF \l_@@_tmpa_bool
+ {
+ \tl_put_right:Nn \l_@@_phrase_tmpb_tl { { \c_true_bool } }
+ }{
+ \tl_put_right:Nn \l_@@_phrase_tmpb_tl { { \c_false_bool } }
+ }
+%
\prop_put:Nnn \l_@@_tmpa_prop { } {#2}
+ \tl_put_right:Nn \l_@@_phrase_tmp_tl { {#2} }
\prop_put:NnV \l_@@_tmpa_prop { - singlebool } \l_@@_tmpa_bool
\@@_parse_phrase_optionals:n {#2}
}
@@ -10003,7 +10654,7 @@ and the derived file cooking-units.sty.
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{ \@@_new_cuphrase_add:nn }
+% \begin{macro}{ \@@_parse_stuff_plural:w }
% Store the pluarl form in the property list.
% Next, parse gender. Pretty much the same as before. By default we use
% a male gender.
@@ -10011,6 +10662,7 @@ and the derived file cooking-units.sty.
\cs_new:Npn \@@_parse_stuff_plural:w [#1]
{
\prop_put:Nnn \l_@@_tmpa_prop { -pl } {#1}
+ \tl_put_right:Nn \l_@@_phrase_tmp_tl { {#1} }
\peek_remove_spaces:n
{
\peek_meaning:NTF <
@@ -10021,7 +10673,7 @@ and the derived file cooking-units.sty.
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{ \@@_new_cuphrase_add:nn }
+% \begin{macro}{ \@@_parse_stuff_gender:w }
% Check if the gender-input is correct, add it to the property list.
% Then finish the cycle and start a new one.
% \begin{macrocode}
@@ -10029,8 +10681,12 @@ and the derived file cooking-units.sty.
{
\@@_if_gender_error:nTF {#1}
{ \@@_set_state_to:n { error } }
- { \prop_put:Nnn \l_@@_tmpa_prop { -gender } {#1} }
- \@@_parse_phrase_finish_cycle_and_start_anew:V \l_@@_curr_unit_tl
+ {
+ \prop_put:Nnn \l_@@_tmpa_prop { -gender } {#1}
+ \tl_put_right:Nn \l_@@_phrase_tmp_tl { {#1} }
+ }
+ \@@_parse_phrase_finish_cycle_and_start_anew:VVV
+ \l_@@_curr_unit_tl \l_@@_phrase_tmp_tl \l_@@_phrase_tmpb_tl
}
% \end{macrocode}
% \end{macro}
@@ -10042,42 +10698,42 @@ and the derived file cooking-units.sty.
% As an example, if we had \enquote{12}, |\l_@@_phrase_prop| would then contain
% the keys \enquote{12}, \enquote{12-pl}, \enquote{12-gender}, \enquote{12-singlebool}.
% \begin{macrocode}
-\cs_new:Npn \@@_parse_phrase_finish_cycle_and_start_anew:n #1
+\cs_new:Npn \@@_parse_phrase_finish_cycle_and_start_anew:nnn #1#2#3
{
\@@_if_state_equal:nT { normal }
{
- \seq_if_in:NnF \l_@@_phrase_numbers_seq {#1}
- { \seq_put_right:Nn \l_@@_phrase_numbers_seq {#1} }
+ \seq_if_in:NnF \l_@@_phrase_numbers_seq {#3}
+ { \seq_push:Nn \l_@@_phrase_numbers_seq {#3} }
\prop_map_inline:Nn \l_@@_tmpa_prop
{
- \prop_put:Nnn \l_@@_phrase_prop { #1 ##1 } {##2}
+ \prop_put:Nnn \l_@@_phrase_prop { #3 ##1 } {##2}
}
+ \prop_put:Nnn \l_@@_phrase_prop { #3 -all } {#2}
}
\@@_parse_phrase_start_cycle:
}
-\cs_generate_variant:Nn \@@_parse_phrase_finish_cycle_and_start_anew:n { V }
+\cs_generate_variant:Nn \@@_parse_phrase_finish_cycle_and_start_anew:nnn { VVV }
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{ \@@_new_cuphrase_sort_sequence:N }
+% \begin{macro}{ \@@_rf_cuphrase_sort_sequence:N }
% Sorting the sequence of numbers from highest to lowest (in absolute values).
% And if two absolute values are equal, negative numbers are preferred over
% positive ones.
% \begin{macrocode}
-\cs_new:Npn \@@_new_cuphrase_sort_sequence:N #1
+\cs_new:Npn \@@_rf_cuphrase_sort_sequence:N #1
{
\seq_sort:Nn #1
{
- \int_set:Nn \l_@@_tmpa_int { \int_abs:n {##1} }
- \int_set:Nn \l_@@_tmpb_int { \int_abs:n {##2} }
+ \int_set:Nn \l_@@_tmpa_int { \use_i:nn ##1 }
+ \int_set:Nn \l_@@_tmpb_int { \use_i:nn ##2 }
\int_compare:nNnTF { \l_@@_tmpa_int } < { \l_@@_tmpb_int }
{ \sort_return_swapped: }
{
\int_compare:nNnTF { \l_@@_tmpa_int } > { \l_@@_tmpb_int }
{ \sort_return_same: }
{
- \prop_get:NnN \l_@@_phrase_prop { ##1 - singlebool } \l_@@_tmpa_int
- \int_compare:nNnTF { \l_@@_tmpa_int } = { 1 }
+ \bool_if:nTF { \use_ii:nn ##1 }
{ \sort_return_same: }
{ \sort_return_swapped: }
}
@@ -10099,7 +10755,7 @@ and the derived file cooking-units.sty.
%
% \subsection{Old stuff}
%
-% \begin{macro} { }
+% \begin{macro} { \@@_old_cutext:nnn }
% \begin{macrocode}
\cs_new:Npn \@@_old_cutext:nnn #1#2#3
{
@@ -10737,12 +11393,6 @@ and the derived file cooking-units.sty.
} ,
round-precision = 2 ,
}
-
-
-% \NewDocumentCommand \cudefinekeys { } { \cudefinekeys }
-
-
-
%\AtBeginDocument{
%\keys_define:nn { cooking-units }
% {
diff --git a/macros/latex/contrib/cooking-units/cooking-units.pdf b/macros/latex/contrib/cooking-units/cooking-units.pdf
index 7360d46430..ca43bc383d 100644
--- a/macros/latex/contrib/cooking-units/cooking-units.pdf
+++ b/macros/latex/contrib/cooking-units/cooking-units.pdf
Binary files differ
diff --git a/macros/latex/contrib/hereapplies/ChangeLog.md b/macros/latex/contrib/hereapplies/ChangeLog.md
index a9b0b45d62..ce47739407 100644
--- a/macros/latex/contrib/hereapplies/ChangeLog.md
+++ b/macros/latex/contrib/hereapplies/ChangeLog.md
@@ -2,6 +2,13 @@ Change Log
==========
+## 1.0.1 (2022-12-11)
+
+Changes:
+
+* Fix issue [#1](https://github.com/madmurphy/hereapplies.sty/issues/1)
+
+
## 1.0.0 (2022-09-13)
Changes:
diff --git a/macros/latex/contrib/hereapplies/hereapplies-doc.pdf b/macros/latex/contrib/hereapplies/hereapplies-doc.pdf
index bde2099bc6..56747de4a0 100644
--- a/macros/latex/contrib/hereapplies/hereapplies-doc.pdf
+++ b/macros/latex/contrib/hereapplies/hereapplies-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/hereapplies/hereapplies-example.pdf b/macros/latex/contrib/hereapplies/hereapplies-example.pdf
index 9707efc0cb..e2f286dbb2 100644
--- a/macros/latex/contrib/hereapplies/hereapplies-example.pdf
+++ b/macros/latex/contrib/hereapplies/hereapplies-example.pdf
Binary files differ
diff --git a/macros/latex/contrib/hereapplies/hereapplies.sty b/macros/latex/contrib/hereapplies/hereapplies.sty
index daf7a90ede..222858bc0b 100644
--- a/macros/latex/contrib/hereapplies/hereapplies.sty
+++ b/macros/latex/contrib/hereapplies/hereapplies.sty
@@ -8,7 +8,7 @@
%
% https://github.com/madmurphy/hereapplies.sty
%
-% Version 1.0.0
+% Version 1.0.1
%
% Copyright (C) 2022 madmurphy <madmurphy333@gmail.com>
%
@@ -66,7 +66,7 @@
% \end{document}
%
%
-\ProvidesPackage{hereapplies}[2022/09/13 Here Applies]
+\ProvidesPackage{hereapplies}[2022/12/11 Here Applies]
\RequirePackage{hyperref}
\RequirePackage{refcount}
%
@@ -142,6 +142,14 @@
%
% Assign a unique number to each unlabeled occurrence of an identifier
\newcounter{@ha@unlabeled@counter}
+% Populate the .hax file when the document reaches the end
+\AtEndDocument{%
+ % Do we have any content?
+ \ifdefined\@ha@commons@@haxcontent%
+ % We do - export it
+ \addtocontents{hax}{\@ha@commons@@haxcontent}%
+ \fi%
+}
%
%
% Macro `\@ha@makepagelist{hypermacro}{labels}`
@@ -308,10 +316,6 @@
{\endlinechar=\m@ne\@starttoc{hax}}%
% Initialize the content to export to the .hax file
\gdef\@ha@commons@@haxcontent{}%
- % Export the content when the document reaches the end
- \AtEndDocument{%
- \addtocontents{hax}{\@ha@commons@@haxcontent}%
- }%
\fi%
% Was a .hax file already exported during a previous run?
\ifcsname @ha@prop@@labels@#1\endcsname\else%
diff --git a/macros/latex/contrib/hereapplies/package.json b/macros/latex/contrib/hereapplies/package.json
index 693844e7e1..8949cd7300 100644
--- a/macros/latex/contrib/hereapplies/package.json
+++ b/macros/latex/contrib/hereapplies/package.json
@@ -1,6 +1,6 @@
{
"name": "hereapplies.sty",
- "version": "1.0.0",
+ "version": "1.0.1",
"description": "A LaTeX package for referencing groups of pages that share something in common",
"homepage": "https://www.ctan.org/pkg/hereapplies",
"author": "madmurphy",
diff --git a/macros/latex/contrib/quantumarticle/README.md b/macros/latex/contrib/quantumarticle/README.md
index 1661c55bae..fdfd0f4eff 100644
--- a/macros/latex/contrib/quantumarticle/README.md
+++ b/macros/latex/contrib/quantumarticle/README.md
@@ -2,7 +2,7 @@
# LaTeX document class for Quantum
-This is version 6.0 of `quantumarticle`, the document class for typesetting articles in Quantum - the open journal for quantum science.
+This is version 6.1 of `quantumarticle`, the document class for typesetting articles in Quantum - the open journal for quantum science.
[Click here](https://raw.githubusercontent.com/quantum-journal/quantum-journal/master/quantumarticle.cls) to download the latest stable version.
@@ -58,6 +58,12 @@ In addition, this document class comes bundled with two new extras (currently in
## Changelog
+### New in v6.1
+
+* Fix for long urls in bibliography items not breaking correctly when using the Quantum bibliography style.
+* Added explanation of the difference between regular and [shortDOIs](https://shortdoi.org/) and why the latter cannot be used in bibliographies
+* Further increased hyphen penalty of title
+
### New in v6.0
* introduced the Quantum bibstyle `quantum.bst` together with the demo file `quantum-bibliographystyle-demo`
diff --git a/macros/latex/contrib/quantumarticle/quantum-bibliographystyle-demo.bib b/macros/latex/contrib/quantumarticle/quantum-bibliographystyle-demo.bib
index 142854b4f9..c18bcb85ee 100644
--- a/macros/latex/contrib/quantumarticle/quantum-bibliographystyle-demo.bib
+++ b/macros/latex/contrib/quantumarticle/quantum-bibliographystyle-demo.bib
@@ -1,5 +1,6 @@
preamble{"\DoNotMakeWarningsErrors"}
preamble{"\MakeDoiLinksExplicit"}
+@preamble{"\PageBackRef"}
@article{andreas_test_case,
title = {Toolbox for Reconstructing Quantum Theory from Rules on Information Acquisition},
@@ -530,4 +531,3 @@ article{article_missing_comma,
url = {xkcd.com},
publisher = {The name of the publisher}
}
-
diff --git a/macros/latex/contrib/quantumarticle/quantum-bibliographystyle-demo.pdf b/macros/latex/contrib/quantumarticle/quantum-bibliographystyle-demo.pdf
index ce57ea2cd9..a27f199c6e 100644
--- a/macros/latex/contrib/quantumarticle/quantum-bibliographystyle-demo.pdf
+++ b/macros/latex/contrib/quantumarticle/quantum-bibliographystyle-demo.pdf
Binary files differ
diff --git a/macros/latex/contrib/quantumarticle/quantum-bibliographystyle-demo.tex b/macros/latex/contrib/quantumarticle/quantum-bibliographystyle-demo.tex
index 62cd5d9ffa..46675601cd 100644
--- a/macros/latex/contrib/quantumarticle/quantum-bibliographystyle-demo.tex
+++ b/macros/latex/contrib/quantumarticle/quantum-bibliographystyle-demo.tex
@@ -240,7 +240,7 @@ If you want to turn off these errors raised from bibtex warnings, include the en
\end{verbatim*}
anywhere in the \emph{bibliography} (i.e. the \texttt{.bib} file) like one would include a reference.
-\emph{Note:} Commenting the above \texttt{@preamble} entry out via \texttt{\%} will \emph{not} deactivate it as bibtex does not attribute commenting functionality to \texttt{\%}. Instead, you can simply remove the leading \texttt{@}, as is currently done in the \texttt{.bib} file accompanying this document (\texttt{quantum\_bst\_demo.bib}).
+\emph{Note:} Commenting the above \texttt{@preamble} entry out via \texttt{\%} will \emph{not} deactivate it as bibtex does not attribute commenting functionality to \texttt{\%}. Instead, you can simply remove the leading \texttt{@}, as is currently done in the \texttt{.bib} file accompanying this document (\texttt{quantum-bibliographystyle-demo.bib}).
\paragraph{Explicit DOI links}
By default, and if the entry \texttt{doi} is provided for a \texttt{bibitem}, the quantum bibstyle will link to the DOI via the \texttt{journal/volume/issue} part of the citation for articles and via the a) \texttt{volume/chapter/pages} or b) \texttt{number/series} or c) \texttt{publisher} part for books, with a) taking precedence if provided over b) taking precedence if provided over c).
@@ -250,6 +250,15 @@ This behaviour can be changed to output explicit DOI links instead. To do so, in
\end{verbatim*}
anywhere in the \emph{bibliography} (i.e. the \texttt{.bib} file) like one would include a reference.
+\paragraph{Indicator for page backreferences}
+The \texttt{hyperref} package, for example, allows for the option \texttt{pagebackref}, which adds links to each bibliography entry that point from the entry to its citations throughout the document.
+When this is used, it may be nice to have a word towards the end of the entry that indicates what the -- otherwise bare -- numbers added to the entry mean.
+The word ``Appearances'' can be added automatically by including the entry
+\begin{verbatim*}
+@preamble{"\PageBackRef"}
+\end{verbatim*}
+anywhere in the \emph{bibliography} (i.e. the \texttt{.bib} file) like one would include a reference.
+
\paragraph{Compression}
By default, the quantum bibstyle prints the numbers for all references separately and does not compress
a range of citations, like so: [1, 6, 7, 8, 11, 12, 13, 14].
diff --git a/macros/latex/contrib/quantumarticle/quantum-template.pdf b/macros/latex/contrib/quantumarticle/quantum-template.pdf
index 7c571036dd..208d6b0721 100644
--- a/macros/latex/contrib/quantumarticle/quantum-template.pdf
+++ b/macros/latex/contrib/quantumarticle/quantum-template.pdf
Binary files differ
diff --git a/macros/latex/contrib/quantumarticle/quantum-template.tex b/macros/latex/contrib/quantumarticle/quantum-template.tex
index 6f6eda81dc..3094088515 100644
--- a/macros/latex/contrib/quantumarticle/quantum-template.tex
+++ b/macros/latex/contrib/quantumarticle/quantum-template.tex
@@ -101,7 +101,7 @@ Please do not mix them with your references.
Citations to other works should appear in the References section at the end of the work.
\begin{theorem}[DOI links are required]
- Important: As Quantum is a member of Crossref, all references to works that have a DOI must be hyperlinked according to the DOI. Those links must start with \texttt{https://doi.org/} (preferred), or \texttt{http://dx.doi.org/}. Direct links to the website of the publisher are not sufficient.
+ Important: As Quantum is a member of Crossref, all references to works that have a DOI must be hyperlinked according to the DOI. Those links must start with \texttt{https://doi.org/} (preferred), or \texttt{http://dx.doi.org/}. Direct links to the website of the publisher are not sufficient. Also so-called \href{https://shortdoi.org/}{shortDOIs} are unfortunately not accepted by Crossref (despite shortDOI being their own service). Thus all authors must use regular full DOIs that usually start with \mbox{``10.''} as in \url{https://doi.org/10.1103/PhysRevLett.120.103201} instead of the associated shortDOI starting with \mbox{``10/''} as in \url{https://dx.doi.org/10/gc5sj2}.
\end{theorem}
This can be achieved in several ways, depending on how you are formatting your bibliography.
diff --git a/macros/latex/contrib/quantumarticle/quantum.bst b/macros/latex/contrib/quantumarticle/quantum.bst
index 8a39e901cd..96ed099499 100644
--- a/macros/latex/contrib/quantumarticle/quantum.bst
+++ b/macros/latex/contrib/quantumarticle/quantum.bst
@@ -80,6 +80,9 @@ INTEGERS
explicit.doi.links
% - whether to raise compilation errors from (many) BibTeX warnings
warnings.are.errors
+ % - whether to append the word "Appearances" to entries, for hyperref's
+ % pagebackref option
+ pagebackref
% pointers
nameptr
@@ -366,6 +369,10 @@ FUNCTION {fin.entry}
% Args: str - Current string to write to the bbl file
% Returns:
add.period$
+ pagebackref
+ { " Appearances:~" * }
+ 'skip$
+ if$
write$
newline$
}
@@ -600,11 +607,11 @@ FUNCTION { format.arxiv.hyperlink }
% Args: str - The string to extract the handle from
% Returns: str - The extracted arXiv handle
% If the string starts with "arxiv:" or "arxiv" (or any capitalized version of these),
- % the length-9 handle is extracted, otherwise the original string is returned.
+ % the length-10 handle is extracted, otherwise the original string is returned.
duplicate$ #1 #6 substring$ "l" change.case$ "arxiv:" =
- { #7 #9 substring$ }
+ { #7 #10 substring$ }
{ duplicate$ #1 #5 substring$ "l" change.case$ "arxiv" =
- { #6 #9 substring$ }
+ { #6 #10 substring$ }
'skip$
if$
}
@@ -1135,7 +1142,11 @@ FUNCTION {format.code}
% including a link to the repository
code empty$
{ "" }
- { " code:~\href{" code * "}{" * extract.repo * format.version * format.commit * "}" * }
+ { code "l" change.case$ "github" contains.substring
+ { " code:~\href{" code * "}{" * extract.repo * format.version * format.commit * "}" * }
+ { " code:~\href{" code * "}{" * code * "}" * }
+ if$
+ }
if$
}
@@ -1147,7 +1158,7 @@ FUNCTION {format.url}
shorturl empty$
{ url empty$
{ "" }
- { " url:~\href{" url * "}{" * "https://" #8 url chop.word * "}" * }
+ { " url:~\url{" url * "}" * }
if$
}
{ " url:~\href{" url * "}{" * "https://" #8 shorturl chop.word * "}" * }
@@ -1740,6 +1751,7 @@ FUNCTION {begin.bib}
% "Booleans" for the global config of DOI link printing and handling of warnings.
#0 'explicit.doi.links :=
#1 'warnings.are.errors :=
+ #0 'pagebackref :=
preamble$ empty$
'skip$
{ preamble$ "MakeDoiLinksExplicit" contains.substring
@@ -1754,6 +1766,12 @@ FUNCTION {begin.bib}
}
{ #1 'warnings.are.errors := }
if$
+ preamble$ "PageBackRef" contains.substring
+ { #1 'pagebackref :=
+ "\newcommand{\PageBackRef}{}" write$ newline$
+ }
+ { #0 'pagebackref := }
+ if$
preamble$ write$ newline$
}
if$
diff --git a/macros/latex/contrib/quantumarticle/quantumarticle.cls b/macros/latex/contrib/quantumarticle/quantumarticle.cls
index c5ae1a8ccd..a276133fca 100644
--- a/macros/latex/contrib/quantumarticle/quantumarticle.cls
+++ b/macros/latex/contrib/quantumarticle/quantumarticle.cls
@@ -6,7 +6,7 @@
%% Copyright 2016,2017,2018,2019,2020,2021,2022
%% Verein zur Förderung des Open Access Publizierens in den Quantenwissenschaften
%% (https://quantum-journal.org/about/)
-%%
+%%
%% It is derived from `article.cls' available from
%% https://www.ctan.org/pkg/article
%%
@@ -17,11 +17,11 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
-%%
+%%
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\def\quantumarticleversion{6.0}
+\def\quantumarticleversion{6.1}
\ProvidesClass{quantumarticle}
-[2021/12/07 v\quantumarticleversion
+[2022/11/08 v\quantumarticleversion
class for Quantum - the open journal for quantum science (https://quantum-journal.org)]
\RequirePackage{xkeyval}
\RequirePackage{etoolbox}
@@ -91,7 +91,7 @@ class for Quantum - the open journal for quantum science (https://quantum-journa
\DeclareOptionX{titlepage}{\toggletrue{@titlepage}}
\DeclareOptionX{notitlepage}{\togglefalse{@titlepage}}
-\DeclareOptionX{onecolumn}{\boolfalse{@twocolumn}}
+\DeclareOptionX{onecolumn}{\boolfalse{@twocolumn}}
\DeclareOptionX{twocolumn}{\booltrue{@twocolumn}}
\DeclareOptionX{leqno}{\input{leqno.clo}}
@@ -232,7 +232,7 @@ class for Quantum - the open journal for quantum science (https://quantum-journa
\ExecuteOptionsX{10pt,oneside,twocolumn,notitlepage,final}
\ProcessOptionsX
% Throw an error if no paper size was manually specified
-% Simply defaulting to a4paper gives inconsistent behaviour when submitting to the arXiv as the arXiv seems to sometimes set a4paper and sometimes letterpaper, maybe depending on the geographic region of the submitter?
+% Simply defaulting to a4paper gives inconsistent behaviour when submitting to the arXiv as the arXiv seems to sometimes set a4paper and sometimes letterpaper, maybe depending on the geographic region of the submitter?
\iftoggle{@papersizespecified}
{
}
@@ -270,7 +270,7 @@ class for Quantum - the open journal for quantum science (https://quantum-journa
{%
\@pdfoutputerror%
}
- }
+ }
\ifinlist{#2}{\@packageblacklist}{
\ifcsdef{@packageblacklisterrormessage#2}{
\ClassError{quantumarticle}{\csname @packageblacklisterrormessage#2\endcsname}{}}{}
@@ -293,7 +293,7 @@ class for Quantum - the open journal for quantum science (https://quantum-journa
\@highpenalty 301
\AfterEndPreamble{
- % avoid use of today
+ % avoid use of today
\ifcsdef{today}
{
\iftoggle{@allowtoday}
@@ -354,9 +354,9 @@ class for Quantum - the open journal for quantum science (https://quantum-journa
\ltx@ifpackageloaded{ltxgrid}{
\@ifpackagelater{ltxgrid}{2020/10/03}
- {}% on 2020/10/03 ltxgrid 4.2e (or 4.2d?) was released, which not only fixes the bug we try to work around here but also the fix below causes an error from this version on.
+ {}% on 2020/10/03 ltxgrid 4.2e (or 4.2d?) was released, which not only fixes the bug we try to work around here but also the fix below causes an error from this version on.
{
- %repair what ltxutils has destroyed (see https://tex.stackexchange.com/questions/343856/biblatex-produces-incomplete-bcf-with-biber-backend)
+ %repair what ltxutils has destroyed (see https://tex.stackexchange.com/questions/343856/biblatex-produces-incomplete-bcf-with-biber-backend)
\patchcmd\enddocument
{\deadcycles}
{\let\AfterEndDocument\@firstofone
@@ -481,7 +481,7 @@ class for Quantum - the open journal for quantum science (https://quantum-journa
\noindent%
\begin{minipage}{\textwidth}%
\iftoggle{@titlepage}{\centering}{}%
- \noindent{\huge\hyphenpenalty=5000 \@printtitle\par}%
+ \noindent{\huge\hyphenpenalty=50000 \@printtitle\par}%
\end{minipage}%
\vskip 1.5em%
\iftoggle{@titlepage}{}{\begin{flushleft}}%
@@ -762,7 +762,7 @@ class for Quantum - the open journal for quantum science (https://quantum-journa
\@starttoc{toc}%
}
-\newcommand*\l@part[2]{%
+\newcommand*\l@part[2]{%
\ifnumgreater{\c@tocdepth}{-2}{\relax
\addpenalty\@secpenalty
\addvspace{2.25em \@plus\p@}%
@@ -960,8 +960,8 @@ class for Quantum - the open journal for quantum science (https://quantum-journa
\pagenumbering{arabic}
\ifbool{@twoside}{}{\raggedbottom}
\ifbool{@twocolumn}{
- \twocolumn
- \sloppy
+ \twocolumn
+ \sloppy
\flushbottom
}{
\onecolumn
@@ -1185,7 +1185,7 @@ class for Quantum - the open journal for quantum science (https://quantum-journa
% email, homepage, and thanks handling
% be careful - this section is highly sensitive to the positioning of the % marks
\def\@printauthorextrainfo#1{
- \csname @authorname#1\endcsname:
+ \csname @authorname#1\endcsname:
\ifcsdef{author#1emails}
{%
\forlistcsloop{\@@spaceafter}{author#1emails}%
@@ -1302,7 +1302,7 @@ class for Quantum - the open journal for quantum science (https://quantum-journa
% \fill[xshift=.95\@eQ] (0,0.5) node (eastend) {} -- ++(-\@sl,0.5) -- ++(-\@xt,0) -- ++(\@sl,-0.5) -- ++(-\@sl,-0.5) -- ++(\@xt,0) -- cycle;
% \begin{scope}
% \clip[xshift=.95\@eQ,overlay] (0.5\@xt,0.5) -- ++(-\@sl,-0.5) -- (0,0) -- (0.5\@xt,0.5) ++(-2\@xt,0) -- ++(-\@sl,-0.5) -- ($(-2*\@sl,0)$) -- ++(\@sl,0.5) --cycle;
- % \fill[xshift=.95\@eQ] (0,0) -- ++(-\@sl,0.5) -- ++(-\@xt,0) -- ++(\@sl,-0.5) -- cycle;
+ % \fill[xshift=.95\@eQ] (0,0) -- ++(-\@sl,0.5) -- ++(-\@xt,0) -- ++(\@sl,-0.5) -- cycle;
% \end{scope}
\node[overlay,anchor=base west,opacity=0] {Q};
% <> leg in front
@@ -1321,7 +1321,7 @@ class for Quantum - the open journal for quantum science (https://quantum-journa
\fill[shift={($(current bounding box.south east)+(0.110\@eQ,0)$)}] (\@cw,0) -- ++($(0,\@ch)-(0,\@rl)$) to[out=90,in=0,looseness=1.22] ++($(-1.22\@rl,\@rl)$) -- ($(\@w,\@ch)$) -- ++(0,-\@w) -- ($(1.22\@rl,\@ch-\@w)$) to[out=0,in=90,looseness=1.3,rounded corners=0] ($(\@cw,\@ch)-(\@w,\@rl)$) -- ($(\@cw,0)-(\@w,-\@w)$) --
($(\@rl,\@w)$) to[out=180,in=-100,looseness=0.95,rounded corners=0] ($(1.05\@w,0.33\@ch)$) to[out=80,in=176,looseness=1.0] ($(\@cw-\@w,0.47\@ch)$) to[rounded corners=0] ++(0,-\@cr) to[rounded corners=0] ++($(0,\@cr+\@w)$) to[out=176,in=0] ($(1.2\@rl,0.48\@ch)+(0,\@w)$) to[out=180,in=90,rounded corners=0] ($(0.05\@w,0.33\@ch)$) to[out=-90,in=180,looseness=1.1,rounded corners=0] ($(\@rl,0)$) -- cycle;
\node[overlay,anchor=base east,opacity=0] at (current bounding box.south east) {a};
- % \fill[shift={($(current bounding box.south east)+(0.110\@eQ,0)$)}] (\@cw,0) -- ++($(0,\@ch)-(0,\@rl)$) to[out=90,in=0,looseness=1.22] ++($(-1.22\@rl,\@rl)$) -- ($(\@w,\@ch-0.1\@w)$) -- ++(0.1\@w,-\@w) -- ($(1.22\@rl,\@ch-\@w)$) to[out=0,in=90,looseness=1.3,rounded corners=0] ($(\@cw,\@ch)-(\@w,\@rl)$) -- ($(\@cw,0)-(\@w,-\@w)$) --
+ % \fill[shift={($(current bounding box.south east)+(0.110\@eQ,0)$)}] (\@cw,0) -- ++($(0,\@ch)-(0,\@rl)$) to[out=90,in=0,looseness=1.22] ++($(-1.22\@rl,\@rl)$) -- ($(\@w,\@ch-0.1\@w)$) -- ++(0.1\@w,-\@w) -- ($(1.22\@rl,\@ch-\@w)$) to[out=0,in=90,looseness=1.3,rounded corners=0] ($(\@cw,\@ch)-(\@w,\@rl)$) -- ($(\@cw,0)-(\@w,-\@w)$) --
% ($(\@rl,\@w)$) to[out=180,in=-100,looseness=0.95,rounded corners=0] ($(1.05\@w,0.33\@ch)$) to[out=80,in=176,looseness=1.0] ($(\@cw-\@w,0.47\@ch)$) to[rounded corners=0] ++(0,-\@cr) to[rounded corners=0] ++($(0,\@cr+\@w)$) to[out=176,in=0] ($(1.2\@rl,0.48\@ch)+(0,\@w)$) to[out=180,in=90,rounded corners=0] ($(0.05\@w,0.33\@ch)$) to[out=-90,in=180,looseness=1.1,rounded corners=0] ($(\@rl,0)$) -- cycle;
% \node[overlay,anchor=base east,opacity=0] at (current bounding box.south east) {a};
%n
@@ -1362,7 +1362,7 @@ class for Quantum - the open journal for quantum science (https://quantum-journa
}
}
\AtEndPreamble{
- \providecommand{\@elsearticlecommandsnotsupportederror}{\ClassError{quantumarticle}{The elsearticle style \string\cortext{}, \string\corref{}, \string\fntext{}, \string\fnref{}, \string\tnotetext{}, and \string\tnoteref{} commands are not supported by quantumarticle. Please refrain from using footnotes in the title part of your document and use the \string\tahnks{} command for author footnotes instead.}{}}
+ \providecommand{\@elsearticlecommandsnotsupportederror}{\ClassError{quantumarticle}{The elsearticle style \string\cortext{}, \string\corref{}, \string\fntext{}, \string\fnref{}, \string\tnotetext{}, and \string\tnoteref{} commands are not supported by quantumarticle. Please refrain from using footnotes in the title part of your document and use the \string\thanks{} command for author footnotes instead.}{}}
\providecommand{\cortext}[2][]{\@elsearticlecommandsnotsupportederror} %corresponding author information
\providecommand{\corref}[1]{\@elsearticlecommandsnotsupportederror} %corresponding author information reference
\providecommand{\fntext}[2][]{\@elsearticlecommandsnotsupportederror} %author footnote
@@ -1379,7 +1379,7 @@ class for Quantum - the open journal for quantum science (https://quantum-journa
{\PassOptionsToPackage{allcolors=quantumviolet}{hyperref}}
\ifcsdef{pdfoutput}
-{
+{
\ifnumequal{\pdfoutput}{0}
{}
{\PassOptionsToPackage{breaklinks=true}{hyperref}}%setting this option produces a warning if \pdfoutput=0
@@ -1391,7 +1391,7 @@ class for Quantum - the open journal for quantum science (https://quantum-journa
\AtBeginDocument{%
- \RequirePackage{hyperref}%
+ \RequirePackage{hyperref}%
\@ifpackageloaded{natbib}{%
\setlength{\bibsep}{0pt plus 0.3ex}
@@ -1427,7 +1427,7 @@ class for Quantum - the open journal for quantum science (https://quantum-journa
{
\PassOptionsToPackage{numbers}{natbib}
\PassOptionsToPackage{sort&compress}{natbib}
-
+
\providecommand{\ao}{Appl.\ Opt.}
\providecommand{\ap}{Appl.\ Phys.}
\providecommand{\apl}{Appl.\ Phys.\ Lett.}
diff --git a/macros/latex/contrib/quantumarticle/quantumarticle.pdf b/macros/latex/contrib/quantumarticle/quantumarticle.pdf
index 29a9700f32..732ea4850e 100644
--- a/macros/latex/contrib/quantumarticle/quantumarticle.pdf
+++ b/macros/latex/contrib/quantumarticle/quantumarticle.pdf
Binary files differ
diff --git a/macros/latex/contrib/quantumarticle/quantumarticle.tex b/macros/latex/contrib/quantumarticle/quantumarticle.tex
index 1d83b743bd..5b8ed5a2b5 100644
--- a/macros/latex/contrib/quantumarticle/quantumarticle.tex
+++ b/macros/latex/contrib/quantumarticle/quantumarticle.tex
@@ -60,18 +60,18 @@
\begin{document}
\title{Documentation of quantumarticle.cls v\quantumarticleversion}
\maketitle
-
+
\tableofcontents
-
+
\clearpage
-
+
\section{Introduction}
- The quantumarticle document class is the preferred document class for papers that will be submitted to \href{https://quantum-journal.org/}{Quantum -- the open journal of quantum science}. It is based on the widely used \texttt{article} document class and designed to allow a seamless transition from documents typeset with \texttt{article}, \texttt{revtex4-1} and the \texttt{elsarticle} document classes.
-
+ The quantumarticle document class is the preferred document class for papers that will be submitted to \href{https://quantum-journal.org/}{Quantum -- the open journal of quantum science}. It is based on the widely used \texttt{article} document class and designed to allow a seamless transition from documents typeset with \texttt{article}, \texttt{revtex4-1} and the \texttt{elsarticle} document classes.
+
As Quantum is an arXiv overlay journal, all papers have to be submitted to the arXiv. To make this submission process as user-friendly as possible, the quantumarticle document class implements a number of arXiv-specific checks, which however can be deactivated via the option \texttt{noarxiv}.
An example for this is a check that is meant to make sure that the arXiv produces a PDF file and that hyperlinks are correctly broken across multiple lines.
- To ensure this, the arXiv \href{https://arxiv.org/help/submit_tex}{recommends} putting
+ To ensure this, the arXiv \href{https://arxiv.org/help/submit_tex}{recommends} putting
\begin{verbatim}
\pdfoutput=1
\end{verbatim}
@@ -80,24 +80,24 @@
Giving the \texttt{noarxiv} option also disables a number of other features of quantum article and removes any Quantum related branding from the document. Authors who would like to keep the checks active but still use this document class for manuscripts not intended for submission to Quantum and therefore without Quantum branding can use the \texttt{unpublished} option.
One feature deactivated by both \texttt{unpublished} and \texttt{noarxiv} for example, is the ``title click feature'' of quantumarticle. As this document class can be used for arbitrary documents, Quantum implements a feature where readers can, by clicking on the title of a manuscript, verify whether this manuscript was actually published by Quantum. Obviously this is an unwanted feature in any manuscript not accepted in Quantum and it can thus be deactivated with the \texttt{unpublished} option.
-
+
\section{Typesetting documents}
The following are guidelines for the usage of the quantumarticle document class for manuscripts to be submitted to or accepted in Quantum. A detailed description of the functionality and options of the document class follow in Section~\ref{sec:options}.
-
- \subsection{Recommendations on structure}
+
+ \subsection{Recommendations on structure}
In the \texttt{twocolumn} layout and without the \texttt{titlepage} option a paragraph without a previous section title may directly follow the abstract.
In \texttt{onecolumn} format or with a dedicated \texttt{titlepage}, this should be avoided.
-
+
Longer articles should include a section that, early on, explains the main results, their limitations, and assumptions.
This section can be used to, for example, present the main theorem, or provide a summary of the results for a wider audience.
-
+
\subsection{Title information}
The title of the document is given via the common \texttt{title} command. Note that clicking the title performs a search for that title on \href{http://quantum-journal.org}{quantum-journal.org}.
- In this way readers can easily verify whether a work using the \texttt{quantumarticle} class was actually published in Quantum. By giving the \texttt{accepted=YYYY-MM-DD} option, with \texttt{YYYY-MM-DD} the acceptance date, the note ``Accepted in Quantum YYYY-MM-DD, click title to verify'' can be added to the bottom of each page to clearly mark works that have been accepted in Quantum.
-
+ In this way readers can easily verify whether a work using the \texttt{quantumarticle} class was actually published in Quantum. By giving the \texttt{accepted=YYYY-MM-DD} option, with \texttt{YYYY-MM-DD} the acceptance date, the note ``Accepted in Quantum YYYY-MM-DD, click title to verify'' can be added to the bottom of each page to clearly mark works that have been accepted in Quantum.
+
You should call \texttt{\textbackslash{}maketitle} before your running text starts.
-
+
\subsubsection{Authors and affiliations}
You can provide information on authors and affiliations in the common format also used by \texttt{revtex}:
\begin{verbatim}
@@ -122,27 +122,27 @@
\affil[2]{Affiliation 1}
\affil[3]{Affiliation 1}
\end{verbatim}
-
+
\subsubsection{Other author related information}
The quantumarticle document class supports further commands that are author specific:
\begin{commands}
\command{email}{%
E-Mail address of the author, displayed in the bottom of the page.
}
-
+
\command{homepage}{%
Homepage of the author, displayed in the bottom of the page.
}
-
+
\command{thanks}{%
Additional text that is displayed in the bottom of the page.
}
-
+
\command{orcid}{%
If the ORCiD of the author is given, his name will become a link to his ORCiD profile.
}
\end{commands}
-
+
\subsection{Abstract}
The abstract is typeset using the common \texttt{abstract} environment. In the standard, \texttt{twocolumn}, layout the abstract is typeset as a bold face first paragraph.
In \texttt{onecolumn} layout the abstract is placed above the text.
@@ -150,44 +150,44 @@
This format can be more suitable for long articles.
The \texttt{abstract} environment can appear both before and after the \texttt{\textbackslash{}maketitle} command and calling \texttt{\textbackslash{}maketitle} is optional, as long as there is an \texttt{abstract}.
Both \texttt{abstract} and \texttt{\textbackslash{}maketitle} however must be placed after all other \texttt{\textbackslash{}author}, \texttt{\textbackslash{}affiliation}, etc.\ commands.
-
+
\subsection{Sectioning}
Sections, subsections, subsubsections, and paragraphs should be typeset with the standard LaTeX commands. The paragraph is the smallest unit of sectioning. Feel free to end the paragraph title with a full stop if you find this appropriate.
-
- \subsection{Equations}
+
+ \subsection{Equations}
You can use the standard commands for equations. For multi-line equations \texttt{align} is preferable over \texttt{eqnarray}, please refrain from using the latter. For complex equations you may want to consider using the \texttt{IEEEeqnarray} environment from the \texttt{IEEEtrantools} package.
-
+
How you refer to equations is up to you, but please be consistent and use the \texttt{\textbackslash{}eqref\{\dots\}} command instead of writing \texttt{(\textbackslash{}ref\{\dots\})}.
-
+
As a courtesy for your readers and referees, please suppress equation numbers only if there is a specific reason to do so, to not make it unnecessarily difficult to refer to individual results and steps in derivations.
-
+
Very wide equations can be shown expanding over both columns using the \texttt{widetext} environment.
In \texttt{onecolumn} mode, the \texttt{widetext} environment has no effect.
To enable this feature in \texttt{twocolumn} mode, \texttt{quantumarticle} relies on the package \texttt{ltxgrid}.
Unfortunately this package has a bug that leads to a sub-optimal placement of extremely long footnotes.
-
- \subsection{Floats}
+
+ \subsection{Floats}
Every floating element must have an informative caption and a number. The caption can be placed above, below, or to the side of the figure, as you see fit.
-
+
Feel free to place them at the top or bottom of the page, or in the middle of a paragraph as you see fit. Try to place them on the same page as the text referring to them. A figure on the first page can help readers remember and recognize your work more easily.
-
+
\subsubsection{Figures}
- Figures are typeset using the standard \texttt{figure} environment for single-column figures and \texttt{figure*} for multi-column figures.
-
+ Figures are typeset using the standard \texttt{figure} environment for single-column figures and \texttt{figure*} for multi-column figures.
+
\subsubsection{Tables}
- Tables are typeset using the standard \texttt{table} environment for single-column tables and \texttt{table*} for multi-column tables.
-
+ Tables are typeset using the standard \texttt{table} environment for single-column tables and \texttt{table*} for multi-column tables.
+
\subsection{Plots}
Quantum provides a Jupyter notebook to create plots that integrate seamlessly with \texttt{quantumarticle}.
-
+
\subsection{Footnotes}
Footnotes are typeset using the \texttt{footnote} command. They will appear in the bottom of the page. Please do only use footnotes when appropriate and do not mix footnotes with references.
-
- \subsection{References}
+
+ \subsection{References}
Citations to other works should appear in the References section at the end of the work.
-
+
\paragraph{Important:} As Quantum is a member of Crossref, all references to works that have a DOI \emph{must} be hyperlinked according to the DOI. Those links must start with \texttt{https://doi.org/} (preferred), or \texttt{http://dx.doi.org/}. Direct links to the website of the publisher are not sufficient. This can be achieved in several ways, depending on how you are formatting your bibliography.
-
+
\subsubsection{Manual bibliography}
Suppose the DOI of an article that you want to cite is \texttt{10.22331/idonotexist}. If you are formatting your bibliography manually, you can cite this work using the following in your \texttt{thebibliography} environment:
\begin{verbatim}
@@ -197,10 +197,10 @@
idonotexist}{Quantum
\textbf{123}, 123456 (1916).}
\end{verbatim}
-
+
\paragraph{Important:} If you are formatting your bibliography manually, please do not group multiple citations into one \texttt{\textbackslash{}bibitem}.
Having to search through multiple references to find the cited result makes your work less accessible for authors and grouping references can screw up our automatic extraction of citations.
-
+
\subsubsection{BibTeX bibliography}
We encourage the use of BibTeX to generate your bibliography from the BibTeX meta-data provided by publishers.
For DOI linking to work, the BibTeX file must contain the \texttt{doi} field as for example in:
@@ -218,7 +218,7 @@
Several authors had problems because of Unicode characters in their BibTeX files.
Be advised that \href{http://wiki.lyx.org/BibTeX/Tips}{BibTeX does not support Unicode characters}.
All special characters must be input via their respective LaTeX commands.
-
+
\paragraph{natbib}
If you are using BibTeX, you can load the \texttt{natbib} package by putting
\begin{verbatim}
@@ -231,7 +231,7 @@
\end{verbatim}
The quantumarticle class automatically detects that the \texttt{natbib} package was loaded and redefines the \texttt{\textbackslash{}doi} command to create hyperlinks.
This is likely the easiest option if you are converting from another document class.
-
+
\paragraph{BibLaTeX}
If you want to use BibLaTeX, you can instead add
\begin{verbatim}
@@ -245,20 +245,20 @@
where appropriate.
You then have to upload the .bbl file along with the other source files when submitting to the arXiv.
Due to incompatibilities between different BibLaTeX versions we unfortunately cannot recommend this option.
-
+
The quantumarticle class automatically detects that the \texttt{biblatex} package was loaded, sets the default option \texttt{doi=true} to include the DOI in the bibliography, and declares a suitable field format to make it a hyperlink.
Due to issues with \texttt{biber} we recommend to use the \texttt{bibtex} backend of \texttt{biblatex}.
-
+
Feel free to change the appearance of citations in any way you like by using a different \texttt{bibliographystyle} or via the advanced mechanisms provided by BibLaTeX.
The only two requirements are that citations must uniquely identify the cited work and that they must contain a DOI hyperlink whenever possible.
-
+
\subsection{Appendix}
Quantum allows the usage of appendices. Ideally, the command \texttt{\textbackslash{}appendix} should be put before the appendices to get appropriate section numbering. The appendices are then numbered alphabetically, with numeric (sub)subsection numbering.
Equations continue to be numbered sequentially.
You are free to change this in case it is more appropriate for your article, but a consistent and unambiguous numbering of sections and equations must be ensured.
-
- If you want your appendices to appear in \texttt{onecolumn} mode but the rest of the document in \texttt{twocolumn} mode, you can insert the command \texttt{\textbackslash{}onecolumn\textbackslash{}newpage} before \texttt{\textbackslash{}appendix}.
-
+
+ If you want your appendices to appear in \texttt{onecolumn} mode but the rest of the document in \texttt{twocolumn} mode, you can insert the command \texttt{\textbackslash{}onecolumn\textbackslash{}newpage} before \texttt{\textbackslash{}appendix}.
+
\subsection{Recommended packages}
Quantum encourages you to load the following extra packages:
\begin{verbatim}
@@ -270,16 +270,16 @@
\end{verbatim}
If you do not load the \texttt{hyperref} package, quantumarticle automatically loads it for you.
Packages that change font settings, such as \texttt{times} or \texttt{helvet} should be avoided.
-
+
\section{Package options}
\label{sec:options}
The quantumarticle document class provides a multitude of package options that change the appearance of the final document to the liking of the user. Default options that need not be given are marked with \texttt{(default)}. Options that are only provided for compatibility reasons and that will not alter the typesetting of the document are marked with \texttt{(C)}.
-
+
\subsection{Document setup}
-
+
\subsubsection{Document format}
- The document class does not specify a default paper size and an error is raised if none is specified. The reason for this is that different LaTeX compilers and localizations can cause paper sizes to vary between setups and this can lead to unexpected results when multiple authors collaborate on a document and the final typesetting is performed by a third party, such as the arXiv.
-
+ The document class does not specify a default paper size and an error is raised if none is specified. The reason for this is that different LaTeX compilers and localizations can cause paper sizes to vary between setups and this can lead to unexpected results when multiple authors collaborate on a document and the final typesetting is performed by a third party, such as the arXiv.
+
\begin{options}
\option{a4paper}{%
Sets the paper size to ISO A4.
@@ -302,8 +302,8 @@
\end{options}
\subsubsection{Orientation}
- By default, the orientation is portrait.
-
+ By default, the orientation is portrait.
+
\begin{options}
\option{landscape}{%
Sets the orientation of the document to landscape.
@@ -312,7 +312,7 @@
\subsubsection{Fontsize}
By default, the fontsize is 10pt.
-
+
\begin{options}
\defaultoption{10pt}{%
Sets the normal fontsize to 10pt.
@@ -327,7 +327,7 @@
\subsubsection{Sides}
By default, the setting is oneside.
-
+
\begin{options}
\defaultoption{oneside}{%
Prepares the document onesided.
@@ -339,7 +339,7 @@
\subsubsection{Titlepage}
By default, the document class is typeset with no extra titlepage.
-
+
\begin{options}
\option{titlepage}{%
Displays the title on a separate titlepage.
@@ -351,7 +351,7 @@
\subsubsection{Draft}
By default, the document class is typeset as final.
-
+
\begin{options}
\option{draft}{%
Marks the document as a draft.
@@ -362,10 +362,10 @@
\end{options}
\subsection{Style options}
-
+
\subsubsection{Equations}
By default, equations are typeset centered, with equation numbers on the right.
-
+
\begin{options}
\option{fleqn}{%
Display equations left aligned.
@@ -376,7 +376,7 @@
\end{options}
\subsubsection{Bibliography}
-
+
\begin{options}
\option{openbib}{%
Display elements of bibliography entries on separate lines, \href{https://tex.stackexchange.com/questions/56628/custom-references-page-with-additional-line-breaks}{see here}.
@@ -385,7 +385,7 @@
\subsection{Pre-loaded packages}
The document class only loads packages necessary for its operation, such as \texttt{geometry} or \texttt{hyperref}. For compatibility reasons, there are commands that load certain widely used packages for the user.
-
+
\begin{options}
\option{amsfonts}{%
Load the package \texttt{amsfonts}.
@@ -411,8 +411,8 @@
\end{options}
\subsection{Publication}
- By default, all documents that are created with the \texttt{quantumarticle} document class are treated as possible submissions to Quantum.
-
+ By default, all documents that are created with the \texttt{quantumarticle} document class are treated as possible submissions to Quantum.
+
\begin{options}
\option{accepted=YYYY-MM-DD}{%
Adds the note 'Accepted in Quantum YYYY-MM-DD' to the document.
@@ -427,7 +427,7 @@
\subsection{Compatibility}
The \texttt{quantumarticle} class aims to be maximally compatible with documents that were previously typeset with other document classes. For this reason, a number of options are present for the sole purpose of compatibility but do not have any effect on how your document will be typeset These include:
-
+
\begin{options}
\compatibilityoption{checkin}{No effect.}
\compatibilityoption{preprint}{\ditto}
@@ -497,16 +497,16 @@
\compatibilityoption{prx}{\ditto}
\compatibilityoption{aip}{\ditto}
\end{options}
-
+
\section{Contributing}
In case you encounter problems using the article class please consider opening a bug report in our \href{https://github.com/quantum-journal/quantum-journal/issues}{bug-tracker on GitHub}. You can also contact us via email under \texttt{latex@quantum-journal.org}, but it may take significantly longer to get a response. In any case we need the full source of a document that produces the problem and the log file showing the error to help you.
-
+
Improvements submitted as pull requests against the \href{https://github.com/quantum-journal/quantum-journal/tree/develop}{develop} branch are very much appreciated!
-
+
\section{Copyright}
Copyright 2019 Verein zur Förderung des Open Access Publizierens in den Quantenwissenschaften (\url{http://quantum-journal.org/about/}).
-
+
The document class \texttt{quantumarticle} is derived from \texttt{article} available from \url{https://www.ctan.org/pkg/article}.
-
+
It may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3c of this license or (at your option) any later version. The latest version of this license is in \url{http://www.latex-project.org/lppl.txt} and version 1.3c or later is part of all distributions of \LaTeX version 2005/12/01 or later.
\end{document}
diff --git a/macros/latex/contrib/thalie/CHANGELOG.md b/macros/latex/contrib/thalie/CHANGELOG.md
index f91eca7082..476bba7780 100644
--- a/macros/latex/contrib/thalie/CHANGELOG.md
+++ b/macros/latex/contrib/thalie/CHANGELOG.md
@@ -1,3 +1,12 @@
+* thalie 0.13a (2022-12-11)
+
+ * Documentation overhaul.
+ * [\character] Fix tests of forbidden combination of arguments (some combinations were wrongfully forbidden, some were wrongfully allowed).
+ * Add `defaultcast` option to dramatis personae, and `cast` option to `\character`.
+ * Add a `castgroup` environment.
+
+ -- Louis Paternault <spalax@gresille.org>
+
* thalie 0.12a (2022-10-09)
* The `xspace` option also affects \did.
@@ -46,26 +55,26 @@
* Thalie.sty
- * Commands `\playmark`, `\actmark` and `\scenemark` no longer include label (e.g. "Act 1"). It is up to the user to add it or not.
- * Display default translations, even in language environments using non-latin characters where no latin font is available (closes #24).
- * Do not add a wrong indentation after character name in verse environment (closes #3).
- * Package options can be redefined anywhere in the document (closes #5).
- * Reduce vertical space around character names in style `imprimerie-verse` (closes #6).
- * Replace package [ifthen](http://ctan.org/pkg/ifthen) with package [etoolbox](http://ctan.org/pkg/etoolbox) (closes #29).
- * Style of ramatis personæ can be customized (closes #9 #15 #18 #19).
- * Use [translations](http://ctan.org/pkg/translations) to translate words ("act", "scene", etc.).
+ * Commands `\playmark`, `\actmark` and `\scenemark` no longer include label (e.g. "Act 1"). It is up to the user to add it or not.
+ * Display default translations, even in language environments using non-latin characters where no latin font is available (closes #24).
+ * Do not add a wrong indentation after character name in verse environment (closes #3).
+ * Package options can be redefined anywhere in the document (closes #5).
+ * Reduce vertical space around character names in style `imprimerie-verse` (closes #6).
+ * Replace package [ifthen](http://ctan.org/pkg/ifthen) with package [etoolbox](http://ctan.org/pkg/etoolbox) (closes #29).
+ * Style of dramatis personæ can be customized (closes #9 #15 #18 #19).
+ * Use [translations](http://ctan.org/pkg/translations) to translate words ("act", "scene", etc.).
* Documentation
- * Add sections *Examples* and *Localization*.
- * Add a note about non-latin characters and character style `bold` (closes #26).
- * Fix `\customact` example.
- * Various minor improvements.
+ * Add sections *Examples* and *Localization*.
+ * Add a note about non-latin characters and character style `bold` (closes #26).
+ * Fix `\customact` example.
+ * Various minor improvements.
* README
- * Convert README from text to markdown.
- * Add examples.
+ * Convert README from text to markdown.
+ * Add examples.
-- Louis Paternault <spalax@gresille.org>
diff --git a/macros/latex/contrib/thalie/README.md b/macros/latex/contrib/thalie/README.md
index f6babe79fe..83874b5328 100644
--- a/macros/latex/contrib/thalie/README.md
+++ b/macros/latex/contrib/thalie/README.md
@@ -5,13 +5,13 @@ It defines commands to introduce characters' lines, to render stage direction,
to divide a play into acts and scenes, to automatically build the dramatis
personae, etc.
-- Version 0.12a (2022-10-09)
+- Version 0.13a (2022-12-11)
- Usage and installation instruction are available in the [documentation](http://mirrors.ctan.org/macros/latex/contrib/thalie/thalie.pdf).
- Examples
- - [French play, in verse](https://framagit.org/spalax/thalie/raw/v0.12a/examples/cyrano.pdf) ([source](https://framagit.org/spalax/thalie/raw/v0.12a/examples/cyrano.tex))
- - [French play, in prose](https://framagit.org/spalax/thalie/raw/v0.12a/examples/domjuan.pdf) ([source](https://framagit.org/spalax/thalie/raw/v0.12a/examples/domjuan.tex))
- - [English play, in prose](https://framagit.org/spalax/thalie/raw/v0.12a/examples/hamlet.pdf) ([source](https://framagit.org/spalax/thalie/raw/v0.12a/examples/hamlet.tex))
- - [English play, in verse](https://framagit.org/spalax/thalie/raw/v0.12a/examples/henry.pdf) ([source](https://framagit.org/spalax/thalie/raw/v0.12a/examples/henry.tex))
+ - [French play, in verse](https://spalax.frama.io/thalie/examples/cyrano.pdf) ([source](https://framagit.org/spalax/thalie/-/blob/main/examples/cyrano.tex))
+ - [French play, in prose](https://spalax.frama.io/thalie/examples/domjuan.pdf) ([source](https://framagit.org/spalax/thalie/-/blob/main/examples/domjuan.tex))
+ - [English play, in prose](https://spalax.frama.io/thalie/examples/hamlet.pdf) ([source](https://framagit.org/spalax/thalie/-/blob/main/examples/hamlet.tex))
+ - [English play, in verse](https://spalax.frama.io/thalie/examples/henry.pdf) ([source](https://framagit.org/spalax/thalie/-/blob/main/examples/henry.tex))
License
-------
diff --git a/macros/latex/contrib/thalie/thalie.dtx b/macros/latex/contrib/thalie/thalie.dtx
deleted file mode 100644
index d9ba447489..0000000000
--- a/macros/latex/contrib/thalie/thalie.dtx
+++ /dev/null
@@ -1,2298 +0,0 @@
-% \iffalse meta-comment
-% Copyright 2010-2022 Louis Paternault
-%
-% This work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
-% of this license or (at your option) any later version.
-% The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
-% version 2005/12/01 or later.
-%
-% This work has the LPPL maintenance status `maintained'.
-%
-% The Current Maintainer of this work is Louis Paternault
-%
-% This work consists of the files thalie.dtx and thalie.ins
-% and the derived file thalie.sty.
-% \fi
-%
-% \iffalse
-%<*driver>
-\ProvidesFile{thalie.dtx}
-%</driver>
-%
-%<package>\NeedsTeXFormat{LaTeX2e}
-%<package>\ProvidesPackage{thalie}
-%<*package>
- [2022/10/09 v0.12a A package to typeset drama plays]
-%</package>
-%
-%<*driver>
-\documentclass{ltxdoc}
-\EnableCrossrefs
-\CodelineIndex
-\RecordChanges
-\usepackage{array}
-\usepackage{csquotes}
-\usepackage{enumerate}
-\usepackage{multirow}
-\usepackage{hyperref}
-\usepackage{thalie}
-\usepackage{showexpl}
-\usepackage{listings}
-\usepackage{xcolor}
-\usepackage{manfnt}
-\usepackage[normalem]{ulem}
-\lstset{
- language=[LaTeX]TeX,
- numbers=left,
- numberstyle=\tiny,
- backgroundcolor=\color{yellow!20},
- basicstyle=\small\color{black}\ttfamily,
- keywordstyle=\color{blue!80}\sffamily,
- commentstyle=\color{olive},
- stringstyle=\color{red},
-}
-\usepackage[english]{babel}
-\begin{document}
-\DocInput{thalie.dtx}
-\end{document}
-%</driver>
-% \fi
-%
-% \CheckSum{0}
-% \CharacterTable
-% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-% Digits \0\1\2\3\4\5\6\7\8\9
-% Exclamation \! Double quote \" Hash (number) \#
-% Dollar \$ Percent \% Ampersand \&
-% Acute accent \' Left paren \( Right paren \)
-% Asterisk \* Plus \+ Comma \,
-% Minus \- Point \. Solidus \/
-% Colon \: Semicolon \; Less than \<
-% Equals \= Greater than \> Question mark \?
-% Commercial at \@ Left bracket \[ Backslash \\
-% Right bracket \] Circumflex \^ Underscore \_
-% Grave accent \` Left brace \{ Vertical bar \|
-% Right brace \} Tilde \~}
-%
-% \GetFileInfo{thalie.dtx}
-%
-% \DoNotIndex{\@backslashchar, \@ifnextchar}
-% \DoNotIndex{\#,\$,\%,\&,\@,\\,\{,\},\^,\_,\~,\ ,\!,\(,\),\,}
-% \DoNotIndex{\addcontentsline, \addto, \ae, \AND, \arabic, \abovedisplayshortskip, \abovedisplayskip, \addtolength}
-% \DoNotIndex{\begin, \bfseries, \boolean, \baselineskip, \belowdisplayskip, \belowdisplayshortskip, \boolfalse, \booltrue}
-% \DoNotIndex{\captionsenglish, \captionsfrench, \center, \centering, \ClassError, \cleardoublepage, \csname, \csundef}
-% \DoNotIndex{\def, \defcharcommand@with, \defcharcommand@without, \dimen, \dimexpr}
-% \DoNotIndex{\emph, \end, \endcsname, \equal, \expandafter, \endlist, \endmath, \endminipage}
-% \DoNotIndex{\framebox, \fi}
-% \DoNotIndex{\gappto, \gdef, \global, \GetTranslation}
-% \DoNotIndex{\hspace}
-% \DoNotIndex{\@ifpackageloaded, \indent, \if@xspace, \ifbool, \ifboolexpr, \ifcsundef, \ifcsdef, \ifdef, \ifdefempty, \ifdefstring, \ifstrempty, \ifstrequal, \ifundef, \ignorespacesafterend, \item}
-% \DoNotIndex{\LARGE, \Large, \left, \leftskip, \leftmargin, \list, \linewidth, \LoadDictionaryFor, \LoadDictionary}
-% \DoNotIndex{\medskip, \MakeUppercase, \markboth, \markright, \MakeLowercase, \math, \minipage}
-% \DoNotIndex{
-% \@actlevel,
-% \@actstyle,
-% \@clearpage,
-% \@cmd,
-% \@definecharactercommand,
-% \@desc,
-% \@displaytitle,
-% \@drama,
-% \@dramatis@clear,
-% \@empty@,
-% \@grouplength,
-% \@groupname,
-% \@interludelevel,
-% \@label,
-% \@maybexspace,
-% \@ne,
-% \@playlevel,
-% \@playstyle,
-% \@scenelevel,
-% \@scenestyle,
-% \@short,
-% \@spaceaftergroup,
-% \@speaks,
-% \@verseadjust,
-% }
-% \DoNotIndex{\newcommand, \newcounter, \newenvironment, \noindent, \noexpand, \NOT, \newif, \newlength, \newline, \nopagebreak, \notbool}
-% \DoNotIndex{\OR}
-% \DoNotIndex{\par, \pgfkeys, \ProcessPgfPackageOptions, \protect, \protected@xappto, \parindent, \parskip, \predisplaysize, \prevgraf, \providebool, \providecommand}
-% \expandafter\DoNotIndex\expandafter{\string\ } ^^A From https://www.latex-project.org/cgi-bin/ltxbugs2html?pr=latex%2F3540
-% \DoNotIndex{\quad}
-% \DoNotIndex{\refstepcounter, \renewcommand, \RequirePackage, \right, \Roman, \relax, \rightmargin}
-% \DoNotIndex{\section, \setboolean, \setlength, \sffamily, \smallskip}
-% \DoNotIndex{\tabularnewline, \textrm, \textsc, \textwidth, \thispagestyle, \textbf, \the, \tmp}
-% \DoNotIndex{\undef}
-% \DoNotIndex{\vspace, \vskip}
-% \DoNotIndex{\WithSuffix}
-% \DoNotIndex{\xappto, \xspace, \xdef}
-% \DoNotIndex{\z@}
-%
-% \newcommand{\bbackslash}{\symbol{92}}
-% \newcommand{\danger}{\marginpar[\hfill\dbend]{\dbend\hfill}}
-%
-% \title{The \textsf{thalie} package\thanks{
-% This document corresponds to \textsf{thalie}~\fileversion, dated \filedate.
-% Home page, bug requests, etc. at \url{http://framagit.org/spalax/thalie}
-% }\\A package to typeset drama plays}
-% \author{Louis Paternault\\ \texttt{spalax(at)gresille(dot)org}}
-%
-% \maketitle
-%
-% \begin{abstract}
-% This package is meant to typeset drama plays using \LaTeX{}. It provides
-% commands to introduce characters' lines, to render stage direction, to divide
-% a play into acts and scenes, to automatically build the dramatis person\ae{},
-% etc.
-% \end{abstract}
-%
-% \setcounter{tocdepth}{2}
-% \tableofcontents
-%
-% \section{Introduction}
-% This document introduces the \textsf{thalie} package, used to typeset drama
-% plays.
-%
-% \subsection{Other classes and packages}
-% This package is far from being the only one that can be used to render drama
-% plays. If you do not like my work, you can use one of the following ones (and
-% I guess there exists others):
-% |drama| \cite{drama},
-% |dramatist| \cite{dramatist},
-% |play| \cite{play},
-% |screenplay| \cite{screenplay},
-% |sides| \cite{sides}.
-%
-% I began to write this package in 2010, and now, at the end of 2012, I must
-% admit that I wonder why I started this\ldots There are already several such
-% packages in
-% \textsc{ctan}\footnote{\url{http://www.ctan.org/topic/drama-script}}, and the
-% |dramatist| package seems really nice (I borrowed some ideas and copied some
-% code from it). There are actually a few improvements in my package compared
-% to |dramatist|: in my package, plays, acts and scenes appear in the table of
-% contents; it is possible to include several plays in a single document; there
-% are more options when building the dramatis person\ae{}; headers and footers
-% are taken into account, etc. But these improvements are small; it might have
-% been smarter to contribute to |dramatist| instead of starting my own package.
-% The good part is that I have a package that fits my needs, and I learned how
-% to write a \LaTeX{} package.
-%
-% Oh, yes! I know why I started this: I am a geek\ldots
-%
-% \subsection{License}
-% This work may be distributed and/or modified under the
-% conditions of the \LaTeX Project Public License, either version 1.3
-% of this license or (at your option) any later version.
-%
-% Further information can be found in the |.dtx| file used to build this
-% document.
-%
-% In short (but this paragraph has no legal value), you can use this package
-% freely to render your drama plays, and modify it almost freely. Nevertheless,
-% if you like my work, you can invite me to the performance of the play you
-% typeset using my package\footnote{You will not take a big risk, since there
-% is little chance I travel half the world to see a play. But if by chance I
-% can attend it, it would make me really happy.}.
-%
-% \subsection{Acknowledgements}
-% I borrowed ideas and lines of code from the \LaTeX{} packages
-% |drama|\cite{drama} and |dramatist|\cite{dramatist}.
-%
-% I used the following guides to package my package: \emph{How to Package Your
-% \LaTeX{} Package} \cite{dtxtut}, and \emph{\LaTeXe{} for class and package
-% writers} \cite{clsguide}.
-%
-% \subsection{Examples}
-%
-% Most of the examples are taken from Edmond Rostand's \emph{Cyrano de Bergerac}
-% \cite{cyrano} or from William Shakespeare's \emph{A Midsummer Night's Dream}
-% \cite{midsummer}. The snippets of \emph{Cyrano de Bergerac} are from the
-% original (French) version of this play, roughly translated by myself (which
-% means that they must be of poor quality).
-%
-% \subsection{Overview}
-% Installation instruction are given in section \ref{sec:install}.
-% Documentation about how to use this package is given in section
-% \ref{sec:usage}. In particular, section \ref{sec:sectioning} explains how to
-% use acts and scenes, sections \ref{sec:dramatis} and \ref{sec:characters} explains how to define
-% characters, and use these definitions to introduce characters' lines, and
-% section \ref{sec:directions} describes commands used to render stage
-% directions. At last, specific instruction about how to use this package with
-% a language other than English (or a non-latin alphabet) are given in section
-% \ref{sec:i18n}. Examples are given in section \ref{sec:examples}.
-%
-% Implementation is given in section \ref{sec:implementation}.
-%
-% \section{Download and Install}
-% \label{sec:install}
-%
-%
-% \subsection{\textsc{Gnu}/Linux Distribution}
-%
-% If applicable, the easiest way to get |thalie| working is by installing it by your distribution package. With Debian (and Ubuntu, and surely other distributions that inherit from Debian), simply run:
-%
-% \begin{quote}
-% |sudo apt-get install texlive-humanities|
-% \end{quote}
-%
-% \subsection{\LaTeX{} distribution}
-%
-% This package is included both in \TeX{}Live and MiK\TeX{}. It can be installed by their respective package managers.
-%
-% \subsection{Manual installation}
-%
-% \begin{itemize}
-% \item Download the lastest archive :
-% \begin{description}
-% \item[Stable version] \url{http://mirrors.ctan.org/install/macros/latex/contrib/thalie.tds.zip}
-% \item[Development version] \url{https://framagit.org/spalax/thalie/repository/archive.zip?ref=main}
-% \end{description}
-% \item Unzip the archive.
-% \item If you got the archive from CTAN (stable version), move file \texttt{tex/latex/thalie/thalie.sty} in a \LaTeX{} path.
-% \item If you got the development version, |cd| to the main archive directory, and run |latex thalie.ins| to build |thalie.sty|. Move this file into a \LaTeX{} path.
-% \end{itemize}
-%
-% \section{Usage}
-% \label{sec:usage}
-%
-% \subsection{Localization}
-% \changes{v0.09a}{2017/04/22}{Add section \emph{Localization}.}
-%
-% By default, commands \lstinline|\act|, \lstinline|\scene|, etc. use English words, but they are
-% translated to the current language used by |babel| or
-% |polyglossia|\footnote{Given that someone provided the translation. See
-% \ref{sec:languages} for the list of available languages.}. More information
-% is given in section \ref{sec:l10n}.
-%
-% \subsection{Package options}
-% \label{sec:options}
-%
-% Package options are summed up in table \ref{table:packageoptions}.
-%
-% Note that any package option can be redefined anywhere in the document. This
-% makes it possible to have several plays collected in a single document, while
-% applying different styles or options to each play. See section
-% \ref{sec:redefine} for more detail.
-%
-% \begin{table}
-% \centering
-% \begin{tabular}{c|c|c}
-% Name & Available options & Default \tabularnewline
-% \hline
-% \hline
-% |characterstyle| & |bold| |margin| |center| |simple| |arden| & |simple| \tabularnewline
-% & |imprimerie-verse| |imprimerie-prose| & \tabularnewline
-% \hline
-% |playstyle| & \multirow{3}{*}{|center| |bigcenter| |box| |custom|} & |box| \tabularnewline
-% |actstyle| & & |bigcenter| \tabularnewline
-% |scenestyle| & & |center| \tabularnewline
-% \hline
-% |playlevel| & \multirow{3}{*}{|part| |chapter| |section| \ldots |subparagraph|} & |chapter| \tabularnewline
-% |actlevel| & & |section| \tabularnewline
-% |scenelevel| & & |subsection| \tabularnewline
-% \hline
-% |interludelevel| & |play| |act| |scene| & |act| \tabularnewline
-% \hline
-% |xspace| & |true| |false| & |true|\tabularnewline
-% \end{tabular}
-% \caption{Package options summary}
-% \label{table:packageoptions}
-% \end{table}
-%
-% \subsubsection{Space following character commands and stage directions}
-% \label{option:xspace}
-% \changes{v0.07}{2015/12/28}{New package option \texttt{xspace}.}
-% As commands introducing characters' lines and displaying characters' names
-% may be frequently used, it might be tempting to omit the following \lstinline|{}| For
-% instance, one might prefer to write:
-% \iffalse
-%<*example>
-% \fi
-% \begin{lstlisting}
-\cyrano Indeed, \cyranoname is my name!
-\end{lstlisting}
-% \iffalse
-%</example>
-% \fi
-% instead of:
-% \iffalse
-%<*example>
-% \fi
-% \begin{lstlisting}
-\cyrano{} Indeed, \cyranoname{} is my name!
-\end{lstlisting}
-% \iffalse
-%</example>
-% \fi
-%
-% If package option |xspace| is set (e.g. |xspace=true|), space is automatically
-% added after those commands if necessary\footnote{This is done with
-% the |$\backslash$xspace| command (from the |xspace| package), hence the name.};
-% otherwise, it is not. The same rule applies after a |\did| command.
-%
-% For historical reasons, the option |xspace| default is |true|, but this might
-% change in some later non-backward compatible version.
-%
-% \subsubsection{Style}
-% The way characters' lines are displayed, as well as play, act and scene
-% titles, can be set when loading the options.
-% To set character style, use option |characterstyle=|\meta{style}. Available
-% styles, and indication to use a custom one, are described in section
-% \ref{sec:lines}.
-%
-% Several play, act and scene title styles are defined. Choose it using options
-% |playstyle|=\meta{style}, |actstyle|=\meta{style} and
-% |scenestyle|=\meta{style}. Description of available styles, and how to define
-% your own one, are described in section \ref{sec:sectionstyles}.
-%
-% \subsubsection{Sectioning levels}
-% If you use a table of contents, or if you also use ``usual'' sectioning
-% commands (\lstinline|\chapter|, \lstinline|\section| and so on), the relative importance of
-% plays, acts and scenes is important. You can set this using options
-% |playlevel=|\meta{level}, |actlevel=|\meta{level} and
-% |scenelevel=|\meta{level}. The argument is the name of the corresponding
-% sectioning level, i.e. one of |part|, |chapter|, |section|, |subsection|,
-% |subsubsection|, |paragraph| and |subparagraph|.
-%
-% Setting the interlude level is slightly different. While setting it using
-% |interludelevel=|\meta{level}, instead of choosing one of \LaTeX{} vanilla
-% sectioning levels as the level, you may choose |play|, |act| or |scene|. It
-% defines if an interlude is at the same level as a play, an act or a scene.
-%
-% \subsubsection{Redefining options}
-% \label{sec:redefine}
-% \DescribeMacro{\setthalieoptions}
-%
-% Packages options can be reset in the document body using command
-% \lstinline|\setthalieoptions|\marg{package options}. Its only argument has the same
-% syntax as the package options.
-%
-% For instance, if you are writing a collections of plays, some in prose, some in verses, you might want to write something like the following.
-%
-% \iffalse
-%<*example>
-% \fi
-% \begin{lstlisting}
-\documentclass{book}
-...
-\usepackage{thalie}
-...
-\begin{document}
-...
-\play{First play}
-\setthalieoptions{characterstyle=imprimerie-verse}
-...
-\play{Second play}
-\setthalieoptions{characterstyle=impriemie-prose}
-...
-\end{document}
-\end{lstlisting}
-% \iffalse
-%</example>
-% \fi
-%
-% \subsection{Sectioning}
-% \label{sec:sectioning}
-% Here begin the parts explicitly relating to drama.
-% \subsubsection{Levels}
-% \DescribeMacro{\play}
-% \DescribeMacro{\play*}
-% \DescribeMacro{\act}
-% \DescribeMacro{\act*}
-% \DescribeMacro{\scene}
-% \DescribeMacro{\scene*}
-% To introduce a new play, act or scene, use commands \lstinline|\play|, \lstinline|\act| and
-% \lstinline|\scene|. Their behaviour is as close as the ``usual'' sectioning commands
-% (\lstinline|\chapter|, \lstinline|\section| and so on) as possible, i.e.:
-% \begin{itemize}
-% \item Their signature is \lstinline|\play|\oarg{short title}\marg{longtitle} (the
-% optional short title is the one used in the table of content, and in headers
-% and footers).
-% \item A starred version (\lstinline|\play*|, \lstinline|\act*| and \lstinline|\scene*|) is provided, which
-% inserts a play (or act, or scene) which is not numbered, and does not insert
-% any line in the table of content.
-% \item Headers and footers are changed (more information in section \ref{sec:header}).
-% \end{itemize}
-%
-% Both commands \lstinline|\act| and \lstinline|\scene| (and their starred versions) are designed to
-% deal with empty titles. Indeed, it is common not to give any name to acts and
-% scenes.
-%
-% By default, a play is as deep (regarding to the table of contents) as a
-% chapter, an act as a section, and a scene as a subsection. But this can be
-% set using package options |playlevel|, |actlevel| and |scenelevel| (see
-% packages options, page \pageref{sec:options}). That way, you can use in your
-% document plays, acts and scenes as well as chapters, sections and so on. It
-% can be useful if you want a foreword, and appendix, etc.
-%
-% It is not compulsory to use all three commands \lstinline|\play|, \lstinline|\act| and \lstinline|\scene|.
-% The rule of thumb is: if only one element exists, skip the corresponding
-% command: if your document has a single play, you should ignore \lstinline|\play|; if
-% your document has several single act plays, set
-% |playlevel=section,scenelevel=subsection| and ignore \lstinline|\act|; etc.
-%
-% \DescribeMacro{\interlude}
-% \DescribeMacro{\interlude*}
-% You may want to use interludes, which are acts or scenes which are not
-% numbered, but which should appear in the table of content. Command
-% \lstinline|\interlude|\oarg{short title}\marg{long title} has this purpose.
-%
-% You may choose the sectioning level an interlude is equivalent to in the
-% package options. If your interludes are acts, use |interludelevel=act|; if
-% they are scenes, use |interludelevel=scene|.
-%
-% \DescribeMacro{\curtain}
-% At last, to mark the end of an act or of the play, you can use command
-% \lstinline|\curtain|, which prints the word \lstinline|\GetTranslation{Curtain}| in the middle of its
-% own line.
-%
-% \subsubsection{Title styles}
-% \label{sec:sectionstyles}
-% Several styles are available to render play, act and scene titles. Choose
-% them using package options |playstyle|, |actstyle| and |scenestyle|. Default
-% is |playstyle=box|, |actstyle=bigcenter|, |scenestyle=center|.
-%
-% \paragraph{Custom titles}
-% Unfortunately, as play, act and scene titles are not considered (by \LaTeX{})
-% as usual sections, package
-% |titlesec|\footnote{\url{http://www.ctan.org/pkg/titlesec}} cannot be used to
-% use alternative section titles. Here is the way to set your own one.
-%
-% \begin{figure}[p]
-% \centering
-% \iffalse
-%<*example>
-% \fi
-% \begin{lstlisting}
-\newcommand\customact[2]{
- \begin{center}
- \textsc{\GetTranslation{Act} #1}
-
- #2
- \end{center}
-}
-\WithSuffix\newcommand\customact*[1]{
- \begin{center}
- #1
- \end{center}
-}
-\end{lstlisting}
-% \iffalse
-%</example>
-% \fi
-% \caption{Example of custom act definition}
-% \label{fig:custom}
-% \end{figure}
-%
-% \DescribeMacro{\customplay}
-% \DescribeMacro{\customact}
-% \DescribeMacro{\customscene}
-% When loading the package, use |custom| as the style of the title you want to
-% customize (e.g. |actstyle=custom|). Then, commands
-% \lstinline|\customact|\marg{counter}\marg{title} and \lstinline|\customact*|\marg{title} will be
-% called by this package to render titles. You \emph{must} define them. Figure
-% \ref{fig:custom} gives the example of the definition of the |center| style.
-%
-% The first argument of \lstinline|\customact| is the label of the act being printed
-% (that is, \lstinline|\theact| for an act, \lstinline|\theplay| for a play, etc.), its second
-% argument is its title. Command \lstinline|\customact*| only has one argument, which is
-% the act title.
-%
-% \subsubsection{Labels and counters}
-%
-% \DescribeMacro{\theplay}
-% \DescribeMacro{\theact}
-% \DescribeMacro{\thescene}
-% Using the same tools as \lstinline|\chapter|, \lstinline|\section| and so on, it is possible to
-% define the way counters of plays, acts and scenes are displayed. You can do
-% this by redefining \lstinline|\theplay|, \lstinline|\theact| and \lstinline|\thescene|. For example, to
-% have acts numbered using letters, use \lstinline|\renewcommand{\theact}{\Alph{act}}|.
-%
-% \subsubsection{Headers and footers}
-% \label{sec:header}
-%
-% \DescribeMacro{\playmark}
-% \DescribeMacro{\actmark}
-% \DescribeMacro{\scenemark}
-% Once again, similar tools as those used by \lstinline|\section| are provided to deal
-% with headers and footers. When introducing, a new play, act or % scene,
-% respectively, commands \lstinline|\playmark|\marg{label}, \lstinline|\actmark|\marg{label} and
-% \lstinline|\scenemark|\marg{label} are called, so that titles can be used in headers
-% and footers. If the default behaviour does not suit you (which should be the
-% case if you did not choose the default option for |playlevel|, |actlevel| or
-% |scenelevel|), you can redefine them.
-%
-% Examples are given in section \ref{sec:examples:headers}.
-%
-% \subsection{Dramatis person\ae}
-% \label{sec:dramatis}
-% This part explains how to build and display the dramatis person\ae{}.
-%
-% Definition of characters is done in document body.
-% As it is possible to have several plays in a single documents (for a
-% collection of plays or sketches), it is possible to define several
-% dramatis person\ae{}. A new one disables the character commands
-% defined by the previous one.
-%
-% \DescribeEnv{dramatis}
-% Definition of characters is done inside the |dramatis| environment. If the
-% |hidden| option is given, the dramatis person\ae{} is not printed (its
-% only purpose is then to define the character commands).
-%
-% \begin{quote}
-% \lstinline|\begin{dramatis}|\oarg{hidden}
-% \end{quote}
-%
-% Then, several commands are available to define characters, and organize
-% character definitions.
-%
-% \DescribeMacro{\characterspace}
-% Command \lstinline|\characterspace| put some vertical space into the dramatis
-% person\ae{}.
-%
-% \subsubsection{Character definition}
-% \paragraph{Basic definition}
-% \label{paragraph:basiccharacter}
-%
-% \begin{figure}[p]
-% \centering
-% \iffalse
-%<*example>
-% \fi
-% \begin{LTXexample}[pos=b]
-\begin{dramatis}
- \character[cmd={cyrano}, drama={Cyrano de Bergerac}]{Cyrano}
- \character[cmd={lebret}]{Le Bret}
- \character[cmd={bellerose}]{Bellerose}
-\end{dramatis}
-
-\bigskip
-
-\lebret[to \cyranoname, holding his arm]
-Let's talk !
-
-\cyrano
-Wait for the crowd to leave. \did{To \bellerosename} Can I stay?
-% \end{LTXexample}
-% \iffalse
-%</example>
-% \fi
-% \caption{Example of character definition}
-% \label{fig:character_example}
-% \end{figure}
-%
-% \DescribeMacro{\character}
-% To define a character, use command \lstinline|\character|.
-% \begin{quote}%
-% \lstinline|\character|\oarg{\emph{cmd=}command,\emph{drama=}dramatis,\emph{desc=}description}\marg{name}%
-% \end{quote}
-% The mandatory argument is the name of the character, as it will appear in each of this character's line. It is later possible to redefine it using command \lstinline|\setcharactername| (see part \ref{setcharactername}). Optional arguments are:
-% \begin{description}
-% \item[desc] is a description of your character, appearing in the dramatis person\ae{};
-% \item[cmd] is the name of the command that will be used to introduce this character's lines in the remaining part of your document;
-% \item[drama] is the name of your character, as it will appear in the dramatis person\ae{}. The name of the character (mandatory argument) is used as a default value.
-% \end{description}
-%
-% If \emph{cmd} is defined, this command creates two new commands: |\|\meta{cmd}
-% and |\|\meta{cmd}|name|. The
-% first one is used to introduce a character's line. The second one prints the
-% character's name. An error is raised if a command with any of these two names
-% already exists.
-%
-% An example of the use of this command is given in figure
-% \ref{fig:character_example}.
-%
-% \paragraph{Special character definition}
-%
-% Although optional arguments are not mandatory, not defining them, or leaving the mandatory argument blank, have special meaning. The combination are summed up in table \ref{table:character}.
-%
-% \begin{table}
-% \centering
-% \begin{tabular}{cc||c|c|c|c|}
-% \multicolumn{2}{c||}{} & \multicolumn{2}{c|}{empty \meta{name}} & \multicolumn{2}{c|}{\meta{name}} \\
-% \multicolumn{2}{c||}{} & no \meta{cmd} & \meta{cmd} & no \meta{cmd} & \meta{cmd} \\
-% \hline
-% \hline
-% \multirow{4}{*}{no \meta{drama}} & \multirow{2}{*}{no \meta{desc}} & & & silent\textsuperscript{\ref{character:silent}} & default\textsuperscript{\ref{character:default}} \\
-% & & & & & hidden\textsuperscript{\ref{character:hidden}}\\
-% \cline{2-6}
-% & \multirow{2}{*}{ \meta{desc}} & description & & silent\textsuperscript{\ref{character:silent}} & default\textsuperscript{\ref{character:default}} \\
-% & & only\textsuperscript{\ref{character:description}} & & & \\
-% \hline
-% \multirow{2}{*}{ \meta{drama}} & no \meta{desc} & silent\textsuperscript{\ref{character:silent}} & & & default\textsuperscript{\ref{character:default}} \\
-% \cline{2-6}
-% & \meta{desc} & silent\textsuperscript{\ref{character:silent}} & & & default\textsuperscript{\ref{character:default}} \\
-% \hline
-% \end{tabular}
-%
-% An empty cell means that the corresponding combination is forbidden. The superscript number refers to the list of special character definitions (page \pageref{specialcharaclist}).
-% \caption{(Not) defining arguments in character definition}
-% \label{table:character}
-% \end{table}
-%
-% \label{specialcharaclist}
-% \begin{enumerate}[(i)]
-% \item \label{character:default} \textbf{Default definition (\meta{name} and \meta{cmd} are given; \meta{desc} and \meta{drama} may be omitted):} The character is defined as described in \ref{paragraph:basiccharacter}. If \meta{description} is omitted, no description appear in the dramatis person\ae{}; if no \meta{drama} is given, character in the dramatis person\ae{} has the same name as it will have in the document.
-% Example:
-% \iffalse
-%<*example>
-% \fi
-% \begin{lstlisting}
-\character[
- drama={A ghost},
- desc={the king's ghost},
- cmd={ghost},
- ]{The ghost}
-\end{lstlisting}
-% \iffalse
-%</example>
-% \fi
-% \item \label{character:description} \textbf{Description only (everything omitted but \meta{desc}):} A description is inserted in the dramatis person\ae{}. Useful to add characters such as \emph{The kings' armies}.
-% Example:
-% \iffalse
-%<*example>
-% \fi
-% \begin{lstlisting}
-\character[desc={The kings' armies}]{}
-\end{lstlisting}
-% \iffalse
-%</example>
-% \fi
-% \item \label{character:hidden} \textbf{Hidden character (\meta{drama} is empty (defined, but empty), \meta{cmd} and \meta{name} are defined, \meta{desc} is omitted)} Definition of a character that does not appear in the dramatis person\ae{}.
-% Example:
-% \iffalse
-%<*example>
-% \fi
-% \begin{lstlisting}
-\character[drama={}, cmd={postman}]{The postman}
-\end{lstlisting}
-% \iffalse
-%</example>
-% \fi
-% \item \label{character:silent} \textbf{Silent character (one of \meta{name} or \meta{drama} is defined; \meta{desc} may be omitted; \meta{cmd} is omitted):} The character only appear in the dramatis person\ae{}. It will not be used elsewhere in the document. An optional description may also appear in the dramatis person\ae{}.
-% Example:
-% \iffalse
-%<*example>
-% \fi
-% \begin{lstlisting}
-\character{A priest}
-\end{lstlisting}
-% \iffalse
-%</example>
-% \fi
-% \end{enumerate}
-%
-% \paragraph{Group of characters}
-% \DescribeEnv{charactergroup}
-% It is possible to group several characters' definition if they have the same
-% description. This is done with environment
-% |charactergroup|\oarg{width}\marg{description}. The optional argument sets
-% the group width (on the left of the brace).
-% See an example on figure \ref{fig:charactergroup}.
-%
-% \begin{figure}[p]
-% \centering
-% \iffalse
-%<*example>
-% \fi
-% \begin{LTXexample}[pos=b]
-\begin{dramatis}
-\begin{charactergroup}[2.5cm]{Officers}
- \character[desc={a soldier}]{Marcellus}
- \character[desc={a soldier}]{Bernardo}
-\end{charactergroup}
-\end{dramatis}
-% \end{LTXexample}
-% \iffalse
-%</example>
-% \fi
-% \caption[Defining a group of characters]{Defining a group of characters}
-% \label{fig:charactergroup}
-% \end{figure}
-%
-% The effect of this code will be, in the dramatis person\ae{}, to have a
-% nice brace mapping the three characters to their common description.
-%
-% The behaviour of nested |charactergroup| environments is
-% undefined\footnote{It might work; it might not. It might work now, but stop
-% working in the future; it might not work now, but work by accident in the
-% future. Etc.}.
-%
-% \subsubsection{Customize style of dramatis person\ae}
-% \DescribeEnv{dramatisenv}
-% \DescribeMacro{\dramatischaracter}
-% \DescribeMacro{\dramatischaractername}
-% \DescribeMacro{\dramatischaracterdescription}
-%
-% A default style is used to display the dramatis person\ae, but is it made to
-% be customized.
-% The following commands can be redefined to make dramatis person\ae look
-% different. They do nothing apart from displaying text (no internal
-% definition, etc.).
-%
-% \begin{itemize}
-% \item |dramatisenv|: This environment wraps the dramatis person\ae.
-% \item \lstinline|\dramatischaracter|\marg{name}\marg{description} Renders the character name and description. It should take care of cases where name or descsription (but not both) is missing.
-% \item \lstinline|\dramatischaractername|\marg{name} Renders the character name.
-% \item \lstinline|\dramatischaracterdescription|\marg{description} Renders the character description.
-% \item Environment |charactergroup|\oarg{width}\marg{description} Renders a group of characters.
-% \item \lstinline|\characterspace| Adds a vertical character space.
-% \end{itemize}
-
-% Figure \ref{fig:dramatisconversion} illustrates how those commands are used.
-%
-% \begin{figure}[p]
-% \iffalse
-%<*example>
-% \fi
-\begin{lstlisting}
-\begin{dramatis}
- \character{The queen}
- \character[desc={the queen's husband.}]{The king}
- \begin{charactergroup}{Lords and ladies}
- \character{Lord Foo}
- \character[desc={Lord Foo's sister.}]{Lady Bar}
- \character[desc={Lord and Lady Baz.}]{}
- \end{charactergroup}
- \characterspace
- \character[desc={Several servants}]{}
-\end{dramatis}
-\end{lstlisting}
-% \iffalse
-%</example>
-% \fi
-%
-% To display the dramatis person\ae{} above, the commands below are called.
-%
-% \iffalse
-%<*example>
-% \fi
-\begin{lstlisting}
-\begin{dramatisenv}
- \dramatischaracter{The queen}{}
- \dramatischaracter{The king}{the queen's husband.}
- \begin{charactergroup}{Lords and ladies}
- \dramatischaracter{Lord Foo}{}
- \dramatischaracter{Lady Bar}{Lord Foo's sister.}
- \dramatischaracter{}{Lord and Lady Baz.}
- \end{charactergroup}
- \characterspace
- \dramatischaracter{}{Several servants}
-\end{dramatisenv}
-\end{lstlisting}
-% \iffalse
-%</example>
-% \fi
-%
-% And command \lstinline|\dramatischaracter|\marg{Name}\marg{Description} is defined as something like the following code (excepted that parts taking care of cases where there is no character name or description is omitted here).
-% \iffalse
-%<*example>
-% \fi
-\begin{lstlisting}
-\newcommand{\dramatischaracter}[2]{ %
- \dramatischaractername{#1}, \dramatischaracterdescription{#2}\\
-}
-\end{lstlisting}
-% \iffalse
-%</example>
-% \fi
-% \caption{Commands used to display the dramatis person\ae.}
-% \label{fig:dramatisconversion}
-% \end{figure}
-%
-% For example, to render character names in small caps, one would define :
-%
-% \iffalse
-%<*example>
-% \fi
-\begin{lstlisting}[numbers=none]
-\renewcommand{\dramatischaractername}[1]{\textsc{#1}}
-\end{lstlisting}
-% \iffalse
-%</example>
-% \fi
-%
-% Or to make dramatis
-% person\ae{} include a title, one can define :
-% \iffalse
-%<*example>
-% \fi
-\begin{lstlisting}[numbers=none]
-\renewenvironment{dramatisenv}{%
- \list{}{\rightmargin1cm\leftmargin2cm}\item[]
- \act*{Dramatis person\ae}%
-}{%
- \endlist%
-}
-\end{lstlisting}
-% \iffalse
-%</example>
-% \fi
-%
-% \subsection{Characters}
-% \label{sec:characters}
-% This part explains how to define characters, and introduce character's lines.
-%
-% It has been explained that definition of a character in the dramatis
-% person\ae{} (previous subsection) also creates commands used to introduce
-% lines of characters. For instance, defining a character using
-% \lstinline|\character[cmd=cyrano]{Cyrano}| means than Cyrano's lines can now be
-% introduced using the following code.
-% \iffalse
-%<*example>
-% \fi
-\begin{lstlisting}
-\cyrano
-No! It's a bit short, young man\ldots
-\end{lstlisting}
-% \iffalse
-%</example>
-% \fi
-% This would display the name \emph{Cyrano} using the current character style, then
-% his line.
-%
-% \subsubsection{Custom characters}
-%
-% \paragraph{Disposable character}
-% \DescribeMacro{\disposablecharacter}
-% One can need to define characters that are used only once (or a few times).
-% Command \lstinline|\disposablecharacter| is here to help.
-% \begin{quote}\lstinline|\disposablecharacter|\oarg{directions}\marg{name}\end{quote}
-% This command, used in the body, introduces a line for character |name|, with optional stage
-% directions. It is rendered the same way regular characters are rendered, but
-% nothing is added to the dramatis person\ae{}. It is used in figure
-% \ref{fig:setcharactername_example}.
-%
-% This command is also useful to introduce lines of characters in non standard
-% ways, for instance if several characters speak at once. See examples in
-% section \ref{sec:examples:characterslines}.
-%
-% \subsubsection{Changing character's name}
-% \label{setcharactername}
-% \DescribeMacro{\setcharactername}
-%
-% \begin{figure}[p]
-% On the first scenes of Cyrano de Bergerac, the main character (Cyrano) is
-% somewhere in a crowd, and only appears as \emph{a voice}. He appears as
-% Cyrano in the following verses.
-%
-% \centering
-% \iffalse
-%<*example>
-% \fi
-% \begin{LTXexample}[pos=b]
-\begin{dramatis}[hidden]
- \character[desc={Cyrano de Bergerac}, cmd=cyrano]{The voice}
- \character[cmd=montfleury]{Montfleury}
-\end{dramatis}
-
-\cyrano Leave!
-
-\disposablecharacter{The crowd} Oh!
-
-\montfleury[losing his voice] ``Happy he who far away from court\ldots''
-
-\setcharactername{cyrano}{Cyrano}
-
-\cyrano[emerging from the crowd, standing up on a chair {[}\ldots{]} with
- a terrible nose] Ah! I am getting angry!\ldots
-% \end{LTXexample}
-% \iffalse
-%</example>
-% \fi
-% \caption{Example of changing the name of a character}
-% \label{fig:setcharactername_example}
-% \end{figure}
-%
-% It is possible to change the name that appears to introduce character's lines
-% within the text. This can be used, for example, when a character is first
-% refered to as \emph{A voice}, until we learn his real identity, which is
-% \emph{Cyrano}. An example is given in figure
-% \ref{fig:setcharactername_example}.
-% \begin{quote}\lstinline|\setcharactername|\marg{command}\marg{name}\end{quote}
-%
-% This command takes two mandatory arguments. The first one, |command|, is the
-% command used to introduce this character's line. The second one is the name
-% to display for this character.
-%
-% \subsubsection{Lines}
-% \label{sec:lines}
-% To introduce characters' lines, use the commands defined in the character
-% definition (see the \lstinline|\character| command, or the example in figure
-% \ref{fig:character_example}).
-%
-% \paragraph{Choose style}
-% \changes{v0.06}{2014/06/25}{New character styles \texttt{imprimerie-verse}, \texttt{imprimerie-prose} and \texttt{arden}.}
-% Several styles are available, to typeset character's name and lines in
-% different ways. Change the style by loading package using option
-% |characterstyle=|\marg{style} (available styles are |bold|, |center|,
-% |margin|, |simple|, |imprimerie-verse|, |imprimerie-prose|). A few notes:
-% \begin{itemize}
-% \item Default style is |simple|.
-% \item |imprimerie-verse| and |imprimerie-prose| styles are French
-% \emph{de facto} standards for typesetting drama plays, respectively in verse
-% and in prose, as defined by the \emph{Imprimerie nationale}
-% \cite{imprimerienationale}.
-% \item |arden| tries to mimick typesetting of the Arden Shakespeare series.
-% \item |bold| needs a sans serif font to be defined (it should be done by
-% default with latin alphabets, but must be done by hand with languages using
-% non latin characters (greek, hindi, etc.)).
-% \end{itemize}
-%
-% \paragraph{Customize style}
-% \DescribeMacro{\speakswithoutdirection}
-% \DescribeMacro{\speakswithdirection}
-% If available styles does not fit your need, you can also define your own one.
-% To do so, you can redefine the following commands.
-% \begin{quote}
-% \lstinline|\speakswithoutdirection|\marg{name}\\
-% \lstinline|\speakswithdirection|\marg{name}\marg{direction}
-% \end{quote}
-% The first one (\lstinline|\speakswithoutdirection|) is invoked to display a character's name
-% to introduce its line. It takes one argument, which is the character's line.
-% The second one (\lstinline|\speakswithdirection|) is also invoked to display a character's
-% name to introduce its line, but it takes a second argument, which is stage
-% directions to be printed together with character's name.
-%
-% See also section \ref{sec:directions} to see other ways to print stage
-% directions.
-%
-% \subsection{Stage directions}
-% \label{sec:directions}
-% Let us begin with a warning: since we could not figure out a nice command
-% name made from ``stage directions'', we used the French word
-% \emph{(didascalie)} to build up command names.
-%
-% \DescribeMacro{\did}
-% \DescribeEnv{dida}
-% We define two ways to render stage directions: a short one, that is printed
-% inline, and a long one, printed in its own paragraph\footnote{For people writing math:
-% They act a bit like \lstinline|$1+1=2$| and \texttt{\bbackslash[1+1=2\bbackslash]} for formulas.}.
-% The first way is the command \lstinline|\did|\marg{directions}. The second way is the
-% environment |dida|.
-%
-% Note that option \lstinline|xspace| may be used to automatically add a space,
-% if necessary, after a \lstinline|\did| command (see section \ref{option:xspace}, page \pageref{option:xspace}).
-%
-% \DescribeMacro{\onstage}
-% Some stage directions are displayed centered under the scene or act
-% definition (I often see it in classical drama, where the list of characters
-% appearing in each scene is displayed that way). Command
-% \lstinline|\onstage|\marg{directions} can be used to display such information.
-%
-% \DescribeMacro{\pause}
-% As we often need to mark pauses in theater, we created the command \lstinline|\pause|,
-% which is a shortcut for \lstinline|\did{\GetTranslation{Pause}}|.
-%
-% \subsection{Splitting verses}
-%
-% When writing verses, it is sometimes useful to split a verse between two
-% characters: the first character starts it in its line, and the second one
-% finishes it in a second line. Visually, the start of the second line is
-% vertically aligned to the end of the first line.
-%
-% \begin{figure}[p]
-% \centering
-% \iffalse
-%<*example>
-% \fi
-% \begin{dramatis}[hidden]
-% \character[cmd={hermia}]{Hermia}
-% \character[cmd={theseus}]{Theseus}
-% \end{dramatis}
-% \setthalieoptions{characterstyle=imprimerie-verse}
-% \begin{LTXexample}[pos=b]
-\hermia
-So is Lysander.\pauseverse
-
-\theseus
-\resumeverse In himself he is.
-% \end{LTXexample}
-% \setthalieoptions{characterstyle=simple}
-% \iffalse
-%</example>
-% \fi
-% \caption{Example of commands to split verse}
-% \label{fig:splitverse}
-% \end{figure}
-%
-% \begin{figure}[p]
-% \centering
-% \iffalse
-%<*example>
-% \fi
-% \begin{dramatis}[hidden]
-% \character[cmd={hermia}]{Hermia}
-% \character[cmd={theseus}]{Theseus}
-% \end{dramatis}
-% \begin{LTXexample}[pos=b]
-\adjustverse{-7em}
-
-\hermia
-So is Lysander.\pauseverse
-
-\theseus
-\resumeverse In himself he is.
-% \end{LTXexample}
-% \iffalse
-%</example>
-% \fi
-% \caption{Example of commands to adjust splitted verse}
-% \label{fig:splitverse-adjusted}
-% \end{figure}
-%
-% \begin{figure}[p]
-% \centering
-% \iffalse
-%<*example>
-% \fi
-% \begin{dramatis}[hidden]
-% \character[cmd={hermia}]{Hermia}
-% \character[cmd={theseus}]{Theseus}
-% \end{dramatis}
-% \begin{LTXexample}[pos=b]
-\hermia
-So is Lysander.
-
-\theseus
-\phantom{So is Lysander.} In himself he is.
-% \end{LTXexample}
-% \iffalse
-%</example>
-% \fi
-% \caption{Example of commands to split verse (using the \texttt{\bbackslash{}phantom} command)}
-% \label{fig:splitverse-phantom}
-% \end{figure}
-%
-% \danger
-% Warning: this is still experimental. I present several recipes to achieve this, but they all have their pros and cons.
-%
-% \DescribeMacro{\pauseverse}
-% \DescribeMacro{\resumeverse}
-% The recipes presented below all implement macros \lstinline|\pauseverse| and \lstinline|\resumeverse|.
-% Command \lstinline|\pauseverse| is used at the end of the verse to be continued, while command \lstinline|\resumeverse| is used at the beginning of the continuing verse. See figure \ref{fig:splitverse} (page \pageref{fig:splitverse}) for an example.
-%
-% When writing a play in verse, one can use a lot of those commands, which can
-% be tedious because of their long names. So, defining ``shortcuts'' of those
-% commands can be handy, as in the following example.
-%
-% \iffalse
-%<*example>
-% \fi
-% \begin{lstlisting}
-\newcommand{\pv}{\pauseverse}
-\newcommand{\rv}{\resumeverse}
-\end{lstlisting}
-% \iffalse
-%</example>
-% \fi
-%
-% This is not done by default, because short command names are a scarce ressource
-% in \LaTeX, so, defining these commands by default might conflict with other
-% packages, while most of |thalie| users will not use them.
-%
-% \subsubsection{Which recipe should I use?}
-%
-% As I have already stated, there are several ways to achieve this, but none of them is perfect.
-%
-% \begin{itemize}
-% \item Do try the first recipe (section \ref{split-latex}). If it works, stick to it. Otherwise…
-% \item If you do not mind loading the \texttt{TikZ} package, use it (section \ref{split-tikz}). As far as I know, from a user point of view, it is the easiest recipe to use, with the less bugs. Otherwise…
-% \item You can try building you own commands (section \ref{split-hanging}). Otherwise…
-% \item The last recipe (section \ref{split-phantom}) always works. It is far less user-friendly, but it does the job.
-% \end{itemize}
-%
-% \subsubsection{Recipe 1 : Pure \LaTeX}
-% \label{split-latex}
-
-% \danger
-% Warning: I do not understand the code behind this feature. I copied-pasted code by David Carlisle\footnote{Originally written as an answer to a StackExchange question: see \url{https://tex.stackexchange.com/a/107727}.} without understanding it. There are \sout{probably} bugs\footnote{One on them lead to the next recipe.}, but I won't be able to solve them.
-%
-% The implemented macros \lstinline|\pauseverse| and \lstinline|\resumeverse| are written in pure \LaTeX (without any external package). For backward compatibility reasons, this will remain the default implementation for some time…
-%
-% \DescribeMacro{\adjustverse}
-% If the character names are displayed on the same line as the verse, the lines
-% are not aligned the way one would expect them to. To correct this, command
-% \lstinline|\adjustverse|\marg{length} can be used to add an extra (possibly negative)
-% space when calling \lstinline|\resumeverse|, to get a correct alignment.
-% See figure \ref{fig:splitverse-adjusted}, page \pageref{fig:splitverse-adjusted}, for an
-% example of those three commands.
-%
-% The young inexperienced fool\footnote{Me…} who originally wrote those commands had not noticed that \lstinline|\adjustverse| is needed because \lstinline|\resumeverse| does not take into account the length of the character names, in styles where it appears on the same line as the verse. This (probably) won't be fixed, because some people might be using this, and fixing this might break their document.
-%
-% If you encounter the same issue, you might prefer one of the other recipes.
-%
-% \subsubsection{Recipe 2 : With package \texttt{hanging}}
-% \label{split-hanging}
-%
-% \danger
-% Warning: This is a do-it-yourself recipe.
-%
-% The bug announced at the end of the previous recipe, has been spotted and partially corrected by egreg on StackExchange\footnote{\url{https://tex.stackexchange.com/a/545326}}. He proposes the following code to fix this.
-%
-% \iffalse
-%<*example>
-% \fi
-% \begin{lstlisting}
-\usepackage{hanging}
-
-\newlength{\brokenverse}
-\renewcommand*{\speakswithoutdirection}[1]{%
- \settowidth{\brokenverse}{\textsc{#1}.}%
- \hangpara{2\parindent}{1}\noindent\textsc{#1}.%
-}
-\makeatletter
-\renewcommand{\resumeverse}{%
- \hspace{\@verseadjust}\hspace{\dimexpr\dimen\@ne-\brokenverse-2em}
-}
-\makeatother
-\end{lstlisting}
-% \iffalse
-%</example>
-% \fi
-%
-% This code ignores the choosen style (it actually redesigns it), and it only works with lines without character directions. If needed, you should also define a \lstinline|\speakswithdirection| command to implement the same feature.
-%
-% \subsubsection{Recipe 3 : With package \texttt{TikZ}}
-% \label{split-tikz}
-%
-% % As far as I know, this recipe is the best one, from a user point of view. But it loads the \texttt{TikZ} package, which is a huge package to implement such a tiny feature\footnote{In French, we would say : \enquote{\foreignlanguage{french}{Un marteau-pilon pour écraser une mouche}} (a far too heavy solution for a tiny problem).}.
-%
-% \iffalse
-%<*example>
-% \fi
-% \begin{lstlisting}
-\usepackage{tikz}
-\usetikzlibrary{tikzmark}
-\usetikzlibrary{math}
-\newcounter{thalieverse}
-\tikzset{tikzmark suffix=-\thethalieverse}%
-\renewcommand{\pauseverse}{%
- \stepcounter{thalieverse}
- \tikzmark{thaliepauseverse}
-}
-\renewcommand{\resumeverse}{%
- \tikzmark{thalieresumeverse}%
- \iftikzmark{thaliepauseverse}{%
- \begin{tikzpicture}[remember picture]%
- % Uncomment to see "pause" and "resume" tikz marks.
- %\draw[overlay,green, ultra thick] (pic cs:thaliepauseverse) -- (pic cs:thalieresumeverse);%
- \tikzmath{
- coordinate \c;
- \c1 = (pic cs:thaliepauseverse);
- \c2 = (pic cs:thalieresumeverse);
- \width = max(0, \cx1 - \cx2);
- }
- % Set opacity to 1 to see the space
- \draw[opacity=0, black, line width=1ex] (0, 0) -- (\width pt, 0);
- \end{tikzpicture}%
- }{}%
-}
-\end{lstlisting}
-% \iffalse
-%</example>
-% \fi
-%
-% This recipe is implemented in the \href{https://framagit.org/spalax/thalie/-/blob/main/examples/henry.tex}{\texttt{examples/henry.tex}} file in the repository of this project.
-%
-% \subsubsection{Recipe 4 : With \texttt{\textbackslash{}phantom\{\}}}
-% \label{split-phantom}
-%
-% At last, if nothing else workd, this feature can also be implemented using the \lstinline|\phantom| command (see figure \ref{fig:splitverse-phantom} for an example, page \pageref{fig:splitverse-phantom}).
-% It is far less user-friendly, but it is also less error prone. Choose wisely…
-%
-% \section{Localization and Internationalization}
-% \label{sec:i18n}
-%
-% \subsection{Localization}
-% \label{sec:l10n}
-%
-% \changes{v0.09a}{2017/04/22}{Use package |translations| for localization.}
-%
-% Language cannot be defined directly in this package. Instead, the language
-% currently used by |babel| or |polyglossia| is used to translate the following
-% words (with or without capital letter, singular or plural): \emph{play},
-% \emph{act}, \emph{scene}, \emph{interlude}, \emph{pause}, \emph{curtain}.
-%
-% If the option for your language does not exist\footnote{You can also send me
-% the translation for your language, to improve this package.}, or if you want
-% to change the default words used here, you can set your own translation
-% using command \lstinline|\DeclareTranslation| (see the |translations| package for more
-% information). For instance use
-% \lstinline|\DeclareTranslation{Spanish}{Curtain}{Tel\`on}| for Spanish\footnote{I may
-% be wrong: I cannot speak Spanish.}.
-%
-% See section \ref{sec:languages} for the list of supported languages.
-%
-% \subsubsection{Common translations}
-% \DescribeMacro{\playname}
-% \DescribeMacro{\actname}
-% \DescribeMacro{\scenename}
-% \DescribeMacro{\interludename}
-% \DescribeMacro{\pausename}
-% \DescribeMacro{\curtainname}
-%
-% Commands defined here are shorter versions of strings commonly translated.
-%
-% For instance, \lstinline|\playname| is a shortcut for \lstinline|\GetTranslation{Play}|,
-% \lstinline|\actname| is a shortcut for \lstinline|\GetTranslation{Act}|, and so on.
-%
-% \subsection{Non-latin alphabets}
-%
-% This package should work with languages using non-latin alphabets (greek,
-% hindi, etc.). However, here are a few remarks.
-%
-% \begin{itemize}
-% \item The |bold| character style (see section \ref{sec:lines}) can only be used if a sans serif font has been defined. For instance, for hindi, you might write in the preamble: \lstinline|\newfontfamily\hindifontsf{Noto Sans Devanagari}|.
-% \end{itemize}
-%
-% \subsection{Language specific comments}
-% \label{sec:languages}
-%
-% \changes{v0.10a}{2019/02/24}{New translation: German (thanks Ekkart Kleinod).}
-% \changes{v0.11a}{2022/06/15}{New translation: Italian (thanks Giuseppe Palma).}
-%
-% The following languages are available:
-%
-% \begin{itemize}
-% \item English,
-% \item French,
-% \item German,
-% \item Italian.
-% \end{itemize}
-%
-% \subsubsection{English}
-%
-% \begin{itemize}
-% \item The |arden| character style tries to mimick the typestting of the Arden Shakespeare series.
-% \end{itemize}
-%
-% \subsubsection{French}
-%
-% \begin{itemize}
-% \item The |imprimerie-verse| and |imprimerie-prose| character styles implements the French \emph{de facto} standards for typesetting drama plays, respectively in verse and in prose, as defined by the \emph{Imprimerie nationale} \cite{imprimerienationale}.
-% \item The same book (\cite{imprimerienationale}) states that act numbers should be typeset in capital roman numerals (which is done by default with |thalie|), and that scene numbers should be typeset in small capital roman numerals, which is \emph{not} the default, but can be achieved by adding the following line in the preamble: \lstinline|\renewcommand{\thescene}{\textsc{\roman{scene}}}|.
-% \end{itemize}
-%
-% \subsubsection{Other languages}
-%
-% I do not know anything related to other languages. If you have interesting advice for those languages that you would like to share (preferably with a reference to a reliable source), I would be happy to add them to this list!
-%
-% \section{Examples}
-% \label{sec:examples}
-% \changes{v0.09a}{2017/04/22}{Add section \emph{Examples}.}
-%
-% \subsection{Characters' lines}
-% \label{sec:examples:characterslines}
-%
-% \subsubsection{Introduce lines of several characters at the same time.}
-%
-% Since \lstinline|\disposablecharacter| can display arbitrary text using the style of
-% character names, it can be used to render a custom text when two characters
-% are speaking together.
-%
-% \iffalse
-%<*example>
-% \fi
-% \begin{LTXexample}[pos=b, preset={
-\begin{dramatis}[hidden]
- \character[cmd=alice]{Alice}
- \character[cmd=bob]{Bob}
- \character[cmd=eve]{Eve}
-\end{dramatis}
-}]
-\bob
-Let's open it.
-
-\disposablecharacter{\alicename and \evename}
-No!
-% \end{LTXexample}
-% \iffalse
-%</example>
-% \fi
-%
-% \subsubsection{Add a footnote on a character name}
-%
-% Adding a footnote on the character name introducing its line cannot be done on the character command defined by the dramatis person\ae. Instead, the \lstinline|\disposablecharacter| command can be used instead.
-% \iffalse
-%<*example>
-% \fi
-% \begin{lstlisting}
-\disposablecharacter{\alicename\footnote{An interesting note.}}
-Hello, world!
-\end{lstlisting}
-% \iffalse
-%</example>
-% \fi
-%
-% \subsubsection{Add a footnote in a stage direction}
-%
-% Footnote must be protected to be included in stage directions.
-% \iffalse
-%<*example>
-% \fi
-% \begin{lstlisting}
-\cyrano[clapping his hands\protect\footnote{An interesting footnote.}]
-One!
-\end{lstlisting}
-% \iffalse
-%</example>
-% \fi
-%
-% \subsection{Headers and footers}
-% \label{sec:examples:headers}
-%
-% By default, with the |article| class, the header of the left page contains
-% the play name, and the header of the right page contains the act number.
-%
-% \subsubsection{Act number on left, scene number on right}
-%
-% \iffalse
-%<*example>
-% \fi
-% \begin{lstlisting}
-\renewcommand{\actmark}[1]{%
- {\markboth{\MakeUppercase{\GetTranslation{Act}}\ \theact\ #1}{}}%
-}
-\renewcommand{\scenemark}[1]{%
- {\markright{\MakeUppercase{\GetTranslation{Scene}}\ \thescene\ #1}}%
-}
-\end{lstlisting}
-% \iffalse
-%</example>
-% \fi
-%
-% \subsubsection{Play name of left, act and scene name on right}
-%
-% \iffalse
-%<*example>
-% \fi
-% \begin{lstlisting}
-\usepackage{fancyhdr}
-\pagestyle{fancy}
-\fancyhf{}
-\fancyhead[RO]{%
- \textit{\MakeUppercase{%
- \GetTranslation{Act} \theact{}, %
- \GetTranslation{Scene} \thescene%
- }}%
-}
-\fancyhead[LE]{\leftmark}
-\end{lstlisting}
-% \iffalse
-%</example>
-% \fi
-%
-% \section{Implementation}
-% \label{sec:implementation}
-%
-% \subsection{Required packages}
-% Loading some packages.
-% \begin{macrocode}
-% Options
-\RequirePackage{pgfkeys}
-% Chapters, sections, etc
-\RequirePackage{etoolbox}
-\RequirePackage{suffix}
-% Dramatis person\ae{} is written using a table.
-\RequirePackage{tabularx}
-% Handling spaces after having introduced characters' lines.
-\RequirePackage{xspace}
-% \end{macrocode}
-%
-% \subsection{Localization}
-%
-% Use |translations|. Translations are defined in the |dicts/thalie-<LANGUAGE>.trsl| files.
-% \begin{macrocode}
-\RequirePackage{translations}
-\LoadDictionary{thalie}
-\LoadDictionaryFor{fallback}{thalie}
-% \end{macrocode}
-%
-% \subsection{Obsolete localization commands}
-%
-% \begin{macro}{\playname}
-% \begin{macro}{\actname}
-% \begin{macro}{\scenename}
-% \begin{macro}{\interludename}
-% \begin{macro}{\curtainname}
-% \begin{macro}{\pausename}
-% Shorter versions of commonly translated strings.
-% \begin{macrocode}
-\newcommand{\playname}{\GetTranslation{Play}}
-\newcommand{\actname}{\GetTranslation{Act}}
-\newcommand{\scenename}{\GetTranslation{Scene}}
-\newcommand{\interludename}{\GetTranslation{Interlude}}
-\newcommand{\curtainname}{\GetTranslation{Curtain}}
-\newcommand{\pausename}{\GetTranslation{Pause}}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \subsection{Sectioning}
-% \subsubsection{Headears, footers, counters, etc.}
-% \begin{macro}{playmark}
-% \begin{macro}{actmark}
-% \begin{macro}{scenemark}
-% Define commands \lstinline|\playmark|, \lstinline|\actmark| and \lstinline|\scenemark|, which are involved
-% in headers and footers definition.
-% \begin{macrocode}
-\newcommand{\playmark}[1]{%
- \markboth{\MakeUppercase{#1}}{}%
-}
-\newcommand{\actmark}[1]{%
- \markright{\MakeUppercase{%
- \GetTranslation{Act}\ \theact%
- \ifdefempty{#1}{}{: #1}%
- }}%
-}
-\newcommand{\scenemark}[1]{%
-}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{theplay}
-% \begin{macro}{theact}
-% \begin{macro}{thescene}
-% Defines counters for plays, acts and scenes, and the associated labels
-% (\lstinline|\theplay|, \lstinline|\theact|, \lstinline|\thescene|).
-% \begin{macrocode}
-\newcounter{play}
-\renewcommand{\theplay}{\arabic{play}}
-\newcounter{act}[play]
-\renewcommand{\theact}{\Roman{act}}
-\newcounter{scene}[act]
-\renewcommand{\thescene}{\arabic{scene}}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \subsubsection{Styles}
-% Style difinition. Command \lstinline|\@displaytitle| is later used by commands
-% \lstinline|\play|, \lstinline|\act| and \lstinline|\scene| (and their starred version) to typeset the
-% title.
-% \begin{macrocode}
-\newcommand{\@displaytitle}[3]{
- % Arguments:
- % - Style
- % - Label (none = not in toc)
- % - Title
- \ifdefstring{#1}{center}{
- \begin{center}
- \textsc{#2}
-
- #3
- \end{center}
- }{\ifdefstring{#1}{bigcenter}{
- \begin{center}
- \Large
- \textsc{#2}
-
- #3
- \end{center}
- }{\ifdefstring{#1}{box}{
- \begin{center}
- \framebox{\begin{minipage}{0.7\textwidth}
- \begin{center}
- \Large \bfseries
- \vspace{0.5em}
-
- #2
- \ifboolexpr{test{\ifstrempty{#3}} or test{\ifstrempty{#2}}}{}{---}
- #3
-
- \vspace{0.5em}
- \end{center}
- \end{minipage}}
- \end{center}
- \vspace{1em}
- }{}}}
-}
-% \end{macrocode}
-%
-% \subsubsection{Sectioning commands}
-%
-% Some general commands to handle clearing pages, and table of contents.
-% \begin{macrocode}
-\newcommand\@clearpage[1]{%
- % Clear page if necessary
- \ifboolexpr{test{\ifdefstring{#1}{part}} or test{\ifdefstring{#1}{chapter}}}{
- \cleardoublepage
- \thispagestyle{empty}
- }{}
-}
-
-% \end{macrocode}
-%
-% \begin{macro}{\play}
-% \begin{macro}{\play*}
-% Define sectioning commands to introduce plays. As for \lstinline|\section| (and
-% other) sectioning command, the starred version does the same, excepted that
-% nothing is written in the table of content.
-% \begin{macrocode}
-\newcommand{\play}[2][]{%
- \refstepcounter{play}
- \ifstrempty{#1}{
- \def\@short{#2}
- }{
- \def\@short{#1}
- }
- \@clearpage{\@playlevel}
- \playmark{\@short}
- \addcontentsline{toc}{\@playlevel}{\@short}
- \ifdefstring{\@playstyle}{custom}{
- \customplay{\theplay}{#2}
- }{
- \@displaytitle{\@playstyle}{}{#2}
- }
-}
-\WithSuffix\newcommand\play*[1]{%
- \@clearpage{\@playlevel}
- \ifdefstring{\@playstyle}{custom}{
- \customplay*{#1}
- }{
- \@displaytitle{\@playstyle}{}{#1}
- }
-}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\act}
-% \begin{macro}{\act*}
-% Define commands to introduce acts.
-% \begin{macrocode}
-\newcommand{\act}[2][]{%
- \refstepcounter{act}
- \ifstrempty{#1}{
- \def\@short{#2}
- }{
- \def\@short{#1}
- }
- \ifdefempty{\@short}{
- \def\@label{\GetTranslation{Act} \theact{}}
- }{
- \def\@label{\GetTranslation{Act} \theact{}\xspace: }
- }
- \@clearpage{\@actlevel}
- \actmark{\@short}
- \addcontentsline{toc}{\@actlevel}{\@label\@short}
- \ifdefstring{\@actstyle}{custom}{
- \customact{\theact}{#2}
- }{
- \@displaytitle{\@actstyle}{\GetTranslation{Act} \theact}{#2}
- }
-}
-\WithSuffix\newcommand\act*[1]{%
- \@clearpage{\@actlevel}
- \ifdefstring{\@actstyle}{custom}{
- \customact*{#1}
- }{
- \@displaytitle{\@actstyle}{}{#1}
- }
-}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\scene}
-% \begin{macro}{\scene*}
-% Define commands to introduce scenes.
-% \begin{macrocode}
-\newcommand{\scene}[2][]{%
- \refstepcounter{scene}
- \ifstrempty{#1}{
- \def\@short{#2}
- }{
- \def\@short{#1}
- }
- \ifdefempty{\@short}{
- \def\@label{\GetTranslation{Scene} \thescene{}}
- }{
- \def\@label{\GetTranslation{Scene} \thescene{}\xspace: }
- }
- \@clearpage{\@scenelevel}
- \scenemark{\@short}
- \addcontentsline{toc}{\@scenelevel}{\@label\@short}
- \ifdefstring{\@scenestyle}{custom}{
- \customscene{\thescene}{#2}
- }{
- \@displaytitle{\@scenestyle}{\GetTranslation{Scene} \thescene}{#2}
- }
-}
-\WithSuffix\newcommand\scene*[1]{%
- \@clearpage{\@scenelevel}
- \ifdefstring{\@scenestyle}{custom}{
- \customscene*{#1}
- }{
- \@displaytitle{\@scenestyle}{}{#1}
- }
-}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\interlude}
-% \begin{macro}{\interlude*}
-% Define commands to introduce interludes.
-% \begin{macrocode}
-\newcommand{\interlude}[2][]{%
- \ifstrempty{#1}{
- \def\@short{#2}
- }{
- \def\@short{#1}
- }
- \ifdefempty{\@short}{
- \def\@label{\GetTranslation{Interlude}}
- }{
- \def\@label{\GetTranslation{Interlude}\xspace: }
- }
- \ifdefstring{\@interludelevel}{play}{
- \@clearpage{\@playlevel}
- \playmark{\@short}
- \addcontentsline{toc}{\@playlevel}{\@label\@short}
- \@displaytitle{\@playstyle}{\GetTranslation{Interlude}}{#2}
- }{\ifdefstring{\@interludelevel}{act}{
- \@clearpage{\@actlevel}
- \actmark{\@short}
- \addcontentsline{toc}{\@actlevel}{\@label\@short}
- \@displaytitle{\@actstyle}{\GetTranslation{Interlude}}{#2}
- }{% \@interludelevel is scene
- \@clearpage{\@scenelevel}
- \scenemark{\@short}
- \addcontentsline{toc}{\@scenelevel}{\@label\@short}
- \@displaytitle{\@scenestyle}{\GetTranslation{Interlude}}{#2}
- }}
-}
-\WithSuffix\newcommand\interlude*[1]{%
- \ifdefstring{\@interludelevel}{play}{
- \@clearpage{\@playlevel}
- \@displaytitle{\@playstyle}{\GetTranslation{Interlude}}{#1}
- }{\ifdefstring{\@interludelevel}{act}{
- \@clearpage{\@actlevel}
- \@displaytitle{\@actstyle}{\GetTranslation{Interlude}}{#1}
- }{% \@interludelevel is scene
- \@clearpage{\@scenelevel}
- \@displaytitle{\@scenestyle}{\GetTranslation{Interlude}}{#1}
- }}
-}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \subsubsection{Curtain}
-%
-% \begin{macro}{\curtain}
-% Used to mark the end of an act. Prints ``curtain'' centered in its own line.
-% \begin{macrocode}
-% Curtain
-\newcommand\curtain{
- \begin{center}
- \Large\textsc{\GetTranslation{Curtain}}
- \end{center}
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{Characters}
-%
-% \subsubsection{Spacing}
-% Add (or not) an |$\backslash$xspace| command at the end of character names,
-% depending on the |xspace| package option.
-% \begin{macrocode}
-\newcommand{\@maybexspace}{%
- \if@xspace%
- \xspace%
- \fi%
-}
-% \end{macrocode}
-%
-% \subsubsection{Characters' line}
-% Define the command \lstinline|\@speaks|, wich introduce a character's line. It
-% is not meant to be used by user, but will be used by further commands. It
-% takes two arguments: the character's name, and optionally, a stage direction.
-% \begin{macrocode}
-\newcommand{\@speaks}[2][]{%
- \ifstrempty{#1}{%
- \speakswithoutdirection{#2}%
- }{%
- \speakswithdirection{#2}{#1}%
- }\@maybexspace%
-}
-% \end{macrocode}
-%
-% \begin{macro}{\speakswithdirection}
-% \begin{macro}{\speakswithoutdirection}
-% Definition of styles for introducing characters' lines. These
-% commands can be overloaded by user.
-% \begin{macrocode}
-\newenvironment{@smallcenter}
- {\par\smallskip\centering}
- {\par\nopagebreak\ignorespacesafterend}
-\providecommand{\speakswithdirection}{}
-\providecommand{\speakswithoutdirection}{}
-\newcommand{\@setcharacterstyle}[1]{
- \ifstrequal{#1}{bold}{%
- % Bold style
- \renewcommand\speakswithdirection[2]{%
- \noindent%
- {\bfseries\sffamily ##1} \emph{(##2)}\xspace:%
- }
- \renewcommand\speakswithoutdirection[1]{%
- \noindent%
- {\bfseries\sffamily ##1\xspace:}%
- }%
- }{}%
- \ifstrequal{#1}{center}{%
- % Center style
- \renewcommand\speakswithdirection[2]{%
- \begin{center}%
- \textsc{##1},\\\emph{##2}%
- \end{center}%
- \par\ignorespacesafterend%
- }%
- \renewcommand\speakswithoutdirection[1]{%
- \begin{center}%
- \textsc{##1}%
- \end{center}%
- \par\ignorespacesafterend%
- }%
- }{}%
- \ifstrequal{#1}{imprimerie-verse}{%
- % Style for verse plays defined by the French Imprimerie nationale
- \renewcommand\speakswithdirection[2]{%
- \begin{@smallcenter}%
- \textsc{##1}, \emph{##2}%
- \end{@smallcenter}%
- }%
- \renewcommand\speakswithoutdirection[1]{%
- \begin{@smallcenter}%
- \textsc{##1}%
- \end{@smallcenter}%
- }%
- }{}%
- \ifstrequal{#1}{imprimerie-prose}{%
- % Style for prose plays defined by the French Imprimerie nationale
- \renewcommand\speakswithdirection[2]{%
- \noindent\hspace*{-\parindent}\textsc{##1}, \emph{##2}\xspace:%
- }%
- \renewcommand\speakswithoutdirection[1]{%
- \noindent\hspace*{-\parindent}\textsc{##1}\xspace:%
- }%
- }{}%
- \ifstrequal{#1}{arden}{%
- \renewcommand\speakswithdirection[2]{%
- \noindent\hspace*{-\parindent}\textsc{\MakeLowercase{##1}} [\emph{##2}]\quad%
- }%
- \renewcommand\speakswithoutdirection[1]{%
- \noindent\hspace*{-\parindent}\textsc{\MakeLowercase{##1}}\quad%
- }%
- }{}%
- \ifstrequal{#1}{simple}{%
- % Simple style
- \renewcommand\speakswithdirection[2]{%
- \indent\textsc{##1}, \emph{##2}\xspace:%
- }%
- \renewcommand\speakswithoutdirection[1]{%
- \indent\textsc{##1}\xspace:%
- }%
- }{}%
- \ifstrequal{#1}{margin}{%
- % Margin style
- \setlength{\leftskip}{3cm}
- \renewcommand\speakswithdirection[2]{%
- \hspace{-3cm} ##1 ##2
- }
- \renewcommand\speakswithoutdirection[1]{%
- \hspace{-3cm} ##1
- }%
- }{}%
-}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \subsubsection{Dramatis person\ae{}}
-% \begin{environment}{dramatis}
-% In this environment are defined characters.
-% \begin{macrocode}
-\newcommand{\@dramatis@clear}{}
-\newcommand{\@empty@}{}
-\providebool{@dramatis@hidden}
-\newenvironment{dramatis}[1][]{
- \@dramatis@clear{}
- \undef{\@dramatis@clear}
- \ifstrequal{#1}{hidden}{
- \booltrue{@dramatis@hidden}
- }{\ifstrempty{#1}{
- \boolfalse{@dramatis@hidden}
- \dramatisenv
- }{
- \ClassError{thalie}{%
- Environment dramatis does not accept option #1.%
- }{
- }
- }
- }
-}{%
- \notbool{@dramatis@hidden}{%
- \enddramatisenv
- }{}%
-}
-% \end{macrocode}
-% \end{environment}
-%
-% \begin{environment}{dramatisenv}
-% \changes{v0.09a}{2017/04/22}{It is now possible to customize style of dramatis person\ae.}
-% \begin{macro}{\dramatischaracter}
-% \begin{macro}{\dramatischaractername}
-% \begin{macro}{\dramatischaracterdescription}
-% \begin{macro}{\characterspace}
-% \begin{environment}{charactergroup}
-% \changes{v0.06}{2013/11/02}{Groups of characters are now aligned with other caracters.}
-% Customizable commands to build dramatis person\ae.
-% \begin{macrocode}
-% Environment used to *display* dramatis personae.
-\newenvironment{dramatisenv}{%
- \list{}{\rightmargin1cm\leftmargin2cm}\item[]
-}{%
- \endlist%
-}
-
-% Display character name
-\newcommand{\dramatischaractername}[1]{\textbf{#1}}
-
-% Display character description
-\newcommand{\dramatischaracterdescription}[1]{#1}
-
-% Adds a vertical space
-\newcommand{\characterspace}{ %
- \notbool{@dramatis@hidden}{%
- \smallskip\newline %
- }{} %
-}
-
-% Display dramatis personae name and description
-\newcommand{\dramatischaracter}[2]{ %
- \hspace*{-1cm} %
- \ifboolexpr{(not test {\ifdefempty{#1}}) and test {\ifdefempty{#2}}}{%
- \dramatischaractername{#1} %
- }{}%
- \ifboolexpr{ test{\ifdefempty{#1}} and not test{\ifdefempty{#2}}}{%
- \dramatischaracterdescription{#2} %
- }{}%
- \ifboolexpr{ (not test{\ifdefempty{#1}}) and (not test{\ifdefempty{#2}})}{%
- \dramatischaractername{#1}, \dramatischaracterdescription{#2} %
- }{}%
- \newline %
-}
-
-% Environment to manage groups of characters
- \newlength{\@spaceaftergroup}
-\newenvironment{charactergroup}[2][5cm]{%
- \notbool{@dramatis@hidden}{%
- \gdef\@groupname{#2} %
- \gdef\@grouplength{#1} %
- \hspace*{-1.3pt}\math\left. %
- \minipage[c]{#1} %
- \vspace*{2pt} %
- }{}%
-}{%
- \notbool{@dramatis@hidden}{%
- \vspace*{-8pt} %
- \endminipage %
- \right\} \endmath %
- %
- \setlength{\@spaceaftergroup}{\linewidth}
- \addtolength\@spaceaftergroup{-\@grouplength}
- \addtolength\@spaceaftergroup{-20pt}
- \begin{minipage}[c]{\@spaceaftergroup}
- \@groupname %
- \end{minipage}
- \newline %
- }{}%
-}
-% \end{macrocode}
-% \end{environment}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{environment}
-%
-% \subsubsection{Character definitions}
-% \begin{macro}{\setcharactername}
-% Set (or change) the name used to introduce the lines of a character.
-% \begin{macrocode}
-% The tough part of this code is to deal with optional argument.
-\newcommand{\setcharactername}[2]{%
- \expandafter\gdef\csname#1name\endcsname{%
- #2\@maybexspace%
- }%
- \expandafter\gdef\csname#1\endcsname{%
- \@ifnextchar[{%
- \defcharcommand@with{#2}%
- }{%
- \defcharcommand@without{#2}%
- }%
- }%
- \xappto{\@dramatis@clear}{%
- \global\noexpand\csundef{#1}%
- \global\noexpand\csundef{#1name}%
- }%
-}
-% \end{macrocode}
-% \end{macro}
-%
-% Define the command used to introduce a character's line. It takes two
-% arguments: the first one is the name of the command to define, and the second
-% one is the name of the character corresponding to this command.
-% \begin{macrocode}
-\newcommand{\@definecharactercommand}[2]{%
- \ifcsdef{#1}{%
- \ClassError{thalie}{%
- A command named \@backslashchar#1 already exists. We cannot define a new
- one.%
- }{%
- Choose another command name to introduce character #2's lines.%
- }%
- }{%
- }%
- \ifcsdef{#1name}{%
- \ClassError{thalie}{%
- A command named \@backslashchar#1name already exists. We cannot define a
- new one.%
- }{%
- Choose another command name to introduce character #2's lines, such that
- when a new command is defined by adding "name" to it, it does not
- conflict with an existing one.
- }%
- }{%
- }%
- \setcharactername{#1}{#2}%
-}
-\def\defcharcommand@with#1[#2]{\@speaks[#2]{#1}}
-\def\defcharcommand@without#1{\@speaks{#1}}
-% \end{macrocode}
-%
-% \begin{macro}{\character}
-% Define a character: put it in the dramatis person\ae{}, and define
-% corresponding commands.
-% \begin{macrocode}
-\pgfkeys{
- % Character definition
- /THALIE/CHARACTER/.is family,
- /THALIE/CHARACTER,
- cmd/.value required,
- cmd/.store in=\@cmd,
- drama/.value required,
- drama/.store in=\@drama,
- desc/.value required,
- desc/.store in=\@desc,
-}
-\newcommand{\character}[2][]{
- \undef{\@drama}
- \undef{\@cmd}
- \undef{\@desc}
- \pgfkeys{/THALIE/CHARACTER, #1}%
- % Forbidden combinations
- \ifboolexpr{
- ( test{\ifdef{\@cmd}} and test{\ifstrempty{#2}} ) or
- ( test{\ifstrempty{#2}} and test{\ifundef{\@cmd}} and test{\ifundef{\@desc}} and test{\ifundef{\@drama}} ) or
- ( test{\ifundef{\@cmd}} and (not test{\ifstrempty{#2}}) and test{\ifdef{\@drama}} )
- }{
- \ClassError{thalie}{Invalid character definition.}{All combination of omitted arguments are not allowed. See the documentation for more information}
- }{}
- % Defining character command
- \ifboolexpr{ test{\ifdef{\@cmd}} and (not test{\ifstrempty{#2}}) }{%
- \@definecharactercommand{\@cmd}{#2}
- }{}%
- \notbool{@dramatis@hidden}{%
- \ifboolexpr{ (not test{\ifstrempty{#2}}) and test{\ifdef{\@cmd}} and test{\ifdef{\@drama}} and test{\ifundef{\@desc}}}{%
- \ifdefempty{\@drama}{%
- % Hidden character. Nothing added to dramatis personae
- }{%
- % Populating dramatis personae
- \dramatischaracter{\@drama}{\@empty@}
- }%
- }{%
- % Populating dramatis personae
- \ifcsundef{@desc}{\gdef\@desc{}}{}%
- \ifcsundef{@drama}{\gdef\@drama{#2}}{}%
- \dramatischaracter{\@drama}{\@desc}
- }%
- }{}%
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\disposablecharacter}
-% Disposable character (character used only a few times, defined on-the-fly,
-% that does not appear in the dramatis person\ae{}).
-% \begin{macrocode}
-\newcommand{\disposablecharacter}[2][]{%
- \@speaks[#1]{#2}%
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{Stage directions}
-% \begin{macro}{\onstage}
-% Centered stage direction.
-% \begin{macrocode}
-\newcommand{\onstage}[1]{{\centering \emph{#1}\par\medskip}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\did}
-% Inline stage directions.
-% \changes{v0.12a}{2022/10/09}{The \texttt{xspace} option also affects \texttt{\bbackslash{}did}.}
-% \begin{macrocode}
-\newcommand{\did}[1]{\emph{(#1)}\@maybexspace}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{environment}{dida}
-% Bigger stage directions, in its own paragraph.
-% \begin{macrocode}
-\newenvironment{dida}{%
- \begin{quote}
- \begin{em}
- }{%
- \end{em}
- \end{quote}
-}
-% \end{macrocode}
-% \end{environment}
-%
-% \begin{macro}{\pause}
-% Shortcut for \lstinline|\did{\GetTranslation{Pause}}|.
-% \begin{macrocode}
-\newcommand\pause{\did{\GetTranslation{Pause}}}
-% \end{macrocode}
-% \end{macro}
-
-% \subsection{Splitting verses}
-% \begin{macro}{\pauseverse}
-% \changes{v0.07}{2015/12/28}{New commands \texttt{\bbackslash{}pauseverse}, \texttt{\bbackslash{}resumeverse}, \texttt{\bbackslash{}adjustverse}.}
-% \changes{v0.10c}{2021/09/26}{Document other implementations of \texttt{\bbackslash{}pauseverse} and \texttt{\bbackslash{}resumeverse}}
-% \begin{macro}{\resumeverse}
-% \begin{macro}{\adjustverse}
-% Commands to split a verse between several characters.
-% \begin{macrocode}
-% Thanks to Timothy Li for his question, and David Carlisle for his answer:
-% https://tex.stackexchange.com/questions/107726/107727#107727
-
-\newlength{\@verseadjust}
-\setlength{\@verseadjust}{0pt}
-
-\newcommand{\adjustverse}[1]{\setlength{\@verseadjust}{#1}}
-
-\newcommand{\pauseverse}{{\abovedisplayshortskip\z@\abovedisplayskip\z@
- \belowdisplayshortskip\z@\belowdisplayskip\z@
- $$\global\dimen\@ne\predisplaysize
- \xdef\tmp{%
- \predisplaysize\the\predisplaysize
- \prevgraf\the\prevgraf\relax}%
- $$\vskip\dimexpr-\parskip-\baselineskip\relax}\tmp
-}
-
-\newcommand{\resumeverse}{%
- \hspace{\@verseadjust}\hspace{\the\dimen\@ne}
-}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \subsection{Package options}
-% Manage package options.
-% \begin{macrocode}
-\RequirePackage{pgfopts}
-
-\pgfkeys{
- % Character style
- /THALIE/.cd,
- characterstyle/.value required,
- characterstyle/.default=simple,
- characterstyle/.is choice,
- characterstyle/bold/.code=\@setcharacterstyle{bold},
- characterstyle/center/.code=\@setcharacterstyle{center},
- characterstyle/margin/.code=\@setcharacterstyle{margin},
- characterstyle/simple/.code=\@setcharacterstyle{simple},
- characterstyle/arden/.code=\@setcharacterstyle{arden},
- characterstyle/imprimerie-verse/.code=\@setcharacterstyle{imprimerie-verse},
- characterstyle/imprimerie-prose/.code=\@setcharacterstyle{imprimerie-prose},
- characterstyle,
-}
-
-\pgfkeys{
- % play style
- /THALIE/.cd,
- playstyle/.value required,
- playstyle/.default=box,
- playstyle/.is choice,
- playstyle/center/.code=\def\@playstyle{center},
- playstyle/bigcenter/.code=\def\@playstyle{bigcenter},
- playstyle/box/.code=\def\@playstyle{box},
- playstyle/custom/.code=\def\@playstyle{custom},
- playstyle,
-}
-\pgfkeys{
- % act style
- /THALIE/.cd,
- actstyle/.value required,
- actstyle/.default=bigcenter,
- actstyle/.is choice,
- actstyle/center/.code=\def\@actstyle{center},
- actstyle/bigcenter/.code=\def\@actstyle{bigcenter},
- actstyle/box/.code=\def\@actstyle{box},
- actstyle/custom/.code=\def\@actstyle{custom},
- actstyle,
-}
-\pgfkeys{
- % scene style
- /THALIE/.cd,
- scenestyle/.value required,
- scenestyle/.default=center,
- scenestyle/.is choice,
- scenestyle/center/.code=\def\@scenestyle{center},
- scenestyle/bigcenter/.code=\def\@scenestyle{bigcenter},
- scenestyle/box/.code=\def\@scenestyle{box},
- scenestyle/custom/.code=\def\@scenestyle{custom},
- scenestyle,
-}
-
-\pgfkeys{
- % play level
- /THALIE/.cd,
- playlevel/.value required,
- playlevel/.default=chapter,
- playlevel/.store in=\@playlevel,
- playlevel,
-}
-\pgfkeys{
- % act level
- /THALIE/.cd,
- actlevel/.value required,
- actlevel/.default=section,
- actlevel/.store in=\@actlevel,
- actlevel,
-}
-\pgfkeys{
- % scene level
- /THALIE/.cd,
- scenelevel/.value required,
- scenelevel/.default=subsection,
- scenelevel/.store in=\@scenelevel,
- scenelevel,
-}
-\pgfkeys{
- % interlude level
- /THALIE/.cd,
- interludelevel/.value required,
- interludelevel/.default=act,
- interludelevel/.is choice,
- interludelevel/play/.code=\def\@interludelevel{play},
- interludelevel/act/.code=\def\@interludelevel{act},
- interludelevel/scene/.code=\def\@interludelevel{scene},
- interludelevel,
-}
-\newif\if@xspace
-\pgfkeys{
- % xspace option
- /THALIE/.cd,
- xspace/.value required,
- xspace/.is if=@xspace,
- xspace/.default=true,
- xspace,
-}
-
-\ProcessPgfPackageOptions{/THALIE}
-% \end{macrocode}
-%
-% \begin{macro}{\setthalieoptions}
-% \changes{v0.09a}{2017/04/22}{Add command \texttt{\bbackslash{}setthalieoptions}.}
-% Redefine package options.
-% \begin{macrocode}
-\newcommand{\setthalieoptions}[1]{%
- \pgfkeys{/THALIE/.cd, #1}%
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \changes{v0.05}{2013/06/08}{First published version.}
-%
-% \addcontentsline{toc}{section}{Change History}
-% \PrintChanges
-%
-% \begin{thebibliography}{9}
-% \addcontentsline{toc}{section}{References}
-% \bibitem{imprimerienationale}
-% {Imprimerie nationale},
-% \emph{Lexique des r\`egles typographiques en usage \`a l'Imprimerie nationale},
-% 2002,
-% ISBN : 978-2-7433-0482-9
-% \bibitem{cyrano}
-% {Edmond Rostand},
-% \emph{Cyrano de Bergerac},
-% 1897
-% \bibitem{midsummer}
-% {William Shakespeare},
-% \emph{A Midsummer Night's Dream},
-% 1600
-% \bibitem{dtxtut}
-% {Scott Pakin},
-% \emph{How to Package Your \LaTeX{} Package --- Tutorial on writing .dtx and .ins files},
-% 2004,
-% \url{http://www.ctan.org/pkg/dtxtut/}
-% \bibitem{clsguide}
-% {The \LaTeX{} Team},
-% \emph{\LaTeXe{} for class and package writers},
-% 2006,
-% \url{http://www.ctan.org/pkg/clsguide}
-% \bibitem{drama}
-% {Matt Swift},
-% \emph{drama --- Production-style stage script in LaTeX},
-% 2001,
-% \url{http://www.ctan.org/pkg/drama}
-% \bibitem{dramatist}
-% {Massimiliano Dominici},
-% \emph{dramatist --- Typeset dramas, both in verse and in prose},
-% 2005,
-% \url{http://www.ctan.org/pkg/dramatist}
-% \bibitem{play}
-% {James Kilfiger},
-% \emph{play --- Typeset drama using \LaTeX{}},
-% 2001,
-% \url{http://www.ctan.org/pkg/play}
-% \bibitem{screenplay}
-% {John Pate},
-% \emph{screenplay --- A class file to typeset screen­plays},
-% 2012,
-% \url{http://www.ctan.org/pkg/screenplay}
-% \bibitem{sides}
-% {Wing L Mui},
-% \emph{sides --- A LaTeX class for typesetting stage plays},
-% 2005,
-% \url{http://www.ctan.org/pkg/sides}
-% \end{thebibliography}
-%
-% \StopEventually{%
-% \addcontentsline{toc}{section}{Index}
-% \PrintIndex
-% }
-% \Finale
-\endinput
diff --git a/macros/latex/contrib/thalie/thalie.ins b/macros/latex/contrib/thalie/thalie.ins
deleted file mode 100644
index 6366c6e995..0000000000
--- a/macros/latex/contrib/thalie/thalie.ins
+++ /dev/null
@@ -1,59 +0,0 @@
-%% Copyright 2010-2022 Louis Paternault
-%%
-%% This work may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3
-%% of this license or (at your option) any later version.
-%% The latest version of this license is in
-%% http://www.latex-project.org/lppl.txt
-%% and version 1.3 or later is part of all distributions of LaTeX
-%% version 2005/12/01 or later.
-%%
-%% This work has the LPPL maintenance status `maintained'.
-%%
-%% The Current Maintainer of this work is Louis Paternault
-%%
-%% This work consists of the files thalie.dtx and thalie.ins
-%% and the derived file thalie.sty.
-
-\input{docstrip}
-
-\keepsilent
-\usedir{tex/latex/thalie}
-
-\preamble
-Copyright 2010-2022 Louis Paternault
-
-This work may be distributed and/or modified under the
-conditions of the LaTeX Project Public License, either version 1.3
-of this license or (at your option) any later version.
-The latest version of this license is in
- http://www.latex-project.org/lppl.txt
-and version 1.3 or later is part of all distributions of LaTeX
-version 2005/12/01 or later.
-
-This work has the LPPL maintenance status `maintained'.
-
-The Current Maintainer of this work is Louis Paternault
-
-This work consists of the files thalie.dtx and thalie.ins
-and the derived file thalie.sty.
-\endpreamble
-
-\generate{\file{thalie.sty}{\from{thalie.dtx}{package}}}
-
-\obeyspaces
-\Msg{****************************************************}
-\Msg{* *}
-\Msg{* To finish the installation you have to move the *}
-\Msg{* following file into a directory searched by TeX: *}
-\Msg{* *}
-\Msg{* thalie.sty *}
-\Msg{* *}
-\Msg{* To produce the documentation run the file *}
-\Msg{* thalie.dtx through LaTeX. *}
-\Msg{* *}
-\Msg{* Happy TeXing! *}
-\Msg{* *}
-\Msg{****************************************************}
-
-\endbatchfile
diff --git a/macros/latex/contrib/thalie/thalie.pdf b/macros/latex/contrib/thalie/thalie.pdf
index 5cb97d8e2f..280500df20 100644
--- a/macros/latex/contrib/thalie/thalie.pdf
+++ b/macros/latex/contrib/thalie/thalie.pdf
Binary files differ
diff --git a/macros/latex/contrib/thalie/thalie.sty b/macros/latex/contrib/thalie/thalie.sty
new file mode 100644
index 0000000000..9007b0eede
--- /dev/null
+++ b/macros/latex/contrib/thalie/thalie.sty
@@ -0,0 +1,693 @@
+% Copyright 2010-2022 Louis Paternault
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Louis Paternault
+%
+% This work consists of the files thalie.tex and thalie.sty.
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{thalie}
+ [2022/12/11 v0.13a A package to typeset drama plays]
+
+
+\RequirePackage{pgfkeys}
+\RequirePackage{etoolbox}
+\RequirePackage{suffix}
+\RequirePackage{tabularx}
+\RequirePackage{xspace}
+\RequirePackage{translations}
+\LoadDictionary{thalie}
+\LoadDictionaryFor{fallback}{thalie}
+\newcommand{\playname}{\GetTranslation{Play}}
+\newcommand{\actname}{\GetTranslation{Act}}
+\newcommand{\scenename}{\GetTranslation{Scene}}
+\newcommand{\interludename}{\GetTranslation{Interlude}}
+\newcommand{\curtainname}{\GetTranslation{Curtain}}
+\newcommand{\pausename}{\GetTranslation{Pause}}
+\newcommand{\playmark}[1]{%
+ \markboth{\MakeUppercase{#1}}{}%
+}
+\newcommand{\actmark}[1]{%
+ \markright{\MakeUppercase{%
+ \GetTranslation{Act}\ \theact%
+ \ifdefempty{#1}{}{: #1}%
+ }}%
+}
+\newcommand{\scenemark}[1]{%
+}
+\newcounter{play}
+\renewcommand{\theplay}{\arabic{play}}
+\newcounter{act}[play]
+\renewcommand{\theact}{\Roman{act}}
+\newcounter{scene}[act]
+\renewcommand{\thescene}{\arabic{scene}}
+\newcommand{\@displaytitle}[3]{
+ % Arguments:
+ % - Style
+ % - Label (none = not in toc)
+ % - Title
+ \ifdefstring{#1}{center}{
+ \begin{center}
+ \textsc{#2}
+
+ #3
+ \end{center}
+ }{\ifdefstring{#1}{bigcenter}{
+ \begin{center}
+ \Large
+ \textsc{#2}
+
+ #3
+ \end{center}
+ }{\ifdefstring{#1}{box}{
+ \begin{center}
+ \framebox{\begin{minipage}{0.7\textwidth}
+ \begin{center}
+ \Large \bfseries
+ \vspace{0.5em}
+
+ #2
+ \ifboolexpr{test{\ifstrempty{#3}} or test{\ifstrempty{#2}}}{}{---}
+ #3
+
+ \vspace{0.5em}
+ \end{center}
+ \end{minipage}}
+ \end{center}
+ \vspace{1em}
+ }{}}}%
+}
+\newcommand\@clearpage[1]{%
+ % Clear page if necessary
+ \ifboolexpr{test{\ifdefstring{#1}{part}} or test{\ifdefstring{#1}{chapter}}}{
+ \cleardoublepage
+ \thispagestyle{empty}
+ }{}%
+}
+
+\newcommand{\play}[2][]{%
+ \refstepcounter{play}
+ \ifstrempty{#1}{
+ \def\@short{#2}
+ }{
+ \def\@short{#1}
+ }
+ \@clearpage{\@playlevel}
+ \playmark{\@short}
+ \addcontentsline{toc}{\@playlevel}{\@short}
+ \ifdefstring{\@playstyle}{custom}{
+ \customplay{\theplay}{#2}
+ }{
+ \@displaytitle{\@playstyle}{}{#2}
+ }
+}
+\WithSuffix\newcommand\play*[1]{%
+ \@clearpage{\@playlevel}
+ \ifdefstring{\@playstyle}{custom}{
+ \customplay*{#1}
+ }{
+ \@displaytitle{\@playstyle}{}{#1}
+ }
+}
+\newcommand{\act}[2][]{%
+ \refstepcounter{act}
+ \ifstrempty{#1}{
+ \def\@short{#2}
+ }{
+ \def\@short{#1}
+ }
+ \ifdefempty{\@short}{
+ \def\@label{\GetTranslation{Act} \theact{}}
+ }{
+ \def\@label{\GetTranslation{Act} \theact{}\xspace: }
+ }
+ \@clearpage{\@actlevel}
+ \actmark{\@short}
+ \addcontentsline{toc}{\@actlevel}{\@label\@short}
+ \ifdefstring{\@actstyle}{custom}{
+ \customact{\theact}{#2}
+ }{
+ \@displaytitle{\@actstyle}{\GetTranslation{Act} \theact}{#2}
+ }
+}
+\WithSuffix\newcommand\act*[1]{%
+ \@clearpage{\@actlevel}
+ \ifdefstring{\@actstyle}{custom}{
+ \customact*{#1}
+ }{
+ \@displaytitle{\@actstyle}{}{#1}
+ }
+}
+\newcommand{\scene}[2][]{%
+ \refstepcounter{scene}
+ \ifstrempty{#1}{
+ \def\@short{#2}
+ }{
+ \def\@short{#1}
+ }
+ \ifdefempty{\@short}{
+ \def\@label{\GetTranslation{Scene} \thescene{}}
+ }{
+ \def\@label{\GetTranslation{Scene} \thescene{}\xspace: }
+ }
+ \@clearpage{\@scenelevel}
+ \scenemark{\@short}
+ \addcontentsline{toc}{\@scenelevel}{\@label\@short}
+ \ifdefstring{\@scenestyle}{custom}{
+ \customscene{\thescene}{#2}
+ }{
+ \@displaytitle{\@scenestyle}{\GetTranslation{Scene} \thescene}{#2}
+ }
+}
+\WithSuffix\newcommand\scene*[1]{%
+ \@clearpage{\@scenelevel}
+ \ifdefstring{\@scenestyle}{custom}{
+ \customscene*{#1}
+ }{
+ \@displaytitle{\@scenestyle}{}{#1}
+ }
+}
+\newcommand{\interlude}[2][]{%
+ \ifstrempty{#1}{
+ \def\@short{#2}
+ }{
+ \def\@short{#1}
+ }
+ \ifdefempty{\@short}{
+ \def\@label{\GetTranslation{Interlude}}
+ }{
+ \def\@label{\GetTranslation{Interlude}\xspace: }
+ }
+ \ifdefstring{\@interludelevel}{play}{
+ \@clearpage{\@playlevel}
+ \playmark{\@short}
+ \addcontentsline{toc}{\@playlevel}{\@label\@short}
+ \@displaytitle{\@playstyle}{\GetTranslation{Interlude}}{#2}
+ }{\ifdefstring{\@interludelevel}{act}{
+ \@clearpage{\@actlevel}
+ \actmark{\@short}
+ \addcontentsline{toc}{\@actlevel}{\@label\@short}
+ \@displaytitle{\@actstyle}{\GetTranslation{Interlude}}{#2}
+ }{% \@interludelevel is scene
+ \@clearpage{\@scenelevel}
+ \scenemark{\@short}
+ \addcontentsline{toc}{\@scenelevel}{\@label\@short}
+ \@displaytitle{\@scenestyle}{\GetTranslation{Interlude}}{#2}
+ }}
+}
+\WithSuffix\newcommand\interlude*[1]{%
+ \ifdefstring{\@interludelevel}{play}{
+ \@clearpage{\@playlevel}
+ \@displaytitle{\@playstyle}{\GetTranslation{Interlude}}{#1}
+ }{\ifdefstring{\@interludelevel}{act}{
+ \@clearpage{\@actlevel}
+ \@displaytitle{\@actstyle}{\GetTranslation{Interlude}}{#1}
+ }{% \@interludelevel is scene
+ \@clearpage{\@scenelevel}
+ \@displaytitle{\@scenestyle}{\GetTranslation{Interlude}}{#1}
+ }}
+}
+\newcommand\curtain{
+ \begin{center}
+ \Large\textsc{\GetTranslation{Curtain}}
+ \end{center}
+}
+\newcommand{\@maybexspace}{%
+ \if@xspace%
+ \xspace%
+ \fi%
+}
+\newcommand{\@speaks}[2][]{%
+ \ifstrempty{#1}{%
+ \speakswithoutdirection{#2}%
+ }{%
+ \speakswithdirection{#2}{#1}%
+ }\@maybexspace%
+}
+\newenvironment{@smallcenter}
+ {\par\smallskip\centering}
+ {\par\nopagebreak\ignorespacesafterend}
+\providecommand{\speakswithdirection}{}
+\providecommand{\speakswithoutdirection}{}
+\newcommand{\@setcharacterstyle}[1]{
+ \ifstrequal{#1}{bold}{%
+ % Bold style
+ \renewcommand\speakswithdirection[2]{%
+ \noindent%
+ {\bfseries\sffamily ##1} \emph{(##2)}\xspace:%
+ }
+ \renewcommand\speakswithoutdirection[1]{%
+ \noindent%
+ {\bfseries\sffamily ##1\xspace:}%
+ }%
+ }{}%
+ \ifstrequal{#1}{center}{%
+ % Center style
+ \renewcommand\speakswithdirection[2]{%
+ \begin{center}%
+ \textsc{##1},\\\emph{##2}%
+ \end{center}%
+ \par\ignorespacesafterend%
+ }%
+ \renewcommand\speakswithoutdirection[1]{%
+ \begin{center}%
+ \textsc{##1}%
+ \end{center}%
+ \par\ignorespacesafterend%
+ }%
+ }{}%
+ \ifstrequal{#1}{imprimerie-verse}{%
+ % Style for verse plays defined by the French Imprimerie nationale
+ \renewcommand\speakswithdirection[2]{%
+ \begin{@smallcenter}%
+ \textsc{##1}, \emph{##2}%
+ \end{@smallcenter}%
+ }%
+ \renewcommand\speakswithoutdirection[1]{%
+ \begin{@smallcenter}%
+ \textsc{##1}%
+ \end{@smallcenter}%
+ }%
+ }{}%
+ \ifstrequal{#1}{imprimerie-prose}{%
+ % Style for prose plays defined by the French Imprimerie nationale
+ \renewcommand\speakswithdirection[2]{%
+ \noindent\hspace*{-\parindent}\textsc{##1}, \emph{##2}\xspace:%
+ }%
+ \renewcommand\speakswithoutdirection[1]{%
+ \noindent\hspace*{-\parindent}\textsc{##1}\xspace:%
+ }%
+ }{}%
+ \ifstrequal{#1}{arden}{%
+ \renewcommand\speakswithdirection[2]{%
+ \noindent\hspace*{-\parindent}\textsc{\MakeLowercase{##1}} [\emph{##2}]\quad%
+ }%
+ \renewcommand\speakswithoutdirection[1]{%
+ \noindent\hspace*{-\parindent}\textsc{\MakeLowercase{##1}}\quad%
+ }%
+ }{}%
+ \ifstrequal{#1}{simple}{%
+ % Simple style
+ \renewcommand\speakswithdirection[2]{%
+ \indent\textsc{##1}, \emph{##2}\xspace:%
+ }%
+ \renewcommand\speakswithoutdirection[1]{%
+ \indent\textsc{##1}\xspace:%
+ }%
+ }{}%
+ \ifstrequal{#1}{margin}{%
+ % Margin style
+ \setlength{\leftskip}{3cm}
+ \renewcommand\speakswithdirection[2]{%
+ \hspace{-3cm} ##1 ##2
+ }
+ \renewcommand\speakswithoutdirection[1]{%
+ \hspace{-3cm} ##1
+ }%
+ }{}%
+}
+\providebool{@dramatis@hidden}
+\pgfkeys{
+ % Character definition
+ /THALIE/DRAMATIS/.is family,
+ /THALIE/DRAMATIS,
+ hidden/.default=true,
+ hidden/.is choice,
+ hidden/true/.code=\booltrue{@dramatis@hidden},
+ hidden/false/.code=\boolfalse{@dramatis@hidden},
+ defaultcast/.default={},
+ defaultcast/.value required,
+ defaultcast/.store in=\@defaultcast,
+}
+\newcommand{\@dramatis@clear}{}
+\newcommand{\@empty@}{}
+\newenvironment{dramatis}[1][]{
+ \@dramatis@clear{}
+ \undef{\@dramatis@clear}
+ \pgfkeys{/THALIE/DRAMATIS/.cd, #1}
+ \ifbool{@dramatis@hidden}{%
+ % Nothing
+ }{%
+ \dramatisenv%
+ }%
+}{%
+ \notbool{@dramatis@hidden}{%
+ \enddramatisenv
+ }{}%
+}
+\newenvironment{dramatisenv}{%
+ \list{}{\rightmargin1cm\leftmargin2cm}\item[]
+}{%
+ \endlist%
+}
+
+\newcommand{\dramatischaractername}[1]{\textbf{#1}}
+
+\newcommand{\dramatischaracterdescription}[1]{#1}
+
+\newcommand{\dramatischaractercast}[1]{#1}
+
+\newcommand{\characterspace}{ %
+ \notbool{@dramatis@hidden}{%
+ \smallskip\newline %
+ }{}%
+}
+
+\newcommand{\dramatischaracter}[3]{ %
+ \hspace*{-1cm} %
+ \ifboolexpr{(not test {\ifdefempty{#1}}) and test {\ifdefempty{#2}}}{%
+ \dramatischaractername{#1} %
+ }{}%
+ \ifboolexpr{ test{\ifdefempty{#1}} and not test{\ifdefempty{#2}}}{%
+ \dramatischaracterdescription{#2} %
+ }{}%
+ \ifboolexpr{ (not test{\ifdefempty{#1}}) and (not test{\ifdefempty{#2}})}{%
+ \dramatischaractername{#1}, \dramatischaracterdescription{#2} %
+ }{}%
+ \ifdefempty{#3}{}{\dotfill\dramatischaractercast{#3}}%
+ \newline %
+}
+
+\newlength{\@spaceaftergroup}
+\newenvironment{dramatischaractergroup}[2]{
+ \gdef\@groupname{#2} %
+ \gdef\@grouplength{#1} %
+ \hspace*{-1.3pt}\math\left. %
+ \minipage[c]{#1} %
+ \vspace*{2pt} %
+}{%
+ \vspace*{-8pt} %
+ \endminipage %
+ \right\} \endmath %
+ %
+ \setlength{\@spaceaftergroup}{\linewidth}
+ \addtolength\@spaceaftergroup{-\@grouplength}
+ \addtolength\@spaceaftergroup{-20pt}
+ \begin{minipage}[c]{\@spaceaftergroup}
+ \@groupname %
+ \end{minipage}
+ \newline %
+}
+\newenvironment{charactergroup}[2][5cm]{%
+ \notbool{@dramatis@hidden}{%
+ \dramatischaractergroup{#1}{#2}
+ }{}%
+}{%
+ \notbool{@dramatis@hidden}{%
+ \enddramatischaractergroup
+ }{}%
+}
+
+\newenvironment{dramatischaractercastgroup}[3]{%
+ \ifdefempty{#3}{
+ \hspace*{-1cm} %
+ \ifboolexpr{(not test {\ifdefempty{#1}}) and test {\ifdefempty{#2}}}{%
+ \dramatischaractername{#1} %
+ }{}%
+ \ifboolexpr{ test{\ifdefempty{#1}} and not test{\ifdefempty{#2}}}{%
+ \dramatischaracterdescription{#2} %
+ }{}%
+ \ifboolexpr{ (not test{\ifdefempty{#1}}) and (not test{\ifdefempty{#2}})}{%
+ \dramatischaractername{#1}, \dramatischaracterdescription{#2} %
+ }{}%
+ \hfill%
+ }{
+ \ClassError{thalie}{%
+ Environment "castgroup" cannot have a non-empty "cast" argument.%
+ }{}%
+ }%
+}{}
+
+\newenvironment{castgroup}[2][]{%
+ \@thalie@parsecharacter{#1}{#2}{dramatischaractercastgroup}%
+ \notbool{@dramatis@hidden}{%
+ \math\left\{%
+ \array{r}%
+ }{}%
+}{%
+ \notbool{@dramatis@hidden}{%
+ \endarray%
+ \right.\endmath%
+ \newline%
+ }{}%
+ \enddramatischaractercastgroup
+}
+\newcommand{\dramatiscast}[1]{%
+ % Command used to display cast inside a castgroup.
+ % Can be redefined by user.
+ \notbool{@dramatis@hidden}{%
+ \hbox{\dramatischaractercast{#1}\hspace*{-6pt}}\tabularnewline%
+ }{}%
+}
+\newcommand{\cast}[1]{%
+ % "Public" command, used by author in the dramatis personae.
+ % Does nothing fancy right now, but how knows?
+ \dramatiscast{#1}%
+}
+
+\newcommand{\setcharactername}[2]{%
+ \expandafter\gdef\csname#1name\endcsname{%
+ #2\@maybexspace%
+ }%
+ \expandafter\gdef\csname#1\endcsname{%
+ \@ifnextchar[{%
+ \defcharcommand@with{#2}%
+ }{%
+ \defcharcommand@without{#2}%
+ }%
+ }%
+ \xappto{\@dramatis@clear}{%
+ \global\noexpand\csundef{#1}%
+ \global\noexpand\csundef{#1name}%
+ }%
+}
+\newcommand{\@definecharactercommand}[2]{%
+ \ifcsdef{#1}{%
+ \ClassError{thalie}{%
+ A command named \@backslashchar#1 already exists. We cannot define a new
+ one.%
+ }{%
+ Choose another command name to introduce character #2's lines.%
+ }%
+ }{%
+ }%
+ \ifcsdef{#1name}{%
+ \ClassError{thalie}{%
+ A command named \@backslashchar#1name already exists. We cannot define a
+ new one.%
+ }{%
+ Choose another command name to introduce character #2's lines, such that
+ when a new command is defined by adding "name" to it, it does not
+ conflict with an existing one.
+ }%
+ }{%
+ }%
+ \setcharactername{#1}{#2}%
+}
+\def\defcharcommand@with#1[#2]{\@speaks[#2]{#1}}
+\def\defcharcommand@without#1{\@speaks{#1}}
+\pgfkeys{
+ % Character definition
+ /THALIE/CHARACTER/.is family,
+ /THALIE/CHARACTER,
+ cmd/.value required,
+ cmd/.store in=\@cmd,
+ cast/.value required,
+ cast/.store in=\@cast,
+ drama/.value required,
+ drama/.store in=\@drama,
+ desc/.value required,
+ desc/.store in=\@desc,
+}
+\newcommand{\@thalie@parsecharacter}[3]{%
+ % Parse a character definition. Arguments are:
+ % #1: Optional arguments of \character: [drama={foo}, cast={bar}]
+ % #2: Mandatory argument of \character (character name)
+ % #3: Name of the command to call to display this character definition.
+ \undef{\@drama}
+ \undef{\@cmd}
+ \undef{\@cast}
+ \undef{\@desc}
+ \pgfkeys{/THALIE/CHARACTER, #1}%
+ \ifcsundef{@cast}{%
+ \ifcsdef{@defaultcast}{%
+ \gdef\@cast{\@defaultcast}%
+ }{%
+ \gdef\@cast{}%
+ }%
+ }{}%
+ % Forbidden combinations
+ \ifboolexpr{
+ ( ( test{\ifdef{\@cmd}} and not test{\ifdefempty{\@cmd}} ) and test{\ifstrempty{#2}} ) or
+ ( ( test{\ifundef{\@cmd}} or test{\ifdefempty{\@cmd}} ) and not test{\ifstrempty{#2}} ) or
+ ( test{\ifdefempty{\@drama}} and ( test{\ifdef{\@desc}} and not test{\ifdefempty{\@desc}} ) ) or
+ ( test{\ifundef{\@cmd}} and test{\ifundef{\@desc}} and test{\ifundef{\@drama}} and test{\ifstrempty{#2}} ) or
+ %( ( test{\ifundef{\@cmd}} or test{\ifdefempty{\@cmd}} ) and test{\ifstrempty{#2}} and ( test{\ifdefempty{\@drama}} or test{\ifundef{\@drama}} ))
+ ( ( test{\ifundef{\@desc}} or test{\ifdefempty{\@desc}} ) and test{\ifstrempty{#2}} and ( test{\ifdefempty{\@drama}} or test{\ifundef{\@drama}} ))
+ }{
+ \ClassError{thalie}{Invalid character definition.}{All combination of omitted arguments are not allowed. See the documentation for more information}
+ }{}%
+ % Defining character command
+ \ifboolexpr{ test{\ifdef{\@cmd}} and (not test{\ifstrempty{#2}}) }{%
+ \@definecharactercommand{\@cmd}{#2}
+ }{}%
+ \ifboolexpr{ bool{@dramatis@hidden} or test{\ifdefempty{\@drama}} }{%
+ % Hidden character. Nothing added to dramatis personae
+ }{%
+ \ifcsundef{@desc}{\gdef\@desc{}}{}%
+ \ifcsundef{@drama}{\gdef\@drama{#2}}{}%
+ \csuse{#3}{\@drama}{\@desc}{\@cast}%
+ }%
+}
+\newcommand{\character}[2][]{%
+ \@thalie@parsecharacter{#1}{#2}{dramatischaracter}%
+}
+
+\newcommand{\disposablecharacter}[2][]{%
+ \@speaks[#1]{#2}%
+}
+\newcommand{\onstage}[1]{{\centering \emph{#1}\par\medskip}}
+\newcommand{\did}[1]{\emph{(#1)}\@maybexspace}
+\newenvironment{dida}{%
+ \begin{quote}
+ \begin{em}
+ }{%
+ \end{em}
+ \end{quote}
+}
+\newcommand\pause{\did{\GetTranslation{Pause}}}
+
+
+\newlength{\@verseadjust}
+\setlength{\@verseadjust}{0pt}
+
+\newcommand{\adjustverse}[1]{\setlength{\@verseadjust}{#1}}
+
+\newcommand{\pauseverse}{{\abovedisplayshortskip\z@\abovedisplayskip\z@
+ \belowdisplayshortskip\z@\belowdisplayskip\z@
+ $$\global\dimen\@ne\predisplaysize
+ \xdef\tmp{%
+ \predisplaysize\the\predisplaysize
+ \prevgraf\the\prevgraf\relax}%
+ $$\vskip\dimexpr-\parskip-\baselineskip\relax}\tmp
+}
+
+\newcommand{\resumeverse}{%
+ \hspace{\@verseadjust}\hspace{\the\dimen\@ne}
+}
+\RequirePackage{pgfopts}
+
+\pgfkeys{
+ % Character style
+ /THALIE/.cd,
+ characterstyle/.value required,
+ characterstyle/.default=simple,
+ characterstyle/.is choice,
+ characterstyle/bold/.code=\@setcharacterstyle{bold},
+ characterstyle/center/.code=\@setcharacterstyle{center},
+ characterstyle/margin/.code=\@setcharacterstyle{margin},
+ characterstyle/simple/.code=\@setcharacterstyle{simple},
+ characterstyle/arden/.code=\@setcharacterstyle{arden},
+ characterstyle/imprimerie-verse/.code=\@setcharacterstyle{imprimerie-verse},
+ characterstyle/imprimerie-prose/.code=\@setcharacterstyle{imprimerie-prose},
+ characterstyle,
+}
+
+\pgfkeys{
+ % play style
+ /THALIE/.cd,
+ playstyle/.value required,
+ playstyle/.default=box,
+ playstyle/.is choice,
+ playstyle/center/.code=\def\@playstyle{center},
+ playstyle/bigcenter/.code=\def\@playstyle{bigcenter},
+ playstyle/box/.code=\def\@playstyle{box},
+ playstyle/custom/.code=\def\@playstyle{custom},
+ playstyle,
+}
+\pgfkeys{
+ % act style
+ /THALIE/.cd,
+ actstyle/.value required,
+ actstyle/.default=bigcenter,
+ actstyle/.is choice,
+ actstyle/center/.code=\def\@actstyle{center},
+ actstyle/bigcenter/.code=\def\@actstyle{bigcenter},
+ actstyle/box/.code=\def\@actstyle{box},
+ actstyle/custom/.code=\def\@actstyle{custom},
+ actstyle,
+}
+\pgfkeys{
+ % scene style
+ /THALIE/.cd,
+ scenestyle/.value required,
+ scenestyle/.default=center,
+ scenestyle/.is choice,
+ scenestyle/center/.code=\def\@scenestyle{center},
+ scenestyle/bigcenter/.code=\def\@scenestyle{bigcenter},
+ scenestyle/box/.code=\def\@scenestyle{box},
+ scenestyle/custom/.code=\def\@scenestyle{custom},
+ scenestyle,
+}
+
+\pgfkeys{
+ % play level
+ /THALIE/.cd,
+ playlevel/.value required,
+ playlevel/.default=chapter,
+ playlevel/.store in=\@playlevel,
+ playlevel,
+}
+\pgfkeys{
+ % act level
+ /THALIE/.cd,
+ actlevel/.value required,
+ actlevel/.default=section,
+ actlevel/.store in=\@actlevel,
+ actlevel,
+}
+\pgfkeys{
+ % scene level
+ /THALIE/.cd,
+ scenelevel/.value required,
+ scenelevel/.default=subsection,
+ scenelevel/.store in=\@scenelevel,
+ scenelevel,
+}
+\pgfkeys{
+ % interlude level
+ /THALIE/.cd,
+ interludelevel/.value required,
+ interludelevel/.default=act,
+ interludelevel/.is choice,
+ interludelevel/play/.code=\def\@interludelevel{play},
+ interludelevel/act/.code=\def\@interludelevel{act},
+ interludelevel/scene/.code=\def\@interludelevel{scene},
+ interludelevel,
+}
+\newif\if@xspace
+\pgfkeys{
+ % xspace option
+ /THALIE/.cd,
+ xspace/.value required,
+ xspace/.is if=@xspace,
+ xspace/.default=true,
+ xspace,
+}
+
+\ProcessPgfPackageOptions{/THALIE}
+\newcommand{\setthalieoptions}[1]{%
+ \pgfkeys{/THALIE/.cd, #1}%
+}
+\endinput
+%%
+%% End of file `thalie.sty'.
diff --git a/macros/latex/contrib/thalie/thalie.tex b/macros/latex/contrib/thalie/thalie.tex
new file mode 100644
index 0000000000..e2c824b235
--- /dev/null
+++ b/macros/latex/contrib/thalie/thalie.tex
@@ -0,0 +1,1325 @@
+\documentclass[
+ load-preamble-,
+ babel-options=english,
+ add-index=true,
+]{cnltx-doc}
+
+\usepackage{thalie}
+
+\usepackage{emoji}
+\setcnltx{
+ name = thalie,
+ title = {\emoji{performing-arts} Thalie},
+ version = v0.13a,
+ date = 2022-12-11,
+ info = A \LaTeX{} package to typeset drama plays,
+ authors = Louis Paternault ,
+ email = spalax(at)gresille(dot)org ,
+ url = https://framagit.org/spalax/thalie ,
+ abstract = {%
+ This package is meant to typeset drama plays using \LaTeX{}. It provides commands to introduce characters' lines, to render stage direction, to divide a play into acts and scenes, to automatically build the dramatis person\ae{}, etc.
+ } ,
+ add-cmds = {
+ act,
+ actname,
+ adjustverse,
+ character,
+ characterspace,
+ customact,
+ customplay,
+ customscene,
+ did,
+ disposablecharacter,
+ dramatiscast
+ dramatischaracter,
+ dramatischaractercast,
+ dramatischaracterdescription,
+ dramatischaractername,
+ pauseverse,
+ play,
+ playname,
+ resumeverse,
+ scene,
+ scenename,
+ setcharactername,
+ setthalieoptions,
+ speakswithdirection,
+ speakswithoutdirection,
+ theact,
+ theplay,
+ thescene,
+ },
+ add-envs = {
+ castgroup,
+ charactergroup,
+ dida,
+ dramatis,
+ dramatischaractercastgroup,
+ dramatischaractergroup,
+ dramatisenv,
+ },
+ add-silent-cmds = {
+ enquote,
+ },
+ add-sourcecode-options = {
+ numbers = none,
+ },
+}
+
+\usepackage{tabularray}
+\UseTblrLibrary{booktabs}
+\usepackage{booktabs}
+\usepackage[nospace]{varioref}
+\usepackage[autostyle=true]{csquotes}
+\usepackage{graphicx}
+\usepackage{markdown}
+
+\usepackage{polyglossia}
+\setmainlanguage{english}
+\setotherlanguages{french,greek}
+\newfontfamily\greekfont[Script=Greek]{Linux Libertine O}
+
+\newcommand{\bbackslash}{\symbol{92}}
+\usepackage{manfnt}
+\newcommand{\danger}{\marginpar[\hfill\dbend]{\dbend\hfill}}
+
+\setcounter{tocdepth}{2}
+
+\begin{document}
+
+This document introduces the \textsf{thalie} package, used to typeset drama plays.
+
+\part{Introduction}
+
+\section{About \pkg*{thalie}}
+
+\subsection{Why Thalie?}
+
+\enquote{\textfrench{Thalie}} is the French translation of \enquote{Thalia} (\enquote{\textgreek{Θάλεια}} in Greek), the Muse of comedy and idyllic poetry\footnote{More information : \url{https://fr.wikipedia.org/wiki/Thalie_(Muse)}.}. It seems an appropriate name for a tool dedicated to help writing drama.
+
+\subsection{Other classes and packages}
+This package is far from being the only one that can be used to render drama
+plays. If you do not like my work, you can use one of the following ones (and
+I guess there exists others):
+\pkg{drama} \cite{drama},
+\pkg{dramatist} \cite{dramatist},
+\pkg{play} \cite{play},
+\pkg{screenplay} \cite{screenplay},
+\pkg{sides} \cite{sides}.
+
+I began to write this package in 2010, and now, at the end of 2012, I must admit that I wonder why I started this…
+ There are already several such packages in \ctan\footnote{\url{http://www.ctan.org/topic/drama-script}}, and the \pkg{dramatist} package seems really nice (I borrowed some ideas and copied some code from it).
+There are actually a few improvements in my package compared to \pkg{dramatist}:
+in my package, plays, acts and scenes appear in the table of contents;
+it is possible to include several plays in a single document;
+there are more options when building the dramatis person\ae{};
+headers and footers are taken into account, etc.
+But these improvements are small; it might have been smarter to contribute to \pkg{dramatist} instead of starting my own package.
+The good part is that I have a package that fits my needs, and I learned how to write a \LaTeX{} package.
+
+Oh, yes! I know why I started this: I am a geek…
+
+\subsection{License}
+This work may be distributed and/or modified under the conditions of the \LPPL,
+either version 1.3 of this license or (at your option) any later version.
+
+Further information can be found in the \texttt{.dtx} file used to build this document.
+
+In short (but this paragraph has no legal value), you can use this package freely to render your drama plays, and modify it almost freely.
+Nevertheless, if you like my work, you can invite me to the performance of the play you typeset using my package\footnote{You will not take a big risk, since there is little chance I travel half the world to see a play. But if by chance I can attend it, it would make me really happy.}.
+
+\subsection{Acknowledgements}
+I borrowed ideas and lines of code from the \LaTeX{} packages \pkg{drama}\cite{drama} and \pkg{dramatist}\cite{dramatist}.
+
+I used the following guides to package my package: \emph{How to Package Your \LaTeX{} Package} \cite{dtxtut}, and \emph{\LaTeXe{} for class and package writers} \cite{clsguide}.
+
+\section{About this documentation}
+
+\subsection{Examples}
+
+Most of the examples are taken from
+Edmond Rostand's \textfrench{\emph{Cyrano de Bergerac}} \cite{cyrano},
+Jean Giraudoux's \textfrench{\emph{Électre}} \cite{electre},
+or William Shakespeare's \emph{A Midsummer Night's Dream} \cite{midsummer}.
+
+\subsection{Overview}
+Installation instruction are given in section \ref{sec:install}.
+Documentation about how to use this package is given in section
+\ref{sec:usage}. In particular, section \ref{sec:sectioning} explains how to
+use acts and scenes, sections \ref{sec:dramatis} and \ref{sec:characters} explains how to define
+characters, and use these definitions to introduce characters' lines, and
+section \ref{sec:directions} describes commands used to render stage
+directions. At last, specific instruction about how to use this package with
+a language other than English (or a non-latin alphabet) are given in section
+\ref{sec:i18n}. Examples are given in section \ref{sec:examples}.
+
+\section{Download and Install}
+\label{sec:install}
+
+
+\subsection{\textsc{Gnu}/Linux Distribution}
+
+If applicable, the easiest way to get \pkg{thalie} working is by installing it by your distribution package. With Debian (and Ubuntu, and surely other distributions that inherit from Debian), simply run:
+
+\begin{sourcecode}[add-sourcecode-options={language=bash}]
+ sudo apt-get install texlive-humanities
+\end{sourcecode}
+
+\subsection{\LaTeX{} distribution}
+
+This package is included both in \TeX{}Live and MiK\TeX{}. It can be installed by their respective package managers.
+
+\subsection{Manual installation}
+
+\begin{itemize}
+\item Download the lastest archive :
+\begin{description}
+\item[Stable version] \url{http://mirrors.ctan.org/install/macros/latex/contrib/thalie.tds.zip}
+\item[Development version] \url{https://framagit.org/spalax/thalie/repository/archive.zip?ref=main}
+\end{description}
+\item Unzip the archive.
+\item Move file \texttt{tex/latex/thalie/thalie.sty} (or simply \texttt{thalie.sty} if you got the development version) in a \LaTeX{} path.
+\end{itemize}
+
+\part{Usage}
+\label{sec:usage}
+
+\section{Package options}
+\label{sec:options}
+
+Note that any package option can be redefined anywhere in the document: the options given to \cs*{usepackage}\oarg{options}\marg{thalie} as passed as-is to command \cs*{setthalieoptions} (see section \vref{sec:redefine}).
+This makes it possible to have several plays collected in a single document, while applying different styles or options to each play.
+
+\subsection{Space following character commands and stage directions}
+\begin{options}
+ \keybool{xspace}
+ \label{option:xspace}
+ \sinceversion{v0.7} % Add package option \code{xspace}.
+ As commands introducing characters' lines and displaying characters' names may be frequently used, it might be tempting to omit the following \code{\{\}}. For instance, one might prefer to write:
+
+ \begin{sourcecode}[add-silent-cmds={lebret,cyranoname}]
+ \lebret \cyranoname n'est pas là.
+ \end{sourcecode}
+
+ instead of:
+
+ \begin{sourcecode}[add-silent-cmds={lebret,cyranoname}]
+ \lebret \cyranoname{} n'est pas là.
+ \end{sourcecode}
+
+ If package option \option{xspace} is set (e.g. \keyis{xspace}{true}), space is automatically added after those commands if necessary\footnote{This is done with the \cs*{xspace} command (from the \pkg{xspace} package), hence the name.};
+ otherwise, it is not.
+ The same rule applies after a \cs{did} command.
+
+ For historical reasons, the option \option{xspace} default is \keyis{xspace}{true}, but this might change in some later non-backward compatible version.
+\end{options}
+
+\subsection{Style}
+
+The way characters' lines are displayed, as well as play, act and scene titles, can be set when loading the options.
+
+\begin{options}
+ \keychoice{characterstyle}{bold,margin,center,\default{simple},arden,imprimerie-verse,imprimerie-prose}
+ Set character style. Available styles, and indication to use a custom one, are described in section \vref{sec:lines}.
+
+ \keychoice{playstyle}{center,bigcenter,\default{box},custom}
+ Set play style. Available styles, and indication to use a custom one, are described in section \vref{sec:sectionstyles}.
+
+ \keychoice{actstyle}{center,\default{bigcenter},box,custom}
+ Set act style. Available styles, and indication to use a custom one, are described in section \ref{sec:sectionstyles}.
+
+ \keychoice{scenestyle}{\default{center},bigcenter,box,custom}
+ Set scene style. Available styles, and indication to use a custom one, are described in section \ref{sec:sectionstyles}.
+\end{options}
+
+
+\subsection{Sectioning levels}
+
+If you use a table of contents, or if you also use \enquote{usual} sectioning commands (\cs{chapter}, \cs{section} and so on), the relative importance of plays, acts and scenes is important.
+
+\begin{options}
+ \keychoice{playlevel}{part,\default{chapter},section,subsection,subsubsection,paragraph,subparagraph}
+ Set play level in the table of contents.
+
+ \keychoice{actlevel}{part,chapter,\default{section},subsection,subsubsection,paragraph,subparagraph}
+ Set act level in the table of contents.
+
+ \keychoice{scenelevel}{part,chapter,section,\default{subsection},subsubsection,paragraph,subparagraph}
+ Set scene level in the table of contents.
+
+ \keychoice{interludelevel}{play,\default{act},scene}
+ Setting the interlude level is slightly different. When setting it using \key{interludelevel}{level}, instead of choosing one of \LaTeX{} vanilla sectioning levels as the level, you may choose one of \choices{play,\default{act},scene}. It defines if an interlude is at the same level as a play, an act or a scene.
+\end{options}
+
+\subsection{Redefining options}
+\label{sec:redefine}
+\sinceversion{v0.9a} % New command \cs{setthalieoptions}.
+
+\begin{commands}
+ \command{setthalieoptions}[\marg{package options}]
+ Packages options can be reset in the document body using this command.
+ Its only argument has the same syntax as the package options (see section \vref{sec:options}).
+
+ For instance, if you are writing a collections of plays, some in prose, some in verses, you might want to write something like the following.
+
+ \begin{sourcecode}
+ \documentclass{book}
+ \usepackage{thalie}
+ \begin{document}
+
+ \play{First play}
+ \setthalieoptions{characterstyle=imprimerie-verse}
+ ...
+
+ \play{Second play}
+ \setthalieoptions{characterstyle=impriemie-prose}
+ ...
+
+ \end{document}
+ \end{sourcecode}
+\end{commands}
+
+\section{Commands and Environments}
+
+\subsection{Sectioning}
+\label{sec:sectioning}
+Here begin the parts explicitly relating to drama.
+
+\subsubsection{Levels}
+
+To introduce a new play, act or scene, use commands \cs{play}, \cs{act} and \cs{scene}.
+Their behaviour is as close as the \enquote{usual} sectioning commands (\cs{chapter}, \cs{section} and so on) as possible, i.e.:
+
+\begin{itemize}
+ \item Their signature is \cs{play}\oarg{short title}\marg{longtitle} (the optional short title is the one used in the table of content, and in headers and footers).
+ \item A starred version (\cs{play}\sarg, \cs{act}\sarg{} and \cs{scene}\sarg) is provided, which inserts a play (or act, or scene) which is not numbered, and does not insert any line in the table of content.
+ \item Headers and footers are changed (more information in section \vref{sec:header}).
+\end{itemize}
+
+Both commands \cs{act} and \cs{scene} (and their starred versions) are designed to
+deal with empty titles. Indeed, it is common not to give any name to acts and
+scenes.
+
+By default, a play is as deep (regarding to the table of contents) as a
+chapter, an act as a section, and a scene as a subsection. But this can be
+set using package options \option{playlevel}, \option{actlevel} and \option{scenelevel} (see
+packages options, page \pageref{sec:options}). That way, you can use in your
+document plays, acts and scenes as well as chapters, sections and so on. It
+can be useful if you want a foreword, and appendix, etc.
+
+It is not compulsory to use all three commands \cs{play}, \cs{act} and \cs{scene}.
+The rule of thumb is: if only one element exists, skip the corresponding
+command: if your document has a single play, you should ignore \cs{play}; if
+your document has several single act plays, set
+\keyis{playlevel}{section}, \keyis{scenelevel}{subsection}, and ignore \cs{act}; etc.
+
+\begin{commands}
+ \command{play}[\oarg{short title}\marg{long title}]
+ Start a new play (see above).
+
+ \command{act}[\oarg{short title}\marg{long title}]
+ Start a new act (see above).
+
+ \command{scene}[\oarg{short title}\marg{long title}]
+ Start a new scene (see above).
+
+ \command{interlude}[\sarg\oarg{short title}\marg{long title}]
+ Insert an interlude, which is an act or a scene which is not numbered, but which should appear in the table of content (unless the starred version is used).
+
+ You may choose the sectioning level an interlude is equivalent to in the package options.
+ If your interludes are acts, use \keyis{interludelevel}{act};
+ if they are scenes, use \keyis{interludelevel}{scene}.
+
+ \command{curtain}
+ At last, to mark the end of an act or of the play, you can use command \cs{curtain}, which prints the word \cs{GetTranslation}\Marg{Curtain} in the middle of its own line.
+\end{commands}
+
+\subsubsection{Title styles}
+\label{sec:sectionstyles}
+
+Several styles are available to render play, act and scene titles. Choose them using package options \option{playstyle}, \option{actstyle}, and \option{scenestyle}.
+Default is \keyis{playstyle}{box}, \keyis{actstyle}{bigcenter}, \keyis{scenestyle}{center}.
+
+\paragraph{Custom titles}
+Unfortunately, as play, act and scene titles are not considered (by \LaTeX{}) as usual sections, package \pkg{titlesec}\footnote{\url{http://www.ctan.org/pkg/titlesec}} cannot be used to use alternative section titles.
+Here is the way to set your own one.
+
+When loading the package, use \keyis{actstyle}{custom} as the style of the title you want to customize.
+Then, commands \cs{customact}\marg{counter}\marg{title} and \cs{customact}\sarg\marg{title} will be called by this package to render titles.
+You \emph{must} define them.
+Example \vref{ex:custom} gives the example of the definition of the \code{center} style.
+
+The first argument of \cs{customact} is the label of the act being printed
+(that is, \cs{theact} for an act, \cs{theplay} for a play, etc.),
+its second argument is its title.
+Command \cs{customact}\sarg{} only has one argument, which is the act title.
+
+\subsubsection{Labels and counters}
+
+Using the same tools as \cs{chapter}, \cs{section} and so on, it is possible to
+define the way counters of plays, acts and scenes are displayed. You can do
+this by redefining \cs{theplay}, \cs{theact} and \cs{thescene}. For example, to
+have acts numbered using letters, use: \verbcode|\renewcommand{\theact}{\Alph{act}}|.
+
+\subsubsection{Headers and footers}
+\label{sec:header}
+
+Once again, similar tools as those used by \cs{section} are provided to deal with headers and footers. When introducing, a new play, act or scene, respectively, commands \cs{playmark}\marg{label}, \cs{actmark}\marg{label} and \cs{scenemark}\marg{label} are called, so that titles can be used in headers and footers.
+If the default behaviour does not suit you (which should be the case if you did not choose the default option for \option{playlevel}, \option{actlevel} or \option{scenelevel}), you can redefine them.
+
+Examples are given in section \vref{sec:examples:headers}.
+
+\subsection{Dramatis person\ae}
+\label{sec:dramatis}
+This part explains how to build and display the dramatis person\ae{}.
+
+Definition of characters is done in document body.
+As it is possible to have several plays in a single documents (for a
+collection of plays or sketches), it is possible to define several
+dramatis person\ae{}. A new one disables the character commands
+defined by the previous one.
+
+\begin{environments}
+ \environment{dramatis}[\Oarg{\choicekey{hidden}{yes,\default{no}}, \key{defaultcast}{}}]
+ Definition of characters is done inside the \env{dramatis} environment.
+
+The following options can be set.
+
+ \begin{options}
+ \keychoice{hidden}{true,\default{false}}
+ If the \option{hidden} option is set to \code{true} (or given without any argument), the dramatis person\ae{} is not printed (its only purpose is then to define the character commands). Default value is \code{false} (that is: dramatis person\ae{} is not hidden).
+
+ \meta{defaultcast}{default}\Default
+ \sinceversion{v0.13a} % New option \option{defaultcast}.
+ Default value of the \option{cast} option of command \cs{character} (see section \vref{sec:cast}).
+ \end{options}
+\end{environments}
+
+
+Then, several commands are available to define characters, and organize
+character definitions.
+
+\subsubsection{Character definition}
+\paragraph{Basic definition}
+\label{sec:basiccharacter}
+
+To define a character, use command \cs{character}.
+
+\begin{commands}
+ \command{character}[\Oarg{\key{cmd}{command}, \key{drama}{dramatis}, \key{desc}{description}, \key{cast}{cast}}\marg{name}]
+
+ \begin{options}
+ \opt{name}
+ The mandatory argument is the name of the character, as it will appear to introduce each of their line. It is later possible to redefine it using command \cs{setcharactername} (see part \vref{setcharactername}). Optional arguments are:
+ \keyval{desc}{description}
+ Description of the character, displayed in the dramatis person\ae{}.
+ \keyval{cmd}{command}
+ Name of the control sequence that will be used to introduce this character's lines in the remaining part of your play.
+ \keyval{drama}{dramatis}
+ Name of the character, as it will appear in the dramatis person\ae{}. The name of the character (mandatory argument) is used as a default value.
+ \keyval{cast}{cast}
+ Name of the actor or actress playing this character, displayed in the dramatis person\ae{}. More information in section \vref{sec:cast}.
+ \end{options}
+\end{commands}
+
+If \option{cmd} is defined, this command creates two new commands: \cs*{\meta{cmd}} and \cs*{\meta{cmd}name}.
+The first one is used to introduce a character's line.
+The second one prints the character's name.
+An error is raised if a command with any of these two names already exists.
+
+An example of the use of this command is given in section \vref{sec:character_example}.
+
+\paragraph{Special character definition}
+
+Although optional arguments are not mandatory, not defining them, or leaving the mandatory argument blank, have special meaning. The combination are summed up in the following table, where a cross \(\times\) means that the corresponding combination is forbidden. The superscript number refers to the list of special character definitions (right after the table).
+
+\begin{center}
+\begin{tblr}{rr*{4}{X[co=1,c,m]}}
+ \toprule
+ && \SetCell[c=2]{c} empty \option{name} && \SetCell[c=2]{c} \option{name} \\
+ && no \option{cmd} & \option{cmd} & no \option{cmd} & \option{cmd} \\
+ \midrule
+ \SetCell[r=2]{r} no \option{drama} & no \option{desc} & \(\times\) & \(\times\) &\(\times\) & default\textsuperscript{\ref{character:default}} \\
+ \cmidrule{2-6}
+ & \option{desc} & {description\\ only\textsuperscript{\ref{character:description}}} & \(\times\) & \(\times\)& default\textsuperscript{\ref{character:default}} \\
+ \midrule
+ \SetCell[r=2]{r} \key{drama}{drama} & no \option{desc} & silent\textsuperscript{\ref{character:silent}} & \(\times\) & \(\times\)& default\textsuperscript{\ref{character:default}} \\
+ \cmidrule{2-6}
+ & \option{desc} & silent\textsuperscript{\ref{character:silent}} & \(\times\) & \(\times\)& default\textsuperscript{\ref{character:default}} \\
+ \midrule
+ \SetCell[r=2]{r} \keyis{drama}{} & no \option{desc} &\(\times\) & \(\times\) & \(\times\)& hidden\textsuperscript{\ref{character:hidden}}\\
+ \cmidrule{2-6}
+ & \option{desc} & \(\times\)& \(\times\) & \(\times\)& \(\times\)& \\
+ \bottomrule
+ \SetCell[c=6]{c} Table: \enquote{To define or not to define} options of \cs{character}
+\end{tblr}
+\end{center}
+
+\label{specialcharaclist}
+\begin{enumerate}[(i)]
+\item \label{character:default} \textbf{Default definition (\option{name} and \option{cmd} are given; \option{desc} and \option{drama} may be omitted):} The character is defined as described in section \vref{sec:basiccharacter}. If \option{desc} is omitted, no description appear in the dramatis person\ae{}; if no \option{drama} is given, character in the dramatis person\ae{} has the same name as it will have in the document.
+Example:
+
+\begin{sourcecode}
+ \character[
+ drama={A ghost},
+ desc={the king's ghost},
+ cmd={ghost},
+ ]{The ghost}
+\end{sourcecode}
+
+\item \label{character:description} \textbf{Description only (everything omitted but \option{desc}):} A description is inserted in the dramatis person\ae{}. Useful to add characters such as \emph{The kings' armies}.
+Example:
+
+\begin{sourcecode}
+ \character[desc={The kings' armies}]{}
+\end{sourcecode}
+
+\item \label{character:hidden} \textbf{Hidden character (\option{drama} is empty (defined, but empty), \option{cmd} and \option{name} are defined, \option{desc} is omitted)} Definition of a character that does not appear in the dramatis person\ae{}. In this case, even if defined, the \option{cast} argument is ignored.
+Example:
+
+\begin{sourcecode}
+ \character[drama={}, cmd={postman}]{The postman}
+\end{sourcecode}
+
+\item \label{character:silent} \textbf{Silent character (\option{name} is empty; \option{drama} is defined; \option{desc} may be omitted; \option{cmd} is omitted):} The character only appear in the dramatis person\ae{}. It will not be used elsewhere in the document. An optional description may also appear in the dramatis person\ae{}.
+Example:
+
+\begin{sourcecode}
+ \character[drama={A priest}]{}
+\end{sourcecode}
+
+\end{enumerate}
+
+\paragraph{Group of characters}
+\label{sec:charactergroup}
+\changedversion{v0.6} % Improve alignment of groups of characters.
+
+\begin{environments}
+ \environment{charactergroup}[\oarg{width}\marg{description}]
+ It is possible to group several characters' definition if they have the same description.
+ The optional argument sets the group width (on the left of the brace).
+ See an example on section \vref{sec:charactergroupexample}.
+
+ The effect of this code will be, in the dramatis person\ae{}, to have a nice brace mapping the three characters to their common description.
+
+ The behaviour of nested \env{charactergroup} environments is undefined%
+ \footnote{It might work; it might not. It might work now, but stop working in the future; it might not work now, but work by accident in the future. Etc.}.
+\end{environments}
+
+\subsubsection{Cast names}
+\label{sec:cast}
+\sinceversion{0.13a} % New option \option{cast}.
+
+The name of the actor or actress playing a character can be displayed next to their name in the dramatis person\ae{}, using the \option{cast} option of the \cs{character} command. Special values are described here; see section \vref{sec:defaultcast} for an example.
+
+\begin{description}
+ \item[\key{cast}{name}] The name given in argument is displayed next to the character definition.
+ \item[\keyis{cast}{}] No cast is displayed.
+ \item[\keyis{cast}{\cs{underline}\Marg{\cs{phantom}\Marg{XXXXXXXXXX}}}] Display a line instead of the cast name: the name of the actor or actress may be added by hand later, when the play has been printed.
+\end{description}
+
+Default value is \keyis{cast}{}, unless something else has been set using option \option{defaultcast} of environment \env{dramatis} (see \vref{sec:dramatis}).
+
+\paragraph{Cast group}
+\sinceversion{v0.13a}
+
+Some characters (or group of characters), like the chorus in Greek tragedy, can be played by several actors and actresses.
+
+See an example in section \ref{sec:castgroupexample}.
+
+\begin{environments}
+ \environment{castgroup}[\Oarg{\key{cmd}{command}, \key{drama}{dramatis}, \key{desc}{description}}\marg{name}]
+ Declare a character, that is played by several cast members. The arguments are the same as the arguments of the \cs{character} command (see section \ref{sec:basiccharacter}), excepted that the \option{cast} option is missing.
+\end{environments}
+
+\begin{commands}
+ \command{cast}[\oarg{cast}]
+ This command is the only one allowed inside a \env{castgroup} environment. It declares a new cast member (its only argument) for this group.
+\end{commands}
+
+\subsubsection{Vertical space}
+
+\begin{commands}
+ \command{characterspace}
+ Command \cs{characterspace} put some vertical space into the dramatis person\ae{}.
+\end{commands}
+
+\subsubsection{Customize style of dramatis person\ae}
+\sinceversion{v0.9a} % Style of the dramatis personae can be customized using environment \env{dramatisenv} and commands \cs{dramatischaracter}, and so on.
+
+A default style is used to display the dramatis person\ae, but it is made to be customized.
+The following commands can be redefined to make dramatis person\ae{} look different.
+They do nothing apart from displaying text (no internal definition, etc.).
+You can redefine them to change the look of the dramatis person\ae{}.
+
+\begin{environments}
+ \environment{dramatisenv}
+ This environment wraps the dramatis person\ae.
+
+ \environment{dramatischaractergroup}[\marg{width}\marg{description}]
+ Renders a group of characters.
+
+ \environment{dramatischaractercastgroup}[\marg{name}\marg{description}\marg{cast}]
+ Renders a group of cast members.
+
+\end{environments}
+
+\begin{commands}
+ \command{dramatischaracter}[\marg{name}\marg{description}\marg{cast}]
+ Renders the character name, description, and cast. It should take care of cases where name or description (but not both) is missing, or cast is empty.
+
+ \command{dramatischaractername}[\marg{name}]
+ Renders the character name.
+
+ \command{dramatischaracterdescription}[\marg{description}]
+ Renders the character description.
+
+ \command{dramatischaractercast}[\marg{cast}]
+ Renders the cast name.
+
+ \command{dramatiscast}[\marg{cast}]
+ Renders the cast name, inside a \env{dramatischaractercastgroup}.
+
+ \command{characterspace} Adds a vertical character space.
+\end{commands}
+
+Section \vref{sec:customdramatis} illustrates how those commands are used.
+
+For example, to render character names in small caps, one would define :
+
+\begin{sourcecode}
+ \renewcommand{\dramatischaractername}[1]{\textsc{#1}}
+\end{sourcecode}
+
+Or to make dramatis person\ae{} include a title, one can define :
+
+\begin{sourcecode}[add-silent-cmds={list}]
+ \renewenvironment{dramatisenv}{%
+ \act*{Dramatis person\ae}%
+ \list{}{\rightmargin1cm\leftmargin2cm}\item[]
+ }{%
+ \endlist%
+ }
+\end{sourcecode}
+
+\subsection{Characters}
+\label{sec:characters}
+This part explains how to define characters, and introduce character's lines.
+
+It has been explained that definition of a character in the dramatis person\ae{} (see \vref{sec:dramatis}) also creates commands used to introduce lines of characters.
+For instance, defining a character using \cs{character}\Oarg{\keyis{cmd}{cyrano}}\Marg{Cyrano} means than Cyrano's lines can now be
+introduced using the following code.
+
+\begin{sourcecode}
+ \cyrano
+ Ah ! non ! c'est un peu court, jeune homme !
+\end{sourcecode}
+
+This would display the name \emph{Cyrano} using the current character style, then his line.
+
+\subsubsection{\enquote{Disposable} characters}
+
+One can need to define characters that are used only once (or a few times).
+
+\begin{commands}
+ \command{disposablecharacter}[\oarg{directions}\marg{name}]
+ This command, used in the body, introduces a line for character \marg{name},
+ with optional stage directions.
+ It is rendered the same way regular characters are rendered,
+ but nothing is added to the dramatis person\ae{}.
+ It is used in section \vref{sec:setcharactername}.
+\end{commands}
+
+This command is also useful to introduce lines of characters in non standard ways, for instance if several characters speak at once.
+See examples in section \vref{ex:severalcharacters}.
+
+\subsubsection{Changing character's name}
+\label{setcharactername}
+
+It is possible to change the name that appears to introduce character's lines
+within the text. This can be used, for example, when a character is first
+refered to as \emph{A voice}, until we learn his real identity, which is
+\emph{Cyrano}. An example is given in section \vref{sec:setcharactername}.
+
+\begin{commands}
+ \command{setcharactername}[\marg{command}\marg{name}]
+ \begin{options}
+ \opt{command}
+ Control sequence used to introduce this character's line.
+ \opt{name}
+ Name to display for this character.
+ \end{options}
+\end{commands}
+
+\subsubsection{Lines}
+\label{sec:lines}
+To introduce characters' lines, use the commands defined in the character
+definition (see the \cs{character} command, or the example in section
+\vref{sec:character_example}).
+
+\paragraph{Choose style}
+Several styles are available, to typeset character's name and lines in
+different ways. Change the style by loading package using option
+\key{characterstyle}{style} (available styles are
+ \code{bold},
+ \code{center},
+\code{margin},
+\code{simple},
+\code{imprimerie-verse},
+\code{imprimerie-prose}).
+A few notes:
+\begin{itemize}
+ \item \code{simple} Default style.
+ \item\sinceversion{v0.6} % Add styles \code{imprimerie-verse} and \code{imprimerie-prose}.
+ \code{imprimerie-verse} and \code{imprimerie-prose} French \emph{de facto} standards for typesetting drama plays, respectively in verse and in prose, as defined by the \emph{Imprimerie nationale} \cite{imprimerienationale}.
+ \item\sinceversion{v0.6} % Add styles \code{arden}.
+ \code{arden} Mimick typesetting of the Arden Shakespeare series.
+ \item \code{bold} Needs a sans serif font to be defined (it should be done by default with latin alphabets, but must be done by hand with languages using non latin characters (greek, hindi, etc.)).
+\end{itemize}
+
+\paragraph{Customize style}
+If available styles does not fit your need, you can also define your own one.
+To do so, you can redefine the following commands.
+
+\begin{commands}
+ \command{speakswithoutdirection}[\marg{name}]
+ Invoked to display a character's name to introduce their line. It takes one argument, which is the character's name.
+
+ \command{speakswithdirection}[\marg{name}\marg{direction}]
+ Also invoked to display a character's name to introduce their line, but it takes a second argument, which is stage directions to be printed together with character's name.
+\end{commands}
+
+See also section \vref{sec:directions} to see other ways to print stage directions.
+
+\subsection{Stage directions}
+\label{sec:directions}
+\changedversion{0.12a} % The \option{xspace} option also affects \cs{did}.
+
+Let us begin with a warning: since we could not figure out a nice command
+name made from \enquote{stage directions}, we used the French word
+\emph{(\textfrench{didascalie})} to build up command names.
+
+We define two ways to render stage directions: a short one, that is printed
+inline, and a long one, printed in its own paragraph\footnote{For people writing math:
+They act a bit like \texttt{\bbackslash(1+1=2\bbackslash)} and \texttt{\bbackslash[1+1=2\bbackslash]} for formulas.}.
+
+\begin{commands}
+ \command{did}[\marg{directions}]
+ Display a stage direction inline.
+\end{commands}
+
+\begin{environments}
+ \environment{dida}
+ Display a stage direction in its own paragraph.
+\end{environments}
+
+Note that option \option{xspace} may be used to automatically add a space,
+if necessary, after a \cs{did} command (see section \vref{option:xspace}, page \pageref{option:xspace}).
+
+\begin{commands}
+ \command{onstage}[\marg{directions}]
+Some stage directions are displayed centered under the scene or act
+definition (I often see it in classical drama, where the list of characters
+appearing in each scene is displayed that way).
+This command can be used to display such information.
+
+\command{pause}
+As we often need to mark pauses in theater, we created the command \cs{pause},
+which is a shortcut for \verbcode|\did{\GetTranslation{Pause}}|.
+\end{commands}
+
+\subsection{Splitting verses}
+\sinceversion{v0.7} % New commands \cs{pauseverse}, \cs{resumeverse}, and \cs{adjustverse}.
+\changedversion{v0.10c} % Document different implementations of \cs{pauseverse} and \cs{resumeverse}.
+
+When writing verses, it is sometimes useful to split a verse between two
+characters: the first character starts it in their line, and the second one
+finishes it in a second line. Visually, the start of the second line is
+vertically aligned to the end of the first line.
+
+\danger
+Warning: this is still experimental. I present several recipes to achieve this, but they all have their pros and cons.
+
+The recipes presented below all implement macros \cs{pauseverse} and \cs{resumeverse}.
+See section \vref{sec:splitverse} for an example.
+
+\begin{commands}
+\command{pauseverse}
+Used at the end of the verse to be continued.
+\command{resumeverse}
+Used at the beginning of the continuing verse.
+\end{commands}
+
+When writing a play in verse, one can use a lot of those commands, which can
+be tedious because of their long names. So, defining \enquote{shortcuts} of those
+commands can be handy, as in the following example.
+
+
+\begin{sourcecode}
+ \newcommand{\pv}{\pauseverse}
+ \newcommand{\rv}{\resumeverse}
+\end{sourcecode}
+
+
+This is not done by default, because short command names are a scarce ressource
+in \LaTeX, so, defining these commands by default might conflict with other
+packages, while most of \pkg*{thalie} users will not use them.
+
+\subsubsection{Which recipe should I use?}
+
+As I have already stated, there are several ways to achieve this, but none of them is perfect.
+
+\begin{itemize}
+\item Do try the first recipe (section \ref{split-latex}). If it works, stick to it. Otherwise…
+\item If you do not mind loading the \texttt{TikZ} package, use it (section \ref{split-tikz}). As far as I know, from a user point of view, it is the easiest recipe to use, with the less bugs. Otherwise…
+\item You can try building you own commands (section \ref{split-hanging}). Otherwise…
+\item The last recipe (section \ref{split-phantom}) always works. It is far less user-friendly, but it does the job.
+\end{itemize}
+
+\subsubsection{Recipe 1 : Pure \LaTeX}
+\label{split-latex}
+
+\danger
+Warning: I do not understand the code behind this feature. I copied-pasted code by David Carlisle\footnote{Originally written as an answer to a StackExchange question: see \url{https://tex.stackexchange.com/a/107727}.} without understanding it. There are \sout{probably} bugs\footnote{One on them lead to the next recipe.}, but I won't be able to solve them.
+
+The implemented macros \cs{pauseverse} and \cs{resumeverse} are written in pure \LaTeX (without any external package). For backward compatibility reasons, this will remain the default implementation for some time…
+
+If the character names are displayed on the same line as the verse, the lines
+are not aligned the way one would expect them to. To correct this, command
+\cs{adjustverse}\marg{length} can be used to add an extra (possibly negative)
+space when calling \cs{resumeverse}, to get a correct alignment.
+See section \vref{sec:splitverse-adjusted}, for an example of those three commands.
+
+The young inexperienced fool\footnote{Me…} who originally wrote those commands had not noticed that \cs{adjustverse} is needed because \cs{resumeverse} does not take into account the length of the character names, in styles where it appears on the same line as the verse. This (probably) won't be fixed, because some people might be using this, and fixing this might break their document.
+
+If you encounter the same issue, you might prefer one of the other recipes.
+
+\subsubsection{Recipe 2 : With package \texttt{hanging}}
+\label{split-hanging}
+
+\danger
+Warning: This is a do-it-yourself recipe.
+
+The bug announced at the end of the previous recipe, has been spotted and partially corrected by egreg on StackExchange\footnote{\url{https://tex.stackexchange.com/a/545326}}. He proposes the following code to fix this.
+
+
+\begin{sourcecode}[add-silent-cmds={brokenverse,hangpara}]
+ \usepackage{hanging}
+
+ \newlength{\brokenverse}
+ \renewcommand*{\speakswithoutdirection}[1]{%
+ \settowidth{\brokenverse}{\textsc{#1}.}%
+ \hangpara{2\parindent}{1}\noindent\textsc{#1}.%
+ }
+ \makeatletter
+ \renewcommand{\resumeverse}{%
+ \hspace{\@verseadjust}\hspace{\dimexpr\dimen\@ne-\brokenverse-2em}
+ }
+ \makeatother
+\end{sourcecode}
+
+
+This code ignores the choosen style (it actually redesigns it), and it only works with lines without character directions. If needed, you should also define a \cs{speakswithdirection} command to implement the same feature.
+
+\subsubsection{Recipe 3 : With package \texttt{TikZ}}
+\label{split-tikz}
+
+As far as I know, this recipe is the best one, from a user point of view. But it loads the \texttt{TikZ} package, which is a huge package to implement such a tiny feature\footnote{In French, we would say : \enquote{\foreignlanguage{french}{Un marteau-pilon pour écraser une mouche}} (a far too heavy solution for a tiny problem).}.
+
+\begin{sourcecode}[add-silent-cmds={usetikzlibrary,tikzset,draw,tikzmark,iftikzmark,tikzmath}]
+ \usepackage{tikz}
+ \usetikzlibrary{tikzmark}
+ \usetikzlibrary{math}
+ \newcounter{thalieverse}
+ \tikzset{tikzmark suffix=-\thethalieverse}%
+ \renewcommand{\pauseverse}{%
+ \stepcounter{thalieverse}
+ \tikzmark{thaliepauseverse}
+ }
+ \renewcommand{\resumeverse}{%
+ \tikzmark{thalieresumeverse}%
+ \iftikzmark{thaliepauseverse}{%
+ \begin{tikzpicture}[remember picture]%
+ % Uncomment to see "pause" and "resume" tikz marks.
+ %\draw[overlay,green, ultra thick] (pic cs:thaliepauseverse) -- (pic cs:thalieresumeverse);%
+ \tikzmath{
+ coordinate \c;
+ \c1 = (pic cs:thaliepauseverse);
+ \c2 = (pic cs:thalieresumeverse);
+ \width = max(0, \cx1 - \cx2);
+ }
+ % Set opacity to 1 to see the space
+ \draw[opacity=0, black, line width=1ex] (0, 0) -- (\width pt, 0);
+ \end{tikzpicture}%
+ }{}%
+ }
+\end{sourcecode}
+
+
+This recipe is implemented in the \href{https://framagit.org/spalax/thalie/-/blob/main/examples/henry.tex}{\texttt{examples/henry.tex}} file in the repository of this project.
+
+\subsubsection{Recipe 4 : With \texttt{\textbackslash{}phantom\{\}}}
+\label{split-phantom}
+
+At last, if nothing else workd, this feature can also be implemented using the \cs{phantom} command (see section \vref{sec:splitverse-phantom} for an example).
+It is far less user-friendly, but it is also less error prone. Choose wisely…
+
+\section{Localization and Internationalization}
+\label{sec:i18n}
+
+\subsection{Localization}
+\sinceversion{v0.9a} % Add section \emph{Localization} to the documentation.
+\label{sec:l10n}
+
+By default, commands \cs{act}, \cs{scene}, etc. use English words, but they are
+translated to the current language used by \pkg{babel} or
+\pkg{polyglossia}\footnote{Given that someone provided the translation. See
+section \vref{sec:languages} for the list of available languages.}.
+
+
+Language cannot be defined directly in this package. Instead, the language
+currently used by \pkg{babel} or \pkg{polyglossia} is used to translate the following
+words (with or without capital letter, singular or plural): \emph{play},
+\emph{act}, \emph{scene}, \emph{interlude}, \emph{pause}, \emph{curtain}.
+
+If the option for your language does not exist\footnote{You can also send me the translation for your language, to improve this package.},
+or if you want to change the default words used here, you can set your own translation using command \cs{DeclareTranslation}
+(see the \pkg{translations} package for more information).
+\changedversion{v0.9a} % Use package \pkg{translations} to handle translations.
+For instance use
+\verbcode|\DeclareTranslation{Spanish}{Curtain}{Telòn}| for Spanish\footnote{I may be wrong: I cannot speak Spanish.}.
+
+See section \vref{sec:languages} for the list of supported languages.
+
+\subsubsection{Common translations}
+
+Commands defined here are shorter versions of strings commonly translated.
+
+\begin{commands}
+ \command{playname}
+ Shortcut for \verbcode|\GetTranslation{Play}|.
+
+ \command{actname}
+ Shortcut for \verbcode|\GetTranslation{Act}|.
+
+ \command{scenename}
+ Shortcut for \verbcode|\GetTranslation{Scene}|.
+
+ \command{interludename}
+ Shortcut for \verbcode|\GetTranslation{Interlude}|.
+
+ \command{pausename}
+ Shortcut for \verbcode|\GetTranslation{Pause}|.
+
+ \command{curtainname}
+ Shortcut for \verbcode|\GetTranslation{Curtain}|.
+\end{commands}
+
+\subsection{Non-latin alphabets}
+
+This package should work with languages using non-latin alphabets (greek, hindi, etc.). However, here are a few remarks.
+
+\begin{itemize}
+\item The \code{bold} character style (see section \vref{sec:lines}) can only be used if a sans serif font has been defined. For instance, for hindi, you might write in the preamble: \verbcode|\newfontfamily\hindifontsf{Noto Sans Devanagari}|.
+\end{itemize}
+
+\subsection{Language specific comments}
+\label{sec:languages}
+
+The following languages are available:
+
+\begin{description}
+ \item[English]~
+ \begin{itemize}
+ \item The \code{arden} character style tries to mimick the typestting of the Arden Shakespeare series.
+ \end{itemize}
+ \item[French]~
+ \begin{itemize}
+ \item The \code{imprimerie-verse} and \code{imprimerie-prose} character styles implements the French \emph{de facto} standards for typesetting drama plays, respectively in verse and in prose, as defined by the \emph{Imprimerie nationale} \cite{imprimerienationale}.
+ \item The same book \cite{imprimerienationale} states that act numbers should be typeset in capital roman numerals (which is done by default with \pkg{thalie}), and that scene numbers should be typeset in small capital roman numerals, which is \emph{not} the default, but can be achieved by adding the following line in the preamble: \verbcode|\renewcommand{\thescene}{\textsc{\roman{scene}}}|.
+ \end{itemize}
+ \item[German]
+ \sinceversion{v0.10a} % New translation: German (thanks Ekkart Kleinod).
+ \item[Italian]
+ \sinceversion{v0.11a} % New translation: Italian (thanks Giuseppe Palma).
+\end{description}
+
+I am not a linguist or dramatist in any of those languages. If you have interesting advice for those languages that you would like to share (preferably with a reference to a reliable source), I would be happy to add them to this list!
+
+\appendix
+\part{Appendix}
+
+\section{Examples}
+\label{sec:examples}
+\sinceversion{v0.9a} % New section in the documentation: Examples.
+
+\subsection{Dramatis person\ae}
+
+\subsubsection{Character definition}
+\label{sec:character_example}
+
+\begin{lang}{french}
+ \begin{example}[add-silent-cmds={lebret,cyrano,cyranoname,bellerosename}]
+ \begin{dramatis}
+ \character[cmd={cyrano}, drama={Cyrano de Bergerac}]{Cyrano}
+ \character[cmd={lebret}]{Le Bret}
+ \character[cmd={bellerose}]{Bellerose}
+ \end{dramatis}
+
+ \bigskip
+
+ \lebret[à \cyranoname, lui prenant le bras]
+ Çà, causons !\ldots
+
+ \cyrano
+ Laisse un peu sortir cette cohue\ldots{}
+ \did{À \bellerosename.}
+ Je peux rester ?
+\end{example}
+\end{lang}
+
+\subsubsection{Define a group of characters}
+\label{sec:charactergroupexample}
+
+\begin{example}
+ \begin{dramatis}
+ \begin{charactergroup}[2.5cm]{Officers}
+ \character[desc={a soldier}, cmd=marcellus]{Marcellus}
+ \character[desc={a soldier}, cmd=bernardo]{Bernardo}
+ \end{charactergroup}
+ \end{dramatis}
+\end{example}
+
+\subsubsection{Define a cast group}
+\label{sec:castgroupexample}
+
+\begin{french}
+ \begin{example}
+ \begin{dramatis}
+ \character[cmd=narses, cast={Raymone}]{La femme Narsès}
+ \begin{castgroup}[drama={Les Euménides}]{}
+ \cast{Marthe Herlin}
+ \cast{Monique Mélinand}
+ \cast{Denise Pezzani}
+ \end{castgroup}
+ \begin{castgroup}[drama={Les petites Euménides}]{}
+ \cast{Véra Pharès}
+ \cast{Nicole Munié-Berny}
+ \cast{Clairette Fournier}
+ \end{castgroup}
+ \character[cmd=mendiant, cast={Louis Jouvet}]{Le Mendiant}
+ \end{dramatis}
+ \end{example}
+\end{french}
+
+\subsubsection{Example of \texttt{defaultcast}.}
+\label{sec:defaultcast}
+
+We already know that John Doe will play Astérix.
+Actors for Obélix and Cléopatre have not been found yet.
+Idéfix will be played by a puppet: no need to put a cast name.
+
+\begin{lang}{french}
+ \begin{example}
+ \begin{dramatis}[defaultcast={\underline{\phantom{XXXXXXX}}}]
+ % Explicit cast
+ \character[desc={guerrier gaulois}, cast={John Doe}, cmd=asterix]{Astérix}
+ % Default cast
+ \character[desc={sculpteur de menhir, ami du précédent}, cmd=obelix]{Obélix}
+ \character[desc={reine d'Égypte}, cmd=cleopatre]{Cléopatre}
+ % No cast
+ \character[desc={chien d'Obélix}, cast={}, drama={Idéfix}]{}
+ \end{dramatis}
+ \end{example}
+\end{lang}
+
+\subsubsection{Commands used to display the dramatis person\ae.}
+\label{sec:customdramatis}
+
+\begin{sourcecode}
+ \begin{dramatis}
+ \character[cmd=queen]{The queen}
+ \character[cmd=king, desc={the queen's husband.}]{The king}
+ \begin{charactergroup}{Lords and ladies}
+ \character[drama={Lord Foo}]{}
+ \character[desc={Lord Foo's sister.}, drama={Lady Bar}]{}
+ \character[desc={Lord and Lady Baz.}]{}
+ \end{charactergroup}
+ \characterspace
+ \character[desc={Several servants}]{}
+ \begin{castgroup}[drama={Chorus}]{}
+ \cast{Jane Doe}
+ \cast{John Doe}
+ \end{castgroup}
+ \end{dramatis}
+\end{sourcecode}
+
+To display the dramatis person\ae{} above, the commands below are called.
+
+\begin{sourcecode}
+ \begin{dramatisenv}
+ \dramatischaracter{The queen}{}{}
+ \dramatischaracter{The king}{the queen's husband.}{}
+ \begin{dramatischaractergroup}[5cm]{Lords and ladies}
+ \dramatischaracter{Lord Foo}{}{}
+ \dramatischaracter{Lady Bar}{Lord Foo's sister.}{}
+ \dramatischaracter{}{Lord and Lady Baz.}{}
+ \end{dramatischaractergroup}
+ \characterspace
+ \dramatischaracter{}{Several servants}{}
+ \begin{dramatischaractercastgroup}{}{Chorus}{}
+ \dramatiscast{Jane Doe}
+ \dramatiscast{John Doe}
+ \end{dramatischaractercastgroup}
+ \end{dramatisenv}
+\end{sourcecode}
+
+Command \cs{dramatischaracter}\marg{name}\marg{description}\marg{cast} is defined as something like the following code (excepted that parts taking care of cases where there is no character name or description is omitted here).
+
+\begin{sourcecode}
+ \newcommand{\dramatischaracter}[3]{ %
+ \dramatischaractername{#1}, \dramatischaracterdescription{#2}\dotfill\dramatischaractercast{#3}\\
+ }
+\end{sourcecode}
+
+\subsection{Custom definition of acts}
+\label{ex:custom}
+
+To redefine the definition of \cs{act}, one can use the following code.
+
+\begin{sourcecode}[add-silent-cmds={WithSuffix}]
+ \newcommand\customact[2]{
+ \begin{center}
+ \textsc{\GetTranslation{Act} #1}
+
+ #2
+ \end{center}
+ }
+ \WithSuffix\newcommand\customact*[1]{
+ \begin{center}
+ #1
+ \end{center}
+ }
+\end{sourcecode}
+
+\subsection{Charcters' lines}
+
+\subsubsection{Introduce lines of several characters at the same time.}
+\label{ex:severalcharacters}
+
+Since \cs{disposablecharacter} can display arbitrary text using the style of
+character names, it can be used to render a custom text when two characters
+are speaking together.
+
+
+\begin{dramatis}[hidden]
+ \character[cmd=alice]{Alice}
+ \character[cmd=bob]{Bob}
+ \character[cmd=eve]{Eve}
+\end{dramatis}
+\begin{example}[add-silent-cmds={eve,alicename,bobname}]
+ \eve
+ Let's open it.
+
+ \disposablecharacter{\alicename and \bobname}
+ No!
+\end{example}
+
+\subsubsection{Change the name of a character}
+\label{sec:setcharactername}
+
+On the first scenes of \emph{Cyrano de Bergerac}, the main character (Cyrano) is somewhere in a crowd, and only appears as \emph{The voice} (\emph{\textfrench{La voix}} in French).
+He appears as Cyrano in the following verses.
+
+\begin{lang}{french}
+ \begin{dramatis}[hidden]
+ \character[desc={Cyrano de Bergerac}, cmd=cyrano]{La voix}
+ \character[cmd=montfleury]{Montfleury}
+ \end{dramatis}
+
+ \begin{example}[add-silent-cmds={cyrano,montfleury}]
+ \cyrano Sortez !
+
+ \disposablecharacter{Le parterre} Oh !
+
+ \montfleury[s'étranglant] \enquote{Heureux qui loin des cours\ldots}
+
+ \setcharactername{cyrano}{Cyrano}
+ \cyrano[surgissant du parterre, debout sur une chaise, les bras croisés, le feutre en bataille, la moustache hérissée, le nez terrible] Ah ! je vais me fâcher !\ldots
+ \end{example}
+\end{lang}
+
+\subsection{Splitting verses}
+
+\subsubsection{Commands used to split verse}
+\label{sec:splitverse}
+\begin{dramatis}[hidden]
+ \character[cmd={hermia}]{Hermia}
+ \character[cmd={theseus}]{Theseus}
+\end{dramatis}
+\begin{example}[add-silent-cmds={hermia,theseus}]
+
+ \setthalieoptions{characterstyle=imprimerie-verse}
+
+ \hermia
+ So is Lysander.\pauseverse
+
+ \theseus
+ \resumeverse In himself he is.
+\end{example}
+
+\subsubsection{Commands used to adjust splitted verse}
+\label{sec:splitverse-adjusted}
+
+\begin{dramatis}[hidden]
+ \character[cmd={hermia}]{Hermia}
+ \character[cmd={theseus}]{Theseus}
+\end{dramatis}
+
+\begin{example}[add-silent-cmds={hermia,theseus}]
+ \setthalieoptions{characterstyle=simple}
+ \adjustverse{-7em}
+
+ \hermia
+ So is Lysander.\pauseverse
+
+ \theseus
+ \resumeverse In himself he is.
+\end{example}
+
+\subsubsection{Commands used to split verse (using the \texttt{\bbackslash{}phantom} command)}
+\label{sec:splitverse-phantom}
+
+\begin{dramatis}[hidden]
+ \character[cmd={hermia}]{Hermia}
+ \character[cmd={theseus}]{Theseus}
+\end{dramatis}
+\begin{example}[add-silent-cmds={hermia,theseus}]
+ \hermia
+ So is Lysander.
+
+ \theseus
+ \phantom{So is Lysander.} In himself he is.
+\end{example}
+
+\subsection{Footnotes}
+
+\paragraph{Add a footnote on a character name}
+
+Adding a footnote on the character name introducing its line cannot be done on the character command defined by the dramatis person\ae. Instead, the \cs{disposablecharacter} command can be used instead.
+
+\begin{sourcecode}[add-silent-cmds={alicename}]
+ \disposablecharacter{\alicename\footnote{An interesting note.}}
+ Hello, world!
+\end{sourcecode}
+
+
+\paragraph{Add a footnote in a stage direction}
+
+Footnote must be protected to be included in stage directions.
+
+\begin{sourcecode}[add-silent-cmds={cyrano}]
+ \cyrano[frappant dans ses mains \protect\footnote{An interesting footnote.}]
+ Une !
+\end{sourcecode}
+
+\subsection{Headers and footers}
+\label{sec:examples:headers}
+
+By default, with the \cls*{article} class, the header of the left page contains the play name, and the header of the right page contains the act number.
+
+\paragraph{Header: Act number on left, scene number on right}
+
+\begin{sourcecode}
+ \renewcommand{\actmark}[1]{%
+ {\markboth{\MakeUppercase{\GetTranslation{Act}}\ \theact\ #1}{}}%
+ }
+ \renewcommand{\scenemark}[1]{%
+ {\markright{\MakeUppercase{\GetTranslation{Scene}}\ \thescene\ #1}}%
+ }
+\end{sourcecode}
+
+\paragraph{Play name of left, act and scene name on right}
+
+\begin{sourcecode}[add-silent-cmds={fancyhf,fancyhead}]
+ \usepackage{fancyhdr}
+ \pagestyle{fancy}
+ \fancyhf{}
+ \fancyhead[RO]{%
+ \textit{\MakeUppercase{%
+ \GetTranslation{Act} \theact{}, %
+ \GetTranslation{Scene} \thescene%
+ }}%
+ }
+ \fancyhead[LE]{\leftmark}
+\end{sourcecode}
+
+\subsection{Line numbers}
+
+Some styles write character names in the left margin, which can overlap with line numbers displayed by package \pkg{lineno}.
+To avoid this, line numbers can be displayed on the right of the page using option \verbcode|[right]| of package \pkg{lineno}.
+
+\section{Change History}
+
+This is a raw copy of the \href{https://framagit.org/spalax/thalie/-/blob/main/CHANGELOG.md}{\textsl{CHANGELOG.md}} file that can be found in the git repository of \pkg*{thalie}.
+
+\markdownInput{CHANGELOG.md}
+
+\addcontentsline{toc}{section}{\refname}
+\begin{thebibliography}{99}
+ \bibitem{imprimerienationale}
+ {Imprimerie nationale},
+ \emph{Lexique des r\`egles typographiques en usage \`a l'Imprimerie nationale},
+ 2002,
+ ISBN : 978-2-7433-0482-9
+ \bibitem{cyrano}
+ {Edmond Rostand},
+ \emph{Cyrano de Bergerac},
+ 1897
+ \bibitem{midsummer}
+ {William Shakespeare},
+ \emph{A Midsummer Night's Dream},
+ 1600
+ \bibitem{electre}
+ {Jean Giraudoux},
+ \emph{Électre},
+ 1937
+ \bibitem{dtxtut}
+ {Scott Pakin},
+ \emph{How to Package Your \LaTeX{} Package --- Tutorial on writing .dtx and .ins files},
+ 2004,
+ \url{http://www.ctan.org/pkg/dtxtut/}
+ \bibitem{clsguide}
+ {The \LaTeX{} Team},
+ \emph{\LaTeXe{} for class and package writers},
+ 2006,
+ \url{http://www.ctan.org/pkg/clsguide}
+ \bibitem{drama}
+ {Matt Swift},
+ \emph{drama --- Production-style stage script in LaTeX},
+ 2001,
+ \url{http://www.ctan.org/pkg/drama}
+ \bibitem{dramatist}
+ {Massimiliano Dominici},
+ \emph{dramatist --- Typeset dramas, both in verse and in prose},
+ 2005,
+ \url{http://www.ctan.org/pkg/dramatist}
+ \bibitem{play}
+ {James Kilfiger},
+ \emph{play --- Typeset drama using \LaTeX{}},
+ 2001,
+ \url{http://www.ctan.org/pkg/play}
+ \bibitem{screenplay}
+ {John Pate},
+ \emph{screenplay --- A class file to typeset screenplays},
+ 2012,
+ \url{http://www.ctan.org/pkg/screenplay}
+ \bibitem{sides}
+ {Wing L Mui},
+ \emph{sides --- A LaTeX class for typesetting stage plays},
+ 2005,
+ \url{http://www.ctan.org/pkg/sides}
+\end{thebibliography}
+
+\end{document}
diff --git a/macros/latex/contrib/tuda-ci/README.md b/macros/latex/contrib/tuda-ci/README.md
index caf65c101d..b8ab76d200 100644
--- a/macros/latex/contrib/tuda-ci/README.md
+++ b/macros/latex/contrib/tuda-ci/README.md
@@ -2,7 +2,7 @@
Copyright (C) Marei Peischl <marei@peitex.de>, 2018–2022
- tuda-ci 2022/11/04 v3.28
+ tuda-ci 2022/12/11 v3.29
***************************************************************************
@@ -326,4 +326,9 @@ leaflets | DEMO-TUDaLeaflet.tex | tudaleaflet.cls
- Fix reference issues with subtask* in TUDaExercise
* 3.28 (2022-11-04)
- Fix loading mechanism for department specific beamer templates with prefix
- - Internal adjustments to increase flexability \ No newline at end of file
+ - Internal adjustments to increase flexability
+ * 3.29 (2022-12-11)
+ - Fix bug with subtask=runin for TUDaExercise
+ - Add support for lists in solutions of TUDaExercise
+ - Rename some internal mechanisms to unify the structure
+ \ No newline at end of file
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdf
index 965e7fa2d3..64ec628ac7 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdf
index feceda2151..0bf3348d89 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdf
index e82861946e..b0653f5d48 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdf
index f7bb362d3a..d9345f92f6 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdf
index b593024af0..8bb3cb09f3 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdf
index e0bc84a370..178ab54ab6 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdf
index bc0ea6a082..9c3efaa0c5 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdf
index 8d6aca657e..caf5236c46 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdf
index cf73aa8bf0..315d7365b0 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdf
index 6dd3c8755f..3cb5db3887 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdf
index 84546de2a4..10af9a52cc 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex
index 64b8086b8d..f24e8fcab5 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaAnnouncement.tex' version 3.28 (2022/11/04),
+%% This is file `DEMO-TUDaAnnouncement.tex' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex
index afbf25d6b9..c8b2960115 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaBeamer.tex' version 3.28 (2022/11/04),
+%% This is file `DEMO-TUDaBeamer.tex' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib
index c99ed9fa12..ce1c129ba7 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaBibliography.bib' version 3.28 (2022/11/04),
+%% This is file `DEMO-TUDaBibliography.bib' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex
index b0dcf10d0a..2a91a615a0 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaExercise.tex' version 3.28 (2022/11/04),
+%% This is file `DEMO-TUDaExercise.tex' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco
index 8bde3dea08..551ab798eb 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaFromaddress.lco' version 3.28 (2022/11/04),
+%% This is file `DEMO-TUDaFromaddress.lco' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex
index 1f1aad3bba..5356e680a1 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaLeaflet.tex' version 3.28 (2022/11/04),
+%% This is file `DEMO-TUDaLeaflet.tex' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex
index fcf5b455e7..705bee7521 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaLetter.tex' version 3.28 (2022/11/04),
+%% This is file `DEMO-TUDaLetter.tex' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex
index a222817641..3460a4bd91 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaPhD.tex' version 3.28 (2022/11/04),
+%% This is file `DEMO-TUDaPhD.tex' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex
index 1e9693d23e..9b56326f1f 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaPoster.tex' version 3.28 (2022/11/04),
+%% This is file `DEMO-TUDaPoster.tex' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex
index d30b4bf456..9a32030445 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaPub.tex' version 3.28 (2022/11/04),
+%% This is file `DEMO-TUDaPub.tex' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex
index e7ebc9d213..ccad4bf1a4 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaReport.tex' version 3.28 (2022/11/04),
+%% This is file `DEMO-TUDaReport.tex' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex
index 35833b9d01..72c37420f5 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaSciPoster.tex' version 3.28 (2022/11/04),
+%% This is file `DEMO-TUDaSciPoster.tex' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex
index 961b2dbfab..12e65149ad 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaThesis.tex' version 3.28 (2022/11/04),
+%% This is file `DEMO-TUDaThesis.tex' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty b/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty
index 727420891c..30c56b0f7a 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty
@@ -1,4 +1,4 @@
-%% This is file `beamercolorthemeTUDa.sty' version 3.28 (2022/11/04),
+%% This is file `beamercolorthemeTUDa.sty' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.28}
-\def\filedate{2022/11/04}
+\def\fileversion{3.29}
+\def\filedate{2022/12/11}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{beamercolorthemeTUDa}
[\filedate\space\fileversion]
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty b/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty
index e6507bdf56..de085fc342 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerfontthemeTUDa.sty' version 3.28 (2022/11/04),
+%% This is file `beamerfontthemeTUDa.sty' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.28}
-\def\filedate{2022/11/04}
+\def\fileversion{3.29}
+\def\filedate{2022/12/11}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{beamerfontthemeTUDa}
[\filedate\space\fileversion]
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty b/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty
index fe31284d47..b6f00bdb3f 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerinnerthemeTUDa.sty' version 3.28 (2022/11/04),
+%% This is file `beamerinnerthemeTUDa.sty' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.28}
-\def\filedate{2022/11/04}
+\def\fileversion{3.29}
+\def\filedate{2022/12/11}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplPackage{beamerinnerthemeTUDa}{\filedate}{\fileversion}{Inner~beamer~theme~of~tuda-ci}
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty b/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty
index bd8c8fbba5..4c19f50805 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerouterthemeTUDa.sty' version 3.28 (2022/11/04),
+%% This is file `beamerouterthemeTUDa.sty' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.28}
-\def\filedate{2022/11/04}
+\def\fileversion{3.29}
+\def\filedate{2022/12/11}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplPackage{beamerouterthemeTUDa}{\filedate}{\fileversion}{Outer~beamer~theme~of~tuda-ci}
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa-mecheng.sty b/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa-mecheng.sty
index b6732a0728..e9d39a2102 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa-mecheng.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa-mecheng.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerthemeTUDa-mecheng.sty' version 3.28 (2022/11/04),
+%% This is file `beamerthemeTUDa-mecheng.sty' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.28}
-\def\filedate{2022/11/04}
+\def\fileversion{3.29}
+\def\filedate{2022/12/11}
\RequirePackage{expl3}
\ProvidesExplPackage{beamerthemeTUDa-mecheng}{\filedate}{\fileversion}{specific tudabeamer configuration for the department of mechanical engineering}
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty b/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty
index 08f4be7796..31385b28d8 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerthemeTUDa.sty' version 3.28 (2022/11/04),
+%% This is file `beamerthemeTUDa.sty' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.28}
-\def\filedate{2022/11/04}
+\def\fileversion{3.29}
+\def\filedate{2022/12/11}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{beamerthemeTUDa}
[\filedate\space\fileversion\space beamer theme using the Corporate Design of TU Darmstadt]
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo
index b9bd5da1fb..da541ffb59 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo
@@ -1,4 +1,4 @@
-%% This is file `tuda-a0paper.clo' version 3.28 (2022/11/04),
+%% This is file `tuda-a0paper.clo' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.28}
-\def\filedate{2022/11/04}
+\def\fileversion{3.29}
+\def\filedate{2022/12/11}
\ProvidesExplFile{tuda-a0paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a0paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
\cs_set:Nn \ptxcd_title_fontsize: {{125pt}{165pt}}
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo
index 836858d52f..fce9ab14d5 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo
@@ -1,4 +1,4 @@
-%% This is file `tuda-a1paper.clo' version 3.28 (2022/11/04),
+%% This is file `tuda-a1paper.clo' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.28}
-\def\filedate{2022/11/04}
+\def\fileversion{3.29}
+\def\filedate{2022/12/11}
\ProvidesExplFile{tuda-a1paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a1paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
\cs_set:Nn \ptxcd_title_fontsize: {{86pt}{120pt}}
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo
index 854f0b503a..ab02278058 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo
@@ -1,4 +1,4 @@
-%% This is file `tuda-a2paper.clo' version 3.28 (2022/11/04),
+%% This is file `tuda-a2paper.clo' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.28}
-\def\filedate{2022/11/04}
+\def\fileversion{3.29}
+\def\filedate{2022/12/11}
\ProvidesExplFile{tuda-a2paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a0paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
\cs_set:Nn \ptxcd_title_fontsize: {{65pt}{82pt}}
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo
index 4f1aca0e78..5bd7ebbe2d 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo
@@ -1,4 +1,4 @@
-%% This is file `tuda-a3paper.clo' version 3.28 (2022/11/04),
+%% This is file `tuda-a3paper.clo' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.28}
-\def\filedate{2022/11/04}
+\def\fileversion{3.29}
+\def\filedate{2022/12/11}
\ProvidesExplFile{tuda-a3paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a3paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
\cs_set:Nn \ptxcd_title_fontsize: {{47pt}{61pt}}
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo
index 8cd5e7a024..46ca7868f8 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo
@@ -1,4 +1,4 @@
-%% This is file `tuda-a4paper.clo' version 3.28 (2022/11/04),
+%% This is file `tuda-a4paper.clo' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.28}
-\def\filedate{2022/11/04}
+\def\fileversion{3.29}
+\def\filedate{2022/12/11}
\ProvidesExplFile{tuda-a4paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a4paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
\cs_set:Nn \ptxcd_title_fontsize: {{36pt}{47pt}}
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo
index 4021926b3c..2d0c169b25 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo
@@ -1,4 +1,4 @@
-%% This is file `tuda-a5paper.clo' version 3.28 (2022/11/04),
+%% This is file `tuda-a5paper.clo' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.28}
-\def\filedate{2022/11/04}
+\def\fileversion{3.29}
+\def\filedate{2022/12/11}
\ProvidesExplFile{tuda-a5paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a5paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
\cs_set:Nn \ptxcd_title_fontsize: {{22pt}{28pt}}
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty b/macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty
index b37cc67b5a..b85a734379 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty
@@ -1,4 +1,4 @@
-%% This is file `tuda-pgfplots.sty' version 3.28 (2022/11/04),
+%% This is file `tuda-pgfplots.sty' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.28}
-\def\filedate{2022/11/04}
+\def\fileversion{3.29}
+\def\filedate{2022/12/11}
% Special thanks to: Sebastian Schöps Institut Theorie Elektromagnetischer Felder (TEMF), TU Darmstadt
% The original version of this file has been inspired by the colorscheme in the Metropolis beamer theme by Matthias Vogelgesang https://github.com/matze/mtheme
\ProvidesPackage{tuda-pgfplots}[\filedate\space\fileversion\space tuda-ci pgfplots color schemes]
diff --git a/macros/latex/contrib/tuda-ci/tex/tudabeamer.cls b/macros/latex/contrib/tuda-ci/tex/tudabeamer.cls
index aa50dcce9d..fddead5566 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudabeamer.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudabeamer.cls
@@ -1,4 +1,4 @@
-%% This is file `tudabeamer.cls' version 3.28 (2022/11/04),
+%% This is file `tudabeamer.cls' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.28}
-\def\filedate{2022/11/04}
+\def\fileversion{3.29}
+\def\filedate{2022/12/11}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{tudabeamer}
[\filedate\space\fileversion\space]
diff --git a/macros/latex/contrib/tuda-ci/tex/tudacolors.def b/macros/latex/contrib/tuda-ci/tex/tudacolors.def
index ce8f60a0b6..e870743f9d 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudacolors.def
+++ b/macros/latex/contrib/tuda-ci/tex/tudacolors.def
@@ -1,4 +1,4 @@
-%% This is file `tudacolors.def' version 3.28 (2022/11/04),
+%% This is file `tudacolors.def' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.28}
-\def\filedate{2022/11/04}
+\def\fileversion{3.29}
+\def\filedate{2022/12/11}
\ProvidesFile{tudacolors.def}
[\filedate\space\fileversion\space Color definitions for tuda-ci]
diff --git a/macros/latex/contrib/tuda-ci/tex/tudacolors.sty b/macros/latex/contrib/tuda-ci/tex/tudacolors.sty
index 7f13847f10..ee2c54d269 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudacolors.sty
+++ b/macros/latex/contrib/tuda-ci/tex/tudacolors.sty
@@ -1,4 +1,4 @@
-%% This is file `tudacolors.sty' version 3.28 (2022/11/04),
+%% This is file `tudacolors.sty' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.28}
-\def\filedate{2022/11/04}
+\def\fileversion{3.29}
+\def\filedate{2022/12/11}
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
\ProvidesExplPackage{tudacolors}{\filedate}{\fileversion}{Color definition for TU Darmstadt's tuda-ci bundle}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudaexercise.cls b/macros/latex/contrib/tuda-ci/tex/tudaexercise.cls
index 3daebb0140..abb73000dc 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudaexercise.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudaexercise.cls
@@ -1,4 +1,4 @@
-%% This is file `tudaexercise.cls' version 3.28 (2022/11/04),
+%% This is file `tudaexercise.cls' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.28}
-\def\filedate{2022/11/04}
+\def\fileversion{3.29}
+\def\filedate{2022/12/11}
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
\ProvidesExplClass{tudaexercise}
@@ -859,6 +859,7 @@
}{
\@subtask{\l_ptxcd_ex_title_tl}
}
+ \bool_if:NT \g__ptxcd_runin_subtask_bool \strut
\tl_gset_eq:NN \g_tmpa_tl \@currentlabel
\endgroup
\tl_set_eq:NN \@currentlabel \g_tmpa_tl
@@ -891,6 +892,7 @@
\cs_new:Nn \ptxcd_ex_solutionheader: {
\@solution*{\solutionname\solutionsep}
+ \if@newlist\global\@newlistfalse\fi
}
\box_new:N \g_ptxcd_NumberForm_box
diff --git a/macros/latex/contrib/tuda-ci/tex/tudafonts.sty b/macros/latex/contrib/tuda-ci/tex/tudafonts.sty
index 3db7dd43e7..85b69b7e9d 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudafonts.sty
+++ b/macros/latex/contrib/tuda-ci/tex/tudafonts.sty
@@ -1,4 +1,4 @@
-%% This is file `tudafonts.sty' version 3.28 (2022/11/04),
+%% This is file `tudafonts.sty' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.28}
-\def\filedate{2022/11/04}
+\def\fileversion{3.29}
+\def\filedate{2022/12/11}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{tudafonts}
[\filedate\space\fileversion\space
diff --git a/macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls b/macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls
index 56cb811975..c110bedb31 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls
@@ -1,4 +1,4 @@
-%% This is file `tudaleaflet.cls' version 3.28 (2022/11/04),
+%% This is file `tudaleaflet.cls' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.28}
-\def\filedate{2022/11/04}
+\def\fileversion{3.29}
+\def\filedate{2022/12/11}
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
\ProvidesExplPackage{tudaleaflet}{\filedate}{\fileversion}{Leaflets using the Corporate Design of TU Darmstadt}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudaletter.cls b/macros/latex/contrib/tuda-ci/tex/tudaletter.cls
index ac33e0fea6..9fb92a8315 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudaletter.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudaletter.cls
@@ -1,4 +1,4 @@
-%% This is file `tudaletter.cls' version 3.28 (2022/11/04),
+%% This is file `tudaletter.cls' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.28}
-\def\filedate{2022/11/04}
+\def\fileversion{3.29}
+\def\filedate{2022/12/11}
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
\ProvidesExplClass{tudaletter}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo b/macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo
index 05f0e1587c..1a6f214064 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo
@@ -1,4 +1,4 @@
-%% This is file `tudalettersize10pt.clo' version 3.28 (2022/11/04),
+%% This is file `tudalettersize10pt.clo' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/tex/tudamecheng.cfg b/macros/latex/contrib/tuda-ci/tex/tudamecheng.cfg
index 0d969a5056..672d5ba468 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudamecheng.cfg
+++ b/macros/latex/contrib/tuda-ci/tex/tudamecheng.cfg
@@ -1,4 +1,4 @@
-%% This is file `tudamecheng.cfg' version 3.28 (2022/11/04),
+%% This is file `tudamecheng.cfg' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.28}
-\def\filedate{2022/11/04}
+\def\fileversion{3.29}
+\def\filedate{2022/12/11}
\RequirePackage{expl3}
\ProvidesExplFile{tudamecheng.cfg}
{\filedate}{\fileversion}{Special Features the department of mechanical engineering of Darmstadt's Corporate Design (tuda-ci)}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudaposter.cls b/macros/latex/contrib/tuda-ci/tex/tudaposter.cls
index ea4a132480..ad7d072d39 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudaposter.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudaposter.cls
@@ -1,4 +1,4 @@
-%% This is file `tudaposter.cls' version 3.28 (2022/11/04),
+%% This is file `tudaposter.cls' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.28}
-\def\filedate{2022/11/04}
+\def\fileversion{3.29}
+\def\filedate{2022/12/11}
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
\ProvidesExplPackage{tudaposter}{\filedate}{\fileversion}{Poster Layouts for the Corporate Design of TU Darmstadt}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudapub.cls b/macros/latex/contrib/tuda-ci/tex/tudapub.cls
index 730e7d3979..6f6114dddb 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudapub.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudapub.cls
@@ -1,4 +1,4 @@
-%% This is file `tudapub.cls' version 3.28 (2022/11/04),
+%% This is file `tudapub.cls' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.28}
-\def\filedate{2022/11/04}
+\def\fileversion{3.29}
+\def\filedate{2022/12/11}
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
\ProvidesExplClass{tudapub}
@@ -959,10 +959,12 @@
\def\sponsors#1{\def\@sponsors{#1}}
\sponsors{}
-\newcommand*{\ptxcd_title@footnote}[2][1]{
- \textsuperscript{\@fnsymbol{#1}}#2
+\cs_new:Npn \ptxcd_title_footnote:w [#1] #2 {
+ \textsuperscript{ \ptxcd_title_footnotestyle:n {#1}}#2
}
+\cs_set_eq:NN \ptxcd_title_footnotestyle:n \@fnsymbol
+
\str_if_eq:VnTF \g_ptxcd_pubType_tl {thesis} {
\input{tudathesis.cfg}
} {
@@ -986,7 +988,7 @@
\setcounter{page}{%
#1%
}%
- \def\thefootnote{\fnsymbol{footnote}}
+ \def\thefootnote{\ptxcd_title_footnotestyle:n {\c@footnote}}
\if@titlepageiscoverpage
\def\titlepage@restore{%
\endgroup
@@ -1066,7 +1068,7 @@
\expandafter\fontsize\ptxcd_titlethanks_fontsize:\selectfont\par
\rule{\linewidth}{\g_ptxcd_titlerule_dim}\par
\begin{addmargin}{3mm}
- \let\footnotetext\ptxcd_title@footnote
+ \let\footnotetext\ptxcd_title_footnote:w
\@thanks
\end{addmargin}
\par\vspace{-\dp\strutbox}
@@ -1205,6 +1207,7 @@
\usekomafont{disposition}
\hsize=\g_ptxcd_headwidth_dim
\setlength{\fboxsep}{\z@}
+ \def\thefootnote{\ptxcd_title_footnotestyle:n {\c@footnote}}
\bool_if:NT \g_ptxcd_colorback_bool {\bool_set_true:N \g_ptxcd_colorbacktitle_bool}
\bool_if:NT \g_ptxcd_colorbacktitle_bool {\colorbox{identbarcolor}}
{\parbox[t]{\g_ptxcd_headwidth_dim}{
@@ -1258,7 +1261,7 @@
\rule{\g_ptxcd_headwidth_dim}{\g_ptxcd_titlerule_dim}
\expandafter\fontsize\ptxcd_titlethanks_fontsize:\selectfont
\begin{addmargin}{.5\c_ptxcd_largerule_dim}
- \let\footnotetext\ptxcd_title@footnote
+ \let\footnotetext\ptxcd_title_footnote:w
\@thanks
\vspace{\c_ptxcd_rulesep_dim}
\end{addmargin}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudarules.sty b/macros/latex/contrib/tuda-ci/tex/tudarules.sty
index 1b5b49646f..bf98cb2853 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudarules.sty
+++ b/macros/latex/contrib/tuda-ci/tex/tudarules.sty
@@ -1,4 +1,4 @@
-%% This is file `tudarules.sty' version 3.28 (2022/11/04),
+%% This is file `tudarules.sty' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.28}
-\def\filedate{2022/11/04}
+\def\fileversion{3.29}
+\def\filedate{2022/12/11}
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
\ProvidesExplPackage{tudarules}{\filedate}{\fileversion}{Creation of colored bars for tuda-ci bundle}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudasciposter.cls b/macros/latex/contrib/tuda-ci/tex/tudasciposter.cls
index cb14068044..f51e5c5925 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudasciposter.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudasciposter.cls
@@ -1,4 +1,4 @@
-%% This is file `tudasciposter.cls' version 3.28 (2022/11/04),
+%% This is file `tudasciposter.cls' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.28}
-\def\filedate{2022/11/04}
+\def\fileversion{3.29}
+\def\filedate{2022/12/11}
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
\ProvidesExplPackage{tudasciposter}{\filedate}{\fileversion}{Scientific Poster Layout for TU Darmstadt}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo b/macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo
index dca939006b..35181d61cd 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo
@@ -1,4 +1,4 @@
-%% This is file `tudasize9pt.clo' version 3.28 (2022/11/04),
+%% This is file `tudasize9pt.clo' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/tex/tudathesis.cfg b/macros/latex/contrib/tuda-ci/tex/tudathesis.cfg
index c81beadbc4..28bb603c85 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudathesis.cfg
+++ b/macros/latex/contrib/tuda-ci/tex/tudathesis.cfg
@@ -1,4 +1,4 @@
-%% This is file `tudathesis.cfg' version 3.28 (2022/11/04),
+%% This is file `tudathesis.cfg' version 3.29 (2022/12/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.28}
-\def\filedate{2022/11/04}
+\def\fileversion{3.29}
+\def\filedate{2022/12/11}
\RequirePackage{expl3}
\ProvidesExplFile{tudathesis.cfg}
{\filedate}{\fileversion}{Special Features for publication type 'thesis' using TU Darmstadt's Corporate Design (tuda-ci)}
diff --git a/macros/xetex/latex/xduts/README.md b/macros/xetex/latex/xduts/README.md
index 64f28ff260..492123b0b6 100644
--- a/macros/xetex/latex/xduts/README.md
+++ b/macros/xetex/latex/xduts/README.md
@@ -53,6 +53,10 @@ Run command below to open the documentation.
texdoc xduts
```
+#### Overleaf/TeXPage
+
+If you have installed LaTeX distribution locally, you can get the document class/package files and the documentation according to the [description below](#github). Otherwise, you need to download [the document class/package files](https://mirrors.cloud.tencent.com/CTAN/systems/texlive/tlnet/archive/xduts.tar.xz) and [the documentation](https://mirrors.cloud.tencent.com/CTAN/systems/texlive/tlnet/archive/xduts.doc.tar.xz) from CTAN. Finally, upload the document class/package files to the project on Overleaf/TeXPage.
+
### GitHub
Generally speaking, CTAN updates XDUTS slowly. If you want to use the latest version of XDUTS, [download this repository](https://github.com/note286/xduts/archive/refs/heads/main.zip) and run the following command to get the document class/package files.
diff --git a/macros/xetex/latex/xduts/xduts.dtx b/macros/xetex/latex/xduts/xduts.dtx
index b1177cd4a3..7dcae05a0f 100644
--- a/macros/xetex/latex/xduts/xduts.dtx
+++ b/macros/xetex/latex/xduts/xduts.dtx
@@ -1,14 +1,14 @@
% \iffalse
%<*driver>
\ProvidesFile{xduts.dtx}
-[2022/12/06 v3.1.1.2 Xidian University TeX Suite]
+[2022/12/11 v4.0.1.0 Xidian University TeX Suite]
%</driver>
%<class|sty>\NeedsTeXFormat{LaTeX2e}
%<class|sty>\RequirePackage{expl3}
%<xdufont>\ProvidesExplPackage{xdufont}
%<xdupgthesis>\ProvidesExplClass{xdupgthesis}
%<xduugthesis>\ProvidesExplClass{xduugthesis}
-%<class|sty> {2022/12/06}{3.1.1.2}
+%<class|sty> {2022/12/11}{4.0.1.0}
%<xdufont> {Xidian University Font package}
%<xdupgthesis> {Xidian University Postgraduate Thesis document class}
%<xduugthesis> {Xidian University Undergraduate Thesis document class}
@@ -89,7 +89,7 @@
\newcommand{\cmdx}[1]{\xspace{\ttfamily\seqsplit{#1}}\xspace}
% 链接
\newcommand{\footurl}[1]{\footnote{\url{#1}}}
-\newcommand{\ctanurl}[1]{\href{https://mirrors.ustc.edu.cn/CTAN/#1}{\ttfamily CTAN://#1}}
+\newcommand{\ctanurl}[1]{\href{https://mirrors.cloud.tencent.com/CTAN/#1}{\ttfamily CTAN://#1}}
\newcommand{\footctan}[1]{\footnote{\ctanurl{#1}}}
% logo
\newcommand{\xduts}{{\bfseries\ffmfamily XDUTS}}
@@ -125,7 +125,7 @@ texcs = [1]{documentclass,usepackage},
texcs = [2]{begin,end},
texcs = [3]{part,chapter,section,subsection,subsubsection,paragraph,subparagraph},
texcs = [4]{xdusetup,anon,noauxwrite},
-texcs = [5]{textbf,textsl,textsf,frontmatter,mainmatter,backmatter,par,item,caption,parencite},
+texcs = [5]{textbf,textsl,textsf,par,item,caption,parencite},
emph = [6]{document,tabular,edubg,resresult,appendixes},
literate = {\$}{{\textcolor{purple3}{\$}}}{1}
{\{}{{\textcolor{purple3}{\{}}}{1}
@@ -141,6 +141,8 @@ literate = {\$}{{\textcolor{purple3}{\$}}}{1}
\makeatother
\RenewDocumentCommand{\floatpagefraction}{}{.8}
\usepackage[nolinks]{qrcode}
+\usepackage{fontawesome5}
+\usepackage{tikz}
\changes{v3.1.1.1}{2022/12/04}{手册首页增加水印}
\usepackage[firstpageonly=true]{draftwatermark}
\DraftwatermarkOptions{angle=45,fontsize=40pt,color={gray9!25}}
@@ -218,8 +220,9 @@ literate = {\$}{{\textcolor{purple3}{\$}}}{1}
% \label{使用说明}
% 《一份(不太)简短的\LaTeXe{}介绍》\footctan{info/lshort/chinese/lshort-zh-cn.pdf}
% 中提及的内容本文档将不再赘述。
+% 此外,在\secrefx{使用建议}中给出了部分使用建议。
% \xduts{}中的所有文档类和宏包仅内置了实现功能所需的宏包,
-% 对于常用的宏包如\pkgx{subfig}、\pkgx{algpseudocodex}、
+% 对于常用的宏包如\pkgx{subcaption}、\pkgx{algpseudocodex}、
% \pkgx{amsmath}、\pkgx{amsthm}和\pkgx{siunitx}等\textbf{均未内置},
% 用户可以参考\secrefx{兼容性说明}后,视需求自行加载。
% 相应格式规范均已实现,用户仅需要撰写文章内容即可,请勿随意添加格式修改命令。
@@ -228,7 +231,7 @@ literate = {\$}{{\textcolor{purple3}{\$}}}{1}
% 用户可以结合学校规范并参考\secrefx{功能说明}功能说明自行修改。
% \par
% 请在最新版\LaTeX{}环境中使用最新版\xduts{},
-% 认真阅读相应文档类/宏包使用说明章节即可使用\xduts{}。
+% 认真阅读相应文档类/宏包使用说明章节后即可使用\xduts{}。
% \subsection{\pkgx{xdufont}宏包}
% \pkgx{xdufont}宏包基于\pkgx{xeCJK}宏包和\pkgx{unicode-math}宏包,
% 在中文字体配置方面相较于\pkgx{ctex}宏包的主要优势为默认支持宋体粗体、斜体,
@@ -257,16 +260,13 @@ literate = {\$}{{\textcolor{purple3}{\$}}}{1}
% 专业学位硕士请额外阅读《西安电子科技大学专业学位硕士学位论文封面及中英文题名页模板(2015年版)-2019.03修订》,
% 撰写英文学位论文请额外阅读《西安电子科技大学英文学位论文撰写相关规定》。
% \par
-% 一个典型的使用\clsx{xdupgthesis}文档类的\filex{.tex}主文件结构如下所示:
+% 使用\clsx{xdupgthesis}文档类的最小示例如下所示:
% \begin{lstlisting}
% \documentclass{xdupgthesis}
% \xdusetup{}
% \begin{document}
-% \frontmatter
-% \mainmatter
% \chapter{欢迎}
% 使用\LaTeX{}!
-% \backmatter
% \end{document}
% \end{lstlisting}
% \par
@@ -286,7 +286,6 @@ literate = {\$}{{\textcolor{purple3}{\$}}}{1}
% 算法配置见\secrefx{算法配置},
% 对照表配置见\secrefx{对照表配置},
% 作者简介配置见\secrefx{作者简介配置}。
-% 如需附录,请使用附录环境,具体见\secrefx{附录环境}。
% 支持的信息录入选项见\secrefx{信息录入}。
% 页面和信息移除见\secrefx{页面和信息移除}。
% \par
@@ -298,16 +297,13 @@ literate = {\$}{{\textcolor{purple3}{\$}}}{1}
% \changes{v1.3.1.1}{2022/04/26}{英文本科生毕业设计规范参考说明}
% 请在阅读《本科生毕业设计(论文)工作手册》后再使用\pkgx{xduugthesis}文档类。
% \par
-% 一个典型的使用\clsx{xduugthesis}文档类的\filex{.tex}主文件结构如下所示:
+% 使用\clsx{xduugthesis}文档类的最小示例如下所示:
% \begin{lstlisting}
% \documentclass{xduugthesis}
% \xdusetup{}
% \begin{document}
-% \frontmatter
-% \mainmatter
% \chapter{欢迎}
% 使用\LaTeX{}!
-% \backmatter
% \end{document}
% \end{lstlisting}
% \par
@@ -326,7 +322,6 @@ literate = {\$}{{\textcolor{purple3}{\$}}}{1}
% 图表配置见\secrefx{图表配置},
% 算法配置见\secrefx{算法配置},
% 章节配置见\secrefx{章节配置},
-% 附录配置见\secrefx{附录环境},
% 支持的信息录入选项见\secrefx{信息录入}。
% \par
% 学会以上用法后即可使用\clsx{xduugthesis}文档类。
@@ -352,6 +347,29 @@ literate = {\$}{{\textcolor{purple3}{\$}}}{1}
% 包括所有使用\envx{table}浮动体的表格、
% \pkgx{tabularray}宏包提供的\envx{tblr}、\envx{longtblr}环境
% 和\pkgx{longtable}宏包提供的\envx{longtable}环境。
+% \changes{v4.0.0.1}{2022/12/11}{增加使用建议}
+% \section{使用建议}
+% \label{使用建议}
+% 本节主要针对\pkgx{xduugthesis}和\pkgx{xduugthesis}文档类提出使用建议,
+% 用户仍可不遵守本节的建议并根据自己的偏好进行使用。
+% \par
+% 宏包方面,在\secrefx{兼容性说明}中提到已适配多种宏包。
+% 但是,由于各种原因,部分宏包已不建议使用。
+% 推荐使用\pkgx{algorithm}和\pkgx{algpseudocodex}宏包排版算法;
+% 推荐使用\pkgx{subcaption}宏包排版子图;
+% 推荐使用\pkgx{tabularray}宏包排版\textbf{所有的表格};
+% 推荐使用\pkgx{siunitx}宏包排版单位;
+% 推荐使用\pkgx{xurl}宏包实现链接自动折行。
+% 另外,不要加载任何与参考文献相关的宏包。
+% 使用宏包提供的功能时,\textbf{请阅读相应的宏包文档}。
+% \par
+% 字体方面,中文、英文和数学字体均提供了多种配置。
+% 对于中英文字体,用户可以根据自己的喜好选择合适的配置,
+% 部分配置对应的字体可能需要自行购买并安装。
+% 对于数学字体,强烈建议用户选择一个与中英文字体搭配的数学字体。
+% 注意,当使用非Computer Modern字体时,
+% 部分命令(例如,加粗等)可能与传统方式不同,
+% 请自行阅读\pkgx{unicode-math}文档。
% \section{功能说明}
% \label{功能说明}
% 请根据\secrefx{使用说明}中相应文档类/宏包的说明来选择性地阅读本节内容。
@@ -956,24 +974,7 @@ literate = {\$}{{\textcolor{purple3}{\$}}}{1}
% \label{附录环境}
% \changes{v1.29.0.0}{2022/06/19}{研究生学位论文附录环境}
% \begin{function}[added=2022-04-04,updated=2022-06-19]{appendixes}
-% 本科生毕业设计附录位于参考文献后,即在\tnx{backmatter}后。
-% \begin{lstlisting}
-% \chapter{这是正文章节}
-% \backmatter
-% \begin{appendixes}
-% \chapter{这是一个附录}
-% \chapter{这是另一个附录}
-% \end{appendixes}
-% \end{lstlisting}
-% 研究生学位论文附录位于参考文献前,即在\tnx{backmatter}前。
-% \begin{lstlisting}
-% \chapter{这是正文章节}
-% \begin{appendixes}
-% \chapter{这是一个附录}
-% \chapter{这是另一个附录}
-% \end{appendixes}
-% \backmatter
-% \end{lstlisting}
+% 已弃用。
% \end{function}
% \subsection{信息录入}
% \label{信息录入}
@@ -1041,6 +1042,7 @@ literate = {\$}{{\textcolor{purple3}{\$}}}{1}
% los & & & \cmark & \cmark & \cmark & \cmark \\
% loa & & & \cmark & \cmark & \cmark & \cmark \\
% bib-resource & \cmark & \cmark & \cmark & \cmark & \cmark & \cmark \\
+% appendix & \cmark & \cmark & \cmark & \cmark & \cmark & \cmark \\
% acknowledgements & \cmark & \cmark & \cmark & \cmark & \cmark & \cmark \\
% bio & & & \cmark & \cmark & \cmark & \cmark \\
% \end{tblr}
@@ -1247,6 +1249,13 @@ literate = {\$}{{\textcolor{purple3}{\$}}}{1}
% \end{syntax}
% 设置参考文献\filex{.bib}文件路径,多个文件之间需要使用英文半角逗号隔开。
% \end{function}
+% \changes{v4.0.0.0}{2022/12/11}{增加附录文件接口}
+% \begin{function}[added=2022-12-11]{info/appendix}
+% \begin{syntax}
+% \optx{info/appendix}=\argx{附录文件路径}
+% \end{syntax}
+% 设置附录文件路径,多个文件之间需要使用英文半角逗号隔开。
+% \end{function}
% \begin{function}[added=2022-04-02]{info/acknowledgements}
% \begin{syntax}
% \optx{info/acknowledgements}=\argx{致谢文件路径}
@@ -1650,19 +1659,13 @@ literate = {\$}{{\textcolor{purple3}{\$}}}{1}
% 和《Good things come in little packages: An introduction to writing .ins and .dtx files》\footurl{https://www.tug.org/TUGboat/tb29-2/tb92pakin.pdf}
% 提供了很大帮助。
% 在文档的编写过程中,参考了\filex{ctex.dtx}、\filex{fduthesis.dtx}、\filex{njuthesis.dtx}和\filex{thuthesis.dtx}。
+% \changes{v3.1.1.3}{2022/12/10}{二维码增加图标}
% \changes{v3.1.1.2}{2022/12/06}{增加QQ支付二维码}
% \changes{v2.16.1.2}{2022/11/27}{修正文档中图片引用间距}
% \changes{v2.15.0.1}{2022/11/26}{增加赞助二维码}
% \section{赞助}
% 如果觉得\xduts{}对您有所帮助,可以扫描\figrefx{fig:zanzhu}中的二维码来赞助\xduts{},赞助主要用于给作者补充营养。
% \ExplSyntaxOn
-% \str_set_convert:Nnnn \l_xduts_qq_qr_str {%
-% 68747470733A2F2F692E7169616E62616F2E71712E636F6D2F77616C6C65742F737172636F64%
-% 652E68746D3F6D3D74656E70617926613D3126753D313138333133313434372661633D434145%
-% 517438365574415159343457366E415934414549675A4755775A6D51314D6A55784E3249354E%
-% 32566A4D4455794E445A684D32457A4D6A45325A6A55314E7A512533445F7878785F7369676E%
-% 266E3D4361726F6C26663D77616C6C6574 } { utf8/hex } { }
-% \newcommand{\qqqr}{\str_use:N \l_xduts_qq_qr_str}
% \str_set_convert:Nnnn \l_xduts_alipay_qr_str {%
% 68747470733A2F2F71722E616C697061792E636F6D2F666B7831353935393164716575747463%
% 77626175726235} { utf8/hex } { }
@@ -1671,13 +1674,29 @@ literate = {\$}{{\textcolor{purple3}{\$}}}{1}
% 7778703A2F2F6632663074504D4D506D3161616467483665396162527030446E317746337344%
% 6C6468764350382D66765346424577} { utf8/hex } { }
% \newcommand{\wxpqr}{\str_use:N \l_xduts_wxp_qr_str}
+% \str_set_convert:Nnnn \l_xduts_qq_qr_str {%
+% 68747470733A2F2F692E7169616E62616F2E71712E636F6D2F77616C6C65742F737172636F64%
+% 652E68746D3F6D3D74656E70617926613D3126753D313138333133313434372661633D434145%
+% 517438365574415159343457366E415934414549675A4755775A6D51314D6A55784E3249354E%
+% 32566A4D4455794E445A684D32457A4D6A45325A6A55314E7A512533445F7878785F7369676E%
+% 266E3D4361726F6C26663D77616C6C6574 } { utf8/hex } { }
+% \newcommand{\qqqr}{\str_use:N \l_xduts_qq_qr_str}
% \ExplSyntaxOff
-% \begin{figure}[h]
+% \definecolor{alipayc}{RGB}{22,120,255}
+% \definecolor{weixinc}{RGB}{7,193,96}
+% \definecolor{qqc}{RGB}{18,184,246}
+% \NewDocumentCommand{\qrcodex}{mmm}{
+% \begin{tikzpicture}
+% \node at (0,0) {\textcolor{#3!30}{\qrcode[height=4cm]{#1}}};
+% \node at (current bounding box.center) {\textcolor{#3}{\scalebox{3}{\faIcon{#2}}}};
+% \end{tikzpicture}
+% }
+% \begin{figure}[htbp]
% \centering
% \mbox{}\hfill
-% \subcaptionbox{支付宝}{\textcolor[RGB]{22,120,255}{\qrcode[height=4cm]{\alipayqr}}}\hfill
-% \subcaptionbox{微信支付}{\textcolor[RGB]{7,193,96}{\qrcode[height=4cm]{\wxpqr}}}\hfill
-% \subcaptionbox{QQ支付}{\textcolor[RGB]{18,184,246}{\qrcode[height=4cm]{\qqqr}}}
+% \subcaptionbox{支付宝}{\qrcodex{\alipayqr}{alipay}{alipayc}}\hfill
+% \subcaptionbox{微信支付}{\qrcodex{\wxpqr}{weixin}{weixinc}}\hfill
+% \subcaptionbox{QQ支付}{\qrcodex{\qqqr}{qq}{qqc}}
% \hfill\mbox{}
% \caption{赞助二维码}
% \label{fig:zanzhu}
@@ -2563,6 +2582,7 @@ literate = {\$}{{\textcolor{purple3}{\$}}}{1}
% \l_@@_keywords_zh_clist,
% \l_@@_keywords_en_clist,
% \l_@@_bib_file_clist,
+% \l_@@_appendix_clist,
% \l_@@_ack_tl
% }
% 论文标题。
@@ -2615,6 +2635,10 @@ literate = {\$}{{\textcolor{purple3}{\$}}}{1}
% \begin{macrocode}
\clist_new:N \l_@@_bib_file_clist
% \end{macrocode}
+% 附录。
+% \begin{macrocode}
+\clist_new:N \l_@@_appendix_clist
+% \end{macrocode}
% 致谢。
% \begin{macrocode}
\tl_new:N \l_@@_ack_tl
@@ -2674,6 +2698,10 @@ literate = {\$}{{\textcolor{purple3}{\$}}}{1}
% \begin{macrocode}
bib-resource .clist_set:N = \l_@@_bib_file_clist,
% \end{macrocode}
+% 附录。
+% \begin{macrocode}
+ appendix .clist_set:N = \l_@@_appendix_clist,
+% \end{macrocode}
% 致谢。
% \begin{macrocode}
acknowledgements .tl_set:N = \l_@@_ack_tl
@@ -2697,6 +2725,7 @@ literate = {\$}{{\textcolor{purple3}{\$}}}{1}
info / keywords = { },
info / keywords* = { },
info / bib-resource = { },
+ info / appendix = { },
info / acknowledgements = { }
}
% \end{macrocode}
@@ -5323,7 +5352,7 @@ literate = {\$}{{\textcolor{purple3}{\$}}}{1}
% \end{macrocode}
% \end{macro}
% \subsection{附录}
-% \begin{macro}{appendixes}
+% \begin{macro}{\@@_appendix:}
% 附录环境。
% \changes{v0.3.0.0}{2022/04/04}{新增附录环境}
% \changes{v0.3.1.0}{2022/04/04}{修正附录中图表编号样式}
@@ -5331,8 +5360,7 @@ literate = {\$}{{\textcolor{purple3}{\$}}}{1}
% \changes{v0.10.4.0}{2022/04/14}{修正附录中\pkgx{algorithm2e}算法编号样式}
% \changes{v1.2.2.0}{2022/04/20}{修正英文附录编号}
% \begin{macrocode}
-\RequirePackage { environ }
-\NewEnviron { appendixes }
+\cs_new:Npn \@@_appendix:
{
\cs_set:Npn \appendixname { \@@_lang_switch:nn { 附录 } { Appendix } }
\tl_set_eq:NN \l_@@_chaptername \appendixname
@@ -5344,25 +5372,25 @@ literate = {\$}{{\textcolor{purple3}{\$}}}{1}
{ \cs_set:Npn \thealgorithm { \thechapter \arabic { algorithm } } }
\cs_if_exist:NT \thealgocf
{ \cs_set:Npn \thealgocf { \thechapter \arabic { algocf } } }
- \BODY
+ \bool_if_exist:NTF \l_@@_rm_appendix_bool
+ {
+ \bool_if:NF \l_@@_rm_appendix_bool
+ {
+ \clist_map_inline:Nn \l_@@_appendix_clist
+ { \file_if_exist_input:n { ##1 } }
+ }
+ }
+ {
+ \clist_map_inline:Nn \l_@@_appendix_clist
+ { \file_if_exist_input:n { ##1 } }
+ }
}
% \end{macrocode}
% \begin{macrocode}
%</thesis>
-%<*xdupgthesis>
-% \end{macrocode}
-% \changes{v2.7.0.0}{2022/06/26}{研究生学位论文支持移除附录}
-% 研究生学位论文支持移除附录。
-% \begin{macrocode}
-\ctex_at_end_preamble:n
- {
- \bool_if:NT \l_@@_rm_appendix_bool
- { \RenewEnviron { appendixes } { } }
- }
% \end{macrocode}
% \end{macro}
% \begin{macrocode}
-%</xdupgthesis>
%<*xduugthesis>
% \end{macrocode}
% \changes{v1.26.7.1}{2022/06/12}{整理代码结构}
@@ -5492,12 +5520,13 @@ literate = {\$}{{\textcolor{purple3}{\$}}}{1}
}
% \end{macrocode}
% \end{macro}
-% \paragraph{\tn{frontmatter}}
-% \begin{macro}{\frontmatter}
+% \paragraph{重定义\tn{frontmatter}}
+% \begin{macro}{\frontmatter,\@@_frontmatter:}
% \changes{v1.9.1.0}{2022/05/04}{修正封面元素位置及尺寸}
% 排版前言部分。
% \begin{macrocode}
-\renewcommand { \frontmatter }
+\RenewDocumentCommand { \frontmatter } { } { }
+\cs_new:Npn \@@_frontmatter:
{
\loadgeometry { cover }
\pagestyle { empty }
@@ -6774,15 +6803,16 @@ literate = {\$}{{\textcolor{purple3}{\$}}}{1}
}
% \end{macrocode}
% \end{macro}
-% \paragraph{\tn{frontmatter}}
-% \begin{macro}{\frontmatter}
+% \paragraph{重定义\tn{frontmatter}}
+% \begin{macro}{\frontmatter,\@@_frontmatter:}
% \changes{v1.5.0.0}{2022/05/01}{设置封面页边距}
% \changes{v1.6.0.0}{2022/05/02}{设置页脚页码}
% \changes{v1.16.0.0}{2022/05/22}{绘制研究生封面}
% \changes{v2.7.0.0}{2022/06/26}{研究生学位论文支持移除前言部分页面}
% 排版前言部分。
% \begin{macrocode}
-\renewcommand { \frontmatter }
+\RenewDocumentCommand { \frontmatter } { } { }
+\cs_new:Npn \@@_frontmatter:
{
\loadgeometry { cover }
\pagestyle { empty }
@@ -6903,11 +6933,12 @@ literate = {\$}{{\textcolor{purple3}{\$}}}{1}
% \end{macrocode}
% \subsection{正文部分}
% \subsubsection{本科生}
-% \begin{macro}{\mainmatter}
+% \begin{macro}{\mainmatter,\@@_mainmatter:}
% \changes{v0.8.0.0}{2022/04/12}{支持对称页边距}
% 排版正文部分。
% \begin{macrocode}
-\renewcommand { \mainmatter }
+\RenewDocumentCommand { \mainmatter } { } { }
+\cs_new:Npn \@@_mainmatter:
{
\@@_load_main_geometry:
\pagestyle { plain }
@@ -6922,14 +6953,15 @@ literate = {\$}{{\textcolor{purple3}{\$}}}{1}
%<*xdupgthesis>
% \end{macrocode}
% \subsubsection{研究生}
-% \begin{macro}{\mainmatter}
+% \begin{macro}{\mainmatter,\@@_mainmatter:}
% \changes{v1.5.0.0}{2022/05/01}{设置正文页边距}
% \changes{v1.6.0.0}{2022/05/02}{设置页脚页码}
% \changes{v1.23.1.0}{2022/06/05}{设置正文字号和行间距}
% \changes{v2.10.3.0}{2022/06/28}{修正公式与正文间距}
% 排版正文部分。
% \begin{macrocode}
-\renewcommand { \mainmatter }
+\RenewDocumentCommand { \mainmatter } { } { }
+\cs_new:Npn \@@_mainmatter:
{
\@@_load_main_geometry:
\pagestyle { plain }
@@ -6979,10 +7011,11 @@ literate = {\$}{{\textcolor{purple3}{\$}}}{1}
% \end{macrocode}
% \subsection{后记部分}
% \subsubsection{本科生}
-% \begin{macro}{\backmatter}
+% \begin{macro}{\backmatter,\@@_backmatter:}
% 排版后记部分。
% \begin{macrocode}
-\renewcommand { \backmatter }
+\RenewDocumentCommand { \backmatter } { } { }
+\cs_new:Npn \@@_backmatter:
{
% \end{macrocode}
% \changes{v1.1.4.0}{2022/04/16}{为致谢章节标题增加间距}
@@ -7017,6 +7050,10 @@ literate = {\$}{{\textcolor{purple3}{\$}}}{1}
}
{ \printbibliography }
\group_end:
+% \end{macrocode}
+% 本科生毕业设计附录。
+% \begin{macrocode}
+ \@@_appendix:
}
% \end{macrocode}
% \end{macro}
@@ -7081,12 +7118,17 @@ literate = {\$}{{\textcolor{purple3}{\$}}}{1}
% \end{macrocode}
% \end{macro}
% \changes{v2.7.0.0}{2022/06/26}{研究生学位论文支持移除后记部分页面}
-% \begin{macro}{\backmatter}
+% \begin{macro}{\backmatter,\@@_backmatter:}
% 排版后记部分。
% \begin{macrocode}
-\renewcommand { \backmatter }
+\RenewDocumentCommand { \backmatter } { } { }
+\cs_new:Npn \@@_backmatter:
{
% \end{macrocode}
+% 研究生学位论文附录。
+% \begin{macrocode}
+ \@@_appendix:
+% \end{macrocode}
% \changes{v1.30.0.0}{2022/06/20}{恢复英文研究生学位论文后记一二三级标题命令}
% 恢复英文研究生学位论文后记一二三级标题命令。
% \begin{macrocode}
@@ -7157,6 +7199,7 @@ literate = {\$}{{\textcolor{purple3}{\$}}}{1}
\rmfamily \zihao { -4 }
\dim_set:Nn \baselineskip { 20pt }
% \end{macrocode}
+% \changes{v4.0.1.0}{2022/12/11}{兼容\pkgx{calc}包}
% 配置作者简介部分标题样式。
% \begin{macrocode}
\ctexset
@@ -7168,7 +7211,7 @@ literate = {\$}{{\textcolor{purple3}{\$}}}{1}
subsection / indent = { \l_@@_bio_indent_dim }
}
\setcounter { section } { 0 }
- \addtocontents { toc } { \setcounter { tocdepth } { 0 } }
+ \addtocontents { toc } { \protect \setcounter { tocdepth } { 0 } }
% \end{macrocode}
% 作者简介文件。
% \begin{macrocode}
@@ -7180,6 +7223,17 @@ literate = {\$}{{\textcolor{purple3}{\$}}}{1}
% \end{macro}
% \begin{macrocode}
%</xdupgthesis>
+%<*thesis>
+% \end{macrocode}
+% \section{前言、正文和后记部分}
+% \changes{v4.0.0.0}{2022/12/11}{本科生毕业设计和研究生学位论文添加前言、正文和后记部分}
+% 本科生毕业设计和研究生学位论文添加前言、正文和后记部分。
+% \begin{macrocode}
+\ctex_after_end_preamble:n { \@@_frontmatter: \@@_mainmatter: }
+\AtEndDocument { \@@_backmatter: }
+% \end{macrocode}
+% \begin{macrocode}
+%</thesis>
% \end{macrocode}
% \begin{macrocode}
%<@@=>
diff --git a/macros/xetex/latex/xduts/xduts.pdf b/macros/xetex/latex/xduts/xduts.pdf
index 47438abbe0..10498b3166 100644
--- a/macros/xetex/latex/xduts/xduts.pdf
+++ b/macros/xetex/latex/xduts/xduts.pdf
Binary files differ
diff --git a/support/TeX4ht/source/ChangeLog b/support/TeX4ht/source/ChangeLog
index a8e77d25f2..d0d814e916 100644
--- a/support/TeX4ht/source/ChangeLog
+++ b/support/TeX4ht/source/ChangeLog
@@ -1,3 +1,9 @@
+2022-12-10 Michal Hoftich <michal.h21@gmail.com>
+
+ * tex4ht-4ht.tex (pdfbase-hooks.4ht): fixed handling of Pdfbase
+ outut routine, to prevent fatal error.
+ https://puszcza.gnu.org.ua/bugs/?586
+
2022-12-09 Michal Hoftich <michal.h21@gmail.com>
* tex4ht-4ht.tex (tabularray.4ht),
diff --git a/support/TeX4ht/source/tex4ht-4ht.tex b/support/TeX4ht/source/tex4ht-4ht.tex
index ba24967e2f..2b3f41fe89 100644
--- a/support/TeX4ht/source/tex4ht-4ht.tex
+++ b/support/TeX4ht/source/tex4ht-4ht.tex
@@ -1,4 +1,4 @@
-% $Id: tex4ht-4ht.tex 1262 2022-12-09 16:11:45Z michal_h21 $
+% $Id: tex4ht-4ht.tex 1263 2022-12-10 21:08:00Z michal_h21 $
% tex tex4ht-4ht or ht tex tex4ht-4ht
%
% Copyright 2009-2022 TeX Users Group
@@ -4890,8 +4890,7 @@ The pdfbase package redefines \`|\@outputpage| macro, which causes tex4ht patche
% Copyright 2020 TeX Users Group
|<TeX4ht license text|>
\:AtEndOfPackage{%
- \let\old:outputpage\@outputpage
- \def\@outputpage{\old:outputpage{}}
+ \expandafter\let\expandafter\@outputpage\csname pbs_outputpage_orig:\endcsname
}
>>> \AddFile{9}{pdfbase-hooks}
diff --git a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
index 1f6663c7ac..1ffb51d280 100644
--- a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
+++ b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
@@ -175,6 +175,9 @@ $mirrors = {
'https://mirror.its.dal.ca/ctan/' => 1,
'https://muug.ca/mirror/ctan/' => 1,
},
+ 'Costa Rica' => {
+ 'https://mirrors.ucr.ac.cr/CTAN/' => 1,
+ },
'USA' => {
'http://bay.uchicago.edu/CTAN/' => 1,
'http://mirrors.ibiblio.org/pub/mirrors/CTAN/' => 1,
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb b/systems/texlive/tlnet/tlpkg/texlive.tlpdb
index 975f057fac..565bfc70af 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb
@@ -26,7 +26,7 @@ depend container_split_src_files/1
depend frozen/0
depend minrelease/2016
depend release/2022
-depend revision/65231
+depend revision/65237
name 00texlive.image
category TLCore
@@ -4673,7 +4673,7 @@ depend setting_available_architectures:aarch64-linux amd64-freebsd amd64-netbsd
name 00texlive.installer
category TLCore
-revision 65227
+revision 65233
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
@@ -34088,7 +34088,7 @@ catalogue-version 1.9
name beamertheme-arguelles
category Package
-revision 63691
+revision 65234
shortdesc Simple, typographic beamer theme
relocated 1
longdesc Arguelles is a beamer theme that helps you create beautiful
@@ -34098,15 +34098,15 @@ longdesc elegant but subtle, so as to keep the audience's attention on
longdesc your content. This is brought to life by Alegreya, one of the
longdesc 53 Fonts of the Decade selected by the Association
longdesc Typographique Internationale (2011).
-containersize 2116
-containerchecksum 14c54a9fd82994392e7f8dafd09a6e64e2a3184f187b45ab7d9e4580a0c900b7d9238968053750fe102282f253772225dbea2371cbce324990e696ff13c0edc9
-doccontainersize 848076
-doccontainerchecksum 31d3660c266fbbe27588d6d8ca9c826b51b50a076bde2107af49b731e5a82b6017a6cd5eedd11f7435be6cfd4def4ac24f0257d1e986da8c86cc7b1d402481a3
-docfiles size=217
+containersize 2676
+containerchecksum ea4a68b807cdacc06a642e2cf2ae43c73da67575feba266f88890180f387d23ff2891c3a659b4c42f34e6bf3edba0e25675ecbeda16f57e65f68648e6e28ca83
+doccontainersize 1012920
+doccontainerchecksum 6df955223c1e301c24bcfda090eabf345cd292a5c0c815f2f4f45343d7f6b13f3473281e3f4b02545d7c12a936b699012136d17cd333e060821e826bc9c34e2d
+docfiles size=268
RELOC/doc/latex/beamertheme-arguelles/LICENSE
RELOC/doc/latex/beamertheme-arguelles/README.md details="Readme"
- RELOC/doc/latex/beamertheme-arguelles/VERSION
- RELOC/doc/latex/beamertheme-arguelles/demo/demo-arguelles.gif
+ RELOC/doc/latex/beamertheme-arguelles/demo/demo-arguelles-sans.gif
+ RELOC/doc/latex/beamertheme-arguelles/demo/demo-arguelles-serif.gif
RELOC/doc/latex/beamertheme-arguelles/demo/demo-arguelles.pdf details="Example of use"
RELOC/doc/latex/beamertheme-arguelles/demo/demo-arguelles.tex
runfiles size=5
@@ -34120,7 +34120,7 @@ catalogue-contact-repository https://github.com/piazzai/arguelles
catalogue-ctan /macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles
catalogue-license mit
catalogue-topics presentation
-catalogue-version 1.2.2
+catalogue-version 2.0.0
name beamertheme-cuerna
category Package
@@ -34866,16 +34866,16 @@ catalogue-topics class book-pub chinese multilingual expl3
name beebe
category Package
-revision 65056
+revision 65233
catalogue biblio
shortdesc A collection of bibliographies
relocated 1
longdesc A collection of BibTeX bibliographies on TeX-related topics
longdesc (including, for example, spell-checking and SGML). Each
longdesc includes a LaTeX wrapper file to typeset the bibliography.
-containersize 894364
-containerchecksum 37e9f3150a4f1da0065733e8a9bd1e5934f5f77e12706c79b3705ebc606efaf86f5a10c92763fbb154c552050a9d860ed32eefb46af17e74b1c1fb2192972dda
-runfiles size=2198
+containersize 898760
+containerchecksum 5b07388c7a01d8d75480e182405c5cb337669868842d88d139ae4d3fbf8bc38b30012254bec97ae0ae6024807f8f835d939611b002143934ba023d8f36809dab
+runfiles size=2207
RELOC/bibtex/bib/beebe/epodd.bib
RELOC/bibtex/bib/beebe/font.bib
RELOC/bibtex/bib/beebe/printing-history.bib
@@ -207617,22 +207617,22 @@ catalogue-version 1.02
name mindflow
category Package
-revision 61843
+revision 65236
shortdesc Write your ideas in a clear way
relocated 1
longdesc This package provides an environment that has its own line
longdesc numbers or markers and can be well distinguished from the main
longdesc text, for writing your ideas or annotations.
-containersize 2548
-containerchecksum 2c54cb3fffdb037329ac7cc02a4821a16b0ad1b2a4f3415ec247ae1d48ad24e8b86338bd7b2ef8a004a70388b9468766e997c6fde896c92339a450768fba7b42
-doccontainersize 195724
-doccontainerchecksum fe12152f885fb65a466fc0aa2a1921a2bf3a252c036a86330700ccbf0717c256a49d7675f4e3fb2f45beabb5329123aae85bd6a0560fbf8c13bf290a7a46421b
-docfiles size=53
+containersize 2536
+containerchecksum 35d1b4fd39bb64fb1e9c89ebaf33d54051f0f550967362dee15294aeac0066f92b0437e688b5065795dc19a680a9f26c99cb1647c3ddacbe0054ecf553c2f9eb
+doccontainersize 202452
+doccontainerchecksum 4ad9f6c4e024f782dd1f0ec2e4847c45690c4c39410395cc4fb122f340b2dba0dbea5664f65640d2fc53ea301bba9e5758c7e29f3556511e307b6c0c2c46653e
+docfiles size=55
RELOC/doc/latex/mindflow/LICENSE
RELOC/doc/latex/mindflow/README.md details="Readme"
RELOC/doc/latex/mindflow/mindflow.pdf details="Package documentation"
-srccontainersize 6572
-srccontainerchecksum 84657523767c4e20b77cc2ad4fd860c33c5d9aa03720f4bc0cbcf1d37970c0b2f4e27259ab414e681cb049696897a3480fc8b7a9baf45052699b3b8d644f8479
+srccontainersize 6520
+srccontainerchecksum 1a267ca0f437c707ba05b65aa4355ad721aa2de26518143aae4e752ce1dc69d12f6e4b42b670c032d82ae15f5a6753cbc29f56bc44f4bb48d63ff6dc0afb9e1c
srcfiles size=7
RELOC/source/latex/mindflow/mindflow.dtx
RELOC/source/latex/mindflow/mindflow.ins
@@ -224992,7 +224992,7 @@ catalogue-topics font-sel
name nicefilelist
category Package
-revision 28527
+revision 65235
shortdesc Provide \listfiles alignment
relocated 1
longdesc The package extends longnamefilelist, keeping separate columns
@@ -225000,16 +225000,17 @@ longdesc for date, version and "caption" (the caption now separately
longdesc listed). Alignment is not disturbed by short file name
longdesc extensions, such as ".fd". The package is not compatible with
longdesc longnamefilelist: users need to re-read the documentation.
-containersize 6364
-containerchecksum 4e3e1b651a5f3828c1806ee199ddff3a022f27381da241f2d9400cc3943d9aa29e0dd56bd10d7fab60da1901f221cb54c74823b35f163ace0efbd3217b767ca3
-doccontainersize 598780
-doccontainerchecksum 5c909c6dce453a7a73abd63896c0916db3f609b7d4283b70af33bfc31ec44e7aa5b3dc2e8d1ef6fb3d33605d23e079db4e7cadf4fa13197823ca3c177b82f527
-docfiles size=161
+containersize 6392
+containerchecksum 0ec87c8804a36197bf01fe34124951e4a164943b42faca849031625594b00de570cab6b06c732211f2e9d65e3c26b3ef74125181d1a90fa14b02da2c5c45518a
+doccontainersize 600708
+doccontainerchecksum ba316d6d61521915b24b8b7e2234adfee417302fede3226343f35189d2010b8ea913a0d65eb776aa5a1382f6003d00cb1a0e7139772e4591e29aa4ad9d1dd117
+docfiles size=150
RELOC/doc/latex/nicefilelist/README details="Readme"
RELOC/doc/latex/nicefilelist/SrcFILEs.txt
+ RELOC/doc/latex/nicefilelist/nicefilelist.RLS
RELOC/doc/latex/nicefilelist/nicefilelist.pdf details="Package documentation"
-srccontainersize 7160
-srccontainerchecksum b7915ca4c8a24ae84b1caea7bbdd395f5c12305a81f193f35ab4bfe91a12a21417e41b5d46b6ca72c69357782a1e6e4a8366e0bad85a9c453759ea6bd1ee4874
+srccontainersize 7364
+srccontainerchecksum 19b55d17758a459a6994b5d94c3994966a6cdde35272de322b0747aeba252e667fb64a2fabab8e0ecd5ee6c2eba6fed8594f7f00144240cec15a1b7b450570ba
srcfiles size=8
RELOC/source/latex/nicefilelist/empty.f
RELOC/source/latex/nicefilelist/nicefilelist.tex
@@ -225017,13 +225018,11 @@ srcfiles size=8
RELOC/source/latex/nicefilelist/srcfiles.tex
RELOC/source/latex/nicefilelist/wrong.prv
runfiles size=5
- RELOC/tex/latex/nicefilelist/nicefilelist.RLS
RELOC/tex/latex/nicefilelist/nicefilelist.sty
-catalogue-contact-support http://www.webdesign-bu.de/uwe_lueck/contact.html
catalogue-ctan /macros/latex/contrib/nicefilelist
-catalogue-license lppl1.3
+catalogue-license lppl1.3c
catalogue-topics doc-mgmt
-catalogue-version 0.7a
+catalogue-version 0.8a
name niceframe
category Package
@@ -300096,7 +300095,7 @@ binfiles arch=x86_64-solaris size=1
name tex4ht
category Package
-revision 65231
+revision 65237
shortdesc Convert (La)TeX to HTML/XML
longdesc A converter from TeX and LaTeX to SGML-based formats such as
longdesc (X)HTML, MathML, OpenDocument, and Docbook, providing a
@@ -300117,10 +300116,10 @@ longdesc files from them is nontrivial, and generally done with the
longdesc Makefile in development, from which the TeX4ht package in TeX
longdesc Live is updated.
depend tex4ht.ARCH
-containersize 976252
-containerchecksum d5631741b6c798047c0ced684df0ce2d1ec592ac43143fe3ff1f3bd24b9b792dca88512278b74d6c4ecdad4634bbf803ed7b010c5e2682dced06e8a7591ccfeb
+containersize 976280
+containerchecksum c2c21d5274d83349f862c95fb13fc14274fd08bc6c324cba272aacf6c2957e80352b750b17b73a42427f0d21d43605dd5eb5690ca7f57735c8fb91e3325359c7
doccontainersize 136384
-doccontainerchecksum 87ccdf03df6b43e24f720b7e12d592fb0886bf28ae89ea0ae0def4efc04c1e04f2b822be3b9e2c9c2e05ce9caa6cb5c3f28d42b7854a40007f187658b86c03df
+doccontainerchecksum 6170911204ddf7d3a89e6be965d03b7d3370f66aeb51c1132b2274d150f8140dccfc19e980f03da9d8dc08064b69105da9d538a1435cdeab7040315e6167beac
docfiles size=260
texmf-dist/doc/generic/tex4ht/Makefile
texmf-dist/doc/generic/tex4ht/README details="Readme"
@@ -300192,8 +300191,8 @@ docfiles size=260
texmf-dist/doc/generic/tex4ht/mn56.html
texmf-dist/doc/generic/tex4ht/mn5x.png
texmf-dist/doc/generic/tex4ht/mn6x.png
-srccontainersize 1288856
-srccontainerchecksum 46ed4c66a3b5d0c3a493656b05e9dbf082db3fa4eb9745c27f70c16ea7d360b581d12f9060d45d54966438a8bb7569dd71b9c0f018c790963ab9d74999c987aa
+srccontainersize 1297964
+srccontainerchecksum 967d24f53de2d58011abc316abf5d494d9291af236d50a47b855b04139ab93c6d1c92441472086b93571fed76a0b4f97f404655569a457268b7e331137191799
srcfiles size=3943
texmf-dist/source/generic/tex4ht/ChangeLog
texmf-dist/source/generic/tex4ht/Makefile
@@ -310975,7 +310974,7 @@ docfiles size=376
name texlive-scripts
category TLCore
-revision 65227
+revision 65233
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.
@@ -310983,10 +310982,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 113652
-containerchecksum f72d567d17178b3bb3c66b054838675b1a81fbd9fbe873516bd7f0829bc2db330a5470d5b5d7e27247582a92b5102fe99aea138753966ce2ce4dd533e9bbe0dd
-doccontainersize 423416
-doccontainerchecksum b8ebcb7cedafd7a850012287dc693170e35791a8aae0bbafce46c5acd8b02bc677c7ba759df7344ea0d58b8c5ff0cbea4ae3dab14cd77bbc95a2465e6122578e
+containersize 113664
+containerchecksum d9f603803f812f60ed6d30e600a529fe11fa37d92e27ce157104b8fa30e88d7b40e9c88058fb7605eb7250f0c0afe12dbc43e4c47176079d74ddedb21e4c41aa
+doccontainersize 423420
+doccontainerchecksum 80adb0ecb084ab94ab55f83c09d7059dadd80245034c6e9eee234c074e14a7a3894d8619a1b2ac8b51b6f92b87ffe6f8897aa26b9733faa1eb4b4bc111e5c98a
docfiles size=532
doc.html
texmf-dist/doc/man/man1/fmtutil-sys.1
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
index e01d76b079..92af840b25 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
@@ -1 +1 @@
-0cdb45c05bc53da48d2cb9928e1ef30c texlive.tlpdb
+c023e95fcdb02af3c4bb9a7bb51e2c7b texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
index a25c62e21f..1e4937f03e 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
@@ -1 +1 @@
-e36504995b8504b561b56645020c6c787eccaee73f8640c253c63cbe639820b216f606e4816fc9699cce9d2225b06adec39b02ea089dd39085fbbb75d7991994 texlive.tlpdb
+3ef08f63544d8e99c69d5cf0980f857d9b0f3cfe3af4a2f1e058edd6b9b400d6d3ff81d18fb36f8150984c7805c567e5d19f827594886fb87c43dccc40e56fd5 texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
index d736ce98ec..83c036eec0 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
@@ -1,10 +1,10 @@
-----BEGIN PGP SIGNATURE-----
-iQEcBAEBCgAGBQJjk9ipAAoJEEzhh34ZQ4xwbTMIAIrbYZVIe4z3nUvUie9CL6Jf
-qlyMPGwN2SCmVTCDEcQ8sD12PpJ0R7JJEsqE/hUUglVspTcwrZlgXA3ZNz9iraDf
-W/29E7qzMgOIoAFnZv/5bhnAi+vN4hkwIy8tF3fHSakefvrt+E31oLr1md+nyVo5
-tLzCj3txvAi4CiSdLXGtFvPLcVbdAP3X7gN3fe+vbSfV008ClSWQxMCdFqVw7R5n
-6wNfdZOOLR7Ya6f8CDtmhVO9o7xoQeUY0c+X55gOFcHtJL9TrVS9OBeXO2w5q5QY
-25m3eOYJGl0R2srmYrCFL3w9CjqVyCUct/6/585uWGVrgakZk+Ox7ftkWvSCjcY=
-=jjB6
+iQEcBAEBCgAGBQJjlSrIAAoJEEzhh34ZQ4xwP8YIAKrcwf8XT9enm8CHz8H2EOlo
+aNea+jY9z1RtQu2KcB0Ic+cIK1swnkDWbXs3/doUW/3vCPMPA5VnThGH/LETCrB7
++fl43zpstjY8ovi1WDNY20ETNZNhg7fHfE4GKpTtKShiNXq5QObO6y5T4OwkVBa5
+FYGaONLS6i3MUc2FzfeVJlbElnJm45QtwxVF0nEQsGnDI8SOUB3DzFFFaBcBy3UK
+VvUirofztBiMrn+0fHZFlmRNiGyFaK53qKFeV+NdyuEsYzLHmYgdT7Yt8ttYwyUk
+G8tU/Hv8qSvivd5acSAAeXWJLxjjlzh4g8Rp9EwA8SqQEy82OodCUUueh0Cn+j8=
+=LqUS
-----END PGP SIGNATURE-----
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
index 1c6ce50007..cf02201910 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
Binary files differ
diff --git a/systems/win32/miktex/tm/packages/files.csv.lzma b/systems/win32/miktex/tm/packages/files.csv.lzma
index 5e4eaa451a..5260ee6f89 100644
--- a/systems/win32/miktex/tm/packages/files.csv.lzma
+++ b/systems/win32/miktex/tm/packages/files.csv.lzma
Binary files differ
diff --git a/systems/win32/miktex/tm/packages/next/files.csv.lzma b/systems/win32/miktex/tm/packages/next/files.csv.lzma
index da85619f7d..867aedbbb3 100644
--- a/systems/win32/miktex/tm/packages/next/files.csv.lzma
+++ b/systems/win32/miktex/tm/packages/next/files.csv.lzma
Binary files differ
diff --git a/systems/win32/miktex/tm/packages/next/pr.ini b/systems/win32/miktex/tm/packages/next/pr.ini
index 5048228237..cbec68957e 100644
--- a/systems/win32/miktex/tm/packages/next/pr.ini
+++ b/systems/win32/miktex/tm/packages/next/pr.ini
@@ -1,13 +1,13 @@
[repository]
-date=1670695484
+date=1670757212
lastupd=miktex-zzip-bin-x64-2.9 miktex-zlib-bin-x64-2.9 miktex-yap-bin-x64-2.9 miktex-xml2pmx-bin-x64 miktex-xetex-bin-x64-2.9 miktex-web-bin-x64-2.9 miktex-uriparser-bin-x64-2.9 miktex-upmendex-bin-x64 miktex-ttf2pk2-bin-x64-2.9 miktex-texworks-bin-x64-2.9 miktex-texware-bin-x64-2.9 miktex-texify-bin-x64-2.9 miktex-tex4ht-bin-x64-2.9 miktex-tex2xindy-bin-x64-2.9 miktex-tex-bin-x64-2.9 miktex-teckit-bin-x64-2.9 miktex-tdsutil-bin-x64 miktex-synctex-bin-x64-2.9 miktex-runtime-bin-x64-2.9 miktex-ptex-bin-x64
-lstdigest=3b3a05fb77e27df948569cd45c1e8d2a
-numpkg=6241
+lstdigest=31ddefb8234128e887b393f834b76c36
+numpkg=6243
relstate=next
-version=8379
+version=8380
;;;;This configuration file is signed by a MiKTeX maintainer. The signature follows.
;;;;-----BEGIN MIKTEX SIGNATURE-----
-;;;; signature/miktex: tdUxuo4o9PZQWgZO/NIrXIY4Aowku1jCrr/8OXPKRcXNmhBWWRgXyHdDMM8zo3HyakBFa8RyKHH0IYj7mspoP91YZuP0dPvqzotA2MBJKvR3c55FbemdzLZRyeDQIzy6Jwvdq23//V16prQZblADvh83+aIQw5Q+uzvBR/9Sm9oQMNW7sf+YzwgPGytDc8yR+4l5ULv1LqJut9ArVqy9Npre0MCNg3o22fgQxwo6g1/1ZNV2bwAriYRfUJH952TORZowyeNkQ/odbgQ6BIZA4hOikK6Y8vmOGYPskQsP/Z10jTCDHOD46XXpCY+B9JCrqljga3tOlGa441GY5BwVMg==
+;;;; signature/miktex: ibbgmUnNpD+PSo3sUYCzovOHCJr4k2UCdYZgn+/OyftHQ3IJWAN6PIsAZ5VRVSNEgUf5dYGaocoPSZyx12W8Ko0wkuqAKvRt2ABOj7wV77GZ3oY+nsdv2TmCRdCa0ErJ0RFAG8KhiqQ9qcGxuKBBgekSLY3EdQYk+y2ilVQR73++BYLkZVGJjNNJftEhAc13C5lgS2T9AythXRMnqK6REnZZBzKK0ef2nV2LF0dFGGGtdFkLn1asZepeNPCSk9o/j+7dLDtBCSv21NXqQhiQnlmvD8A4VOzK42nB5Ub+Jemt/vA7SfjFEcrTIECNIxMYmtoQbrq+T40/VZjcqdUC9Q==
;;;;-----END MIKTEX SIGNATURE-----
diff --git a/systems/win32/miktex/tm/packages/pr.ini b/systems/win32/miktex/tm/packages/pr.ini
index d816585b76..d140b10e8f 100644
--- a/systems/win32/miktex/tm/packages/pr.ini
+++ b/systems/win32/miktex/tm/packages/pr.ini
@@ -1,13 +1,13 @@
[repository]
-date=1670695436
-lastupd=simpleicons__source simpleicons__doc simpleicons lt3rawobjects__source lt3rawobjects__doc lt3rawobjects cjk__source cjk pixelart__source pixelart digestif__source digestif__doc digestif miktex-misc jourcl__source jourcl__doc jourcl hfutexam__source hfutexam__doc hfutexam
-lstdigest=7e9e5eea23668812684c2fed7b786513
-numpkg=6241
+date=1670757131
+lastupd=nicefilelist__source nicefilelist__doc nicefilelist mindflow__source mindflow__doc mindflow miktex-zzip-bin-x64-2.9 miktex-zlib-bin-x64-2.9 miktex-yap-bin-x64-2.9 miktex-xml2pmx-bin-x64 miktex-xetex-bin-x64-2.9 miktex-web-bin-x64-2.9 miktex-uriparser-bin-x64-2.9 miktex-upmendex-bin-x64 miktex-ttf2pk2-bin-x64-2.9 miktex-texworks-bin-x64-2.9 miktex-texware-bin-x64-2.9 miktex-texify-bin-x64-2.9 miktex-tex4ht-bin-x64-2.9 miktex-tex2xindy-bin-x64-2.9
+lstdigest=40bcd5eb8f7e46f2c8ea20e32dc00869
+numpkg=6243
relstate=stable
-version=8379
+version=8380
;;;;This configuration file is signed by a MiKTeX maintainer. The signature follows.
;;;;-----BEGIN MIKTEX SIGNATURE-----
-;;;; signature/miktex: gGx1hX9/ViSCjWtb30hOp+CUbuXY7xTZhrow363X2spBfh0JwbhC6L8O/hGjMv8ZBkYuxP9t1mDFP0+FFdJBDPEPvQowvvfkncx6WVjYSh3bPUIe9VgkTXx4MCOv+rFbj/bl5UJ4dcyhT5kCNn6Flvc7rZMQ+t6O3RUqCB1VggHAEnYF8JRkF2JtcxIDqLkwK3Iuh9XvVkUmoAyCplraRyP+JF3Uxtc8l9bi3sLBcxUQ+UWrIime6dEedHNeS6sCPowaADdzBpwjNN2ucIYPNVYczCa/SMRWGfsRcHo/Kjgq8MXMAwF9ryPfeweu6TOp/DkicBD6/XAoCVJwLyeqWw==
+;;;; signature/miktex: u8G0kw0anvUNXWyC3YbmcaGcZRnlttbV9jFWRWPElFEt+7jxWWPorkc7+w2GRnmTkkDYbk3HxH8puRDCtRNIqOcdGsj5kXg4FEtuMEgBZk6zkO91aTLsgNEbHmKiEFdcKgTtqjieU/bTEph92RrS4SdxgAgFwQZ+vRD6t6hBOp5KOd6AMiN97TkhFvgIW/ZwjxRcWsHof/SoGukZCC59GsaV301oRhubeDVPtlNjYxG58GgLY9v0DcRj7txrVhMnRZFcYI6O6r/CqSmi6UhcnFk0BuJNskjeoVMzqZAldey7TdcXJmD5y/qJAp4Y2KBCSGWtwRbjD0pPQGRddb7Rlw==
;;;;-----END MIKTEX SIGNATURE-----
diff --git a/timestamp b/timestamp
index adab09acb4..5d210af13d 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:
-2022-12-11-02-02
+2022-12-12-02-02