summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CTAN.sites18
-rw-r--r--FILES.byname135
-rw-r--r--FILES.byname.gzbin2538270 -> 2538263 bytes
-rw-r--r--FILES.last07days129
-rw-r--r--biblio/ctan-bibdata/ctan.bib26
-rw-r--r--biblio/ctan-bibdata/ctan.pdfbin3687353 -> 3687413 bytes
-rw-r--r--macros/latex/contrib/create-theorem/README.md2
-rw-r--r--macros/latex/contrib/create-theorem/create-theorem-doc.pdfbin82573 -> 88000 bytes
-rw-r--r--macros/latex/contrib/create-theorem/create-theorem-doc.tex116
-rw-r--r--macros/latex/contrib/create-theorem/create-theorem.sty418
-rw-r--r--macros/latex/contrib/crefthe/crefthe-doc.pdfbin58374 -> 65016 bytes
-rw-r--r--macros/latex/contrib/crefthe/crefthe-doc.tex64
-rw-r--r--macros/latex/contrib/crefthe/crefthe.sty64
-rw-r--r--macros/luatex/generic/lutabulartools/README.md2
-rw-r--r--macros/luatex/generic/lutabulartools/lutabulartools.lua21
-rw-r--r--macros/luatex/generic/lutabulartools/lutabulartools.pdfbin112601 -> 112269 bytes
-rw-r--r--macros/luatex/generic/lutabulartools/lutabulartools.sty8
-rw-r--r--macros/luatex/generic/lutabulartools/lutabulartools.tex18
-rw-r--r--macros/luatex/generic/penlight/README.md4
-rw-r--r--macros/luatex/generic/penlight/penlight.pdfbin60005 -> 26787 bytes
-rw-r--r--macros/luatex/generic/penlight/penlight.sty127
-rw-r--r--macros/luatex/generic/penlight/penlight.tex225
-rw-r--r--macros/luatex/generic/penlightplus/README.md28
-rw-r--r--macros/luatex/generic/penlightplus/penlightplus.lua (renamed from macros/luatex/generic/penlight/penlightextras.lua)381
-rw-r--r--macros/luatex/generic/penlightplus/penlightplus.pdfbin0 -> 55459 bytes
-rw-r--r--macros/luatex/generic/penlightplus/penlightplus.sty119
-rw-r--r--macros/luatex/generic/penlightplus/penlightplus.tex227
-rw-r--r--macros/luatex/latex/yamlvars/README.md4
-rw-r--r--macros/luatex/latex/yamlvars/yamlvars.lua13
-rw-r--r--macros/luatex/latex/yamlvars/yamlvars.pdfbin82561 -> 82984 bytes
-rw-r--r--macros/luatex/latex/yamlvars/yamlvars.sty27
-rw-r--r--macros/luatex/latex/yamlvars/yamlvars.tex12
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb215
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.md52
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha5122
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc16
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.xzbin2459416 -> 2460624 bytes
-rw-r--r--timestamp2
38 files changed, 1479 insertions, 946 deletions
diff --git a/CTAN.sites b/CTAN.sites
index 097b63355c..a0d1e9d5e8 100644
--- a/CTAN.sites
+++ b/CTAN.sites
@@ -22,10 +22,6 @@ by country):
URL: https://mirror.marwan.ma/ctan/
- ftp.sun.ac.za (South Africa)
- URL: ftp://ftp.sun.ac.za/CTAN/
- URL: http://ftp.sun.ac.za/ftp/CTAN/
-
mirror.ufs.ac.za (South Africa)
URL: rsync://mirror.ufs.ac.za/CTAN/
URL: https://mirror.ufs.ac.za/ctan/
@@ -131,9 +127,6 @@ by country):
ftp.yz.yamagata-u.ac.jp (Japan)
URL: https://ftp.yz.yamagata-u.ac.jp/pub/CTAN/
- ring.airnet.ne.jp (Japan)
- URL: http://ring.airnet.ne.jp/archives/text/CTAN/
-
cran.asia (Korea)
URL: https://cran.asia/tex/
@@ -144,10 +137,6 @@ by country):
URL: http://ftp.kaist.ac.kr/pub/tex-archive/
URL: https://ftp.kaist.ac.kr/pub/tex-archive/
- ftp.ktug.org (Korea)
- URL: http://ftp.ktug.org/tex-archive/
- URL: ftp://ftp.ktug.org/tex-archive/
-
lab.uklee.pe.kr (Korea)
URL: http://lab.uklee.pe.kr/tex-archive/
URL: https://lab.uklee.pe.kr/tex-archive/
@@ -420,9 +409,6 @@ by country):
ctan.javinator9889.com (Spain)
URL: https://ctan.javinator9889.com/
- osl.ugr.es (Spain)
- URL: https://osl.ugr.es/CTAN/
-
ftp.acc.umu.se (Sweden)
URL: rsync://ftp.acc.umu.se/mirror/CTAN/
@@ -446,10 +432,6 @@ by country):
URL: https://mirror.metanet.ch/tex-archive/
- ftp.cvut.cz (The Czech Republic)
- URL: ftp://ftp.cvut.cz/tex-archive/
- URL: http://ftp.cvut.cz/tex-archive/
-
mirrors.nic.cz (The Czech Republic)
URL: rsync://mirrors.nic.cz/CTAN/
URL: https://mirrors.nic.cz/tex-archive/
diff --git a/FILES.byname b/FILES.byname
index 17d82a45e4..f49faea22f 100644
--- a/FILES.byname
+++ b/FILES.byname
@@ -2056,12 +2056,12 @@
2023/07/04 | 1675 | biblio/citation-style-language/README.md
2023/07/04 | 12878 | biblio/citation-style-language/vancouver.csl
2023/07/04 | 4522435 | biblio/citation-style-language.zip
-2023/07/22 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
+2023/07/23 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
2022/10/08 | 127 | biblio/ctan-bibdata/biblatex-ctan/ctan.cbx
-2023/07/22 | 2796023 | biblio/ctan-bibdata/ctan.bib
-2023/07/22 | 3688573 | biblio/ctan-bibdata/ctan.pdf
+2023/07/23 | 2796023 | biblio/ctan-bibdata/ctan.bib
+2023/07/23 | 3687353 | biblio/ctan-bibdata/ctan.pdf
2023/01/16 | 1489 | biblio/ctan-bibdata/README
-2023/07/22 | 4087671 | biblio/ctan-bibdata.zip
+2023/07/23 | 4087015 | biblio/ctan-bibdata.zip
2023/02/23 | 3126 | biblio/pbibtex/pbibtex-base/cpp.awk
2023/02/23 | 1009 | biblio/pbibtex/pbibtex-base/generate.sh
2023/02/23 | 22362 | biblio/pbibtex/pbibtex-base/jabbrv.bst
@@ -5421,7 +5421,7 @@
1990/10/02 | 5440 | dviware/vutex/vaxvms.hlp
1990/10/02 | 812 | dviware/vutex/vaxvms.ins
1990/10/02 | 127576 | dviware/vutex/vutex.web
-2023/07/22 | 63790 | FILES.last07days
+2023/07/23 | 66762 | 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
@@ -218152,19 +218152,19 @@
2013/04/03 | 3607 | macros/latex/contrib/crbox/crbox.sty
2013/04/03 | 914 | macros/latex/contrib/crbox/README
2013/04/04 | 30542 | macros/latex/contrib/crbox.zip
-2023/07/14 | 82573 | macros/latex/contrib/create-theorem/create-theorem-doc.pdf
-2023/07/14 | 34280 | macros/latex/contrib/create-theorem/create-theorem-doc.tex
-2023/07/14 | 100564 | macros/latex/contrib/create-theorem/create-theorem.sty
-2023/07/14 | 12 | macros/latex/contrib/create-theorem/DEPENDS.txt
-2023/07/14 | 19106 | macros/latex/contrib/create-theorem/LICENSE
-2023/07/14 | 676 | macros/latex/contrib/create-theorem/README.md
-2023/07/14 | 106858 | macros/latex/contrib/create-theorem.zip
-2023/07/22 | 58374 | macros/latex/contrib/crefthe/crefthe-doc.pdf
-2023/07/22 | 15322 | macros/latex/contrib/crefthe/crefthe-doc.tex
-2023/07/22 | 21876 | macros/latex/contrib/crefthe/crefthe.sty
-2023/07/22 | 19106 | macros/latex/contrib/crefthe/LICENSE
-2023/07/22 | 4483 | macros/latex/contrib/crefthe/README.md
-2023/07/22 | 74127 | macros/latex/contrib/crefthe.zip
+2023/07/23 | 88000 | macros/latex/contrib/create-theorem/create-theorem-doc.pdf
+2023/07/23 | 37293 | macros/latex/contrib/create-theorem/create-theorem-doc.tex
+2023/07/23 | 121578 | macros/latex/contrib/create-theorem/create-theorem.sty
+2023/07/23 | 12 | macros/latex/contrib/create-theorem/DEPENDS.txt
+2023/07/23 | 19106 | macros/latex/contrib/create-theorem/LICENSE
+2023/07/23 | 693 | macros/latex/contrib/create-theorem/README.md
+2023/07/23 | 114371 | macros/latex/contrib/create-theorem.zip
+2023/07/23 | 65016 | macros/latex/contrib/crefthe/crefthe-doc.pdf
+2023/07/23 | 18324 | macros/latex/contrib/crefthe/crefthe-doc.tex
+2023/07/23 | 22769 | macros/latex/contrib/crefthe/crefthe.sty
+2023/07/23 | 19106 | macros/latex/contrib/crefthe/LICENSE
+2023/07/23 | 4483 | macros/latex/contrib/crefthe/README.md
+2023/07/23 | 81059 | macros/latex/contrib/crefthe.zip
2020/06/05 | 67341 | macros/latex/contrib/crop/crop.dtx
2020/06/05 | 260 | macros/latex/contrib/crop/crop.ins
2020/06/05 | 327371 | macros/latex/contrib/crop/crop.pdf
@@ -244945,12 +244945,12 @@
2021/10/07 | 9854 | macros/luatex/generic/luaxml/luaxml-transform.lua
2021/10/07 | 1155 | macros/luatex/generic/luaxml/README
2021/10/07 | 161975 | macros/luatex/generic/luaxml.zip
-2023/07/18 | 15794 | macros/luatex/generic/lutabulartools/lutabulartools.lua
-2023/07/18 | 112601 | macros/luatex/generic/lutabulartools/lutabulartools.pdf
-2023/07/18 | 8420 | macros/luatex/generic/lutabulartools/lutabulartools.sty
-2023/07/18 | 16750 | macros/luatex/generic/lutabulartools/lutabulartools.tex
-2023/07/18 | 1623 | macros/luatex/generic/lutabulartools/README.md
-2023/07/19 | 100824 | macros/luatex/generic/lutabulartools.zip
+2023/07/22 | 15633 | macros/luatex/generic/lutabulartools/lutabulartools.lua
+2023/07/22 | 112269 | macros/luatex/generic/lutabulartools/lutabulartools.pdf
+2023/07/22 | 8424 | macros/luatex/generic/lutabulartools/lutabulartools.sty
+2023/07/22 | 16814 | macros/luatex/generic/lutabulartools/lutabulartools.tex
+2023/07/22 | 1623 | macros/luatex/generic/lutabulartools/README.md
+2023/07/23 | 100439 | macros/luatex/generic/lutabulartools.zip
2023/03/01 | 13827 | macros/luatex/generic/minim/EUPL-1.2-EN.txt
2023/03/01 | 13827 | macros/luatex/generic/minim-math/EUPL-1.2-EN.txt
2023/03/03 | 12720 | macros/luatex/generic/minim-math/minim-math.doc
@@ -245021,13 +245021,18 @@
2022/12/03 | 9729 | macros/luatex/generic/pdfextra/pdfextra.tex
2022/12/03 | 1101 | macros/luatex/generic/pdfextra/README.md
2022/12/03 | 702657 | macros/luatex/generic/pdfextra.zip
-2023/07/18 | 25664 | macros/luatex/generic/penlight/penlightextras.lua
-2023/07/18 | 425636 | macros/luatex/generic/penlight/penlight.lua
-2023/07/18 | 60005 | macros/luatex/generic/penlight/penlight.pdf
-2023/07/18 | 4818 | macros/luatex/generic/penlight/penlight.sty
-2023/07/18 | 10958 | macros/luatex/generic/penlight/penlight.tex
-2023/07/18 | 1296 | macros/luatex/generic/penlight/README.md
-2023/07/19 | 186479 | macros/luatex/generic/penlight.zip
+2023/07/22 | 425636 | macros/luatex/generic/penlight/penlight.lua
+2023/07/22 | 26787 | macros/luatex/generic/penlight/penlight.pdf
+2023/07/22 | 1569 | macros/luatex/generic/penlight/penlight.sty
+2023/07/22 | 4053 | macros/luatex/generic/penlight/penlight.tex
+2023/07/22 | 26417 | macros/luatex/generic/penlightplus/penlightplus.lua
+2023/07/22 | 55459 | macros/luatex/generic/penlightplus/penlightplus.pdf
+2023/07/22 | 4027 | macros/luatex/generic/penlightplus/penlightplus.sty
+2023/07/22 | 8957 | macros/luatex/generic/penlightplus/penlightplus.tex
+2023/07/22 | 1132 | macros/luatex/generic/penlightplus/README.md
+2023/07/23 | 63014 | macros/luatex/generic/penlightplus.zip
+2023/07/22 | 1259 | macros/luatex/generic/penlight/README.md
+2023/07/23 | 143942 | macros/luatex/generic/penlight.zip
2013/05/25 | 2280 | macros/luatex/generic/spelling/CHANGES
2012/11/26 | 19106 | macros/luatex/generic/spelling/LICENSE
2013/05/25 | 1606 | macros/luatex/generic/spelling/README
@@ -245995,12 +246000,12 @@
2017/10/17 | 704910 | macros/luatex/latex/wallcalendar/wallcalendar-layouts.png
2017/10/17 | 2896302 | macros/luatex/latex/wallcalendar/wallcalendar.pdf
2017/10/21 | 9209120 | macros/luatex/latex/wallcalendar.zip
-2023/07/18 | 1428 | macros/luatex/latex/yamlvars/README.md
-2023/07/18 | 15427 | macros/luatex/latex/yamlvars/yamlvars.lua
-2023/07/18 | 82561 | macros/luatex/latex/yamlvars/yamlvars.pdf
-2023/07/18 | 4464 | macros/luatex/latex/yamlvars/yamlvars.sty
-2023/07/18 | 14528 | macros/luatex/latex/yamlvars/yamlvars.tex
-2023/07/19 | 85042 | macros/luatex/latex/yamlvars.zip
+2023/07/22 | 1339 | macros/luatex/latex/yamlvars/README.md
+2023/07/22 | 15185 | macros/luatex/latex/yamlvars/yamlvars.lua
+2023/07/22 | 82984 | macros/luatex/latex/yamlvars/yamlvars.pdf
+2023/07/22 | 4364 | macros/luatex/latex/yamlvars/yamlvars.sty
+2023/07/22 | 14515 | macros/luatex/latex/yamlvars/yamlvars.tex
+2023/07/23 | 84990 | macros/luatex/latex/yamlvars.zip
1993/02/12 | 2330 | macros/mathematica/CHANGES
1993/02/12 | 7699 | macros/mathematica/README
1993/02/12 | 40574 | macros/mathematica/tex-mma-j.ps.gz
@@ -291330,8 +291335,8 @@
2023/02/24 | 22836 | systems/texlive/tlnet/archive/bxbase.r66115.tar.xz
2020/09/26 | 292944 | systems/texlive/tlnet/archive/bxcalc.doc.r56431.tar.xz
2020/09/26 | 3400 | systems/texlive/tlnet/archive/bxcalc.r56431.tar.xz
-2020/03/04 | 261872 | systems/texlive/tlnet/archive/bxcjkjatype.doc.r54080.tar.xz
-2020/03/04 | 8212 | systems/texlive/tlnet/archive/bxcjkjatype.r54080.tar.xz
+2023/07/23 | 1189172 | systems/texlive/tlnet/archive/bxcjkjatype.doc.r67705.tar.xz
+2023/07/23 | 8556 | systems/texlive/tlnet/archive/bxcjkjatype.r67705.tar.xz
2019/02/28 | 1960 | systems/texlive/tlnet/archive/bxdpx-beamer.doc.r41813.tar.xz
2019/02/28 | 1380 | systems/texlive/tlnet/archive/bxdpx-beamer.r41813.tar.xz
2019/02/28 | 2232 | systems/texlive/tlnet/archive/bxdvidriver.doc.r43219.tar.xz
@@ -292334,8 +292339,8 @@
2019/02/28 | 1544 | systems/texlive/tlnet/archive/crbox.r29803.tar.xz
2023/07/15 | 93992 | systems/texlive/tlnet/archive/create-theorem.doc.r67629.tar.xz
2023/07/15 | 10216 | systems/texlive/tlnet/archive/create-theorem.r67629.tar.xz
-2022/09/26 | 61900 | systems/texlive/tlnet/archive/crefthe.doc.r64498.tar.xz
-2022/09/26 | 3244 | systems/texlive/tlnet/archive/crefthe.r64498.tar.xz
+2023/07/23 | 67824 | systems/texlive/tlnet/archive/crefthe.doc.r67706.tar.xz
+2023/07/23 | 4276 | systems/texlive/tlnet/archive/crefthe.r67706.tar.xz
2022/10/01 | 34252 | systems/texlive/tlnet/archive/crimson.doc.r64559.tar.xz
2022/10/02 | 85180 | systems/texlive/tlnet/archive/crimsonpro.doc.r64565.tar.xz
2022/10/02 | 2549080 | systems/texlive/tlnet/archive/crimsonpro.r64565.tar.xz
@@ -293748,8 +293753,8 @@
2022/01/30 | 483368 | systems/texlive/tlnet/archive/erw-l3.doc.r61799.tar.xz
2022/01/30 | 3944 | systems/texlive/tlnet/archive/erw-l3.r61799.tar.xz
2022/01/30 | 6156 | systems/texlive/tlnet/archive/erw-l3.source.r61799.tar.xz
-2022/01/14 | 1515176 | systems/texlive/tlnet/archive/esami.doc.r61596.tar.xz
-2022/01/14 | 21180 | systems/texlive/tlnet/archive/esami.r61596.tar.xz
+2023/07/23 | 1448364 | systems/texlive/tlnet/archive/esami.doc.r67707.tar.xz
+2023/07/23 | 21208 | systems/texlive/tlnet/archive/esami.r67707.tar.xz
2019/02/28 | 82640 | systems/texlive/tlnet/archive/esdiff.doc.r21385.tar.xz
2019/02/28 | 1632 | systems/texlive/tlnet/archive/esdiff.r21385.tar.xz
2019/02/28 | 2972 | systems/texlive/tlnet/archive/esdiff.source.r21385.tar.xz
@@ -297607,8 +297612,8 @@
2019/02/28 | 6528 | systems/texlive/tlnet/archive/mi-solns.source.r49651.tar.xz
2022/01/24 | 14130568 | systems/texlive/tlnet/archive/missaali.doc.r61719.tar.xz
2022/01/24 | 85820 | systems/texlive/tlnet/archive/missaali.r61719.tar.xz
-2023/07/05 | 2337856 | systems/texlive/tlnet/archive/mitthesis.doc.r67544.tar.xz
-2023/07/05 | 12888 | systems/texlive/tlnet/archive/mitthesis.r67544.tar.xz
+2023/07/23 | 2333360 | systems/texlive/tlnet/archive/mitthesis.doc.r67708.tar.xz
+2023/07/23 | 13180 | systems/texlive/tlnet/archive/mitthesis.r67708.tar.xz
2019/02/28 | 340 | systems/texlive/tlnet/archive/mkgrkindex.aarch64-linux.r46208.tar.xz
2019/02/28 | 340 | systems/texlive/tlnet/archive/mkgrkindex.amd64-freebsd.r16472.tar.xz
2019/02/28 | 340 | systems/texlive/tlnet/archive/mkgrkindex.amd64-netbsd.r30191.tar.xz
@@ -297778,8 +297783,8 @@
2019/02/28 | 1348 | systems/texlive/tlnet/archive/mparrows.r39729.tar.xz
2019/02/28 | 11328 | systems/texlive/tlnet/archive/mpattern.doc.r15878.tar.xz
2019/02/28 | 2752 | systems/texlive/tlnet/archive/mpattern.r15878.tar.xz
-2023/04/27 | 1207832 | systems/texlive/tlnet/archive/mpchess.doc.r66943.tar.xz
-2023/04/27 | 29340 | systems/texlive/tlnet/archive/mpchess.r66943.tar.xz
+2023/07/23 | 1472768 | systems/texlive/tlnet/archive/mpchess.doc.r67704.tar.xz
+2023/07/23 | 29916 | systems/texlive/tlnet/archive/mpchess.r67704.tar.xz
2019/02/28 | 108768 | systems/texlive/tlnet/archive/mpcolornames.doc.r23252.tar.xz
2019/02/28 | 6792 | systems/texlive/tlnet/archive/mpcolornames.r23252.tar.xz
2019/02/28 | 3364 | systems/texlive/tlnet/archive/mpcolornames.source.r23252.tar.xz
@@ -301473,7 +301478,7 @@
2022/09/13 | 600 | systems/texlive/tlnet/archive/texlive-scripts.amd64-freebsd.r64356.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.amd64-netbsd.r64356.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.armhf-linux.r64356.tar.xz
-2023/07/22 | 428064 | systems/texlive/tlnet/archive/texlive-scripts.doc.r67687.tar.xz
+2023/07/23 | 428064 | systems/texlive/tlnet/archive/texlive-scripts.doc.r67699.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
@@ -301495,7 +301500,7 @@
2022/09/13 | 592 | systems/texlive/tlnet/archive/texlive-scripts.i386-linux.r64356.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.i386-netbsd.r64356.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.i386-solaris.r64356.tar.xz
-2023/07/22 | 114000 | systems/texlive/tlnet/archive/texlive-scripts.r67687.tar.xz
+2023/07/23 | 114020 | systems/texlive/tlnet/archive/texlive-scripts.r67699.tar.xz
2022/09/13 | 580 | systems/texlive/tlnet/archive/texlive-scripts.universal-darwin.r64356.tar.xz
2023/05/14 | 60312 | systems/texlive/tlnet/archive/texlive-scripts.windows.r67095.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.x86_64-cygwin.r64356.tar.xz
@@ -303364,16 +303369,16 @@
2020/07/18 | 47816 | systems/texlive/tlnet/archive/zztex.doc.r55862.tar.xz
2020/07/18 | 101724 | systems/texlive/tlnet/archive/zztex.r55862.tar.xz
2023/03/12 | 125532 | systems/texlive/tlnet/install-tl
-2023/07/22 | 5736667 | systems/texlive/tlnet/install-tl-unx.tar.gz
-2023/07/22 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
-2023/07/22 | 488 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2023/07/23 | 5736135 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2023/07/23 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2023/07/23 | 488 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
2023/05/13 | 5083 | systems/texlive/tlnet/install-tl-windows.bat
-2023/07/22 | 21036168 | systems/texlive/tlnet/install-tl-windows.exe
-2023/07/22 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
-2023/07/22 | 488 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2023/07/22 | 26025350 | systems/texlive/tlnet/install-tl.zip
-2023/07/22 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
-2023/07/22 | 488 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2023/07/23 | 21037706 | systems/texlive/tlnet/install-tl-windows.exe
+2023/07/23 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2023/07/23 | 488 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2023/07/23 | 26025364 | systems/texlive/tlnet/install-tl.zip
+2023/07/23 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2023/07/23 | 488 | systems/texlive/tlnet/install-tl.zip.sha512.asc
2023/03/19 | 1229 | systems/texlive/tlnet/README.md
2023/03/19 | 0 | systems/texlive/tlnet/TEXLIVE_2023
2023/01/17 | 8401 | systems/texlive/tlnet/tlpkg/gpg/pubring.gpg
@@ -303383,7 +303388,7 @@
2023/01/17 | 1280 | systems/texlive/tlnet/tlpkg/gpg/trustdb.gpg
2023/06/25 | 49936 | systems/texlive/tlnet/tlpkg/installer/config.guess
2010/11/11 | 11651 | systems/texlive/tlnet/tlpkg/installer/COPYING.MinGW-runtime.txt
-2023/07/21 | 7139 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
+2023/07/22 | 7228 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2023/05/31 | 215902 | 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
@@ -303425,12 +303430,12 @@
2023/02/21 | 20371 | systems/texlive/tlnet/tlpkg/TeXLive/TLCrypto.pm
2021/12/21 | 5429 | systems/texlive/tlnet/tlpkg/TeXLive/TLDownload.pm
2023/04/08 | 28167 | systems/texlive/tlnet/tlpkg/TeXLive/TLPaper.pm
-2023/07/22 | 18161417 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
-2023/07/22 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2023/07/23 | 18162241 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2023/07/23 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
2023/02/20 | 86803 | systems/texlive/tlnet/tlpkg/TeXLive/TLPDB.pm
-2023/07/22 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
-2023/07/22 | 488 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2023/07/22 | 2456408 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2023/07/23 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2023/07/23 | 488 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2023/07/23 | 2459416 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
2023/02/20 | 58928 | systems/texlive/tlnet/tlpkg/TeXLive/TLPOBJ.pm
2023/06/11 | 42749 | systems/texlive/tlnet/tlpkg/TeXLive/TLPSRC.pm
2023/02/21 | 16138 | systems/texlive/tlnet/tlpkg/TeXLive/TLTREE.pm
@@ -314037,7 +314042,7 @@
2014/07/05 | 611 | systems/win32/yandy/README
2014/07/05 | 1004628 | systems/win32/yandy/yandy-src.tar.xz
2014/07/05 | 1012416 | systems/win32/yandy.zip
-2023/07/23 | 186 | timestamp
+2023/07/24 | 186 | timestamp
2002/08/26 | 61898 | usergrps/dante/antrag.pdf
2002/08/26 | 118217 | usergrps/dante/antrag.ps
2021/11/11 | 917 | usergrps/dante/dtk/doc/beispiel.bib
diff --git a/FILES.byname.gz b/FILES.byname.gz
index 91dc8f77e7..6959e285dc 100644
--- a/FILES.byname.gz
+++ b/FILES.byname.gz
Binary files differ
diff --git a/FILES.last07days b/FILES.last07days
index 936229f5cc..22cb52984d 100644
--- a/FILES.last07days
+++ b/FILES.last07days
@@ -1,10 +1,60 @@
+2023/07/23 | 88000 | macros/latex/contrib/create-theorem/create-theorem-doc.pdf
+2023/07/23 | 8556 | systems/texlive/tlnet/archive/bxcjkjatype.r67705.tar.xz
+2023/07/23 | 84990 | macros/luatex/latex/yamlvars.zip
+2023/07/23 | 81059 | macros/latex/contrib/crefthe.zip
+2023/07/23 | 693 | macros/latex/contrib/create-theorem/README.md
+2023/07/23 | 67824 | systems/texlive/tlnet/archive/crefthe.doc.r67706.tar.xz
+2023/07/23 | 65016 | macros/latex/contrib/crefthe/crefthe-doc.pdf
+2023/07/23 | 63014 | macros/luatex/generic/penlightplus.zip
+2023/07/23 | 5736135 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2023/07/23 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2023/07/23 | 488 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2023/07/23 | 488 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2023/07/23 | 488 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2023/07/23 | 488 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2023/07/23 | 4483 | macros/latex/contrib/crefthe/README.md
+2023/07/23 | 428064 | systems/texlive/tlnet/archive/texlive-scripts.doc.r67699.tar.xz
+2023/07/23 | 4276 | systems/texlive/tlnet/archive/crefthe.r67706.tar.xz
+2023/07/23 | 4087015 | biblio/ctan-bibdata.zip
+2023/07/23 | 37293 | macros/latex/contrib/create-theorem/create-theorem-doc.tex
+2023/07/23 | 3687353 | biblio/ctan-bibdata/ctan.pdf
+2023/07/23 | 29916 | systems/texlive/tlnet/archive/mpchess.r67704.tar.xz
+2023/07/23 | 2796023 | biblio/ctan-bibdata/ctan.bib
+2023/07/23 | 26025364 | systems/texlive/tlnet/install-tl.zip
+2023/07/23 | 2459416 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2023/07/23 | 2333360 | systems/texlive/tlnet/archive/mitthesis.doc.r67708.tar.xz
+2023/07/23 | 22769 | macros/latex/contrib/crefthe/crefthe.sty
+2023/07/23 | 21208 | systems/texlive/tlnet/archive/esami.r67707.tar.xz
+2023/07/23 | 21037706 | systems/texlive/tlnet/install-tl-windows.exe
+2023/07/23 | 19106 | macros/latex/contrib/crefthe/LICENSE
+2023/07/23 | 19106 | macros/latex/contrib/create-theorem/LICENSE
+2023/07/23 | 18324 | macros/latex/contrib/crefthe/crefthe-doc.tex
+2023/07/23 | 18162241 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2023/07/23 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
+2023/07/23 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2023/07/23 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2023/07/23 | 1472768 | systems/texlive/tlnet/archive/mpchess.doc.r67704.tar.xz
+2023/07/23 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2023/07/23 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2023/07/23 | 1448364 | systems/texlive/tlnet/archive/esami.doc.r67707.tar.xz
+2023/07/23 | 143942 | macros/luatex/generic/penlight.zip
+2023/07/23 | 13180 | systems/texlive/tlnet/archive/mitthesis.r67708.tar.xz
+2023/07/23 | 12 | macros/latex/contrib/create-theorem/DEPENDS.txt
+2023/07/23 | 121578 | macros/latex/contrib/create-theorem/create-theorem.sty
+2023/07/23 | 1189172 | systems/texlive/tlnet/archive/bxcjkjatype.doc.r67705.tar.xz
+2023/07/23 | 114371 | macros/latex/contrib/create-theorem.zip
+2023/07/23 | 114020 | systems/texlive/tlnet/archive/texlive-scripts.r67699.tar.xz
+2023/07/23 | 100439 | macros/luatex/generic/lutabulartools.zip
+2023/07/22 | 8957 | macros/luatex/generic/penlightplus/penlightplus.tex
+2023/07/22 | 8424 | macros/luatex/generic/lutabulartools/lutabulartools.sty
+2023/07/22 | 82984 | macros/luatex/latex/yamlvars/yamlvars.pdf
2023/07/22 | 7973 | macros/latex/contrib/mitthesis/MIT-thesis-template/chapter1.tex
2023/07/22 | 754 | macros/latex/contrib/esami/doc/examples/problem4-fillin.tex
2023/07/22 | 752 | macros/latex/contrib/esami/doc/examples/problem2-tabella.tex
2023/07/22 | 7472568 | systems/texlive/tlnet/archive/inter.r67697.tar.xz
-2023/07/22 | 74127 | macros/latex/contrib/crefthe.zip
2023/07/22 | 740736 | systems/texlive/tlnet/archive/polyglossia.doc.r67694.tar.xz
2023/07/22 | 73548 | systems/texlive/tlnet/archive/cweb.doc.r67693.tar.xz
+2023/07/22 | 7228 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2023/07/22 | 706 | graphics/pgf/contrib/tikz-nfold/README.md
2023/07/22 | 66212 | systems/texlive/tlnet/archive/siunitx.r67695.tar.xz
2023/07/22 | 644 | macros/latex/contrib/esami/doc/examples/problem1.tex
@@ -12,29 +62,23 @@
2023/07/22 | 625 | macros/latex/contrib/esami/doc/examples/test11.tex
2023/07/22 | 605728 | graphics/pgf/contrib/tikz3d-fr/doc/tikz3d-fr-doc.pdf
2023/07/22 | 597725 | graphics/pgf/contrib/tikz3d-fr.zip
-2023/07/22 | 58374 | macros/latex/contrib/crefthe/crefthe-doc.pdf
2023/07/22 | 575 | macros/latex/contrib/esami/doc/examples/problem3-matching.tex
-2023/07/22 | 5736667 | systems/texlive/tlnet/install-tl-unx.tar.gz
2023/07/22 | 55648 | systems/texlive/tlnet/archive/reledmac.r67696.tar.xz
+2023/07/22 | 55459 | macros/luatex/generic/penlightplus/penlightplus.pdf
2023/07/22 | 5226 | language/japanese/BX/bxcjkjatype/bxcjkvert-ja.tex
2023/07/22 | 490288 | macros/latex/contrib/mitthesis/examples/font_samples/Defaultfonts.pdf
-2023/07/22 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
2023/07/22 | 489188 | macros/latex/contrib/mitthesis/MIT-Thesis.pdf
-2023/07/22 | 488 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2023/07/22 | 488 | systems/texlive/tlnet/install-tl.zip.sha512.asc
-2023/07/22 | 488 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2023/07/22 | 488 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
2023/07/22 | 4807 | macros/latex/contrib/mitthesis/README.md
2023/07/22 | 4790 | language/japanese/BX/bxcjkjatype/bxcjkvert.tex
2023/07/22 | 471 | macros/latex/contrib/esami/doc/examples/test1.tex
2023/07/22 | 463 | macros/latex/contrib/esami/doc/examples/test5-fillin.tex
2023/07/22 | 454847 | macros/latex/contrib/mitthesis/examples/font_samples/Libertine.pdf
-2023/07/22 | 4483 | macros/latex/contrib/crefthe/README.md
-2023/07/22 | 428064 | systems/texlive/tlnet/archive/texlive-scripts.doc.r67687.tar.xz
-2023/07/22 | 4087671 | biblio/ctan-bibdata.zip
+2023/07/22 | 4364 | macros/luatex/latex/yamlvars/yamlvars.sty
+2023/07/22 | 425636 | macros/luatex/generic/penlight/penlight.lua
+2023/07/22 | 4053 | macros/luatex/generic/penlight/penlight.tex
+2023/07/22 | 4027 | macros/luatex/generic/penlightplus/penlightplus.sty
2023/07/22 | 391593 | language/japanese/BX/bxcjkjatype/bxcjkjatype.pdf
2023/07/22 | 372010 | language/japanese/BX/bxcjkjatype/bxcjkvert.pdf
-2023/07/22 | 3688573 | biblio/ctan-bibdata/ctan.pdf
2023/07/22 | 3602045 | macros/latex/contrib/mitthesis.zip
2023/07/22 | 33574 | language/japanese/BX/bxcjkjatype/bxcjkjatype.sty
2023/07/22 | 32581 | graphics/pgf/contrib/tikz-nfold/tikz-nfold-doc.tex
@@ -46,48 +90,45 @@
2023/07/22 | 3016 | language/japanese/BX/bxcjkjatype/README-ja.md
2023/07/22 | 288371 | graphics/pgf/contrib/tikz-nfold.zip
2023/07/22 | 2812 | macros/latex/contrib/esami/es-greek.lng
-2023/07/22 | 2796023 | biblio/ctan-bibdata/ctan.bib
2023/07/22 | 270252 | macros/latex/contrib/mitthesis/examples/font_samples/Newtx-sans-text.pdf
+2023/07/22 | 26787 | macros/luatex/generic/penlight/penlight.pdf
+2023/07/22 | 26417 | macros/luatex/generic/penlightplus/penlightplus.lua
2023/07/22 | 26314 | graphics/pgf/contrib/tikz3d-fr/doc/tikz3d-fr-doc.tex
2023/07/22 | 2615 | language/japanese/BX/bxcjkjatype/README.md
-2023/07/22 | 26025350 | systems/texlive/tlnet/install-tl.zip
2023/07/22 | 2566 | macros/latex/contrib/esami/doc/examples/testA-pdflatex-sol.tex
2023/07/22 | 2545 | graphics/pgf/contrib/tikz-nfold/pgflibrarynfold.code.tex
2023/07/22 | 2520 | macros/latex/contrib/esami/es-serbian.lng
-2023/07/22 | 2456408 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
2023/07/22 | 24520 | systems/texlive/tlnet/archive/cweb.r67693.tar.xz
2023/07/22 | 2347 | macros/latex/contrib/esami/doc/examples/master-sol.tex
2023/07/22 | 2229 | graphics/pgf/contrib/tikz-nfold/tikzlibrarynfold.code.tex
-2023/07/22 | 21876 | macros/latex/contrib/crefthe/crefthe.sty
-2023/07/22 | 21036168 | systems/texlive/tlnet/install-tl-windows.exe
2023/07/22 | 209604 | systems/texlive/tlnet/archive/reledmac.source.r67696.tar.xz
-2023/07/22 | 19106 | macros/latex/contrib/crefthe/LICENSE
-2023/07/22 | 18161417 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
2023/07/22 | 17205 | language/japanese/BX/bxcjkjatype/bxcjkjatype-ja.tex
2023/07/22 | 1701 | macros/latex/contrib/esami/doc/examples/test4.tex
2023/07/22 | 169955 | macros/latex/contrib/mitthesis/examples/font_samples/Lucida.pdf
2023/07/22 | 169688 | systems/texlive/tlnet/archive/polyglossia.source.r67694.tar.xz
-2023/07/22 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
+2023/07/22 | 16814 | macros/luatex/generic/lutabulartools/lutabulartools.tex
2023/07/22 | 1677708 | macros/latex/contrib/esami.zip
2023/07/22 | 1668510 | graphics/metapost/contrib/macros/mpchess.zip
+2023/07/22 | 1623 | macros/luatex/generic/lutabulartools/README.md
2023/07/22 | 161691 | macros/latex/contrib/mitthesis/examples/font_samples/Termes-Stix2.pdf
2023/07/22 | 159625 | macros/latex/contrib/mitthesis/examples/font_samples/Stix2.pdf
2023/07/22 | 158295 | language/japanese/BX/bxcjkjatype/bxcjkjatype-ja.pdf
2023/07/22 | 157894 | macros/latex/contrib/mitthesis/examples/font_samples/Termes.pdf
-2023/07/22 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2023/07/22 | 1569 | macros/luatex/generic/penlight/penlight.sty
+2023/07/22 | 15633 | macros/luatex/generic/lutabulartools/lutabulartools.lua
2023/07/22 | 1533 | macros/latex/contrib/esami/doc/examples/test3.tex
-2023/07/22 | 15322 | macros/latex/contrib/crefthe/crefthe-doc.tex
-2023/07/22 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2023/07/22 | 15185 | macros/luatex/latex/yamlvars/yamlvars.lua
2023/07/22 | 151460 | macros/latex/contrib/mitthesis/examples/font_samples/Heros-Stix2.pdf
-2023/07/22 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
2023/07/22 | 145548 | systems/texlive/tlnet/archive/inter.doc.r67697.tar.xz
-2023/07/22 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2023/07/22 | 14515 | macros/luatex/latex/yamlvars/yamlvars.tex
2023/07/22 | 14418 | language/japanese/BX/bxcjkjatype/bxcjkjatype.tex
2023/07/22 | 1365 | macros/latex/contrib/esami/doc/examples/test13.tex
2023/07/22 | 1361 | macros/latex/contrib/esami/doc/examples/test9.tex
+2023/07/22 | 1339 | macros/luatex/latex/yamlvars/README.md
2023/07/22 | 1281368 | language/japanese/BX/bxcjkjatype.zip
2023/07/22 | 1268316 | systems/texlive/tlnet/archive/siunitx.doc.r67695.tar.xz
2023/07/22 | 126812 | systems/texlive/tlnet/archive/polyglossia.r67694.tar.xz
+2023/07/22 | 1259 | macros/luatex/generic/penlight/README.md
2023/07/22 | 11978 | macros/latex/contrib/mitthesis/MIT-thesis-template/MIT-Thesis.tex
2023/07/22 | 11905 | macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Termes.tex
2023/07/22 | 11885 | macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Newtx-sans-text.tex
@@ -102,7 +143,8 @@
2023/07/22 | 11514 | graphics/pgf/contrib/tikz-nfold/pgflibrarybezieroffset.code.tex
2023/07/22 | 11400 | macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Fira_Newtxsf.tex
2023/07/22 | 11400 | macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Defaultfonts.tex
-2023/07/22 | 114000 | systems/texlive/tlnet/archive/texlive-scripts.r67687.tar.xz
+2023/07/22 | 1132 | macros/luatex/generic/penlightplus/README.md
+2023/07/22 | 112269 | macros/luatex/generic/lutabulartools/lutabulartools.pdf
2023/07/22 | 1091 | language/japanese/BX/bxcjkjatype/LICENSE
2023/07/22 | 10458188 | systems/texlive/tlnet/archive/reledmac.doc.r67696.tar.xz
2023/07/22 | 103927 | language/japanese/BX/bxcjkjatype/bxcjkvert-ja.pdf
@@ -115,7 +157,6 @@
2023/07/21 | 80968 | macros/latex/contrib/esami/esami.sty
2023/07/21 | 749 | support/texshop/README.txt
2023/07/21 | 745980 | systems/texlive/tlnet/archive/l3build.doc.r67681.tar.xz
-2023/07/21 | 7139 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2023/07/21 | 6908 | macros/latex/contrib/mitthesis/examples/cover_page_samples/latex_sources/One_author_two_degrees.tex
2023/07/21 | 6902 | macros/latex/contrib/mitthesis/examples/cover_page_samples/latex_sources/Two_authors_one_degree.tex
2023/07/21 | 6807 | macros/latex/contrib/mitthesis/examples/cover_page_samples/latex_sources/Two_authors_two_degrees.tex
@@ -380,7 +421,6 @@
2023/07/19 | 9981 | macros/latex/contrib/msu-thesis/samples/MSU-thesis-testfile.tex
2023/07/19 | 8976 | systems/texlive/tlnet/archive/tensor.source.r67667.tar.xz
2023/07/19 | 85652 | systems/texlive/tlnet/archive/nicematrix.source.r67665.tar.xz
-2023/07/19 | 85042 | macros/luatex/latex/yamlvars.zip
2023/07/19 | 733287 | macros/latex/contrib/nostarch.zip
2023/07/19 | 70914 | macros/latex/contrib/msu-thesis/samples/MSU-thesis-template.pdf
2023/07/19 | 6771 | macros/latex/contrib/msu-thesis/samples/MSU-thesis-template.tex
@@ -401,7 +441,6 @@
2023/07/19 | 2272 | systems/texlive/tlnet/archive/tensor.r67667.tar.xz
2023/07/19 | 214033 | macros/latex/contrib/msu-thesis/samples/MSU-thesis-testfile.pdf
2023/07/19 | 2102140 | systems/texlive/tlnet/archive/nicematrix.doc.r67665.tar.xz
-2023/07/19 | 186479 | macros/luatex/generic/penlight.zip
2023/07/19 | 178940 | systems/texlive/tlnet/archive/recorder-fingering.doc.r67666.tar.xz
2023/07/19 | 160580 | graphics/pgf/contrib/rouequestions/doc/RoueQuestionsDoc.pdf
2023/07/19 | 15348 | macros/latex/contrib/nostarch/nssample.tex
@@ -412,17 +451,10 @@
2023/07/19 | 11169 | graphics/pgf/contrib/rouequestions/doc/RoueQuestionsDoc.tex
2023/07/19 | 1088 | macros/latex/contrib/msu-thesis/samples/MSU-thesis-testfile.bib
2023/07/19 | 102126 | macros/latex/contrib/nostarch/nostarch.dtx
-2023/07/19 | 100824 | macros/luatex/generic/lutabulartools.zip
2023/07/18 | 93108 | systems/texlive/tlnet/archive/bxjscls.source.r67657.tar.xz
-2023/07/18 | 8420 | macros/luatex/generic/lutabulartools/lutabulartools.sty
-2023/07/18 | 82561 | macros/luatex/latex/yamlvars/yamlvars.pdf
2023/07/18 | 73061 | macros/latex/contrib/recorder-fingering/recorder-fingering-RecorderInCchart.png
2023/07/18 | 643 | macros/latex/contrib/recorder-fingering/recorder-fingering.bib
-2023/07/18 | 60005 | macros/luatex/generic/penlight/penlight.pdf
-2023/07/18 | 4818 | macros/luatex/generic/penlight/penlight.sty
2023/07/18 | 454 | macros/latex/contrib/recorder-fingering/README.md
-2023/07/18 | 4464 | macros/luatex/latex/yamlvars/yamlvars.sty
-2023/07/18 | 425636 | macros/luatex/generic/penlight/penlight.lua
2023/07/18 | 414742 | macros/latex/contrib/tensor/tensor-doc.pdf
2023/07/18 | 3497960 | systems/texlive/tlnet/archive/rit-fonts.r67659.tar.xz
2023/07/18 | 34740 | systems/texlive/tlnet/archive/bxjscls.r67657.tar.xz
@@ -430,24 +462,14 @@
2023/07/18 | 311272 | systems/texlive/tlnet/archive/rit-fonts.doc.r67659.tar.xz
2023/07/18 | 26975 | macros/latex/contrib/recorder-fingering/recorder-fingering.sty
2023/07/18 | 26581 | macros/latex/contrib/tensor/tensor.dtx
-2023/07/18 | 25664 | macros/luatex/generic/penlight/penlightextras.lua
2023/07/18 | 2011 | macros/latex/contrib/tensor/tensor.ins
2023/07/18 | 2000 | systems/texlive/tlnet/archive/collection-fontsextra.r67659.tar.xz
2023/07/18 | 1994 | macros/latex/contrib/tensor/README.md
2023/07/18 | 185274 | macros/latex/contrib/recorder-fingering.zip
2023/07/18 | 18356 | CTAN.sites
2023/07/18 | 18260 | macros/latex/contrib/recorder-fingering/recorder-fingering.tex
-2023/07/18 | 16750 | macros/luatex/generic/lutabulartools/lutabulartools.tex
-2023/07/18 | 1623 | macros/luatex/generic/lutabulartools/README.md
-2023/07/18 | 15794 | macros/luatex/generic/lutabulartools/lutabulartools.lua
-2023/07/18 | 15427 | macros/luatex/latex/yamlvars/yamlvars.lua
-2023/07/18 | 14528 | macros/luatex/latex/yamlvars/yamlvars.tex
-2023/07/18 | 1428 | macros/luatex/latex/yamlvars/README.md
-2023/07/18 | 1296 | macros/luatex/generic/penlight/README.md
2023/07/18 | 1283184 | systems/texlive/tlnet/archive/bxjscls.doc.r67657.tar.xz
2023/07/18 | 115853734 | macros/context/latest/cont-tmf.zip
-2023/07/18 | 112601 | macros/luatex/generic/lutabulartools/lutabulartools.pdf
-2023/07/18 | 10958 | macros/luatex/generic/penlight/penlight.tex
2023/07/18 | 108036 | macros/latex/contrib/recorder-fingering/recorder-fingering.pdf
2023/07/17 | 9666 | fonts/rit-fonts/doc/rit-fonts-doc.tex
2023/07/17 | 94 | macros/latex/contrib/esami/doc/examples/qftest5-fillinqiie4.parametri.tex
@@ -804,18 +826,3 @@
2023/07/17 | 1015030 | systems/win32/miktex/tm/packages/babel__doc.tar.lzma
2023/07/17 | 1014460 | systems/texlive/tlnet/archive/babel.doc.r67653.tar.xz
2023/07/17 | 100190 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
-2023/07/16 | 724427 | indexing/xindex.zip
-2023/07/16 | 70625 | indexing/xindex/doc/xindex-doc.tex
-2023/07/16 | 586790 | indexing/xindex/doc/xindex-doc.pdf
-2023/07/16 | 5356 | systems/texlive/tlnet/archive/blowup.source.r67640.tar.xz
-2023/07/16 | 519752 | biblio/bibtex/bibtex-x.zip
-2023/07/16 | 490060 | systems/texlive/tlnet/archive/hep-graphic.doc.r67641.tar.xz
-2023/07/16 | 4768 | systems/texlive/tlnet/archive/hep-graphic.source.r67641.tar.xz
-2023/07/16 | 3717 | indexing/xindex/CHANGELOG
-2023/07/16 | 36762 | indexing/xindex/lualatex/xindex-lib.lua
-2023/07/16 | 304236 | systems/texlive/tlnet/archive/blowup.doc.r67640.tar.xz
-2023/07/16 | 2708 | systems/texlive/tlnet/archive/hep-graphic.r67641.tar.xz
-2023/07/16 | 2684 | systems/texlive/tlnet/archive/blowup.r67640.tar.xz
-2023/07/16 | 1680 | systems/texlive/tlnet/archive/collection-mathscience.r67641.tar.xz
-2023/07/16 | 12279 | indexing/xindex/lualatex/xindex-base.lua
-2023/07/16 | 10141 | indexing/xindex/scripts/xindex.lua
diff --git a/biblio/ctan-bibdata/ctan.bib b/biblio/ctan-bibdata/ctan.bib
index 33722a3833..ba67fb86c2 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 23-07-2023, 02:01:18
+%% created at 24-07-2023, 02:01:12
%%
%% This file is provided under the terms of the LPPL v1.3 or
@@ -15825,9 +15825,9 @@
@manual{ctan-create-theorem,
title = {The \texttt{create-theorem} package},
- subtitle = {Multilingual support for theorem-like environments},
+ subtitle = {Initializing and configuring theorem-like environments, with multilingual support},
author = {Jinwen XU},
- date = {2023-07-14},
+ date = {2023-07-23},
version = {},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/create-theorem},
@@ -15838,7 +15838,7 @@
title = {The \texttt{crefthe} package},
subtitle = {Cross referencing with proper definite articles},
author = {Jinwen XU},
- date = {2023-07-22},
+ date = {2023-07-23},
version = {},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/crefthe},
@@ -51939,7 +51939,7 @@
title = {The \texttt{penlight} package},
subtitle = {Penlight Lua libraries made available to Lua\LaTeX{} users},
author = {Kale Ewasiuk},
- date = {2023-07-19},
+ date = {2023-07-23},
version = {},
license = {mit},
mirror = {https://mirror.ctan.org/macros/luatex/generic/penlight},
@@ -51949,6 +51949,20 @@
Lua libraries with LuaLaTeX, with some extra functionality added.},
}
+@manual{ctan-penlightplus,
+ title = {The \texttt{penlightplus} package},
+ subtitle = {Additions to the Penlight Lua libraries},
+ author = {Kale Ewasiuk},
+ date = {2023-07-23},
+ version = {},
+ license = {mit},
+ mirror = {https://mirror.ctan.org/macros/luatex/generic/penlightplus},
+ url = {https://ctan.org/pkg/penlightplus},
+ annotation = {This package extends the
+ package
+ by adding useful functions for interfacing with \LaTeX{}.},
+}
+
@manual{ctan-penrose,
title = {The \texttt{penrose} package},
subtitle = {A TikZ library for producing Penrose tilings},
@@ -77660,7 +77674,7 @@
title = {The \texttt{YAMLvars} package},
subtitle = {A YAML parser and tool for easy \LaTeX{} definition creation},
author = {Kale Ewasiuk},
- date = {2023-07-19},
+ date = {2023-07-23},
version = {},
license = {mit},
mirror = {https://mirror.ctan.org/macros/luatex/latex/yamlvars},
diff --git a/biblio/ctan-bibdata/ctan.pdf b/biblio/ctan-bibdata/ctan.pdf
index a8bb242e61..a82b038181 100644
--- a/biblio/ctan-bibdata/ctan.pdf
+++ b/biblio/ctan-bibdata/ctan.pdf
Binary files differ
diff --git a/macros/latex/contrib/create-theorem/README.md b/macros/latex/contrib/create-theorem/README.md
index 5b741c38c5..c731811c3d 100644
--- a/macros/latex/contrib/create-theorem/README.md
+++ b/macros/latex/contrib/create-theorem/README.md
@@ -1,6 +1,6 @@
<!-- Copyright (C) 2021-2023 by Jinwen XU -->
-# `create-theorem` - Initializing theorem-like environments with multilingual support
+# `create-theorem` - Initializing and configuring theorem-like environments, with multilingual support
The package `create-theorem` provides the commands `\NameTheorem`, `\CreateTheorem` and `\SetTheorem` for naming, initializing and configuring theorem-like environments. All of these commands have key-value based interface and are especially useful in multi-language documents, allowing the easy declaration of theorem-like environments that can automatically adapt to the language settings.
diff --git a/macros/latex/contrib/create-theorem/create-theorem-doc.pdf b/macros/latex/contrib/create-theorem/create-theorem-doc.pdf
index 977be9c913..7f2154adcb 100644
--- a/macros/latex/contrib/create-theorem/create-theorem-doc.pdf
+++ b/macros/latex/contrib/create-theorem/create-theorem-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/create-theorem/create-theorem-doc.tex b/macros/latex/contrib/create-theorem/create-theorem-doc.tex
index d7ef8a56d9..c61a73a87e 100644
--- a/macros/latex/contrib/create-theorem/create-theorem-doc.tex
+++ b/macros/latex/contrib/create-theorem/create-theorem-doc.tex
@@ -46,6 +46,7 @@
crefformat,
crefthe,crefthename,
Crefthe,Crefthename,
+ crefthevariantname,Crefthevariantname,
crefthemark,
selectlanguage,
languagename,
@@ -106,10 +107,10 @@
\begin{document}
-\def\PackageVersion{2023/07/14}
+\def\PackageVersion{2023/07/23}
\def\PackageSubVersion{}
-\title{\createtheorempackage{}\\\smallskip\itshape Initializing theorem-like environments with multilingual support}
+\title{\createtheorempackage{}\\\smallskip\itshape Initializing and configuring theorem-like environments, with multilingual support}
\author{Jinwen XU}
\thanks{Corresponding to: \texttt{\createtheorempackage{} \PackageVersion\PackageSubVersion}}
\date{\TheDate{\PackageVersion}[only-year-month], in Beijing}
@@ -217,20 +218,32 @@ Supported keys are:
\begin{code}
[(*\meta{singular definite article}*)]{(*\meta{singular name}*)}[(*\meta{plural definite article}*)]{(*\meta{plural name}*)}
\end{code}
+ This would be useful for languages like French, Italian, Spanish, etc.
+ \item Also supports the syntax of \lstinline|\crefthevariantname|, thus you can assign different set of names for different variants/declensions (the first line in the configuration is the default name set, which is used in case no variants is specified when referencing):
+\begin{code}
+(*\commandoption{crefname}*) = {
+ (*\meta{language name}*) = { [...]{...}[...]{...}
+ , (*\meta{variant 1}*) = [...]{...}[...]{...}
+ , (*\meta{variant 2}*) = [...]{...}[...]{...}
+ ...
+ }
+ }
+\end{code}
+ This would be useful for languages like German, Russian, etc.
\end{itemize}
\item \commandoption{crefname style}\lstinline| = |\meta{style}
\begin{itemize}
- \item The style of the \textquote{crefname}, you can specify the font, text style, color, etc.
+ \item The style of \textquote{crefname} when referencing, you may specify the font, text style, color, etc.
\item Synonymous names: \commandoption{crefname-style} \,$|$\, \commandoption{crefnamestyle}
\end{itemize}
\item \commandoption{Crefname}\lstinline| = |\meta{configuration}
\begin{itemize}
\item The name for \lstinline|\Cref| the environment, its syntax is the same as that of \commandoption{crefname}.
- \item Also supports the syntax of \lstinline|\Crefthename|.
+ \item Also supports the syntax of \lstinline|\Crefthename| and \lstinline|\Crefthevariantname|.
\end{itemize}
\item \commandoption{Crefname style}\lstinline| = |\meta{style}
\begin{itemize}
- \item The style of the \textquote{Crefname}, you can specify the font, text style, color, etc.
+ \item The style of \textquote{Crefname} when referencing, you may specify the font, text style, color, etc.
\item Synonymous names: \commandoption{Crefname-style} \,$|$\, \commandoption{Crefnamestyle}
\end{itemize}
\item \commandoption{numbering style}\lstinline| = |\meta{style}
@@ -263,7 +276,6 @@ The syntax of \lstinline|\CreateTheorem| is as follows:
When the \meta{key-value configuration} is empty, don't forget to include the second pair of curly brackets, for example, \lstinline|\CreateTheorem{theorem}{}|.
\end{tip}
-\enlargethispage{2\baselineskip}
Supported keys are:
\vspace{-.2\baselineskip}
\begin{itemize}[label=,leftmargin=1.25em,itemindent=-1.25em]
@@ -289,6 +301,7 @@ Supported keys are:
\item If you are using \textsf{ntheorem} as the backend, then you need to load it with option \packageoption{thmmarks}.
\item Synonymous names: \commandoption{qed symbol} \,$|$\, \commandoption{qed-symbol} \,$|$\, \commandoption{qedsymbol}
\end{itemize}
+\pagebreak
\item \commandoption{parent counter}\lstinline| = |\meta{parent counter}
\begin{itemize}
\item Specifying the \meta{parent counter} for the current environment, \emph{i.e.}, numbering will restart whenever that sectional level is encountered.
@@ -309,7 +322,6 @@ Supported keys are:
\item It must be placed \emph{before} \commandoption{qed} if you want the starred version to have a Q.E.D symbol.
\item Synonymous names: \commandoption{create-starred-version} \,$|$\, \commandoption{createstarredversion} \,$|$\, \\\phantom{Synonymous names: }\commandoption{create numberless version} \,$|$\, \commandoption{create-numberless-version}~\,$|$\\\phantom{Synonymous names: }\commandoption{createnumberlessversion}
\end{itemize}
-\pagebreak
\item \commandoption{copy existed}\lstinline| = |\meta{existed environment}
\begin{itemize}
\item Defining the current environment to be the same as \meta{existed environment}.
@@ -329,6 +341,7 @@ Supported keys are:
\medskip
Please note that, for the sake of generality, the environment \meta{env} and its starred relative \meta{env}\texttt{*} do \emph{not} share the same set of names when they are separately defined. However, with proper usage of \commandoption{create starred version} and \commandoption{copy existed}, you should already be able to produce all of the following combinations that shares the same set of names: 1$)$ numbered \meta{env}, numbered \meta{env}\texttt{*} ; 2$)$ numbered \meta{env}, unnumbered \meta{env}\texttt{*} ; 3$)$ unnumbered \meta{env}, numbered \meta{env}\texttt{*} ; and 4$)$ unnumbered \meta{env}, unnumbered \meta{env}\texttt{*}. I left it as an easy exercise for you ;-)
+The answer can be found in section \labelcref{subsec:numbering}.
\medskip
\subsection[Configuring theorem-like environments]{Configuring theorem-like environments with \texttt{\textcolor{code-main}{\textbackslash SetTheorem}}}
@@ -384,6 +397,7 @@ In some cases, you may define an internal environment (for example, a generic ve
The command \lstinline|\NameTheorem| introduced earlier is for defining the names of a given environment for each language, which is more natural to use within a real-life document. However, for package/class authors wishing to maintain their language configuration files, it would be more convenient to use the following \lstinline|\NameTheorems|, which assigns the names for a given language all at once, made it possible to preset the names inside external files.
+\enlargethispage*{\baselineskip}
The syntax of \lstinline|\NameTheorems| is as follows (please note that the \meta{language name} here should be consistent with \lstinline|\languagename|):
\begin{code}
\NameTheorems{(*\meta{language name}*)}{(*\meta{key-value configuration}*)}
@@ -409,15 +423,14 @@ Supported keys are (notice that you \emph{cannot} set the styles via \lstinline|
(*\meta{name of environment}*) = {(*\meta{singular name}*)}{(*\meta{plural name}*)}
}
\end{code}
- \item Also supports the syntax of \lstinline|\crefthename|, thus you can assign names of the form:
-\begin{code}
-[(*\meta{singular definite article}*)]{(*\meta{singular name}*)}[(*\meta{plural definite article}*)]{(*\meta{plural name}*)}
-\end{code}
+ \item Also supports the syntax of \lstinline|\crefthename| and \lstinline|\crefthevariantname|.\\
+ Please refer to the description of \lstinline|\NameTheorem| for more details.
\end{itemize}
\item \commandoption{Crefname}\lstinline| = |\meta{configuration}
\begin{itemize}
\item The names for \lstinline|\Cref| the environments, its syntax is the same as that of \commandoption{crefname}.
- \item Also supports the syntax of \lstinline|\Crefthename|.
+ \item Also supports the syntax of \lstinline|\Crefthename| and \lstinline|\Crefthevariantname|.\\
+ Please refer to the description of \lstinline|\NameTheorem| for more details.
\end{itemize}
\end{itemize}
@@ -460,30 +473,51 @@ or to do it in one turn:
\end{code}
\smallskip
-This is not exciting at all. Now, let's say we are writing a bilingual note in English and French. (I shall omit the \lstinline|\NameTheorem| version and do it all at once in \lstinline|\CreateTheorem|.)
+This is not exciting at all. Now, let's say we are writing a trilingual note in English, French and German. (I shall omit the \lstinline|\NameTheorem| version and do it all at once in \lstinline|\CreateTheorem|.)
\begin{code}
\CreateTheorem{idea}
{
(*\commandoption{name}*) = {
(*\commandoption{heading}*) = { english = Idea,
- french = Idée, },
+ french = Idée,
+ ngerman = Idee, },
(*\commandoption{crefname}*) = { english = {idea}{ideas},
- french = [l']{idée}[les]{idées}, },
+ french = [l']{idée}[les]{idées},
+ ngerman = { {Idee}{Idee}
+ , Nominativ = [die]{Idee}[die]{Ideen}
+ , Genitiv = [der]{Idee}[der]{Ideen}
+ , Dativ = [der]{Idee}[den]{Ideen}
+ , Akkusativ = [die]{Idee}[die]{Ideen}
+ } },
(*\commandoption{Crefname}*) = { english = {Idea}{Ideas},
- french = [L']{idée}[Les]{idées}, },
+ french = [L']{idée}[Les]{idées},
+ ngerman = { {Idee}{Idee}
+ , Nominativ = [Die]{Idee}[Die]{Ideen}
+ , Genitiv = [Der]{Idee}[Der]{Ideen}
+ , Dativ = [Der]{Idee}[Den]{Ideen}
+ , Akkusativ = [Die]{Idee}[Die]{Ideen}
+ } },
},
(*\commandoption{parent counter}*) = section,
}
\end{code}
-With this, if you use \lstinline|\selectlanguage{french}|, the {\normalfont\texttt{idea}} environment shall be automatically displayed as \textquote{Idée}. And if you \lstinline|\crefthe| it, the definite article and the name showed up properly just as expected.
+With this, if you use \lstinline|\selectlanguage{french}|, the {\normalfont\texttt{idea}} environment shall be automatically displayed as \textquote{Idée}. And if you \lstinline|\crefthe| it, the definite article and the name would show up properly just as expected.
+
+The same happens for German with \lstinline|\selectlanguage{ngerman}|, and when referencing an {\normalfont\texttt{idea}} environment, you may specify the declension as with \lstinline|\crefthe[|\meta{prep}\lstinline|,variant=Nominativ]{|\meta{label}\lstinline|}|, or simply with shortcut such as \lstinline|\crefthe[|\meta{prep}\lstinline|,nom.]{|\meta{label}\lstinline|}|.
+
+\begin{tip}
+ For more datailed usage of the referencing command \lstinline|\crefthe|, please refer to the documentation of the package \textsf{crefthe}.
+\end{tip}
-Next we shall deal with the problem of numbering. Let's continue to use this environment {\normalfont\texttt{idea}} for demonstration -- suppose that we have already set the names with \lstinline|\NameTheorem|.
+\bigskip
+Next we shall deal with the problem of numbering. Let's continue to use this environment {\normalfont\texttt{idea}} for demonstration --- suppose that we have already set the names with \lstinline|\NameTheorem|.
\medskip
\subsection{Let's play with numbering}
+\label{subsec:numbering}
Remember the exercise I left you in the previous section? Let's do it together now.
@@ -535,13 +569,12 @@ This is essentially the combination of the first two cases --- we need to create
\medskip
In each case, the two environments {\normalfont\texttt{idea}} and {\normalfont\texttt{idea*}} share the same set of names.
-\enlargethispage{\baselineskip}
\begin{tip}[Attention]
- The sole purpose of this section is to demonstrate the feature of this package -- some combinations are not recommended to use in the actual documents.
+ The sole purpose of this section is to demonstrate the feature of this package --- some combinations are not recommended to use in the actual documents.
\end{tip}
-\subsection{The \emph{proofless} version -- theorems with a Q.E.D. symbol}
+\subsection{The \emph{proofless} version --- theorems with a Q.E.D. symbol}
Sometimes you may encounter a theorem without a proof, in which case you might want a Q.E.D. symbol when the theorem is finished. This can be easily achieved via:
@@ -628,7 +661,7 @@ A typical configuration looks like this:
}
\end{code}
-Here is another example for French:
+Here is an example for French:
\begin{code}
\NameTheorems { french }
@@ -642,27 +675,56 @@ Here is another example for French:
, (*\commandoption{crefname}*) = {
, theorem = [le]{théorème}[les]{théorèmes}
, proposition = [la]{proposition}[les]{propositions}
- , example = [l']{example}[les]{examples}
+ , example = [l']{exemple}[les]{exemples}
...
}
, (*\commandoption{Crefname}*) = {
, theorem = [Le]{théorème}[Les]{théorèmes}
, proposition = [La]{proposition}[Les]{propositions}
- , example = [L']{example}[Les]{examples}
+ , example = [L']{exemple}[Les]{exemples}
+ ...
+ }
+ }
+\end{code}
+
+And an example for German:
+
+\begin{code}
+\NameTheorems { ngerman }
+ {
+ , (*\commandoption{heading}*) = {
+ , theorem = Satz
+ ...
+ }
+ , (*\commandoption{crefname}*) = {
+ , theorem = { {Satz}{Sätze}
+ , Nominativ = [der]{Satz}[die]{Sätze}
+ , Genitiv = [des]{Satzes}[der]{Sätze}
+ , Dativ = [dem]{Satz}[den]{Sätzen}
+ , Akkusativ = [den]{Satz}[die]{Sätze}
+ }
+ ...
+ }
+ , (*\commandoption{Crefname}*) = {
+ , theorem = { {Satz}{Sätze}
+ , Nominativ = [Der]{Satz}[Die]{Sätze}
+ , Genitiv = [Des]{Satzes}[Der]{Sätze}
+ , Dativ = [Dem]{Satz}[Den]{Sätzen}
+ , Akkusativ = [Den]{Satz}[Die]{Sätze}
+ }
...
}
}
\end{code}
\medskip
-The configuration using \lstinline|\NameTheorems| is compatible with that using \lstinline|\NameTheorem| and there is no need to worry about duplicated definitions -- new settings will automatically overwrite the old ones.
+The configuration using \lstinline|\NameTheorems| is compatible with that using \lstinline|\NameTheorem| and there is no need to worry about duplicated definitions --- new settings will automatically overwrite the old ones.
-\bigskip
+\clearpage
\section{Known issues}
\begin{itemize}
- \item The current mechanism does not work well for German, a problem originated in the package \textsf{crefthe}. The author plans to adopt a more refined approach in a later version so as to support the various grammatical situations in German.
\item \createtheorempackage{} modifies some undocumented internal macros of \textsf{cleveref}, so the behaviour might not be stable if \textsf{cleveref} gets updated.
\item The counter aliasing function is still not perfect, (sometimes) causing incorrect ordering in the result of \lstinline|\cref|.
\item There might be inaccuracies in the translation of those preset names.
diff --git a/macros/latex/contrib/create-theorem/create-theorem.sty b/macros/latex/contrib/create-theorem/create-theorem.sty
index 7eefe80b81..a488ad7bc3 100644
--- a/macros/latex/contrib/create-theorem/create-theorem.sty
+++ b/macros/latex/contrib/create-theorem/create-theorem.sty
@@ -12,7 +12,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplPackage
{create-theorem}
- {2023/07/14} {}
+ {2023/07/23} {}
{Initializing theorem-like environments with multilingual support}
\keys_define:nn { create-theorem }
@@ -201,17 +201,31 @@
\cs_new:Nn \__crthm_set_name_crefname:nnn
% #1 = env name
% #2 = language name
- % #3 = corresponding crefname {..}{..} or [..]{..}[..]{..}
+ % #3 = corresponding crefname {..}{..} or [..]{..}[..]{..}, or a set of crefnames for different variants
{
- \__crthm_set_name_crefname_generic:w { #1 } { #2 } #3 { c }
+ \str_if_in:nnTF { #3 } { = }
+ {
+ \crefthe_parse_variant:n { #3 }
+ \crefthe_pass_variant_to:n { \__crthm_set_name_crefname_generic:w { #1 } { #2 } } { c }
+ }
+ {
+ \__crthm_set_name_crefname_generic:w { #1 } { #2 } #3 { c }
+ }
}
\cs_new:Nn \__crthm_set_name_Crefname:nnn
% #1 = env name
% #2 = language name
- % #3 = corresponding Crefname {..}{..} or [..]{..}[..]{..}
+ % #3 = corresponding Crefname {..}{..} or [..]{..}[..]{..}, or a set of crefnames for different variants
{
- \__crthm_set_name_crefname_generic:w { #1 } { #2 } #3 { C }
+ \str_if_in:nnTF { #3 } { = }
+ {
+ \crefthe_parse_variant:n { #3 }
+ \crefthe_pass_variant_to:n { \__crthm_set_name_crefname_generic:w { #1 } { #2 } } { C }
+ }
+ {
+ \__crthm_set_name_crefname_generic:w { #1 } { #2 } #3 { C }
+ }
}
\NewExpandableDocumentCommand \__crthm_set_name_crefname_generic:w { m m O{} m O{} m m }
@@ -773,17 +787,31 @@
\cs_new:Nn \__crthm_set_name_per_lang_crefname:nnn
% #1 = language name
% #2 = env name
- % #3 = corresponding crefname {..}{..} or [..]{..}[..]{..}
+ % #3 = corresponding crefname {..}{..} or [..]{..}[..]{..}, or a set of crefnames for different variants
{
- \__crthm_set_name_crefname_generic:w { #2 } { #1 } #3 { c }
+ \str_if_in:nnTF { #3 } { = }
+ {
+ \crefthe_parse_variant:n { #3 }
+ \crefthe_pass_variant_to:n { \__crthm_set_name_crefname_generic:w { #2 } { #1 } } { c }
+ }
+ {
+ \__crthm_set_name_crefname_generic:w { #2 } { #1 } #3 { c }
+ }
}
\cs_new:Nn \__crthm_set_name_per_lang_Crefname:nnn
% #1 = language name
% #2 = env name
- % #3 = corresponding Crefname {..}{..} or [..]{..}[..]{..}
+ % #3 = corresponding Crefname {..}{..} or [..]{..}[..]{..}, or a set of crefnames for different variants
{
- \__crthm_set_name_crefname_generic:w { #2 } { #1 } #3 { C }
+ \str_if_in:nnTF { #3 } { = }
+ {
+ \crefthe_parse_variant:n { #3 }
+ \crefthe_pass_variant_to:n { \__crthm_set_name_crefname_generic:w { #2 } { #1 } } { C }
+ }
+ {
+ \__crthm_set_name_crefname_generic:w { #2 } { #1 } #3 { C }
+ }
}
@@ -1146,7 +1174,12 @@
, crefname = {
, english = {application}{applications}
, french = [l']{application}[les]{applications}
- , ngerman = {Anwendung}{Anwendungen}
+ , ngerman = { {Anwendung}{Anwendungen}
+ , Nominativ = [die]{Anwendung}[die]{Anwendungen}
+ , Genitiv = [der]{Anwendung}[der]{Anwendungen}
+ , Dativ = [der]{Anwendung}[den]{Anwendungen}
+ , Akkusativ = [die]{Anwendung}[die]{Anwendungen}
+ }
, italian = [l']{applicazione}[le]{applicazioni}
, portuguese = [a]{aplicação}[as]{aplicações}
, brazilian = [a]{aplicação}[as]{aplicações}
@@ -1159,7 +1192,12 @@
, Crefname = {
, english = {Application}{Applications}
, french = [L']{application}[Les]{applications}
- , ngerman = {Anwendung}{Anwendungen}
+ , ngerman = { {Anwendung}{Anwendungen}
+ , Nominativ = [Die]{Anwendung}[Die]{Anwendungen}
+ , Genitiv = [Der]{Anwendung}[Der]{Anwendungen}
+ , Dativ = [Der]{Anwendung}[Den]{Anwendungen}
+ , Akkusativ = [Die]{Anwendung}[Die]{Anwendungen}
+ }
, italian = [L']{applicazione}[Le]{applicazioni}
, portuguese = [A]{aplicação}[As]{aplicações}
, brazilian = [A]{aplicação}[As]{aplicações}
@@ -1176,7 +1214,7 @@
, heading = {
, english = Assertion
, french = Assertion
- , ngerman = Behauptung
+ , ngerman = Assertion
, italian = Asserzione
, portuguese = Asserção
, brazilian = Asserção
@@ -1189,7 +1227,12 @@
, crefname = {
, english = {assertion}{assertions}
, french = [l']{assertion}[les]{assertions}
- , ngerman = {Behauptung}{Behauptungen}
+ , ngerman = { {Assertion}{Assertionen}
+ , Nominativ = [die]{Assertion}[die]{Assertionen}
+ , Genitiv = [der]{Assertion}[der]{Assertionen}
+ , Dativ = [der]{Assertion}[den]{Assertionen}
+ , Akkusativ = [die]{Assertion}[die]{Assertionen}
+ }
, italian = [l']{asserzione}[le]{asserzioni}
, portuguese = [a]{asserção}[as]{asserções}
, brazilian = [a]{asserção}[as]{asserções}
@@ -1202,7 +1245,12 @@
, Crefname = {
, english = {Assertion}{Assertions}
, french = [L']{assertion}[Les]{assertions}
- , ngerman = {Behauptung}{Behauptungen}
+ , ngerman = { {Assertion}{Assertionen}
+ , Nominativ = [Die]{Assertion}[Die]{Assertionen}
+ , Genitiv = [Der]{Assertion}[Der]{Assertionen}
+ , Dativ = [Der]{Assertion}[Den]{Assertionen}
+ , Akkusativ = [Die]{Assertion}[Die]{Assertionen}
+ }
, italian = [L']{asserzione}[Le]{asserzioni}
, portuguese = [A]{asserção}[As]{asserções}
, brazilian = [A]{asserção}[As]{asserções}
@@ -1232,7 +1280,12 @@
, crefname = {
, english = {assumption}{assumptions}
, french = [la]{supposition}[les]{suppositions}
- , ngerman = {Annahme}{Annahmen}
+ , ngerman = { {Annahme}{Annahmen}
+ , Nominativ = [die]{Annahme}[die]{Annahmen}
+ , Genitiv = [der]{Annahme}[der]{Annahmen}
+ , Dativ = [der]{Annahme}[den]{Annahmen}
+ , Akkusativ = [die]{Annahme}[die]{Annahmen}
+ }
, italian = [la]{supposizione}[le]{supposizioni}
, portuguese = [a]{suposição}[as]{suposições}
, brazilian = [a]{suposição}[as]{suposições}
@@ -1245,7 +1298,12 @@
, Crefname = {
, english = {Assumption}{Assumptions}
, french = [La]{supposition}[Les]{suppositions}
- , ngerman = {Annahme}{Annahmen}
+ , ngerman = { {Annahme}{Annahmen}
+ , Nominativ = [Die]{Annahme}[Die]{Annahmen}
+ , Genitiv = [Der]{Annahme}[Der]{Annahmen}
+ , Dativ = [Der]{Annahme}[Den]{Annahmen}
+ , Akkusativ = [Die]{Annahme}[Die]{Annahmen}
+ }
, italian = [la]{supposizione}[le]{supposizioni}
, portuguese = [A]{suposição}[As]{suposições}
, brazilian = [A]{suposição}[As]{suposições}
@@ -1275,7 +1333,12 @@
, crefname = {
, english = {axiom}{axioms}
, french = [l']{axiome}[les]{axiomes}
- , ngerman = {Axiom}{Axiome}
+ , ngerman = { {Axiom}{Axiome}
+ , Nominativ = [das]{Axiom}[die]{Axiome}
+ , Genitiv = [des]{Axioms}[der]{Axiome}
+ , Dativ = [dem]{Axiom}[den]{Axiomen}
+ , Akkusativ = [das]{Axiom}[die]{Axiome}
+ }
, italian = [l']{assioma}[gli]{assiomi}
, portuguese = [o]{axioma}[os]{axiomas}
, brazilian = [o]{axioma}[os]{axiomas}
@@ -1288,7 +1351,12 @@
, Crefname = {
, english = {Axiom}{Axioms}
, french = [L']{axiome}[Les]{axiomes}
- , ngerman = {Axiom}{Axiome}
+ , ngerman = { {Axiom}{Axiome}
+ , Nominativ = [Das]{Axiom}[Die]{Axiome}
+ , Genitiv = [Des]{Axioms}[Der]{Axiome}
+ , Dativ = [Dem]{Axiom}[Den]{Axiomen}
+ , Akkusativ = [Das]{Axiom}[Die]{Axiome}
+ }
, italian = [L']{assioma}[Gli]{assiomi}
, portuguese = [O]{axioma}[Os]{axiomas}
, brazilian = [O]{axioma}[Os]{axiomas}
@@ -1305,7 +1373,7 @@
, heading = {
, english = Claim
, french = Affirmation
- , ngerman = Affirmation
+ , ngerman = Behauptung
, italian = Affermazione
, portuguese = Afirmação
, brazilian = Afirmação
@@ -1318,7 +1386,12 @@
, crefname = {
, english = {claim}{claims}
, french = [l']{affirmation}[les]{affirmations}
- , ngerman = {Affirmation}{Affirmationen}
+ , ngerman = { {Behauptung}{Behauptungen}
+ , Nominativ = [die]{Behauptung}[die]{Behauptungen}
+ , Genitiv = [der]{Behauptung}[der]{Behauptungen}
+ , Dativ = [der]{Behauptung}[den]{Behauptungen}
+ , Akkusativ = [die]{Behauptung}[die]{Behauptungen}
+ }
, italian = [l']{affermazione}[le]{affermazioni}
, portuguese = [a]{afirmação}[as]{afirmações}
, brazilian = [a]{afirmação}[as]{afirmações}
@@ -1331,7 +1404,12 @@
, Crefname = {
, english = {Claim}{Claims}
, french = [L']{affirmation}[Les]{affirmations}
- , ngerman = {Affirmation}{Affirmationen}
+ , ngerman = { {Behauptung}{Behauptungen}
+ , Nominativ = [Die]{Behauptung}[Die]{Behauptungen}
+ , Genitiv = [Der]{Behauptung}[Der]{Behauptungen}
+ , Dativ = [Der]{Behauptung}[Den]{Behauptungen}
+ , Akkusativ = [Die]{Behauptung}[Die]{Behauptungen}
+ }
, italian = [L']{affermazione}[Le]{affermazioni}
, portuguese = [A]{afirmação}[As]{afirmações}
, brazilian = [A]{afirmação}[As]{afirmações}
@@ -1361,7 +1439,12 @@
, crefname = {
, english = {conclusion}{conclusions}
, french = [la]{conclusion}[Les]{conclusions}
- , ngerman = {Schlussfolgerung}{Schlussfolgerungen}
+ , ngerman = { {Schlussfolgerung}{Schlussfolgerungen}
+ , Nominativ = [die]{Schlussfolgerung}[die]{Schlussfolgerungen}
+ , Genitiv = [der]{Schlussfolgerung}[der]{Schlussfolgerungen}
+ , Dativ = [der]{Schlussfolgerung}[den]{Schlussfolgerungen}
+ , Akkusativ = [die]{Schlussfolgerung}[die]{Schlussfolgerungen}
+ }
, italian = [la]{conclusione}[le]{conclusioni}
, portuguese = [a]{conclusão}[as]{conclusões}
, brazilian = [a]{conclusão}[as]{conclusões}
@@ -1374,7 +1457,12 @@
, Crefname = {
, english = {Conclusion}{Conclusions}
, french = [La]{conclusion}[Les]{conclusions}
- , ngerman = {Schlussfolgerung}{Schlussfolgerungen}
+ , ngerman = { {Schlussfolgerung}{Schlussfolgerungen}
+ , Nominativ = [Die]{Schlussfolgerung}[Die]{Schlussfolgerungen}
+ , Genitiv = [Der]{Schlussfolgerung}[Der]{Schlussfolgerungen}
+ , Dativ = [Der]{Schlussfolgerung}[Den]{Schlussfolgerungen}
+ , Akkusativ = [Die]{Schlussfolgerung}[Die]{Schlussfolgerungen}
+ }
, italian = [La]{conclusione}[Le]{conclusioni}
, portuguese = [A]{conclusão}[As]{conclusões}
, brazilian = [A]{conclusão}[As]{conclusões}
@@ -1404,7 +1492,12 @@
, crefname = {
, english = {conjecture}{conjectures}
, french = [la]{conjecture}[les]{conjectures}
- , ngerman = {Vermutung}{Vermutungen}
+ , ngerman = { {Vermutung}{Vermutungen}
+ , Nominativ = [die]{Vermutung}[die]{Vermutungen}
+ , Genitiv = [der]{Vermutung}[der]{Vermutungen}
+ , Dativ = [der]{Vermutung}[den]{Vermutungen}
+ , Akkusativ = [die]{Vermutung}[die]{Vermutungen}
+ }
, italian = [la]{congettura}[le]{congetture}
, portuguese = [a]{conjetura}[as]{conjeturas}
, brazilian = [a]{conjectura}[as]{conjecturas}
@@ -1417,7 +1510,12 @@
, Crefname = {
, english = {Conjecture}{Conjectures}
, french = [La]{conjecture}[Les]{conjectures}
- , ngerman = {Vermutung}{Vermutungen}
+ , ngerman = { {Vermutung}{Vermutungen}
+ , Nominativ = [Die]{Vermutung}[Die]{Vermutungen}
+ , Genitiv = [Der]{Vermutung}[Der]{Vermutungen}
+ , Dativ = [Der]{Vermutung}[Den]{Vermutungen}
+ , Akkusativ = [Die]{Vermutung}[Die]{Vermutungen}
+ }
, italian = [La]{congettura}[Le]{congetture}
, portuguese = [A]{conjetura}[As]{conjeturas}
, brazilian = [A]{conjectura}[As]{conjecturas}
@@ -1447,7 +1545,12 @@
, crefname = {
, english = {construction}{constructions}
, french = [la]{construction}[les]{constructions}
- , ngerman = {Konstruktion}{Konstruktionen}
+ , ngerman = { {Konstruktion}{Konstruktionen}
+ , Nominativ = [die]{Konstruktion}[die]{Konstruktionen}
+ , Genitiv = [der]{Konstruktion}[der]{Konstruktionen}
+ , Dativ = [der]{Konstruktion}[den]{Konstruktionen}
+ , Akkusativ = [die]{Konstruktion}[die]{Konstruktionen}
+ }
, italian = [la]{costruzione}[le]{costruzioni}
, portuguese = [a]{construção}[as]{construções}
, brazilian = [a]{construção}[as]{construções}
@@ -1460,7 +1563,12 @@
, Crefname = {
, english = {Construction}{Constructions}
, french = [La]{construction}[Les]{constructions}
- , ngerman = {Konstruktion}{Konstruktionen}
+ , ngerman = { {Konstruktion}{Konstruktionen}
+ , Nominativ = [Die]{Konstruktion}[Die]{Konstruktionen}
+ , Genitiv = [Der]{Konstruktion}[Der]{Konstruktionen}
+ , Dativ = [Der]{Konstruktion}[Den]{Konstruktionen}
+ , Akkusativ = [Die]{Konstruktion}[Die]{Konstruktionen}
+ }
, italian = [La]{costruzione}[Le]{costruzioni}
, portuguese = [A]{construção}[As]{construções}
, brazilian = [A]{construção}[As]{construções}
@@ -1490,7 +1598,12 @@
, crefname = {
, english = {convention}{conventions}
, french = [la]{convention}[les]{conventions}
- , ngerman = {Konvention}{Konventionen}
+ , ngerman = { {Konvention}{Konventionen}
+ , Nominativ = [die]{Konvention}[die]{Konventionen}
+ , Genitiv = [der]{Konvention}[der]{Konventionen}
+ , Dativ = [der]{Konvention}[den]{Konventionen}
+ , Akkusativ = [die]{Konvention}[die]{Konventionen}
+ }
, italian = [la]{convenzione}[le]{convenzioni}
, portuguese = [a]{convenção}[as]{convenções}
, brazilian = [a]{convenção}[as]{convenções}
@@ -1503,7 +1616,12 @@
, Crefname = {
, english = {Convention}{Conventions}
, french = [La]{convention}[Les]{conventions}
- , ngerman = {Konvention}{Konventionen}
+ , ngerman = { {Konvention}{Konventionen}
+ , Nominativ = [Die]{Konvention}[Die]{Konventionen}
+ , Genitiv = [Der]{Konvention}[Der]{Konventionen}
+ , Dativ = [Der]{Konvention}[Den]{Konventionen}
+ , Akkusativ = [Die]{Konvention}[Die]{Konventionen}
+ }
, italian = [La]{convenzione}[Le]{convenzioni}
, portuguese = [A]{convenção}[As]{convenções}
, brazilian = [A]{convenção}[As]{convenções}
@@ -1533,7 +1651,12 @@
, crefname = {
, english = {corollary}{corollaries}
, french = [le]{corollaire}[les]{corollaires}
- , ngerman = {Korollar}{Korollare}
+ , ngerman = { {Korollar}{Korollare}
+ , Nominativ = [das]{Korollar}[die]{Korollare}
+ , Genitiv = [des]{Korollars}[der]{Korollare}
+ , Dativ = [dem]{Korollar}[den]{Korollaren}
+ , Akkusativ = [das]{Korollar}[die]{Korollare}
+ }
, italian = [il]{corollario}[i]{corollari}
, portuguese = [o]{corolário}[os]{corolários}
, brazilian = [o]{corolário}[os]{corolários}
@@ -1546,7 +1669,12 @@
, Crefname = {
, english = {Corollary}{Corollaries}
, french = [Le]{corollaire}[Les]{corollaires}
- , ngerman = {Korollar}{Korollare}
+ , ngerman = { {Korollar}{Korollare}
+ , Nominativ = [Das]{Korollar}[Die]{Korollare}
+ , Genitiv = [Des]{Korollars}[Der]{Korollare}
+ , Dativ = [Dem]{Korollar}[Den]{Korollaren}
+ , Akkusativ = [Das]{Korollar}[Die]{Korollare}
+ }
, italian = [Il]{corollario}[I]{corollari}
, portuguese = [O]{corolário}[Os]{corolários}
, brazilian = [O]{corolário}[Os]{corolários}
@@ -1576,7 +1704,12 @@
, crefname = {
, english = {definition}{definitions}
, french = [la]{définition}[les]{définitions}
- , ngerman = {Definition}{Definitionen}
+ , ngerman = { {Definition}{Definitionen}
+ , Nominativ = [die]{Definition}[die]{Definitionen}
+ , Genitiv = [der]{Definition}[der]{Definitionen}
+ , Dativ = [der]{Definition}[den]{Definitionen}
+ , Akkusativ = [die]{Definition}[die]{Definitionen}
+ }
, italian = [la]{definizione}[le]{definizioni}
, portuguese = [a]{definição}[as]{definições}
, brazilian = [a]{definição}[as]{definições}
@@ -1589,7 +1722,12 @@
, Crefname = {
, english = {Definition}{Definitions}
, french = [La]{définition}[Les]{définitions}
- , ngerman = {Definition}{Definitionen}
+ , ngerman = { {Definition}{Definitionen}
+ , Nominativ = [Die]{Definition}[Die]{Definitionen}
+ , Genitiv = [Der]{Definition}[Der]{Definitionen}
+ , Dativ = [Der]{Definition}[Den]{Definitionen}
+ , Akkusativ = [Die]{Definition}[Die]{Definitionen}
+ }
, italian = [La]{definizione}[Le]{definizioni}
, portuguese = [A]{definição}[As]{definições}
, brazilian = [A]{definição}[As]{definições}
@@ -1619,7 +1757,12 @@
, crefname = {
, english = {example}{examples}
, french = [l']{exemple}[les]{exemples}
- , ngerman = {Beispiel}{Beispiele}
+ , ngerman = { {Beispiel}{Beispiele}
+ , Nominativ = [das]{Beispiel}[die]{Beispiele}
+ , Genitiv = [des]{Beispiels}[der]{Beispiele}
+ , Dativ = [dem]{Beispiel}[den]{Beispielen}
+ , Akkusativ = [das]{Beispiel}[die]{Beispiele}
+ }
, italian = [l']{esempio}[gli]{esempi}
, portuguese = [o]{exemplo}[os]{exemplos}
, brazilian = [o]{exemplo}[os]{exemplos}
@@ -1632,7 +1775,12 @@
, Crefname = {
, english = {Example}{Examples}
, french = [L']{exemple}[Les]{exemples}
- , ngerman = {Beispiel}{Beispiele}
+ , ngerman = { {Beispiel}{Beispiele}
+ , Nominativ = [Das]{Beispiel}[Die]{Beispiele}
+ , Genitiv = [Des]{Beispiels}[Der]{Beispiele}
+ , Dativ = [Dem]{Beispiel}[Den]{Beispielen}
+ , Akkusativ = [Das]{Beispiel}[Die]{Beispiele}
+ }
, italian = [L']{esempio}[Gli]{esempi}
, portuguese = [O]{exemplo}[Os]{exemplos}
, brazilian = [O]{exemplo}[Os]{exemplos}
@@ -1662,7 +1810,12 @@
, crefname = {
, english = {exercise}{exercises}
, french = [l']{exercice}[les]{exercices}
- , ngerman = {Ãœbung}{Ãœbungen}
+ , ngerman = { {Ãœbung}{Ãœbungen}
+ , Nominativ = [die]{Ãœbung}[die]{Ãœbungen}
+ , Genitiv = [der]{Ãœbung}[der]{Ãœbungen}
+ , Dativ = [der]{Ãœbung}[den]{Ãœbungen}
+ , Akkusativ = [die]{Ãœbung}[die]{Ãœbungen}
+ }
, italian = [l']{esercizio}[gli]{esercizi}
, portuguese = [o]{exercício}[os]{exercícios}
, brazilian = [o]{exercício}[os]{exercícios}
@@ -1675,7 +1828,12 @@
, Crefname = {
, english = {Exercise}{Exercises}
, french = [L']{exercice}[Les]{exercices}
- , ngerman = {Ãœbung}{Ãœbungen}
+ , ngerman = { {Ãœbung}{Ãœbungen}
+ , Nominativ = [Die]{Ãœbung}[Die]{Ãœbungen}
+ , Genitiv = [Der]{Ãœbung}[Der]{Ãœbungen}
+ , Dativ = [Der]{Ãœbung}[Den]{Ãœbungen}
+ , Akkusativ = [Die]{Ãœbung}[Die]{Ãœbungen}
+ }
, italian = [L']{esercizio}[Gli]{esercizi}
, portuguese = [O]{exercício}[Os]{exercícios}
, brazilian = [O]{exercício}[Os]{exercícios}
@@ -1692,7 +1850,7 @@
, heading = {
, english = Fact
, french = Fait
- , ngerman = Fakt
+ , ngerman = Tatsache
, italian = Fatto
, portuguese = Facto
, brazilian = Fato
@@ -1705,7 +1863,12 @@
, crefname = {
, english = {fact}{facts}
, french = [le]{fait}[les]{faits}
- , ngerman = {Fakt}{Fakten}
+ , ngerman = { {Tatsache}{Tatsachen}
+ , Nominativ = [die]{Tatsache}[die]{Tatsachen}
+ , Genitiv = [der]{Tatsache}[der]{Tatsachen}
+ , Dativ = [der]{Tatsache}[den]{Tatsachen}
+ , Akkusativ = [die]{Tatsache}[die]{Tatsachen}
+ }
, italian = [il]{fatto}[i]{fatti}
, portuguese = [o]{facto}[os]{factos}
, brazilian = [o]{fato}[os]{fatos}
@@ -1718,7 +1881,12 @@
, Crefname = {
, english = {Fact}{Facts}
, french = [Le]{fait}[Les]{faits}
- , ngerman = {Fakt}{Fakten}
+ , ngerman = { {Tatsache}{Tatsachen}
+ , Nominativ = [Die]{Tatsache}[Die]{Tatsachen}
+ , Genitiv = [Der]{Tatsache}[Der]{Tatsachen}
+ , Dativ = [Der]{Tatsache}[Den]{Tatsachen}
+ , Akkusativ = [Die]{Tatsache}[Die]{Tatsachen}
+ }
, italian = [Il]{fatto}[I]{fatti}
, portuguese = [O]{facto}[Os]{factos}
, brazilian = [O]{fato}[Os]{fatos}
@@ -1748,7 +1916,12 @@
, crefname = {
, english = {hypothesis}{hypotheses}
, french = [l']{hypothèse}[les]{hypothèses}
- , ngerman = {Hypothese}{Hypothesen}
+ , ngerman = { {Hypothese}{Hypothesen}
+ , Nominativ = [die]{Hypothese}[die]{Hypothesen}
+ , Genitiv = [der]{Hypothese}[der]{Hypothesen}
+ , Dativ = [der]{Hypothese}[den]{Hypothesen}
+ , Akkusativ = [die]{Hypothese}[die]{Hypothesen}
+ }
, italian = [l']{ipotesi}[le]{ipotesi}
, portuguese = [a]{hipótese}[as]{hipóteses}
, brazilian = [a]{hipótese}[as]{hipóteses}
@@ -1761,7 +1934,12 @@
, Crefname = {
, english = {Hypothesis}{Hypotheses}
, french = [L']{hypothèse}[Les]{hypothèses}
- , ngerman = {Hypothese}{Hypothesen}
+ , ngerman = { {Hypothese}{Hypothesen}
+ , Nominativ = [Die]{Hypothese}[Die]{Hypothesen}
+ , Genitiv = [Der]{Hypothese}[Der]{Hypothesen}
+ , Dativ = [Der]{Hypothese}[Den]{Hypothesen}
+ , Akkusativ = [Die]{Hypothese}[Die]{Hypothesen}
+ }
, italian = [L']{ipotesi}[Le]{ipotesi}
, portuguese = [A]{hipótese}[As]{hipóteses}
, brazilian = [A]{hipótese}[As]{hipóteses}
@@ -1791,7 +1969,12 @@
, crefname = {
, english = {lemma}{Lemmas}
, french = [le]{lemme}[les]{lemmes}
- , ngerman = {Lemma}{Lemmata}
+ , ngerman = { {Lemma}{Lemmata}
+ , Nominativ = [das]{Lemma}[die]{Lemmata}
+ , Genitiv = [des]{Lemmas}[der]{Lemmata}
+ , Dativ = [dem]{Lemma}[den]{Lemmata}
+ , Akkusativ = [das]{Lemma}[die]{Lemmata}
+ }
, italian = [il]{lemma}[i]{lemmi}
, portuguese = [o]{lema}[os]{lemas}
, brazilian = [o]{lema}[os]{lemas}
@@ -1804,7 +1987,12 @@
, Crefname = {
, english = {Lemma}{Lemmas}
, french = [Le]{lemme}[Les]{lemmes}
- , ngerman = {Lemma}{Lemmata}
+ , ngerman = { {Lemma}{Lemmata}
+ , Nominativ = [Das]{Lemma}[Die]{Lemmata}
+ , Genitiv = [Des]{Lemmas}[Der]{Lemmata}
+ , Dativ = [Dem]{Lemma}[Den]{Lemmata}
+ , Akkusativ = [Das]{Lemma}[Die]{Lemmata}
+ }
, italian = [Il]{lemma}[I]{lemmi}
, portuguese = [O]{lema}[Os]{lemas}
, brazilian = [O]{lema}[Os]{lemas}
@@ -1834,7 +2022,12 @@
, crefname = {
, english = {notation}{notations}
, french = [la]{notation}[les]{notations}
- , ngerman = {Notation}{Notationen}
+ , ngerman = { {Notation}{Notationen}
+ , Nominativ = [die]{Notation}[die]{Notationen}
+ , Genitiv = [der]{Notation}[der]{Notationen}
+ , Dativ = [der]{Notation}[den]{Notationen}
+ , Akkusativ = [die]{Notation}[die]{Notationen}
+ }
, italian = [la]{notazione}[le]{notazioni}
, portuguese = [a]{notação}[as]{notações}
, brazilian = [a]{notação}[as]{notações}
@@ -1847,7 +2040,12 @@
, Crefname = {
, english = {Notation}{Notations}
, french = [La]{notation}[Les]{notations}
- , ngerman = {Notation}{Notationen}
+ , ngerman = { {Notation}{Notationen}
+ , Nominativ = [Die]{Notation}[Die]{Notationen}
+ , Genitiv = [Der]{Notation}[Der]{Notationen}
+ , Dativ = [Der]{Notation}[Den]{Notationen}
+ , Akkusativ = [Die]{Notation}[Die]{Notationen}
+ }
, italian = [La]{notazione}[Le]{notazioni}
, portuguese = [A]{notação}[As]{notações}
, brazilian = [A]{notação}[As]{notações}
@@ -1877,7 +2075,12 @@
, crefname = {
, english = {observation}{observations}
, french = [la]{observation}[les]{observations}
- , ngerman = {Beobachtung}{Beobachtungen}
+ , ngerman = { {Beobachtung}{Beobachtungen}
+ , Nominativ = [die]{Beobachtung}[die]{Beobachtungen}
+ , Genitiv = [der]{Beobachtung}[der]{Beobachtungen}
+ , Dativ = [der]{Beobachtung}[den]{Beobachtungen}
+ , Akkusativ = [die]{Beobachtung}[die]{Beobachtungen}
+ }
, italian = [l']{osservazione}[le]{osservazioni}
, portuguese = [a]{observação}[as]{observações}
, brazilian = [a]{observação}[as]{observações}
@@ -1890,7 +2093,12 @@
, Crefname = {
, english = {Observation}{Observations}
, french = [La]{observation}[Les]{observations}
- , ngerman = {Beobachtung}{Beobachtungen}
+ , ngerman = { {Beobachtung}{Beobachtungen}
+ , Nominativ = [Die]{Beobachtung}[Die]{Beobachtungen}
+ , Genitiv = [Der]{Beobachtung}[Der]{Beobachtungen}
+ , Dativ = [Der]{Beobachtung}[Den]{Beobachtungen}
+ , Akkusativ = [Die]{Beobachtung}[Die]{Beobachtungen}
+ }
, italian = [L']{osservazione}[Le]{osservazioni}
, portuguese = [A]{observação}[As]{observações}
, brazilian = [A]{observação}[As]{observações}
@@ -1920,7 +2128,12 @@
, crefname = {
, english = {postulate}{postulates}
, french = [le]{postulat}[les]{postulats}
- , ngerman = {Postulat}{Postulate}
+ , ngerman = { {Postulat}{Postulate}
+ , Nominativ = [das]{Postulat}[die]{Postulate}
+ , Genitiv = [des]{Postulates}[der]{Postulate}
+ , Dativ = [dem]{Postulat}[den]{Postulaten}
+ , Akkusativ = [das]{Postulat}[die]{Postulate}
+ }
, italian = [il]{postulato}[i]{postulati}
, portuguese = [o]{postulado}[os]{postulados}
, brazilian = [o]{postulado}[os]{postulados}
@@ -1933,7 +2146,12 @@
, Crefname = {
, english = {Postulate}{Postulates}
, french = [Le]{postulat}[Les]{postulats}
- , ngerman = {Postulat}{Postulate}
+ , ngerman = { {Postulat}{Postulate}
+ , Nominativ = [Das]{Postulat}[Die]{Postulate}
+ , Genitiv = [Des]{Postulates}[Der]{Postulate}
+ , Dativ = [Dem]{Postulat}[Den]{Postulaten}
+ , Akkusativ = [Das]{Postulat}[Die]{Postulate}
+ }
, italian = [Il]{postulato}[I]{postulati}
, portuguese = [O]{postulado}[Os]{postulados}
, brazilian = [O]{postulado}[Os]{postulados}
@@ -1963,7 +2181,12 @@
, crefname = {
, english = {problem}{problems}
, french = [le]{problème}[les]{problèmes}
- , ngerman = {Problem}{Probleme}
+ , ngerman = { {Problem}{Probleme}
+ , Nominativ = [das]{Problem}[die]{Probleme}
+ , Genitiv = [des]{Problems}[der]{Probleme}
+ , Dativ = [dem]{Problem}[den]{Problemen}
+ , Akkusativ = [das]{Problem}[die]{Probleme}
+ }
, italian = [il]{problema}[i]{problemi}
, portuguese = [o]{problema}[os]{problemas}
, brazilian = [o]{problema}[os]{problemas}
@@ -1976,7 +2199,12 @@
, Crefname = {
, english = {Problem}{Problems}
, french = [Le]{problème}[Les]{problèmes}
- , ngerman = {Problem}{Probleme}
+ , ngerman = { {Problem}{Probleme}
+ , Nominativ = [Das]{Problem}[Die]{Probleme}
+ , Genitiv = [Des]{Problems}[Der]{Probleme}
+ , Dativ = [Dem]{Problem}[Den]{Problemen}
+ , Akkusativ = [Das]{Problem}[Die]{Probleme}
+ }
, italian = [Il]{problema}[I]{problemi}
, portuguese = [O]{problema}[Os]{problemas}
, brazilian = [O]{problema}[Os]{problemas}
@@ -2006,7 +2234,12 @@
, crefname = {
, english = {property}{properties}
, french = [la]{propriété}[les]{propriétés}
- , ngerman = {Eigenschaft}{Eigenschaften}
+ , ngerman = { {Eigenschaft}{Eigenschaften}
+ , Nominativ = [die]{Eigenschaft}[die]{Eigenschaften}
+ , Genitiv = [der]{Eigenschaft}[der]{Eigenschaften}
+ , Dativ = [der]{Eigenschaft}[den]{Eigenschaften}
+ , Akkusativ = [die]{Eigenschaft}[die]{Eigenschaften}
+ }
, italian = [la]{proprietà}[le]{proprietà}
, portuguese = [a]{propriedade}[as]{propriedades}
, brazilian = [a]{propriedade}[as]{propriedades}
@@ -2019,7 +2252,12 @@
, Crefname = {
, english = {Property}{Properties}
, french = [La]{propriété}[Les]{propriétés}
- , ngerman = {Eigenschaft}{Eigenschaften}
+ , ngerman = { {Eigenschaft}{Eigenschaften}
+ , Nominativ = [Die]{Eigenschaft}[Die]{Eigenschaften}
+ , Genitiv = [Der]{Eigenschaft}[Der]{Eigenschaften}
+ , Dativ = [Der]{Eigenschaft}[Den]{Eigenschaften}
+ , Akkusativ = [Die]{Eigenschaft}[Die]{Eigenschaften}
+ }
, italian = [La]{proprietà}[Le]{proprietà}
, portuguese = [A]{propriedade}[As]{propriedades}
, brazilian = [A]{propriedade}[As]{propriedades}
@@ -2049,7 +2287,12 @@
, crefname = {
, english = {proposition}{propositions}
, french = [la]{proposition}[les]{propositions}
- , ngerman = {Proposition}{Propositionen}
+ , ngerman = { {Proposition}{Propositionen}
+ , Nominativ = [die]{Proposition}[die]{Propositionen}
+ , Genitiv = [der]{Proposition}[der]{Propositionen}
+ , Dativ = [der]{Proposition}[den]{Propositionen}
+ , Akkusativ = [die]{Proposition}[die]{Propositionen}
+ }
, italian = [la]{proposizione}[le]{proposte}
, portuguese = [a]{proposição}[as]{proposições}
, brazilian = [a]{proposição}[as]{proposições}
@@ -2062,7 +2305,12 @@
, Crefname = {
, english = {Proposition}{Propositions}
, french = [La]{proposition}[Les]{propositions}
- , ngerman = {Proposition}{Propositionen}
+ , ngerman = { {Proposition}{Propositionen}
+ , Nominativ = [Die]{Proposition}[Die]{Propositionen}
+ , Genitiv = [Der]{Proposition}[Der]{Propositionen}
+ , Dativ = [Der]{Proposition}[Den]{Propositionen}
+ , Akkusativ = [Die]{Proposition}[Die]{Propositionen}
+ }
, italian = [La]{proposizione}[Le]{proposte}
, portuguese = [A]{proposição}[As]{proposições}
, brazilian = [A]{proposição}[As]{proposições}
@@ -2092,7 +2340,12 @@
, crefname = {
, english = {question}{questions}
, french = [la]{question}[les]{questions}
- , ngerman = {Frage}{Fragen}
+ , ngerman = { {Frage}{Fragen}
+ , Nominativ = [die]{Frage}[die]{Fragen}
+ , Genitiv = [der]{Frage}[der]{Fragen}
+ , Dativ = [der]{Frage}[den]{Fragen}
+ , Akkusativ = [die]{Frage}[die]{Fragen}
+ }
, italian = [la]{domanda}[le]{domande}
, portuguese = [a]{pergunta}[as]{perguntas}
, brazilian = [a]{pergunta}[as]{perguntas}
@@ -2105,7 +2358,12 @@
, Crefname = {
, english = {Question}{Questions}
, french = [La]{question}[Les]{questions}
- , ngerman = {Frage}{Fragen}
+ , ngerman = { {Frage}{Fragen}
+ , Nominativ = [Die]{Frage}[Die]{Fragen}
+ , Genitiv = [Der]{Frage}[Der]{Fragen}
+ , Dativ = [Der]{Frage}[Den]{Fragen}
+ , Akkusativ = [Die]{Frage}[Die]{Fragen}
+ }
, italian = [La]{domanda}[Le]{domande}
, portuguese = [A]{pergunta}[As]{perguntas}
, brazilian = [A]{pergunta}[As]{perguntas}
@@ -2122,7 +2380,7 @@
, heading = {
, english = Recall
, french = Rappel
- , ngerman = Rückruf
+ , ngerman = Erinnerung
, italian = Richiamo
, portuguese = Recordação
, brazilian = Recordação
@@ -2135,7 +2393,12 @@
, crefname = {
, english = {recall}{recalls}
, french = [le]{rappel}[les]{rappels}
- , ngerman = {Rückruf}{Rückrufe}
+ , ngerman = { {Erinnerung}{Erinnerungen}
+ , Nominativ = [die]{Erinnerung}[die]{Erinnerungen}
+ , Genitiv = [der]{Erinnerung}[der]{Erinnerungen}
+ , Dativ = [der]{Erinnerung}[den]{Erinnerungen}
+ , Akkusativ = [die]{Erinnerung}[die]{Erinnerungen}
+ }
, italian = [il]{richiamo}[i]{richiami}
, portuguese = [a]{recordação}[as]{recordações}
, brazilian = [a]{recordação}[as]{recordações}
@@ -2148,7 +2411,12 @@
, Crefname = {
, english = {Recall}{Recalls}
, french = [Le]{rappel}[Les]{rappels}
- , ngerman = {Rückruf}{Rückrufe}
+ , ngerman = { {Erinnerung}{Erinnerungen}
+ , Nominativ = [Die]{Erinnerung}[Die]{Erinnerungen}
+ , Genitiv = [Der]{Erinnerung}[Der]{Erinnerungen}
+ , Dativ = [Der]{Erinnerung}[Den]{Erinnerungen}
+ , Akkusativ = [Die]{Erinnerung}[Die]{Erinnerungen}
+ }
, italian = [Il]{richiamo}[I]{richiami}
, portuguese = [A]{recordação}[As]{recordações}
, brazilian = [A]{recordação}[As]{recordações}
@@ -2178,7 +2446,12 @@
, crefname = {
, english = {remark}{remarks}
, french = [la]{remarque}[les]{remarques}
- , ngerman = {Bemerkung}{Bemerkungen}
+ , ngerman = { {Bemerkung}{Bemerkungen}
+ , Nominativ = [die]{Bemerkung}[die]{Bemerkungen}
+ , Genitiv = [der]{Bemerkung}[der]{Bemerkungen}
+ , Dativ = [der]{Bemerkung}[den]{Bemerkungen}
+ , Akkusativ = [die]{Bemerkung}[die]{Bemerkungen}
+ }
, italian = [il]{commento}[i]{commenti}
, portuguese = [o]{comentário}[os]{comentários}
, brazilian = [o]{comentário}[os]{comentários}
@@ -2191,7 +2464,12 @@
, Crefname = {
, english = {Remark}{Remarks}
, french = [La]{remarque}[Les]{remarques}
- , ngerman = {Bemerkung}{Bemerkungen}
+ , ngerman = { {Bemerkung}{Bemerkungen}
+ , Nominativ = [Die]{Bemerkung}[Die]{Bemerkungen}
+ , Genitiv = [Der]{Bemerkung}[Der]{Bemerkungen}
+ , Dativ = [Der]{Bemerkung}[Den]{Bemerkungen}
+ , Akkusativ = [Die]{Bemerkung}[Die]{Bemerkungen}
+ }
, italian = [Il]{commento}[I]{commenti}
, portuguese = [O]{comentário}[Os]{comentários}
, brazilian = [O]{comentário}[Os]{comentários}
@@ -2221,7 +2499,12 @@
, crefname = {
, english = {theorem}{theorems}
, french = [le]{théorème}[les]{théorèmes}
- , ngerman = {Satz}{Sätze}
+ , ngerman = { {Satz}{Sätze}
+ , Nominativ = [der]{Satz}[die]{Sätze}
+ , Genitiv = [des]{Satzes}[der]{Sätze}
+ , Dativ = [dem]{Satz}[den]{Sätzen}
+ , Akkusativ = [den]{Satz}[die]{Sätze}
+ }
, italian = [il]{teorema}[i]{teoremi}
, portuguese = [o]{teorema}[os]{teoremas}
, brazilian = [o]{teorema}[os]{teoremas}
@@ -2234,7 +2517,12 @@
, Crefname = {
, english = {Theorem}{Theorems}
, french = [Le]{théorème}[Les]{théorèmes}
- , ngerman = {Satz}{Sätze}
+ , ngerman = { {Satz}{Sätze}
+ , Nominativ = [Der]{Satz}[Die]{Sätze}
+ , Genitiv = [Des]{Satzes}[Der]{Sätze}
+ , Dativ = [Dem]{Satz}[Den]{Sätzen}
+ , Akkusativ = [Den]{Satz}[Die]{Sätze}
+ }
, italian = [Il]{teorema}[I]{teoremi}
, portuguese = [O]{teorema}[Os]{teoremas}
, brazilian = [O]{teorema}[Os]{teoremas}
diff --git a/macros/latex/contrib/crefthe/crefthe-doc.pdf b/macros/latex/contrib/crefthe/crefthe-doc.pdf
index 3cc6dce323..8731eb2d97 100644
--- a/macros/latex/contrib/crefthe/crefthe-doc.pdf
+++ b/macros/latex/contrib/crefthe/crefthe-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/crefthe/crefthe-doc.tex b/macros/latex/contrib/crefthe/crefthe-doc.tex
index 82d7460683..904cb5eee7 100644
--- a/macros/latex/contrib/crefthe/crefthe-doc.tex
+++ b/macros/latex/contrib/crefthe/crefthe-doc.tex
@@ -117,7 +117,7 @@
\begin{document}
-\def\PackageVersion{2023/07/22}
+\def\PackageVersion{2023/07/23}
\title{\crefthepackage{}\\\smallskip\itshape Cross referencing with proper definite articles}
\author{Jinwen XU}
@@ -133,7 +133,7 @@
\section{The motivation}
-By default, with \textsf{cleveref}'s \lstinline|\cref| to reference theorem-like environments, the names do not contain definite articles. While this might be acceptable for English, it is certainly not good enough for languages such as French, Italian, Portuguese, Spanish, etc. --- in these cases there shall be grammatical errors and would give you a strong feeling that it is machine-generated.
+By default, with \textsf{cleveref}'s \lstinline|\cref| to reference theorem-like environments, the names do not contain definite articles. While this might be acceptable for English, it is certainly not good enough for languages such as French, German, Italian, Portuguese, Spanish, etc. --- in these cases there shall be grammatical errors and would give you a strong feeling that it is machine-generated.
However, even if we manually add the definite articles to the names, there would still be other problems. As an example, if we define the French names to be:
@@ -257,38 +257,82 @@ In German, there are four declensions: nominative (\texttt{Nominativ}), genitive
}
\end{code}
-The first line in the configuration is the default set of names when no variant is specified. It is recommended, though not required.
+\begin{tip}
+ The first line in the configuration is the default set of names when no variant is specified. It is recommended, though not required.
+\end{tip}
After this, you may refer to a theorem via
\begin{code}
-\crefthe[(*\meta{prep}*),variant=(*\meta{declension}*)]{(*\meta{label}*)}
+\crefthe[(*\meta{prep}*),(*\commandoption{variant}*)=(*\meta{declension}*)]{(*\meta{label}*)}
\end{code}
You may also use the shortcuts (\texttt{nom.}, \texttt{gen.}, \texttt{dat.} and \texttt{akk.}), such as:
\begin{code}
-\crefthe[(*\meta{prep}*),Nom]{(*\meta{label}*)} \crefthe[(*\meta{prep}*),Nom.]{(*\meta{label}*)}
-\crefthe[(*\meta{prep}*),nom]{(*\meta{label}*)} \crefthe[(*\meta{prep}*),nom.]{(*\meta{label}*)}
+\crefthe[(*\meta{prep}*),(*\commandoption{Nom}*)]{(*\meta{label}*)} \crefthe[(*\meta{prep}*),(*\commandoption{Nom.}*)]{(*\meta{label}*)}
+\crefthe[(*\meta{prep}*),(*\commandoption{nom}*)]{(*\meta{label}*)} \crefthe[(*\meta{prep}*),(*\commandoption{nom.}*)]{(*\meta{label}*)}
\end{code}
These four are all equivalent and you may choose one to use according to your preference.
+Article contractions are by default enabled for German, but if you don't want this, you may use the package option \packageoption{disable german article contractions}.
+
+\section{Using abbreviation form}
+
+There is another usage of \lstinline|\crefthevariantname|: setting the abbreviation form. This allows you to use both the full form and the abbreviation form in the same document. For example, you may set
+
+\begin{code}
+\crefthevariantname{theorem}
+ {
+ {theorem}{theorems}
+ , abbr. = {th.}{ths.}
+ }
+\end{code}
+
+Then, when referencing, you can use the command option \commandoption{abbr.} to enable the abbreviation form:
+
+\begin{code}
+\crefthe[(*\commandoption{abbr.}*)]{(*\meta{label}*)}
+\end{code}
+
\section{Regarding the upper and lower cases}
-As in \textsf{cleveref}, these commands have corresponding uppercased version: \lstinline|\Crefthename|,\linebreak \lstinline|\Crefthe|, \lstinline|\nameCrefthe| and \lstinline|\nameCrefsthe|, similar to \lstinline|\Crefname|, \lstinline|\Cref|, \lstinline|\nameCref|\linebreak and \lstinline|\nameCrefs|, reserved for using at the beginning of a sentence. \lstinline|\Crefthe| (and the name-only relatives) can handle case changing automatically: for example, with \lstinline|\Crefthe[À]{thm1,thm2,prop3}|, you will get something like
+As in \textsf{cleveref}, these commands have corresponding uppercased version: \lstinline|\Crefthename|,\linebreak \lstinline|\Crefthe|, \lstinline|\nameCrefthe| and \lstinline|\nameCrefsthe|, similar to \lstinline|\Crefname|, \lstinline|\Cref|, \lstinline|\nameCref|\linebreak and \lstinline|\nameCrefs|, reserved for using at the beginning of a sentence. For languages with declensions, such as German, there is also a \lstinline|\Crefthevariantname|, whose usage is similar to the \lstinline|\crefthevariantname| introduced above.
+
+\lstinline|\Crefthe| (and the name-only relatives) can handle case changing automatically: for example, with \lstinline|\Crefthe[À]{thm1,thm2,prop3}|, you will get something like
\begin{demo}
\textbf{Aux} théorèmes 1 et 2 et \textbf{à la} proposition 3
\end{demo}
-Of course you will have to define the \lstinline|\Crefthename|s separately, for example as:
+Of course, you would have to define the \lstinline|\Crefthename|s separately, for example as:
\begin{code}
\Crefthename{theorem}[Le]{théorème}[Les]{théorèmes}
\Crefthename{proposition}[La]{proposition}[Les]{propositions}
\end{code}
+\section{On the coordination of gender and number}
+
+In many languages, adjectives and verbs need to be properly inflected for the gender and singular or plural of the noun. Take French as example, you may see the following expressions:
+\begin{itemize}
+ \item La proposition précédent\textbf{e}/suivant\textbf{e}... (The previous/next proposition...)
+ \item La proposition est illustré\textbf{e} par... (The proposition is illustrated by...)
+\end{itemize}
+Thus if you later decide to change this proposition (feminine) into a theorem (masculine), you would have to modify the adjectives and verbs accordingly. Similar things happens in many other languages, and it is not quite realistic to fully automate such modifications.
+
+The name-only relatives \lstinline|\namecrefthe|, \lstinline|\nameCrefthe| etc. are designed for this purpose. They do not automatically solve these kinds of problems, but you may later search for the \meta{label} of the environment that changes, and modify the surrounding context manually --- in other words, these commands serve as recorders: if you write the word like \textquote{theorem} or \textquote{proposition} directly in the text, then later it would be unclear which part of your text needs to be update when the environment itself changes.
+
+There is another case. For example, if you wish to say \textquote{ce théorème} (\textquote{this theorem}), the pre-defined set of names that contains definite articles would be somewhat redundant. In such situation, you may use the command option \commandoption{noun} to show only the noun:
+
+\begin{code}
+\namecref[(*\commandoption{noun}*)]{(*\meta{label}*)}
+\end{code}
+
+But then of course you shall need to write the word \textquote{Ce/Cet/Cette} (these are all different forms of \textquote{This} in French) by yourself --- and if you later decide to change the type of the environment to which this \meta{label} refers, don't forget to change this word accordingly.
+
+\pagebreak
\section{For writing multi-language documents}
To place hyperlinks at the correct place, \lstinline|\crefthename| touches the corresponding format macro \lstinline|\crefformat| internally, which makes the format language-dependent. If you are writing multi-language documents, you may consider putting \lstinline|\crefthename| inside your language configuration so as to reset it each time you select a new language.
@@ -329,8 +373,8 @@ There are so many people I wish to express my gratitude to during the developmen
\section{Known issues}
\begin{itemize}
\item \crefthepackage{} currently works for French, German, Italian, Portuguese (European and Brazilian) and Spanish --- certainly more languages would be added to this list in the future.
- \item For now, you cannot specify the masculine/masculine/... of words. This means, for instance, that you cannot make the suffix adjective automatically adopted to the word when using \lstinline|\namecref| --- as an example, if you wish to say \textquote{la proposition suivante} (in French), you would have to write the feminine adjective manually. The situation should be improved with the introduction of a new key-value configuration system, which is currently on the todo-list.
- Meanwhile, you may consider the package \textsf{zref-clever}, which has a much more powerful and sophisticated interface for configuring cross referencing.
+ % \item For now, you cannot specify the masculine/masculine/... of words. This means, for instance, that you cannot make the suffix adjective automatically adopted to the word when using \lstinline|\namecref| --- as an example, if you wish to say \textquote{la proposition suivante} (in French), you would have to write the feminine adjective manually. The situation should be improved with the introduction of a new key-value configuration system, which is currently on the todo-list.
+ % Meanwhile, you may consider the package \textsf{zref-clever}, which has a much more powerful and sophisticated interface for configuring cross referencing.
\item The names of theorem-like environments are not provided here, you need to define them by yourself. However, users are encouraged to use the \ProjLib{} toolkit (more specifically, the internal package \textsf{create-theorem}), which already handles everything for you.
\end{itemize}
diff --git a/macros/latex/contrib/crefthe/crefthe.sty b/macros/latex/contrib/crefthe/crefthe.sty
index e1ce211bb6..4097b0aefc 100644
--- a/macros/latex/contrib/crefthe/crefthe.sty
+++ b/macros/latex/contrib/crefthe/crefthe.sty
@@ -12,7 +12,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplPackage
{crefthe}
- {2023/07/22} {}
+ {2023/07/23} {}
{Cross referencing with proper definite articles}
\keys_define:nn { crefthe }
@@ -21,6 +21,12 @@
, overwrite .initial:n = { false }
, nameinlink .bool_set:N = \l__crefthe_nameinlink_bool
, nameinlink .initial:n = { false }
+
+ , disable-german-article-contractions .bool_set:N = \l__crefthe_disable_contractions_for_german_bool
+ , disable-german-article-contractions .initial:n = { false }
+ , disable~german~article~contractions .bool_set:N = \l__crefthe_disable_contractions_for_german_bool
+ , disable german article contractions .bool_set:N = \l__crefthe_disable_contractions_for_german_bool
+
, unknown .code:n =
{ \PassOptionsToPackage { \CurrentOption } { cleveref } }
}
@@ -89,6 +95,8 @@
\keys_define:nn { crefthe-setting }
{
+ , noun .code:n = { \RenewDocumentCommand \crefthemark { m } {} }
+
, variant .tl_set:N = \l__crefthe_variant_tl
% , nom .meta:n = { variant = Nominativ }
@@ -125,6 +133,8 @@
% #5 = label
% #6 = original command, such as \crefthe_cref_original:w or \crefthe_Cref_original:w
{
+ \group_begin:
+
\tl_set:Nn \l__crefthe_variant_tl {}
\bool_gset_false:N \g__crefthe_has_prep_bool
\tl_set:Nn \l__crefthe_prep_tl {}
@@ -137,6 +147,11 @@
\bool_set_false:N \l__crefthe_variant_matched_bool
\str_if_in:nnF { ##1 } { = }
{% for keys without values
+ \str_case:nnT { ##1 }
+ {
+ { abbr } { \tl_set:Nn \l__crefthe_variant_tl { abbr. } }
+ { abbr. } { \tl_set:Nn \l__crefthe_variant_tl { abbr. } }
+ } { \bool_set_true:N \l__crefthe_variant_matched_bool }
\str_if_eq:VnT \languagename { ngerman }
{
\str_case:nnT { ##1 }
@@ -182,12 +197,12 @@
}
}
}
- \group_begin:
\bool_if:NTF #1
{ #6 * { #5 } }
{ #6 { #5 } }
- \group_end:
\tl_gclear:N \l__crefthe_prep_each_tl
+
+ \group_end:
}
% \__crefthe_prep_mode: defines the default mode for supported languages
@@ -493,25 +508,30 @@
{ De~le } { Du }
{ De~les } { Des }
}
-\tl_const:Nn \c_crefthe_contraction_rule_ngerman_tl
- {
- { an~dem } { am }
- { an~das } { ans }
- { bei~dem } { beim }
- { in~dem } { im }
- { in~das } { ins }
- { von~dem } { vom }
- { zu~dem } { zum }
- { zu~der } { zur }
- { An~dem } { Am }
- { An~das } { Ans }
- { Bei~dem } { Beim }
- { In~dem } { Im }
- { In~das } { Ins }
- { Von~dem } { Vom }
- { Zu~dem } { Zum }
- { Zu~der } { Zur }
+
+\bool_if:NF \l__crefthe_disable_contractions_for_german_bool
+ {
+ \tl_const:Nn \c_crefthe_contraction_rule_ngerman_tl
+ {
+ { an~dem } { am }
+ { an~das } { ans }
+ { bei~dem } { beim }
+ { in~dem } { im }
+ { in~das } { ins }
+ { von~dem } { vom }
+ { zu~dem } { zum }
+ { zu~der } { zur }
+ { An~dem } { Am }
+ { An~das } { Ans }
+ { Bei~dem } { Beim }
+ { In~dem } { Im }
+ { In~das } { Ins }
+ { Von~dem } { Vom }
+ { Zu~dem } { Zum }
+ { Zu~der } { Zur }
+ }
}
+
\tl_const:Nn \c_crefthe_contraction_rule_italian_tl
{
{ a~il } { al }
@@ -585,6 +605,7 @@
{ Su~gli } { Sugli }
{ Su~le } { Sulle }
}
+
\tl_const:Nn \c_crefthe_contraction_rule_spanish_tl
{
{ a~el } { al }
@@ -592,6 +613,7 @@
{ A~el } { Al }
{ De~el } { Del }
}
+
\tl_const:Nn \c_crefthe_contraction_rule_portuguese_tl
{
{ a~o } { ao }
diff --git a/macros/luatex/generic/lutabulartools/README.md b/macros/luatex/generic/lutabulartools/README.md
index 51055a89e5..ee3381533b 100644
--- a/macros/luatex/generic/lutabulartools/README.md
+++ b/macros/luatex/generic/lutabulartools/README.md
@@ -7,7 +7,7 @@ macro-enabled spreadsheet named "LaTeX-Tabular-Generator.xlsm" to help make tabl
# License (MIT)
-Copyright (C) 2021-2022 Kale Ewasiuk
+Copyright (C) 2021-2023 Kale Ewasiuk
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/macros/luatex/generic/lutabulartools/lutabulartools.lua b/macros/luatex/generic/lutabulartools/lutabulartools.lua
index 3ea2151834..92ce236715 100644
--- a/macros/luatex/generic/lutabulartools/lutabulartools.lua
+++ b/macros/luatex/generic/lutabulartools/lutabulartools.lua
@@ -1,6 +1,6 @@
--% Kale Ewasiuk (kalekje@gmail.com)
---% 2023-07-18
---% Copyright (C) 2021-2022 Kale Ewasiuk
+--% 2023-07-22
+--% Copyright (C) 2021-2023 Kale Ewasiuk
--%
--% Permission is hereby granted, free of charge, to any person obtaining a copy
--% of this software and associated documentation files (the "Software"), to deal
@@ -23,15 +23,16 @@
--% OR OTHER DEALINGS IN THE SOFTWARE.
-local pl = _G['penlight'] or _G['pl'] -- penlight for this namespace is pl
-if (__PL_EXTRAS__ == nil) or (__PENLIGHT__ == nil) then
- tex.sprint('\\PackageError{lutabulartools}{penlight package with extras (or extrasglobals) option must be loaded before this package}{}')
- tex.print('\\stop')
-end
-local T = pl.tablex
+
local lutabt = {}
+local pl = penlight
+local T = pl.tablex
+
+lutabt.luakeys = require'luakeys'() -- note: YAMLvars.sty will have checked existence of this already
+
+
lutabt.tablelevel = 0
lutabt.debug = false
@@ -98,7 +99,7 @@ end
function lutabt.set_tabular(sett)
- sett = luakeys.parse(sett)
+ sett = lutabt.luakeys.parse(sett)
local trim = ''
for k, v in pairs(sett) do
if k == 'tbrule' then
@@ -435,7 +436,7 @@ function lutabt.mrX.off()
end
function lutabt.mrX.set_midruleX(new_sett, def)
- lutabt.mrX.settings = T.update(lutabt.mrX.settings, T.union(lutabt.mrX.resets, luakeys.parse(new_sett)))
+ lutabt.mrX.settings = T.update(lutabt.mrX.settings, T.union(lutabt.mrX.resets, lutabt.luakeys.parse(new_sett)))
lutabt.debugtalk(lutabt.mrX.settings, 'new midruleX settings')
if lutabt.mrX.settings.head ~= nil then
lutabt.mrX.settings.cntr = -1*tonumber(lutabt.mrX.settings.head)
diff --git a/macros/luatex/generic/lutabulartools/lutabulartools.pdf b/macros/luatex/generic/lutabulartools/lutabulartools.pdf
index 6443b2873a..eab8203760 100644
--- a/macros/luatex/generic/lutabulartools/lutabulartools.pdf
+++ b/macros/luatex/generic/lutabulartools/lutabulartools.pdf
Binary files differ
diff --git a/macros/luatex/generic/lutabulartools/lutabulartools.sty b/macros/luatex/generic/lutabulartools/lutabulartools.sty
index c1e74802c0..ee36589cd5 100644
--- a/macros/luatex/generic/lutabulartools/lutabulartools.sty
+++ b/macros/luatex/generic/lutabulartools/lutabulartools.sty
@@ -1,6 +1,6 @@
% Kale Ewasiuk (kalekje@gmail.com)
-% 2023-07-18
-% Copyright (C) 2021-2022 Kale Ewasiuk
+% 2023-07-22
+% Copyright (C) 2021-2023 Kale Ewasiuk
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the "Software"), to deal
@@ -23,7 +23,7 @@
% OR OTHER DEALINGS IN THE SOFTWARE.
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{lutabulartools}[2023-07-18]
+\ProvidesPackage{lutabulartools}[2023-07-22]
\RequirePackage{booktabs}
\RequirePackage{multirow}
@@ -34,7 +34,7 @@
\RequirePackage{xcolor}
\RequirePackage{colortbl}
\RequirePackage{luacode}
-\RequirePackage{penlight} % NEEDED, extras option must be used so penlight should be loaded before this...
+\RequirePackage{penlightplus} % NEEDED, extras option must be used so penlight should be loaded before this...
\luadirect{lutabt = require('lutabulartools')}
diff --git a/macros/luatex/generic/lutabulartools/lutabulartools.tex b/macros/luatex/generic/lutabulartools/lutabulartools.tex
index 9be8dbd330..b9a4c96254 100644
--- a/macros/luatex/generic/lutabulartools/lutabulartools.tex
+++ b/macros/luatex/generic/lutabulartools/lutabulartools.tex
@@ -1,6 +1,6 @@
% Kale Ewasiuk (kalekje@gmail.com)
-% 2023-07-18
-% Copyright (C) 2021-2022 Kale Ewasiuk
+% 2023-07-22
+% Copyright (C) 2021-2023 Kale Ewasiuk
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the "Software"), to deal
@@ -67,7 +67,7 @@
\usepackage{ltxtable}
\usepackage{longtable}
-\usepackage[pl,extras]{penlight}
+\usepackage{penlightplus}
\RequirePackage{lutabulartools}
@@ -100,7 +100,7 @@ so if you have specific settings for these packages, load the \cmd{lutabulartool
{xcolor},
{colortbl},
{luacode},
-{penlight}}.
+{penlightplus}}.
\section{\texttt{\textbackslash settabular}}
@@ -455,6 +455,14 @@ Here's an example with long table. Notice the gray rules reliably appear 3 rows
%\LTXtable{\linewidth}{ltxexample}
-
+\begin{tabular}{c}
+ \\
+ \\
+ \\
+ \\
+ \\
+ \\
+ \\
+\end{tabular}
\end{document}
diff --git a/macros/luatex/generic/penlight/README.md b/macros/luatex/generic/penlight/README.md
index ca66c41b74..a80a51c22e 100644
--- a/macros/luatex/generic/penlight/README.md
+++ b/macros/luatex/generic/penlight/README.md
@@ -1,11 +1,11 @@
# penlight -- Lua libraries for use in LuaLaTeX
-This LuaLaTeX package provides a wrapper to use the [penlight](https://github.com/lunarmodules/Penlight) Lua libraries with LuaLaTeX, with some extra functionality added.
+This LuaLaTeX package provides a wrapper to use the [penlight](https://github.com/lunarmodules/Penlight) Lua libraries with LuaLaTeX.
# License
-Copyright (C) 2021-2022 Kale Ewasiuk
+Copyright (C) 2021-2023 Kale Ewasiuk
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/macros/luatex/generic/penlight/penlight.pdf b/macros/luatex/generic/penlight/penlight.pdf
index a063e8922a..3932e74389 100644
--- a/macros/luatex/generic/penlight/penlight.pdf
+++ b/macros/luatex/generic/penlight/penlight.pdf
Binary files differ
diff --git a/macros/luatex/generic/penlight/penlight.sty b/macros/luatex/generic/penlight/penlight.sty
index 4f5900e3b8..7a7c94b6a7 100644
--- a/macros/luatex/generic/penlight/penlight.sty
+++ b/macros/luatex/generic/penlight/penlight.sty
@@ -1,6 +1,6 @@
% Kale Ewasiuk (kalekje@gmail.com)
-% 2023-07-18
-% Copyright (C) 2021-2022 Kale Ewasiuk
+% 2023-07-22
+% Copyright (C) 2021-2023 Kale Ewasiuk
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the "Software"), to deal
@@ -22,124 +22,15 @@
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
% OR OTHER DEALINGS IN THE SOFTWARE.
-\ProvidesPackage{penlight}[2023-07-18]
+\ProvidesPackage{penlight}[2023-07-22]
-\RequirePackage{luacode}
+\directlua{penlight = require'penlight'}
-\IfFileExists{luakeys.lua}{}{\PackageError{penlight}{This package requires that luakeys be installed}{}}
+\DeclareOption{pl}{\directlua{pl = penlight}}
-
-\DeclareOption{pl}{\luadirect{
- pl = require'penlight'
- __PENLIGHT__ = 'pl'
-}}
-\DeclareOption{penlight}{\luadirect{
- penlight = require'penlight'
- __PENLIGHT__ = 'penlight'
-}}
-
-
-\DeclareOption{stringx}{\luadirect{_G[__PENLIGHT__].stringx.import()}}
-\DeclareOption{format}{\luadirect{_G[__PENLIGHT__].stringx.format_operator()}}
-\DeclareOption{func}{\luadirect{_G[__PENLIGHT__].utils.import(__PENLIGHT__..'.func')}}
-\DeclareOption{extras}{\luadirect{require'penlightextras'}
- \gdef\penlight@loadextras{}
-}
-\DeclareOption{extrasglobals}{\luadirect{
- __PL_GLOBALS__ = true
- require'penlightextras'
- }
- \gdef\penlight@loadextras{}
-}
+\DeclareOption{stringx}{\directlua{penlight.stringx.import()}}
+\DeclareOption{format}{\directlua{penlight.stringx.format_operator()}}
+\DeclareOption{func}{\directlua{penlight.utils.import(penlight.func)}}
+\DeclareOption{import}{\ExecuteOptions{stringx,format,func}}
\ProcessOptions*\relax
-
-\luadirect{
-if __PENLIGHT__ == nil then
- tex.sprint('\\PackageError{penlight}{"penlight" or "pl" option must be passed to penlight as the first option}{}')
-end
-}
-
-\ifdefined\penlight@loadextras
-
-\global\newcommand{\writePDFmetadata}{\luadirect{_G[__PENLIGHT__].tex.writePDFmetadata()}}
-
-\NewDocumentCommand{\writePDFmetadatakv}{ s m }{
-\IfBooleanTF{#1}{% if *, overwrite everything
- \luadirect{
- __PDFmetadata__ = luakeys.parse(\luastring{#2})
- _G[__PENLIGHT__].tex.writePDFmetadata()
- }}{
- \luadirect{
- __PDFmetadata__ = __PDFmetadata__ or {}
- _G[__PENLIGHT__].tablex.update(__PDFmetadata__, luakeys.parse(\luastring{#2}))
- _G[__PENLIGHT__].tex.writePDFmetadata()
- }}
-}
-
-
-\gdef\luastringT#1{\luastring{\unexpanded\expandafter\expandafter\expandafter{#1}}} % expand luastring twice
-\global\let\luastringF\luastring % fully expanded luastring
-
-% allow control over expansion of arguments to a latex function
-\NewDocumentCommand{\MakeluastringCommands}{O{} m }{% #1 the desired commands #2 defaults
- \luadirect{_G[__PENLIGHT__].tex.aliasluastring(\luastring{#2},\luastring{#1})}%
-}
-
-\NewDocumentCommand{\splitToComma}{ O{nn} m m }{%
- \MakeluastringCommands[nn]{#1}%
- \luadirect{_G[__PENLIGHT__].tex.split2comma(\plluastringA{#2},\plluastringB{#3})}%
-}
-
-\NewDocumentCommand{\splitToItems}{ O{NN} m m }{%
- \MakeluastringCommands[nn]{#1}%
- \luadirect{_G[__PENLIGHT__].tex.split2items(\plluastringA{#2},\plluastringB{#3})}%
-}
-
-
-%
-%
-%\NewDocumentCommand{\tblnew}{m}{\luadirect{
-% _G[\luastring{#1}] = {}
-%}}
-%
-%\NewDocumentCommand{\tblfrkv}{m m O{} }{\luadirect{
-% _G[\luastring{#1}] = luakeys.parse(\luastring{#2}, luakeys.parse(\luastring{#3}))
-%}}
-%
-%\NewDocumentCommand{\tblset}{m m m}{\luadirect{
-% _G[\luastring{#1}][\luastring{#2}] = \luastring{#3}
-%}}
-%
-%\NewDocumentCommand{\tblget}{m m}{\luadirect{
-% tex.sprint(tostring(_G[\luastring{#1}][\luastring{#2}]))
-%}}
-%
-%\NewDocumentCommand{\tblidx}{m m}{\luadirect{
-% tex.sprint(tostring(_G[\luastring{#1}][#2]))
-%}}
-%
-%
-%\NewDocumentCommand{\tblupd}{ m m}{\luadirect{
-% _G[__PENLIGHT__].tablex.update(_G[\luastring{#1}], _G[\luastring{#2}])
-%}}
-%
-%\NewDocumentCommand{\tblupdkv}{ m m }{\luadirect{
-% _G[__PENLIGHT__].tablex.update(_G[\luastring{#1}], luakeys.parse(\luastring{#2}))
-%}}
-%
-%% todo need a get table function. If blank is passed, the last table referenced is used.
-%\NewDocumentCommand{\tblfrkvII}{ m m m }{\luadirect{
-% _G[\luastring{#1}] = _G[__PENLIGHT__].tablex.update(luakeys.parse(\luastring{#2}), luakeys.parse(\luastring{#3}))
-%}}
-
-
-%\NewDocumentCommand{\tbldo}{m m O{} }{\luadirect{
-% % tex.sprint(tostring(_G[\luastring{#1}][#2]))
-% % todo allow one to use pl tablex function here,
-% % {tbl}{update}[arg1][arg2]
-% _G[__PENLIGHT__].tablex[\luastring[#1]](_G[\luastring{}], _G[\luastring{}])
-%}}
-
-
-\else\fi \ No newline at end of file
diff --git a/macros/luatex/generic/penlight/penlight.tex b/macros/luatex/generic/penlight/penlight.tex
index edba4933e8..93d7bdbfc3 100644
--- a/macros/luatex/generic/penlight/penlight.tex
+++ b/macros/luatex/generic/penlight/penlight.tex
@@ -1,6 +1,6 @@
% Kale Ewasiuk (kalekje@gmail.com)
-% 2023-07-18
-% Copyright (C) 2021-2022 Kale Ewasiuk
+% 2023-07-22
+% Copyright (C) 2021-2023 Kale Ewasiuk
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the "Software"), to deal
@@ -53,207 +53,56 @@
\date{\today}
-\RequirePackage[pl,extras]{penlight}
+\RequirePackage{luacode}
+\RequirePackage[pl,import]{penlight}
\title{penlight}
\subtitle{Lua libraries for use in LuaLaTeX}
\begin{document}
-%{\Huge todo add split to text example with ltxexample\\reference the exact version of penlight used in this library. consider no globals by default\\ COVERT existing examples to extras globals, document hyperref}
\maketitle
- Documentation for the Lua library this includes can be found here:\\
- \mbox{\url{https://lunarmodules.github.io/Penlight}}
- \\ This package uses version \cmd{1.13.1}
+ Documentation for Penlight can be found here:\\
+\mbox{\url{https://lunarmodules.github.io/Penlight}}
+\\\\ This package uses version \cmd{1.13.1}
- \subsection*{Required Package Option}
- The first option sent to this package MUST be one of: \\
- \texttt{[penlight]} \ \ \ or \ \ \ \texttt{[pl]}.\\
- All Penlight sub-modules are then available under this global variable by either\\
- \texttt{penlight.XYZ} or \texttt{pl.XYZ}
+\subsection*{Importing Penlight from within LaTeX}
+Loading this package runs the Lua code: \texttt{penlight = require'penlight'}
+Other options for the package are:
+\vspace{1em}
-
- \subsection*{texlua usage}
-If you want to use Penlight (and extras) with the \texttt{texlua} intrepreter (no document made, only for Lua files, useful for testing),
-you can access it by setting \cmd{__SKIP_TEX__ = true} and adding the package to path. For example:
- \begin{verbatim}
-package.path = package.path .. ';'..'path/to/texmf/tex/latex/penlight/?.lua'
-penlight = require'penlight'
--- below is optional
-__SKIP_TEX__ = true --only required if you want to use
- --penlightextras without a LaTeX run
-__PL_GLOBALS__ = true -- optional, include global definitions
-__SKIP_LUAKEYS__ = true -- luakeys is laoded in penlightextras be default, you may skip it with this
-require'penlightextras'
-\end{verbatim}
+\hspace*{-6ex}\begin{tabular}{lp{4.8in}}
+\texttt{pl} & adds the alias \texttt{pl = penlight}\\\\
+\texttt{stringx} & will import additional string functions into the string meta table via\\
+ & \texttt{require('penlight.stringx').import()}\\\\
+\texttt{format} & allows the \% operator for Python-style string formatting via\\
+ & \texttt{require('penlight.stringx').format\_operator()}\\\\
+\texttt{func} & allows placeholder expressions eg. \texttt{\_1+1} to be used via\\
+ & \texttt{penlight.utils.import(penlight.func)}\\\\
+\texttt{import} & does the above three\\
+\end{tabular}
-\pagebreak
+An example usage is: \cmd{\usepackage[pl,import]{penlight}}
-\subsection*{Additional Package Options}
+%https://lunarmodules.github.io/Penlight/libraries/pl.func.html
+%https://lunarmodules.github.io/Penlight/libraries/pl.stringx.html
- \noindent
- \hspace*{-6ex}\begin{tabular}{lp{4.8in}}
- \texttt{stringx} & will import additional string functions into the string meta table.\\
- & this will be ran in pre-amble: \texttt{require('pl.stringx').import()}\\
- \texttt{format} & allows \% operator for Python-style string formating\\
- & this will be ran in pre-amble: \texttt{require('pl.stringx').format\_operator()}\\
- & \mbox{\url{https://lunarmodules.github.io/Penlight/libraries/pl.stringx.html#format_operator}}
- \\
- \texttt{func} & allows placehold expressions eg. \texttt{\_1+1} to be used \\
- & this will be ran in pre-amble: \texttt{penlight.utils.import('pl.func')}\\
- & \url{https://lunarmodules.github.io/Penlight/libraries/pl.func}\\
- \texttt{extras} & does the above three (\cmd{func,stringx,format}); adds some additional functions to \cmd{penlight} module; and adds the \cmd{pl.tex} sub-module.\\
- \texttt{extrasglobals} & does the above \texttt{extras} but makes many of the functions global variables as well.
- \end{tabular}
+\subsection*{Importing Penlight from within Lua}
+Instead of using penlight.sty, you can simply:\\
+\texttt{penlight = require'penlight'} ~~~ from within Lua.
+\newpage
+\section*{}
+This package used to contain \cmd{penlightextras.lua}.
+That functionality now belongs to a standalone package named \cmd{penlightplus}.
+\section*{}
+Disclaimer: I am not the author of the Lua Penlight library.
+Penlight is Copyright \textcopyright 2009-2016 Steve Donovan, David Manura.
+The distribution of Penlight used for this library is:
+\url{https://github.com/lunarmodules/penlight}\\\\
+The author of this library has merged all penlight sub-modules into a single file for this distribution.
-
-\subsection*{Extras}
-Note: this option is considered experimental.
-The following global variables are defined:
-
-\llcmd{__SKIP_TEX__} If using the \cmd{penlight} package with \cmd{texlua} (good for troubleshooting), set this global before loading \cmd{penlight}\\
-The gloals flags below are taken care of in the package options:\\
-\llcmd{__PL_}\cmd{GLOBALS__} If using package with \cmd{texlua} and you don't want to set some globals (described in next sections), set this global before to \cmd{true} loading \cmd{penlight}\\
-\cmd{__SKIP_LUAKEYS__}\\
-\cmd{__PL_NO_HYPERREF__}\\
-\cmd{__PL_EXTRAS__} false, 1 or 2\\
-
-\subsubsection*{penlight additions}
-
-Some functionality is added to penlight/lua.
-
-\llcmd{pl.hasval(x)} Python-like boolean testing\\
-\llcmd{COMP'xyz'()} Python-like comprehensions:\\\url{https://lunarmodules.github.io/Penlight/libraries/pl.comprehension.html}\\
-\llcmd{math.mod(n,d)}, \cmd{math.mod2(n)} math modulous\\
-\llcmd{string.}\cmd{totable(s)} string a table of characters\\
-\llcmd{string.}\cmd{delspace(s)} clear spaces from string\\
-\llcmd{pl.}\cmd{char(n)} return letter corresponding to 1=a, 2=b, etc.\\
-\llcmd{pl.}\cmd{Char(n)} return letter corresponding to 1=A, 2=B, etc.\\
-
-\llcmd{pl.utils.}\cmd{filterfiles}\cmd{(dir,filt,rec)} Get files from dir and apply glob-like filters. Set rec to \cmd{true} to include sub directories\\
-
-
-\subsubsection*{A \cmd{pl.tex.} module is added}
-\llcmd{add_bkt}\cmd{_cnt(n), }\cmd{close_bkt_cnt(n), reset_bkt_cnt} functions to keep track of adding curly brackets as strings. \cmd{add} will return \cmd{n} (default 1) \{'s and increment a counter. \cmd{close} will return \cmd{n} \}'s (default will close all brackets) and decrement.\\
-\llcmd{_NumBkts} internal integer for tracking the number of brackets\\
-\llcmd{opencmd(cs)} prints \cmd{\cs}\{ and adds to the bracket counters.\\
-\\
-\llcmd{_xNoValue,}\cmd{_xTrue,_xFalse}: \cmd{xparse} equivalents for commands\\
-\\
-\llcmd{prt(x),prtn(x)} print without or with a newline at end. Tries to help with special characters or numbers printing.\\
-\llcmd{prtl(l),prtt(t)} print a literal string, or table\\
-\llcmd{wrt(x), wrtn(x)} write to log\\
-\llcmd{help_wrt}\cmd{(s1, s2)} pretty-print something to console. S2 is a flag to help you find.\\
-\llcmd{prt_array2d(tt)} pretty print a 2d array\\
-\\
-\llcmd{pkgwarn}\cmd{(pkg, msg1, msg2)} throw a package warning\\
-\llcmd{pkgerror}\cmd{(pkg, msg1, msg2, stop)} throw a package error. If stop is true, immediately ceases compile.\\
-\\
-\llcmd{defcmd}\cmd{(cs, val)} like \cmd{\gdef}\\
-\llcmd{newcmd}\cmd{(cs, val)} like \cmd{\newcommand}\\
-\llcmd{renewcmd}\cmd{(cs, val)} like \cmd{\renewcommand}\\
-\llcmd{prvcmd}\cmd{(cs, val)} like \cmd{\providecommand}\\
-\llcmd{deccmd}\cmd{(cs, dft, overwrite)} declare a command. If \cmd{dft} (default) is \cmd{nil}, \cmd{cs} is set
-to a package warning saying \cmd{'cs' was declared and used in document, but never set}. If \cmd{overwrite}
-is true, it will overwrite an existing command (using \cmd{defcmd}), otherwise, it will throw error like \cmd{newcmd}.\\
-\llcmd{get_ref_info(l)}accesses the \cmd{\r@label} and returns a table\\
-
-
-
-\subsubsection*{global extras}
-If \cmd{extrasglobals} is used and NOT \cmd{extras}, many additional globals are set for shortcuts\\
-All \cmd{pl.tex} modules are made global.\\
-\cmd{pl.hasval}, \cmd{pl.COMP}, \cmd{pl.utils.kpairs}, \cmd{pl.utils.npairs} become globals with the function name.\\
-
-
-
-\subsection*{Macro helpers}
-\cmd{\MakeluastringCommands[def]{spec}} will let \cmd{\plluastring(A|B|C..)} be \cmd{\luastring(N|O|T|F)}
-based on the letters that \cmd{spec} is set to (or \cmd{def} if nothing is provided)
-This is useful if you want to write a command with flexibility on argument expansion.
-The user can specify \cmd{n}, \cmd{o}, \cmd{t}, and \cmd{f} (case insensitve) if they want
-no, once, twice, or full expansion.
-
-% BELOW IS FOR TROUBLESHOOTING ABOVE
-%\def\NOTexp{\ONEexp}
-%\def\ONEexp{\TWOexp}
-%\def\TWOexp{\TREexp}
-%\def\TREexp{Fully expanded}
-%
-%\NewDocumentCommand{\luastringExpTest}{m m}{
-% \MakeluastringCommands{#1}
-% \luadirect{texio.write_nl('VVVVVVVVVVVVVVVVVVVVVVVVVVVVV')}
-% \luadirect{texio.write_nl(\plluastringA{#2}..' | Not')}
-% \luadirect{texio.write_nl(\plluastringB{#2}..' | Once')}
-% \luadirect{texio.write_nl(\plluastringC{#2}..' | Twice')}
-% \luadirect{texio.write_nl(\plluastringD{#2}..' | Full')}
-% \luadirect{texio.write_nl('VVVVVVVVVVVVVVVVVVVVVVVVVVVVV')}
-%}
-%
-%\luastringExpTest{ n o t f }{\NOTexp}
-
-
-
-
-\subsection*{Split stuff}
-Splitting text (or a cmd) into oxford comma format via:
-\cmd{\splitToComma[expansion level]{text}{text to split on}}:
-
-\begin{LTXexample}
-
--\splitToComma{ j doe }{\and}-\\
--\splitToComma{ j doe \and s else }{\and}-\\
--\splitToComma{ j doe \and s else \and a per }{\and}-\\
--\splitToComma{ j doe \and s else \and a per \and f guy}{\and}-
-
-\def\authors{j doe \and s else \and a per \and f guy}
-\splitToComma[o]{\authors}{\and}
-\end{LTXexample}
-
-The expansion level is up to two characters, \cmd{n|o|t|f}, to control teh expasion of each argument.
-
-\begin{LTXexample}
-spliToItems:
-\begin{itemize}
- \splitToItems{kale\and john}{\and}
- \splitToItems{kale -john -someone else}{-}
-\end{itemize}
-\end{LTXexample}
-
-
-
-
-
- \section*{}
- Disclaimer: I am not the author of the Lua Penlight library.
- Penlight is Copyright \textcopyright 2009-2016 Steve Donovan, David Manura.
- The distribution of Penlight used for this library is:
-\url{https://github.com/lunarmodules/penlight}\\
- The author of this library has merged all Lua sub-modules into one file for this package.
-
-% \tblfrkv{tbl_def}{kale=cool,paul=gay,craig=fun}
-% \tblfrkv{tbl}{kale,paul=gay} %[naked_as_value=true]
-%
-% \tblget{tbl}{kale}%
-% \tblget{tbl}{paul}%
-% \tblget{tbl}{craig}%
-%
-% \tblupd{tbl_def}{tbl}%
-%
-% \tblfrkvII{tbl}{kale=cool,paul=gay,craig=fun}{kale=weak,paul=sad}
-% \tblget{tbl}{craig}%
-% \tblget{tbl}{paul}%
-% \tblget{tbl}{kale}%
-%
-% \NewDocumentCommand{\THINg}{ O{} m}{%
-% \tblfrkvII{setti}{color=red,size=small}{#1} % make settings and update based on [arg=]
-% {\color{\tblget{setti}{color}}\tblget{setti}{size} #2}
-% }
-%
-% \THINg[color=blue,size=tiny]{Kale}
-
\end{document} \ No newline at end of file
diff --git a/macros/luatex/generic/penlightplus/README.md b/macros/luatex/generic/penlightplus/README.md
new file mode 100644
index 0000000000..cc80374347
--- /dev/null
+++ b/macros/luatex/generic/penlightplus/README.md
@@ -0,0 +1,28 @@
+# penlightplus
+
+Additions to the Penlight Lua Libraries.
+
+
+# License
+
+Copyright (C) 2021-2023 Kale Ewasiuk
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
+ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
+OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/macros/luatex/generic/penlight/penlightextras.lua b/macros/luatex/generic/penlightplus/penlightplus.lua
index 5f5f76aefb..ffdbe89bc5 100644
--- a/macros/luatex/generic/penlight/penlightextras.lua
+++ b/macros/luatex/generic/penlightplus/penlightplus.lua
@@ -1,6 +1,6 @@
--% Kale Ewasiuk (kalekje@gmail.com)
---% 2023-07-18
---% Copyright (C) 2021-2022 Kale Ewasiuk
+--% 2023-07-22
+--% Copyright (C) 2021-2023 Kale Ewasiuk
--%
--% Permission is hereby granted, free of charge, to any person obtaining a copy
--% of this software and associated documentation files (the "Software"), to deal
@@ -22,37 +22,29 @@
--% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
--% OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+
+__PL_PLUS__ = true
__PL_SKIP_TEX__ = __PL_SKIP_TEX__ or false --if declared true before here, it will use regular print functions
-- (for troubleshooting with texlua instead of actual use in lua latex)
-__PL_SKIP_LUAKEYS__ = __PL_SKIP_LUAKEYS__ or false
__PL_GLOBALS__ = __PL_GLOBALS__ or false
-__PL_EXTRAS__ = 1
__PL_NO_HYPERREF__ = __PL_NO_HYPERREF__ or false
--- __PENLIGHT__ = 'penlight' or 'pl'
--- requires penlight
-local pl = _G['penlight'] or _G['pl'] -- penlight for this namespace is pl
-
-if not __PL_SKIP_LUAKEYS__ then
- luakeys = require'luakeys'()
-end
+penlight.luakeys = require'luakeys'()
--- some bonus string operations, % text operator, and functional programming
-pl.stringx.import()
-pl.stringx.format_operator()
-pl.utils.import'pl.func' -- allow placeholder expressions _1 +1 etc.
-pl.COMP = require'pl.comprehension'.new() -- for comprehensions
+penlight.COMP = require'pl.comprehension'.new() -- for comprehensions
-- http://lua-users.org/wiki/SplitJoin -- todo read me!!
-pl.tex = {} -- adding a sub-module for tex related stuff
+penlight.tex = {} -- adding a sub-module for tex related stuff
-local bind = bind or pl.func.bind
+local bind = bind or penlight.func.bind
-function pl.hasval(x) -- if something has value
+function penlight.hasval(x) -- if something has value
if (type(x) == 'function') or (type(x) == 'CFunction') or (type(x) == 'userdata') then
return true
elseif (x == nil) or (x == false) or (x == 0) or (x == '') or (x == {}) then
@@ -71,9 +63,9 @@ end
-- Some simple and helpful LaTeX functions -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- xparse defaults
-pl.tex._xTrue = '\\BooleanTrue '
-pl.tex._xFalse = '\\BooleanFalse '
-pl.tex._xNoValue = '-NoValue-'
+penlight.tex._xTrue = '\\BooleanTrue '
+penlight.tex._xFalse = '\\BooleanFalse '
+penlight.tex._xNoValue = '-NoValue-'
--Generic LuaLaTeX utilities for print commands or environments
@@ -81,97 +73,97 @@ if not __PL_SKIP_TEX__ then
local function check_special_chars(s) -- todo extend to toher special chars?
if type(s) == 'string' then
if string.find(s, '[\n\r\t\0]') then
- pl.tex.pkgwarn('penlight', 'printing string with special (eg. newline) char, possible unexpected behaviour on string: '..s)
+ penlight.tex.pkgwarn('penlight', 'printing string with special (eg. newline) char, possible unexpected behaviour on string: '..s)
end
end
end
-- NOTE: usage is a bit different than default. If number is first arg, you CANT change catcode.
-- We don't need that under normal use, use tex.print or tex.sprint if you need
- function pl.tex.prt(s, ...) -- print something, no new line after
+ function penlight.tex.prt(s, ...) -- print something, no new line after
check_special_chars(s)
if type(s) == 'number' then s = tostring(s) end
tex.sprint(s, ...) --can print lists as well, but will NOT put new line between them or anything printed
end
- function pl.tex.prtn(s, ...) -- print with new line after, can print lists or nums. C-function not in Lua, apparantly
+ function penlight.tex.prtn(s, ...) -- print with new line after, can print lists or nums. C-function not in Lua, apparantly
s = s or ''
check_special_chars(s)
if type(s) == 'number' then s = tostring(s) end
tex.print(s, ...)
end
- pl.tex.wrt = texio.write
- pl.tex.wrtn = texio.write_nl
+ penlight.tex.wrt = texio.write
+ penlight.tex.wrtn = texio.write_nl
else
- pl.tex.prt = io.write
- pl.tex.prtn = print --print with new line
- pl.tex.wrt = io.write
- pl.tex.wrtn = io.write_nl
+ penlight.tex.prt = io.write
+ penlight.tex.prtn = print --print with new line
+ penlight.tex.wrt = io.write
+ penlight.tex.wrtn = io.write_nl
end
-function pl.tex.prtl(str) -- prints a literal/lines string in latex, adds new line between them
+function penlight.tex.prtl(str) -- prints a literal/lines string in latex, adds new line between them
for line in str:gmatch"[^\n]*" do -- gets all characters up to a new line
- pl.tex.prtn(line)
+ penlight.tex.prtn(line)
end
end
-- todo option to specify between character? one for first table, on for recursives?
-function pl.tex.prtt(tab, d1, d2) -- prints a table with new line between each item
+function penlight.tex.prtt(tab, d1, d2) -- prints a table with new line between each item
d1 = d1 or ''
d2 = d2 or '\\leavevmode\\\\'
for _, t in pairs(tab) do --
if type(t) ~= 'table' then
if d1 == '' then
- pl.tex.prtn(t)
+ penlight.tex.prtn(t)
else
- pl.tex.prt(t, d1)
+ penlight.tex.prt(t, d1)
end
else
- pl.tex.prtn(d2)
- pl.tex.prtt(t,d1,d2)
+ penlight.tex.prtn(d2)
+ penlight.tex.prtt(t,d1,d2)
end
end
end
-function pl.tex.help_wrt(s1, s2) -- helpful printing, makes it easy to debug, s1 is object, s2 is note
+function penlight.tex.help_wrt(s1, s2) -- helpful printing, makes it easy to debug, s1 is object, s2 is note
local wrt2 = wrt or texio.write_nl or print
s2 = s2 or ''
wrt2('\nvvvvv '..s2..'\n')
if type(s1) == 'table' then
- wrt2(pl.pretty.write(s1))
+ wrt2(penlight.pretty.write(s1))
else
wrt2(tostring(s1))
end
wrt2('\n^^^^^\n')
end
-pl.help_wrt = pl.tex.help_wrt
+penlight.help_wrt = penlight.tex.help_wrt
-function pl.tex.prt_array2d(t)
+function penlight.tex.prt_array2d(t)
for _, r in ipairs(t) do
local s = ''
for _, v in ipairs(r) do
s = s.. tostring(v)..', '
end
- pl.tex.prt(s)
- pl.tex.prt('\n')
+ penlight.tex.prt(s)
+ penlight.tex.prt('\n')
end
end
-- -- -- -- --
-function pl.tex.pkgwarn(pkg, msg1, msg2)
+function penlight.tex.pkgwarn(pkg, msg1, msg2)
pkg = pkg or ''
msg1 = msg1 or ''
msg2 = msg2 or ''
tex.sprint('\\PackageWarning{'..pkg..'}{'..msg1..'}{'..msg2..'}')
end
-function pl.tex.pkgerror(pkg, msg1, msg2, stop)
+function penlight.tex.pkgerror(pkg, msg1, msg2, stop)
pkg = pkg or ''
msg1 = msg1 or ''
msg2 = msg2 or ''
- stop = pl.hasval(stop)
+ stop = penlight.hasval(stop)
tex.sprint('\\PackageError{'..pkg..'}{'..msg1..'}{'..msg2..'}')
if stop then tex.sprint('\\stop') end -- stop on the spot (say that 10 times)
end
@@ -179,18 +171,18 @@ end
--definition helpers -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-function pl.tex.defmacro(cs, val) -- , will not work if val contains undefined tokens (so pre-define them if using..)
+function penlight.tex.defmacro(cs, val) -- , will not work if val contains undefined tokens (so pre-define them if using..)
val = val or '' -- however this works for arbitrary command names (\@hello-123 etc allowed)
token.set_macro(cs, val, 'global')
end
-function pl.tex.defcmd(cs, val) -- fixes above issue, but only chars allowed in cs (and no @)
+function penlight.tex.defcmd(cs, val) -- fixes above issue, but only chars allowed in cs (and no @)
val = val or ''
tex.sprint('\\gdef\\'..cs..'{'..val..'}')
end
-function pl.tex.defcmdAT(cs, val) -- allows @ in cs,
+function penlight.tex.defcmdAT(cs, val) -- allows @ in cs,
--however should only be used in preamble. I avoid \makeatother because I've ran into issues with cls and sty files using it.
val = val or ''
tex.sprint('\\makeatletter\\gdef\\'..cs..'{'..val..'}')
@@ -198,34 +190,34 @@ end
-function pl.tex.prvcmd(cs, val) -- provide command via lua
+function penlight.tex.prvcmd(cs, val) -- provide command via lua
if token.is_defined(cs) then
-- do nothing if token is defined already --pkgwarn('penlight', 'Definition '..cs..' is being overwritten')
else
- pl.tex.defcmd(cs, val)
+ penlight.tex.defcmd(cs, val)
end
end
-function pl.tex.newcmd(cs, val) -- provide command via lua
+function penlight.tex.newcmd(cs, val) -- provide command via lua
if token.is_defined(cs) then
- pl.tex.pkgerror('penlight: newcmd',cs..' already defined')
+ penlight.tex.pkgerror('penlight: newcmd',cs..' already defined')
else
- pl.tex.defcmd(cs, val)
+ penlight.tex.defcmd(cs, val)
end
end
-function pl.tex.renewcmd(cs, val) -- provide command via lua
+function penlight.tex.renewcmd(cs, val) -- provide command via lua
if token.is_defined(cs) then
- pl.tex.defcmd(cs, val)
+ penlight.tex.defcmd(cs, val)
else
- pl.tex.pkgerror('penlight: renewcmd',cs..' not defined')
+ penlight.tex.pkgerror('penlight: renewcmd',cs..' not defined')
end
end
-function pl.tex.deccmd(cs, def, overwrite) -- declare a definition, placeholder throws an error if it used but not set!
- overwrite = pl.hasval(overwrite)
+function penlight.tex.deccmd(cs, def, overwrite) -- declare a definition, placeholder throws an error if it used but not set!
+ overwrite = penlight.hasval(overwrite)
local decfun
- if overwrite then decfun = pl.tex.defcmd else decfun = pl.tex.newcmd end
+ if overwrite then decfun = penlight.tex.defcmd else decfun = penlight.tex.newcmd end
if def == nil then
decfun(cs, pkgerror('penlight', cs..' was declared and used in document, but never set'))
else
@@ -257,26 +249,26 @@ end
-- when nesting commands, this makes it helpful to not worry about brackets
-pl.tex._NumBkts = 0
+penlight.tex._NumBkts = 0
--prt(opencmd('textbf')..opencmd('texttt')..'bold typwriter'..close_bkt_cnt())
-function pl.tex.opencmd(cmd)
+function penlight.tex.opencmd(cmd)
return '\\'..cmd..add_bkt_cnt()
end
-function pl.tex.reset_bkt_cnt(n)
+function penlight.tex.reset_bkt_cnt(n)
n = n or 0
_NumBkts = n
end
-function pl.tex.add_bkt_cnt(n)
+function penlight.tex.add_bkt_cnt(n)
-- add open bracket n times, returns brackets
n = n or 1
_NumBkts = _NumBkts + n
return ('{'):rep(n)
end
-function pl.tex.close_bkt_cnt(n)
+function penlight.tex.close_bkt_cnt(n)
n = n or _NumBkts
local s = ('}'):rep(n)
_NumBkts = _NumBkts - n
@@ -285,12 +277,12 @@ end
-function pl.tex.aliasluastring(s, d)
+function penlight.tex.aliasluastring(s, d)
s = s:delspace():upper():tolist()
d = d:delspace():upper():tolist()
- for i, S in pl.seq.enum(d:slice_assign(1,#s,s)) do
+ for i, S in penlight.seq.enum(d:slice_assign(1,#s,s)) do
if (S == 'E') or (S == 'F') then S = '' end -- E or F is fully expanded
- pl.tex.prtn('\\let\\plluastring'..pl.Char(i)..'\\luastring'..S)
+ penlight.tex.prtn('\\let\\plluastring'..penlight.Char(i)..'\\luastring'..S)
end
end
@@ -298,7 +290,7 @@ end
-function pl.tex.get_ref_info(l)
+function penlight.tex.get_ref_info(l)
local n = 5
if __PL_NO_HYPERREF__ then
local n = 2
@@ -306,19 +298,19 @@ function pl.tex.get_ref_info(l)
local r = token.get_macro('r@'..l)
local t = {}
if r == nil then
- t = pl.tablex.new(n, 0) -- make all 0s
+ t = penlight.tablex.new(n, 0) -- make all 0s
r = '-not found-'
else
t = {r:match(("(%b{})"):rep(n))}
- t = pl.tablex.map(string.trimfl, t)
+ t = penlight.tablex.map(string.trimfl, t)
end
t[#t+1] = r -- add the og return of label
- --pl.help_wrt(t, 'ref info')
+ --penlight.help_wrt(t, 'ref info')
return t
end
-- todo add regex pattern for cref info
---function pl.tex.get_ref_info_all_cref(l)
+--function penlight.tex.get_ref_info_all_cref(l)
-- local r = token.get_macro('r@'..l..'@cref')
-- if r == nil then
-- return r, 0, 0
@@ -364,11 +356,11 @@ local number = P{"number",
-function pl.char(num)
+function penlight.char(num)
return string.char(string.byte("a")+num-1)
end
-function pl.Char(num)
+function penlight.Char(num)
return string.char(string.byte("A")+num-1)
end
@@ -434,7 +426,7 @@ function str_mt.__index.totable(str)
end
function str_mt.__index.tolist(str)
- return pl.List(str)
+ return penlight.List(str)
end
@@ -454,7 +446,7 @@ end
-- -- -- -- function stuff
-function pl.clone_function(fn)
+function penlight.clone_function(fn)
local dumped = string.dump(fn)
local cloned = loadstring(dumped)
local i = 1
@@ -474,15 +466,15 @@ end
-- -- -- -- -- -- -- -- -- -- -- -- functions below extend the operator module
-function pl.operator.strgt(a,b) return tostring(a) > tostring(b) end
-function pl.operator.strlt(a,b) return tostring(a) < tostring(b) end
+function penlight.operator.strgt(a,b) return tostring(a) > tostring(b) end
+function penlight.operator.strlt(a,b) return tostring(a) < tostring(b) end
-- -- -- -- functions below are helpers for arrays and 2d
local function compare_elements(a, b, op, ele)
- op = op or pl.oper.gt
+ op = op or penlight.oper.gt
ele = ele or 1
return op(a[ele], b[ele])
end
@@ -499,32 +491,32 @@ end
-- table stuff below
-function pl.tablex.map_slice(func, T, j1, j2)
+function penlight.tablex.map_slice(func, T, j1, j2)
if type(j1) == 'string' then
- return pl.array2d.map_slice(func, {T}, ','..j1)[1]
+ return penlight.array2d.map_slice(func, {T}, ','..j1)[1]
else
- return pl.array2d.map_slice(func, {T}, 1, j1, 1, j2)[1]
+ return penlight.array2d.map_slice(func, {T}, 1, j1, 1, j2)[1]
end
end
-pl.array2d.map_slice1 = pl.tablex.map_slice
+penlight.array2d.map_slice1 = penlight.tablex.map_slice
-- todo option for multiple filters with AND logic, like the filter files??
-function pl.tablex.filterstr(t, exp, case)
+function penlight.tablex.filterstr(t, exp, case)
-- case = case sensitive
- case = pl.hasval(case)
+ case = penlight.hasval(case)
-- apply lua patterns to a table to filter iter
-- str or table of str's can be passed, OR logic is used if table is passed
if case then
- return pl.tablex.filter(t, bind(string.containsany,_1,exp))
+ return penlight.tablex.filter(t, bind(string.containsany,_1,exp))
else
- return pl.tablex.filter(t, bind(string.containsanycase,_1,exp))
+ return penlight.tablex.filter(t, bind(string.containsanycase,_1,exp))
end
end
-function pl.utils.filterfiles(...)
+function penlight.utils.filterfiles(...)
-- f1 is a series of filtering patterns, or condition
-- f2 is a series of filtering patters, or condition
-- (f1_a or f2_...) and (f2 .. ) must match
@@ -547,11 +539,11 @@ function pl.utils.filterfiles(...)
end
local files
- if r then files = pl.dir.getallfiles(dir)
- else files = pl.dir.getfiles(dir)
+ if r then files = penlight.dir.getallfiles(dir)
+ else files = penlight.dir.getfiles(dir)
end
for i=nstart,args.n do
- files = pl.tablex.filter(files, pl.func.compose(bind(string.containsanycase,_1, args[i]), pl.path.basename))
+ files = penlight.tablex.filter(files, penlight.func.compose(bind(string.containsanycase,_1, args[i]), penlight.path.basename))
end
return files
end
@@ -562,54 +554,54 @@ end
-- -- -- -- -- -- -- -- functions below extend the array2d module
-function pl.array2d.map_slice(func, M, i1, j1, i2, j2) -- map a function to a slice of a Matrix
- func = pl.utils.function_arg(1, func)
- for i,j in pl.array2d.iter(M, true, i1, j1, i2, j2) do
+function penlight.array2d.map_slice(func, M, i1, j1, i2, j2) -- map a function to a slice of a Matrix
+ func = penlight.utils.function_arg(1, func)
+ for i,j in penlight.array2d.iter(M, true, i1, j1, i2, j2) do
M[i][j] = func(M[i][j])
end
return M
end
-pl.array2d.map_slice2 = pl.array2d.map_slice
+penlight.array2d.map_slice2 = penlight.array2d.map_slice
-function pl.array2d.map_cols(func, M, j1, j2) -- map function to columns of matrix
+function penlight.array2d.map_cols(func, M, j1, j2) -- map function to columns of matrix
if type(j1) == 'string' then
- return pl.array2d.map_slice(func, M, ','..j1)
+ return penlight.array2d.map_slice(func, M, ','..j1)
else
j2 = j2 or -1
- return pl.array2d.map_slice(func, M, 1, j1, -1, j2)
+ return penlight.array2d.map_slice(func, M, 1, j1, -1, j2)
end
end
-pl.array2d.map_columns = pl.array2d.map_cols
+penlight.array2d.map_columns = penlight.array2d.map_cols
-function pl.array2d.map_rows(func, M, i1, i2) -- map function to rows of matrix
+function penlight.array2d.map_rows(func, M, i1, i2) -- map function to rows of matrix
if type(i1) == 'string' then
- return pl.array2d.map_slice(func, M, i1)
+ return penlight.array2d.map_slice(func, M, i1)
else
i2 = i2 or -1
- return pl.array2d.map_slice(func, M, i1, 1, i2, -1)
+ return penlight.array2d.map_slice(func, M, i1, 1, i2, -1)
end
end
-- -- -- -- -- -- -- --
-function pl.array2d.sortOP(M, op, ele) -- sort a 2d array based on operator criteria, ele is column, ie sort on which element
+function penlight.array2d.sortOP(M, op, ele) -- sort a 2d array based on operator criteria, ele is column, ie sort on which element
M_new = {}
- for row in pl.seq.sort(M, comp_2ele_func(op, ele)) do
+ for row in penlight.seq.sort(M, comp_2ele_func(op, ele)) do
M_new[#M_new+1] = row
end
return M_new
end
-function pl.array2d.like(M1, v)
+function penlight.array2d.like(M1, v)
v = v or 0
- r, c = pl.array2d.size(M1)
- return pl.array2d.new(r,c,v)
+ r, c = penlight.array2d.size(M1)
+ return penlight.array2d.new(r,c,v)
end
-function pl.array2d.from_table(t) -- turns a labelled table to a 2d, label-free array
+function penlight.array2d.from_table(t) -- turns a labelled table to a 2d, label-free array
t_new = {}
for k, v in pairs(t) do
if type(v) == 'table' then
@@ -625,10 +617,10 @@ function pl.array2d.from_table(t) -- turns a labelled table to a 2d, label-free
return t_new
end
-function pl.array2d.toTeX(M, EL) --puts & between columns, can choose to end line with \\ if EL is true (end-line)
+function penlight.array2d.toTeX(M, EL) --puts & between columns, can choose to end line with \\ if EL is true (end-line)
EL = EL or false
if EL then EL = '\\\\' else EL = '' end
- return pl.array2d.reduce2(_1..EL.._2, _1..'&'.._2, M)..EL
+ return penlight.array2d.reduce2(_1..EL.._2, _1..'&'.._2, M)..EL
end
@@ -649,7 +641,7 @@ local function parse_numpy1d(i1, i2, iS)
return i1, i2
end
-function pl.array2d.parse_numpy2d_str(s)
+function penlight.array2d.parse_numpy2d_str(s)
s = s:gsub('%s+', '')
_, _, i1, iS, i2, j1, jS, j2 = string.find(s, "(%-?%d*)(:?)(%-?%d*),?(%-?%d*)(:?)(%-?%d*)")
i1, i2 = parse_numpy1d(i1, i2, iS)
@@ -658,12 +650,12 @@ function pl.array2d.parse_numpy2d_str(s)
end
-local _parse_range = pl.clone_function(pl.array2d.parse_range)
+local _parse_range = penlight.clone_function(penlight.array2d.parse_range)
-function pl.array2d.parse_range(s) -- edit parse range to do numpy string if no letter passed
- pl.utils.assert_arg(1,s,'string')
+function penlight.array2d.parse_range(s) -- edit parse range to do numpy string if no letter passed
+ penlight.utils.assert_arg(1,s,'string')
if not s:find'%a' then
- return pl.array2d.parse_numpy2d_str(s)
+ return penlight.array2d.parse_numpy2d_str(s)
end
return _parse_range(s)
end
@@ -674,68 +666,68 @@ end
-- https://tex.stackexchange.com/questions/38150/in-lualatex-how-do-i-pass-the-content-of-an-environment-to-lua-verbatim
-pl.tex.recordedbuf = ""
-function pl.tex.readbuf(buf)
+penlight.tex.recordedbuf = ""
+function penlight.tex.readbuf(buf)
i,j = string.find(buf, '\\end{%w+}')
if i==nil then -- if not ending an environment
- pl.tex.recordedbuf = pl.tex.recordedbuf .. buf .. "\n"
+ penlight.tex.recordedbuf = penlight.tex.recordedbuf .. buf .. "\n"
return ""
else
return nil
end
end
-function pl.tex.startrecording()
- pl.tex.recordedbuf = ""
- luatexbase.add_to_callback('process_input_buffer', pl.tex.readbuf, 'readbuf')
+function penlight.tex.startrecording()
+ penlight.tex.recordedbuf = ""
+ luatexbase.add_to_callback('process_input_buffer', penlight.tex.readbuf, 'readbuf')
end
-function pl.tex.stoprecording()
+function penlight.tex.stoprecording()
luatexbase.remove_from_callback('process_input_buffer', 'readbuf')
- pl.tex.recordedbuf = pl.tex.recordedbuf:gsub("\\end{%w+}\n","")
+ penlight.tex.recordedbuf = penlight.tex.recordedbuf:gsub("\\end{%w+}\n","")
end
__PDFmetadata__ = {}
-pl.tex.add_xspace_intext = true
+penlight.tex.add_xspace_intext = true
-function pl.tex.updatePDFtable(k, v, o) -- key val overwrite
+function penlight.tex.updatePDFtable(k, v, o) -- key val overwrite
k = k:upfirst()
- if pl.hasval(o) or (__PDFmetadata__[k] == nil) then
+ if penlight.hasval(o) or (__PDFmetadata__[k] == nil) then
__PDFmetadata__[k] = v
end
end
-pl.tex.writePDFmetadata = function(t) -- write PDF metadata to xmpdata file
+penlight.tex.writePDFmetadata = function(t) -- write PDF metadata to xmpdata file
t = t or __PDFmetadata__
local str = ''
for k, v in pairs(t) do
k = k:upfirst()
str = str..'\\'..k..'{'..v..'}'..'\n'
end
- pl.utils.writefile(tex.jobname..'.xmpdata', str)
+ penlight.utils.writefile(tex.jobname..'.xmpdata', str)
end
-function pl.tex.clear_cmds_str(s)
+function penlight.tex.clear_cmds_str(s)
return s:gsub('%s+', ' '):gsub('\\\\',' '):gsub('\\%a+',''):gsub('{',' '):gsub('}',' '):gsub('%s+',' '):strip()
end
-function pl.tex.makePDFvarstr(s)
+function penlight.tex.makePDFvarstr(s)
s = s:gsub('%s*\\sep%s+','\0'):gsub('%s*\\and%s+','\0') -- turn \and into \sep
- s = pl.tex.clear_cmds_str(s)
+ s = penlight.tex.clear_cmds_str(s)
s = s:gsub('\0','\\sep ')
- --pl.tex.help_wrt(s,'PDF var string')
+ --penlight.tex.help_wrt(s,'PDF var string')
return s
end
-function pl.tex.makeInTextstr(s)
+function penlight.tex.makeInTextstr(s)
local s, c_and = s:gsub('%s*\\and%s+','\0')
- s = pl.tex.clear_cmds_str(s)
- if pl.tex.add_xspace_intext then
+ s = penlight.tex.clear_cmds_str(s)
+ if penlight.tex.add_xspace_intext then
s = s..'\\xspace'
end
if c_and == 1 then
@@ -744,13 +736,13 @@ function pl.tex.makeInTextstr(s)
s = s:gsub('\0',', ', c_and - 1)
s = s:gsub('\0',', and ')
end
- --pl.tex.help_wrt(s,'in text var string')
+ --penlight.tex.help_wrt(s,'in text var string')
return s
end
--todo decide on above or below
-function pl.tex.list2comma(t)
+function penlight.tex.list2comma(t)
local s = ''
if #t == 1 then
s = t[1]
@@ -762,28 +754,27 @@ function pl.tex.list2comma(t)
return s
end
-function pl.tex.split2comma(s, d)
- local t = pl.List(s:split(d)):map(string.strip)
- pl.tex.prt(pl.tex.list2comma(t))
+function penlight.tex.split2comma(s, d)
+ local t = penlight.List(s:split(d)):map(string.strip)
+ penlight.tex.prt(penlight.tex.list2comma(t))
end
-function pl.tex.split2items(s, d)
- local t = pl.List(s:split(d)):map(string.strip)
+function penlight.tex.split2items(s, d)
+ local t = penlight.List(s:split(d)):map(string.strip)
for n, v in ipairs(t) do
- pl.tex.prtn('\\item '..v)
+ penlight.tex.prtn('\\item '..v)
end
end
-if pl.hasval(__PL_GLOBALS__) then
- __PL_EXTRAS__ = 2
+if penlight.hasval(__PL_GLOBALS__) then
-- iterators
- kpairs = pl.utils.kpairs
- npairs = pl.utils.npairs
+ kpairs = penlight.utils.kpairs
+ npairs = penlight.utils.npairs
--enum = utils.enum
- for k,v in pairs(pl.tablex) do -- extend the table table to contain tablex functions
+ for k,v in pairs(penlight.tablex) do -- extend the table table to contain tablex functions
if k == 'sort' then
table.sortk = v
elseif k == 'move' then
@@ -795,27 +786,27 @@ if pl.hasval(__PL_GLOBALS__) then
table.join = table.concat -- alias
-- todo should tablex have all table functions
- pl.tablex.concat = table.concat
- pl.tablex.insert = table.insert
- pl.tablex.maxn = table.maxn
- pl.tablex.remove = table.remove
- pl.tablex.sort = table.sort
+ penlight.tablex.concat = table.concat
+ penlight.tablex.insert = table.insert
+ penlight.tablex.maxn = table.maxn
+ penlight.tablex.remove = table.remove
+ penlight.tablex.sort = table.sort
- hasval = pl.hasval
- COMP = pl.COMP
+ hasval = penlight.hasval
+ COMP = penlight.COMP
-- shortcuts
--- http://stevedonovan.github.io/Penlight/api/libraries/pl.utils.html
- pl.writefile = pl.utils.writefile
- pl.readfile = pl.utils.readfile
- pl.readlines = pl.utils.readfile
- pl.filterfiles = pl.utils.filterfiles
+-- http://stevedonovan.github.io/Penlight/api/libraries/penlight.utils.html
+ penlight.writefile = penlight.utils.writefile
+ penlight.readfile = penlight.utils.readfile
+ penlight.readlines = penlight.utils.readfile
+ penlight.filterfiles = penlight.utils.filterfiles
- pl.a2 = pl.array2d
- pl.tbl = pl.tablex
+ penlight.a2 = penlight.array2d
+ penlight.tbl = penlight.tablex
- for k,v in pairs(pl.tex) do -- make tex functions global
+ for k,v in pairs(penlight.tex) do -- make tex functions global
_G[k] = v
end
@@ -825,42 +816,42 @@ end
- --_xTrue = pl.tex._xTrue
- --_xFalse = pl.tex._xFalse
- --_xNoValue = pl.tex._xNoValue
+ --_xTrue = penlight.tex._xTrue
+ --_xFalse = penlight.tex._xFalse
+ --_xNoValue = penlight.tex._xNoValue
--
- --prt = pl.tex.prt
- --prtn = pl.tex.prtn
- --wrt = pl.tex.wrt
- --wrtn = pl.tex.wrtn
+ --prt = penlight.tex.prt
+ --prtn = penlight.tex.prtn
+ --wrt = penlight.tex.wrt
+ --wrtn = penlight.tex.wrtn
--
- --prtl = pl.tex.prtl
- --prtt = pl.tex.prtt
+ --prtl = penlight.tex.prtl
+ --prtt = penlight.tex.prtt
--
- --help_wrt = pl.tex.help_wrt
- --prt_array2d = pl.tex.prt_array2d
+ --help_wrt = penlight.tex.help_wrt
+ --prt_array2d = penlight.tex.prt_array2d
--
- --pkgwarn = pl.tex.pkgwarn
- --pkgerror = pl.tex.pkgerror
+ --pkgwarn = penlight.tex.pkgwarn
+ --pkgerror = penlight.tex.pkgerror
--
- --defcmd = pl.tex.defcmd
- --prvcmd = pl.tex.prvcmd
- --newcmd = pl.tex.newcmd
- --renewcmd = pl.tex.renewcmd
- --deccmd = pl.tex.deccmd
+ --defcmd = penlight.tex.defcmd
+ --prvcmd = penlight.tex.prvcmd
+ --newcmd = penlight.tex.newcmd
+ --renewcmd = penlight.tex.renewcmd
+ --deccmd = penlight.tex.deccmd
--
- --_NumBkts = pl.tex._NumBkts
- --opencmd = pl.tex.opencmd
- --reset_bkt_cnt = pl.tex.reset_bkt_cnt
- --add_bkt_cnt = pl.tex.add_bkt_cnt
- --close_bkt_cnt = pl.tex.close_bkt_cnt
+ --_NumBkts = penlight.tex._NumBkts
+ --opencmd = penlight.tex.opencmd
+ --reset_bkt_cnt = penlight.tex.reset_bkt_cnt
+ --add_bkt_cnt = penlight.tex.add_bkt_cnt
+ --close_bkt_cnt = penlight.tex.close_bkt_cnt
-- graveyard
-- luakeys parses individual keys as ipairs, this changes the list to a pure map
---function pl.luakeystomap(t)
+--function penlight.luakeystomap(t)
-- local t_new = {}
-- for k, v in pairs(t) do
-- if type(k) == 'number' then
@@ -874,7 +865,7 @@ end
--if luakeys then -- if luakeys is already loaded
-- function luakeys.parseN(s, ...)
-- local t = luakeys.parse(s,...)
--- t = pl.luakeystomap(t)
+-- t = penlight.luakeystomap(t)
-- return t
-- end
--end
@@ -893,13 +884,13 @@ end
-- -- -- -- functions below extend the array2d module
---function pl.array2d.map_slice1(func, L, i1, i2) -- map a function to a slice of an array, can use PlcExpr
+--function penlight.array2d.map_slice1(func, L, i1, i2) -- map a function to a slice of an array, can use PlcExpr
-- i2 = i2 or i1
-- local len = #L
-- i1 = check_index(i1, len)
-- i2 = check_index(i2, len)
-- func = check_func(func)
--- for i in pl.seq.range(i1,i2) do
+-- for i in penlight.seq.range(i1,i2) do
-- L[i] = func(L[i])
-- end
-- return L
@@ -907,8 +898,8 @@ end
-- used this below when iter was not working..
--i1, j1, i2, j2 = check_slice(M, i1, j1, i2, j2)
- --for i in pl.seq.range(i1,i2) do
- -- for j in pl.seq.range(j1,j2) do
+ --for i in penlight.seq.range(i1,i2) do
+ -- for j in penlight.seq.range(j1,j2) do
--end
-- penlight may have fixed this
--local function check_index(ij, rc) -- converts array index to positive value if negative
@@ -926,7 +917,7 @@ end
-- end
--end
--local function check_slice(M, i1, j1, i2, j2) -- ensure a slice is valid; i.e. all positive numbers
--- r, c = pl.array2d.size(M)
+-- r, c = penlight.array2d.size(M)
-- i1 = check_index(i1 or 1, r)
-- i2 = check_index(i2 or r, r)
-- j1 = check_index(j1 or 1, c)
diff --git a/macros/luatex/generic/penlightplus/penlightplus.pdf b/macros/luatex/generic/penlightplus/penlightplus.pdf
new file mode 100644
index 0000000000..89b8236d66
--- /dev/null
+++ b/macros/luatex/generic/penlightplus/penlightplus.pdf
Binary files differ
diff --git a/macros/luatex/generic/penlightplus/penlightplus.sty b/macros/luatex/generic/penlightplus/penlightplus.sty
new file mode 100644
index 0000000000..0d49ff90d0
--- /dev/null
+++ b/macros/luatex/generic/penlightplus/penlightplus.sty
@@ -0,0 +1,119 @@
+% Kale Ewasiuk (kalekje@gmail.com)
+% 2023-07-22
+% Copyright (C) 2021-2023 Kale Ewasiuk
+%
+% Permission is hereby granted, free of charge, to any person obtaining a copy
+% of this software and associated documentation files (the "Software"), to deal
+% in the Software without restriction, including without limitation the rights
+% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+% copies of the Software, and to permit persons to whom the Software is
+% furnished to do so, subject to the following conditions:
+%
+% The above copyright notice and this permission notice shall be included in
+% all copies or substantial portions of the Software.
+%
+% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+% ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+% TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+% PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+% SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
+% ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+% ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
+% OR OTHER DEALINGS IN THE SOFTWARE.
+
+\ProvidesPackage{penlightplus}[2023-07-22]
+
+\RequirePackage{luacode}
+\RequirePackage{luakeys}
+\RequirePackage[import]{penlight}
+
+\DeclareOption{globals}{\luadirect{__PL_GLOBALS__ = true}}
+\DeclareOption{pl}{\directlua{pl = penlight}}
+\ProcessOptions*\relax
+
+\luadirect{require'penlightplus'}
+
+
+
+
+\global\newcommand{\writePDFmetadata}{\luadirect{penlight.tex.writePDFmetadata()}}
+
+\NewDocumentCommand{\writePDFmetadatakv}{ s m }{
+\IfBooleanTF{#1}{% if *, overwrite everything
+ \luadirect{
+ __PDFmetadata__ = penlight.luakeys.parse(\luastring{#2})
+ penlight.tex.writePDFmetadata()
+ }}{
+ \luadirect{
+ __PDFmetadata__ = __PDFmetadata__ or {}
+ penlight.tablex.update(__PDFmetadata__, penlight.luakeys.parse(\luastring{#2}))
+ penlight.tex.writePDFmetadata()
+ }}
+}
+
+
+\gdef\luastringT#1{\luastring{\unexpanded\expandafter\expandafter\expandafter{#1}}} % expand luastring twice
+\global\let\luastringF\luastring % fully expanded luastring
+
+% allow control over expansion of arguments to a latex function
+\NewDocumentCommand{\MakeluastringCommands}{O{} m }{% #1 the desired commands #2 defaults
+ \luadirect{penlight.tex.aliasluastring(\luastring{#2},\luastring{#1})}%
+}
+
+\NewDocumentCommand{\splitToComma}{ O{nn} m m }{%
+ \MakeluastringCommands[nn]{#1}%
+ \luadirect{penlight.tex.split2comma(\plluastringA{#2},\plluastringB{#3})}%
+}
+
+\NewDocumentCommand{\splitToItems}{ O{NN} m m }{%
+ \MakeluastringCommands[nn]{#1}%
+ \luadirect{penlight.tex.split2items(\plluastringA{#2},\plluastringB{#3})}%
+}
+
+
+%
+%
+%\NewDocumentCommand{\tblnew}{m}{\luadirect{
+% _G[\luastring{#1}] = {}
+%}}
+%
+%\NewDocumentCommand{\tblfrkv}{m m O{} }{\luadirect{
+% _G[\luastring{#1}] = penlight.luakeys.parse(\luastring{#2}, penlight.luakeys.parse(\luastring{#3}))
+%}}
+%
+%\NewDocumentCommand{\tblset}{m m m}{\luadirect{
+% _G[\luastring{#1}][\luastring{#2}] = \luastring{#3}
+%}}
+%
+%\NewDocumentCommand{\tblget}{m m}{\luadirect{
+% tex.sprint(tostring(_G[\luastring{#1}][\luastring{#2}]))
+%}}
+%
+%\NewDocumentCommand{\tblidx}{m m}{\luadirect{
+% tex.sprint(tostring(_G[\luastring{#1}][#2]))
+%}}
+%
+%
+%\NewDocumentCommand{\tblupd}{ m m}{\luadirect{
+% penlight.tablex.update(_G[\luastring{#1}], _G[\luastring{#2}])
+%}}
+%
+%\NewDocumentCommand{\tblupdkv}{ m m }{\luadirect{
+% penlight.tablex.update(_G[\luastring{#1}], penlight.luakeys.parse(\luastring{#2}))
+%}}
+%
+%% todo need a get table function. If blank is passed, the last table referenced is used.
+%\NewDocumentCommand{\tblfrkvII}{ m m m }{\luadirect{
+% _G[\luastring{#1}] = penlight.tablex.update(penlight.luakeys.parse(\luastring{#2}), luakeys.parse(\luastring{#3}))
+%}}
+
+
+%\NewDocumentCommand{\tbldo}{m m O{} }{\luadirect{
+% % tex.sprint(tostring(_G[\luastring{#1}][#2]))
+% % todo allow one to use pl tablex function here,
+% % {tbl}{update}[arg1][arg2]
+% penlight.tablex[\luastring[#1]](_G[\luastring{}], _G[\luastring{}])
+%}}
+
+
diff --git a/macros/luatex/generic/penlightplus/penlightplus.tex b/macros/luatex/generic/penlightplus/penlightplus.tex
new file mode 100644
index 0000000000..50f87fa38b
--- /dev/null
+++ b/macros/luatex/generic/penlightplus/penlightplus.tex
@@ -0,0 +1,227 @@
+% Kale Ewasiuk (kalekje@gmail.com)
+% 2023-07-22
+% Copyright (C) 2021-2023 Kale Ewasiuk
+%
+% Permission is hereby granted, free of charge, to any person obtaining a copy
+% of this software and associated documentation files (the "Software"), to deal
+% in the Software without restriction, including without limitation the rights
+% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+% copies of the Software, and to permit persons to whom the Software is
+% furnished to do so, subject to the following conditions:
+%
+% The above copyright notice and this permission notice shall be included in
+% all copies or substantial portions of the Software.
+%
+% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+% ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+% TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+% PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+% SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
+% ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+% ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
+% OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+\documentclass[11pt,parskip=half]{scrartcl}
+\setlength{\parindent}{0ex}
+\newcommand{\llcmd}[1]{\leavevmode\llap{\texttt{\detokenize{#1}}}}
+\newcommand{\cmd}[1]{\texttt{\detokenize{#1}}}
+\newcommand{\qcmd}[1]{``\cmd{#1}''}
+\usepackage{url}
+\usepackage{xcolor}
+\usepackage{showexpl}
+\lstset{explpreset={justification=\raggedright,pos=r,wide=true}}
+\setlength\ResultBoxRule{0mm}
+\lstset{
+ language=[LaTeX]TeX,
+ basicstyle=\ttfamily\small,
+ commentstyle=\ttfamily\small\color{gray},
+ frame=none,
+ numbers=left,
+ numberstyle=\ttfamily\small\color{gray},
+ prebreak=\raisebox{0ex}[0ex][0ex]{\color{gray}\ensuremath{\hookleftarrow}},
+ extendedchars=true,
+ breaklines=true,
+ tabsize=4,
+}
+\addtokomafont{title}{\raggedright}
+\addtokomafont{author}{\raggedright}
+\addtokomafont{date}{\raggedright}
+\author{Kale Ewasiuk (\url{kalekje@gmail.com})}
+\usepackage[yyyymmdd]{datetime}\renewcommand{\dateseparator}{--}
+\date{\today}
+
+
+\RequirePackage{penlightplus}
+
+\title{penlightplus}
+\subtitle{Additions to the Penlight Lua Libraries}
+
+\begin{document}
+%
+
+\maketitle
+
+This package first loads the \cmd{[import]penlight} package.\\
+The \texttt{pl} option may be passed to this package to create an alias for \cmd{penlight}.\\
+\texttt{globals} option may be used to make several of the functions global (as discussed below).
+
+\subsection*{texlua usage}
+If you want to use penlightplus.lua with the \texttt{texlua} interpreter
+(no document is made, but useful for testing your Lua code),
+you can access it by setting \cmd{__SKIP_TEX__ = true} before loading. For example:
+ \begin{verbatim}
+package.path = package.path .. ';'..'path/to/texmf/tex/latex/penlightplus/?.lua'
+package.path = package.path .. ';'..'path/to/texmf/tex/latex/penlight/?.lua'
+penlight = require'penlight'
+
+__SKIP_TEX__ = true --only required if you want to use
+ --penlightplus without a LaTeX run
+__PL_GLOBALS__ = true -- optional, include global definitions
+require'penlightplus'
+\end{verbatim}
+
+
+
+
+
+
+\subsection*{}
+
+The following global variables are defined:
+
+\llcmd{__SKIP_TEX__} If using the \cmd{penlightplus} package with \cmd{texlua} (good for troubleshooting), set this global before loading \cmd{penlight}\\
+The gloals flags below are taken care of in the package options:\\
+\llcmd{__PL_}\cmd{GLOBALS__} If using package with \cmd{texlua} and you don't want to set some globals (described in next sections), set this global before to \cmd{true} loading \cmd{penlight}\\
+\cmd{__PL_NO_HYPERREF__} a flag used to change the behaviour of a function, depending on if you don't use the hyperref package\\
+
+\subsubsection*{penlight additions}
+
+Some functionality is added to penlight/lua.
+
+\llcmd{pl.hasval(x)} Python-like boolean testing\\
+\llcmd{COMP'xyz'()} Python-like comprehensions:\\\url{https://lunarmodules.github.io/Penlight/libraries/pl.comprehension.html}\\
+\llcmd{math.mod(n,d)}, \cmd{math.mod2(n)} math modulous\\
+\llcmd{string.}\cmd{totable(s)} string a table of characters\\
+\llcmd{string.}\cmd{delspace(s)} clear spaces from string\\
+\llcmd{pl.}\cmd{char(n)} return letter corresponding to 1=a, 2=b, etc.\\
+\llcmd{pl.}\cmd{Char(n)} return letter corresponding to 1=A, 2=B, etc.\\
+
+\llcmd{pl.utils.}\cmd{filterfiles}\cmd{(dir,filt,rec)} Get files from dir and apply glob-like filters. Set rec to \cmd{true} to include sub directories\\
+
+
+\subsubsection*{A \cmd{pl.tex.} module is added}
+\llcmd{add_bkt}\cmd{_cnt(n), }\cmd{close_bkt_cnt(n), reset_bkt_cnt} functions to keep track of adding curly brackets as strings. \cmd{add} will return \cmd{n} (default 1) \{'s and increment a counter. \cmd{close} will return \cmd{n} \}'s (default will close all brackets) and decrement.\\
+\llcmd{_NumBkts} internal integer for tracking the number of brackets\\
+\llcmd{opencmd(cs)} prints \cmd{\cs}\{ and adds to the bracket counters.\\
+\\
+\llcmd{_xNoValue,}\cmd{_xTrue,_xFalse}: \cmd{xparse} equivalents for commands\\
+\\
+\llcmd{prt(x),prtn(x)} print without or with a newline at end. Tries to help with special characters or numbers printing.\\
+\llcmd{prtl(l),prtt(t)} print a literal string, or table\\
+\llcmd{wrt(x), wrtn(x)} write to log\\
+\llcmd{help_wrt}\cmd{(s1, s2)} pretty-print something to console. S2 is a flag to help you find.\\
+\llcmd{prt_array2d(tt)} pretty print a 2d array\\
+\\
+\llcmd{pkgwarn}\cmd{(pkg, msg1, msg2)} throw a package warning\\
+\llcmd{pkgerror}\cmd{(pkg, msg1, msg2, stop)} throw a package error. If stop is true, immediately ceases compile.\\
+\\
+\llcmd{defcmd}\cmd{(cs, val)} like \cmd{\gdef}\\
+\llcmd{newcmd}\cmd{(cs, val)} like \cmd{\newcommand}\\
+\llcmd{renewcmd}\cmd{(cs, val)} like \cmd{\renewcommand}\\
+\llcmd{prvcmd}\cmd{(cs, val)} like \cmd{\providecommand}\\
+\llcmd{deccmd}\cmd{(cs, dft, overwrite)} declare a command. If \cmd{dft} (default) is \cmd{nil}, \cmd{cs} is set
+to a package warning saying \cmd{'cs' was declared and used in document, but never set}. If \cmd{overwrite}
+is true, it will overwrite an existing command (using \cmd{defcmd}), otherwise, it will throw error like \cmd{newcmd}.\\
+\llcmd{get_ref_info(l)}accesses the \cmd{\r@label} and returns a table\\
+
+
+
+\subsubsection*{global extras}
+If \cmd{extrasglobals} is used and NOT \cmd{extras}, many additional globals are set for shortcuts\\
+All \cmd{pl.tex} modules are made global.\\
+\cmd{pl.hasval}, \cmd{pl.COMP}, \cmd{pl.utils.kpairs}, \cmd{pl.utils.npairs} become globals with the function name.\\
+
+
+
+\subsection*{Macro helpers}
+\cmd{\MakeluastringCommands[def]{spec}} will let \cmd{\plluastring(A|B|C..)} be \cmd{\luastring(N|O|T|F)}
+based on the letters that \cmd{spec} is set to (or \cmd{def} if nothing is provided)
+This is useful if you want to write a command with flexibility on argument expansion.
+The user can specify \cmd{n}, \cmd{o}, \cmd{t}, and \cmd{f} (case insensitve) if they want
+no, once, twice, or full expansion.
+
+% BELOW IS FOR TROUBLESHOOTING ABOVE
+%\def\NOTexp{\ONEexp}
+%\def\ONEexp{\TWOexp}
+%\def\TWOexp{\TREexp}
+%\def\TREexp{Fully expanded}
+%
+%\NewDocumentCommand{\luastringExpTest}{m m}{
+% \MakeluastringCommands{#1}
+% \luadirect{texio.write_nl('VVVVVVVVVVVVVVVVVVVVVVVVVVVVV')}
+% \luadirect{texio.write_nl(\plluastringA{#2}..' | Not')}
+% \luadirect{texio.write_nl(\plluastringB{#2}..' | Once')}
+% \luadirect{texio.write_nl(\plluastringC{#2}..' | Twice')}
+% \luadirect{texio.write_nl(\plluastringD{#2}..' | Full')}
+% \luadirect{texio.write_nl('VVVVVVVVVVVVVVVVVVVVVVVVVVVVV')}
+%}
+%
+%\luastringExpTest{ n o t f }{\NOTexp}
+
+
+
+
+\subsection*{Split stuff}
+Splitting text (or a cmd) into oxford comma format via:
+\cmd{\splitToComma[expansion level]{text}{text to split on}}:
+
+\begin{LTXexample}
+
+-\splitToComma{ j doe }{\and}-\\
+-\splitToComma{ j doe \and s else }{\and}-\\
+-\splitToComma{ j doe \and s else \and a per }{\and}-\\
+-\splitToComma{ j doe \and s else \and a per \and f guy}{\and}-
+
+\def\authors{j doe \and s else \and a per \and f guy}
+\splitToComma[o]{\authors}{\and}
+\end{LTXexample}
+
+The expansion level is up to two characters, \cmd{n|o|t|f}, to control teh expasion of each argument.
+
+\begin{LTXexample}
+spliToItems:
+\begin{itemize}
+ \splitToItems{kale\and john}{\and}
+ \splitToItems{kale -john -someone else}{-}
+\end{itemize}
+\end{LTXexample}
+
+
+
+
+
+
+% \tblfrkv{tbl_def}{kale=cool,paul=gay,craig=fun}
+% \tblfrkv{tbl}{kale,paul=gay} %[naked_as_value=true]
+%
+% \tblget{tbl}{kale}%
+% \tblget{tbl}{paul}%
+% \tblget{tbl}{craig}%
+%
+% \tblupd{tbl_def}{tbl}%
+%
+% \tblfrkvII{tbl}{kale=cool,paul=gay,craig=fun}{kale=weak,paul=sad}
+% \tblget{tbl}{craig}%
+% \tblget{tbl}{paul}%
+% \tblget{tbl}{kale}%
+%
+% \NewDocumentCommand{\THINg}{ O{} m}{%
+% \tblfrkvII{setti}{color=red,size=small}{#1} % make settings and update based on [arg=]
+% {\color{\tblget{setti}{color}}\tblget{setti}{size} #2}
+% }
+%
+% \THINg[color=blue,size=tiny]{Kale}
+
+\end{document} \ No newline at end of file
diff --git a/macros/luatex/latex/yamlvars/README.md b/macros/luatex/latex/yamlvars/README.md
index 031de6c53a..509e5366c9 100644
--- a/macros/luatex/latex/yamlvars/README.md
+++ b/macros/luatex/latex/yamlvars/README.md
@@ -1,13 +1,13 @@
# YAMLvars -- parse a YAML document and create definitions in LaTeX
This LuaLaTeX package provides a YAML parser and some functions to declare and define LaTeX definitions using YAML files.
-It uses the [`markdown-tinyyaml`](https://github.com/api7/lua-tinyyaml) parser that is shipped with the [`markdown`](https://ctan.org/pkg/markdown) package.
+It uses the [`tinyyaml`](https://ctan.org/pkg/lua-tinyyaml) parser.
# License
-Copyright (C) 2021-2022 Kale Ewasiuk
+Copyright (C) 2021-2023 Kale Ewasiuk
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/macros/luatex/latex/yamlvars/yamlvars.lua b/macros/luatex/latex/yamlvars/yamlvars.lua
index 1d0da9a312..479880a3e8 100644
--- a/macros/luatex/latex/yamlvars/yamlvars.lua
+++ b/macros/luatex/latex/yamlvars/yamlvars.lua
@@ -1,6 +1,6 @@
--% Kale Ewasiuk (kalekje@gmail.com)
---% 2023-07-18
---% Copyright (C) 2021-2022 Kale Ewasiuk
+--% 2023-07-22
+--% Copyright (C) 2021-2023 Kale Ewasiuk
--%
--% Permission is hereby granted, free of charge, to any person obtaining a copy
--% of this software and associated documentation files (the "Software"), to deal
@@ -28,12 +28,9 @@ YAMLvars = {} -- self table
YAMLvars.yaml = require'tinyyaml' -- note: YAMLvars.sty will have checked existence of this already
-local luakeys = require'luakeys'() -- note: YAMLvars.sty will have checked existence of this already
+YAMLvars.luakeys = require'luakeys'() -- note: YAMLvars.sty will have checked existence of this already
-local pl = _G['penlight'] or _G['pl'] -- penlight for this namespace is pl
-if (__PL_EXTRAS__ == nil) or (__PENLIGHT__ == nil) then
- tex.sprint('\\PackageError{yamlvars}{penlight package with extras (or extrasnoglobals) option must be loaded before this package}{}')
-end
+local pl = penlight
-- UI tables to extend functionality
YAMLvars.xfm = {}
@@ -75,7 +72,7 @@ function YAMLvars.updatesettskv(kv, res, def)
YAMLvars.setts2default()
end
- local kv = luakeys.parse(kv)
+ local kv = YAMLvars.luakeys.parse(kv)
if type(kv.xfm) == 'string' then
kv.xfm = pl.stringx.split(kv.xfm)
end
diff --git a/macros/luatex/latex/yamlvars/yamlvars.pdf b/macros/luatex/latex/yamlvars/yamlvars.pdf
index a91095c832..4719837d3c 100644
--- a/macros/luatex/latex/yamlvars/yamlvars.pdf
+++ b/macros/luatex/latex/yamlvars/yamlvars.pdf
Binary files differ
diff --git a/macros/luatex/latex/yamlvars/yamlvars.sty b/macros/luatex/latex/yamlvars/yamlvars.sty
index 20ea6d33d1..733ee80b69 100644
--- a/macros/luatex/latex/yamlvars/yamlvars.sty
+++ b/macros/luatex/latex/yamlvars/yamlvars.sty
@@ -1,6 +1,6 @@
% Kale Ewasiuk (kalekje@gmail.com)
-% 2023-07-18
-% Copyright (C) 2021-2022 Kale Ewasiuk
+% 2023-07-22
+% Copyright (C) 2021-2023 Kale Ewasiuk
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the "Software"), to deal
@@ -25,13 +25,12 @@
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{yamlvars}[2023-07-18]
+\ProvidesPackage{yamlvars}[2023-07-22]
\RequirePackage{luacode}
-\RequirePackage{xspace}
\RequirePackage{etoolbox}
\RequirePackage{luakeys}
-\RequirePackage{penlight} % no option passed here, but extras must be used, error will be thrown if not
+\RequirePackage{penlightplus} % no option passed here, but extras must be used, error will be thrown if not
%\IfFileExists{tinyyaml.lua}{}{\PackageError{yamlvars}{This package requires installation of the 'tinyyaml' package, please install it and try again}{}}
@@ -94,19 +93,19 @@ YAMLvars.xfmDefault = {'lb2nl','addxspace'}
}}
-\newenvironment{declareYAMLvars}{\luadirect{_G[__PENLIGHT__].tex.startrecording()}}{\luadirect{_G[__PENLIGHT__].tex.stoprecording()}
- \luadirect{YAMLvars.declareYAMLvarsStr(_G[__PENLIGHT__].tex.recordedbuf)}
+\newenvironment{declareYAMLvars}{\luadirect{penlight.tex.startrecording()}}{\luadirect{penlight.tex.stoprecording()}
+ \luadirect{YAMLvars.declareYAMLvarsStr(penlight.tex.recordedbuf)}
}
\NewDocumentEnvironment{parseYAMLvars}{}%
{\luadirect{
- _G[__PENLIGHT__].tex.startrecording()
+ penlight.tex.startrecording()
}}%
{\luadirect{
- _G[__PENLIGHT__].tex.stoprecording()
+ penlight.tex.stoprecording()
}}
-\AfterEndEnvironment{parseYAMLvars}{\luadirect{YAMLvars.parseYAMLvarsStr(_G[__PENLIGHT__].tex.recordedbuf)}}
+\AfterEndEnvironment{parseYAMLvars}{\luadirect{YAMLvars.parseYAMLvarsStr(penlight.tex.recordedbuf)}}
% necessary hack to get rohead and lohead to work..
% .. https://tex.stackexchange.com/questions/637018/setting-koma-heading-within-lua/637021?noredirect=1#comment1587387_637021
@@ -116,10 +115,10 @@ YAMLvars.xfmDefault = {'lb2nl','addxspace'}
-\newenvironment{parseYAMLpdfdata}{\luadirect{_G[__PENLIGHT__].tex.startrecording()}}{
- \luadirect{_G[__PENLIGHT__].tex.stoprecording()
- YAMLvars.yaml2PDFmetadata(_G[__PENLIGHT__].tex.recordedbuf)
- _G[__PENLIGHT__].tex.writePDFmetadata()
+\newenvironment{parseYAMLpdfdata}{\luadirect{penlight.tex.startrecording()}}{
+ \luadirect{penlight.tex.stoprecording()
+ YAMLvars.yaml2PDFmetadata(penlight.tex.recordedbuf)
+ penlight.tex.writePDFmetadata()
}
}
diff --git a/macros/luatex/latex/yamlvars/yamlvars.tex b/macros/luatex/latex/yamlvars/yamlvars.tex
index cd6888cea8..552fc21988 100644
--- a/macros/luatex/latex/yamlvars/yamlvars.tex
+++ b/macros/luatex/latex/yamlvars/yamlvars.tex
@@ -1,6 +1,6 @@
% Kale Ewasiuk (kalekje@gmail.com)
-% 2023-07-18
-% Copyright (C) 2021-2022 Kale Ewasiuk
+% 2023-07-22
+% Copyright (C) 2021-2023 Kale Ewasiuk
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the "Software"), to deal
@@ -53,7 +53,6 @@
\date{\today}
-\usepackage[pl,extrasglobals]{penlight}
\usepackage[overwritedefs]{yamlvars}
\title{YAMLvars}
\subtitle{a YAML variable parser for LuaLaTeX}
@@ -115,10 +114,9 @@ The YAML specification: \url{https://yaml.org/spec/}\\
Many of the ``transform'' and ``processing'' functions built-in to this package rely on other packages,
like
-\texttt{hyperref}, for example, but it is not loaded, and this package will only load
-\cmd{penlight},
-\cmd{luacode},
-\cmd{xspace}, and
+\texttt{hyperref}, or \texttt{xspace} for example, but they are not loaded, and this package will only load
+\cmd{penlightplus},
+\cmd{luacode}, \cmd{luakeys}, and
\cmd{etoolbox}.
\section{Declaring variables}
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb b/systems/texlive/tlnet/tlpkg/texlive.tlpdb
index d61c7572b4..11500b1af7 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb
@@ -26,11 +26,11 @@ depend container_split_src_files/1
depend frozen/0
depend minrelease/2016
depend release/2023
-depend revision/67708
+depend revision/67717
name 00texlive.image
category TLCore
-revision 67659
+revision 67718
shortdesc TeX Live files only in the source repository
longdesc The files here are not copied by the installer and containers
longdesc are not built for them; they exist only in the source
@@ -84031,8 +84031,8 @@ catalogue-version 0.1
name create-theorem
category Package
-revision 67629
-shortdesc Multilingual support for theorem-like environments
+revision 67712
+shortdesc Initializing and configuring theorem-like environments, with multilingual support
relocated 1
longdesc This package provides commands for naming, initializing and
longdesc configuring theorem-like environments. These commands have
@@ -84041,17 +84041,17 @@ longdesc multilingual documents, allowing the easy declaration of
longdesc theorem-like environments that can automatically adapt to the
longdesc language settings.
depend crefthe
-containersize 10216
-containerchecksum 9b9248f5c814cce09e7fdfd47438fab49115c7d0f7f7c8ff3d3a4d24eb7b8efefd06dd30732d5a78a3cc3b68c5108da4989e8551b83d737445c2b991fefc3686
-doccontainersize 93992
-doccontainerchecksum e21650e776b5098f4ddedf439c8bc1a6cfa335eb0b3795f3739c96b9fb3ca06afec81877f618a9d5fd12df6e86045172aec10da6085f78d39253801ea3034306
-docfiles size=37
+containersize 11304
+containerchecksum 4e33efc66887fda4505c7036444c7afbebd96594bcd326b8cdb149fb4a429f3cf05f87d6315dd6c207d5f55a9951ec6632ed63aa6f2d4320ac7fbee53d744680
+doccontainersize 99940
+doccontainerchecksum ee71cddaf790679dbc46044e5262f3b5db098f1b57291719bbba68b9e905e5daa20127d1a124b6f1e3d898fa081a3e7003f607ad0bc4191f5f63fca837ab2c7d
+docfiles size=39
RELOC/doc/latex/create-theorem/DEPENDS.txt
RELOC/doc/latex/create-theorem/LICENSE
RELOC/doc/latex/create-theorem/README.md details="Readme"
RELOC/doc/latex/create-theorem/create-theorem-doc.pdf details="Package documentation"
RELOC/doc/latex/create-theorem/create-theorem-doc.tex
-runfiles size=25
+runfiles size=30
RELOC/tex/latex/create-theorem/create-theorem.sty
catalogue-contact-repository https://github.com/Jinwen-XU/create-theorem
catalogue-ctan /macros/latex/contrib/create-theorem
@@ -84060,7 +84060,7 @@ catalogue-topics multilingual maths maths-theorem expl3
name crefthe
category Package
-revision 67706
+revision 67713
shortdesc Cross referencing with proper definite articles
relocated 1
longdesc By default, when using cleveref's \cref to reference
@@ -84070,11 +84070,11 @@ longdesc Spanish, etc. this results in incorrect grammar. For this
longdesc purpose, the current package offers \crefthe, which handles the
longdesc definite articles properly (especially for the article
longdesc contractions in many European languages).
-containersize 4276
-containerchecksum 6dabe7cb343d3b0c00ae1f1c4d523d77fb8b435ab370724de74a4d96626bdd6ccdf793898966ea4d7002ce68cd408df8c92da2d9223898c65e5cfe40a8369edb
-doccontainersize 67824
-doccontainerchecksum f437397a3cbad12e084ebaf2e77d2b4685695759762d42fe491739fed58a801f4c42523ebb3d063dcd0df18d00bdc9fedf79b071f0f263f5e03583d0986d3630
-docfiles size=26
+containersize 4380
+containerchecksum a293288fee39e5370713662a623c1fa88a0c54f44abafe892104e39f78052f313f4b8cb930a6ee42ed7cdc024263b5e889252c57ccd9928cf57efb7f3a023a1f
+doccontainersize 74512
+doccontainerchecksum 93cec85027c71c90b7427ff4597633f38fb67641b6a3e8cf6f8dea1e47efdd660011e18dd7accb7879e4475e654fd21135a899d7fc7701f22fb58e326110353d
+docfiles size=28
RELOC/doc/latex/crefthe/LICENSE
RELOC/doc/latex/crefthe/README.md details="Readme"
RELOC/doc/latex/crefthe/crefthe-doc.pdf details="Package documentation"
@@ -190648,7 +190648,7 @@ catalogue-version 1.2.0
name lm
category Package
-revision 65956
+revision 67718
shortdesc Latin modern fonts in outline formats
relocated 1
longdesc The Latin Modern family of fonts consists of 72 text fonts and
@@ -190663,10 +190663,10 @@ longdesc (qx-*.tfm); TeX'n'ANSI aka LY1 encoding (texnansi-*.tfm); T5
longdesc (Vietnamese) encoding (t5-*.tfm); and Text Companion for EC
longdesc fonts aka TS1 (ts1-*.tfm).
execute addMap lm.map
-containersize 11944808
-containerchecksum 3539ed5b82a1722e6aa1d0ded3b589a39d0d3f0db12069ef160e570b69f7750bc9b2997c167617ac085772377d5ce624e9d5ac2a6563d96f486fba16037c5ac5
+containersize 11944816
+containerchecksum 9e05642ab07ebe05c13d5fa98f3212527aa66a9d049f8eade506cbd9f0652315363a01ae20a9df873055e5283bba7574d51251c7dd86e56ebc37055b92379421
doccontainersize 2511620
-doccontainerchecksum 32bd34845a4f1dc011db635b036504a5488734802e9d2bb6780981e71a16cfb464ea98bd1a92a85ff8ba90159ef95b8954b05d5c8f0ac0e1ce8ff468feb7c891
+doccontainerchecksum d15569c1f55553b068b8d3a73efdbdb74137d02fdda5db5d57f29203dcd92dea7746b73a3f30293b2932f046e60697ea015b83d2587cde2783300fa41967c5b0
docfiles size=883
RELOC/doc/fonts/lm/GUST-FONT-LICENSE.TXT
RELOC/doc/fonts/lm/MANIFEST-Latin-Modern.TXT
@@ -191764,7 +191764,7 @@ runfiles size=10645
RELOC/tex/latex/lm/ts1lmtt.fd
RELOC/tex/latex/lm/ts1lmvtt.fd
catalogue-alias lmodern
-catalogue-contact-home http://www.gust.org.pl/projects/e-foundry/latin-modern
+catalogue-contact-home https://www.gust.org.pl/projects/e-foundry/latin-modern
catalogue-ctan /fonts/lm
catalogue-license gfl
catalogue-topics font font-body font-serif font-sans font-proportional font-mono font-type1 font-otf font-cm
@@ -191772,16 +191772,16 @@ catalogue-version 2.005
name lm-math
category Package
-revision 36915
+revision 67718
shortdesc OpenType maths fonts for Latin Modern
relocated 1
longdesc Latin Modern Math is a maths companion for the Latin Modern
longdesc family of fonts, in OpenType format. For use with LuaLaTeX or
longdesc XeLaTeX, support is available from the unicode-math package.
-containersize 377816
-containerchecksum f2424f917e13aa9805f6738ceed376d6063713dd4c58a5953b5456da4ba81eaba3f0f97963ecf36ead4f68b1311c4c9e30f064002ab8bbf0f5ed3a67db3ead4a
+containersize 377796
+containerchecksum 2fad475b347824d564525de51ed5bd1cc7ab2fc27fd826a00e86ebabd7d85afce2f7a4c85d9620c9b66d14ea0c813a269a13843a0b27eb7d0ca3e294114aad26
doccontainersize 94656
-doccontainerchecksum 262a99ab29fd22976334eabaed77d3326e87b63014d9e640ef8ea31b14382b273a6435f3059aa235c50f9f829ec28adf754763e17a945265495e9a54e7ee53fa
+doccontainerchecksum fb1800349628229dd522d4dffa182ffd2bc9411803f5b349c88f4046d81117d050a3b681e3021a514a6ada5bc49b648b8dda8b553f9294f6d4fc317db0cd5990
docfiles size=37
RELOC/doc/fonts/lm-math/GUST-FONT-LICENSE.txt
RELOC/doc/fonts/lm-math/INSTALL.txt
@@ -191799,7 +191799,7 @@ docfiles size=37
RELOC/doc/fonts/lm-math/test-xelatex-latinmodern_math.tex
runfiles size=180
RELOC/fonts/opentype/public/lm-math/latinmodern-math.otf
-catalogue-contact-home http://www.gust.org.pl/projects/e-foundry/latin-modern
+catalogue-contact-home https://www.gust.org.pl/projects/e-foundry/latin-modern
catalogue-ctan /fonts/lm-math
catalogue-license gfl
catalogue-topics font font-maths font-otf
@@ -197602,17 +197602,17 @@ catalogue-version 0.1q
name lutabulartools
category Package
-revision 67671
+revision 67714
shortdesc Some useful LuaLaTeX-based tabular tools
relocated 1
longdesc This package provides some useful commands for tabular matter.
longdesc It uses LuaLaTeX and offers the ability to combine the
longdesc facilities of multirow and makecell with an easy to use syntax.
longdesc It also adds some enhanced rules for the booktabs package.
-containersize 7552
-containerchecksum 30d060cc998c009aa44ec69509777136e5d00258ef382b16ed8fe38cafd4a5864a08e3690c69da21fda817380b29ee05d90f3e794108f29a28515cb1ae0774ce
-doccontainersize 88464
-doccontainerchecksum ff623e905bba6119a0e954f5e97550758663ad0ea8443f78e1f8a4d22b2a13c383f1665d9ab62bf391b0858fc0f86905a181edd768b155dad618905693851e3d
+containersize 7492
+containerchecksum eeb781b572beed01f5a787a4d0351289c90751ff49a289952a150e3aa013b10f4b0f69fea546709ce9c6ee077a08a551ac9e03d192c1064205eb2af6e907be1d
+doccontainersize 88120
+doccontainerchecksum 9595cf869f480951f9d0d142abb05548e4f71d8af6d62c4ff0626ad9d9019d63b91333bfc8ba1f6948c9075d62fb7b7956658079fd17ea5e86f920eb7c6ed49b
docfiles size=34
RELOC/doc/luatex/lutabulartools/README.md details="Readme"
RELOC/doc/luatex/lutabulartools/lutabulartools.pdf details="Package documentation"
@@ -218783,7 +218783,7 @@ catalogue-topics collection
name msc
category Package
-revision 63291
+revision 67718
shortdesc Draw MSC diagrams
relocated 1
longdesc The package should be useful to all people that prepare their
@@ -218792,10 +218792,10 @@ longdesc their texts. The package is not an MSC editor; it simply takes
longdesc a textual description of an MSC and draws the corresponding
longdesc MSC. The current version of the MSC macro package supports the
longdesc full MSC2000 language.
-containersize 20152
-containerchecksum 7693c105f3a896e842796c0119fbcc692a1d495f394de5e2cbb9df7164b4735723504980e1ca53b76aa152a2b779c06f535542143512882f411eea40814a9d5d
-doccontainersize 251376
-doccontainerchecksum 9f8b33812702f2d9307e7f1a20c091f05da4c03220abbe8d15f3e2a3ad9871fd0806fe45f29557a71953da3c57a3f0a08d21e93570a99542b9d3ea605398e63b
+containersize 20168
+containerchecksum 103ff1fd368f97920f5403691ccb5fafb34c6a291db5d76a83d56f64d1ec452386cb844dfea7462fcec573d86b05fb183034ae8968d7127f4bf425aebac1f087
+doccontainersize 251380
+doccontainerchecksum e336c0969d2f39c06baab3f7573109e11f76acf47767f0653996ea772bc5fc4ac801154c5fa0df2eeaf999699aa0d61c1e7d223b44248fba72dccc8bc1b86663
docfiles size=115
RELOC/doc/latex/msc/COPYRIGHT.txt
RELOC/doc/latex/msc/README.txt details="Package Readme"
@@ -218805,7 +218805,7 @@ docfiles size=115
RELOC/doc/latex/msc/msc.tex
runfiles size=30
RELOC/tex/latex/msc/msc.sty
-catalogue-contact-home http://satoss.uni.lu/mscpackage/
+catalogue-contact-home https://satoss.uni.lu/software/mscpackage/
catalogue-ctan /macros/latex/contrib/msc
catalogue-license lppl1.3
catalogue-topics comp-net pgf-tikz
@@ -246272,24 +246272,23 @@ binfiles arch=x86_64-solaris size=1
name penlight
category Package
-revision 67672
+revision 67716
shortdesc Penlight Lua libraries made available to LuaLaTeX users
relocated 1
longdesc This LuaLaTeX package provides a wrapper to use the penlight
longdesc Lua libraries with LuaLaTeX, with some extra functionality
longdesc added.
-containersize 108568
-containerchecksum 225914ad30ab14d8ca756033beeca6db1f5d84e4231706241a27263b9f44c7343dee5fa51cc88a51f969869576f76713b1e87e67fc2b3c1bc502efdda1d541f3
-doccontainersize 56716
-doccontainerchecksum 2d6901cb677a12cb87831297125583d466ec4dfae12958e830124d7c6b2532d0b35837f6c7945170448fc2cb5b7ceff8223b1b3b8f7434d134749d7ede7aadad
-docfiles size=19
+containersize 101464
+containerchecksum 7765a7beaf9d2f99f383c6723fb7ddf3968f656a433bd519631b539e7c599e4ea26546585c1be6732a42e1632fc11b980ee9316de6cfb765332790f81d548aff
+doccontainersize 23660
+doccontainerchecksum 30307bc7774c3768227da33c31c6296e8d470f1f835f792248ed4ff40e261ea682fd967987396808fcd36e7e0a74c3da2bb947de7eab7af5783e3790857b081e
+docfiles size=9
RELOC/doc/luatex/penlight/README.md details="Readme"
RELOC/doc/luatex/penlight/penlight.pdf details="Package documentation"
RELOC/doc/luatex/penlight/penlight.tex
-runfiles size=113
+runfiles size=105
RELOC/tex/luatex/penlight/penlight.lua
RELOC/tex/luatex/penlight/penlight.sty
- RELOC/tex/luatex/penlight/penlightextras.lua
catalogue-contact-repository https://github.com/kalekje/penlight
catalogue-ctan /macros/luatex/generic/penlight
catalogue-license mit
@@ -254747,7 +254746,7 @@ catalogue-version 1.3.6
name poltawski
category Package
-revision 20075
+revision 67718
shortdesc Antykwa Poltawskiego Family of Fonts
relocated 1
longdesc The package contains the Antykwa Poltawskiego family of fonts
@@ -254755,7 +254754,7 @@ longdesc in the PostScript Type 1 and OpenType formats. The original
longdesc font was designed in the twenties of the XX century by the
longdesc Polish typographer Adam Poltawski(1881-1952). Following the
longdesc route set out by the Latin Modern and TeX Gyre projects
-longdesc (http://www.gust.org.pl/projects/e-foundry), the Antykwa
+longdesc (https://www.gust.org.pl/projects/e-foundry), the Antykwa
longdesc Poltawskiego digitisation project aims at providing a rich
longdesc collection of diacritical characters in the attempt to cover as
longdesc many Latin-based scripts as possible. To our knowledge, the
@@ -254772,10 +254771,10 @@ longdesc font files, containing the same repertoire of 1126 characters.
longdesc The preliminary version of Antykwa Poltawskiego (antp package)
longdesc released in 2000 is rendered obsolete by this package.
execute addMap ap.map
-containersize 6817756
-containerchecksum bbdf230da2f81b48951eb90016745d68b73890f8c34ed2d336212ba33c7662a5bee1ba005d6e44c4370c81d22928e1013fb39e45db2de16fd05543310bb07d17
-doccontainersize 1392136
-doccontainerchecksum 1ebe7bbd99a3316b6c4fd702770c6f14a32de653909099a86433bd847a63b2eb231cba4f74dfaf1155c54a9393ae1bdf25710fdfc25199d09b75a265392ba51b
+containersize 6817740
+containerchecksum 620708dd3f1d2d8b2601377486631c2bdc779d06d2016e1c9ab5869afe00cb88dcb1ebd055b6859ad3e3dd25200c1079b723613283f048c7cd7354977b66b8b9
+doccontainersize 1392140
+doccontainerchecksum 51067d3e930f9cae71d5cdf11d6ac83738e23539c020c93e6f4d8b460e63b04e77caaa41927ed8658056d96ff4fdcfc087e591be991e10c7e95a6b58d56ee368
docfiles size=807
RELOC/doc/fonts/poltawski/GUST-FONT-LICENSE.txt
RELOC/doc/fonts/poltawski/MANIFEST-Antykwa-Poltawskiego.txt
@@ -255638,7 +255637,7 @@ runfiles size=7225
RELOC/tex/latex/poltawski/t5antpl.fd
RELOC/tex/latex/poltawski/ts1antp.fd
RELOC/tex/latex/poltawski/ts1antpl.fd
-catalogue-contact-home http://www.gust.org.pl/projects/e-foundry/poltawski
+catalogue-contact-home https://www.gust.org.pl/projects/e-foundry/poltawski
catalogue-ctan /fonts/poltawski
catalogue-license gfl
catalogue-topics font font-type1 font-otf
@@ -284679,7 +284678,7 @@ catalogue-version 1.6a
name simpleicons
category Package
-revision 67573
+revision 67718
shortdesc Simple Icons for LaTeX
relocated 1
longdesc Similar to FontAwesome icons being provided on LaTeX by the
@@ -284687,16 +284686,16 @@ longdesc fontawesome package, this package aims to do the same with
longdesc Simple Icons. For reference, visit their website:
longdesc https://simpleicons.org/.
execute addMap simpleicons.map
-containersize 2814880
-containerchecksum 9b7503ef5020c43704ba61c05b181fa9f67597a50012596a7381d3b71b8df477d67fb6ab5e8492bc87e1d5ae63ccf8b8dcf42e2b9be1bd3d89e5987c2b143a18
-doccontainersize 2061608
-doccontainerchecksum 9c2e3d079558bea2376a9d39297b7a243ee944edf7c5e3c7d11315430eebeaafdfeba344a5a3a34e373d2035f6fb9d1d401a19657d3b4b3637a5ee284431753f
-docfiles size=536
+containersize 2821672
+containerchecksum 84b6de8f076781aacb226924834fd3682d7db52fc21895422b783ec24afce895af91b99cd77b2e59418f9558aa80ad698cceac62013afef1e160ba891a980333
+doccontainersize 2067384
+doccontainerchecksum 18eab538b9abeff1fdea511ec0306d222f55eb1044e4f530d557f67820d10095157771c99e0e7be30c6a94bdc7467a19e61334dd86fddff6c62f19583b93f933
+docfiles size=538
RELOC/doc/fonts/simpleicons/README.md details="Readme"
RELOC/doc/fonts/simpleicons/bindings.tex
RELOC/doc/fonts/simpleicons/simpleicons.pdf details="Package documentation"
RELOC/doc/fonts/simpleicons/simpleicons.tex
-runfiles size=1063
+runfiles size=1067
RELOC/fonts/enc/dvips/simpleicons/simpleiconseight.enc
RELOC/fonts/enc/dvips/simpleicons/simpleiconsfive.enc
RELOC/fonts/enc/dvips/simpleicons/simpleiconsfour.enc
@@ -284738,7 +284737,7 @@ catalogue-contact-repository https://github.com/ineshbose/simple-icons-latex
catalogue-ctan /fonts/simpleicons
catalogue-license cc-by-1
catalogue-topics font font-symbol font-supp-symbol font-otf font-type1
-catalogue-version 9.4.0
+catalogue-version 9.6.0
name simpleinvoice
category Package
@@ -299969,7 +299968,7 @@ catalogue-version 0.1
name tex-gyre
category Package
-revision 65956
+revision 67718
shortdesc TeX Fonts extending freely available URW fonts
relocated 1
longdesc The TeX-GYRE bundle consists of six font families: TeX Gyre
@@ -300006,10 +300005,10 @@ execute addMap qhv.map
execute addMap qpl.map
execute addMap qtm.map
execute addMap qzc.map
-containersize 7748404
-containerchecksum a14e23d369070ee11c6d5fd4b047d5c1b551bdbb50438170b9b675a69191c2cf12482f0f5587f6466dc7d9b2de697546e2297516e88ef1bed8fa827b516bc279
-doccontainersize 11141772
-doccontainerchecksum a48c2bbd2c017a3ee8f421fb4707225c14b46528fd850f86cc9f50c355546a3a6cc8b5907106dabe59d2ecb0baae494076731fe0eccf2ae852353cbcc7888dd1
+containersize 7748408
+containerchecksum 1274f3afba14dfd8f5e3d409ce08ff5fc8c8419ba5185304cf4668f4778bc454f35221955f67673980966bb332d60a96919ecfe6fe755e1dd1ca5fc5ff57c6bf
+doccontainersize 11141776
+doccontainerchecksum e333af6f7f6cf543eb3ccfadcf22aaebdc9b5e4645bf72331f8833431c51ceb0a85aae036ae265368ba22e0e5b49d03695eb185cf626eb3b7da3807eaf1de1c1
docfiles size=3466
RELOC/doc/fonts/tex-gyre/GUST-FONT-LICENSE.txt
RELOC/doc/fonts/tex-gyre/MANIFEST-TeX-Gyre-Adventor.txt
@@ -300084,7 +300083,7 @@ docfiles size=3466
RELOC/doc/fonts/tex-gyre/qzcmi.fea
RELOC/doc/fonts/tex-gyre/tex-gyre-info-src.zip
srccontainersize 1016896
-srccontainerchecksum 6a498ccedb12363e076421a4873cc760f4027d4b6f09f66011cdef323e844425f52aaf1fd3466b9bcccf35c1b2c50ae3b738bc8167002121e708c869e7ccb926
+srccontainerchecksum 5bc42e8bd3b782d95f1eafcc4477166b2040ac48c56e8388d301d0e3f08301062810a3d1dac948e9ed51a39404173a0fe5e45f3876f41699789cc8ad0264b943
srcfiles size=3204
RELOC/source/fonts/tex-gyre/texgyreadventor-bold.fea
RELOC/source/fonts/tex-gyre/texgyreadventor-bold.sfd
@@ -300916,7 +300915,7 @@ runfiles size=6656
RELOC/tex/latex/tex-gyre/ts1qpl.fd
RELOC/tex/latex/tex-gyre/ts1qtm.fd
RELOC/tex/latex/tex-gyre/ts1qzc.fd
-catalogue-contact-home http://www.gust.org.pl/projects/e-foundry/tex-gyre
+catalogue-contact-home https://www.gust.org.pl/projects/e-foundry/tex-gyre
catalogue-ctan /fonts/tex-gyre
catalogue-license gfl
catalogue-topics font font-otf font-type1 font-collection
@@ -301230,16 +301229,16 @@ catalogue-version 0.4.8
name tex-virtual-academy-pl
category Package
-revision 34177
+revision 67718
shortdesc TeX usage web pages, in Polish
relocated 1
longdesc TeX Virtual Academy is a bundle of Polish documentation in HTML
longdesc format about TeX and Co. It contains information for beginners,
longdesc LaTeX packages, descriptions, etc.
-containersize 520
-containerchecksum b9358f50caf39d274c1684d4514fef0439e015588431883955f7aec63d35f7176ed61671f72cda7ae28125b2a977f25ae66b028b21017f106d8f78bbfc7df109
+containersize 492
+containerchecksum 23005895f708b07162b2b251be125b70dfa8ef6add8ef7c5dbab2c5a2e211f65fce8432cbf3ee324a9b72c2296d5dfffaaf5a52d77425e4d6fc3c042397d6bec
doccontainersize 1080060
-doccontainerchecksum aa73261fb0ffdbb7cdbf85df354490a72bd95e4d98e4a497e98666e6f5533a7f05a7132533db044ba993d86e03fc21825bc6fa7f262e5a0bcdb6de8114d38eee
+doccontainerchecksum fd22d5a6c34e5ab7859bbb515d54e822eb5167853abba3e25d5137df1bc34f0bad9892c16f7ed5dfded8b90651551e1ed84a00d561c561ba18f50fa04e7bc7af
docfiles size=837
RELOC/doc/generic/tex-virtual-academy-pl/README details="Readme"
RELOC/doc/generic/tex-virtual-academy-pl/context/context.html
@@ -301687,7 +301686,7 @@ docfiles size=837
RELOC/doc/generic/tex-virtual-academy-pl/tex/tex.html
RELOC/doc/generic/tex-virtual-academy-pl/tex/tex_key.html
RELOC/doc/generic/tex-virtual-academy-pl/tex/tryby.html
-catalogue-contact-home http://www.gust.org.pl/projects/wirtualna-akademia-texowa
+catalogue-contact-home https://www.gust.org.pl/projects/wirtualna-akademia-texowa
catalogue-ctan /info/tex-virtual-academy-pl
catalogue-license fdl
catalogue-topics documentation polish-doc
@@ -313668,7 +313667,7 @@ docfiles size=376
name texlive-scripts
category TLCore
-revision 67699
+revision 67710
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.
@@ -313676,10 +313675,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 114020
-containerchecksum ad9aafde827d5c73c792a0f89872c68afd2ea810f058d1fdb58071dc1da4a2593e3ee8bda7b3d630a0d0ae35213c47d5028d46aa780548a7792022e0d151d01d
-doccontainersize 428064
-doccontainerchecksum 1129f02e68d39140f387b252dc5a768e1a213c0640e01f0795ba3ed04d82c5bdeb0f31cea93595c94ef71d7010640b008073799c706375b1dcbf4288a2e7860f
+containersize 114016
+containerchecksum 5106764f906af2fb1458b33ee1d44ae1c50e871f83243fe63e7be7898e243d2aa7eba826ebb058f2d61829fdd27b29dcfc0150f3967f5152d9aab9ff19de3495
+doccontainersize 428028
+doccontainerchecksum 6be9665e6313b34ca913f4b59d4f27a235cfd8f0427ca42eca6600796edaa715927236887a7a9fde197a775bb45aff07a2aca4f66e08c5543a03a29e260b98cd
docfiles size=547
doc.html
texmf-dist/doc/man/man1/fmtutil-sys.1
@@ -319923,7 +319922,7 @@ catalogue-version 1.1
name tikz-nfold
category Package
-revision 67306
+revision 67718
shortdesc Triple, quadruple, and n-fold paths with TikZ
relocated 1
longdesc This library adds higher-order paths to TikZ and also fixes
@@ -319931,23 +319930,25 @@ longdesc some graphical issues with TikZ' double paths, used e.g. in
longdesc arrows with an Implies tip. It is also compatible with tikz-cd,
longdesc adding support for triple and higher arrows. Macros to offset
longdesc arbitrary paths are included as well.
-containersize 17100
-containerchecksum 595d464343f05b117cb4927ac507acdcf40478e57f36f363582c3617cf116595fe6939516b29dfcb27b134bd86f1ef42b9e520e3f9a0df22ec2df9ab183c3ab2
-doccontainersize 273176
-doccontainerchecksum 48086f56b33eae8bdc002098e6e5206822b2ebee33c76b4371e048c2b8030c90a07f2e1c4f49bef134b1f04ddfb68fb612837b2fdbf7c3b5cf2cf7ec341a11cf
-docfiles size=83
+containersize 7816
+containerchecksum d227be41f651a45240b3cb79f1aebea5015a06eb75c0a5aa69823731c69cad02c2f8b621de3d10d3b2a334781693f39c47f1b5b560c58ee9c5e7278258bebe5c
+doccontainersize 274432
+doccontainerchecksum a6684f61e230a4de3cd1e4b0da5ce17aff301cd80c434b7c9375d1e4abf3d3b6f3295979153f957b1499894e59d1fbca23e639ee76db6ff6d719df425d1da56b
+docfiles size=84
RELOC/doc/latex/tikz-nfold/README.md details="Readme"
RELOC/doc/latex/tikz-nfold/tikz-nfold-doc.pdf details="Package documentation"
RELOC/doc/latex/tikz-nfold/tikz-nfold-doc.tex
-runfiles size=19
+runfiles size=13
RELOC/tex/latex/tikz-nfold/pgflibrarybezieroffset.code.tex
+ RELOC/tex/latex/tikz-nfold/pgflibrarynfold.code.tex
+ RELOC/tex/latex/tikz-nfold/pgflibraryoffsetpath.code.tex
RELOC/tex/latex/tikz-nfold/tikzlibrarynfold.code.tex
catalogue-contact-bugs https://github.com/jonschz/tikz-nfold/issues
catalogue-contact-repository https://github.com/jonschz/tikz-nfold
catalogue-ctan /graphics/pgf/contrib/tikz-nfold
catalogue-license lppl1.3c
catalogue-topics graphics pgf-tikz
-catalogue-version 0.1.3
+catalogue-version 1.0.0
name tikz-opm
category Package
@@ -320509,14 +320510,14 @@ catalogue-version 0.1.1
name tikz3d-fr
category Package
-revision 67212
+revision 67718
shortdesc Work with some 3D figures
relocated 1
longdesc This is a package for working with some 3D figures.
-containersize 3332
-containerchecksum e90d89c0c08df39c6189fa40a7fd0295645c8608644ff46719db08e73674d8e4acf49847f61514ed6f1df49513af7f7ad8b35b96931b6dd68b407ecafcde5ce2
-doccontainersize 594228
-doccontainerchecksum 37243821b7510ab7c597cf8c4d4c5ce30c0b36d37988b3a5b04b3d4bdc7731c1ff7941fd1f2701bac10dfc97e9f08c42b7b63f26aade611ede0efad33def5dfe
+containersize 3336
+containerchecksum 9b9a726fe0896430c2cbe012dbf72a255eaf15a8737830fa445447ca17644227f9b1a94ea399c95cacc1d84a854ec7c0bc44f4a2a419e22ac9035c9e3fdb9b10
+doccontainersize 594236
+doccontainerchecksum 184c08ebd8be103bc96f90f3e2febd8746aaa4ca478ab8516b91abcf328557b4616db51672c1dfa8938d05026eed8d91b7e63f64f606ca21f494ba02edca5593
docfiles size=156
RELOC/doc/latex/tikz3d-fr/README.md details="Readme"
RELOC/doc/latex/tikz3d-fr/tikz3d-fr-doc.pdf details="Package documentation"
@@ -320529,7 +320530,7 @@ catalogue-contact-support https://github.com/cpierquet/tikz3dfr/issues
catalogue-ctan /graphics/pgf/contrib/tikz3d-fr
catalogue-license lppl1.3c
catalogue-topics graphics-3d pgf-tikz
-catalogue-version 0.1.1
+catalogue-version 0.1.2
name tikzbricks
category Package
@@ -345568,7 +345569,7 @@ catalogue-topics faq
name visualfaq-fr
category Package
-revision 61420
+revision 67718
shortdesc FAQ LaTeX visuelle francophone
relocated 1
longdesc (French version below.) The Visual LaTeX FAQ is an innovative
@@ -345584,9 +345585,9 @@ longdesc a ce que vous souhaitez faire - ou ne pas faire - et la FAQ
longdesc LaTeX visuelle enverra votre navigateur web a la page
longdesc correspondante de la FAQ LaTeX francophone.
containersize 788
-containerchecksum ed7bcfc871d3ff533d954a74bd0212a72349fe0317258edfae79941e7f7cfd47e13de24acfbf524bccddcc66f6e75e9491b25339d26d513cf8170853e1e7ebd4
-doccontainersize 4695644
-doccontainerchecksum 2cc2f861a505f4a705ebb03481c00ba6ecf394041e0fcd2a12bc3c96d2a3ae875fd3ac3e236c03c15e2646228945c036647031a0d95377a2373cf9086e5ec888
+containerchecksum 06a9f22c86f54883ce55b23ba81315e53afed4f7ed2b77d13a8958bc18e5a96cae849a327126843865b6ecd55d7153cf261ab784625b9a848e7dc661df95fbb8
+doccontainersize 4695648
+doccontainerchecksum 8d18a3712c42eb7921d6e0e7d29ac96c4718386643bf967b3c428fe5846830dbaca382822ae3d23523dda2e4c7d5f0d96c137412c2302f5e634471d83fdc4547
docfiles size=2297
RELOC/doc/latex/visualfaq-fr/README details="Readme"
RELOC/doc/latex/visualfaq-fr/VERSION
@@ -345611,7 +345612,7 @@ docfiles size=2297
RELOC/doc/latex/visualfaq-fr/source/watermark.odg
RELOC/doc/latex/visualfaq-fr/troubleshoot-vlf-fr.pdf details="Dealing with visual FAQ problems"
RELOC/doc/latex/visualfaq-fr/visualFAQ-fr.pdf details="The visual FAQ itself"
-catalogue-contact-home https://faq.gutenberg.eu.org/
+catalogue-contact-home https://faq.gutenberg-asso.fr/
catalogue-contact-repository https://github.com/jejust/visualFAQ-fr
catalogue-ctan /info/visualfaq-fr
catalogue-license lppl1.3c
@@ -349882,21 +349883,21 @@ binfiles arch=x86_64-solaris size=1
name wordle
category Package
-revision 67619
+revision 67718
shortdesc Create wordle grids
relocated 1
longdesc This package provides and environment (in french or english) to
longdesc display wordle grids: \begin{WordleGrid} for the English
longdesc version, \begin{GrilleSutom} for the French version.
containersize 2708
-containerchecksum f8af6060dd0ac14ded09b8e704e369742a255c912e809b26e95e8999aaa1fc4af6e3ada19a161410dd9ee0d72d9d0b1179fe156239e4ec66d6124e4f4e4d325e
-doccontainersize 451472
-doccontainerchecksum c13ca1d18d49076580feef0988597ca7fc041a92f4770f149c0683a4c67bafc4ba9391145295890cc2b054772cb9d5aec2e376e7b032607a8f5fa70a0417f3a6
+containerchecksum 829a673f70cfbb6deaa4c988859655d40f964ecc7021a21ff6ba31b31cc3e0cfb350dee3f4728547a4bba277427066746a9ee8a8beb48024d04d36eb1758b069
+doccontainersize 451476
+doccontainerchecksum b9221747d9b5c7cdab9f756887d4b9e3fc156bfef55aa6a5e6354fddf0314c952f15cc63f0d30be81084e91263c713fedfc651b6e7a97664f64b2f9960d78173
docfiles size=150
RELOC/doc/latex/wordle/README.md details="Readme"
- RELOC/doc/latex/wordle/wordle-doc-en.pdf details="Package documentation" language="fr"
+ RELOC/doc/latex/wordle/wordle-doc-en.pdf details="Package documentation"
RELOC/doc/latex/wordle/wordle-doc-en.tex
- RELOC/doc/latex/wordle/wordle-doc-fr.pdf details="Package documentation"
+ RELOC/doc/latex/wordle/wordle-doc-fr.pdf details="Package documentation" language="fr"
RELOC/doc/latex/wordle/wordle-doc-fr.tex
runfiles size=3
RELOC/tex/latex/wordle/wordle.sty
@@ -357631,15 +357632,15 @@ catalogue-version 1.1
name yamlvars
category Package
-revision 67674
+revision 67715
shortdesc A YAML parser and tool for easy LaTeX definition creation
relocated 1
longdesc This LuaLaTeX package provides a YAML parser and some functions
longdesc to declare and define LaTeX definitions using YAML files.
-containersize 5764
-containerchecksum b48f34ae4030bb9fd53d13b3914224b5169d76cf67277886214499ce23e20aefd9ca9856b45f9bc44538aa4a78832cdb83f90172be60662b0155034df658a4f2
-doccontainersize 77092
-doccontainerchecksum 1adbadb17b4f63afb99a484dbaf9ac5e3a8efaeae230c8907a877fd2e78618cbd065f33cc31a3a612fa4b91387fbdbf474b1562f97be6dcc969271b0340cd6e3
+containersize 5660
+containerchecksum bbfe0a99dcf9c05e652e6206c56f1d837e07b417b4b9d9b735a96ec52d9df59f4bd25c5f0d1640371fb3e767f414114a4ad9f72a4abcb5ea8228f141e6dc3b16
+doccontainersize 77136
+doccontainerchecksum f1bf1b62c9771a250b2cdf4c942ffd2dd2ca7a7611a83665b1f26ddd1ca39d2ab7faa20e34ba23ecbae2774510900ee0a17d6efff6f0a825fcb222c513bd6d30
docfiles size=26
RELOC/doc/lualatex/yamlvars/README.md details="Readme"
RELOC/doc/lualatex/yamlvars/yamlvars.pdf details="Package documentation"
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
index 844b1609fb..e6f7bb65c0 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
@@ -1 +1 @@
-1b2d31f1b644dc1738f64fa5db11caee texlive.tlpdb
+bbbd647171504a304d871b1f50817501 texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
index 3fa7cde606..2ba83d8c16 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
@@ -1 +1 @@
-9ff850d40bd1a0e7d2f07ff7d2800128be6d356c01c3a93a8cc46764d12ed93139ae818d1001101b08dc3eba45efc37898928fe472ad7adc1e18a1bed14ab6c4 texlive.tlpdb
+6a59cf4cbe24972cf9022960643d11506d39211f68ce20d1c615c6f9315022ccbefd68a5be75e20daba0c0ada5be9da143507b483616415203b9c764689fad7e texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
index 187c56c573..00e22d6f8f 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
@@ -1,11 +1,11 @@
-----BEGIN PGP SIGNATURE-----
-iQEzBAEBCgAdFiEE2PL4YFeoV+QqiBBqTOGHfhlDjHAFAmS8bJIACgkQTOGHfhlD
-jHC35wf/Uf/4R2p+ddZ59/9mYxwYkr5BuLl9hHe/DEoWJsedbtEJdxSCawavVtxc
-ct1DOK8riAhW5BSi3KvGR4T95ZhGA+CfM6wX14MJJU8AXlUxeE38O0Wz73Hmjis4
-o1p7oLWk4htBiqL6SnZB7ZBRzTaFRHGA7KnFpXwE6rnqZjxPB2ETkWgtzKBJkysE
-rtIBoC09pbvQL4oLEeAKRxp6LQhoFIN1lmGvUbfDDn5WSqfBod9b6BQWm49qgmoD
-iMXIsGRZSgfYQ6YaPSuU+rMZQj6xGmi4tHaMyUWJL48Sr/MvSuCrCcystmb/YWRI
-Dj+CUQxmBUYAFbZ3hBaYwkeIqnBRMg==
-=QuXj
+iQEzBAEBCgAdFiEE2PL4YFeoV+QqiBBqTOGHfhlDjHAFAmS9u88ACgkQTOGHfhlD
+jHDDRAf9HbwgX+xisoEur0U644KrYsFiNesNsEL7UJd0VYOr78mwfiTQAHVChUYw
+3YqlmYcBS0zSqWzzYwvdWUQtTi+uEliF28GP5+JFvkZWg/qCuCDUkQuPNJeF1z+W
+qz3KQvNKubL24+fUnwj3pdrZ+6yG58uTlSb5nno9/DFkjX6O1oifTEm0ND9dhQIF
+F/S4nrRYSkTatq4iKzFAgE44fpbKeSHPcSJgsxSm4tvoz21pCDluLI0MUleGCKfE
+m6DLmwHC6ipDr4cFdpg0633rSRCDvBUcMoDlOwXubuX+Ve862eg+GKh8BSbgxgSd
+89aZzwSjw9YttJXQAP0ueR2r9q4NXg==
+=5t4g
-----END PGP SIGNATURE-----
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
index bf3a94e19e..dc8f64f911 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
Binary files differ
diff --git a/timestamp b/timestamp
index c9be55d704..c55fb858b7 100644
--- a/timestamp
+++ b/timestamp
@@ -2,4 +2,4 @@
# The source CTAN of this site's material:
dante.ctan.org
# The year-month-day-hour-minute of this site's material:
-2023-07-23-02-02
+2023-07-24-02-02