summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-05-17 03:01:58 +0000
committerNorbert Preining <norbert@preining.info>2023-05-17 03:01:58 +0000
commit92ffb9032b85f818a8d3b469ad4d3889c2a44ba1 (patch)
tree54bc1ce009357117a376baa5ffa223f904acee4f
parent95bdae3d8a40af1f2f82f786dc29d3761fe431f1 (diff)
CTAN sync 202305170301
-rw-r--r--FILES.byname540
-rw-r--r--FILES.byname.gzbin2530993 -> 2531157 bytes
-rw-r--r--FILES.last07days456
-rw-r--r--biblio/bibtex/utils/bibcop/bibcop.12
-rw-r--r--biblio/bibtex/utils/bibcop/bibcop.dtx2
-rw-r--r--biblio/bibtex/utils/bibcop/bibcop.pdfbin343290 -> 343404 bytes
-rwxr-xr-xbiblio/bibtex/utils/bibcop/bibcop.pl101
-rw-r--r--biblio/ctan-bibdata/ctan.bib44
-rw-r--r--biblio/ctan-bibdata/ctan.pdfbin3673546 -> 3673155 bytes
-rw-r--r--fonts/kpfonts-otf/README.md4
-rw-r--r--fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-English.ltx2
-rw-r--r--fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-English.pdfbin222298 -> 222301 bytes
-rw-r--r--fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-French.ltx2
-rw-r--r--fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-French.pdfbin223740 -> 223742 bytes
-rw-r--r--fonts/kpfonts-otf/doc/unimath-kpfonts.pdfbin1835161 -> 1835376 bytes
-rw-r--r--fonts/kpfonts-otf/fonts/KpMath-Bold.otfbin203400 -> 203384 bytes
-rw-r--r--fonts/kpfonts-otf/fonts/KpMath-Light.otfbin467916 -> 467916 bytes
-rw-r--r--fonts/kpfonts-otf/fonts/KpMath-Regular.otfbin441588 -> 441588 bytes
-rw-r--r--fonts/kpfonts-otf/fonts/KpMath-Sans.otfbin288264 -> 288272 bytes
-rw-r--r--fonts/kpfonts-otf/fonts/KpMath-SansBold.otfbin172364 -> 172348 bytes
-rw-r--r--fonts/kpfonts-otf/fonts/KpMath-Semibold.otfbin204112 -> 204100 bytes
-rw-r--r--fonts/kpfonts-otf/fonts/KpMono-Bold.otfbin57976 -> 57976 bytes
-rw-r--r--fonts/kpfonts-otf/fonts/KpMono-BoldItalic.otfbin65188 -> 65188 bytes
-rw-r--r--fonts/kpfonts-otf/fonts/KpMono-Italic.otfbin66492 -> 66492 bytes
-rw-r--r--fonts/kpfonts-otf/fonts/KpMono-Regular.otfbin59108 -> 59108 bytes
-rw-r--r--fonts/kpfonts-otf/fonts/KpRoman-Bold.otfbin133408 -> 133408 bytes
-rw-r--r--fonts/kpfonts-otf/fonts/KpRoman-BoldItalic.otfbin143656 -> 143656 bytes
-rw-r--r--fonts/kpfonts-otf/fonts/KpRoman-Italic.otfbin134280 -> 134280 bytes
-rw-r--r--fonts/kpfonts-otf/fonts/KpRoman-Light.otfbin131256 -> 131252 bytes
-rw-r--r--fonts/kpfonts-otf/fonts/KpRoman-LightItalic.otfbin133760 -> 133760 bytes
-rw-r--r--fonts/kpfonts-otf/fonts/KpRoman-Regular.otfbin131524 -> 131484 bytes
-rw-r--r--fonts/kpfonts-otf/fonts/KpRoman-Semibold.otfbin130556 -> 130556 bytes
-rw-r--r--fonts/kpfonts-otf/fonts/KpRoman-SemiboldItalic.otfbin141288 -> 141288 bytes
-rw-r--r--fonts/kpfonts-otf/fonts/KpSans-Bold.otfbin103928 -> 103928 bytes
-rw-r--r--fonts/kpfonts-otf/fonts/KpSans-BoldItalic.otfbin111928 -> 111928 bytes
-rw-r--r--fonts/kpfonts-otf/fonts/KpSans-Italic.otfbin111888 -> 111888 bytes
-rw-r--r--fonts/kpfonts-otf/fonts/KpSans-Regular.otfbin102500 -> 102500 bytes
-rw-r--r--fonts/kpfonts-otf/tex/kpfonts-otf.sty4
-rw-r--r--graphics/pgf/contrib/tikz-nfold/README.md2
-rw-r--r--graphics/pgf/contrib/tikz-nfold/tikz-nfold-doc.pdfbin302747 -> 302791 bytes
-rw-r--r--graphics/pgf/contrib/tikz-nfold/tikzlibrarynfold.code.tex25
-rw-r--r--macros/context/contrib/context-sudoku/sudoku/LICENSE21
-rw-r--r--macros/context/contrib/context-sudoku/sudoku/README.md40
-rw-r--r--macros/context/contrib/context-sudoku/sudoku/VERSION1
-rw-r--r--macros/context/contrib/context-sudoku/sudoku/tex/context/third/sudoku/t-sudoku-test-01.txt9
-rw-r--r--macros/context/contrib/context-sudoku/sudoku/tex/context/third/sudoku/t-sudoku-test-02.txt9
-rw-r--r--macros/context/contrib/context-sudoku/sudoku/tex/context/third/sudoku/t-sudoku-test-03.txt9
-rw-r--r--macros/context/contrib/context-sudoku/sudoku/tex/context/third/sudoku/t-sudoku.lua1237
-rw-r--r--macros/context/contrib/context-sudoku/sudoku/tex/context/third/sudoku/t-sudoku.mkvi217
-rw-r--r--macros/latex/contrib/codedescribe/README.md7
-rw-r--r--macros/latex/contrib/codedescribe/doc/codedescribe.pdfbin246809 -> 250689 bytes
-rw-r--r--macros/latex/contrib/codedescribe/doc/codedescribe.tex221
-rw-r--r--macros/latex/contrib/codedescribe/latex/codedescribe.sty845
-rw-r--r--macros/latex/contrib/codedescribe/latex/codelisting.sty50
-rw-r--r--macros/latex/contrib/l3kernel/CHANGELOG.md12
-rw-r--r--macros/latex/contrib/l3kernel/README.md2
-rw-r--r--macros/latex/contrib/l3kernel/expl3.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/expl3.pdfbin623326 -> 623326 bytes
-rw-r--r--macros/latex/contrib/l3kernel/interface3.pdfbin1711150 -> 1711150 bytes
-rw-r--r--macros/latex/contrib/l3kernel/interface3.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3basics.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3bootstrap.dtx104
-rw-r--r--macros/latex/contrib/l3kernel/l3box.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3candidates.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3cctab.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3clist.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3coffins.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3color.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3debug.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3deprecation.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3doc.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3doc.pdfbin558279 -> 558279 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3docstrip.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3docstrip.pdfbin152066 -> 152066 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3expan.dtx562
-rw-r--r--macros/latex/contrib/l3kernel/l3file.dtx125
-rw-r--r--macros/latex/contrib/l3kernel/l3flag.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-assign.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-aux.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-basics.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-convert.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-expo.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-extended.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-logic.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-parse.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-random.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-round.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-traps.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-trig.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fparray.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3int.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3intarray.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3kernel-functions.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3keys.dtx30
-rw-r--r--macros/latex/contrib/l3kernel/l3legacy.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3luatex.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3msg.dtx7
-rw-r--r--macros/latex/contrib/l3kernel/l3names.dtx78
-rw-r--r--macros/latex/contrib/l3kernel/l3news.pdfbin395876 -> 395876 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news01.pdfbin122710 -> 122710 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news02.pdfbin150674 -> 150674 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news03.pdfbin148706 -> 148706 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news04.pdfbin114586 -> 114586 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news05.pdfbin112485 -> 112485 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news06.pdfbin151569 -> 151569 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news07.pdfbin128316 -> 128316 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news08.pdfbin163456 -> 163456 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news09.pdfbin250136 -> 250136 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news10.pdfbin150283 -> 150283 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news11.pdfbin170076 -> 170076 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news12.pdfbin204992 -> 204992 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3pdf.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3prefixes.csv4
-rw-r--r--macros/latex/contrib/l3kernel/l3prefixes.pdfbin81640 -> 81696 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3prg.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3prop.dtx69
-rw-r--r--macros/latex/contrib/l3kernel/l3quark.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3regex.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3seq.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3skip.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3sort.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3str-convert.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3str.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3styleguide.pdfbin296578 -> 296576 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3styleguide.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3syntax-changes.pdfbin243221 -> 243221 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3syntax-changes.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3sys.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3term-glossary.pdfbin215740 -> 215742 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3term-glossary.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3text-case.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3text-map.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3text-purify.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3text.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3tl-analysis.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3tl.dtx47
-rw-r--r--macros/latex/contrib/l3kernel/l3token.dtx16
-rw-r--r--macros/latex/contrib/l3kernel/l3unicode.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/source3.pdfbin7276733 -> 7203435 bytes
-rw-r--r--macros/latex/contrib/l3kernel/source3.tex2
-rw-r--r--macros/latex/contrib/starray/README.md9
-rw-r--r--macros/latex/contrib/starray/doc/starray.pdfbin206077 -> 217076 bytes
-rw-r--r--macros/latex/contrib/starray/doc/starray.tex33
-rw-r--r--macros/latex/contrib/starray/latex/starray.sty241
-rw-r--r--macros/latex/contrib/tagpdf/README.md4
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-backend.dtx8
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-checks.dtx8
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-code.pdfbin1547941 -> 1561747 bytes
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-data.dtx18
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx6
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx4
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx4
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-roles.dtx4
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-space.dtx4
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-struct.dtx102
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-tree.dtx12
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-user.dtx72
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf.dtx8
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf.pdfbin1002803 -> 1004170 bytes
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf.tex30
-rw-r--r--macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty2
-rw-r--r--macros/unicodetex/latex/adobeornaments/README5
-rw-r--r--macros/unicodetex/latex/adobeornaments/adobeornaments-documentation.pdfbin334885 -> 336786 bytes
-rw-r--r--macros/unicodetex/latex/adobeornaments/adobeornaments-documentation.tex3
-rw-r--r--macros/unicodetex/latex/adobeornaments/adobeornaments.sty4
-rw-r--r--macros/unicodetex/latex/textcsc/README5
-rw-r--r--macros/unicodetex/latex/textcsc/textcsc-documentation.pdfbin49161 -> 52368 bytes
-rw-r--r--macros/unicodetex/latex/textcsc/textcsc-documentation.tex46
-rw-r--r--macros/unicodetex/latex/textcsc/textcsc.pdfbin2827 -> 0 bytes
-rw-r--r--macros/unicodetex/latex/textcsc/textcsc.sty11
-rw-r--r--systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl1
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb122
-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.xzbin2448464 -> 2449512 bytes
-rw-r--r--timestamp2
178 files changed, 3516 insertions, 2290 deletions
diff --git a/FILES.byname b/FILES.byname
index 5522a27ef5..3ec72e61a6 100644
--- a/FILES.byname
+++ b/FILES.byname
@@ -1509,16 +1509,16 @@
1997/02/27 | 18375 | biblio/bibtex/utils/bibclean/bibclean-2.11.3.tar-lst
2006/06/02 | 55589 | biblio/bibtex/utils/bibclean/bibclean.pdf
2006/06/02 | 26456 | biblio/bibtex/utils/bibclean/README
-2023/02/13 | 958 | biblio/bibtex/utils/bibcop/bibcop.1
-2023/02/13 | 14239 | biblio/bibtex/utils/bibcop/bibcop.dtx
-2023/02/13 | 2628 | biblio/bibtex/utils/bibcop/bibcop.ins
-2023/02/13 | 5100 | biblio/bibtex/utils/bibcop/bibcop-logo.pdf
-2023/02/13 | 343290 | biblio/bibtex/utils/bibcop/bibcop.pdf
-2023/02/13 | 20043 | biblio/bibtex/utils/bibcop/bibcop.pl
-2023/02/13 | 24 | biblio/bibtex/utils/bibcop/DEPENDS.txt
-2023/02/13 | 1083 | biblio/bibtex/utils/bibcop/LICENSE.txt
-2023/02/13 | 2683 | biblio/bibtex/utils/bibcop/README.md
-2023/02/13 | 360261 | biblio/bibtex/utils/bibcop.zip
+2023/05/16 | 958 | biblio/bibtex/utils/bibcop/bibcop.1
+2023/05/16 | 14240 | biblio/bibtex/utils/bibcop/bibcop.dtx
+2023/05/16 | 2628 | biblio/bibtex/utils/bibcop/bibcop.ins
+2023/05/16 | 5100 | biblio/bibtex/utils/bibcop/bibcop-logo.pdf
+2023/05/16 | 343404 | biblio/bibtex/utils/bibcop/bibcop.pdf
+2023/05/16 | 21858 | biblio/bibtex/utils/bibcop/bibcop.pl
+2023/05/16 | 24 | biblio/bibtex/utils/bibcop/DEPENDS.txt
+2023/05/16 | 1083 | biblio/bibtex/utils/bibcop/LICENSE.txt
+2023/05/16 | 2683 | biblio/bibtex/utils/bibcop/README.md
+2023/05/16 | 360701 | biblio/bibtex/utils/bibcop.zip
2019/03/30 | 43446 | biblio/bibtex/utils/bibexport/bibexport.dtx
2019/03/30 | 2002 | biblio/bibtex/utils/bibexport/bibexport.ins
2019/03/30 | 256849 | biblio/bibtex/utils/bibexport/bibexport.pdf
@@ -2056,12 +2056,12 @@
2023/04/13 | 1675 | biblio/citation-style-language/README.md
2023/04/13 | 11957 | biblio/citation-style-language/vancouver.csl
2023/04/13 | 4516625 | biblio/citation-style-language.zip
-2023/05/15 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
+2023/05/16 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
2022/10/08 | 127 | biblio/ctan-bibdata/biblatex-ctan/ctan.cbx
-2023/05/15 | 2783841 | biblio/ctan-bibdata/ctan.bib
-2023/05/15 | 3674507 | biblio/ctan-bibdata/ctan.pdf
+2023/05/16 | 2784666 | biblio/ctan-bibdata/ctan.bib
+2023/05/16 | 3673546 | biblio/ctan-bibdata/ctan.pdf
2023/01/16 | 1489 | biblio/ctan-bibdata/README
-2023/05/15 | 4072786 | biblio/ctan-bibdata.zip
+2023/05/16 | 4072050 | 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
@@ -5417,7 +5417,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/05/15 | 91177 | FILES.last07days
+2023/05/16 | 115184 | 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
@@ -62319,41 +62319,41 @@
2006/08/15 | 320 | fonts/kpfonts/latex/ujkpsyc.fd
2006/09/05 | 335 | fonts/kpfonts/latex/ujkpsyd.fd
2008/11/11 | 345 | fonts/kpfonts/latex/ujkpsydw.fd
-2023/03/30 | 33290 | fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-English.ltx
-2023/03/30 | 222298 | fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-English.pdf
-2023/03/30 | 35658 | fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-French.ltx
-2023/03/30 | 223740 | fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-French.pdf
-2023/03/30 | 16806 | fonts/kpfonts-otf/doc/unimath-kpfonts.ltx
-2023/03/30 | 1835161 | fonts/kpfonts-otf/doc/unimath-kpfonts.pdf
-2023/03/30 | 203400 | fonts/kpfonts-otf/fonts/KpMath-Bold.otf
-2023/03/30 | 467916 | fonts/kpfonts-otf/fonts/KpMath-Light.otf
-2023/03/30 | 441588 | fonts/kpfonts-otf/fonts/KpMath-Regular.otf
-2023/03/30 | 172364 | fonts/kpfonts-otf/fonts/KpMath-SansBold.otf
-2023/03/30 | 288264 | fonts/kpfonts-otf/fonts/KpMath-Sans.otf
-2023/03/30 | 204112 | fonts/kpfonts-otf/fonts/KpMath-Semibold.otf
-2023/03/30 | 65188 | fonts/kpfonts-otf/fonts/KpMono-BoldItalic.otf
-2023/03/30 | 57976 | fonts/kpfonts-otf/fonts/KpMono-Bold.otf
-2023/03/30 | 66492 | fonts/kpfonts-otf/fonts/KpMono-Italic.otf
-2023/03/30 | 59108 | fonts/kpfonts-otf/fonts/KpMono-Regular.otf
-2023/03/30 | 143656 | fonts/kpfonts-otf/fonts/KpRoman-BoldItalic.otf
-2023/03/30 | 133408 | fonts/kpfonts-otf/fonts/KpRoman-Bold.otf
-2023/03/30 | 134280 | fonts/kpfonts-otf/fonts/KpRoman-Italic.otf
-2023/03/30 | 133760 | fonts/kpfonts-otf/fonts/KpRoman-LightItalic.otf
-2023/03/30 | 131256 | fonts/kpfonts-otf/fonts/KpRoman-Light.otf
-2023/03/30 | 131524 | fonts/kpfonts-otf/fonts/KpRoman-Regular.otf
-2023/03/30 | 141288 | fonts/kpfonts-otf/fonts/KpRoman-SemiboldItalic.otf
-2023/03/30 | 130556 | fonts/kpfonts-otf/fonts/KpRoman-Semibold.otf
-2023/03/30 | 111928 | fonts/kpfonts-otf/fonts/KpSans-BoldItalic.otf
-2023/03/30 | 103928 | fonts/kpfonts-otf/fonts/KpSans-Bold.otf
-2023/03/30 | 111888 | fonts/kpfonts-otf/fonts/KpSans-Italic.otf
-2023/03/30 | 102500 | fonts/kpfonts-otf/fonts/KpSans-Regular.otf
-2023/03/31 | 9056 | fonts/kpfonts-otf/README.md
-2023/03/30 | 19065 | fonts/kpfonts-otf/tex/kpfonts-otf.sty
-2023/03/30 | 480 | fonts/kpfonts-otf/tex/KpLight.fontspec
-2023/03/30 | 185 | fonts/kpfonts-otf/tex/KpMono.fontspec
-2023/03/30 | 469 | fonts/kpfonts-otf/tex/KpRoman.fontspec
-2023/03/30 | 231 | fonts/kpfonts-otf/tex/KpSans.fontspec
-2023/03/31 | 4467344 | fonts/kpfonts-otf.zip
+2023/05/16 | 33290 | fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-English.ltx
+2023/05/16 | 222301 | fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-English.pdf
+2023/05/16 | 35658 | fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-French.ltx
+2023/05/16 | 223742 | fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-French.pdf
+2023/05/16 | 16806 | fonts/kpfonts-otf/doc/unimath-kpfonts.ltx
+2023/05/16 | 1835376 | fonts/kpfonts-otf/doc/unimath-kpfonts.pdf
+2023/05/16 | 203384 | fonts/kpfonts-otf/fonts/KpMath-Bold.otf
+2023/05/16 | 467916 | fonts/kpfonts-otf/fonts/KpMath-Light.otf
+2023/05/16 | 441588 | fonts/kpfonts-otf/fonts/KpMath-Regular.otf
+2023/05/16 | 172348 | fonts/kpfonts-otf/fonts/KpMath-SansBold.otf
+2023/05/16 | 288272 | fonts/kpfonts-otf/fonts/KpMath-Sans.otf
+2023/05/16 | 204100 | fonts/kpfonts-otf/fonts/KpMath-Semibold.otf
+2023/05/16 | 65188 | fonts/kpfonts-otf/fonts/KpMono-BoldItalic.otf
+2023/05/16 | 57976 | fonts/kpfonts-otf/fonts/KpMono-Bold.otf
+2023/05/16 | 66492 | fonts/kpfonts-otf/fonts/KpMono-Italic.otf
+2023/05/16 | 59108 | fonts/kpfonts-otf/fonts/KpMono-Regular.otf
+2023/05/16 | 143656 | fonts/kpfonts-otf/fonts/KpRoman-BoldItalic.otf
+2023/05/16 | 133408 | fonts/kpfonts-otf/fonts/KpRoman-Bold.otf
+2023/05/16 | 134280 | fonts/kpfonts-otf/fonts/KpRoman-Italic.otf
+2023/05/16 | 133760 | fonts/kpfonts-otf/fonts/KpRoman-LightItalic.otf
+2023/05/16 | 131252 | fonts/kpfonts-otf/fonts/KpRoman-Light.otf
+2023/05/16 | 131484 | fonts/kpfonts-otf/fonts/KpRoman-Regular.otf
+2023/05/16 | 141288 | fonts/kpfonts-otf/fonts/KpRoman-SemiboldItalic.otf
+2023/05/16 | 130556 | fonts/kpfonts-otf/fonts/KpRoman-Semibold.otf
+2023/05/16 | 111928 | fonts/kpfonts-otf/fonts/KpSans-BoldItalic.otf
+2023/05/16 | 103928 | fonts/kpfonts-otf/fonts/KpSans-Bold.otf
+2023/05/16 | 111888 | fonts/kpfonts-otf/fonts/KpSans-Italic.otf
+2023/05/16 | 102500 | fonts/kpfonts-otf/fonts/KpSans-Regular.otf
+2023/05/16 | 9161 | fonts/kpfonts-otf/README.md
+2023/05/16 | 19065 | fonts/kpfonts-otf/tex/kpfonts-otf.sty
+2023/05/16 | 480 | fonts/kpfonts-otf/tex/KpLight.fontspec
+2023/05/16 | 185 | fonts/kpfonts-otf/tex/KpMono.fontspec
+2023/05/16 | 469 | fonts/kpfonts-otf/tex/KpRoman.fontspec
+2023/05/16 | 231 | fonts/kpfonts-otf/tex/KpSans.fontspec
+2023/05/16 | 4468042 | fonts/kpfonts-otf.zip
2023/01/18 | 828 | fonts/kpfonts/README.txt
2023/01/19 | 7354832 | fonts/kpfonts.zip
2010/08/03 | 3884 | fonts/kurier/doc/fonts/kurier/00readme.eng
@@ -160800,12 +160800,12 @@
2019/08/15 | 53372 | graphics/pgf/contrib/tikz-network/tikz-network.sty
2019/08/15 | 145240 | graphics/pgf/contrib/tikz-network/tikz-network.tex
2019/08/15 | 1017759 | graphics/pgf/contrib/tikz-network.zip
-2023/05/01 | 18440 | graphics/pgf/contrib/tikz-nfold/pgflibrarybezieroffset.code.tex
-2023/05/04 | 706 | graphics/pgf/contrib/tikz-nfold/README.md
-2023/05/04 | 52882 | graphics/pgf/contrib/tikz-nfold/tikzlibrarynfold.code.tex
-2023/05/04 | 302747 | graphics/pgf/contrib/tikz-nfold/tikz-nfold-doc.pdf
+2023/05/04 | 18440 | graphics/pgf/contrib/tikz-nfold/pgflibrarybezieroffset.code.tex
+2023/05/16 | 706 | graphics/pgf/contrib/tikz-nfold/README.md
+2023/05/16 | 53517 | graphics/pgf/contrib/tikz-nfold/tikzlibrarynfold.code.tex
+2023/05/16 | 302791 | graphics/pgf/contrib/tikz-nfold/tikz-nfold-doc.pdf
2023/05/04 | 31829 | graphics/pgf/contrib/tikz-nfold/tikz-nfold-doc.tex
-2023/05/04 | 294766 | graphics/pgf/contrib/tikz-nfold.zip
+2023/05/16 | 294985 | graphics/pgf/contrib/tikz-nfold.zip
2014/01/23 | 19106 | graphics/pgf/contrib/tikz-opm/LICENSE
2014/01/23 | 215 | graphics/pgf/contrib/tikz-opm/README
2014/01/23 | 74999 | graphics/pgf/contrib/tikz-opm/tikz-opm.pdf
@@ -194404,7 +194404,7 @@
2023/04/19 | 972462 | install/macros/latex/contrib/l3backend.tds.zip
2023/03/27 | 819288 | install/macros/latex/contrib/l3build.tds.zip
2023/05/11 | 4460074 | install/macros/latex/contrib/l3experimental.tds.zip
-2023/05/11 | 13911503 | install/macros/latex/contrib/l3kernel.tds.zip
+2023/05/16 | 13834586 | install/macros/latex/contrib/l3kernel.tds.zip
2023/02/02 | 2252631 | install/macros/latex/contrib/l3packages.tds.zip
2023/04/12 | 596346 | install/macros/latex/contrib/lastpage.tds.zip
2009/09/02 | 556672 | install/macros/latex/contrib/layouts.tds.zip
@@ -217324,12 +217324,12 @@
2022/01/28 | 3274 | macros/latex/contrib/codebox/README.md
2021/12/26 | 104 | macros/latex/contrib/codebox/test.c
2022/01/28 | 390166 | macros/latex/contrib/codebox.zip
-2023/05/11 | 246809 | macros/latex/contrib/codedescribe/doc/codedescribe.pdf
-2023/05/11 | 18863 | macros/latex/contrib/codedescribe/doc/codedescribe.tex
-2023/05/11 | 26124 | macros/latex/contrib/codedescribe/latex/codedescribe.sty
-2023/05/11 | 26511 | macros/latex/contrib/codedescribe/latex/codelisting.sty
-2023/05/11 | 2649 | macros/latex/contrib/codedescribe/README.md
-2023/05/11 | 245892 | macros/latex/contrib/codedescribe.zip
+2023/05/16 | 250689 | macros/latex/contrib/codedescribe/doc/codedescribe.pdf
+2023/05/16 | 23217 | macros/latex/contrib/codedescribe/doc/codedescribe.tex
+2023/05/16 | 30679 | macros/latex/contrib/codedescribe/latex/codedescribe.sty
+2023/05/16 | 26831 | macros/latex/contrib/codedescribe/latex/codelisting.sty
+2023/05/16 | 2829 | macros/latex/contrib/codedescribe/README.md
+2023/05/16 | 252066 | macros/latex/contrib/codedescribe.zip
2010/03/30 | 46009 | macros/latex/contrib/codedoc/codedoc.cls
2010/03/30 | 598708 | macros/latex/contrib/codedoc/CodeDoc-manual.pdf
2010/03/30 | 156353 | macros/latex/contrib/codedoc/CodeDoc-manual.tex
@@ -227494,110 +227494,110 @@
2023/05/11 | 1624 | macros/latex/contrib/l3experimental/xgalley.ins
2023/05/11 | 299962 | macros/latex/contrib/l3experimental/xgalley.pdf
2023/05/11 | 4421989 | macros/latex/contrib/l3experimental.zip
-2023/05/11 | 47824 | macros/latex/contrib/l3kernel/CHANGELOG.md
-2023/05/11 | 70859 | macros/latex/contrib/l3kernel/expl3.dtx
-2023/05/11 | 623326 | macros/latex/contrib/l3kernel/expl3.pdf
-2023/05/11 | 1711150 | macros/latex/contrib/l3kernel/interface3.pdf
-2023/05/11 | 2038 | macros/latex/contrib/l3kernel/interface3.tex
-2023/05/11 | 129545 | macros/latex/contrib/l3kernel/l3basics.dtx
-2023/05/11 | 14927 | macros/latex/contrib/l3kernel/l3bootstrap.dtx
-2023/05/11 | 87744 | macros/latex/contrib/l3kernel/l3box.dtx
-2023/05/11 | 16709 | macros/latex/contrib/l3kernel/l3candidates.dtx
-2023/05/11 | 32409 | macros/latex/contrib/l3kernel/l3cctab.dtx
-2023/05/11 | 82667 | macros/latex/contrib/l3kernel/l3clist.dtx
-2023/05/11 | 87463 | macros/latex/contrib/l3kernel/l3coffins.dtx
-2023/05/11 | 112270 | macros/latex/contrib/l3kernel/l3color.dtx
-2023/05/11 | 43211 | macros/latex/contrib/l3kernel/l3debug.dtx
-2023/05/11 | 24496 | macros/latex/contrib/l3kernel/l3deprecation.dtx
-2023/05/11 | 155616 | macros/latex/contrib/l3kernel/l3doc.dtx
-2023/05/11 | 558279 | macros/latex/contrib/l3kernel/l3doc.pdf
-2023/05/11 | 2390 | macros/latex/contrib/l3kernel/l3docstrip.dtx
-2023/05/11 | 152066 | macros/latex/contrib/l3kernel/l3docstrip.pdf
-2023/05/11 | 107093 | macros/latex/contrib/l3kernel/l3expan.dtx
-2023/05/11 | 140989 | macros/latex/contrib/l3kernel/l3file.dtx
-2023/05/11 | 10167 | macros/latex/contrib/l3kernel/l3flag.dtx
-2023/05/11 | 11781 | macros/latex/contrib/l3kernel/l3fparray.dtx
-2023/05/11 | 7472 | macros/latex/contrib/l3kernel/l3fp-assign.dtx
-2023/05/11 | 47216 | macros/latex/contrib/l3kernel/l3fp-aux.dtx
-2023/05/11 | 84785 | macros/latex/contrib/l3kernel/l3fp-basics.dtx
-2023/05/11 | 19641 | macros/latex/contrib/l3kernel/l3fp-convert.dtx
-2023/05/11 | 70605 | macros/latex/contrib/l3kernel/l3fp.dtx
-2023/05/11 | 49311 | macros/latex/contrib/l3kernel/l3fp-expo.dtx
-2023/05/11 | 51059 | macros/latex/contrib/l3kernel/l3fp-extended.dtx
-2023/05/11 | 23011 | macros/latex/contrib/l3kernel/l3fp-logic.dtx
-2023/05/11 | 105012 | macros/latex/contrib/l3kernel/l3fp-parse.dtx
-2023/05/11 | 23574 | macros/latex/contrib/l3kernel/l3fp-random.dtx
-2023/05/11 | 18532 | macros/latex/contrib/l3kernel/l3fp-round.dtx
-2023/05/11 | 12777 | macros/latex/contrib/l3kernel/l3fp-traps.dtx
-2023/05/11 | 73835 | macros/latex/contrib/l3kernel/l3fp-trig.dtx
-2023/05/11 | 6224 | macros/latex/contrib/l3kernel/l3.ins
-2023/05/11 | 30508 | macros/latex/contrib/l3kernel/l3intarray.dtx
-2023/05/11 | 92086 | macros/latex/contrib/l3kernel/l3int.dtx
-2023/05/11 | 27248 | macros/latex/contrib/l3kernel/l3kernel-functions.dtx
-2023/05/11 | 127087 | macros/latex/contrib/l3kernel/l3keys.dtx
-2023/05/11 | 4538 | macros/latex/contrib/l3kernel/l3legacy.dtx
-2023/05/11 | 23866 | macros/latex/contrib/l3kernel/l3luatex.dtx
-2023/05/11 | 78026 | macros/latex/contrib/l3kernel/l3msg.dtx
-2023/05/11 | 82260 | macros/latex/contrib/l3kernel/l3names.dtx
-2023/05/11 | 122710 | macros/latex/contrib/l3kernel/l3news01.pdf
-2023/05/11 | 4937 | macros/latex/contrib/l3kernel/l3news01.tex
-2023/05/11 | 150674 | macros/latex/contrib/l3kernel/l3news02.pdf
-2023/05/11 | 6677 | macros/latex/contrib/l3kernel/l3news02.tex
-2023/05/11 | 148706 | macros/latex/contrib/l3kernel/l3news03.pdf
-2023/05/11 | 6482 | macros/latex/contrib/l3kernel/l3news03.tex
-2023/05/11 | 114586 | macros/latex/contrib/l3kernel/l3news04.pdf
-2023/05/11 | 5429 | macros/latex/contrib/l3kernel/l3news04.tex
-2023/05/11 | 112485 | macros/latex/contrib/l3kernel/l3news05.pdf
-2023/05/11 | 4716 | macros/latex/contrib/l3kernel/l3news05.tex
-2023/05/11 | 151569 | macros/latex/contrib/l3kernel/l3news06.pdf
-2023/05/11 | 6433 | macros/latex/contrib/l3kernel/l3news06.tex
-2023/05/11 | 128316 | macros/latex/contrib/l3kernel/l3news07.pdf
-2023/05/11 | 4977 | macros/latex/contrib/l3kernel/l3news07.tex
-2023/05/11 | 163456 | macros/latex/contrib/l3kernel/l3news08.pdf
-2023/05/11 | 9465 | macros/latex/contrib/l3kernel/l3news08.tex
-2023/05/11 | 250136 | macros/latex/contrib/l3kernel/l3news09.pdf
-2023/05/11 | 107383 | macros/latex/contrib/l3kernel/l3news09.tex
-2023/05/11 | 150283 | macros/latex/contrib/l3kernel/l3news10.pdf
-2023/05/11 | 9999 | macros/latex/contrib/l3kernel/l3news10.tex
-2023/05/11 | 170076 | macros/latex/contrib/l3kernel/l3news11.pdf
-2023/05/11 | 8481 | macros/latex/contrib/l3kernel/l3news11.tex
-2023/05/11 | 204992 | macros/latex/contrib/l3kernel/l3news12.pdf
-2023/05/11 | 14913 | macros/latex/contrib/l3kernel/l3news12.tex
-2023/05/11 | 395876 | macros/latex/contrib/l3kernel/l3news.pdf
-2023/05/11 | 4890 | macros/latex/contrib/l3kernel/l3news.tex
-2023/05/11 | 19169 | macros/latex/contrib/l3kernel/l3pdf.dtx
-2023/05/11 | 45418 | macros/latex/contrib/l3kernel/l3prefixes.csv
-2023/05/11 | 81640 | macros/latex/contrib/l3kernel/l3prefixes.pdf
-2023/05/11 | 2821 | macros/latex/contrib/l3kernel/l3prefixes.tex
-2023/05/11 | 70197 | macros/latex/contrib/l3kernel/l3prg.dtx
-2023/05/11 | 57974 | macros/latex/contrib/l3kernel/l3prop.dtx
-2023/05/11 | 35441 | macros/latex/contrib/l3kernel/l3quark.dtx
-2023/05/11 | 304307 | macros/latex/contrib/l3kernel/l3regex.dtx
-2023/05/11 | 97773 | macros/latex/contrib/l3kernel/l3seq.dtx
-2023/05/11 | 75980 | macros/latex/contrib/l3kernel/l3skip.dtx
-2023/05/11 | 40728 | macros/latex/contrib/l3kernel/l3sort.dtx
-2023/05/11 | 113427 | macros/latex/contrib/l3kernel/l3str-convert.dtx
-2023/05/11 | 78692 | macros/latex/contrib/l3kernel/l3str.dtx
-2023/05/11 | 296578 | macros/latex/contrib/l3kernel/l3styleguide.pdf
-2023/05/11 | 11884 | macros/latex/contrib/l3kernel/l3styleguide.tex
-2023/05/11 | 243221 | macros/latex/contrib/l3kernel/l3syntax-changes.pdf
-2023/05/11 | 6267 | macros/latex/contrib/l3kernel/l3syntax-changes.tex
-2023/05/11 | 35086 | macros/latex/contrib/l3kernel/l3sys.dtx
-2023/05/11 | 215740 | macros/latex/contrib/l3kernel/l3term-glossary.pdf
-2023/05/11 | 6169 | macros/latex/contrib/l3kernel/l3term-glossary.tex
-2023/05/11 | 69893 | macros/latex/contrib/l3kernel/l3text-case.dtx
-2023/05/11 | 51775 | macros/latex/contrib/l3kernel/l3text.dtx
-2023/05/11 | 16633 | macros/latex/contrib/l3kernel/l3text-map.dtx
-2023/05/11 | 20359 | macros/latex/contrib/l3kernel/l3text-purify.dtx
-2023/05/11 | 62840 | macros/latex/contrib/l3kernel/l3tl-analysis.dtx
-2023/05/11 | 145224 | macros/latex/contrib/l3kernel/l3tl.dtx
-2023/05/11 | 119588 | macros/latex/contrib/l3kernel/l3token.dtx
-2023/05/11 | 32935 | macros/latex/contrib/l3kernel/l3unicode.dtx
-2023/05/11 | 3116 | macros/latex/contrib/l3kernel/README.md
-2023/05/11 | 24841 | macros/latex/contrib/l3kernel/source3body.tex
-2023/05/11 | 7276733 | macros/latex/contrib/l3kernel/source3.pdf
-2023/05/11 | 2229 | macros/latex/contrib/l3kernel/source3.tex
-2023/05/11 | 13650929 | macros/latex/contrib/l3kernel.zip
+2023/05/16 | 48096 | macros/latex/contrib/l3kernel/CHANGELOG.md
+2023/05/16 | 70859 | macros/latex/contrib/l3kernel/expl3.dtx
+2023/05/16 | 623326 | macros/latex/contrib/l3kernel/expl3.pdf
+2023/05/16 | 1711150 | macros/latex/contrib/l3kernel/interface3.pdf
+2023/05/16 | 2038 | macros/latex/contrib/l3kernel/interface3.tex
+2023/05/16 | 129366 | macros/latex/contrib/l3kernel/l3basics.dtx
+2023/05/16 | 12743 | macros/latex/contrib/l3kernel/l3bootstrap.dtx
+2023/05/16 | 87744 | macros/latex/contrib/l3kernel/l3box.dtx
+2023/05/16 | 16709 | macros/latex/contrib/l3kernel/l3candidates.dtx
+2023/05/16 | 32409 | macros/latex/contrib/l3kernel/l3cctab.dtx
+2023/05/16 | 82667 | macros/latex/contrib/l3kernel/l3clist.dtx
+2023/05/16 | 87463 | macros/latex/contrib/l3kernel/l3coffins.dtx
+2023/05/16 | 112270 | macros/latex/contrib/l3kernel/l3color.dtx
+2023/05/16 | 43211 | macros/latex/contrib/l3kernel/l3debug.dtx
+2023/05/16 | 24496 | macros/latex/contrib/l3kernel/l3deprecation.dtx
+2023/05/16 | 155616 | macros/latex/contrib/l3kernel/l3doc.dtx
+2023/05/16 | 558279 | macros/latex/contrib/l3kernel/l3doc.pdf
+2023/05/16 | 2390 | macros/latex/contrib/l3kernel/l3docstrip.dtx
+2023/05/16 | 152066 | macros/latex/contrib/l3kernel/l3docstrip.pdf
+2023/05/16 | 88705 | macros/latex/contrib/l3kernel/l3expan.dtx
+2023/05/16 | 137107 | macros/latex/contrib/l3kernel/l3file.dtx
+2023/05/16 | 10167 | macros/latex/contrib/l3kernel/l3flag.dtx
+2023/05/16 | 11781 | macros/latex/contrib/l3kernel/l3fparray.dtx
+2023/05/16 | 7472 | macros/latex/contrib/l3kernel/l3fp-assign.dtx
+2023/05/16 | 47216 | macros/latex/contrib/l3kernel/l3fp-aux.dtx
+2023/05/16 | 84785 | macros/latex/contrib/l3kernel/l3fp-basics.dtx
+2023/05/16 | 19641 | macros/latex/contrib/l3kernel/l3fp-convert.dtx
+2023/05/16 | 70605 | macros/latex/contrib/l3kernel/l3fp.dtx
+2023/05/16 | 49311 | macros/latex/contrib/l3kernel/l3fp-expo.dtx
+2023/05/16 | 51059 | macros/latex/contrib/l3kernel/l3fp-extended.dtx
+2023/05/16 | 23011 | macros/latex/contrib/l3kernel/l3fp-logic.dtx
+2023/05/16 | 105012 | macros/latex/contrib/l3kernel/l3fp-parse.dtx
+2023/05/16 | 23574 | macros/latex/contrib/l3kernel/l3fp-random.dtx
+2023/05/16 | 18532 | macros/latex/contrib/l3kernel/l3fp-round.dtx
+2023/05/16 | 12777 | macros/latex/contrib/l3kernel/l3fp-traps.dtx
+2023/05/16 | 73835 | macros/latex/contrib/l3kernel/l3fp-trig.dtx
+2023/05/16 | 6224 | macros/latex/contrib/l3kernel/l3.ins
+2023/05/16 | 30508 | macros/latex/contrib/l3kernel/l3intarray.dtx
+2023/05/16 | 92086 | macros/latex/contrib/l3kernel/l3int.dtx
+2023/05/16 | 27248 | macros/latex/contrib/l3kernel/l3kernel-functions.dtx
+2023/05/16 | 126611 | macros/latex/contrib/l3kernel/l3keys.dtx
+2023/05/16 | 4538 | macros/latex/contrib/l3kernel/l3legacy.dtx
+2023/05/16 | 23866 | macros/latex/contrib/l3kernel/l3luatex.dtx
+2023/05/16 | 77913 | macros/latex/contrib/l3kernel/l3msg.dtx
+2023/05/16 | 78297 | macros/latex/contrib/l3kernel/l3names.dtx
+2023/05/16 | 122710 | macros/latex/contrib/l3kernel/l3news01.pdf
+2023/05/16 | 4937 | macros/latex/contrib/l3kernel/l3news01.tex
+2023/05/16 | 150674 | macros/latex/contrib/l3kernel/l3news02.pdf
+2023/05/16 | 6677 | macros/latex/contrib/l3kernel/l3news02.tex
+2023/05/16 | 148706 | macros/latex/contrib/l3kernel/l3news03.pdf
+2023/05/16 | 6482 | macros/latex/contrib/l3kernel/l3news03.tex
+2023/05/16 | 114586 | macros/latex/contrib/l3kernel/l3news04.pdf
+2023/05/16 | 5429 | macros/latex/contrib/l3kernel/l3news04.tex
+2023/05/16 | 112485 | macros/latex/contrib/l3kernel/l3news05.pdf
+2023/05/16 | 4716 | macros/latex/contrib/l3kernel/l3news05.tex
+2023/05/16 | 151569 | macros/latex/contrib/l3kernel/l3news06.pdf
+2023/05/16 | 6433 | macros/latex/contrib/l3kernel/l3news06.tex
+2023/05/16 | 128316 | macros/latex/contrib/l3kernel/l3news07.pdf
+2023/05/16 | 4977 | macros/latex/contrib/l3kernel/l3news07.tex
+2023/05/16 | 163456 | macros/latex/contrib/l3kernel/l3news08.pdf
+2023/05/16 | 9465 | macros/latex/contrib/l3kernel/l3news08.tex
+2023/05/16 | 250136 | macros/latex/contrib/l3kernel/l3news09.pdf
+2023/05/16 | 107383 | macros/latex/contrib/l3kernel/l3news09.tex
+2023/05/16 | 150283 | macros/latex/contrib/l3kernel/l3news10.pdf
+2023/05/16 | 9999 | macros/latex/contrib/l3kernel/l3news10.tex
+2023/05/16 | 170076 | macros/latex/contrib/l3kernel/l3news11.pdf
+2023/05/16 | 8481 | macros/latex/contrib/l3kernel/l3news11.tex
+2023/05/16 | 204992 | macros/latex/contrib/l3kernel/l3news12.pdf
+2023/05/16 | 14913 | macros/latex/contrib/l3kernel/l3news12.tex
+2023/05/16 | 395876 | macros/latex/contrib/l3kernel/l3news.pdf
+2023/05/16 | 4890 | macros/latex/contrib/l3kernel/l3news.tex
+2023/05/16 | 19169 | macros/latex/contrib/l3kernel/l3pdf.dtx
+2023/05/16 | 46204 | macros/latex/contrib/l3kernel/l3prefixes.csv
+2023/05/16 | 81696 | macros/latex/contrib/l3kernel/l3prefixes.pdf
+2023/05/16 | 2821 | macros/latex/contrib/l3kernel/l3prefixes.tex
+2023/05/16 | 70197 | macros/latex/contrib/l3kernel/l3prg.dtx
+2023/05/16 | 56353 | macros/latex/contrib/l3kernel/l3prop.dtx
+2023/05/16 | 35441 | macros/latex/contrib/l3kernel/l3quark.dtx
+2023/05/16 | 304307 | macros/latex/contrib/l3kernel/l3regex.dtx
+2023/05/16 | 97773 | macros/latex/contrib/l3kernel/l3seq.dtx
+2023/05/16 | 75980 | macros/latex/contrib/l3kernel/l3skip.dtx
+2023/05/16 | 40728 | macros/latex/contrib/l3kernel/l3sort.dtx
+2023/05/16 | 113427 | macros/latex/contrib/l3kernel/l3str-convert.dtx
+2023/05/16 | 78692 | macros/latex/contrib/l3kernel/l3str.dtx
+2023/05/16 | 296576 | macros/latex/contrib/l3kernel/l3styleguide.pdf
+2023/05/16 | 11884 | macros/latex/contrib/l3kernel/l3styleguide.tex
+2023/05/16 | 243221 | macros/latex/contrib/l3kernel/l3syntax-changes.pdf
+2023/05/16 | 6267 | macros/latex/contrib/l3kernel/l3syntax-changes.tex
+2023/05/16 | 35086 | macros/latex/contrib/l3kernel/l3sys.dtx
+2023/05/16 | 215742 | macros/latex/contrib/l3kernel/l3term-glossary.pdf
+2023/05/16 | 6169 | macros/latex/contrib/l3kernel/l3term-glossary.tex
+2023/05/16 | 69893 | macros/latex/contrib/l3kernel/l3text-case.dtx
+2023/05/16 | 51775 | macros/latex/contrib/l3kernel/l3text.dtx
+2023/05/16 | 16633 | macros/latex/contrib/l3kernel/l3text-map.dtx
+2023/05/16 | 20359 | macros/latex/contrib/l3kernel/l3text-purify.dtx
+2023/05/16 | 62840 | macros/latex/contrib/l3kernel/l3tl-analysis.dtx
+2023/05/16 | 144116 | macros/latex/contrib/l3kernel/l3tl.dtx
+2023/05/16 | 119129 | macros/latex/contrib/l3kernel/l3token.dtx
+2023/05/16 | 32935 | macros/latex/contrib/l3kernel/l3unicode.dtx
+2023/05/16 | 3116 | macros/latex/contrib/l3kernel/README.md
+2023/05/16 | 24841 | macros/latex/contrib/l3kernel/source3body.tex
+2023/05/16 | 7203435 | macros/latex/contrib/l3kernel/source3.pdf
+2023/05/16 | 2229 | macros/latex/contrib/l3kernel/source3.tex
+2023/05/16 | 13576933 | macros/latex/contrib/l3kernel.zip
2023/02/02 | 7253 | macros/latex/contrib/l3packages/CHANGELOG.md
2023/02/02 | 1444 | macros/latex/contrib/l3packages/l3keys2e-demo.tex
2023/02/02 | 12312 | macros/latex/contrib/l3packages/l3keys2e.dtx
@@ -237227,11 +237227,11 @@
2022/10/10 | 442 | macros/latex/contrib/standalone/standalone.ins
2022/10/10 | 280807 | macros/latex/contrib/standalone/standalone.pdf
2022/10/10 | 322333 | macros/latex/contrib/standalone.zip
-2023/05/11 | 206077 | macros/latex/contrib/starray/doc/starray.pdf
-2023/05/11 | 28285 | macros/latex/contrib/starray/doc/starray.tex
-2023/05/11 | 53454 | macros/latex/contrib/starray/latex/starray.sty
-2023/05/11 | 2007 | macros/latex/contrib/starray/README.md
-2023/05/12 | 205191 | macros/latex/contrib/starray.zip
+2023/05/16 | 217076 | macros/latex/contrib/starray/doc/starray.pdf
+2023/05/16 | 28661 | macros/latex/contrib/starray/doc/starray.tex
+2023/05/16 | 54825 | macros/latex/contrib/starray/latex/starray.sty
+2023/05/16 | 2153 | macros/latex/contrib/starray/README.md
+2023/05/16 | 215620 | macros/latex/contrib/starray.zip
2011/09/14 | 175639 | macros/latex/contrib/statex2/statex2-example.pdf
2011/09/14 | 5592 | macros/latex/contrib/statex2/statex2-example.tex
2011/09/14 | 17386 | macros/latex/contrib/statex2/statex2.sty
@@ -238050,55 +238050,55 @@
2016/02/03 | 1428 | macros/latex/contrib/tagpair/tagpair.sty
2016/09/23 | 3615 | macros/latex/contrib/tagpair/tagpair.tex
2016/09/23 | 71796 | macros/latex/contrib/tagpair.zip
-2023/04/25 | 23311 | macros/latex/contrib/tagpdf/acrobat.png
-2023/04/25 | 8652 | macros/latex/contrib/tagpdf/ex-AF-file.pdf
-2023/04/25 | 1237 | macros/latex/contrib/tagpdf/ex-AF-file.tex
-2023/04/25 | 17742 | macros/latex/contrib/tagpdf/ex-alt-actualtext-luatex.pdf
-2023/04/25 | 4153 | macros/latex/contrib/tagpdf/ex-alt-actualtext.tex
-2023/04/25 | 6626 | macros/latex/contrib/tagpdf/ex-attribute-luatex.pdf
-2023/04/25 | 1398 | macros/latex/contrib/tagpdf/ex-attribute.tex
-2023/04/25 | 7854 | macros/latex/contrib/tagpdf/ex-formula-problem-luatex.pdf
-2023/04/25 | 1019 | macros/latex/contrib/tagpdf/ex-formula-problem.tex
-2023/04/25 | 22818 | macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.pdf
-2023/04/25 | 2150 | macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.tex
-2023/04/25 | 16888 | macros/latex/contrib/tagpdf/ex-patch-list-luatex.pdf
-2023/04/25 | 2528 | macros/latex/contrib/tagpdf/ex-patch-list-obsolete.tex
-2023/04/25 | 2637 | macros/latex/contrib/tagpdf/ex-patch-list.tex
-2023/04/25 | 18461 | macros/latex/contrib/tagpdf/ex-patch-sectioning-koma-luatex.pdf
-2023/04/25 | 4284 | macros/latex/contrib/tagpdf/ex-patch-sectioning-koma.tex
-2023/04/25 | 21067 | macros/latex/contrib/tagpdf/ex-patch-sectioning-memoir.pdf
-2023/04/25 | 5797 | macros/latex/contrib/tagpdf/ex-patch-sectioning-memoir.tex
-2023/04/25 | 6842 | macros/latex/contrib/tagpdf/ex-softhyphen.pdf
-2023/04/25 | 1073 | macros/latex/contrib/tagpdf/ex-softhyphen.tex
-2023/04/25 | 4618 | macros/latex/contrib/tagpdf/ex-spaceglyph-listings.pdf
-2023/04/25 | 777 | macros/latex/contrib/tagpdf/ex-spaceglyph-listings.tex
-2023/04/25 | 1537 | macros/latex/contrib/tagpdf/ex-structure-obsolete.tex
-2023/04/25 | 19363 | macros/latex/contrib/tagpdf/ex-tagpdf-template.pdf
-2023/04/25 | 801 | macros/latex/contrib/tagpdf/ex-tagpdf-template.tex
-2023/04/25 | 8281 | macros/latex/contrib/tagpdf/global-ex.png
-2023/04/25 | 2022 | macros/latex/contrib/tagpdf/link-figure-input.tex
-2023/04/25 | 141163 | macros/latex/contrib/tagpdf/pac3.PNG
-2023/04/25 | 1177 | macros/latex/contrib/tagpdf/README.md
-2023/04/25 | 40936 | macros/latex/contrib/tagpdf/tagpdf-backend.dtx
-2023/04/25 | 1730 | macros/latex/contrib/tagpdf/tagpdf.bib
-2023/04/25 | 30970 | macros/latex/contrib/tagpdf/tagpdf-checks.dtx
-2023/04/25 | 1547941 | macros/latex/contrib/tagpdf/tagpdf-code.pdf
-2023/04/25 | 2278 | macros/latex/contrib/tagpdf/tagpdf-code.tex
-2023/04/25 | 37453 | macros/latex/contrib/tagpdf/tagpdf-data.dtx
-2023/04/25 | 8219 | macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty
-2023/04/25 | 20875 | macros/latex/contrib/tagpdf/tagpdf.dtx
-2023/04/25 | 3962 | macros/latex/contrib/tagpdf/tagpdf.ins
-2023/04/25 | 27200 | macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx
-2023/04/25 | 15075 | macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx
-2023/04/25 | 15315 | macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx
-2023/04/25 | 1002803 | macros/latex/contrib/tagpdf/tagpdf.pdf
-2023/04/25 | 44243 | macros/latex/contrib/tagpdf/tagpdf-roles.dtx
-2023/04/25 | 5109 | macros/latex/contrib/tagpdf/tagpdf-space.dtx
-2023/04/25 | 61831 | macros/latex/contrib/tagpdf/tagpdf-struct.dtx
-2023/04/25 | 113250 | macros/latex/contrib/tagpdf/tagpdf.tex
-2023/04/25 | 17343 | macros/latex/contrib/tagpdf/tagpdf-tree.dtx
-2023/04/25 | 29991 | macros/latex/contrib/tagpdf/tagpdf-user.dtx
-2023/04/25 | 2280112 | macros/latex/contrib/tagpdf.zip
+2023/05/16 | 23311 | macros/latex/contrib/tagpdf/acrobat.png
+2023/05/16 | 8652 | macros/latex/contrib/tagpdf/ex-AF-file.pdf
+2023/05/16 | 1237 | macros/latex/contrib/tagpdf/ex-AF-file.tex
+2023/05/16 | 17742 | macros/latex/contrib/tagpdf/ex-alt-actualtext-luatex.pdf
+2023/05/16 | 4153 | macros/latex/contrib/tagpdf/ex-alt-actualtext.tex
+2023/05/16 | 6626 | macros/latex/contrib/tagpdf/ex-attribute-luatex.pdf
+2023/05/16 | 1398 | macros/latex/contrib/tagpdf/ex-attribute.tex
+2023/05/16 | 7854 | macros/latex/contrib/tagpdf/ex-formula-problem-luatex.pdf
+2023/05/16 | 1019 | macros/latex/contrib/tagpdf/ex-formula-problem.tex
+2023/05/16 | 22818 | macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.pdf
+2023/05/16 | 2150 | macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.tex
+2023/05/16 | 16888 | macros/latex/contrib/tagpdf/ex-patch-list-luatex.pdf
+2023/05/16 | 2528 | macros/latex/contrib/tagpdf/ex-patch-list-obsolete.tex
+2023/05/16 | 2637 | macros/latex/contrib/tagpdf/ex-patch-list.tex
+2023/05/16 | 18461 | macros/latex/contrib/tagpdf/ex-patch-sectioning-koma-luatex.pdf
+2023/05/16 | 4284 | macros/latex/contrib/tagpdf/ex-patch-sectioning-koma.tex
+2023/05/16 | 21067 | macros/latex/contrib/tagpdf/ex-patch-sectioning-memoir.pdf
+2023/05/16 | 5797 | macros/latex/contrib/tagpdf/ex-patch-sectioning-memoir.tex
+2023/05/16 | 6842 | macros/latex/contrib/tagpdf/ex-softhyphen.pdf
+2023/05/16 | 1073 | macros/latex/contrib/tagpdf/ex-softhyphen.tex
+2023/05/16 | 4618 | macros/latex/contrib/tagpdf/ex-spaceglyph-listings.pdf
+2023/05/16 | 777 | macros/latex/contrib/tagpdf/ex-spaceglyph-listings.tex
+2023/05/16 | 1537 | macros/latex/contrib/tagpdf/ex-structure-obsolete.tex
+2023/05/16 | 19363 | macros/latex/contrib/tagpdf/ex-tagpdf-template.pdf
+2023/05/16 | 801 | macros/latex/contrib/tagpdf/ex-tagpdf-template.tex
+2023/05/16 | 8281 | macros/latex/contrib/tagpdf/global-ex.png
+2023/05/16 | 2022 | macros/latex/contrib/tagpdf/link-figure-input.tex
+2023/05/16 | 141163 | macros/latex/contrib/tagpdf/pac3.PNG
+2023/05/16 | 1177 | macros/latex/contrib/tagpdf/README.md
+2023/05/16 | 40936 | macros/latex/contrib/tagpdf/tagpdf-backend.dtx
+2023/05/16 | 1730 | macros/latex/contrib/tagpdf/tagpdf.bib
+2023/05/16 | 30992 | macros/latex/contrib/tagpdf/tagpdf-checks.dtx
+2023/05/16 | 1561747 | macros/latex/contrib/tagpdf/tagpdf-code.pdf
+2023/05/16 | 2278 | macros/latex/contrib/tagpdf/tagpdf-code.tex
+2023/05/16 | 37453 | macros/latex/contrib/tagpdf/tagpdf-data.dtx
+2023/05/16 | 8219 | macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty
+2023/05/16 | 20874 | macros/latex/contrib/tagpdf/tagpdf.dtx
+2023/05/16 | 3962 | macros/latex/contrib/tagpdf/tagpdf.ins
+2023/05/16 | 27200 | macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx
+2023/05/16 | 15075 | macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx
+2023/05/16 | 15315 | macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx
+2023/05/16 | 1004170 | macros/latex/contrib/tagpdf/tagpdf.pdf
+2023/05/16 | 44243 | macros/latex/contrib/tagpdf/tagpdf-roles.dtx
+2023/05/16 | 5109 | macros/latex/contrib/tagpdf/tagpdf-space.dtx
+2023/05/16 | 64084 | macros/latex/contrib/tagpdf/tagpdf-struct.dtx
+2023/05/16 | 113938 | macros/latex/contrib/tagpdf/tagpdf.tex
+2023/05/16 | 17548 | macros/latex/contrib/tagpdf/tagpdf-tree.dtx
+2023/05/16 | 30507 | macros/latex/contrib/tagpdf/tagpdf-user.dtx
+2023/05/16 | 2289687 | macros/latex/contrib/tagpdf.zip
2007/08/04 | 1263 | macros/latex/contrib/talk/example.tex
2007/08/04 | 465 | macros/latex/contrib/talk/Makefile
2007/08/04 | 2162 | macros/latex/contrib/talk/README
@@ -253792,13 +253792,13 @@
2021/12/09 | 28920 | macros/unicodetex/latex/aalok/LICENSE.md
2021/12/16 | 2370 | macros/unicodetex/latex/aalok/README.txt
2022/01/02 | 188424 | macros/unicodetex/latex/aalok.zip
-2023/05/14 | 334885 | macros/unicodetex/latex/adobeornaments/adobeornaments-documentation.pdf
-2023/05/14 | 7365 | macros/unicodetex/latex/adobeornaments/adobeornaments-documentation.tex
+2023/05/15 | 336786 | macros/unicodetex/latex/adobeornaments/adobeornaments-documentation.pdf
+2023/05/15 | 7436 | macros/unicodetex/latex/adobeornaments/adobeornaments-documentation.tex
2023/05/14 | 263773 | macros/unicodetex/latex/adobeornaments/adobeornaments-list.pdf
2023/05/14 | 3048 | macros/unicodetex/latex/adobeornaments/adobeornaments-list.tex
-2023/05/14 | 3358 | macros/unicodetex/latex/adobeornaments/adobeornaments.sty
-2023/05/14 | 542 | macros/unicodetex/latex/adobeornaments/README
-2023/05/15 | 582407 | macros/unicodetex/latex/adobeornaments.zip
+2023/05/15 | 3358 | macros/unicodetex/latex/adobeornaments/adobeornaments.sty
+2023/05/15 | 578 | macros/unicodetex/latex/adobeornaments/README
+2023/05/16 | 584315 | macros/unicodetex/latex/adobeornaments.zip
2023/03/11 | 130437 | macros/unicodetex/latex/alchemist/alchemist.pdf
2023/03/11 | 2144 | macros/unicodetex/latex/alchemist/alchemist-ref.bib
2023/03/11 | 15328 | macros/unicodetex/latex/alchemist/alchemist.sty
@@ -254237,12 +254237,11 @@
2021/02/09 | 106690 | macros/unicodetex/latex/texnegar/xepersian-XB.pdf
2021/02/09 | 3113 | macros/unicodetex/latex/texnegar/xepersian-XB.tex
2021/02/09 | 4898310 | macros/unicodetex/latex/texnegar.zip
-2023/04/24 | 596 | macros/unicodetex/latex/textcsc/README
-2023/04/24 | 49161 | macros/unicodetex/latex/textcsc/textcsc-documentation.pdf
-2023/04/24 | 5948 | macros/unicodetex/latex/textcsc/textcsc-documentation.tex
-2022/09/10 | 2827 | macros/unicodetex/latex/textcsc/textcsc.pdf
-2023/04/24 | 1723 | macros/unicodetex/latex/textcsc/textcsc.sty
-2023/04/24 | 53655 | macros/unicodetex/latex/textcsc.zip
+2023/05/15 | 651 | macros/unicodetex/latex/textcsc/README
+2023/05/14 | 52368 | macros/unicodetex/latex/textcsc/textcsc-documentation.pdf
+2023/05/14 | 6786 | macros/unicodetex/latex/textcsc/textcsc-documentation.tex
+2023/05/13 | 1830 | macros/unicodetex/latex/textcsc/textcsc.sty
+2023/05/16 | 54590 | macros/unicodetex/latex/textcsc.zip
2023/02/13 | 458 | macros/unicodetex/latex/tipauni/README.txt
2023/02/13 | 20890 | macros/unicodetex/latex/tipauni/tipauni-commands.pdf
2023/02/13 | 4509 | macros/unicodetex/latex/tipauni/tipauni-commands.tex
@@ -289501,9 +289500,9 @@
2019/02/28 | 288 | systems/texlive/tlnet/archive/amsthdoc-it.r45662.tar.xz
2022/09/29 | 469112 | systems/texlive/tlnet/archive/andika.doc.r64540.tar.xz
2022/09/29 | 2853924 | systems/texlive/tlnet/archive/andika.r64540.tar.xz
-2022/09/16 | 3143336 | systems/texlive/tlnet/archive/animate.doc.r64401.tar.xz
-2022/09/16 | 23864 | systems/texlive/tlnet/archive/animate.r64401.tar.xz
-2022/09/16 | 30204 | systems/texlive/tlnet/archive/animate.source.r64401.tar.xz
+2023/05/16 | 3147708 | systems/texlive/tlnet/archive/animate.doc.r67123.tar.xz
+2023/05/16 | 23860 | systems/texlive/tlnet/archive/animate.r67123.tar.xz
+2023/05/16 | 30216 | systems/texlive/tlnet/archive/animate.source.r67123.tar.xz
2020/07/30 | 1134124 | systems/texlive/tlnet/archive/annee-scolaire.doc.r55988.tar.xz
2020/07/30 | 1404 | systems/texlive/tlnet/archive/annee-scolaire.r55988.tar.xz
2020/07/30 | 5896 | systems/texlive/tlnet/archive/annee-scolaire.source.r55988.tar.xz
@@ -290133,12 +290132,12 @@
2019/02/28 | 5756 | systems/texlive/tlnet/archive/beamercolorthemeowl.source.r40105.tar.xz
2020/05/12 | 1885368 | systems/texlive/tlnet/archive/beamerdarkthemes.doc.r55117.tar.xz
2020/05/12 | 1828 | systems/texlive/tlnet/archive/beamerdarkthemes.r55117.tar.xz
-2023/02/20 | 2513624 | systems/texlive/tlnet/archive/beamer.doc.r65984.tar.xz
+2023/05/16 | 2920400 | systems/texlive/tlnet/archive/beamer.doc.r67124.tar.xz
2022/04/28 | 367212 | systems/texlive/tlnet/archive/beamer-fuberlin.doc.r63161.tar.xz
2022/04/28 | 3168 | systems/texlive/tlnet/archive/beamer-fuberlin.r63161.tar.xz
2020/03/24 | 77044 | systems/texlive/tlnet/archive/beamerposter.doc.r54512.tar.xz
2020/03/24 | 7456 | systems/texlive/tlnet/archive/beamerposter.r54512.tar.xz
-2023/02/20 | 167444 | systems/texlive/tlnet/archive/beamer.r65984.tar.xz
+2023/05/16 | 167600 | systems/texlive/tlnet/archive/beamer.r67124.tar.xz
2023/02/04 | 233384 | systems/texlive/tlnet/archive/beamer-rl.doc.r65725.tar.xz
2023/02/04 | 8352 | systems/texlive/tlnet/archive/beamer-rl.r65725.tar.xz
2019/02/28 | 375856 | systems/texlive/tlnet/archive/beamersubframe.doc.r23510.tar.xz
@@ -291464,7 +291463,7 @@
2020/03/04 | 396 | systems/texlive/tlnet/archive/collection-langkorean.r54074.tar.xz
2021/06/13 | 808 | systems/texlive/tlnet/archive/collection-langother.r59564.tar.xz
2020/03/04 | 408 | systems/texlive/tlnet/archive/collection-langpolish.r54074.tar.xz
-2020/03/04 | 392 | systems/texlive/tlnet/archive/collection-langportuguese.r54074.tar.xz
+2023/05/16 | 400 | systems/texlive/tlnet/archive/collection-langportuguese.r67125.tar.xz
2020/03/07 | 380 | systems/texlive/tlnet/archive/collection-langspanish.r54141.tar.xz
2023/05/13 | 6872 | systems/texlive/tlnet/archive/collection-latexextra.r67085.tar.xz
2022/06/10 | 700 | systems/texlive/tlnet/archive/collection-latex.r63515.tar.xz
@@ -292033,7 +292032,7 @@
2023/02/18 | 177276 | systems/texlive/tlnet/archive/cweb.amd64-freebsd.r65877.tar.xz
2023/02/20 | 147836 | systems/texlive/tlnet/archive/cweb.amd64-netbsd.r65923.tar.xz
2023/02/18 | 118596 | systems/texlive/tlnet/archive/cweb.armhf-linux.r65877.tar.xz
-2023/04/06 | 73548 | systems/texlive/tlnet/archive/cweb.doc.r66770.tar.xz
+2023/05/16 | 73548 | systems/texlive/tlnet/archive/cweb.doc.r67120.tar.xz
2023/02/18 | 140668 | systems/texlive/tlnet/archive/cweb.i386-freebsd.r65877.tar.xz
2023/02/18 | 144220 | systems/texlive/tlnet/archive/cweb.i386-linux.r65877.tar.xz
2023/02/20 | 117724 | systems/texlive/tlnet/archive/cweb.i386-netbsd.r65923.tar.xz
@@ -292041,7 +292040,7 @@
2019/02/28 | 240884 | systems/texlive/tlnet/archive/cweb-latex.doc.r28878.tar.xz
2019/02/28 | 36236 | systems/texlive/tlnet/archive/cweb-latex.r28878.tar.xz
2019/02/28 | 9720 | systems/texlive/tlnet/archive/cweb-old.r49271.tar.xz
-2023/04/06 | 24376 | systems/texlive/tlnet/archive/cweb.r66770.tar.xz
+2023/05/16 | 24376 | systems/texlive/tlnet/archive/cweb.r67120.tar.xz
2023/02/20 | 332852 | systems/texlive/tlnet/archive/cweb.universal-darwin.r65895.tar.xz
2023/02/20 | 110408 | systems/texlive/tlnet/archive/cweb.windows.r65891.tar.xz
2023/03/11 | 111940 | systems/texlive/tlnet/archive/cweb.x86_64-cygwin.r66544.tar.xz
@@ -294687,9 +294686,9 @@
2022/12/14 | 10156 | systems/texlive/tlnet/archive/huawei.source.r65264.tar.xz
2022/10/17 | 328068 | systems/texlive/tlnet/archive/huaz.doc.r64723.tar.xz
2022/10/17 | 4692 | systems/texlive/tlnet/archive/huaz.r64723.tar.xz
-2021/02/01 | 213632 | systems/texlive/tlnet/archive/hu-berlin-bundle.doc.r57580.tar.xz
-2021/02/01 | 8244 | systems/texlive/tlnet/archive/hu-berlin-bundle.r57580.tar.xz
-2021/02/01 | 17768 | systems/texlive/tlnet/archive/hu-berlin-bundle.source.r57580.tar.xz
+2023/05/16 | 213984 | systems/texlive/tlnet/archive/hu-berlin-bundle.doc.r67128.tar.xz
+2023/05/16 | 8292 | systems/texlive/tlnet/archive/hu-berlin-bundle.r67128.tar.xz
+2023/05/16 | 17820 | systems/texlive/tlnet/archive/hu-berlin-bundle.source.r67128.tar.xz
2023/05/12 | 126832 | systems/texlive/tlnet/archive/huffman.doc.r67071.tar.xz
2023/05/12 | 3036 | systems/texlive/tlnet/archive/huffman.r67071.tar.xz
2020/11/04 | 146568 | systems/texlive/tlnet/archive/hulipsum.doc.r56848.tar.xz
@@ -296746,8 +296745,8 @@
2019/02/28 | 1092 | systems/texlive/tlnet/archive/mceinleger.r15878.tar.xz
2021/09/13 | 232948 | systems/texlive/tlnet/archive/mcexam.doc.r60481.tar.xz
2021/09/13 | 11396 | systems/texlive/tlnet/archive/mcexam.r60481.tar.xz
-2023/05/08 | 885140 | systems/texlive/tlnet/archive/mcf2graph.doc.r67048.tar.xz
-2023/05/08 | 444 | systems/texlive/tlnet/archive/mcf2graph.r67048.tar.xz
+2023/05/16 | 882512 | systems/texlive/tlnet/archive/mcf2graph.doc.r67122.tar.xz
+2023/05/16 | 444 | systems/texlive/tlnet/archive/mcf2graph.r67122.tar.xz
2019/02/28 | 138716 | systems/texlive/tlnet/archive/mcite.doc.r18173.tar.xz
2019/02/28 | 391980 | systems/texlive/tlnet/archive/mciteplus.doc.r31648.tar.xz
2019/02/28 | 34344 | systems/texlive/tlnet/archive/mciteplus.r31648.tar.xz
@@ -297501,8 +297500,8 @@
2022/03/21 | 6560 | systems/texlive/tlnet/archive/newcastle-bst.r62856.tar.xz
2019/02/28 | 407624 | systems/texlive/tlnet/archive/newcommand.doc.r18704.tar.xz
2019/02/28 | 496 | systems/texlive/tlnet/archive/newcommand.r18704.tar.xz
-2023/03/04 | 14308808 | systems/texlive/tlnet/archive/newcomputermodern.doc.r66327.tar.xz
-2023/03/04 | 5700404 | systems/texlive/tlnet/archive/newcomputermodern.r66327.tar.xz
+2023/05/16 | 14333024 | systems/texlive/tlnet/archive/newcomputermodern.doc.r67121.tar.xz
+2023/05/16 | 5704360 | systems/texlive/tlnet/archive/newcomputermodern.r67121.tar.xz
2019/02/28 | 1632 | systems/texlive/tlnet/archive/newenviron.doc.r29331.tar.xz
2019/02/28 | 2488 | systems/texlive/tlnet/archive/newenviron.r29331.tar.xz
2019/02/28 | 147644 | systems/texlive/tlnet/archive/newfile.doc.r15878.tar.xz
@@ -299185,6 +299184,9 @@
2023/02/24 | 1269628 | systems/texlive/tlnet/archive/ptex.x86_64-linuxmusl.r66084.tar.xz
2023/02/24 | 1222812 | systems/texlive/tlnet/archive/ptex.x86_64-linux.r66084.tar.xz
2023/02/26 | 1260320 | systems/texlive/tlnet/archive/ptex.x86_64-solaris.r66145.tar.xz
+2023/05/16 | 131832 | systems/texlive/tlnet/archive/ptlatexcommands.doc.r67125.tar.xz
+2023/05/16 | 3412 | systems/texlive/tlnet/archive/ptlatexcommands.r67125.tar.xz
+2023/05/16 | 4476 | systems/texlive/tlnet/archive/ptlatexcommands.source.r67125.tar.xz
2019/04/06 | 246244 | systems/texlive/tlnet/archive/ptolemaicastronomy.doc.r50810.tar.xz
2019/04/06 | 1600 | systems/texlive/tlnet/archive/ptolemaicastronomy.r50810.tar.xz
2019/04/06 | 4856 | systems/texlive/tlnet/archive/ptolemaicastronomy.source.r50810.tar.xz
@@ -299622,8 +299624,8 @@
2019/02/28 | 282876 | systems/texlive/tlnet/archive/sageep.doc.r15878.tar.xz
2019/02/28 | 7772 | systems/texlive/tlnet/archive/sageep.r15878.tar.xz
2019/02/28 | 6944 | systems/texlive/tlnet/archive/sageep.source.r15878.tar.xz
-2022/07/01 | 385128 | systems/texlive/tlnet/archive/sanitize-umlaut.doc.r63770.tar.xz
-2022/07/01 | 1684 | systems/texlive/tlnet/archive/sanitize-umlaut.r63770.tar.xz
+2023/05/16 | 402216 | systems/texlive/tlnet/archive/sanitize-umlaut.doc.r67126.tar.xz
+2023/05/16 | 2048 | systems/texlive/tlnet/archive/sanitize-umlaut.r67126.tar.xz
2022/02/05 | 969684 | systems/texlive/tlnet/archive/sankey.doc.r61874.tar.xz
2022/02/05 | 9856 | systems/texlive/tlnet/archive/sankey.r61874.tar.xz
2022/02/05 | 27868 | systems/texlive/tlnet/archive/sankey.source.r61874.tar.xz
@@ -300898,7 +300900,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/05/15 | 426732 | systems/texlive/tlnet/archive/texlive-scripts.doc.r67103.tar.xz
+2023/05/16 | 426732 | systems/texlive/tlnet/archive/texlive-scripts.doc.r67117.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
@@ -300920,7 +300922,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/05/15 | 114092 | systems/texlive/tlnet/archive/texlive-scripts.r67103.tar.xz
+2023/05/16 | 114088 | systems/texlive/tlnet/archive/texlive-scripts.r67117.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
@@ -301215,9 +301217,9 @@
2019/02/28 | 33908 | systems/texlive/tlnet/archive/thumbs.source.r33134.tar.xz
2019/02/28 | 155976 | systems/texlive/tlnet/archive/thumby.doc.r16736.tar.xz
2019/02/28 | 3268 | systems/texlive/tlnet/archive/thumby.r16736.tar.xz
-2023/04/09 | 1646024 | systems/texlive/tlnet/archive/thuthesis.doc.r66804.tar.xz
-2023/04/09 | 43548 | systems/texlive/tlnet/archive/thuthesis.r66804.tar.xz
-2023/04/09 | 47872 | systems/texlive/tlnet/archive/thuthesis.source.r66804.tar.xz
+2023/05/16 | 1680800 | systems/texlive/tlnet/archive/thuthesis.doc.r67127.tar.xz
+2023/05/16 | 44724 | systems/texlive/tlnet/archive/thuthesis.r67127.tar.xz
+2023/05/16 | 49284 | systems/texlive/tlnet/archive/thuthesis.source.r67127.tar.xz
2019/02/28 | 488008 | systems/texlive/tlnet/archive/ticket.doc.r42280.tar.xz
2019/02/28 | 3996 | systems/texlive/tlnet/archive/ticket.r42280.tar.xz
2019/02/28 | 371572 | systems/texlive/tlnet/archive/ticollege.doc.r36306.tar.xz
@@ -302782,16 +302784,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/05/15 | 5733913 | systems/texlive/tlnet/install-tl-unx.tar.gz
-2023/05/15 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
-2023/05/15 | 488 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2023/05/16 | 5736236 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2023/05/16 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2023/05/16 | 488 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
2023/05/13 | 5083 | systems/texlive/tlnet/install-tl-windows.bat
-2023/05/15 | 21036817 | systems/texlive/tlnet/install-tl-windows.exe
-2023/05/15 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
-2023/05/15 | 488 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2023/05/15 | 26025751 | systems/texlive/tlnet/install-tl.zip
-2023/05/15 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
-2023/05/15 | 488 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2023/05/16 | 21037089 | systems/texlive/tlnet/install-tl-windows.exe
+2023/05/16 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2023/05/16 | 488 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2023/05/16 | 26025742 | systems/texlive/tlnet/install-tl.zip
+2023/05/16 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2023/05/16 | 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
@@ -302801,7 +302803,7 @@
2023/01/17 | 1280 | systems/texlive/tlnet/tlpkg/gpg/trustdb.gpg
2023/01/17 | 49938 | systems/texlive/tlnet/tlpkg/installer/config.guess
2010/11/11 | 11651 | systems/texlive/tlnet/tlpkg/installer/COPYING.MinGW-runtime.txt
-2023/05/14 | 7570 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
+2023/05/15 | 7566 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2023/01/11 | 216583 | 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
@@ -302843,12 +302845,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/05/15 | 18103721 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
-2023/05/15 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2023/05/16 | 18105073 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2023/05/16 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
2023/02/20 | 86803 | systems/texlive/tlnet/tlpkg/TeXLive/TLPDB.pm
-2023/05/15 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
-2023/05/15 | 488 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2023/05/15 | 2450428 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2023/05/16 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2023/05/16 | 488 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2023/05/16 | 2448464 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
2023/02/20 | 58928 | systems/texlive/tlnet/tlpkg/TeXLive/TLPOBJ.pm
2023/02/26 | 42350 | systems/texlive/tlnet/tlpkg/TeXLive/TLPSRC.pm
2023/02/21 | 16138 | systems/texlive/tlnet/tlpkg/TeXLive/TLTREE.pm
@@ -313338,7 +313340,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/05/16 | 186 | timestamp
+2023/05/17 | 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 bda14dcc2d..f70af771b6 100644
--- a/FILES.byname.gz
+++ b/FILES.byname.gz
Binary files differ
diff --git a/FILES.last07days b/FILES.last07days
index 560c1b1d1d..b10f819f56 100644
--- a/FILES.last07days
+++ b/FILES.last07days
@@ -1,3 +1,262 @@
+2023/05/16 | 9999 | macros/latex/contrib/l3kernel/l3news10.tex
+2023/05/16 | 97773 | macros/latex/contrib/l3kernel/l3seq.dtx
+2023/05/16 | 958 | biblio/bibtex/utils/bibcop/bibcop.1
+2023/05/16 | 9465 | macros/latex/contrib/l3kernel/l3news08.tex
+2023/05/16 | 92086 | macros/latex/contrib/l3kernel/l3int.dtx
+2023/05/16 | 9161 | fonts/kpfonts-otf/README.md
+2023/05/16 | 88705 | macros/latex/contrib/l3kernel/l3expan.dtx
+2023/05/16 | 882512 | systems/texlive/tlnet/archive/mcf2graph.doc.r67122.tar.xz
+2023/05/16 | 87744 | macros/latex/contrib/l3kernel/l3box.dtx
+2023/05/16 | 87463 | macros/latex/contrib/l3kernel/l3coffins.dtx
+2023/05/16 | 8652 | macros/latex/contrib/tagpdf/ex-AF-file.pdf
+2023/05/16 | 8481 | macros/latex/contrib/l3kernel/l3news11.tex
+2023/05/16 | 84785 | macros/latex/contrib/l3kernel/l3fp-basics.dtx
+2023/05/16 | 8292 | systems/texlive/tlnet/archive/hu-berlin-bundle.r67128.tar.xz
+2023/05/16 | 8281 | macros/latex/contrib/tagpdf/global-ex.png
+2023/05/16 | 82667 | macros/latex/contrib/l3kernel/l3clist.dtx
+2023/05/16 | 8219 | macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty
+2023/05/16 | 81696 | macros/latex/contrib/l3kernel/l3prefixes.pdf
+2023/05/16 | 801 | macros/latex/contrib/tagpdf/ex-tagpdf-template.tex
+2023/05/16 | 78692 | macros/latex/contrib/l3kernel/l3str.dtx
+2023/05/16 | 7854 | macros/latex/contrib/tagpdf/ex-formula-problem-luatex.pdf
+2023/05/16 | 78297 | macros/latex/contrib/l3kernel/l3names.dtx
+2023/05/16 | 77913 | macros/latex/contrib/l3kernel/l3msg.dtx
+2023/05/16 | 777 | macros/latex/contrib/tagpdf/ex-spaceglyph-listings.tex
+2023/05/16 | 75980 | macros/latex/contrib/l3kernel/l3skip.dtx
+2023/05/16 | 7472 | macros/latex/contrib/l3kernel/l3fp-assign.dtx
+2023/05/16 | 73835 | macros/latex/contrib/l3kernel/l3fp-trig.dtx
+2023/05/16 | 73548 | systems/texlive/tlnet/archive/cweb.doc.r67120.tar.xz
+2023/05/16 | 7203435 | macros/latex/contrib/l3kernel/source3.pdf
+2023/05/16 | 70859 | macros/latex/contrib/l3kernel/expl3.dtx
+2023/05/16 | 706 | graphics/pgf/contrib/tikz-nfold/README.md
+2023/05/16 | 70605 | macros/latex/contrib/l3kernel/l3fp.dtx
+2023/05/16 | 70197 | macros/latex/contrib/l3kernel/l3prg.dtx
+2023/05/16 | 69893 | macros/latex/contrib/l3kernel/l3text-case.dtx
+2023/05/16 | 6842 | macros/latex/contrib/tagpdf/ex-softhyphen.pdf
+2023/05/16 | 6677 | macros/latex/contrib/l3kernel/l3news02.tex
+2023/05/16 | 66492 | fonts/kpfonts-otf/fonts/KpMono-Italic.otf
+2023/05/16 | 6626 | macros/latex/contrib/tagpdf/ex-attribute-luatex.pdf
+2023/05/16 | 65188 | fonts/kpfonts-otf/fonts/KpMono-BoldItalic.otf
+2023/05/16 | 6482 | macros/latex/contrib/l3kernel/l3news03.tex
+2023/05/16 | 6433 | macros/latex/contrib/l3kernel/l3news06.tex
+2023/05/16 | 64084 | macros/latex/contrib/tagpdf/tagpdf-struct.dtx
+2023/05/16 | 62840 | macros/latex/contrib/l3kernel/l3tl-analysis.dtx
+2023/05/16 | 6267 | macros/latex/contrib/l3kernel/l3syntax-changes.tex
+2023/05/16 | 623326 | macros/latex/contrib/l3kernel/expl3.pdf
+2023/05/16 | 6224 | macros/latex/contrib/l3kernel/l3.ins
+2023/05/16 | 6169 | macros/latex/contrib/l3kernel/l3term-glossary.tex
+2023/05/16 | 59108 | fonts/kpfonts-otf/fonts/KpMono-Regular.otf
+2023/05/16 | 584315 | macros/unicodetex/latex/adobeornaments.zip
+2023/05/16 | 5797 | macros/latex/contrib/tagpdf/ex-patch-sectioning-memoir.tex
+2023/05/16 | 57976 | fonts/kpfonts-otf/fonts/KpMono-Bold.otf
+2023/05/16 | 5736236 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2023/05/16 | 5704360 | systems/texlive/tlnet/archive/newcomputermodern.r67121.tar.xz
+2023/05/16 | 56353 | macros/latex/contrib/l3kernel/l3prop.dtx
+2023/05/16 | 558279 | macros/latex/contrib/l3kernel/l3doc.pdf
+2023/05/16 | 54825 | macros/latex/contrib/starray/latex/starray.sty
+2023/05/16 | 54590 | macros/unicodetex/latex/textcsc.zip
+2023/05/16 | 5429 | macros/latex/contrib/l3kernel/l3news04.tex
+2023/05/16 | 53517 | graphics/pgf/contrib/tikz-nfold/tikzlibrarynfold.code.tex
+2023/05/16 | 51775 | macros/latex/contrib/l3kernel/l3text.dtx
+2023/05/16 | 5109 | macros/latex/contrib/tagpdf/tagpdf-space.dtx
+2023/05/16 | 51059 | macros/latex/contrib/l3kernel/l3fp-extended.dtx
+2023/05/16 | 5100 | biblio/bibtex/utils/bibcop/bibcop-logo.pdf
+2023/05/16 | 4977 | macros/latex/contrib/l3kernel/l3news07.tex
+2023/05/16 | 4937 | macros/latex/contrib/l3kernel/l3news01.tex
+2023/05/16 | 49311 | macros/latex/contrib/l3kernel/l3fp-expo.dtx
+2023/05/16 | 49284 | systems/texlive/tlnet/archive/thuthesis.source.r67127.tar.xz
+2023/05/16 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2023/05/16 | 4890 | macros/latex/contrib/l3kernel/l3news.tex
+2023/05/16 | 488 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2023/05/16 | 488 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2023/05/16 | 488 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2023/05/16 | 488 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2023/05/16 | 480 | fonts/kpfonts-otf/tex/KpLight.fontspec
+2023/05/16 | 48096 | macros/latex/contrib/l3kernel/CHANGELOG.md
+2023/05/16 | 47216 | macros/latex/contrib/l3kernel/l3fp-aux.dtx
+2023/05/16 | 4716 | macros/latex/contrib/l3kernel/l3news05.tex
+2023/05/16 | 469 | fonts/kpfonts-otf/tex/KpRoman.fontspec
+2023/05/16 | 467916 | fonts/kpfonts-otf/fonts/KpMath-Light.otf
+2023/05/16 | 46204 | macros/latex/contrib/l3kernel/l3prefixes.csv
+2023/05/16 | 4618 | macros/latex/contrib/tagpdf/ex-spaceglyph-listings.pdf
+2023/05/16 | 4538 | macros/latex/contrib/l3kernel/l3legacy.dtx
+2023/05/16 | 4476 | systems/texlive/tlnet/archive/ptlatexcommands.source.r67125.tar.xz
+2023/05/16 | 44724 | systems/texlive/tlnet/archive/thuthesis.r67127.tar.xz
+2023/05/16 | 4468042 | fonts/kpfonts-otf.zip
+2023/05/16 | 444 | systems/texlive/tlnet/archive/mcf2graph.r67122.tar.xz
+2023/05/16 | 44243 | macros/latex/contrib/tagpdf/tagpdf-roles.dtx
+2023/05/16 | 441588 | fonts/kpfonts-otf/fonts/KpMath-Regular.otf
+2023/05/16 | 43211 | macros/latex/contrib/l3kernel/l3debug.dtx
+2023/05/16 | 4284 | macros/latex/contrib/tagpdf/ex-patch-sectioning-koma.tex
+2023/05/16 | 426732 | systems/texlive/tlnet/archive/texlive-scripts.doc.r67117.tar.xz
+2023/05/16 | 4153 | macros/latex/contrib/tagpdf/ex-alt-actualtext.tex
+2023/05/16 | 40936 | macros/latex/contrib/tagpdf/tagpdf-backend.dtx
+2023/05/16 | 40728 | macros/latex/contrib/l3kernel/l3sort.dtx
+2023/05/16 | 4072050 | biblio/ctan-bibdata.zip
+2023/05/16 | 402216 | systems/texlive/tlnet/archive/sanitize-umlaut.doc.r67126.tar.xz
+2023/05/16 | 400 | systems/texlive/tlnet/archive/collection-langportuguese.r67125.tar.xz
+2023/05/16 | 3962 | macros/latex/contrib/tagpdf/tagpdf.ins
+2023/05/16 | 395876 | macros/latex/contrib/l3kernel/l3news.pdf
+2023/05/16 | 37453 | macros/latex/contrib/tagpdf/tagpdf-data.dtx
+2023/05/16 | 3673546 | biblio/ctan-bibdata/ctan.pdf
+2023/05/16 | 360701 | biblio/bibtex/utils/bibcop.zip
+2023/05/16 | 35658 | fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-French.ltx
+2023/05/16 | 35441 | macros/latex/contrib/l3kernel/l3quark.dtx
+2023/05/16 | 35086 | macros/latex/contrib/l3kernel/l3sys.dtx
+2023/05/16 | 343404 | biblio/bibtex/utils/bibcop/bibcop.pdf
+2023/05/16 | 3412 | systems/texlive/tlnet/archive/ptlatexcommands.r67125.tar.xz
+2023/05/16 | 33290 | fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-English.ltx
+2023/05/16 | 32935 | macros/latex/contrib/l3kernel/l3unicode.dtx
+2023/05/16 | 32409 | macros/latex/contrib/l3kernel/l3cctab.dtx
+2023/05/16 | 3147708 | systems/texlive/tlnet/archive/animate.doc.r67123.tar.xz
+2023/05/16 | 3116 | macros/latex/contrib/l3kernel/README.md
+2023/05/16 | 30992 | macros/latex/contrib/tagpdf/tagpdf-checks.dtx
+2023/05/16 | 30679 | macros/latex/contrib/codedescribe/latex/codedescribe.sty
+2023/05/16 | 30508 | macros/latex/contrib/l3kernel/l3intarray.dtx
+2023/05/16 | 30507 | macros/latex/contrib/tagpdf/tagpdf-user.dtx
+2023/05/16 | 304307 | macros/latex/contrib/l3kernel/l3regex.dtx
+2023/05/16 | 302791 | graphics/pgf/contrib/tikz-nfold/tikz-nfold-doc.pdf
+2023/05/16 | 30216 | systems/texlive/tlnet/archive/animate.source.r67123.tar.xz
+2023/05/16 | 296576 | macros/latex/contrib/l3kernel/l3styleguide.pdf
+2023/05/16 | 294985 | graphics/pgf/contrib/tikz-nfold.zip
+2023/05/16 | 2920400 | systems/texlive/tlnet/archive/beamer.doc.r67124.tar.xz
+2023/05/16 | 288272 | fonts/kpfonts-otf/fonts/KpMath-Sans.otf
+2023/05/16 | 28661 | macros/latex/contrib/starray/doc/starray.tex
+2023/05/16 | 2829 | macros/latex/contrib/codedescribe/README.md
+2023/05/16 | 2821 | macros/latex/contrib/l3kernel/l3prefixes.tex
+2023/05/16 | 2784666 | biblio/ctan-bibdata/ctan.bib
+2023/05/16 | 27248 | macros/latex/contrib/l3kernel/l3kernel-functions.dtx
+2023/05/16 | 27200 | macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx
+2023/05/16 | 2683 | biblio/bibtex/utils/bibcop/README.md
+2023/05/16 | 26831 | macros/latex/contrib/codedescribe/latex/codelisting.sty
+2023/05/16 | 2637 | macros/latex/contrib/tagpdf/ex-patch-list.tex
+2023/05/16 | 2628 | biblio/bibtex/utils/bibcop/bibcop.ins
+2023/05/16 | 26025742 | systems/texlive/tlnet/install-tl.zip
+2023/05/16 | 2528 | macros/latex/contrib/tagpdf/ex-patch-list-obsolete.tex
+2023/05/16 | 252066 | macros/latex/contrib/codedescribe.zip
+2023/05/16 | 250689 | macros/latex/contrib/codedescribe/doc/codedescribe.pdf
+2023/05/16 | 250136 | macros/latex/contrib/l3kernel/l3news09.pdf
+2023/05/16 | 24 | biblio/bibtex/utils/bibcop/DEPENDS.txt
+2023/05/16 | 24841 | macros/latex/contrib/l3kernel/source3body.tex
+2023/05/16 | 24496 | macros/latex/contrib/l3kernel/l3deprecation.dtx
+2023/05/16 | 2448464 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2023/05/16 | 24376 | systems/texlive/tlnet/archive/cweb.r67120.tar.xz
+2023/05/16 | 243221 | macros/latex/contrib/l3kernel/l3syntax-changes.pdf
+2023/05/16 | 2390 | macros/latex/contrib/l3kernel/l3docstrip.dtx
+2023/05/16 | 23866 | macros/latex/contrib/l3kernel/l3luatex.dtx
+2023/05/16 | 23860 | systems/texlive/tlnet/archive/animate.r67123.tar.xz
+2023/05/16 | 23574 | macros/latex/contrib/l3kernel/l3fp-random.dtx
+2023/05/16 | 23311 | macros/latex/contrib/tagpdf/acrobat.png
+2023/05/16 | 23217 | macros/latex/contrib/codedescribe/doc/codedescribe.tex
+2023/05/16 | 231 | fonts/kpfonts-otf/tex/KpSans.fontspec
+2023/05/16 | 23011 | macros/latex/contrib/l3kernel/l3fp-logic.dtx
+2023/05/16 | 2289687 | macros/latex/contrib/tagpdf.zip
+2023/05/16 | 22818 | macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.pdf
+2023/05/16 | 2278 | macros/latex/contrib/tagpdf/tagpdf-code.tex
+2023/05/16 | 223742 | fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-French.pdf
+2023/05/16 | 2229 | macros/latex/contrib/l3kernel/source3.tex
+2023/05/16 | 222301 | fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-English.pdf
+2023/05/16 | 21858 | biblio/bibtex/utils/bibcop/bibcop.pl
+2023/05/16 | 217076 | macros/latex/contrib/starray/doc/starray.pdf
+2023/05/16 | 215742 | macros/latex/contrib/l3kernel/l3term-glossary.pdf
+2023/05/16 | 215620 | macros/latex/contrib/starray.zip
+2023/05/16 | 2153 | macros/latex/contrib/starray/README.md
+2023/05/16 | 2150 | macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.tex
+2023/05/16 | 213984 | systems/texlive/tlnet/archive/hu-berlin-bundle.doc.r67128.tar.xz
+2023/05/16 | 21067 | macros/latex/contrib/tagpdf/ex-patch-sectioning-memoir.pdf
+2023/05/16 | 21037089 | systems/texlive/tlnet/install-tl-windows.exe
+2023/05/16 | 20874 | macros/latex/contrib/tagpdf/tagpdf.dtx
+2023/05/16 | 204992 | macros/latex/contrib/l3kernel/l3news12.pdf
+2023/05/16 | 2048 | systems/texlive/tlnet/archive/sanitize-umlaut.r67126.tar.xz
+2023/05/16 | 204100 | fonts/kpfonts-otf/fonts/KpMath-Semibold.otf
+2023/05/16 | 2038 | macros/latex/contrib/l3kernel/interface3.tex
+2023/05/16 | 20359 | macros/latex/contrib/l3kernel/l3text-purify.dtx
+2023/05/16 | 203384 | fonts/kpfonts-otf/fonts/KpMath-Bold.otf
+2023/05/16 | 2022 | macros/latex/contrib/tagpdf/link-figure-input.tex
+2023/05/16 | 19641 | macros/latex/contrib/l3kernel/l3fp-convert.dtx
+2023/05/16 | 19363 | macros/latex/contrib/tagpdf/ex-tagpdf-template.pdf
+2023/05/16 | 19169 | macros/latex/contrib/l3kernel/l3pdf.dtx
+2023/05/16 | 19065 | fonts/kpfonts-otf/tex/kpfonts-otf.sty
+2023/05/16 | 185 | fonts/kpfonts-otf/tex/KpMono.fontspec
+2023/05/16 | 18532 | macros/latex/contrib/l3kernel/l3fp-round.dtx
+2023/05/16 | 18461 | macros/latex/contrib/tagpdf/ex-patch-sectioning-koma-luatex.pdf
+2023/05/16 | 1835376 | fonts/kpfonts-otf/doc/unimath-kpfonts.pdf
+2023/05/16 | 18105073 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2023/05/16 | 17820 | systems/texlive/tlnet/archive/hu-berlin-bundle.source.r67128.tar.xz
+2023/05/16 | 17742 | macros/latex/contrib/tagpdf/ex-alt-actualtext-luatex.pdf
+2023/05/16 | 17548 | macros/latex/contrib/tagpdf/tagpdf-tree.dtx
+2023/05/16 | 1730 | macros/latex/contrib/tagpdf/tagpdf.bib
+2023/05/16 | 172348 | fonts/kpfonts-otf/fonts/KpMath-SansBold.otf
+2023/05/16 | 1711150 | macros/latex/contrib/l3kernel/interface3.pdf
+2023/05/16 | 170076 | macros/latex/contrib/l3kernel/l3news11.pdf
+2023/05/16 | 16888 | macros/latex/contrib/tagpdf/ex-patch-list-luatex.pdf
+2023/05/16 | 1680800 | systems/texlive/tlnet/archive/thuthesis.doc.r67127.tar.xz
+2023/05/16 | 16806 | fonts/kpfonts-otf/doc/unimath-kpfonts.ltx
+2023/05/16 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
+2023/05/16 | 167600 | systems/texlive/tlnet/archive/beamer.r67124.tar.xz
+2023/05/16 | 16709 | macros/latex/contrib/l3kernel/l3candidates.dtx
+2023/05/16 | 16633 | macros/latex/contrib/l3kernel/l3text-map.dtx
+2023/05/16 | 163456 | macros/latex/contrib/l3kernel/l3news08.pdf
+2023/05/16 | 1561747 | macros/latex/contrib/tagpdf/tagpdf-code.pdf
+2023/05/16 | 155616 | macros/latex/contrib/l3kernel/l3doc.dtx
+2023/05/16 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2023/05/16 | 1537 | macros/latex/contrib/tagpdf/ex-structure-obsolete.tex
+2023/05/16 | 15315 | macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx
+2023/05/16 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2023/05/16 | 152066 | macros/latex/contrib/l3kernel/l3docstrip.pdf
+2023/05/16 | 151569 | macros/latex/contrib/l3kernel/l3news06.pdf
+2023/05/16 | 15075 | macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx
+2023/05/16 | 150674 | macros/latex/contrib/l3kernel/l3news02.pdf
+2023/05/16 | 150283 | macros/latex/contrib/l3kernel/l3news10.pdf
+2023/05/16 | 14913 | macros/latex/contrib/l3kernel/l3news12.tex
+2023/05/16 | 148706 | macros/latex/contrib/l3kernel/l3news03.pdf
+2023/05/16 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2023/05/16 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2023/05/16 | 144116 | macros/latex/contrib/l3kernel/l3tl.dtx
+2023/05/16 | 143656 | fonts/kpfonts-otf/fonts/KpRoman-BoldItalic.otf
+2023/05/16 | 14333024 | systems/texlive/tlnet/archive/newcomputermodern.doc.r67121.tar.xz
+2023/05/16 | 14240 | biblio/bibtex/utils/bibcop/bibcop.dtx
+2023/05/16 | 141288 | fonts/kpfonts-otf/fonts/KpRoman-SemiboldItalic.otf
+2023/05/16 | 141163 | macros/latex/contrib/tagpdf/pac3.PNG
+2023/05/16 | 1398 | macros/latex/contrib/tagpdf/ex-attribute.tex
+2023/05/16 | 13834586 | install/macros/latex/contrib/l3kernel.tds.zip
+2023/05/16 | 137107 | macros/latex/contrib/l3kernel/l3file.dtx
+2023/05/16 | 13576933 | macros/latex/contrib/l3kernel.zip
+2023/05/16 | 134280 | fonts/kpfonts-otf/fonts/KpRoman-Italic.otf
+2023/05/16 | 133760 | fonts/kpfonts-otf/fonts/KpRoman-LightItalic.otf
+2023/05/16 | 133408 | fonts/kpfonts-otf/fonts/KpRoman-Bold.otf
+2023/05/16 | 131832 | systems/texlive/tlnet/archive/ptlatexcommands.doc.r67125.tar.xz
+2023/05/16 | 131484 | fonts/kpfonts-otf/fonts/KpRoman-Regular.otf
+2023/05/16 | 131252 | fonts/kpfonts-otf/fonts/KpRoman-Light.otf
+2023/05/16 | 130556 | fonts/kpfonts-otf/fonts/KpRoman-Semibold.otf
+2023/05/16 | 129366 | macros/latex/contrib/l3kernel/l3basics.dtx
+2023/05/16 | 128316 | macros/latex/contrib/l3kernel/l3news07.pdf
+2023/05/16 | 12777 | macros/latex/contrib/l3kernel/l3fp-traps.dtx
+2023/05/16 | 12743 | macros/latex/contrib/l3kernel/l3bootstrap.dtx
+2023/05/16 | 126611 | macros/latex/contrib/l3kernel/l3keys.dtx
+2023/05/16 | 1237 | macros/latex/contrib/tagpdf/ex-AF-file.tex
+2023/05/16 | 122710 | macros/latex/contrib/l3kernel/l3news01.pdf
+2023/05/16 | 119129 | macros/latex/contrib/l3kernel/l3token.dtx
+2023/05/16 | 11884 | macros/latex/contrib/l3kernel/l3styleguide.tex
+2023/05/16 | 11781 | macros/latex/contrib/l3kernel/l3fparray.dtx
+2023/05/16 | 1177 | macros/latex/contrib/tagpdf/README.md
+2023/05/16 | 114586 | macros/latex/contrib/l3kernel/l3news04.pdf
+2023/05/16 | 114088 | systems/texlive/tlnet/archive/texlive-scripts.r67117.tar.xz
+2023/05/16 | 113938 | macros/latex/contrib/tagpdf/tagpdf.tex
+2023/05/16 | 113427 | macros/latex/contrib/l3kernel/l3str-convert.dtx
+2023/05/16 | 112485 | macros/latex/contrib/l3kernel/l3news05.pdf
+2023/05/16 | 112270 | macros/latex/contrib/l3kernel/l3color.dtx
+2023/05/16 | 111928 | fonts/kpfonts-otf/fonts/KpSans-BoldItalic.otf
+2023/05/16 | 111888 | fonts/kpfonts-otf/fonts/KpSans-Italic.otf
+2023/05/16 | 1083 | biblio/bibtex/utils/bibcop/LICENSE.txt
+2023/05/16 | 1073 | macros/latex/contrib/tagpdf/ex-softhyphen.tex
+2023/05/16 | 107383 | macros/latex/contrib/l3kernel/l3news09.tex
+2023/05/16 | 105012 | macros/latex/contrib/l3kernel/l3fp-parse.dtx
+2023/05/16 | 103928 | fonts/kpfonts-otf/fonts/KpSans-Bold.otf
+2023/05/16 | 102500 | fonts/kpfonts-otf/fonts/KpSans-Regular.otf
+2023/05/16 | 1019 | macros/latex/contrib/tagpdf/ex-formula-problem.tex
+2023/05/16 | 10167 | macros/latex/contrib/l3kernel/l3flag.dtx
+2023/05/16 | 1004170 | macros/latex/contrib/tagpdf/tagpdf.pdf
2023/05/15 | 998 | macros/latex/contrib/beamer/base/themes/font/beamerfontthemeserif.sty
2023/05/15 | 99598 | graphics/mcf2graph/mcf_manual.tex
2023/05/15 | 989 | macros/latex/contrib/beamer/doc/emulation-examples/beamerexample-foils.tex
@@ -29,7 +288,9 @@
2023/05/15 | 778 | macros/latex/contrib/thuthesis/thuthesis-bachelor.bbx
2023/05/15 | 77060 | macros/latex/contrib/beamer/doc/beamerug-frames.tex
2023/05/15 | 7609 | macros/latex/contrib/beamer/base/beamerbasemodes.sty
+2023/05/15 | 7566 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2023/05/15 | 7558 | macros/latex/contrib/beamer/doc/solutions/conference-talks/conference-ornate-20min.de.tex
+2023/05/15 | 7436 | macros/unicodetex/latex/adobeornaments/adobeornaments-documentation.tex
2023/05/15 | 7396 | macros/latex/contrib/beamer/base/beamerbaseboxes.sty
2023/05/15 | 7197 | macros/latex/contrib/beamer/base/themes/color/beamercolorthemedefault.sty
2023/05/15 | 710 | macros/latex/contrib/beamer/base/themes/color/beamercolorthemesidebartab.sty
@@ -41,6 +302,7 @@
2023/05/15 | 6858 | macros/latex/contrib/beamer/doc/solutions/conference-talks/conference-ornate-20min.en.tex
2023/05/15 | 661 | macros/latex/contrib/beamer/base/themes/font/beamerfontthemestructurebold.sty
2023/05/15 | 6578 | macros/latex/contrib/beamer/base/multimedia/xmpmulti.sty
+2023/05/15 | 651 | macros/unicodetex/latex/textcsc/README
2023/05/15 | 6359 | macros/latex/contrib/beamer/doc/beamerug-installation.tex
2023/05/15 | 63584 | macros/latex/contrib/beamer/doc/beamerug-localstructure.tex
2023/05/15 | 627 | macros/latex/contrib/beamer/base/beamerbasetranslator.sty
@@ -49,11 +311,10 @@
2023/05/15 | 602 | macros/latex/contrib/thuthesis/latexmkrc
2023/05/15 | 5956 | macros/latex/contrib/beamer/base/emulation/beamerprosper.sty
2023/05/15 | 584 | macros/latex/contrib/beamer/base/themes/theme/beamerthemeEastLansing.sty
-2023/05/15 | 582407 | macros/unicodetex/latex/adobeornaments.zip
+2023/05/15 | 578 | macros/unicodetex/latex/adobeornaments/README
2023/05/15 | 577804 | macros/latex/contrib/nicematrix/nicematrix-french.pdf
2023/05/15 | 5752 | macros/latex/contrib/beamer/base/beamerbasenotes.sty
2023/05/15 | 5743 | macros/latex/contrib/beamer/base/beamerbasetemplates.sty
-2023/05/15 | 5733913 | systems/texlive/tlnet/install-tl-unx.tar.gz
2023/05/15 | 572 | macros/latex/contrib/beamer/base/themes/color/beamercolorthemelily.sty
2023/05/15 | 571224 | macros/latex/contrib/nicematrix/nicematrix.pdf
2023/05/15 | 570 | macros/latex/contrib/beamer/base/themes/theme/compatibility/beamerthemetree.sty
@@ -79,11 +340,6 @@
2023/05/15 | 494 | macros/latex/contrib/beamer/base/themes/theme/beamerthemeBerlin.sty
2023/05/15 | 491 | macros/latex/contrib/beamer/base/themes/theme/beamerthemeIlmenau.sty
2023/05/15 | 49011 | macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic5.jpg
-2023/05/15 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
-2023/05/15 | 488 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2023/05/15 | 488 | systems/texlive/tlnet/install-tl.zip.sha512.asc
-2023/05/15 | 488 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2023/05/15 | 488 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
2023/05/15 | 4814 | graphics/mcf2graph/mcf_example.tex
2023/05/15 | 480 | macros/latex/contrib/beamer/doc/beamerfontthemeexample.tex
2023/05/15 | 476 | macros/latex/contrib/beamer/doc/beamerthemeexample.tex
@@ -104,7 +360,6 @@
2023/05/15 | 4363 | macros/latex/contrib/beamer/doc/beamerug-transparencies.tex
2023/05/15 | 434214 | macros/latex/contrib/beamer/doc/beamerexample-lecture-print-version.pdf
2023/05/15 | 4290 | macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic2.jpg
-2023/05/15 | 426732 | systems/texlive/tlnet/archive/texlive-scripts.doc.r67103.tar.xz
2023/05/15 | 423 | macros/latex/contrib/beamer/base/themes/theme/compatibility/beamerthemebars.sty
2023/05/15 | 4226 | macros/latex/contrib/beamer/base/themes/font/beamerfontthemedefault.sty
2023/05/15 | 421 | macros/latex/contrib/beamer/base/themes/theme/compatibility/beamerthemeclassic.sty
@@ -114,7 +369,6 @@
2023/05/15 | 415 | macros/latex/contrib/beamer/base/themes/theme/beamerthemeFrankfurt.sty
2023/05/15 | 41296 | macros/latex/contrib/beamer/doc/beamerug-guidelines.tex
2023/05/15 | 40883 | macros/latex/contrib/beamer/doc/beamerug-overlays.tex
-2023/05/15 | 4072786 | biblio/ctan-bibdata.zip
2023/05/15 | 40710 | macros/latex/contrib/beamer/doc/beamerug-license.tex
2023/05/15 | 405935 | install/macros/latex/contrib/sanitize-umlaut.tds.zip
2023/05/15 | 405354 | macros/latex/contrib/sanitize-umlaut.zip
@@ -138,7 +392,6 @@
2023/05/15 | 3707382 | macros/latex/contrib/beamer.zip
2023/05/15 | 368 | macros/latex/contrib/beamer/base/themes/theme/beamerthemeBergen.sty
2023/05/15 | 36833 | macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic1.jpg
-2023/05/15 | 3674507 | biblio/ctan-bibdata/ctan.pdf
2023/05/15 | 366 | macros/latex/contrib/thuthesis/thuthesis-bachelor.cbx
2023/05/15 | 365 | macros/latex/contrib/thuthesis/thuthesis-numeric.cbx
2023/05/15 | 36341 | macros/latex/contrib/beamer/doc/beamerug-color.tex
@@ -151,6 +404,8 @@
2023/05/15 | 341 | macros/latex/contrib/beamer/base/themes/theme/beamerthemeMontpellier.sty
2023/05/15 | 341 | macros/latex/contrib/beamer/base/themes/theme/beamerthemeMalmoe.sty
2023/05/15 | 33848 | macros/latex/contrib/beamer/doc/beamerug-elements.tex
+2023/05/15 | 336786 | macros/unicodetex/latex/adobeornaments/adobeornaments-documentation.pdf
+2023/05/15 | 3358 | macros/unicodetex/latex/adobeornaments/adobeornaments.sty
2023/05/15 | 3345 | graphics/mcf2graph/README
2023/05/15 | 332 | macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-beamer-version.tex
2023/05/15 | 33143 | macros/latex/contrib/beamer/base/art/beamericononline.20.eps
@@ -174,7 +429,6 @@
2023/05/15 | 2810 | macros/latex/contrib/beamer/base/themes/outer/beamerouterthemeshadow.sty
2023/05/15 | 2806 | macros/latex/contrib/beamer/doc/beamerug-solutions.tex
2023/05/15 | 279 | macros/latex/contrib/thuthesis/data/comments.tex
-2023/05/15 | 2783841 | biblio/ctan-bibdata/ctan.bib
2023/05/15 | 27790 | macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic4.jpg
2023/05/15 | 27779 | macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic6.jpg
2023/05/15 | 27418 | macros/latex/contrib/beamer/base/beamerbasecompatibility.sty
@@ -184,14 +438,12 @@
2023/05/15 | 2667 | macros/latex/contrib/beamer/base/art/beamericonbook.pdf
2023/05/15 | 26603 | macros/latex/contrib/beamer/base/art/beamericonarticle.eps
2023/05/15 | 2627 | macros/latex/contrib/beamer/doc/solutions/short-talks/speaker_introduction-ornate-2min.en.tex
-2023/05/15 | 26025751 | systems/texlive/tlnet/install-tl.zip
2023/05/15 | 2580 | macros/latex/contrib/thuthesis/thuthesis-example.tex
2023/05/15 | 25646 | macros/latex/contrib/beamer/base/beamerbaseframe.sty
2023/05/15 | 2519 | macros/latex/contrib/beamer/base/themes/outer/beamerouterthemesplit.sty
2023/05/15 | 24762 | macros/latex/contrib/beamer/base/art/beamericonbook.20.eps
2023/05/15 | 24611 | macros/latex/contrib/beamer/base/art/beamericononline.pdf
2023/05/15 | 245987 | macros/latex/contrib/nicematrix/nicematrix.tex
-2023/05/15 | 2450428 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
2023/05/15 | 24481 | macros/latex/contrib/beamer/base/beamerbaseauxtemplates.sty
2023/05/15 | 24451 | macros/latex/contrib/beamer/base/art/beamericononline.20.pdf
2023/05/15 | 24347 | macros/latex/contrib/beamer/doc/beamerug-tutorial.tex
@@ -210,7 +462,6 @@
2023/05/15 | 2134 | macros/latex/contrib/beamer/base/themes/theme/compatibility/beamerthemelined.sty
2023/05/15 | 2131 | macros/latex/contrib/beamer/base/themes/color/beamercolorthemealbatross.sty
2023/05/15 | 21219 | macros/latex/contrib/beamer/base/art/beamericonbook.eps
-2023/05/15 | 21036817 | systems/texlive/tlnet/install-tl-windows.exe
2023/05/15 | 2089 | macros/latex/contrib/beamer/doc/beamerlogo.pdf
2023/05/15 | 20741 | macros/latex/contrib/beamer/doc/examples/a-conference-talk/beamerexample-conference-talk.tex
2023/05/15 | 2053 | macros/latex/contrib/ptlatexcommands/README.md
@@ -229,7 +480,6 @@
2023/05/15 | 1836 | macros/latex/contrib/thuthesis/data/appendix-translation.tex
2023/05/15 | 1820897 | install/macros/latex/contrib/thuthesis.tds.zip
2023/05/15 | 18104 | macros/latex/contrib/beamer/base/beamerbaselocalstructure.sty
-2023/05/15 | 18103721 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
2023/05/15 | 18092 | macros/latex/contrib/beamer/doc/licenses/gpl-2.0.txt
2023/05/15 | 18080 | macros/latex/contrib/ptlatexcommands/PTLaTexCommands.dtx
2023/05/15 | 1798 | macros/latex/contrib/thuthesis/thuthesis-numeric.bbx
@@ -242,7 +492,6 @@
2023/05/15 | 1721 | macros/latex/contrib/sanitize-umlaut/README.md
2023/05/15 | 1719 | macros/latex/contrib/thuthesis/data/appendix-survey.tex
2023/05/15 | 17080 | macros/latex/contrib/beamer/base/art/beamericonarticle.20.eps
-2023/05/15 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
2023/05/15 | 1664 | macros/latex/contrib/thuthesis/data/committee.tex
2023/05/15 | 1660 | macros/latex/contrib/beamer/base/beamerarticle.sty
2023/05/15 | 16500 | macros/latex/contrib/beamer/doc/beamerug-interaction.tex
@@ -255,17 +504,13 @@
2023/05/15 | 1559 | macros/latex/contrib/beamer/base/themes/color/beamercolorthemebeetle.sty
2023/05/15 | 1555 | graphics/mcf2graph/mcf_exa_soc.mp
2023/05/15 | 1540 | macros/latex/contrib/beamer/AUTHORS.md
-2023/05/15 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
2023/05/15 | 1532 | macros/latex/contrib/beamer/doc/beamerthemeexamplebase.tex
-2023/05/15 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
2023/05/15 | 149 | macros/latex/contrib/ptlatexcommands/PTLaTexCommands.ins
2023/05/15 | 14698 | macros/latex/contrib/beamer/doc/beamerug-introduction.tex
2023/05/15 | 14682 | macros/latex/contrib/sanitize-umlaut/sanitize-umlaut.tex
2023/05/15 | 1465 | macros/latex/contrib/beamer/base/themes/color/beamercolorthemespruce.sty
-2023/05/15 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
2023/05/15 | 1455 | macros/latex/contrib/thuthesis/thuthesis-author-year.bbx
2023/05/15 | 1452 | macros/latex/contrib/thuthesis/data/resume.tex
-2023/05/15 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
2023/05/15 | 1449944 | systems/texlive/tlnet/archive/tex4ht.source.r67110.tar.xz
2023/05/15 | 1428 | macros/latex/contrib/nicematrix/nicematrix.ins
2023/05/15 | 14186 | macros/latex/contrib/thuthesis/tsinghua-name-bachelor.pdf
@@ -298,7 +543,6 @@
2023/05/15 | 12206 | macros/latex/contrib/beamer/base/beamerbaseframecomponents.sty
2023/05/15 | 1198841 | macros/latex/contrib/thuthesis/thuthesis.pdf
2023/05/15 | 1196 | graphics/mcf2graph/template_soc.mp
-2023/05/15 | 114092 | systems/texlive/tlnet/archive/texlive-scripts.r67103.tar.xz
2023/05/15 | 1130 | macros/latex/contrib/beamer/base/beamerbasethemes.sty
2023/05/15 | 1111 | macros/latex/contrib/beamer/README.md
2023/05/15 | 10950 | macros/latex/contrib/beamer/doc/beamerug-notes.tex
@@ -313,22 +557,19 @@
2023/05/15 | 1003 | macros/latex/contrib/beamer/base/themes/color/beamercolorthemewhale.sty
2023/05/15 | 1002 | macros/latex/contrib/beamer/base/themes/inner/beamerinnerthemerounded.sty
2023/05/15 | 10001 | macros/latex/contrib/thuthesis/ref/refs.bib
-2023/05/14 | 7570 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
-2023/05/14 | 7365 | macros/unicodetex/latex/adobeornaments/adobeornaments-documentation.tex
2023/05/14 | 708120 | systems/texlive/tlnet/archive/texlive-common.doc.r67094.tar.xz
2023/05/14 | 7016 | macros/luatex/latex/hu-berlin-bundle/README.md
+2023/05/14 | 6786 | macros/unicodetex/latex/textcsc/textcsc-documentation.tex
2023/05/14 | 66914 | macros/luatex/latex/hu-berlin-bundle/hu-berlin-bundle.dtx
2023/05/14 | 66548 | systems/texlive/tlnet/archive/plantuml.doc.r67097.tar.xz
2023/05/14 | 60312 | systems/texlive/tlnet/archive/texlive-scripts.windows.r67095.tar.xz
-2023/05/14 | 542 | macros/unicodetex/latex/adobeornaments/README
+2023/05/14 | 52368 | macros/unicodetex/latex/textcsc/textcsc-documentation.pdf
2023/05/14 | 494222 | support/TeX4ht/source/tex4ht-fonts-libertine.tex
2023/05/14 | 4082 | support/TeX4ht/source/update-htfonts
2023/05/14 | 380007 | support/TeX4ht/source/tex4ht-fonts-kpfonts.tex
2023/05/14 | 3754 | macros/luatex/latex/hu-berlin-bundle/makefile
2023/05/14 | 371381 | support/TeX4ht/source/tex4ht-fonts-ebgaramond.tex
2023/05/14 | 344 | systems/texlive/tlnet/archive/texlive-common.r67094.tar.xz
-2023/05/14 | 3358 | macros/unicodetex/latex/adobeornaments/adobeornaments.sty
-2023/05/14 | 334885 | macros/unicodetex/latex/adobeornaments/adobeornaments-documentation.pdf
2023/05/14 | 310821 | macros/luatex/latex/hu-berlin-bundle/hu-berlin-bundle.pdf
2023/05/14 | 3048 | macros/unicodetex/latex/adobeornaments/adobeornaments-list.tex
2023/05/14 | 297994 | support/TeX4ht/source/tex4ht-fonts-newtx.tex
@@ -487,6 +728,7 @@
2023/05/13 | 19900 | macros/latex/contrib/profcollege/latex/PfCTrio.tex
2023/05/13 | 195484 | systems/texlive/tlnet/archive/starray.doc.r67083.tar.xz
2023/05/13 | 1862 | macros/latex/contrib/profcollege/latex/PfCMotsEmpiles.tex
+2023/05/13 | 1830 | macros/unicodetex/latex/textcsc/textcsc.sty
2023/05/13 | 18223 | macros/latex/contrib/profcollege/latex/ProfCollege.sty
2023/05/13 | 1777 | macros/latex/contrib/profcollege/latex/PfCRapido.tex
2023/05/13 | 16722 | graphics/pgf/contrib/circuitikz/tex/pgfcircpath.tex
@@ -693,7 +935,6 @@
2023/05/12 | 209340 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
2023/05/12 | 207992 | systems/texlive/tlnet/archive/babel.r67073.tar.xz
2023/05/12 | 205 | fonts/newcomputermodern/doc/opticalmathlm.tex
-2023/05/12 | 205191 | macros/latex/contrib/starray.zip
2023/05/12 | 203268 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
2023/05/12 | 2017821 | fonts/simpleicons/doc/simpleicons.pdf
2023/05/12 | 2016285 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
@@ -763,60 +1004,39 @@
2023/05/12 | 10266 | systems/win32/miktex/tm/packages/codedescribe.tar.lzma
2023/05/12 | 101318 | macros/latex/contrib/unicode-math-input/unicode-math-input-table.tex
2023/05/12 | 100139 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
-2023/05/11 | 9999 | macros/latex/contrib/l3kernel/l3news10.tex
2023/05/11 | 9856 | macros/luatex/latex/novel/doc/html-resources/graytext.png
2023/05/11 | 98505 | macros/luatex/latex/novel/doc/extras/novel-example.pdf
-2023/05/11 | 97773 | macros/latex/contrib/l3kernel/l3seq.dtx
2023/05/11 | 96044 | macros/latex/contrib/l3experimental/l3galley.dtx
2023/05/11 | 959 | macros/luatex/latex/novel/lualatex/novel-JC200103.clo
2023/05/11 | 9584 | macros/luatex/latex/novel/doc/html-resources/sixpage-frontmatter.png
2023/05/11 | 95659 | macros/luatex/latex/novel/doc/html-resources/colorsampler-softproof.png
2023/05/11 | 947 | macros/luatex/latex/novel/lualatex/novel-FOGRA39.clo
2023/05/11 | 946 | macros/luatex/latex/novel/lualatex/novel-CGATSTR001.clo
-2023/05/11 | 9465 | macros/latex/contrib/l3kernel/l3news08.tex
2023/05/11 | 9411 | macros/luatex/latex/novel/doc/html-resources/robberies.png
2023/05/11 | 940704 | macros/latex/required/babel/base/locale.zip
-2023/05/11 | 92086 | macros/latex/contrib/l3kernel/l3int.dtx
2023/05/11 | 9188 | macros/latex/contrib/ufrgscca/latex/ufrgscca-en-forms.def
2023/05/11 | 8837 | macros/latex/required/babel/base/babel.ins
2023/05/11 | 8816 | macros/latex/contrib/ufrgscca/latex/ufrgscca-en-coord.def
2023/05/11 | 8815 | macros/luatex/latex/novel/lualatex/novel-PostLayout.sty
-2023/05/11 | 87744 | macros/latex/contrib/l3kernel/l3box.dtx
-2023/05/11 | 87463 | macros/latex/contrib/l3kernel/l3coffins.dtx
2023/05/11 | 8567 | macros/luatex/latex/novel/doc/html-resources/megatitlepagesm.png
2023/05/11 | 8518 | macros/luatex/latex/novel/doc/html-resources/fluffy-conspiracy.png
-2023/05/11 | 8481 | macros/latex/contrib/l3kernel/l3news11.tex
-2023/05/11 | 84785 | macros/latex/contrib/l3kernel/l3fp-basics.dtx
2023/05/11 | 8312499 | macros/context/contrib/context-simpleslides.zip
2023/05/11 | 8283 | macros/latex/contrib/l3experimental/CHANGELOG.md
-2023/05/11 | 82667 | macros/latex/contrib/l3kernel/l3clist.dtx
-2023/05/11 | 82260 | macros/latex/contrib/l3kernel/l3names.dtx
2023/05/11 | 8187 | macros/luatex/latex/novel/doc/html-resources/headfont-default.png
-2023/05/11 | 81640 | macros/latex/contrib/l3kernel/l3prefixes.pdf
2023/05/11 | 8144 | macros/luatex/latex/novel/doc/html-resources/fpaper.png
2023/05/11 | 80977 | macros/luatex/latex/novel/doc/html-resources/novel-color-sampler.png
2023/05/11 | 7940 | macros/luatex/latex/novel/doc/html-resources/headfont-roboto.png
2023/05/11 | 7900 | systems/texlive/tlnet/archive/unicodefonttable.r67066.tar.xz
-2023/05/11 | 78692 | macros/latex/contrib/l3kernel/l3str.dtx
-2023/05/11 | 78026 | macros/latex/contrib/l3kernel/l3msg.dtx
2023/05/11 | 7731 | macros/latex/contrib/ufrgscca/latex/ufrgscca-curr-tab.sty
2023/05/11 | 763768 | macros/latex/required/babel/base/babel.dtx
2023/05/11 | 7617 | macros/luatex/latex/novel/lualatex/novel-DropCap.sty
2023/05/11 | 7616 | macros/luatex/latex/novel/doc/html-resources/Iboxcap.png
-2023/05/11 | 75980 | macros/latex/contrib/l3kernel/l3skip.dtx
2023/05/11 | 7477 | macros/latex/contrib/ufrgscca/latex/ufrgscca.cls
-2023/05/11 | 7472 | macros/latex/contrib/l3kernel/l3fp-assign.dtx
2023/05/11 | 7449 | macros/luatex/latex/novel/doc/html-resources/map.png
2023/05/11 | 7415 | macros/luatex/latex/novel/doc/html-resources/emblemimg.png
-2023/05/11 | 73835 | macros/latex/contrib/l3kernel/l3fp-trig.dtx
-2023/05/11 | 7276733 | macros/latex/contrib/l3kernel/source3.pdf
2023/05/11 | 7254 | macros/luatex/latex/novel/doc/html-resources/headfont-montserrat-el.png
2023/05/11 | 7134 | macros/luatex/latex/novel/doc/html-resources/smythsewn.png
-2023/05/11 | 70859 | macros/latex/contrib/l3kernel/expl3.dtx
-2023/05/11 | 70605 | macros/latex/contrib/l3kernel/l3fp.dtx
2023/05/11 | 7043 | macros/luatex/latex/novel/doc/html-resources/jollybeers.png
-2023/05/11 | 70197 | macros/latex/contrib/l3kernel/l3prg.dtx
-2023/05/11 | 69893 | macros/latex/contrib/l3kernel/l3text-case.dtx
2023/05/11 | 6941 | macros/luatex/latex/novel/lualatex/novel-FileData.sty
2023/05/11 | 6927 | macros/luatex/latex/novel/doc/novel.tex
2023/05/11 | 69267 | macros/latex/contrib/ufrgscca/doc/ufrgscca.tex
@@ -825,19 +1045,11 @@
2023/05/11 | 69093 | macros/luatex/latex/novel/doc/html-resources/jump-change.png
2023/05/11 | 6806 | macros/luatex/latex/novel/doc/html-resources/dropcap-scalebloat.png
2023/05/11 | 679710 | macros/latex/contrib/l3experimental/l3draw-code.pdf
-2023/05/11 | 6677 | macros/latex/contrib/l3kernel/l3news02.tex
2023/05/11 | 6548 | macros/luatex/latex/novel/doc/html-resources/dropcap-antestar.png
-2023/05/11 | 6482 | macros/latex/contrib/l3kernel/l3news03.tex
-2023/05/11 | 6433 | macros/latex/contrib/l3kernel/l3news06.tex
2023/05/11 | 6412 | macros/luatex/latex/novel/lualatex/novel-microtype.cfg
2023/05/11 | 6412 | macros/luatex/latex/novel/doc/html-resources/looseheads.png
-2023/05/11 | 62840 | macros/latex/contrib/l3kernel/l3tl-analysis.dtx
-2023/05/11 | 6267 | macros/latex/contrib/l3kernel/l3syntax-changes.tex
-2023/05/11 | 623326 | macros/latex/contrib/l3kernel/expl3.pdf
2023/05/11 | 62302 | macros/luatex/latex/novel/doc/html-resources/workedforme.png
-2023/05/11 | 6224 | macros/latex/contrib/l3kernel/l3.ins
2023/05/11 | 6181 | macros/luatex/latex/novel/doc/html-resources/dropcap-gap.png
-2023/05/11 | 6169 | macros/latex/contrib/l3kernel/l3term-glossary.tex
2023/05/11 | 608 | macros/luatex/latex/novel/doc/html-resources/10trueold.png
2023/05/11 | 608720 | macros/latex/contrib/ufrgscca/doc/ufrgscca.pdf
2023/05/11 | 6019 | macros/luatex/latex/novel/doc/html-resources/emblemdingbats.png
@@ -846,40 +1058,25 @@
2023/05/11 | 592226 | macros/latex/required/babel/base/babel-code.pdf
2023/05/11 | 5898 | macros/luatex/latex/novel/doc/html-resources/CPmodified-sample.png
2023/05/11 | 58083 | macros/latex/contrib/l3experimental/xgalley.dtx
-2023/05/11 | 57974 | macros/latex/contrib/l3kernel/l3prop.dtx
2023/05/11 | 5653 | macros/latex/contrib/l3experimental/l3draw-layers.dtx
2023/05/11 | 563 | macros/luatex/latex/novel/doc/html-resources/10transold.png
2023/05/11 | 56275 | macros/luatex/latex/novel/doc/html-resources/skygrad.jpg
-2023/05/11 | 558279 | macros/latex/contrib/l3kernel/l3doc.pdf
2023/05/11 | 5508 | macros/luatex/latex/novel/doc/html-resources/I-shade.png
2023/05/11 | 5479 | macros/luatex/latex/novel/doc/html-resources/emblembar.png
2023/05/11 | 5475 | macros/luatex/latex/novel/doc/html-resources/acronym2.png
2023/05/11 | 5448 | macros/luatex/latex/novel/doc/html-resources/smallcapsrealfake.png
2023/05/11 | 54423 | macros/luatex/latex/novel/doc/html-resources/colorsampler.png
-2023/05/11 | 5429 | macros/latex/contrib/l3kernel/l3news04.tex
-2023/05/11 | 53454 | macros/latex/contrib/starray/latex/starray.sty
2023/05/11 | 5326 | macros/latex/contrib/ufrgscca/latex/ufrgscca-curr.sty
2023/05/11 | 5233 | macros/luatex/latex/novel/doc/html-resources/signature.png
2023/05/11 | 51972 | macros/luatex/latex/novel/doc/extras/CPmodified.otf
2023/05/11 | 518125 | macros/latex/contrib/l3experimental/l3draw.pdf
-2023/05/11 | 51775 | macros/latex/contrib/l3kernel/l3text.dtx
2023/05/11 | 5151 | macros/luatex/latex/novel/doc/html-resources/fontbyfamily.png
-2023/05/11 | 51059 | macros/latex/contrib/l3kernel/l3fp-extended.dtx
2023/05/11 | 5069617 | macros/luatex/latex/novel.zip
2023/05/11 | 5065 | macros/latex/contrib/ufrgscca/README.md
2023/05/11 | 5029 | macros/luatex/latex/novel/doc/html-resources/frankenfont.png
-2023/05/11 | 4977 | macros/latex/contrib/l3kernel/l3news07.tex
-2023/05/11 | 4937 | macros/latex/contrib/l3kernel/l3news01.tex
-2023/05/11 | 49311 | macros/latex/contrib/l3kernel/l3fp-expo.dtx
-2023/05/11 | 4890 | macros/latex/contrib/l3kernel/l3news.tex
2023/05/11 | 4852 | macros/latex/contrib/ufrgscca/latex/ufrgscca-gen.sty
-2023/05/11 | 47824 | macros/latex/contrib/l3kernel/CHANGELOG.md
-2023/05/11 | 47216 | macros/latex/contrib/l3kernel/l3fp-aux.dtx
-2023/05/11 | 4716 | macros/latex/contrib/l3kernel/l3news05.tex
2023/05/11 | 4711 | macros/luatex/latex/novel/doc/html-resources/badaboom.png
2023/05/11 | 4599 | macros/luatex/latex/novel/doc/html-resources/pngcolortype.png
-2023/05/11 | 45418 | macros/latex/contrib/l3kernel/l3prefixes.csv
-2023/05/11 | 4538 | macros/latex/contrib/l3kernel/l3legacy.dtx
2023/05/11 | 4533 | macros/luatex/latex/novel/doc/html-resources/jpgcolorspace.png
2023/05/11 | 4523 | macros/luatex/latex/novel/doc/html-resources/ctimg35.png
2023/05/11 | 4460074 | install/macros/latex/contrib/l3experimental.tds.zip
@@ -887,7 +1084,6 @@
2023/05/11 | 4421989 | macros/latex/contrib/l3experimental.zip
2023/05/11 | 4331 | macros/luatex/latex/novel/doc/html-resources/fontbyfilenamei.png
2023/05/11 | 4323 | macros/latex/contrib/l3experimental/l3draw-boxes.dtx
-2023/05/11 | 43211 | macros/latex/contrib/l3kernel/l3debug.dtx
2023/05/11 | 4284 | macros/latex/contrib/l3experimental/README.md
2023/05/11 | 4256 | macros/luatex/latex/novel/doc/html-resources/wrapme.png
2023/05/11 | 42560 | macros/latex/contrib/l3experimental/l3draw.dtx
@@ -896,12 +1092,10 @@
2023/05/11 | 41850 | macros/luatex/latex/novel/doc/html-resources/trimsize.png
2023/05/11 | 4114 | macros/latex/contrib/ufrgscca/latex/ufrgscca-curr-graph.sty
2023/05/11 | 409224 | macros/latex/contrib/l3experimental/l3galley.pdf
-2023/05/11 | 40728 | macros/latex/contrib/l3kernel/l3sort.dtx
2023/05/11 | 4069 | macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-core.def
2023/05/11 | 404724 | macros/latex/contrib/l3experimental/l3bitset.pdf
2023/05/11 | 4011 | macros/latex/contrib/l3experimental/l3opacity.dtx
2023/05/11 | 399234 | macros/latex/required/babel/base/babel.pdf
-2023/05/11 | 395876 | macros/latex/contrib/l3kernel/l3news.pdf
2023/05/11 | 394797 | macros/latex/contrib/l3experimental/xcoffins.pdf
2023/05/11 | 39286 | macros/luatex/latex/novel/doc/html-resources/doordie.png
2023/05/11 | 383963 | macros/latex/contrib/l3experimental/l3graphics.pdf
@@ -911,10 +1105,8 @@
2023/05/11 | 36954 | macros/luatex/latex/novel/doc/html-resources/parascale.png
2023/05/11 | 368353 | macros/latex/contrib/l3experimental/l3str-format.pdf
2023/05/11 | 36026 | macros/latex/contrib/l3experimental/l3draw-points.dtx
-2023/05/11 | 35441 | macros/latex/contrib/l3kernel/l3quark.dtx
2023/05/11 | 3526 | macros/latex/required/babel/base/bbidxglo.dtx
2023/05/11 | 35092 | macros/latex/contrib/l3experimental/xcoffins.dtx
-2023/05/11 | 35086 | macros/latex/contrib/l3kernel/l3sys.dtx
2023/05/11 | 348383 | macros/latex/contrib/l3experimental/l3sys-shell.pdf
2023/05/11 | 34282 | macros/luatex/latex/novel/doc/html-resources/no-brainer.png
2023/05/11 | 34135 | macros/luatex/latex/novel/doc/html-resources/ublibser.png
@@ -924,96 +1116,63 @@
2023/05/11 | 33299 | macros/latex/contrib/ufrgscca/latex/ufrgscca-coord.sty
2023/05/11 | 3325814 | install/macros/latex/required/babel-base.tds.zip
2023/05/11 | 331775 | macros/luatex/latex/novel/doc/novel-documentation.html
-2023/05/11 | 32935 | macros/latex/contrib/l3kernel/l3unicode.dtx
2023/05/11 | 32572 | systems/texlive/tlnet/archive/kpathsea.r67065.tar.xz
2023/05/11 | 32546 | macros/latex/contrib/l3experimental/l3draw-paths.dtx
-2023/05/11 | 32409 | macros/latex/contrib/l3kernel/l3cctab.dtx
2023/05/11 | 31827 | macros/latex/contrib/l3experimental/l3str-format.dtx
2023/05/11 | 31445 | systems/win32/miktex/tm/packages/nostarch__source.tar.lzma
2023/05/11 | 313919 | macros/latex/contrib/l3experimental/l3opacity.pdf
-2023/05/11 | 3116 | macros/latex/contrib/l3kernel/README.md
2023/05/11 | 311166 | macros/luatex/latex/novel/doc/extras/novel-Gallery-ChapterStart.pdf
2023/05/11 | 308866 | macros/latex/contrib/l3experimental/l3benchmark.pdf
2023/05/11 | 30606 | macros/luatex/latex/novel/doc/html-resources/margins-trim-media.png
2023/05/11 | 30516 | macros/luatex/latex/novel/doc/html-resources/mediasize.png
-2023/05/11 | 30508 | macros/latex/contrib/l3kernel/l3intarray.dtx
-2023/05/11 | 304307 | macros/latex/contrib/l3kernel/l3regex.dtx
2023/05/11 | 30022 | macros/luatex/latex/novel/doc/html-resources/shademargins.png
2023/05/11 | 299962 | macros/latex/contrib/l3experimental/xgalley.pdf
-2023/05/11 | 296578 | macros/latex/contrib/l3kernel/l3styleguide.pdf
-2023/05/11 | 28285 | macros/latex/contrib/starray/doc/starray.tex
-2023/05/11 | 2821 | macros/latex/contrib/l3kernel/l3prefixes.tex
2023/05/11 | 27873 | macros/luatex/latex/novel/doc/html-resources/endnotetext.png
2023/05/11 | 27867 | macros/luatex/latex/novel/doc/html-resources/trdol.png
-2023/05/11 | 27248 | macros/latex/contrib/l3kernel/l3kernel-functions.dtx
2023/05/11 | 2696 | macros/latex/contrib/ufrgscca/latex/ufrgscca-lists.sty
-2023/05/11 | 26511 | macros/latex/contrib/codedescribe/latex/codelisting.sty
-2023/05/11 | 2649 | macros/latex/contrib/codedescribe/README.md
-2023/05/11 | 26124 | macros/latex/contrib/codedescribe/latex/codedescribe.sty
2023/05/11 | 25940 | macros/latex/contrib/l3experimental/l3graphics.dtx
2023/05/11 | 25213 | macros/luatex/latex/novel/doc/html-resources/scenebreaks.png
-2023/05/11 | 250136 | macros/latex/contrib/l3kernel/l3news09.pdf
-2023/05/11 | 24841 | macros/latex/contrib/l3kernel/source3body.tex
2023/05/11 | 2481 | macros/latex/contrib/ufrgscca/latex/ufrgscca-en-core.def
2023/05/11 | 246911 | macros/luatex/latex/novel/doc/html-resources/bixby-softproof.png
-2023/05/11 | 246809 | macros/latex/contrib/codedescribe/doc/codedescribe.pdf
2023/05/11 | 246157 | macros/luatex/latex/novel/doc/html-resources/raffaelino-original.png
-2023/05/11 | 245892 | macros/latex/contrib/codedescribe.zip
2023/05/11 | 2456 | macros/luatex/latex/novel/doc/extras/novel-testscript.jpg
2023/05/11 | 24517 | macros/luatex/latex/novel/doc/html-resources/megadocprops.png
-2023/05/11 | 24496 | macros/latex/contrib/l3kernel/l3deprecation.dtx
-2023/05/11 | 243221 | macros/latex/contrib/l3kernel/l3syntax-changes.pdf
2023/05/11 | 241149 | macros/luatex/latex/novel/doc/html-resources/raffaelino-softproof.png
2023/05/11 | 23956 | macros/luatex/latex/novel/lualatex/novel.cls
2023/05/11 | 239173 | macros/luatex/latex/novel/doc/html-resources/bixby-original.png
-2023/05/11 | 2390 | macros/latex/contrib/l3kernel/l3docstrip.dtx
-2023/05/11 | 23866 | macros/latex/contrib/l3kernel/l3luatex.dtx
2023/05/11 | 23769 | systems/win32/miktex/tm/packages/unicodefonttable__source.tar.lzma
-2023/05/11 | 23574 | macros/latex/contrib/l3kernel/l3fp-random.dtx
2023/05/11 | 2349 | macros/luatex/latex/novel/doc/html-resources/dorfmcnorf.png
2023/05/11 | 2336 | macros/luatex/latex/novel/doc/extras/novel-extras-README.html
-2023/05/11 | 23011 | macros/latex/contrib/l3kernel/l3fp-logic.dtx
2023/05/11 | 22828 | systems/texlive/tlnet/archive/unicodefonttable.source.r67066.tar.xz
2023/05/11 | 22507 | macros/luatex/latex/novel/doc/html-resources/cropmarks.png
2023/05/11 | 22434 | macros/luatex/latex/novel/doc/html-resources/bookmanglerdashboard.png
-2023/05/11 | 2229 | macros/latex/contrib/l3kernel/source3.tex
2023/05/11 | 2223 | macros/latex/contrib/ufrgscca/latex/ufrgscca-en-base.def
2023/05/11 | 22144 | macros/luatex/latex/novel/doc/html-resources/bookofbeirh.png
2023/05/11 | 2206 | macros/latex/required/babel/base/README.md
2023/05/11 | 2205 | macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-base.def
2023/05/11 | 21890 | macros/latex/required/babel/base/bbcompat.dtx
-2023/05/11 | 215740 | macros/latex/contrib/l3kernel/l3term-glossary.pdf
2023/05/11 | 21523 | macros/luatex/latex/novel/lualatex/novel-TextMacros.sty
2023/05/11 | 21460 | macros/luatex/latex/novel/doc/html-resources/chaptertitlesubtitle.png
2023/05/11 | 2131957 | macros/latex/required/babel/base.zip
2023/05/11 | 20701 | macros/luatex/latex/novel/doc/html-resources/mcdingle.png
2023/05/11 | 2064 | macros/luatex/latex/novel/doc/extras/novel-testscript.png
-2023/05/11 | 206077 | macros/latex/contrib/starray/doc/starray.pdf
2023/05/11 | 20585 | systems/win32/miktex/tm/packages/unicodefonttable.tar.lzma
-2023/05/11 | 204992 | macros/latex/contrib/l3kernel/l3news12.pdf
2023/05/11 | 20486 | macros/latex/contrib/ufrgscca/latex/ufrgscca-ppc.sty
2023/05/11 | 20451 | macros/latex/contrib/l3experimental/l3draw-softpath.dtx
-2023/05/11 | 2038 | macros/latex/contrib/l3kernel/interface3.tex
-2023/05/11 | 20359 | macros/latex/contrib/l3kernel/l3text-purify.dtx
-2023/05/11 | 2007 | macros/latex/contrib/starray/README.md
2023/05/11 | 1990 | macros/luatex/latex/novel/doc/extras/novel-testimage.jpg
2023/05/11 | 19907 | macros/luatex/latex/novel/doc/html-resources/cropview.png
2023/05/11 | 19790 | macros/luatex/latex/novel/lualatex/novel-Images.sty
-2023/05/11 | 19641 | macros/latex/contrib/l3kernel/l3fp-convert.dtx
2023/05/11 | 19633 | macros/luatex/latex/novel/doc/html-resources/printgamut.png
2023/05/11 | 195 | macros/luatex/latex/novel/README.md
2023/05/11 | 19519 | macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.sty
2023/05/11 | 19382 | macros/luatex/latex/novel/doc/html-resources/closecrop.png
2023/05/11 | 19235 | macros/luatex/latex/novel/doc/html-resources/unsafe-vs-margin.png
-2023/05/11 | 19169 | macros/latex/contrib/l3kernel/l3pdf.dtx
2023/05/11 | 1908 | macros/luatex/latex/novel/doc/extras/novel-testimage.png
2023/05/11 | 1906 | macros/latex/contrib/l3experimental/l3draw.ins
2023/05/11 | 19012 | macros/luatex/latex/novel/doc/html-resources/whichgutter.png
2023/05/11 | 1894 | macros/luatex/latex/novel/doc/html-resources/shakepi.png
-2023/05/11 | 18863 | macros/latex/contrib/codedescribe/doc/codedescribe.tex
2023/05/11 | 18804 | macros/luatex/latex/novel/doc/html-resources/monitorgamut.png
2023/05/11 | 18694 | macros/latex/contrib/l3experimental/l3bitset.dtx
-2023/05/11 | 18532 | macros/latex/contrib/l3kernel/l3fp-round.dtx
2023/05/11 | 18412 | macros/luatex/latex/novel/doc/html-resources/simpletoc.png
2023/05/11 | 18252 | macros/luatex/latex/novel/doc/html-resources/dropcap.png
2023/05/11 | 18077 | macros/luatex/latex/novel/lualatex/novel-HeadFootStyles.sty
@@ -1022,14 +1181,9 @@
2023/05/11 | 17368 | macros/latex/contrib/ufrgscca/latex/ufrgscca-abnt.sty
2023/05/11 | 17230 | macros/luatex/latex/novel/lualatex/novel-LayoutSettings.sty
2023/05/11 | 17173 | macros/luatex/latex/novel/doc/html-resources/lowdown.png
-2023/05/11 | 1711150 | macros/latex/contrib/l3kernel/interface3.pdf
2023/05/11 | 17099 | macros/luatex/latex/novel/lualatex/novel-Fonts.sty
-2023/05/11 | 170076 | macros/latex/contrib/l3kernel/l3news11.pdf
2023/05/11 | 16904 | macros/luatex/latex/novel/lualatex/novel-pdfx.sty
-2023/05/11 | 16709 | macros/latex/contrib/l3kernel/l3candidates.dtx
-2023/05/11 | 16633 | macros/latex/contrib/l3kernel/l3text-map.dtx
2023/05/11 | 16508 | macros/latex/contrib/l3experimental/l3benchmark.dtx
-2023/05/11 | 163456 | macros/latex/contrib/l3kernel/l3news08.pdf
2023/05/11 | 1624 | macros/latex/contrib/l3experimental/xgalley.ins
2023/05/11 | 16097 | macros/luatex/latex/novel/doc/html-resources/human-robot-talk.png
2023/05/11 | 15724 | macros/luatex/latex/novel/lualatex/novel-Footnotes.sty
@@ -1039,37 +1193,25 @@
2023/05/11 | 1564 | macros/latex/contrib/l3experimental/l3str.ins
2023/05/11 | 15625 | macros/luatex/latex/novel/doc/html-resources/head-foot-jumps.png
2023/05/11 | 1558 | macros/latex/contrib/l3experimental/l3benchmark.ins
-2023/05/11 | 155616 | macros/latex/contrib/l3kernel/l3doc.dtx
2023/05/11 | 1553 | macros/latex/contrib/l3experimental/l3graphics.ins
2023/05/11 | 1547 | macros/latex/contrib/l3experimental/l3opacity.ins
2023/05/11 | 15395 | macros/luatex/latex/novel/doc/extras/novel-testsuite.tex
2023/05/11 | 15268 | macros/luatex/latex/novel/doc/html-resources/font-tree.png
-2023/05/11 | 152066 | macros/latex/contrib/l3kernel/l3docstrip.pdf
-2023/05/11 | 151569 | macros/latex/contrib/l3kernel/l3news06.pdf
-2023/05/11 | 150674 | macros/latex/contrib/l3kernel/l3news02.pdf
-2023/05/11 | 150283 | macros/latex/contrib/l3kernel/l3news10.pdf
2023/05/11 | 15026 | macros/luatex/latex/novel/doc/html-resources/overflowrule.png
2023/05/11 | 1499979 | macros/luatex/latex/novel/doc/extras/novel-scripts.zip
2023/05/11 | 14973 | macros/luatex/latex/novel/doc/html-resources/headfoot5.png
-2023/05/11 | 14927 | macros/latex/contrib/l3kernel/l3bootstrap.dtx
-2023/05/11 | 14913 | macros/latex/contrib/l3kernel/l3news12.tex
-2023/05/11 | 148706 | macros/latex/contrib/l3kernel/l3news03.pdf
2023/05/11 | 14605 | macros/luatex/latex/novel/doc/html-resources/headfoot4.png
2023/05/11 | 14569 | macros/luatex/latex/novel/doc/html-resources/headfoot1.png
-2023/05/11 | 145224 | macros/latex/contrib/l3kernel/l3tl.dtx
2023/05/11 | 14436 | macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-forms.def
2023/05/11 | 14429 | macros/luatex/latex/novel/doc/html-resources/headfoot6.png
2023/05/11 | 14403 | macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-coord.def
2023/05/11 | 14287 | macros/luatex/latex/novel/doc/html-resources/colormax-softproof.png
2023/05/11 | 14275 | macros/luatex/latex/novel/lualatex/novel-ChapterScene.sty
2023/05/11 | 142528 | macros/luatex/latex/novel/doc/html-resources/authorsnote.png
-2023/05/11 | 140989 | macros/latex/contrib/l3kernel/l3file.dtx
2023/05/11 | 14028 | macros/luatex/latex/novel/doc/html-resources/headfoot3.png
2023/05/11 | 14028 | macros/luatex/latex/novel/doc/html-resources/headfoot2.png
-2023/05/11 | 13911503 | install/macros/latex/contrib/l3kernel.tds.zip
2023/05/11 | 138871 | support/pdfjam.zip
2023/05/11 | 1373804 | systems/texlive/tlnet/archive/unicodefonttable.doc.r67066.tar.xz
-2023/05/11 | 13650929 | macros/latex/contrib/l3kernel.zip
2023/05/11 | 1360 | macros/latex/contrib/l3experimental/l3draw-code.tex
2023/05/11 | 1360982 | systems/win32/miktex/tm/packages/unicodefonttable__doc.tar.lzma
2023/05/11 | 13553 | macros/luatex/latex/novel/doc/html-resources/toc.png
@@ -1077,35 +1219,19 @@
2023/05/11 | 132000 | macros/luatex/latex/novel/opentype/NovelDeco.otf
2023/05/11 | 131185 | graphics/metapost/contrib/macros/huffman.zip
2023/05/11 | 13079 | macros/luatex/latex/novel/lualatex/novel-CalculateLayout.sty
-2023/05/11 | 129545 | macros/latex/contrib/l3kernel/l3basics.dtx
2023/05/11 | 12898 | macros/luatex/latex/novel/doc/html-resources/page-leaf.png
2023/05/11 | 1288 | macros/luatex/latex/novel/doc/html-resources/info18.png
-2023/05/11 | 128316 | macros/latex/contrib/l3kernel/l3news07.pdf
-2023/05/11 | 12777 | macros/latex/contrib/l3kernel/l3fp-traps.dtx
-2023/05/11 | 127087 | macros/latex/contrib/l3kernel/l3keys.dtx
2023/05/11 | 12701 | macros/luatex/latex/novel/doc/html-resources/colormax-original.png
2023/05/11 | 12361 | macros/latex/contrib/l3experimental/l3sys-shell.dtx
-2023/05/11 | 122710 | macros/latex/contrib/l3kernel/l3news01.pdf
2023/05/11 | 12250 | macros/luatex/latex/novel/doc/html-resources/topmargins.png
2023/05/11 | 12057 | macros/luatex/latex/novel/doc/html-resources/jackbequick.png
-2023/05/11 | 119588 | macros/latex/contrib/l3kernel/l3token.dtx
-2023/05/11 | 11884 | macros/latex/contrib/l3kernel/l3styleguide.tex
-2023/05/11 | 11781 | macros/latex/contrib/l3kernel/l3fparray.dtx
2023/05/11 | 11489 | macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty
-2023/05/11 | 114586 | macros/latex/contrib/l3kernel/l3news04.pdf
2023/05/11 | 11366 | macros/latex/contrib/ufrgscca/latex/ufrgscca-core.sty
-2023/05/11 | 113427 | macros/latex/contrib/l3kernel/l3str-convert.dtx
-2023/05/11 | 112485 | macros/latex/contrib/l3kernel/l3news05.pdf
-2023/05/11 | 112270 | macros/latex/contrib/l3kernel/l3color.dtx
2023/05/11 | 11185 | macros/luatex/latex/novel/doc/html-resources/alphabetagamma.png
2023/05/11 | 10831 | macros/luatex/latex/novel/doc/html-resources/charscaletext.png
-2023/05/11 | 107383 | macros/latex/contrib/l3kernel/l3news09.tex
-2023/05/11 | 107093 | macros/latex/contrib/l3kernel/l3expan.dtx
2023/05/11 | 10690 | macros/luatex/latex/novel/doc/html-resources/win10libser.png
-2023/05/11 | 105012 | macros/latex/contrib/l3kernel/l3fp-parse.dtx
2023/05/11 | 10407 | macros/luatex/latex/novel/doc/html-resources/perfectbinding.png
2023/05/11 | 1040300 | systems/texlive/tlnet/archive/kpathsea.doc.r67065.tar.xz
-2023/05/11 | 10167 | macros/latex/contrib/l3kernel/l3flag.dtx
2023/05/11 | 10138 | macros/latex/contrib/l3experimental/l3draw-transforms.dtx
2023/05/11 | 10132 | systems/win32/miktex/tm/packages/nostarch.tar.lzma
2023/05/11 | 10018 | macros/latex/contrib/l3experimental/l3draw-scopes.dtx
@@ -1318,49 +1444,3 @@
2023/05/10 | 10445 | systems/win32/miktex/tm/packages/cool.tar.lzma
2023/05/10 | 10326 | systems/win32/miktex/tm/packages/tikz-nfold__source.tar.lzma
2023/05/10 | 10157 | systems/win32/miktex/tm/packages/srdp-mathematik__source.tar.lzma
-2023/05/09 | 992 | systems/texlive/tlnet/archive/collection-luatex.r67055.tar.xz
-2023/05/09 | 987664 | macros/context/contrib/context-handlecsv.zip
-2023/05/09 | 945084 | macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
-2023/05/09 | 921414 | macros/latex/contrib/csvsimple/csvsimple-l3.pdf
-2023/05/09 | 8848 | systems/texlive/tlnet/archive/biblatex-lncs.doc.r67053.tar.xz
-2023/05/09 | 7957 | macros/latex/contrib/csvsimple/csvsimple.tex
-2023/05/09 | 72043 | macros/latex/contrib/csvsimple/csvsimple-example.pdf
-2023/05/09 | 71383 | macros/latex/contrib/csvsimple/csvsimple-legacy.tex
-2023/05/09 | 690970 | macros/latex/contrib/csvsimple/csvsimple-legacy.pdf
-2023/05/09 | 6017 | macros/latex/contrib/proflycee/tex/ProfLycee.sty
-2023/05/09 | 538 | macros/luatex/latex/sympycalc/README.md
-2023/05/09 | 529 | macros/latex/contrib/proflycee/doc/testscript.py
-2023/05/09 | 43856 | macros/latex/contrib/csvsimple/csvsimple-l3.sty
-2023/05/09 | 4237 | macros/latex/contrib/csvsimple/csvsimple-doc.sty
-2023/05/09 | 4020 | macros/latex/contrib/csvsimple/csvsimple-example.tex
-2023/05/09 | 34461 | macros/luatex/latex/sympycalc/doc/SympyCalc-doc.tex
-2023/05/09 | 311200 | systems/texlive/tlnet/archive/pst-optic.doc.r67052.tar.xz
-2023/05/09 | 3016 | systems/texlive/tlnet/archive/biblatex-lncs.r67053.tar.xz
-2023/05/09 | 295749 | macros/latex/contrib/csvsimple/csvsimple.pdf
-2023/05/09 | 2908 | macros/latex/contrib/csvsimple/README.md
-2023/05/09 | 288 | macros/latex/contrib/csvsimple/gradesort.xml
-2023/05/09 | 263224 | systems/texlive/tlnet/archive/newtxsf.doc.r67051.tar.xz
-2023/05/09 | 259 | macros/latex/contrib/csvsimple/transform.xml
-2023/05/09 | 256428 | macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
-2023/05/09 | 25524 | macros/latex/contrib/csvsimple/csvsimple-legacy.sty
-2023/05/09 | 238 | macros/latex/contrib/csvsimple/csvsimple-example.csv
-2023/05/09 | 229 | macros/latex/contrib/csvsimple/namesort.xml
-2023/05/09 | 227 | macros/latex/contrib/csvsimple/amountsort.xml
-2023/05/09 | 2256 | systems/texlive/tlnet/archive/unifront.r67054.tar.xz
-2023/05/09 | 22499 | macros/latex/contrib/proflycee/tex/proflycee-tools-analyse.tex
-2023/05/09 | 2122940 | install/macros/latex/contrib/csvsimple.tds.zip
-2023/05/09 | 2122364 | macros/latex/contrib/csvsimple.zip
-2023/05/09 | 204252 | systems/texlive/tlnet/archive/unifront.doc.r67054.tar.xz
-2023/05/09 | 2018649 | macros/latex/contrib/proflycee.zip
-2023/05/09 | 18616 | CTAN.sites
-2023/05/09 | 176 | macros/latex/contrib/csvsimple/matriculationsort.xml
-2023/05/09 | 1721 | macros/latex/contrib/csvsimple/csvsimple.sty
-2023/05/09 | 166 | macros/latex/contrib/csvsimple/catsort.xml
-2023/05/09 | 14692 | systems/texlive/tlnet/archive/pst-optic.r67052.tar.xz
-2023/05/09 | 145115 | macros/luatex/latex/sympycalc/doc/SympyCalc-doc.pdf
-2023/05/09 | 135 | macros/latex/contrib/csvsimple/encoding.xml
-2023/05/09 | 127249 | macros/latex/contrib/csvsimple/csvsimple-title.png
-2023/05/09 | 11328 | macros/luatex/latex/sympycalc/tex/SympyCalc.sty
-2023/05/09 | 106155 | macros/latex/contrib/csvsimple/csvsimple-l3.tex
-2023/05/09 | 105976 | systems/texlive/tlnet/archive/newtxsf.r67051.tar.xz
-2023/05/09 | 10184 | macros/latex/contrib/csvsimple/CHANGES.md
diff --git a/biblio/bibtex/utils/bibcop/bibcop.1 b/biblio/bibtex/utils/bibcop/bibcop.1
index 19bb874117..93e3ccd28e 100644
--- a/biblio/bibtex/utils/bibcop/bibcop.1
+++ b/biblio/bibtex/utils/bibcop/bibcop.1
@@ -1,4 +1,4 @@
-.TH bibcop 1 "2023-02-13"
+.TH bibcop 1 "2023-05-16"
.SH NAME
bibcop \- Style Checker and Fixer of BibTeX Files (.bib)
.SH SYNOPSIS
diff --git a/biblio/bibtex/utils/bibcop/bibcop.dtx b/biblio/bibtex/utils/bibcop/bibcop.dtx
index e688e2379e..a1a5a08c99 100644
--- a/biblio/bibtex/utils/bibcop/bibcop.dtx
+++ b/biblio/bibtex/utils/bibcop/bibcop.dtx
@@ -50,7 +50,7 @@
%<package>\NeedsTeXFormat{LaTeX2e}
%<package>\ProvidesPackage{bibcop}
%<*package>
-[2023-02-13 0.0.9 Style Checker of Bibliography Files]
+[2023-05-16 0.0.10 Style Checker of Bibliography Files]
%</package>
%<*driver>
\documentclass{ltxdoc}
diff --git a/biblio/bibtex/utils/bibcop/bibcop.pdf b/biblio/bibtex/utils/bibcop/bibcop.pdf
index 09a4e1e5d0..be16c4e36d 100644
--- a/biblio/bibtex/utils/bibcop/bibcop.pdf
+++ b/biblio/bibtex/utils/bibcop/bibcop.pdf
Binary files differ
diff --git a/biblio/bibtex/utils/bibcop/bibcop.pl b/biblio/bibtex/utils/bibcop/bibcop.pl
index eb337fc365..cfe8e3ac47 100755
--- a/biblio/bibtex/utils/bibcop/bibcop.pl
+++ b/biblio/bibtex/utils/bibcop/bibcop.pl
@@ -40,6 +40,8 @@ my %blessed = (
'misc' => ['title', 'author', 'year', 'eprint?', 'archiveprefix?', 'primaryclass?', 'publisher?', 'organization?', 'doi?', 'url?'],
);
+my %minors = map { $_ => 1 } qw/in of at to by the a an and or as if up via yet nor but off on for into/;
+
# Check the presence of mandatory tags.
sub check_mandatory_tags {
my (%entry) = @_;
@@ -71,7 +73,6 @@ sub check_mandatory_tags {
sub check_capitalization {
my (%entry) = @_;
my %tags = map { $_ => 1 } qw/title booktitle journal publisher organization/;
- my %minors = map { $_ => 1 } qw/in of at to by the a an and or as if up via yet nor but off on for into/;
foreach my $tag (keys %entry) {
if (not exists $tags{$tag}) {
next;
@@ -241,13 +242,13 @@ sub check_typography {
}
}
foreach my $s (@space_before) {
- if ($value =~ /^.*[^\s]\Q$s\E.*$/) {
+ if ($value =~ /^.*[^\{\s]\Q$s\E.*$/) {
return "In the '$tag', put a space before the $symbols{$s}"
}
}
foreach my $s (@space_after) {
my $p = join('', @no_space_before);
- if ($value =~ /^.*\Q$s\E[^\s\Q$p\E].*$/) {
+ if ($value =~ /^.*\Q$s\E[^\}\s\Q$p\E].*$/) {
return "In the '$tag', put a space after the $symbols{$s}"
}
}
@@ -435,6 +436,92 @@ sub process_entry {
return @errors;
}
+sub fix_author {
+ my ($value) = @_;
+ my @authors = split(/\s?and\s?/, $value);
+ foreach my $author (@authors) {
+ $author =~ s/^\s+|\s+$//g;
+ $author =~ s/ ([A-Z])($| )/ $1.$2/g;
+ }
+ return join(' and ', @authors);
+}
+
+sub fix_number {
+ my ($value) = @_;
+ $value =~ s/^0+//g;
+ return $value;
+}
+
+sub fix_capitalization {
+ my ($value) = @_;
+ my @words = split(/\s+/, $value);
+ my $pos = 0;
+ foreach my $word (@words) {
+ $pos += 1;
+ if (not $word =~ /^[A-Za-z]/) {
+ next;
+ }
+ if (exists $minors{$word}) {
+ next;
+ }
+ if (exists $minors{lc($word)} and $pos gt 1) {
+ $word = lc($word);
+ next;
+ }
+ if ($word =~ /^[a-z].*/) {
+ $word =~ s/^([a-z])/\U$1/g;
+ }
+ if (index($word, '-') != -1) {
+ $word =~ s/-([a-z])/-\U$1/g;
+ }
+ }
+ return join(' ', @words);
+}
+
+sub fix_title {
+ my ($value) = @_;
+ $value = fix_capitalization($value);
+ return $value;
+}
+
+sub fix_pages {
+ my ($value) = @_;
+ if ($value =~ /^[1-9][0-9]*$/) {
+ return $value;
+ }
+ my ($left, $right) = split(/---|--|-|—|\s/, $value);
+ $left =~ s/^0+//g;
+ $right =~ s/^0+//g;
+ return $left . '--' . $right;
+}
+
+sub fix_booktitle {
+ my ($value) = @_;
+ $value = fix_capitalization($value);
+ if (index($value, 'Proceedings ') != 0) {
+ $value = 'Proceedings of the ' . $value;
+ }
+ return $value;
+}
+
+sub fix_journal {
+ my ($value) = @_;
+ $value = fix_capitalization($value);
+ return $value;
+}
+
+sub fix_publisher {
+ my ($value) = @_;
+ $value = fix_capitalization($value);
+ return $value;
+}
+
+sub fix_organization {
+ my ($value) = @_;
+ $value = fix_capitalization($value);
+ return $value;
+}
+
# Parse the incoming .bib file and return an array
# of hash-maps, where each one is a bibentry.
sub entries {
@@ -640,7 +727,7 @@ if (@ARGV+0 eq 0 or exists $args{'--help'} or exists $args{'-?'}) {
" --latex Report errors in LaTeX format using \\PackageWarningNoLine command\n\n" .
"If any issues, report to GitHub: https://github.com/yegor256/bibcop");
} elsif (exists $args{'--version'} or exists $args{'-v'}) {
- info('0.0.9');
+ info('0.0.10');
} else {
my ($file) = grep { not($_ =~ /^--.*$/) } @ARGV;
if (not $file) {
@@ -667,6 +754,12 @@ if (@ARGV+0 eq 0 or exists $args{'--help'} or exists $args{'-?'}) {
next;
}
my $value = clean_tex($entry{$tag});
+ my $fixer = "fix_$tag";
+ my $fixed = $value;
+ if (defined &{$fixer}) {
+ no strict 'refs';
+ $value = $fixer->($value);
+ }
if ($tag =~ /title|booktitle|journal/) {
$value = '{' . $value . '}';
}
diff --git a/biblio/ctan-bibdata/ctan.bib b/biblio/ctan-bibdata/ctan.bib
index fa34983986..14d8b51f99 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 16-05-2023, 02:00:59
+%% created at 17-05-2023, 02:00:14
%%
%% This file is provided under the terms of the LPPL v1.3 or
@@ -937,8 +937,8 @@
title = {The \texttt{adobeornaments} package},
subtitle = {Using ornaments in Adobe Fonts with Lua\LaTeX{} or \XeLaTeX{}},
author = {Elijah Z Granet},
- date = {2023-05-15},
- version = {1.0.0},
+ date = {2023-05-16},
+ version = {1.0.1},
license = {lppl1.3c,cc-by-sa-3},
mirror = {https://mirror.ctan.org/macros/unicodetex/latex/adobeornaments},
url = {https://ctan.org/pkg/adobeornaments},
@@ -6741,8 +6741,8 @@
title = {The \texttt{bibcop} package},
subtitle = {Style checker for .bib files},
author = {Yegor Bugayenko},
- date = {2023-02-13},
- version = {0.0.9},
+ date = {2023-05-16},
+ version = {0.0.10},
license = {mit},
mirror = {https://mirror.ctan.org/biblio/bibtex/utils/bibcop},
url = {https://ctan.org/pkg/bibcop},
@@ -13685,8 +13685,8 @@
subtitle = {A minimalist set of commands (expl3 based) to describe
Document and Class level commands/functions},
author = {Alceu Frigeri},
- date = {2023-05-13},
- version = {1.0},
+ date = {2023-05-16},
+ version = {1.1},
license = {lppl1.3c,gpl},
mirror = {https://mirror.ctan.org/macros/latex/contrib/codedescribe},
url = {https://ctan.org/pkg/codedescribe},
@@ -23832,7 +23832,7 @@
title = {The \texttt{expl3} package},
subtitle = {Wrapper package for experimental \LaTeX{}3},
author = {{The \LaTeX{} Project Team}},
- date = {2023-05-11},
+ date = {2023-05-16},
version = {},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/l3kernel},
@@ -36183,8 +36183,8 @@
title = {The \texttt{kpfonts-otf} package},
subtitle = {OTF version of the Kp-fonts},
author = {Daniel Flipo},
- date = {2023-03-31},
- version = {0.51},
+ date = {2023-05-16},
+ version = {0.52},
license = {ofl,lppl1.3},
mirror = {https://mirror.ctan.org/fonts/kpfonts-otf},
url = {https://ctan.org/pkg/kpfonts-otf},
@@ -36473,7 +36473,7 @@
title = {The \texttt{l3docstrip} package},
subtitle = {Strip documentation in \LaTeX{}3 source},
author = {{The \LaTeX{} Project Team}},
- date = {2023-05-11},
+ date = {2023-05-16},
version = {},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/l3kernel},
@@ -36495,7 +36495,7 @@
title = {The \texttt{l3kernel} package},
subtitle = {LaTeX3 programming conventions},
author = {{The \LaTeX{} Project Team}},
- date = {2023-05-11},
+ date = {2023-05-16},
version = {},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/l3kernel},
@@ -36528,7 +36528,7 @@
title = {The \texttt{l3regex} package},
subtitle = {Regular expression facilities for \LaTeX{}},
author = {{The \LaTeX{} Project Team}},
- date = {2023-05-11},
+ date = {2023-05-16},
version = {},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/l3kernel/l3regex.dtx},
@@ -56625,7 +56625,7 @@
title = {The \texttt{ptlatexcommands} package},
subtitle = {\LaTeX{} to commands in Portuguese},
author = {Geraldo Pereira de Morais Junior},
- date = {2023-05-15},
+ date = {2023-05-16},
version = {0.1},
license = {mit},
mirror = {https://mirror.ctan.org/macros/latex/contrib/ptlatexcommands},
@@ -63961,8 +63961,8 @@
title = {The \texttt{starray} package},
subtitle = {A structured array (of properties) based on expl3},
author = {Alceu Frigeri},
- date = {2023-05-13},
- version = {1.0},
+ date = {2023-05-16},
+ version = {1.1},
license = {lppl1.3c,gpl},
mirror = {https://mirror.ctan.org/macros/latex/contrib/starray},
url = {https://ctan.org/pkg/starray},
@@ -65720,8 +65720,8 @@
title = {The \texttt{tagpdf} package},
subtitle = {Tools for experimenting with tagging using pdf\LaTeX{} and LuaLaTeX},
author = {Ulrike Fischer},
- date = {2023-04-25},
- version = {0.98f},
+ date = {2023-05-16},
+ version = {0.98g},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/tagpdf},
url = {https://ctan.org/pkg/tagpdf},
@@ -68025,8 +68025,8 @@
title = {The \texttt{textcsc} package},
subtitle = {Simple commands for caps-to-small-caps text},
author = {Elijah Z Granet},
- date = {2023-04-24},
- version = {1.1.0},
+ date = {2023-05-16},
+ version = {1.2.0},
license = {lppl1.3,cc-by-sa-3},
mirror = {https://mirror.ctan.org/macros/unicodetex/latex/textcsc},
url = {https://ctan.org/pkg/textcsc},
@@ -69143,8 +69143,8 @@
title = {The \texttt{tikz-nfold} package},
subtitle = {Triple, quadruple, and n-fold paths with TikZ},
author = {Jonathan Schulz},
- date = {2023-05-04},
- version = {0.1.1},
+ date = {2023-05-16},
+ version = {0.1.2},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/graphics/pgf/contrib/tikz-nfold},
url = {https://ctan.org/pkg/tikz-nfold},
diff --git a/biblio/ctan-bibdata/ctan.pdf b/biblio/ctan-bibdata/ctan.pdf
index a29ad5b286..2acb554f18 100644
--- a/biblio/ctan-bibdata/ctan.pdf
+++ b/biblio/ctan-bibdata/ctan.pdf
Binary files differ
diff --git a/fonts/kpfonts-otf/README.md b/fonts/kpfonts-otf/README.md
index 304537de0c..07ee915e7e 100644
--- a/fonts/kpfonts-otf/README.md
+++ b/fonts/kpfonts-otf/README.md
@@ -204,6 +204,10 @@ Either version 1.3 or, at your option, any later version.
Metrics of all "over" arrows and harpoons corrected.
Metrics of all "under" arrows and harpoons corrected.
Most horizontal arrows and harpoons are now stretchable.
+
+* v. 0.52:
+ - Math fonts: minor corrections to radicals.
+ Fixed missing mcalM in KpMath-Sans.otf
---
Copyright 2020-2023 Daniel Flipo
diff --git a/fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-English.ltx b/fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-English.ltx
index 6f92caab88..199bda7ebd 100644
--- a/fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-English.ltx
+++ b/fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-English.ltx
@@ -40,7 +40,7 @@
\title{Kp-fonts: OpenType version}
\author{\href{mailto:daniel.flipo@free.fr}{Daniel \textsc{Flipo}}}
-\newcommand*{\version}{0.51}
+\newcommand*{\version}{0.52}
\begin{document}
\selectlanguage{british}
diff --git a/fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-English.pdf b/fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-English.pdf
index df7d666062..1759548eb6 100644
--- a/fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-English.pdf
+++ b/fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-English.pdf
Binary files differ
diff --git a/fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-French.ltx b/fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-French.ltx
index 97b8cdf357..9a1f6eb1db 100644
--- a/fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-French.ltx
+++ b/fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-French.ltx
@@ -39,7 +39,7 @@
\title{Kp-fonts version OpenType}
\author{\href{mailto:daniel.flipo@free.fr}{Daniel \textsc{Flipo}}}
-\newcommand*{\version}{0.51}
+\newcommand*{\version}{0.52}
\begin{document}
\maketitle
diff --git a/fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-French.pdf b/fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-French.pdf
index 0da52f3ff9..ce1579ea21 100644
--- a/fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-French.pdf
+++ b/fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-French.pdf
Binary files differ
diff --git a/fonts/kpfonts-otf/doc/unimath-kpfonts.pdf b/fonts/kpfonts-otf/doc/unimath-kpfonts.pdf
index 25365ab2e9..764c76f1d8 100644
--- a/fonts/kpfonts-otf/doc/unimath-kpfonts.pdf
+++ b/fonts/kpfonts-otf/doc/unimath-kpfonts.pdf
Binary files differ
diff --git a/fonts/kpfonts-otf/fonts/KpMath-Bold.otf b/fonts/kpfonts-otf/fonts/KpMath-Bold.otf
index 3b3ae1f512..17d3f45401 100644
--- a/fonts/kpfonts-otf/fonts/KpMath-Bold.otf
+++ b/fonts/kpfonts-otf/fonts/KpMath-Bold.otf
Binary files differ
diff --git a/fonts/kpfonts-otf/fonts/KpMath-Light.otf b/fonts/kpfonts-otf/fonts/KpMath-Light.otf
index 58355ab17e..2e69b78384 100644
--- a/fonts/kpfonts-otf/fonts/KpMath-Light.otf
+++ b/fonts/kpfonts-otf/fonts/KpMath-Light.otf
Binary files differ
diff --git a/fonts/kpfonts-otf/fonts/KpMath-Regular.otf b/fonts/kpfonts-otf/fonts/KpMath-Regular.otf
index 81b06cb928..06e1f614e6 100644
--- a/fonts/kpfonts-otf/fonts/KpMath-Regular.otf
+++ b/fonts/kpfonts-otf/fonts/KpMath-Regular.otf
Binary files differ
diff --git a/fonts/kpfonts-otf/fonts/KpMath-Sans.otf b/fonts/kpfonts-otf/fonts/KpMath-Sans.otf
index 77e7e34502..002375d11e 100644
--- a/fonts/kpfonts-otf/fonts/KpMath-Sans.otf
+++ b/fonts/kpfonts-otf/fonts/KpMath-Sans.otf
Binary files differ
diff --git a/fonts/kpfonts-otf/fonts/KpMath-SansBold.otf b/fonts/kpfonts-otf/fonts/KpMath-SansBold.otf
index a6c684a6a2..dc1af4bbe0 100644
--- a/fonts/kpfonts-otf/fonts/KpMath-SansBold.otf
+++ b/fonts/kpfonts-otf/fonts/KpMath-SansBold.otf
Binary files differ
diff --git a/fonts/kpfonts-otf/fonts/KpMath-Semibold.otf b/fonts/kpfonts-otf/fonts/KpMath-Semibold.otf
index 79eeefde18..28addc8f2a 100644
--- a/fonts/kpfonts-otf/fonts/KpMath-Semibold.otf
+++ b/fonts/kpfonts-otf/fonts/KpMath-Semibold.otf
Binary files differ
diff --git a/fonts/kpfonts-otf/fonts/KpMono-Bold.otf b/fonts/kpfonts-otf/fonts/KpMono-Bold.otf
index cce44a86b5..a12e137ebb 100644
--- a/fonts/kpfonts-otf/fonts/KpMono-Bold.otf
+++ b/fonts/kpfonts-otf/fonts/KpMono-Bold.otf
Binary files differ
diff --git a/fonts/kpfonts-otf/fonts/KpMono-BoldItalic.otf b/fonts/kpfonts-otf/fonts/KpMono-BoldItalic.otf
index c2ad021101..6baf7fc646 100644
--- a/fonts/kpfonts-otf/fonts/KpMono-BoldItalic.otf
+++ b/fonts/kpfonts-otf/fonts/KpMono-BoldItalic.otf
Binary files differ
diff --git a/fonts/kpfonts-otf/fonts/KpMono-Italic.otf b/fonts/kpfonts-otf/fonts/KpMono-Italic.otf
index 58637aefd1..69c6c2fafd 100644
--- a/fonts/kpfonts-otf/fonts/KpMono-Italic.otf
+++ b/fonts/kpfonts-otf/fonts/KpMono-Italic.otf
Binary files differ
diff --git a/fonts/kpfonts-otf/fonts/KpMono-Regular.otf b/fonts/kpfonts-otf/fonts/KpMono-Regular.otf
index 67030fbd10..6509d987ca 100644
--- a/fonts/kpfonts-otf/fonts/KpMono-Regular.otf
+++ b/fonts/kpfonts-otf/fonts/KpMono-Regular.otf
Binary files differ
diff --git a/fonts/kpfonts-otf/fonts/KpRoman-Bold.otf b/fonts/kpfonts-otf/fonts/KpRoman-Bold.otf
index b51f0efa56..c69f2fb08a 100644
--- a/fonts/kpfonts-otf/fonts/KpRoman-Bold.otf
+++ b/fonts/kpfonts-otf/fonts/KpRoman-Bold.otf
Binary files differ
diff --git a/fonts/kpfonts-otf/fonts/KpRoman-BoldItalic.otf b/fonts/kpfonts-otf/fonts/KpRoman-BoldItalic.otf
index fcf33a5f3d..c2c8f18c0c 100644
--- a/fonts/kpfonts-otf/fonts/KpRoman-BoldItalic.otf
+++ b/fonts/kpfonts-otf/fonts/KpRoman-BoldItalic.otf
Binary files differ
diff --git a/fonts/kpfonts-otf/fonts/KpRoman-Italic.otf b/fonts/kpfonts-otf/fonts/KpRoman-Italic.otf
index 9f8885cdc7..29a1f759ea 100644
--- a/fonts/kpfonts-otf/fonts/KpRoman-Italic.otf
+++ b/fonts/kpfonts-otf/fonts/KpRoman-Italic.otf
Binary files differ
diff --git a/fonts/kpfonts-otf/fonts/KpRoman-Light.otf b/fonts/kpfonts-otf/fonts/KpRoman-Light.otf
index cd4e5a74aa..ae7f7a9cd7 100644
--- a/fonts/kpfonts-otf/fonts/KpRoman-Light.otf
+++ b/fonts/kpfonts-otf/fonts/KpRoman-Light.otf
Binary files differ
diff --git a/fonts/kpfonts-otf/fonts/KpRoman-LightItalic.otf b/fonts/kpfonts-otf/fonts/KpRoman-LightItalic.otf
index ac8cf283be..4b0c9d4ed6 100644
--- a/fonts/kpfonts-otf/fonts/KpRoman-LightItalic.otf
+++ b/fonts/kpfonts-otf/fonts/KpRoman-LightItalic.otf
Binary files differ
diff --git a/fonts/kpfonts-otf/fonts/KpRoman-Regular.otf b/fonts/kpfonts-otf/fonts/KpRoman-Regular.otf
index ea30d2bb01..75080c10f8 100644
--- a/fonts/kpfonts-otf/fonts/KpRoman-Regular.otf
+++ b/fonts/kpfonts-otf/fonts/KpRoman-Regular.otf
Binary files differ
diff --git a/fonts/kpfonts-otf/fonts/KpRoman-Semibold.otf b/fonts/kpfonts-otf/fonts/KpRoman-Semibold.otf
index 492574ba46..a0aaabfdfd 100644
--- a/fonts/kpfonts-otf/fonts/KpRoman-Semibold.otf
+++ b/fonts/kpfonts-otf/fonts/KpRoman-Semibold.otf
Binary files differ
diff --git a/fonts/kpfonts-otf/fonts/KpRoman-SemiboldItalic.otf b/fonts/kpfonts-otf/fonts/KpRoman-SemiboldItalic.otf
index 724f07b4fe..91bf21f146 100644
--- a/fonts/kpfonts-otf/fonts/KpRoman-SemiboldItalic.otf
+++ b/fonts/kpfonts-otf/fonts/KpRoman-SemiboldItalic.otf
Binary files differ
diff --git a/fonts/kpfonts-otf/fonts/KpSans-Bold.otf b/fonts/kpfonts-otf/fonts/KpSans-Bold.otf
index 008b20a811..3364f58fcf 100644
--- a/fonts/kpfonts-otf/fonts/KpSans-Bold.otf
+++ b/fonts/kpfonts-otf/fonts/KpSans-Bold.otf
Binary files differ
diff --git a/fonts/kpfonts-otf/fonts/KpSans-BoldItalic.otf b/fonts/kpfonts-otf/fonts/KpSans-BoldItalic.otf
index 4e06f4e959..402022c817 100644
--- a/fonts/kpfonts-otf/fonts/KpSans-BoldItalic.otf
+++ b/fonts/kpfonts-otf/fonts/KpSans-BoldItalic.otf
Binary files differ
diff --git a/fonts/kpfonts-otf/fonts/KpSans-Italic.otf b/fonts/kpfonts-otf/fonts/KpSans-Italic.otf
index 12ccb496c2..5453d55466 100644
--- a/fonts/kpfonts-otf/fonts/KpSans-Italic.otf
+++ b/fonts/kpfonts-otf/fonts/KpSans-Italic.otf
Binary files differ
diff --git a/fonts/kpfonts-otf/fonts/KpSans-Regular.otf b/fonts/kpfonts-otf/fonts/KpSans-Regular.otf
index 071c881e05..b426b683ac 100644
--- a/fonts/kpfonts-otf/fonts/KpSans-Regular.otf
+++ b/fonts/kpfonts-otf/fonts/KpSans-Regular.otf
Binary files differ
diff --git a/fonts/kpfonts-otf/tex/kpfonts-otf.sty b/fonts/kpfonts-otf/tex/kpfonts-otf.sty
index fe09cc9f57..5f9b8f90d0 100644
--- a/fonts/kpfonts-otf/tex/kpfonts-otf.sty
+++ b/fonts/kpfonts-otf/tex/kpfonts-otf.sty
@@ -1,6 +1,6 @@
\NeedsTeXFormat{LaTeX2e}[2019-01-01]
-\def\fileversion{0.51}
-\def\filedate{2023-03-30}
+\def\fileversion{0.52}
+\def\filedate{2023-05-16}
\ProvidesPackage{kpfonts-otf}[\filedate\space\fileversion]
% Ensure luatex or xetex engine
diff --git a/graphics/pgf/contrib/tikz-nfold/README.md b/graphics/pgf/contrib/tikz-nfold/README.md
index bb89176466..6cfba546a4 100644
--- a/graphics/pgf/contrib/tikz-nfold/README.md
+++ b/graphics/pgf/contrib/tikz-nfold/README.md
@@ -1,5 +1,5 @@
# tikz-nfold
-## Version 0.1.1
+## Version 0.1.2
This library adds higher-order paths to [TikZ](https://ctan.org/pkg/pgf) and also fixes some graphical issues with TikZ' `double` paths, used e.g. in wide arrows. It is also compatible with [tikz-cd](https://ctan.org/pkg/tikz-cd), adding support for triple and higher arrows. See the [documentation](tikz-nfold-doc.pdf) for full details.
diff --git a/graphics/pgf/contrib/tikz-nfold/tikz-nfold-doc.pdf b/graphics/pgf/contrib/tikz-nfold/tikz-nfold-doc.pdf
index a02b30a571..9a26adfd67 100644
--- a/graphics/pgf/contrib/tikz-nfold/tikz-nfold-doc.pdf
+++ b/graphics/pgf/contrib/tikz-nfold/tikz-nfold-doc.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/tikz-nfold/tikzlibrarynfold.code.tex b/graphics/pgf/contrib/tikz-nfold/tikzlibrarynfold.code.tex
index 4cc014355b..da48d7b62b 100644
--- a/graphics/pgf/contrib/tikz-nfold/tikzlibrarynfold.code.tex
+++ b/graphics/pgf/contrib/tikz-nfold/tikzlibrarynfold.code.tex
@@ -806,13 +806,24 @@
\let\pgf@next\relax%
\else%
\ifx#1\pgfsyssoftpath@movetotoken%
- \def\pgf@nfold@macrotoadd{\pgf@nfold@parsemoveto{#2}{#3}}%
- \pgf@nfold@addmacro\pgf@cur@conn@segment%
- % A moveto marks the beginning/end of one connected segment
- \pgf@nfold@process@conn@segment%
- \let\pgf@nfold@last@closepath@from\pgfutil@empty%
- \let\pgf@cur@conn@segment\pgfutil@empty%
- \def\pgf@nfold@parser@last@moveto{{#2}{#3}}%
+ \ifx\pgf@cur@conn@segment\pgfutil@empty%
+ % This case happens for the very first segment or for double movetos.
+ % We need special treatment here, as otherwise the arrow tip extension
+ % does not work correctly. The \pgf@nfold@parsemoveto will be called
+ % in \pgf@nfold@process@conn@segment.
+ \def\pgf@nfold@parser@last@moveto{{#2}{#3}}%
+ % Make sure \pgf@cur@conn@segment is no longer empty so double movetos are not
+ % treated the same as single movetos. This is also relevant to arrow tip extensions
+ \def\pgf@cur@conn@segment{\relax}%
+ \else%
+ \def\pgf@nfold@macrotoadd{\pgf@nfold@parsemoveto{#2}{#3}}%
+ \pgf@nfold@addmacro\pgf@cur@conn@segment%
+ % A moveto marks the beginning/end of one connected segment
+ \pgf@nfold@process@conn@segment%
+ \let\pgf@nfold@last@closepath@from\pgfutil@empty%
+ \let\pgf@cur@conn@segment\pgfutil@empty%
+ \def\pgf@nfold@parser@last@moveto{{#2}{#3}}%
+ \fi
\else%
\ifx#1\pgfsyssoftpath@linetotoken%
\def\pgf@nfold@macrotoadd{\pgf@nfold@parselineto{#2}{#3}}%
diff --git a/macros/context/contrib/context-sudoku/sudoku/LICENSE b/macros/context/contrib/context-sudoku/sudoku/LICENSE
new file mode 100644
index 0000000000..ab4635fd09
--- /dev/null
+++ b/macros/context/contrib/context-sudoku/sudoku/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2021-2023 Jairo A. del Rio
+
+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/context/contrib/context-sudoku/sudoku/README.md b/macros/context/contrib/context-sudoku/sudoku/README.md
new file mode 100644
index 0000000000..f9ffa7b04e
--- /dev/null
+++ b/macros/context/contrib/context-sudoku/sudoku/README.md
@@ -0,0 +1,40 @@
+# sudoku
+
+This is a ConTeXt port of a famous sudoku solver by Peter Norvig. It
+provides four commands, as well as a command handler:
+
+1. `\sudoku` typesets a sudoku if valid.
+2. `\sudokufile` typesets a sudoku from a file if valid.
+3. `\solvesudoku` solves a sudoku if valid.
+3. `\solvesudokufile` solves a sudoku from a file if valid.
+5. `\setupsudoku` is the command handler for commands above.
+
+`\setupsudoku` understands the following parameters:
+
+```tex
+\setupsudoku
+ [size=2em,
+ align={middle,lohi},
+ evenbackground=color,
+ oddbackground=color,
+ evenbackgroundcolor=darkred,
+ oddbackgroundcolor=darkblue]
+```
+
+As you might notice, sudokus are just `TABLE`'s in disguise, but only
+certain parameters are passed in order to enforce constraints and keep
+a sudoku in square shape.
+
+If an invalid sudoku or sudoku file is provided, a placeholder with an
+error message is printed instead. To change message errors, set
+something like this:
+
+```tex
+\setupsudoku
+ [placeholdercommand=\inframed,
+ placeholderlabela=First error,
+ placeholderlabelb=Second error,
+ placeholderlabelc=Third error]
+```
+
+For actual examples, check `t-sudoku.mkvi`.
diff --git a/macros/context/contrib/context-sudoku/sudoku/VERSION b/macros/context/contrib/context-sudoku/sudoku/VERSION
new file mode 100644
index 0000000000..0129129226
--- /dev/null
+++ b/macros/context/contrib/context-sudoku/sudoku/VERSION
@@ -0,0 +1 @@
+2023-05-15
diff --git a/macros/context/contrib/context-sudoku/sudoku/tex/context/third/sudoku/t-sudoku-test-01.txt b/macros/context/contrib/context-sudoku/sudoku/tex/context/third/sudoku/t-sudoku-test-01.txt
new file mode 100644
index 0000000000..457b024636
--- /dev/null
+++ b/macros/context/contrib/context-sudoku/sudoku/tex/context/third/sudoku/t-sudoku-test-01.txt
@@ -0,0 +1,9 @@
+003 010 008
+000 400 030
+870 003 020
+010 009 605
+300 867 002
+906 500 040
+020 900 074
+090 006 000
+500 070 100 \ No newline at end of file
diff --git a/macros/context/contrib/context-sudoku/sudoku/tex/context/third/sudoku/t-sudoku-test-02.txt b/macros/context/contrib/context-sudoku/sudoku/tex/context/third/sudoku/t-sudoku-test-02.txt
new file mode 100644
index 0000000000..9898c3f46b
--- /dev/null
+++ b/macros/context/contrib/context-sudoku/sudoku/tex/context/third/sudoku/t-sudoku-test-02.txt
@@ -0,0 +1,9 @@
+000 000 620
+106 230 040
+900 600 001
+200 400 803
+090 000 010
+708 009 004
+600 005 008
+020 048 905
+045 000 000
diff --git a/macros/context/contrib/context-sudoku/sudoku/tex/context/third/sudoku/t-sudoku-test-03.txt b/macros/context/contrib/context-sudoku/sudoku/tex/context/third/sudoku/t-sudoku-test-03.txt
new file mode 100644
index 0000000000..05e95666b6
--- /dev/null
+++ b/macros/context/contrib/context-sudoku/sudoku/tex/context/third/sudoku/t-sudoku-test-03.txt
@@ -0,0 +1,9 @@
+043080250
+600000000
+000001094
+900004070
+000608000
+010200003
+820500000
+000000005
+034090710
diff --git a/macros/context/contrib/context-sudoku/sudoku/tex/context/third/sudoku/t-sudoku.lua b/macros/context/contrib/context-sudoku/sudoku/tex/context/third/sudoku/t-sudoku.lua
new file mode 100644
index 0000000000..4e6e12578b
--- /dev/null
+++ b/macros/context/contrib/context-sudoku/sudoku/tex/context/third/sudoku/t-sudoku.lua
@@ -0,0 +1,1237 @@
+if not modules then modules = { } end modules ['t-sudoku'] =
+{
+ version = "2023-05-15",
+ comment = "Sudokus for ConTeXt",
+ author = "Jairo A. del Rio",
+ copyright = "Jairo A. del Rio",
+ license = "MIT License"
+}
+
+-- Sources:
+
+-- https://norvig.com/sudoku.html
+-- https://naokishibuya.medium.com/peter-norvigs-sudoku-solver-25779bb349ce
+-- https://gist.github.com/neilalbrock/894520
+
+local table, math, io = table, math, io
+local ipairs, pairs, tostring = ipairs, pairs, tostring
+
+local floor, ceil = math.floor, math.ceil
+local insert, concat, sort = table.insert, table.concat, table.sort
+
+-- ConTeXt goodies
+
+local context = context
+local interfaces = interfaces
+local implement = interfaces.implement
+
+-- Take a look for definitions
+-- https://source.contextgarden.net/tex/context/base/mkiv/l-table.lua
+-- https://source.contextgarden.net/tex/context/base/mkiv/l-io.lua
+
+local contains, copy, unique = table.contains, table.copy, table.unique
+
+local loaddata = io.loaddata
+
+local rows = {"A", "B", "C", "D", "E", "F", "G", "H", "I"}
+local columns = {"1", "2", "3", "4", "5", "6", "7", "8", "9"}
+
+local rowsquare =
+{
+ {"A", "B", "C"}, {"D", "E", "F"}, {"G", "H", "I"}
+}
+
+local columnsquare =
+{
+ {"1", "2", "3"}, {"4", "5", "6"}, {"7", "8", "9"}
+}
+
+local digits = '123456789'
+
+-- Helper functions
+-- F#ck Python
+
+local shuffle, string_to_table
+
+shuffle = function(t)
+ for i = #t, 2, -1 do
+ local j = random(i)
+ t[i], t[j] = t[j], t[i]
+ end
+ return t
+end
+
+string_to_table = function(s)
+ local result = {}
+ s = s:gsub("[.%d]", function(x)
+ insert(result, x == "." and x or tostring(floor(x)))
+ end)
+ return result
+end
+
+-- Data
+
+local squares, units
+
+squares =
+{
+ "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9",
+ "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9",
+ "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9",
+ "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9",
+ "E1", "E2", "E3", "E4", "E5", "E6", "E7", "E8", "E9",
+ "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9",
+ "G1", "G2", "G3", "G4", "G5", "G6", "G7", "G8", "G9",
+ "H1", "H2", "H3", "H4", "H5", "H6", "H7", "H8", "H9",
+ "I1", "I2", "I3", "I4", "I5", "I6", "I7", "I8", "I9"
+}
+
+units =
+{
+ ['A1'] =
+ {
+ {'A1', 'B1', 'C1', 'D1', 'E1', 'F1', 'G1', 'H1', 'I1'},
+ {'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9'},
+ {'A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3'}
+ },
+ ['A2'] =
+ {
+ {'A2', 'B2', 'C2', 'D2', 'E2', 'F2', 'G2', 'H2', 'I2'},
+ {'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9'},
+ {'A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3'}
+ },
+ ['A3'] =
+ {
+ {'A3', 'B3', 'C3', 'D3', 'E3', 'F3', 'G3', 'H3', 'I3'},
+ {'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9'},
+ {'A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3'}
+ },
+ ['A4'] =
+ {
+ {'A4', 'B4', 'C4', 'D4', 'E4', 'F4', 'G4', 'H4', 'I4'},
+ {'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9'},
+ {'A4', 'A5', 'A6', 'B4', 'B5', 'B6', 'C4', 'C5', 'C6'}
+ },
+ ['A5'] = {
+ {'A5', 'B5', 'C5', 'D5', 'E5', 'F5', 'G5', 'H5', 'I5'},
+ {'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9'},
+ {'A4', 'A5', 'A6', 'B4', 'B5', 'B6', 'C4', 'C5', 'C6'}
+ },
+ ['A6'] =
+ {
+ {'A6', 'B6', 'C6', 'D6', 'E6', 'F6', 'G6', 'H6', 'I6'},
+ {'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9'},
+ {'A4', 'A5', 'A6', 'B4', 'B5', 'B6', 'C4', 'C5', 'C6'}
+ },
+ ['A7'] = {
+ {'A7', 'B7', 'C7', 'D7', 'E7', 'F7', 'G7', 'H7', 'I7'},
+ {'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9'},
+ {'A7', 'A8', 'A9', 'B7', 'B8', 'B9', 'C7', 'C8', 'C9'}
+ },
+ ['A8'] =
+ {
+ {'A8', 'B8', 'C8', 'D8', 'E8', 'F8', 'G8', 'H8', 'I8'},
+ {'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9'},
+ {'A7', 'A8', 'A9', 'B7', 'B8', 'B9', 'C7', 'C8', 'C9'}
+ },
+ ['A9'] =
+ {
+ {'A9', 'B9', 'C9', 'D9', 'E9', 'F9', 'G9', 'H9', 'I9'},
+ {'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9'},
+ {'A7', 'A8', 'A9', 'B7', 'B8', 'B9', 'C7', 'C8', 'C9'}
+ },
+ ['B1'] =
+ {
+ {'A1', 'B1', 'C1', 'D1', 'E1', 'F1', 'G1', 'H1', 'I1'},
+ {'B1', 'B2', 'B3', 'B4', 'B5', 'B6', 'B7', 'B8', 'B9'},
+ {'A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3'}
+ },
+ ['B2'] =
+ {
+ {'A2', 'B2', 'C2', 'D2', 'E2', 'F2', 'G2', 'H2', 'I2'},
+ {'B1', 'B2', 'B3', 'B4', 'B5', 'B6', 'B7', 'B8', 'B9'},
+ {'A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3'}
+ },
+ ['B3'] =
+ {
+ {'A3', 'B3', 'C3', 'D3', 'E3', 'F3', 'G3', 'H3', 'I3'},
+ {'B1', 'B2', 'B3', 'B4', 'B5', 'B6', 'B7', 'B8', 'B9'},
+ {'A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3'}
+ },
+ ['B4'] =
+ {
+ {'A4', 'B4', 'C4', 'D4', 'E4', 'F4', 'G4', 'H4', 'I4'},
+ {'B1', 'B2', 'B3', 'B4', 'B5', 'B6', 'B7', 'B8', 'B9'},
+ {'A4', 'A5', 'A6', 'B4', 'B5', 'B6', 'C4', 'C5', 'C6'}
+ },
+ ['B5'] =
+ {
+ {'A5', 'B5', 'C5', 'D5', 'E5', 'F5', 'G5', 'H5', 'I5'},
+ {'B1', 'B2', 'B3', 'B4', 'B5', 'B6', 'B7', 'B8', 'B9'},
+ {'A4', 'A5', 'A6', 'B4', 'B5', 'B6', 'C4', 'C5', 'C6'}
+ },
+ ['B6'] =
+ {
+ {'A6', 'B6', 'C6', 'D6', 'E6', 'F6', 'G6', 'H6', 'I6'},
+ {'B1', 'B2', 'B3', 'B4', 'B5', 'B6', 'B7', 'B8', 'B9'},
+ {'A4', 'A5', 'A6', 'B4', 'B5', 'B6', 'C4', 'C5', 'C6'}
+ },
+ ['B7'] =
+ {
+ {'A7', 'B7', 'C7', 'D7', 'E7', 'F7', 'G7', 'H7', 'I7'},
+ {'B1', 'B2', 'B3', 'B4', 'B5', 'B6', 'B7', 'B8', 'B9'},
+ {'A7', 'A8', 'A9', 'B7', 'B8', 'B9', 'C7', 'C8', 'C9'}
+ },
+ ['B8'] =
+ {
+ {'A8', 'B8', 'C8', 'D8', 'E8', 'F8', 'G8', 'H8', 'I8'},
+ {'B1', 'B2', 'B3', 'B4', 'B5', 'B6', 'B7', 'B8', 'B9'},
+ {'A7', 'A8', 'A9', 'B7', 'B8', 'B9', 'C7', 'C8', 'C9'}
+ },
+ ['B9'] =
+ {
+ {'A9', 'B9', 'C9', 'D9', 'E9', 'F9', 'G9', 'H9', 'I9'},
+ {'B1', 'B2', 'B3', 'B4', 'B5', 'B6', 'B7', 'B8', 'B9'},
+ {'A7', 'A8', 'A9', 'B7', 'B8', 'B9', 'C7', 'C8', 'C9'}
+ },
+ ['C1'] =
+ {
+ {'A1', 'B1', 'C1', 'D1', 'E1', 'F1', 'G1', 'H1', 'I1'},
+ {'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9'},
+ {'A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3'}
+ },
+ ['C2'] =
+ {
+ {'A2', 'B2', 'C2', 'D2', 'E2', 'F2', 'G2', 'H2', 'I2'},
+ {'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9'},
+ {'A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3'}
+ },
+ ['C3'] =
+ {
+ {'A3', 'B3', 'C3', 'D3', 'E3', 'F3', 'G3', 'H3', 'I3'},
+ {'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9'},
+ {'A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3'}
+ },
+ ['C4'] =
+ {
+ {'A4', 'B4', 'C4', 'D4', 'E4', 'F4', 'G4', 'H4', 'I4'},
+ {'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9'},
+ {'A4', 'A5', 'A6', 'B4', 'B5', 'B6', 'C4', 'C5', 'C6'}
+ },
+ ['C5'] =
+ {
+ {'A5', 'B5', 'C5', 'D5', 'E5', 'F5', 'G5', 'H5', 'I5'},
+ {'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9'},
+ {'A4', 'A5', 'A6', 'B4', 'B5', 'B6', 'C4', 'C5', 'C6'}
+ },
+ ['C6'] =
+ {
+ {'A6', 'B6', 'C6', 'D6', 'E6', 'F6', 'G6', 'H6', 'I6'},
+ {'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9'},
+ {'A4', 'A5', 'A6', 'B4', 'B5', 'B6', 'C4', 'C5', 'C6'}
+ },
+ ['C7'] =
+ {
+ {'A7', 'B7', 'C7', 'D7', 'E7', 'F7', 'G7', 'H7', 'I7'},
+ {'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9'},
+ {'A7', 'A8', 'A9', 'B7', 'B8', 'B9', 'C7', 'C8', 'C9'}
+ },
+ ['C8'] =
+ {
+ {'A8', 'B8', 'C8', 'D8', 'E8', 'F8', 'G8', 'H8', 'I8'},
+ {'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9'},
+ {'A7', 'A8', 'A9', 'B7', 'B8', 'B9', 'C7', 'C8', 'C9'}
+ },
+ ['C9'] =
+ {
+ {'A9', 'B9', 'C9', 'D9', 'E9', 'F9', 'G9', 'H9', 'I9'},
+ {'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9'},
+ {'A7', 'A8', 'A9', 'B7', 'B8', 'B9', 'C7', 'C8', 'C9'}
+ },
+ ['D1'] =
+ {
+ {'A1', 'B1', 'C1', 'D1', 'E1', 'F1', 'G1', 'H1', 'I1'},
+ {'D1', 'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9'},
+ {'D1', 'D2', 'D3', 'E1', 'E2', 'E3', 'F1', 'F2', 'F3'}
+ },
+ ['D2'] =
+ {
+ {'A2', 'B2', 'C2', 'D2', 'E2', 'F2', 'G2', 'H2', 'I2'},
+ {'D1', 'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9'},
+ {'D1', 'D2', 'D3', 'E1', 'E2', 'E3', 'F1', 'F2', 'F3'}
+ },
+ ['D3'] =
+ {
+ {'A3', 'B3', 'C3', 'D3', 'E3', 'F3', 'G3', 'H3', 'I3'},
+ {'D1', 'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9'},
+ {'D1', 'D2', 'D3', 'E1', 'E2', 'E3', 'F1', 'F2', 'F3'}
+ },
+ ['D4'] =
+ {
+ {'A4', 'B4', 'C4', 'D4', 'E4', 'F4', 'G4', 'H4', 'I4'},
+ {'D1', 'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9'},
+ {'D4', 'D5', 'D6', 'E4', 'E5', 'E6', 'F4', 'F5', 'F6'}
+ },
+ ['D5'] =
+ {
+ {'A5', 'B5', 'C5', 'D5', 'E5', 'F5', 'G5', 'H5', 'I5'},
+ {'D1', 'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9'},
+ {'D4', 'D5', 'D6', 'E4', 'E5', 'E6', 'F4', 'F5', 'F6'}
+ },
+ ['D6'] =
+ {
+ {'A6', 'B6', 'C6', 'D6', 'E6', 'F6', 'G6', 'H6', 'I6'},
+ {'D1', 'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9'},
+ {'D4', 'D5', 'D6', 'E4', 'E5', 'E6', 'F4', 'F5', 'F6'}
+ },
+ ['D7'] =
+ {
+ {'A7', 'B7', 'C7', 'D7', 'E7', 'F7', 'G7', 'H7', 'I7'},
+ {'D1', 'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9'},
+ {'D7', 'D8', 'D9', 'E7', 'E8', 'E9', 'F7', 'F8', 'F9'}
+ },
+ ['D8'] =
+ {
+ {'A8', 'B8', 'C8', 'D8', 'E8', 'F8', 'G8', 'H8', 'I8'},
+ {'D1', 'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9'},
+ {'D7', 'D8', 'D9', 'E7', 'E8', 'E9', 'F7', 'F8', 'F9'}
+ },
+ ['D9'] =
+ {
+ {'A9', 'B9', 'C9', 'D9', 'E9', 'F9', 'G9', 'H9', 'I9'},
+ {'D1', 'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9'},
+ {'D7', 'D8', 'D9', 'E7', 'E8', 'E9', 'F7', 'F8', 'F9'}
+ },
+ ['E1'] =
+ {
+ {'A1', 'B1', 'C1', 'D1', 'E1', 'F1', 'G1', 'H1', 'I1'},
+ {'E1', 'E2', 'E3', 'E4', 'E5', 'E6', 'E7', 'E8', 'E9'},
+ {'D1', 'D2', 'D3', 'E1', 'E2', 'E3', 'F1', 'F2', 'F3'}
+ },
+ ['E2'] =
+ {
+ {'A2', 'B2', 'C2', 'D2', 'E2', 'F2', 'G2', 'H2', 'I2'},
+ {'E1', 'E2', 'E3', 'E4', 'E5', 'E6', 'E7', 'E8', 'E9'},
+ {'D1', 'D2', 'D3', 'E1', 'E2', 'E3', 'F1', 'F2', 'F3'}
+ },
+ ['E3'] =
+ {
+ {'A3', 'B3', 'C3', 'D3', 'E3', 'F3', 'G3', 'H3', 'I3'},
+ {'E1', 'E2', 'E3', 'E4', 'E5', 'E6', 'E7', 'E8', 'E9'},
+ {'D1', 'D2', 'D3', 'E1', 'E2', 'E3', 'F1', 'F2', 'F3'}
+ },
+ ['E4'] =
+ {
+ {'A4', 'B4', 'C4', 'D4', 'E4', 'F4', 'G4', 'H4', 'I4'},
+ {'E1', 'E2', 'E3', 'E4', 'E5', 'E6', 'E7', 'E8', 'E9'},
+ {'D4', 'D5', 'D6', 'E4', 'E5', 'E6', 'F4', 'F5', 'F6'}
+ },
+ ['E5'] =
+ {
+ {'A5', 'B5', 'C5', 'D5', 'E5', 'F5', 'G5', 'H5', 'I5'},
+ {'E1', 'E2', 'E3', 'E4', 'E5', 'E6', 'E7', 'E8', 'E9'},
+ {'D4', 'D5', 'D6', 'E4', 'E5', 'E6', 'F4', 'F5', 'F6'}
+ },
+ ['E6'] =
+ {
+ {'A6', 'B6', 'C6', 'D6', 'E6', 'F6', 'G6', 'H6', 'I6'},
+ {'E1', 'E2', 'E3', 'E4', 'E5', 'E6', 'E7', 'E8', 'E9'},
+ {'D4', 'D5', 'D6', 'E4', 'E5', 'E6', 'F4', 'F5', 'F6'}
+ },
+ ['E7'] =
+ {
+ {'A7', 'B7', 'C7', 'D7', 'E7', 'F7', 'G7', 'H7', 'I7'},
+ {'E1', 'E2', 'E3', 'E4', 'E5', 'E6', 'E7', 'E8', 'E9'},
+ {'D7', 'D8', 'D9', 'E7', 'E8', 'E9', 'F7', 'F8', 'F9'}
+ },
+ ['E8'] =
+ {
+ {'A8', 'B8', 'C8', 'D8', 'E8', 'F8', 'G8', 'H8', 'I8'},
+ {'E1', 'E2', 'E3', 'E4', 'E5', 'E6', 'E7', 'E8', 'E9'},
+ {'D7', 'D8', 'D9', 'E7', 'E8', 'E9', 'F7', 'F8', 'F9'}
+ },
+ ['E9'] =
+ {
+ {'A9', 'B9', 'C9', 'D9', 'E9', 'F9', 'G9', 'H9', 'I9'},
+ {'E1', 'E2', 'E3', 'E4', 'E5', 'E6', 'E7', 'E8', 'E9'},
+ {'D7', 'D8', 'D9', 'E7', 'E8', 'E9', 'F7', 'F8', 'F9'}
+ },
+ ['F1'] =
+ {
+ {'A1', 'B1', 'C1', 'D1', 'E1', 'F1', 'G1', 'H1', 'I1'},
+ {'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9'},
+ {'D1', 'D2', 'D3', 'E1', 'E2', 'E3', 'F1', 'F2', 'F3'}
+ },
+ ['F2'] =
+ {
+ {'A2', 'B2', 'C2', 'D2', 'E2', 'F2', 'G2', 'H2', 'I2'},
+ {'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9'},
+ {'D1', 'D2', 'D3', 'E1', 'E2', 'E3', 'F1', 'F2', 'F3'}
+ },
+ ['F3'] =
+ {
+ {'A3', 'B3', 'C3', 'D3', 'E3', 'F3', 'G3', 'H3', 'I3'},
+ {'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9'},
+ {'D1', 'D2', 'D3', 'E1', 'E2', 'E3', 'F1', 'F2', 'F3'}
+ },
+ ['F4'] =
+ {
+ {'A4', 'B4', 'C4', 'D4', 'E4', 'F4', 'G4', 'H4', 'I4'},
+ {'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9'},
+ {'D4', 'D5', 'D6', 'E4', 'E5', 'E6', 'F4', 'F5', 'F6'}
+ },
+ ['F5'] =
+ {
+ {'A5', 'B5', 'C5', 'D5', 'E5', 'F5', 'G5', 'H5', 'I5'},
+ {'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9'},
+ {'D4', 'D5', 'D6', 'E4', 'E5', 'E6', 'F4', 'F5', 'F6'}
+ },
+ ['F6'] =
+ {
+ {'A6', 'B6', 'C6', 'D6', 'E6', 'F6', 'G6', 'H6', 'I6'},
+ {'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9'},
+ {'D4', 'D5', 'D6', 'E4', 'E5', 'E6', 'F4', 'F5', 'F6'}
+ },
+ ['F7'] =
+ {
+ {'A7', 'B7', 'C7', 'D7', 'E7', 'F7', 'G7', 'H7', 'I7'},
+ {'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9'},
+ {'D7', 'D8', 'D9', 'E7', 'E8', 'E9', 'F7', 'F8', 'F9'}
+ },
+ ['F8'] =
+ {
+ {'A8', 'B8', 'C8', 'D8', 'E8', 'F8', 'G8', 'H8', 'I8'},
+ {'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9'},
+ {'D7', 'D8', 'D9', 'E7', 'E8', 'E9', 'F7', 'F8', 'F9'}
+ },
+ ['F9'] =
+ {
+ {'A9', 'B9', 'C9', 'D9', 'E9', 'F9', 'G9', 'H9', 'I9'},
+ {'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9'},
+ {'D7', 'D8', 'D9', 'E7', 'E8', 'E9', 'F7', 'F8', 'F9'}
+ },
+ ['G1'] =
+ {
+ {'A1', 'B1', 'C1', 'D1', 'E1', 'F1', 'G1', 'H1', 'I1'},
+ {'G1', 'G2', 'G3', 'G4', 'G5', 'G6', 'G7', 'G8', 'G9'},
+ {'G1', 'G2', 'G3', 'H1', 'H2', 'H3', 'I1', 'I2', 'I3'}
+ },
+ ['G2'] =
+ {
+ {'A2', 'B2', 'C2', 'D2', 'E2', 'F2', 'G2', 'H2', 'I2'},
+ {'G1', 'G2', 'G3', 'G4', 'G5', 'G6', 'G7', 'G8', 'G9'},
+ {'G1', 'G2', 'G3', 'H1', 'H2', 'H3', 'I1', 'I2', 'I3'}
+ },
+ ['G3'] =
+ {
+ {'A3', 'B3', 'C3', 'D3', 'E3', 'F3', 'G3', 'H3', 'I3'},
+ {'G1', 'G2', 'G3', 'G4', 'G5', 'G6', 'G7', 'G8', 'G9'},
+ {'G1', 'G2', 'G3', 'H1', 'H2', 'H3', 'I1', 'I2', 'I3'}
+ },
+ ['G4'] =
+ {
+ {'A4', 'B4', 'C4', 'D4', 'E4', 'F4', 'G4', 'H4', 'I4'},
+ {'G1', 'G2', 'G3', 'G4', 'G5', 'G6', 'G7', 'G8', 'G9'},
+ {'G4', 'G5', 'G6', 'H4', 'H5', 'H6', 'I4', 'I5', 'I6'}
+ },
+ ['G5'] =
+ {
+ {'A5', 'B5', 'C5', 'D5', 'E5', 'F5', 'G5', 'H5', 'I5'},
+ {'G1', 'G2', 'G3', 'G4', 'G5', 'G6', 'G7', 'G8', 'G9'},
+ {'G4', 'G5', 'G6', 'H4', 'H5', 'H6', 'I4', 'I5', 'I6'}
+ },
+ ['G6'] =
+ {
+ {'A6', 'B6', 'C6', 'D6', 'E6', 'F6', 'G6', 'H6', 'I6'},
+ {'G1', 'G2', 'G3', 'G4', 'G5', 'G6', 'G7', 'G8', 'G9'},
+ {'G4', 'G5', 'G6', 'H4', 'H5', 'H6', 'I4', 'I5', 'I6'}
+ },
+ ['G7'] =
+ {
+ {'A7', 'B7', 'C7', 'D7', 'E7', 'F7', 'G7', 'H7', 'I7'},
+ {'G1', 'G2', 'G3', 'G4', 'G5', 'G6', 'G7', 'G8', 'G9'},
+ {'G7', 'G8', 'G9', 'H7', 'H8', 'H9', 'I7', 'I8', 'I9'}
+ },
+ ['G8'] =
+ {
+ {'A8', 'B8', 'C8', 'D8', 'E8', 'F8', 'G8', 'H8', 'I8'},
+ {'G1', 'G2', 'G3', 'G4', 'G5', 'G6', 'G7', 'G8', 'G9'},
+ {'G7', 'G8', 'G9', 'H7', 'H8', 'H9', 'I7', 'I8', 'I9'}
+ },
+ ['G9'] =
+ {
+ {'A9', 'B9', 'C9', 'D9', 'E9', 'F9', 'G9', 'H9', 'I9'},
+ {'G1', 'G2', 'G3', 'G4', 'G5', 'G6', 'G7', 'G8', 'G9'},
+ {'G7', 'G8', 'G9', 'H7', 'H8', 'H9', 'I7', 'I8', 'I9'}
+ },
+ ['H1'] =
+ {
+ {'A1', 'B1', 'C1', 'D1', 'E1', 'F1', 'G1', 'H1', 'I1'},
+ {'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'H7', 'H8', 'H9'},
+ {'G1', 'G2', 'G3', 'H1', 'H2', 'H3', 'I1', 'I2', 'I3'}
+ },
+ ['H2'] =
+ {
+ {'A2', 'B2', 'C2', 'D2', 'E2', 'F2', 'G2', 'H2', 'I2'},
+ {'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'H7', 'H8', 'H9'},
+ {'G1', 'G2', 'G3', 'H1', 'H2', 'H3', 'I1', 'I2', 'I3'}
+ },
+ ['H3'] =
+ {
+ {'A3', 'B3', 'C3', 'D3', 'E3', 'F3', 'G3', 'H3', 'I3'},
+ {'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'H7', 'H8', 'H9'},
+ {'G1', 'G2', 'G3', 'H1', 'H2', 'H3', 'I1', 'I2', 'I3'}
+ },
+ ['H4'] =
+ {
+ {'A4', 'B4', 'C4', 'D4', 'E4', 'F4', 'G4', 'H4', 'I4'},
+ {'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'H7', 'H8', 'H9'},
+ {'G4', 'G5', 'G6', 'H4', 'H5', 'H6', 'I4', 'I5', 'I6'}
+ },
+ ['H5'] =
+ {
+ {'A5', 'B5', 'C5', 'D5', 'E5', 'F5', 'G5', 'H5', 'I5'},
+ {'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'H7', 'H8', 'H9'},
+ {'G4', 'G5', 'G6', 'H4', 'H5', 'H6', 'I4', 'I5', 'I6'}
+ },
+ ['H6'] =
+ {
+ {'A6', 'B6', 'C6', 'D6', 'E6', 'F6', 'G6', 'H6', 'I6'},
+ {'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'H7', 'H8', 'H9'},
+ {'G4', 'G5', 'G6', 'H4', 'H5', 'H6', 'I4', 'I5', 'I6'}
+ },
+ ['H7'] =
+ {
+ {'A7', 'B7', 'C7', 'D7', 'E7', 'F7', 'G7', 'H7', 'I7'},
+ {'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'H7', 'H8', 'H9'},
+ {'G7', 'G8', 'G9', 'H7', 'H8', 'H9', 'I7', 'I8', 'I9'}
+ },
+ ['H8'] =
+ {
+ {'A8', 'B8', 'C8', 'D8', 'E8', 'F8', 'G8', 'H8', 'I8'},
+ {'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'H7', 'H8', 'H9'},
+ {'G7', 'G8', 'G9', 'H7', 'H8', 'H9', 'I7', 'I8', 'I9'}
+ },
+ ['H9'] =
+ {
+ {'A9', 'B9', 'C9', 'D9', 'E9', 'F9', 'G9', 'H9', 'I9'},
+ {'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'H7', 'H8', 'H9'},
+ {'G7', 'G8', 'G9', 'H7', 'H8', 'H9', 'I7', 'I8', 'I9'}
+ },
+ ['I1'] =
+ {
+ {'A1', 'B1', 'C1', 'D1', 'E1', 'F1', 'G1', 'H1', 'I1'},
+ {'I1', 'I2', 'I3', 'I4', 'I5', 'I6', 'I7', 'I8', 'I9'},
+ {'G1', 'G2', 'G3', 'H1', 'H2', 'H3', 'I1', 'I2', 'I3'}
+ },
+ ['I2'] =
+ {
+ {'A2', 'B2', 'C2', 'D2', 'E2', 'F2', 'G2', 'H2', 'I2'},
+ {'I1', 'I2', 'I3', 'I4', 'I5', 'I6', 'I7', 'I8', 'I9'},
+ {'G1', 'G2', 'G3', 'H1', 'H2', 'H3', 'I1', 'I2', 'I3'}
+ },
+ ['I3'] =
+ {
+ {'A3', 'B3', 'C3', 'D3', 'E3', 'F3', 'G3', 'H3', 'I3'},
+ {'I1', 'I2', 'I3', 'I4', 'I5', 'I6', 'I7', 'I8', 'I9'},
+ {'G1', 'G2', 'G3', 'H1', 'H2', 'H3', 'I1', 'I2', 'I3'}
+ },
+ ['I4'] =
+ {
+ {'A4', 'B4', 'C4', 'D4', 'E4', 'F4', 'G4', 'H4', 'I4'},
+ {'I1', 'I2', 'I3', 'I4', 'I5', 'I6', 'I7', 'I8', 'I9'},
+ {'G4', 'G5', 'G6', 'H4', 'H5', 'H6', 'I4', 'I5', 'I6'}
+ },
+ ['I5'] =
+ {
+ {'A5', 'B5', 'C5', 'D5', 'E5', 'F5', 'G5', 'H5', 'I5'},
+ {'I1', 'I2', 'I3', 'I4', 'I5', 'I6', 'I7', 'I8', 'I9'},
+ {'G4', 'G5', 'G6', 'H4', 'H5', 'H6', 'I4', 'I5', 'I6'}
+ },
+ ['I6'] =
+ {
+ {'A6', 'B6', 'C6', 'D6', 'E6', 'F6', 'G6', 'H6', 'I6'},
+ {'I1', 'I2', 'I3', 'I4', 'I5', 'I6', 'I7', 'I8', 'I9'},
+ {'G4', 'G5', 'G6', 'H4', 'H5', 'H6', 'I4', 'I5', 'I6'}
+ },
+ ['I7'] =
+ {
+ {'A7', 'B7', 'C7', 'D7', 'E7', 'F7', 'G7', 'H7', 'I7'},
+ {'I1', 'I2', 'I3', 'I4', 'I5', 'I6', 'I7', 'I8', 'I9'},
+ {'G7', 'G8', 'G9', 'H7', 'H8', 'H9', 'I7', 'I8', 'I9'}
+ },
+ ['I8'] =
+ {
+ {'A8', 'B8', 'C8', 'D8', 'E8', 'F8', 'G8', 'H8', 'I8'},
+ {'I1', 'I2', 'I3', 'I4', 'I5', 'I6', 'I7', 'I8', 'I9'},
+ {'G7', 'G8', 'G9', 'H7', 'H8', 'H9', 'I7', 'I8', 'I9'}
+ },
+ ['I9'] =
+ {
+ {'A9', 'B9', 'C9', 'D9', 'E9', 'F9', 'G9', 'H9', 'I9'},
+ {'I1', 'I2', 'I3', 'I4', 'I5', 'I6', 'I7', 'I8', 'I9'},
+ {'G7', 'G8', 'G9', 'H7', 'H8', 'H9', 'I7', 'I8', 'I9'}
+ }
+}
+
+local peers =
+{
+ ['A1'] =
+ {
+ 'C1', 'A5', 'A4', 'H1', 'A9', 'D1', 'E1', 'A7', 'A2', 'F1',
+ 'B3', 'B1', 'G1', 'I1', 'C3', 'B2', 'A6', 'A3', 'A8', 'C2'
+ },
+ ['A2'] =
+ {
+ 'C1', 'A5', 'A4', 'A9', 'I2', 'A7', 'F2', 'B3', 'H2', 'D2',
+ 'B1', 'E2', 'C3', 'B2', 'A6', 'A1', 'A3', 'A8', 'C2', 'G2'
+ },
+ ['A3'] =
+ {
+ 'C1', 'A5', 'A4', 'A9', 'I3', 'F3', 'D3', 'A7', 'A2', 'B3',
+ 'B1', 'E3', 'C3', 'H3', 'B2', 'G3', 'A6', 'A1', 'A8', 'C2'
+ },
+ ['A4'] =
+ {
+ 'A5', 'A9', 'H4', 'I4', 'A7', 'A2', 'A8', 'C4', 'B6', 'C5',
+ 'C6', 'B5', 'A6', 'D4', 'G4', 'A1', 'E4', 'A3', 'F4', 'B4'
+ },
+ ['A5'] =
+ {
+ 'A4', 'A9', 'H5', 'A7', 'A2', 'D5', 'C4', 'E5', 'F5', 'B6',
+ 'C5', 'C6', 'B5', 'I5', 'A6', 'A1', 'A3', 'A8', 'G5', 'B4'
+ },
+ ['A6'] =
+ {
+ 'A5', 'A4', 'A9', 'F6', 'G6', 'D6', 'I6', 'A2', 'A7', 'E6',
+ 'H6', 'C4', 'B6', 'C6', 'C5', 'B5', 'A1', 'A3', 'A8', 'B4'
+ },
+ ['A7'] =
+ {
+ 'B7', 'A4', 'A9', 'A5', 'C9', 'C7', 'E7', 'A2', 'F7', 'B9',
+ 'D7', 'G7', 'I7', 'A6', 'C8', 'A1', 'A3', 'A8', 'B8', 'H7'
+ },
+ ['A8'] =
+ {
+ 'A5', 'A4', 'A9', 'E8', 'F8', 'B7', 'C9', 'C7', 'A7', 'A2',
+ 'B9', 'I8', 'H8', 'A6', 'C8', 'A1', 'A3', 'B8', 'G8', 'D8'
+ },
+ ['A9'] =
+ {
+ 'A5', 'A4', 'B7', 'E9', 'C9', 'I9', 'C7', 'H9', 'A7', 'A2',
+ 'F9', 'B9', 'G9', 'D9', 'A6', 'C8', 'A1', 'A3', 'A8', 'B8'
+ },
+ ['B1'] =
+ {
+ 'C1', 'B7', 'H1', 'D1', 'E1', 'A2', 'F1', 'B3', 'B9', 'G1',
+ 'B6', 'I1', 'C3', 'B2', 'B5', 'A1', 'A3', 'B8', 'C2', 'B4'
+ },
+ ['B2'] =
+ {
+ 'C1', 'B7', 'I2', 'F2', 'A2', 'B3', 'H2', 'D2', 'B1', 'B9',
+ 'B6', 'E2', 'C3', 'B5', 'A1', 'A3', 'B8', 'C2', 'G2', 'B4'
+ },
+ ['B3'] =
+ {
+ 'C1', 'B7', 'I3', 'F3', 'D3', 'A2', 'B1', 'B9', 'B6', 'E3',
+ 'C3', 'H3', 'B2', 'B5', 'G3', 'A1', 'A3', 'B8', 'C2', 'B4'
+ },
+ ['B4'] =
+ {
+ 'B7', 'A4', 'A5', 'H4', 'I4', 'B3', 'C4', 'B1', 'B9', 'B6',
+ 'C5', 'C6', 'B2', 'B5', 'A6', 'D4', 'G4', 'E4', 'B8', 'F4'
+ },
+ ['B5'] =
+ {
+ 'A5', 'B7', 'A4', 'H5', 'B3', 'D5', 'C4', 'B1', 'B9', 'F5',
+ 'E5', 'B6', 'C5', 'C6', 'B2', 'I5', 'A6', 'B8', 'G5', 'B4'
+ },
+ ['B6'] =
+ {
+ 'B7', 'A4', 'A5', 'F6', 'G6', 'D6', 'I6', 'B3', 'E6', 'H6',
+ 'C4', 'B1', 'B9', 'C6', 'C5', 'B2', 'B5', 'A6', 'B8', 'B4'
+ },
+ ['B7'] =
+ {
+ 'A9', 'C9', 'C7', 'E7', 'A7', 'A8', 'B3', 'B1', 'B9', 'D7',
+ 'G7', 'B6', 'I7', 'B2', 'B5', 'C8', 'F7', 'B8', 'H7', 'B4'
+ },
+ ['B8'] =
+ {
+ 'B7', 'A9', 'E8', 'F8', 'C9', 'C7', 'A7', 'B3', 'B1', 'B9',
+ 'B6', 'I8', 'B2', 'H8', 'B5', 'C8', 'A8', 'G8', 'D8', 'B4'
+ },
+ ['B9'] =
+ {
+ 'B7', 'A9', 'E9', 'C9', 'I9', 'C7', 'H9', 'A7', 'B3', 'F9',
+ 'B1', 'B6', 'G9', 'D9', 'B2', 'B5', 'C8', 'A8', 'B8', 'B4'
+ },
+ ['C1'] =
+ {
+ 'H1', 'D1', 'E1', 'C9', 'C7', 'A2', 'F1', 'B3', 'B1', 'G1',
+ 'C5', 'I1', 'C3', 'C6', 'B2', 'C8', 'A1', 'A3', 'C2', 'C4'
+ },
+ ['C2'] =
+ {
+ 'C1', 'C9', 'C7', 'I2', 'F2', 'A2', 'B3', 'H2', 'D2', 'B1',
+ 'E2', 'C5', 'C6', 'C3', 'B2', 'C8', 'A1', 'A3', 'G2', 'C4'
+ },
+ ['C3'] =
+ {
+ 'C1', 'C9', 'I3', 'C7', 'F3', 'D3', 'A2', 'B3', 'B1', 'E3',
+ 'C5', 'C6', 'H3', 'B2', 'G3', 'C8', 'A1', 'A3', 'C2', 'C4'
+ },
+ ['C4'] =
+ {
+ 'C1', 'A5', 'A4', 'H4', 'C9', 'I4', 'C7', 'B6', 'C5', 'C6',
+ 'C3', 'B5', 'A6', 'C8', 'D4', 'G4', 'E4', 'C2', 'F4', 'B4'
+ },
+ ['C5'] =
+ {
+ 'C1', 'A5', 'A4', 'C9', 'H5', 'C7', 'D5', 'E5', 'F5', 'B4',
+ 'B6', 'C6', 'C3', 'B5', 'I5', 'A6', 'C8', 'C2', 'G5', 'C4'
+ },
+ ['C6'] =
+ {
+ 'C1', 'A5', 'A4', 'C9', 'C7', 'F6', 'G6', 'D6', 'I6', 'E6',
+ 'H6', 'B4', 'B6', 'C5', 'C3', 'B5', 'A6', 'C8', 'C2', 'C4'
+ },
+ ['C7'] =
+ {
+ 'C1', 'B7', 'A9', 'C9', 'E7', 'A7', 'A8', 'B9', 'D7', 'G7',
+ 'C5', 'C6', 'C3', 'I7', 'C8', 'F7', 'B8', 'H7', 'C2', 'C4'
+ },
+ ['C8'] =
+ {
+ 'C1', 'B7', 'A9', 'E8', 'F8', 'C9', 'C7', 'A7', 'B9', 'I8',
+ 'C5', 'C3', 'C6', 'H8', 'A8', 'B8', 'G8', 'C2', 'D8', 'C4'
+ },
+ ['C9'] =
+ {
+ 'C1', 'B7', 'A9', 'E9', 'I9', 'C7', 'H9', 'A7', 'F9', 'B9',
+ 'G9', 'C5', 'C6', 'D9', 'C3', 'C8', 'A8', 'B8', 'C2', 'C4'
+ },
+ ['D1'] =
+ {
+ 'C1', 'H1', 'E1', 'F3', 'D3', 'D6', 'F2', 'F1', 'D5', 'D2',
+ 'B1', 'D7', 'G1', 'E2', 'E3', 'I1', 'D9', 'A1', 'D4', 'D8'
+ },
+ ['D2'] =
+ {
+ 'D1', 'E1', 'F3', 'D3', 'I2', 'D6', 'F2', 'A2', 'F1', 'D5',
+ 'H2', 'D7', 'E2', 'E3', 'D9', 'B2', 'D4', 'C2', 'G2', 'D8'
+ },
+ ['D3'] =
+ {
+ 'D1', 'E1', 'I3', 'F3', 'D6', 'F2', 'F1', 'B3', 'D5', 'D2',
+ 'D7', 'E2', 'E3', 'C3', 'H3', 'D9', 'G3', 'D4', 'A3', 'D8'
+ },
+ ['D4'] =
+ {
+ 'A4', 'H4', 'D1', 'F4', 'I4', 'D3', 'F6', 'D6', 'D5', 'D2',
+ 'E6', 'C4', 'D7', 'F5', 'E5', 'D9', 'G4', 'E4', 'D8', 'B4'
+ },
+ ['D5'] =
+ {
+ 'A5', 'D1', 'F4', 'H5', 'D3', 'F6', 'D6', 'D2', 'E6', 'E5',
+ 'F5', 'D7', 'C5', 'D9', 'B5', 'I5', 'D4', 'E4', 'G5', 'D8'
+ },
+ ['D6'] =
+ {
+ 'D1', 'F4', 'D3', 'F6', 'G6', 'I6', 'D5', 'D2', 'E6', 'H6',
+ 'D7', 'F5', 'E5', 'B6', 'C6', 'D9', 'A6', 'D4', 'E4', 'D8'
+ },
+ ['D7'] =
+ {
+ 'B7', 'E8', 'F8', 'D1', 'E9', 'C7', 'D3', 'E7', 'A7', 'D6',
+ 'D5', 'D2', 'F9', 'G7', 'D9', 'I7', 'D4', 'F7', 'H7', 'D8'
+ },
+ ['D8'] =
+ {
+ 'E8', 'F8', 'D1', 'E9', 'D3', 'E7', 'D6', 'A8', 'D5', 'D2',
+ 'F9', 'D7', 'I8', 'D9', 'H8', 'C8', 'D4', 'F7', 'B8', 'G8'
+ },
+ ['D9'] =
+ {
+ 'A9', 'E8', 'F8', 'D1', 'E9', 'C9', 'I9', 'D3', 'E7', 'H9',
+ 'D6', 'D5', 'D2', 'F9', 'B9', 'D7', 'G9', 'D4', 'F7', 'D8'
+ },
+ ['E1'] =
+ {
+ 'C1', 'H1', 'E8', 'D1', 'E9', 'F3', 'D3', 'E7', 'F2', 'F1',
+ 'D2', 'E6', 'B1', 'E5', 'G1', 'E2', 'E3', 'I1', 'A1', 'E4'
+ },
+ ['E2'] =
+ {
+ 'E8', 'D1', 'E1', 'E9', 'F3', 'D3', 'E7', 'I2', 'F2', 'A2',
+ 'F1', 'H2', 'D2', 'E6', 'E5', 'E3', 'B2', 'E4', 'C2', 'G2'
+ },
+ ['E3'] =
+ {
+ 'E8', 'D1', 'E1', 'I3', 'E9', 'F3', 'D3', 'E7', 'F2', 'F1',
+ 'B3', 'D2', 'E6', 'E5', 'E2', 'C3', 'H3', 'G3', 'A3', 'E4'
+ },
+ ['E4'] =
+ {
+ 'A4', 'E8', 'H4', 'E1', 'E9', 'I4', 'E7', 'F6', 'D6', 'D5',
+ 'E6', 'C4', 'E5', 'F5', 'E2', 'E3', 'D4', 'G4', 'F4', 'B4'
+ },
+ ['E5'] =
+ {
+ 'A5', 'E8', 'E1', 'E9', 'H5', 'E7', 'F6', 'D6', 'D5', 'E6',
+ 'F5', 'E2', 'E3', 'C5', 'B5', 'I5', 'D4', 'E4', 'G5', 'F4'
+ },
+ ['E6'] =
+ {
+ 'E8', 'E1', 'E9', 'E7', 'F6', 'G6', 'D6', 'I6', 'D5', 'H6',
+ 'E5', 'F5', 'B6', 'E2', 'E3', 'C6', 'A6', 'D4', 'E4', 'F4'
+ },
+ ['E7'] =
+ {
+ 'B7', 'E8', 'F8', 'E1', 'E9', 'C7', 'A7', 'F9', 'E6', 'D7',
+ 'E5', 'G7', 'E2', 'E3', 'D9', 'I7', 'E4', 'F7', 'H7', 'D8'
+ },
+ ['E8'] =
+ {
+ 'F8', 'E1', 'E9', 'E7', 'A8', 'F9', 'E6', 'E5', 'D7', 'E2',
+ 'E3', 'I8', 'D9', 'H8', 'C8', 'E4', 'F7', 'B8', 'G8', 'D8'
+ },
+ ['E9'] =
+ {
+ 'A9', 'E8', 'F8', 'C9', 'E1', 'I9', 'E7', 'H9', 'F9', 'E6',
+ 'B9', 'E5', 'D7', 'E2', 'G9', 'E3', 'D9', 'E4', 'F7', 'D8'
+ },
+ ['F1'] =
+ {
+ 'C1', 'H1', 'F8', 'D1', 'E1', 'F3', 'D3', 'F6', 'F2', 'D2',
+ 'F9', 'B1', 'G1', 'F5', 'E2', 'E3', 'I1', 'A1', 'F7', 'F4'
+ },
+ ['F2'] =
+ {
+ 'F8', 'D1', 'E1', 'F3', 'D3', 'I2', 'F6', 'A2', 'F1', 'H2',
+ 'F9', 'D2', 'F5', 'E2', 'E3', 'B2', 'F7', 'C2', 'G2', 'F4'
+ },
+ ['F3'] =
+ {
+ 'F8', 'D1', 'E1', 'I3', 'D3', 'F6', 'F2', 'F1', 'B3', 'D2',
+ 'F9', 'F5', 'E2', 'E3', 'C3', 'H3', 'G3', 'A3', 'F7', 'F4'
+ },
+ ['F4'] =
+ {
+ 'A4', 'F8', 'H4', 'I4', 'F3', 'F6', 'D6', 'F2', 'F7', 'F1',
+ 'D5', 'F9', 'E6', 'C4', 'E5', 'F5', 'D4', 'G4', 'E4', 'B4'
+ },
+ ['F5'] =
+ {
+ 'A5', 'F8', 'H5', 'F3', 'F6', 'D6', 'F2', 'F1', 'D5', 'F9',
+ 'E6', 'E5', 'C5', 'B5', 'I5', 'D4', 'E4', 'F7', 'G5', 'F4'
+ },
+ ['F6'] =
+ {
+ 'F8', 'F3', 'G6', 'D6', 'F2', 'I6', 'F1', 'D5', 'F9', 'E6',
+ 'H6', 'E5', 'F5', 'B6', 'C6', 'A6', 'D4', 'E4', 'F7', 'F4'
+ },
+ ['F7'] =
+ {
+ 'B7', 'E8', 'F8', 'E9', 'F4', 'C7', 'F3', 'E7', 'F6', 'A7',
+ 'F2', 'F1', 'F9', 'D7', 'F5', 'G7', 'D9', 'I7', 'H7', 'D8'
+ },
+ ['F8'] =
+ {
+ 'E8', 'E9', 'F3', 'E7', 'F6', 'F2', 'F7', 'F1', 'F9', 'D7',
+ 'F5', 'D8', 'I8', 'D9', 'H8', 'C8', 'A8', 'B8', 'G8', 'F4'
+ },
+ ['F9'] =
+ {
+ 'A9', 'E8', 'F8', 'E9', 'C9', 'F4', 'I9', 'F3', 'E7', 'F6',
+ 'H9', 'F2', 'F1', 'B9', 'D7', 'F5', 'G9', 'D9', 'F7', 'D8'
+ },
+ ['G1'] =
+ {
+ 'C1', 'H1', 'D1', 'E1', 'I3', 'I2', 'G5', 'G6', 'F1', 'H2',
+ 'B1', 'G7', 'G9', 'I1', 'H3', 'G3', 'A1', 'G4', 'G8', 'G2'
+ },
+ ['G2'] =
+ {
+ 'H1', 'I3', 'I2', 'G5', 'G6', 'F2', 'A2', 'H2', 'D2', 'G1',
+ 'G7', 'E2', 'G9', 'I1', 'H3', 'B2', 'G3', 'G4', 'G8', 'C2'
+ },
+ ['G3'] =
+ {
+ 'H1', 'I3', 'F3', 'D3', 'I2', 'G5', 'G6', 'B3', 'H2', 'G1',
+ 'G7', 'G9', 'E3', 'I1', 'C3', 'H3', 'G4', 'A3', 'G8', 'G2'
+ },
+ ['G4'] =
+ {
+ 'A4', 'H4', 'I4', 'H5', 'G5', 'G6', 'I6', 'H6', 'C4', 'G1',
+ 'G7', 'G9', 'G3', 'I5', 'D4', 'E4', 'G8', 'G2', 'F4', 'B4'
+ },
+ ['G5'] =
+ {
+ 'A5', 'H4', 'I4', 'H5', 'G6', 'I6', 'D5', 'H6', 'G2', 'E5',
+ 'F5', 'G1', 'G7', 'G9', 'C5', 'B5', 'G3', 'I5', 'G4', 'G8'
+ },
+ ['G6'] =
+ {
+ 'H4', 'I4', 'H5', 'G5', 'F6', 'D6', 'I6', 'E6', 'H6', 'G1',
+ 'G7', 'B6', 'G9', 'C6', 'G3', 'I5', 'A6', 'G4', 'G8', 'G2'
+ },
+ ['G7'] =
+ {
+ 'B7', 'C7', 'I9', 'E7', 'G5', 'G6', 'H9', 'A7', 'G8', 'D7',
+ 'G1', 'G9', 'I8', 'I7', 'H8', 'G3', 'G4', 'F7', 'H7', 'G2'
+ },
+ ['G8'] =
+ {
+ 'E8', 'F8', 'I9', 'G5', 'H7', 'G6', 'H9', 'G1', 'G7', 'G9',
+ 'I8', 'I7', 'H8', 'G3', 'C8', 'G4', 'A8', 'B8', 'G2', 'D8'
+ },
+ ['G9'] =
+ {
+ 'A9', 'E9', 'C9', 'I9', 'H7', 'G6', 'H9', 'F9', 'B9', 'G2',
+ 'G1', 'G7', 'I8', 'D9', 'I7', 'H8', 'G3', 'G4', 'G8', 'G5'
+ },
+ ['H1'] =
+ {
+ 'C1', 'H4', 'D1', 'E1', 'I3', 'H5', 'I2', 'H9', 'F1', 'H2',
+ 'H6', 'B1', 'G1', 'I1', 'H3', 'H8', 'G3', 'A1', 'H7', 'G2'
+ },
+ ['H2'] =
+ {
+ 'H1', 'H4', 'I3', 'H5', 'I2', 'H9', 'F2', 'A2', 'D2', 'H6',
+ 'G1', 'E2', 'I1', 'H3', 'H8', 'B2', 'G3', 'H7', 'C2', 'G2'
+ },
+ ['H3'] =
+ {
+ 'H1', 'H4', 'I3', 'H5', 'F3', 'D3', 'I2', 'H9', 'B3', 'H2',
+ 'H6', 'G1', 'E3', 'I1', 'C3', 'H8', 'G3', 'A3', 'H7', 'G2'
+ },
+ ['H4'] =
+ {
+ 'A4', 'H1', 'I4', 'H5', 'G6', 'H9', 'I6', 'H2', 'H6', 'C4',
+ 'H3', 'H8', 'I5', 'D4', 'G4', 'E4', 'H7', 'G5', 'F4', 'B4'
+ },
+ ['H5'] =
+ {
+ 'A5', 'H1', 'H4', 'I4', 'G6', 'H9', 'I6', 'D5', 'H2', 'H6',
+ 'E5', 'F5', 'C5', 'H3', 'H8', 'B5', 'I5', 'G4', 'H7', 'G5'
+ },
+ ['H6'] =
+ {
+ 'H1', 'H4', 'I4', 'H5', 'F6', 'H9', 'D6', 'G6', 'I6', 'H2',
+ 'E6', 'B6', 'C6', 'H3', 'H8', 'I5', 'A6', 'G4', 'H7', 'G5'
+ },
+ ['H7'] =
+ {
+ 'B7', 'H1', 'H4', 'H5', 'C7', 'I9', 'E7', 'H9', 'A7', 'H2',
+ 'H6', 'G8', 'D7', 'G7', 'G9', 'I8', 'I7', 'H3', 'H8', 'F7'
+ },
+ ['H8'] =
+ {
+ 'H1', 'E8', 'F8', 'H4', 'H5', 'I9', 'H7', 'H9', 'H2', 'H6',
+ 'G7', 'G9', 'I8', 'H3', 'I7', 'C8', 'A8', 'B8', 'G8', 'D8'
+ },
+ ['H9'] =
+ {
+ 'A9', 'H1', 'H4', 'E9', 'C9', 'H5', 'I9', 'H2', 'F9', 'H6',
+ 'B9', 'G8', 'G7', 'G9', 'I8', 'D9', 'H3', 'H8', 'I7', 'H7'
+ },
+ ['I1'] =
+ {
+ 'C1', 'H1', 'D1', 'E1', 'I3', 'I4', 'I9', 'I2', 'I6', 'F1',
+ 'H2', 'B1', 'G1', 'I8', 'I7', 'H3', 'G3', 'I5', 'A1', 'G2'
+ },
+ ['I2'] =
+ {
+ 'H1', 'I3', 'I4', 'I9', 'I6', 'F2', 'A2', 'H2', 'D2', 'G1',
+ 'E2', 'I8', 'I1', 'I7', 'H3', 'B2', 'G3', 'I5', 'C2', 'G2'
+ },
+ ['I3'] =
+ {
+ 'H1', 'I4', 'I9', 'F3', 'D3', 'I2', 'I6', 'B3', 'H2', 'G1',
+ 'E3', 'I8', 'I1', 'H3', 'I7', 'C3', 'G3', 'I5', 'A3', 'G2'
+ },
+ ['I4'] =
+ {
+ 'A4', 'H4', 'I3', 'H5', 'I9', 'I2', 'G6', 'I6', 'H6', 'C4',
+ 'I8', 'I1', 'I7', 'I5', 'D4', 'G4', 'E4', 'G5', 'F4', 'B4'
+ },
+ ['I5'] =
+ {
+ 'A5', 'H4', 'I3', 'I4', 'H5', 'I9', 'I2', 'G6', 'I6', 'D5',
+ 'H6', 'E5', 'F5', 'C5', 'I1', 'I8', 'I7', 'B5', 'G4', 'G5'
+ },
+ ['I6'] =
+ {
+ 'H4', 'I3', 'I4', 'H5', 'I9', 'I2', 'F6', 'G6', 'D6', 'E6',
+ 'H6', 'B6', 'C6', 'I1', 'I8', 'I7', 'I5', 'A6', 'G4', 'G5'
+ },
+ ['I7'] =
+ {
+ 'B7', 'I3', 'I4', 'C7', 'I9', 'E7', 'I2', 'H9', 'A7', 'I6',
+ 'G8', 'D7', 'G7', 'G9', 'I8', 'I1', 'H8', 'I5', 'F7', 'H7'
+ },
+ ['I8'] =
+ {
+ 'E8', 'F8', 'I3', 'I4', 'I9', 'I2', 'H9', 'I6', 'G8', 'G7',
+ 'G9', 'I1', 'I7', 'H8', 'I5', 'C8', 'A8', 'B8', 'H7', 'D8'
+ },
+ ['I9'] =
+ {
+ 'A9', 'E9', 'C9', 'I4', 'I3', 'I2', 'H9', 'I6', 'F9', 'B9',
+ 'G8', 'G7', 'G9', 'I8', 'I1', 'D9', 'I7', 'H8', 'I5', 'H7'
+ }
+}
+
+local grid_chars, grid_values, parse_grid, assign,
+ eliminate, solve, search, random_sudoku
+
+-- Input: a string representation
+-- Output: an association between squares and characters
+
+grid_values = function(grid)
+ local result = {}
+ local chars = string_to_table(grid)
+ assert(#chars == 81, "Invalid grid")
+
+ -- ipairs is necessary here
+
+ for k, v in ipairs(squares) do
+ result[v] = chars[k]
+ end
+ return result
+end
+
+-- Input: a table grid
+-- Output: return false if contradiction
+
+parse_grid = function(grid)
+ local values = {}
+ local gridvalues = grid_values(grid)
+
+ -- Every square can be any digit
+
+ for _, s in ipairs(squares) do
+ values[s] = digits
+ end
+
+ for s, d in pairs(gridvalues) do
+ if digits:find(d) and not assign(values, s, d) then
+ return false
+ end
+ end
+ return values
+end
+
+assign = function(values, s, d)
+ -- Eliminate all the other values and propagate
+ local result = true
+ local other_values = string_to_table(values[s]:gsub(d,''))
+ for _, d2 in ipairs(other_values) do
+ if not eliminate(values, s, d2) then
+ result = false
+ end
+ end
+ return result and values or false
+end
+
+eliminate = function(values, s, d)
+ -- Eliminate d from values[s]
+ if not values[s]:find(d) then
+ return values --Already eliminated
+ end
+ values[s] = values[s]:gsub(d,'')
+ -- 1. If a square s is reduced to one value d2, then eliminate d2 from the peers
+ if #values[s] == 0 then
+ return false
+ elseif #values[s] == 1 then
+ local check = true
+ local d2 = values[s]
+ for _, s2 in pairs(peers[s]) do
+ if not eliminate(values, s2, values[s]) then
+ check = false
+ end
+ end
+ if not check then return false end
+ end
+ -- 2. If a unit u is reduced to only one place for a value d, then put it there
+ for _, u in ipairs(units[s]) do
+ local dplaces = {}
+ for _, w in ipairs(u) do
+ if values[w]:find(d) then
+ insert(dplaces, w)
+ end
+ end
+ if #dplaces == 0 then
+ return false --contradiction
+ elseif #dplaces == 1 then
+ if not assign(values, dplaces[1], d) then
+ return false
+ end
+ end
+ end
+ return values
+end
+
+solve = function(grid)
+ return search(parse_grid(grid))
+end
+
+search = function(values)
+ local check = true
+ local n = {}
+ local s
+ if not values then
+ return false --Fail
+ end
+ for _, s in ipairs(squares) do
+ if #values[s] ~= 1 then
+ check = false
+ end
+ end
+ if check then return values end --Solved!
+ for _, x in ipairs(squares) do
+ if #values[x] > 1 then
+ insert(n, {#values[x], x})
+ end
+ end
+ sort(n, function(t1,t2) return t1[1] < t2[1] end)
+ s = n[1][2]
+ for _, d in ipairs(string_to_table(values[s])) do
+ local result = search(assign(copy(values), s, d))
+ if result then return result end
+ end
+ return false
+end
+
+-- Unused until I find a handy way to interface with ConTeXt
+
+random_sudoku = function(N)
+ local N = N or 17
+ local result = {}
+ local values = {}
+ for _, v in ipairs(squares) do
+ values[s] = digits
+ end
+ for _, v in ipairs(shuffle(squares)) do
+ if not assign(values, s, values[rows[random(9)]..columns[random(9)]]) then
+ break
+ end
+ local ds = {}
+ for _, s in ipairs(squares) do
+ if #values[s] == 1 then
+ insert(ds, values[s])
+ end
+ end
+ if #ds >= N and #unique(ds) >= 8 then
+ for _, i in ipairs(rows) do
+ for _, j in ipairs(columns) do
+ insert(result, #values[i..j]>0 and values[i..j] or "0")
+ end
+ end
+ return concat(result)
+ end
+ end
+ return random_sudoku(N)
+end
+
+-- ConTeXt functions
+
+local ctx_sudoku, ctx_solvesudoku,
+ ctx_sudokufile, ctx_solvesudokufile,
+ ctx_randomsudoku, ctx_sudokufunction,
+ ctx_typeset, ctx_error
+
+ctx_sudoku = function(grid, data)
+ local ok, result = pcall(grid_values, grid)
+ if ok then
+ ctx_typeset(result, data)
+ else
+ ctx_error("a") -- Invalid sudoku
+ end
+end
+
+ctx_sudokufile = function(file, data)
+ local ok, result = pcall(grid_values, loaddata(file))
+ if ok then
+ ctx_typeset(result, data)
+ else
+ ctx_error("b") -- "Invalid sudoku file"
+ end
+end
+
+ctx_solvesudoku = function(grid, data)
+ local ok, result = pcall(solve, grid)
+ if ok then
+ if result then
+ ctx_typeset(result, data)
+ else
+ ctx_error("c") -- "Impossible to find a solution"
+ end
+ else
+ ctx_error("a") -- "Invalid sudoku"
+ end
+end
+
+ctx_solvesudokufile = function(file, data)
+ local ok, result = pcall(solve, loaddata(file))
+ if ok then
+ if result then
+ ctx_typeset(result, data)
+ else
+ ctx_error("c") -- "Impossible to find a solution"
+ end
+ else
+ ctx_error("b") -- "Invalid sudoku file"
+ end
+end
+
+ctx_error = function(nerror)
+ local c = interfaces.constants
+ local placeholder, label, command = c.placeholder, c.label, c.command
+ c = context
+ c.sudokuparameter(placeholder .. command,
+ c.nested.sudokuparameter(placeholder .. label .. nerror)
+ )
+end
+
+local ctx_sudokufunctions =
+{
+ sudoku = ctx_sudoku,
+ sudokufile = ctx_sudokufile,
+ solvesudoku = ctx_solvesudoku,
+ solvesudokufile = ctx_solvesudokufile
+}
+
+ctx_sudokufunction = function(t)
+ ctx_sudokufunctions[t.name](t.content, t)
+end
+
+ctx_typeset = function(grid, data)
+ local alternatives =
+ {
+ {background = data.oddbackground, backgroundcolor = data.oddbackgroundcolor },
+ {background = data.evenbackground, backgroundcolor = data.evenbackgroundcolor}
+ }
+ for i, a in ipairs(rows) do
+ context.bTR()
+ for j, b in ipairs(columns) do
+ local r = grid[a..b]
+ context.bTD(alternatives[(ceil(i/3)+ceil(j/3))%2+1])
+ context(r == '0' and "" or r == '.' and "" or r)
+ context.eTD()
+ end
+ context.eTR()
+ end
+end
+
+--context.sudokuplaceholder = function(text)
+-- context.quitvmode()
+-- context.framed(context.nested.type(text))
+--end
+
+implement{
+ name = "sudokufunction",
+ arguments = {"hash"},
+ actions = ctx_sudokufunction
+}
diff --git a/macros/context/contrib/context-sudoku/sudoku/tex/context/third/sudoku/t-sudoku.mkvi b/macros/context/contrib/context-sudoku/sudoku/tex/context/third/sudoku/t-sudoku.mkvi
new file mode 100644
index 0000000000..45ee942bf6
--- /dev/null
+++ b/macros/context/contrib/context-sudoku/sudoku/tex/context/third/sudoku/t-sudoku.mkvi
@@ -0,0 +1,217 @@
+%D \module
+%D [ file=t-sudoku,
+%D version=2023-05-15,
+%D title=\CONTEXT\ User Module,
+%D subtitle=Sudokus for ConTeXt,
+%D author=Jairo A. del Rio,
+%D date=\currentdate,
+%D copyright=Jairo A. del Rio,
+%D email=jairoadelrio6@gmail.com,
+%D license=MIT License]
+
+%C Copyright (c) 2021-2023 Jairo A. del Rio
+%C
+%C Permission is hereby granted, free of charge, to any person obtaining
+%C a copy of this software and associated documentation files (the
+%C "Software"), to deal in the Software without restriction, including
+%C without limitation the rights to use, copy, modify, merge, publish,
+%C distribute, sublicense, and/or sell copies of the Software, and to
+%C permit persons to whom the Software is furnished to do so, subject to
+%C the following conditions:
+%C
+%C The above copyright notice and this permission notice shall be
+%C included in all copies or substantial portions of the Software.
+%C
+%C THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+%C EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+%C MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+%C IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+%C CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+%C TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+%C SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+%D I'm not fond of sudokus. In fact, I seldom solve one or two in a row.
+%D However, they come in handy in puzzle books and existing packages are
+%D LaTeX or Python specific. Being so, a ConTeXt dedicated module is
+%D more comfortable and customizable. After all, ConTeXt is about control
+%D as Hans often says.
+
+\writestatus{loading}{Sudokus for ConTeXt}
+\writestatus{loading}{A Lua port of Peter Norvig's sudoku solver}
+
+\startmodule[sudoku]
+
+%D As always, Lua does the hard job
+
+\ctxloadluafile{t-sudoku}
+
+\unprotect
+
+%D \type{\definesudoku} is not really required
+
+\installnamespace {sudoku}
+\installsimplecommandhandler\????sudoku{sudoku}\????sudoku
+
+%D Some aliases
+
+\let\setupsudokus\setupsudoku
+
+%D Basic setups
+%D
+%D In order not to define new constants/variables, recycling existing
+%D ones looks better (trick learnt from Aditya Mahajan's modules).
+
+\setupsudokus
+ [\c!size=1.5em,
+ \c!align={\v!middle,\v!lohi},
+ \v!even\c!background=\v!color,
+ \v!odd\c!background=\v!color,
+ \v!even\c!backgroundcolor=white,
+ \v!odd\c!backgroundcolor=gray,
+ \c!placeholder\c!label a=Invalid sudoku,
+ \c!placeholder\c!label b=Invalid sudoku file,
+ \c!placeholder\c!label c=Impossible to find a solution,
+ \c!placeholder\c!command=\framed]
+
+%D A generic sudoku generator macro
+%D Yeah, I'm that lazy
+
+\unexpanded\def\sudokufunction_name{\dodoubleempty\sudokufunction_direct}
+
+%D Passing values to TABLE's is easier and unknown keys will be ignored.
+%D However, we need to enforce a square shape.Hence the need to passing
+%D values twice.
+
+\def\sudokufunction_direct[#name][#parameters]#content%
+ {\begingroup%
+ \ifsecondargument
+ \setupTABLE[#parameters]%
+ \setupsudokus[#parameters]%
+ \fi
+ \bTABLE
+ [\c!align=\sudokuparameter\c!align,
+ \c!width=\sudokuparameter\c!size,
+ \c!height=\sudokuparameter\c!size]
+ \clf_sudokufunction
+ [name =#name,
+ content ={#content},
+ evenbackground =\sudokuparameter{\v!even\c!background},
+ oddbackground =\sudokuparameter{\v!odd\c!background},
+ evenbackgroundcolor =\sudokuparameter{\v!even\c!backgroundcolor},
+ oddbackgroundcolor =\sudokuparameter{\v!odd\c!backgroundcolor}]
+ \eTABLE%
+ \endgroup}
+
+%D Sudoku macros
+
+\def\sudoku{\sudokufunction_name[sudoku]}
+\def\sudokufile{\sudokufunction_name[sudokufile]}
+\def\solvesudoku{\sudokufunction_name[solvesudoku]}
+\def\solvesudokufile{\sudokufunction_name[solvesudokufile]}
+
+%D More aliases
+
+\let\solvedsudoku\solvesudoku
+\let\solvedsudokufile\solvesudokufile
+
+\protect
+
+\stopmodule
+
+\continueifinputfile{t-sudoku.mkvi}
+
+%D Some examples
+
+\usecolors[svg]
+\setupsudokus[oddbackgroundcolor=paleturquoise,evenbackgroundcolor=aliceblue]
+
+\starttext
+
+\startsection[title={\type{\sudoku}}]
+
+\sudoku{
+......... ........1 .....2.3.
+....1...4 ..3.5.... .26....7.
+14...8... 5........ 7....6.2.
+}
+
+\blank[line]
+
+\sudoku{
+000000001 000002030 004056000
+000004500 010700000 080000400
+000030000 000100008 205000000
+}
+
+\blank[line]
+
+\sudoku
+{
+000000000 111111111 222222222
+333333333 444444444 555555555
+666666666 777777777 888888888
+}
+
+\blank[line]
+
+\sudoku{666}
+
+\stopsection
+
+\startsection[title={\type{\solvesudoku}}]
+
+\solvesudoku[size=9mm,evenbackgroundcolor=gray,oddbackgroundcolor=white]{
+.......... .......1 .....2.3.
+....1...4. .3.5.... .26....7.
+14...8...5 ........ 7....6.2.
+}
+
+\blank[line]
+
+\solvedsudoku{
+000000001 000002030 004056000
+000004500 010700000 080000400
+000030000 000100008 205000000
+}
+
+\blank[line]
+
+\solvesudoku
+{
+000000000 111111111 222222222
+333333333 444444444 555555555
+666666666 777777777 888888888
+}
+
+\stopsection
+
+\startsection[title={\type{\sudokufile}}]
+
+\sudokufile[evenbackgroundcolor=cornsilk,oddbackgroundcolor=pink]{t-sudoku-test-01.txt}
+
+\blank[line]
+
+\sudokufile{t-sudoku-test-03.txt}
+
+\blank[line]
+
+\sudokufile[rulethickness=2pt,evenbackgroundcolor=cornsilk]{t-sudoku-test-02.txt}
+
+\stopsection
+
+\startsection[title={\type{\solvesudokufile}}]
+
+\setupsudokus[oddbackgroundcolor=plum,evenbackgroundcolor=pink]%
+\solvesudokufile[oddbackgroundcolor=thistle]{t-sudoku-test-01.txt}
+
+\blank[line]
+
+\solvesudokufile{t-sudoku-test-02.txt}
+
+\blank[line]
+
+\solvesudokufile{t-sudoku-test-03.txt}
+
+\stopsection
+
+\stoptext
diff --git a/macros/latex/contrib/codedescribe/README.md b/macros/latex/contrib/codedescribe/README.md
index 8045a1a210..ee3db68821 100644
--- a/macros/latex/contrib/codedescribe/README.md
+++ b/macros/latex/contrib/codedescribe/README.md
@@ -86,5 +86,10 @@ The Current Maintainer of this work is Alceu Frigeri
## Changelog
-* Version 1.0 (this)
+* Version 1.1 (this)
+ - Added two commands to allow <obj-types> customization
+ - requiring (now) pifont for EXP/rEXP <format-keys>
+ - Added a date command (auxiliary command)
+
+* Version 1.0
- Initial release by CTAN
diff --git a/macros/latex/contrib/codedescribe/doc/codedescribe.pdf b/macros/latex/contrib/codedescribe/doc/codedescribe.pdf
index 882a93affd..9e2924847f 100644
--- a/macros/latex/contrib/codedescribe/doc/codedescribe.pdf
+++ b/macros/latex/contrib/codedescribe/doc/codedescribe.pdf
Binary files differ
diff --git a/macros/latex/contrib/codedescribe/doc/codedescribe.tex b/macros/latex/contrib/codedescribe/doc/codedescribe.tex
index b16853b40a..4b2a03ecbe 100644
--- a/macros/latex/contrib/codedescribe/doc/codedescribe.tex
+++ b/macros/latex/contrib/codedescribe/doc/codedescribe.tex
@@ -2,7 +2,7 @@
% !TEX ext = --interaction=nonstopmode --enable-etex --enable-write18
% !BIB program = none
%%%==============================================================================
-%% Copyright 2022 by Alceu Frigeri
+%% Copyright 2023 by Alceu Frigeri
%%
%% This work may be distributed and/or modified under the conditions of
%%
@@ -15,15 +15,15 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version 1.0 (2023/05/11)
+%% This is version 1.1 (2023/05/16)
%%
%% The list of files that compose this work can be found in the README.md file at
-%% https://ctan.org/pkg/democodetools
+%% https://ctan.org/pkg/codedescribe
%%
%%%==============================================================================
%\documentclass[dctools,english]{ufrgscca}
\documentclass{article}
-\RequirePackage[verbose,a4paper,marginparwidth=27.5mm,top=2.5cm,bottom=1.5cm,hmargin={40mm,20mm},marginparsep=2.5mm,columnsep=10mm,asymmetric]{geometry}
+\RequirePackage[verbose,a4paper,marginparwidth=28mm,top=3cm,bottom=1.5cm,hmargin={45mm,25mm},marginparsep=2.5mm,columnsep=10mm,asymmetric]{geometry}
\usepackage{codedescribe}
\usepackage{enumitem}
@@ -34,13 +34,13 @@
\tstitle{
author={Alceu Frigeri\footnote{\tsverb{https://github.com/alceu-frigeri/codedescribe}}},
- date={2023/05/11},
- title={The codedescribe and codelisting Packages\break Version \PkgInfo{codedesc}{version}}
+ date={\tsdate},
+ title={The codedescribe and codelisting Packages\break Version \PkgInfo{codedescribe}{version}}
}
\begin{typesetabstract}
-This documentation package is designed to be `as class independent as possible', depending only on \tsobj[pkg]{expl3,scontents,listing}. Unlike other packages of the kind, a minimal set of macros/commands/environments is defined: most/all defined commands have an 'object type' as a \tsobj[key]{keyval} parameter, allowing for an easy expansion mechanism (instead of the usual 'one set of macros/environments' for each object type).
+This documentation package is designed to be `as class independent as possible', depending only on \tsobj[pkg]{expl3,scontents,listing,pifont}. Unlike other packages of the kind, a minimal set of macros/commands/environments is defined: most/all defined commands have an 'object type' as a \tsobj[key]{keyval} parameter, allowing for an easy expansion mechanism (instead of the usual 'one set of macros/environments' for each object type).
No assumption about page layout is made (besides `having a marginpar'), or underlying macros, so that it can be used with any document class.
@@ -48,11 +48,10 @@ No assumption about page layout is made (besides `having a marginpar'), or unde
\tableofcontents
-%\setcodefmt{fontsize=\large}
-
\section{Introduction}
-This package aims to document both \tsobj[code]{Document} level (i.e. final user) commands, as well \tsobj[code]{Package/Class} level commands. It's fully implemented using \tsobj[pkg]{expl3} syntax and structures, in special \tsobj[pkg]{l3coffins, l3seq, l3keys}. Besides those \tsobj[pkg]{scontents,listing} packages are used to typeset code snippets.
+
+This package aims to document both \tsobj[code]{Document} level (i.e. final user) commands, as well \tsobj[code]{Package/Class} level commands. It's fully implemented using \tsobj[pkg]{expl3} syntax and structures, in special \tsobj[pkg]{l3coffins, l3seq, l3keys}. Besides those \tsobj[pkg]{scontents,listing} packages are used to typeset code snippets. The package \tsobj[pkg]{pifont} is needed just to typeset those (open)stars, in case one wants to mark a command as (restricted) expandable.
No other package/class is needed, any class can be used as the base one, which allows to demonstrate the documented commands with any desired layout.
@@ -63,7 +62,7 @@ No other package/class is needed, any class can be used as the base one, which a
This package 'can' be used with multi-column classes, given that the \tsobj[code]{\linewidth,\columnsep} are defined appropriately. \tsobj{\linewidth} shall defaults to text/column real width, whilst \tsobj{\columnsep}, if needed (2 or more columns) shall be greater than \tsobj{\marginparwidth} plus \tsobj{\marginparsep}.
\subsection{Current Version}
-This doc regards to \tsobj[pkg]{codedescribe} version \PkgInfo{codedesc}{version}~ and \tsobj[pkg]{codelisting} version \PkgInfo{codedesc}{version}. Those two packages are fairly stable, and given the \tsobj[meta]{obj-type} mechanism (see below, \ref{obj-type-def}) it can be easily extended without changing it's interface.
+This doc regards to \tsobj[pkg]{codedescribe} version \PkgInfo{codedescribe}{version}~ and \tsobj[pkg]{codelisting} version \PkgInfo{codelisting}{version}. Those two packages are fairly stable, and given the \tsobj[meta]{obj-type} mechanism (see below, \ref{obj-type-def}) it can be easily extended without changing it's interface.
\section{codelisting Package}
@@ -84,7 +83,19 @@ This environment is an alias to \tsobj[env]{scontents} environment (from \tsobj[
-\subsection{Code Display/Demo}
+\subsection{Code Display/Demo}\label{codelist}
+
+\begin{codedescribe}{\setcodekeys}
+ \begin{codesyntax}%
+ \tsmacro{\setcodekeys}{code-keys}
+ \end{codesyntax}
+
+One has the option to set \tsmeta{code-keys} (see \ref{code-keys}) per \tsmacro{\tscode}{}/\tsmacro{\tsdemo}{} call, or \emph{globally}, better said, \emph{in the called context group} .\\
+\begin{tsremark}[N.B.:]
+All \tsobj[code]{\tscode,\tsdemo} commands create a local group in which the \tsmeta{code-keys} are defined, and discarded once said local group is closed. \tsmacro{\setcodekeys}{} defines those keys in the \emph{current} context/group.
+\end{tsremark}
+\end{codedescribe}
+
\begin{codedescribe}{\tscode*,\tsdemo*}
\begin{codesyntax}%
\tsmacro{\tscode*}[code-keys]{st-name}
@@ -99,38 +110,21 @@ This environment is an alias to \tsobj[env]{scontents} environment (from \tsobj[
For Example:
\begin{codestore}[st=democodestore]
- \begin{codestore}[stmeta]
+\begin{codestore}[stmeta]
Some \LaTeX~coding, for example: \ldots.
- \end{codestore}
-
+\end{codestore}
This will just typesets \tsobj[key]{stmeta}:
-
\tscode*[codeprefix={Sample Code:}] {stmeta}
-
and this will demonstrate it, side by side with source code:
-
-\tsdemo[numbers=left,ruleht=0.5,
+\tsdemo[numbers=left,ruleht=0.5,
codeprefix={inner sample code},
resultprefix={inner sample result}] {stmeta}
\end{codestore}
-
\tsdemo*[emph2={tscode,tsdemo},emph={stmeta},keywd2={codestore}]{democodestore}
-\begin{codedescribe}{\setcodekeys}
- \begin{codesyntax}%
- \tsmacro{\setcodekeys}{code-keys}
- \end{codesyntax}
-
-Instead of setting/defining \tsmeta{code-keys} per \tsmacro{\tscode}{}/\tsmacro{\tsdemo}{} call, one can set those \emph{globally}, better said, \emph{in the called context group} .\\
-\begin{tsremark}[N.B.:]
-All \tsobj[code]{\tscode,\tsdemo} commands create a local group in which the \tsmeta{code-keys} are defined, and discarded once said local group is closed. \tsmacro{\setcodekeys}{} defines those keys in the \emph{current} context/group.
-\end{tsremark}
-\end{codedescribe}
-
-
-\subsubsection{Code Keys}
+\subsubsection{Code Keys}\label{code-keys}
Using a \tsobj[key]{key}\,=\tsobj[value]{value} syntax, one can fine tune \tsobj[pkg]{listings} syntax highlight.
\begin{codedescribe}[key]{settexcs,texcs,texcsstyle}
@@ -142,6 +136,7 @@ Using a \tsobj[key]{key}\,=\tsobj[value]{value} syntax, one can fine tune \tsobj
Those define sets of \LaTeX~commands (csnames), the \tsobj[key]{set} variants initialize/redefine those sets (an empty list, clears the set), while the others extend those sets. The \tsobj[key]{style} ones redefines the command display style (an empty \tsobj[meta]{value} resets the style to it's default).\\
\end{codedescribe}
+
\begin{codedescribe}[key]{setkeywd,keywd,keywdstyle}
\begin{codesyntax} %
\tsobj[key]{setkeywd,setkeywd2,setkeywd3}
@@ -192,10 +187,10 @@ those set the \tsobj[key]{codeprefix} (default: \LaTeX~Code:) and \tsobj[key]{re
\begin{codesyntax} %
\tsobj[key]{parindent}
\end{codesyntax}
-Sets the indentation to be used when 'demonstrating' \LaTeXe code (\tsobj[code]{\tsdemo}). Defaults to whatever value \tsobj[code]{\parindent} was when the package was first loaded.
+Sets the indentation to be used when 'demonstrating' \LaTeX\ code (\tsobj[code]{\tsdemo}). Defaults to whatever value \tsobj[code]{\parindent} was when the package was first loaded.
\end{codedescribe}
-\begin{codedescribe}[key]{ruleht}
+\begin{codedescribe}[key]{ruleht}%-very-long-long-long,xyz,xyh,kjh,ljd,kls}
\begin{codesyntax} %
\tsobj[key]{ruleht}
\end{codesyntax}
@@ -203,90 +198,139 @@ When typesetting the 'code demo' (\tsobj{\tsdemo}) a set of rules is drawn. The
\end{codedescribe}
-
\section{codedescribe Package}
This package aims at minimizing the number of commands, having the object kind (if a macro, or a function, or environment, or variable, or key ...) as a parameter, allowing for a simple 'extension mechanism': other object types can be easily introduced without having to change, or add commands.
\subsection{Package Options}
It has a single package option:
+
\begin{describelist}{option}
\describe{nolisting}{it will suppress the \tsobj[pkg]{codelisting} package load. In case it's not necessary or one wants to use a differen package for \LaTeX\ code listing.}
\end{describelist}
-\subsection{\tsobj[oarg]{obj-type} keys}\label{obj-type-def}
+\subsection{Object Type keys}\label{obj-type-def}
+
+The applied text format is defined in terms of \tsobj[arg]{obj-types}, which are defined in terms of \tsobj[arg]{format-groups} and each one defines a 'formatting function', 'font shape', bracketing, etc. to be applied.
+
+\subsubsection{Format Keys}\label{format-keys}
+There is a set of primitive \tsobj[arg]{format-keys} used to define \tsobj[arg]{format-groups,obj-types}, which are:
+
+\begin{describelist*}{keys}
+ \describe {meta} { to typeset between angles,}
+ \describe {xmeta} { to typeset *verbatim* between angles,}
+ \describe {verb} { to typeset *verbatim*,}
+ \describe {xverb} { to typeset *verbatim*, suppressing all spaces,}
+ \describe {code} { to typeset *verbatim*, suppressing all spaces and replacing a TF by \underline{TF},}
+ \describe {nofmt} { in case of a redefinition, to remove the 'base' formatting,}
+ \describe {slshape} { to use a slanted font shape,}
+ \describe {itshape} { to use an italic font shape,}
+ \describe {noshape} { in case of a redefinition, to remove the 'base' shape,}
+ \describe {lbracket} { defines the left bracket (when using \tsobj{\tsargs}). \textbf{Note:} this key must have an associated value,}
+ \describe {rbracket} { defines the right bracket (when using \tsobj{\tsargs}). \textbf{Note:} this key must have an associated value,}
+ \describe {color} { defines the text color. \textbf{Note:} this key must have an associated value (a color, as understood by \tsobj[pkg]{xcolor} package).}
+\end{describelist*}
+
+\subsubsection{Format Groups}
+Using \tsobj{\defgroupfmt} one can (re-)define custom \tsobj[arg]{format-groups}. There is, though, a set of pre-defined ones as follow:
+
+\begin{describelist*}{keys}
+ \describe {meta} {which sets \tsobj[keys]{meta,color}}
+ \describe {verb} {which sets \tsobj[keys]{color}}
+ \describe {oarg} {which sets \tsobj[keys]{meta,color}}
+ \describe {code} {which sets \tsobj[keys]{code,color}}
+ \describe {syntax} {which sets \tsobj[keys]{color}}
+ \describe {keyval} {which sets \tsobj[keys]{slshape,color}}
+ \describe {option} {which sets \tsobj[keys]{color}}
+ \describe {defaultval} {which sets \tsobj[keys]{color}}
+ \describe {env} {which sets \tsobj[keys]{slshape,color}}
+ \describe {pkg} {which sets \tsobj[keys]{slshape,color}}
+\end{describelist*}
+\begin{tsremark}
+\tsobj[keys]{color} was used in the list above just as a 'reminder' that a color is defined/associated with the given group.
+\end{tsremark}
+
+\subsubsection{Object Types}
+Using \tsobj{\defobjectfmt} one can (re-)define custom \tsobj[arg]{obj-types}.
+Similarly, there is a set of predefined ones, as follow:
+\begin{describelist*}{keys}
+ \describe {arg, meta} {based on (group) \tsobj[key]{meta}}
+ \describe {verb, xverb} {based on (group) \tsobj[key]{verb} plus \tsobj[key,sep=or]{verb,xverb}}
+ \describe {marg} {based on (group) \tsobj[key]{meta} plus brackets}
+ \describe {oarg, parg, xarg} {based on (group) \tsobj[key]{oarg} plus brackets}
+ \describe {code, macro, function} {based on (group) \tsobj[key]{code}}
+ \describe {syntax} {based on (group) \tsobj[key]{syntax}}
+ \describe {keyval, key, keys, values} {based on (group) \tsobj[key]{keyval}}
+ \describe {option} {based on (group) \tsobj[key]{option}}
+ \describe {defaultval} {based on (group) \tsobj[key]{defaultval}}
+ \describe {env} {based on (group) \tsobj[key]{env}}
+ \describe {pkg, pack} {based on (group) \tsobj[key]{pkg}}
+\end{describelist*}
-The current known Object Types (keys) are:
-\begin{itemize}[noitemsep]
-\item \tsobj[keys]{meta} for a 'general' case,
-\item \tsobj[keys]{arg,marg,oarg,parg,xarg} for commands/functions arguments,
-\item \tsobj[keys]{code,macro,function} for macros in general,
-\item \tsobj[keys]{syntax} to describe/typeset code syntax,
-\item \tsobj[keys]{key,keys,keyval,value,defaultval} to list keys, values, etc.,
-\item \tsobj[keys]{option} for package/macros options,
-\item \tsobj[keys]{env} for environments,
-\item \tsobj[keys]{pkg,pack} for packages.
-\end{itemize}
-% Besides those, for \tsmacro{\tsobj}{} one has \tsobj[keys]{sep,comma} keys to change the last 'connector term' (default: and) and \tsobj[keys]{rulecolor,new,update,note} to customize the \tsobj[env]{codedescribe} environment.
-The format's defaults can be changed with \tsobj{\setcodefmt}
+\subsubsection{Customization}\label{format-custom}
-\begin{codedescribe}[code]{\setcodefmt}
+One can add user defined groups/objects or change the pre-defined ones with the following commands:
+
+
+\begin{codedescribe}[code,new=2023/05/16]{\defgroupfmt}
\begin{codesyntax} %
- \tsmacro{\setcodefmt}{fmt-keys}
+ \tsmacro{\defgroupfmt}{format-group,format-keys}
\end{codesyntax}
-\tsobj[marg]{fmt-keys} are basically the same as above:
-\begin{itemize}[noitemsep]
- \item To change default colors: (note each group defines a single entry/alias)
- \begin{itemize}[noitemsep]
-\item \tsobj[keys,sep=or]{meta,marg,arg} ,
-\item \tsobj[keys,sep=or]{oarg,parg,xarg} ,
-\item \tsobj[keys,sep=or]{code,macro,function} ,
-\item \tsobj[keys,sep=or]{syntax} ,
-\item \tsobj[keys,sep=or]{key,keys,keyval,value} ,
-\item \tsobj[keys,sep=or]{defaultval} ,
-\item \tsobj[keys,sep=or]{option} ,
-\item \tsobj[keys,sep=or]{env} ,
-\item \tsobj[keys,sep=or]{pkg,pack} ,
-\item \tsobj[keys,sep=or]{allcolors} to set all colors at once, single value.
- \end{itemize}
-\item others
- \begin{itemize}
- \item \tsobj[keys]{font} to change font (default: \tsobj{\ttfamily})
- \item \tsobj[keys]{fontsize} to change size (default: \tsobj{\small})
- \item \tsobj[keys]{fontshape} to change the used 'slshape' (default: \tsobj{\slshape})
- \end{itemize}
-\end{itemize}
+\tsobj[marg]{format-group} is the name of the new group (or one being redefined, which can be one of the standard ones). \tsobj[marg]{format-keys} is any combination of the keys defined in \ref{format-keys}
+\end{codedescribe}
+
+For example, one can redefine the \tsobj[key]{code group} standard color with \tsobj{\defgroupfmt{code}{color=red}} and all \tsobj[key]{obj-types} based on it will be typeset in red (in the standard case: \tsobj[key]{code, macro, function} objects).
+
+\begin{codedescribe}[code,new=2023/05/16]{\defobjectfmt}
+\begin{codesyntax} %
+ \tsmacro{\defobjectfmt}{obj-type,format-group,format-keys}
+\end{codesyntax}
+\tsobj[marg]{obj-type} is the name of the new \tsobj[arg]{object} being defined (or redefined),
+\tsobj[marg]{format-group} is the base group to be used. \tsobj[marg]{format-keys} allows for further differentiation.
\end{codedescribe}
+For instance, the many optional \tsobj[arg]{*arg} are defined as follow:
+\begin{codestore}[demo.fmtdef]
+\colorlet {c__codedesc_oarg_color} { gray!90!black }
+\defgroupfmt {oarg} { meta , color=c__codedesc_oarg_color }
+\defobjectfmt {oarg} {oarg} { lbracket={[} , rbracket={]} }
+\defobjectfmt {parg} {oarg} { lbracket={(} , rbracket={)} }
+\defobjectfmt {xarg} {oarg} { lbracket={<} , rbracket={>} }
+\end{codestore}
+\tscode*[codeprefix=~,keywd={oarg,arg,parg,xarg},keywd2={meta,color},emph={lbracket,rbracket}]{demo.fmtdef}
\subsection{Environments}
+
\begin{codedescribe}[env,new=2023/05/01,update=2023/05/1,note={this is an example}]{codedescribe}
\begin{codesyntax}
\tsmacro{\begin{codedescribe}}[obj-type]{csv-list}
\ldots
\tsmacro{\end{codedescribe}}{}
-\end{codesyntax}
+\end{codesyntax}[Note 1:]
This is the main environment to describe \tsobj[env]{Macros, Functions, Variable, Environments, etc.} \tsobj[meta]{csv-list} is typeset in the margin. The optional \tsobj[oarg]{obj-type} defines the object-type format.
\end{codedescribe}
\begin{tsremark}
One can change the rule color with the key \tsobj[keys]{rulecolor}, for instance \tsmacro{\begin{codedescribe}[rulecolor=white]}{} will remove the rules.
\end{tsremark}
-\begin{tsremark}
+\begin{tsremark}[Note 2:]
Besides that, one can use the keys \tsobj[keys]{new,update,note} to further customize it as: \tsverb{\begin{codedescribe}[new=2023/05/01,update=2023/05/1,note={this is an example}]}
\end{tsremark}
+\begin{tsremark}[Note 3:]
+Finally, one can use \tsobj[key]{EXP,rEXP} to add a star \ding{72} or a hollow star \ding{73}, as per expl3/doc3 conventions (if expandable, restricted expandable or not).
+\end{tsremark}
\begin{codedescribe}[env]{codesyntax}
\begin{codesyntax}
\tsmacro{\begin{codesyntax}}{}
+\ldots
+\tsmacro{\end{codesyntax}}{}
\end{codesyntax}
The \tsobj[env]{codesyntax} environment sets the fontsize and activates \tsmacro{\obeylines,\obeyspaces}{}, so one can list macros/cmds/keys use, one per line.
-
\end{codedescribe}
-
\begin{tsremark}
\tsobj[env]{codesyntax} environment shall appear only once, inside of a \tsobj[env]{codedescribe} environment. Take note, as well, this is not a verbatim environment!
%\begin{describelist*}{code}
@@ -341,7 +385,7 @@ This is the \tsobj[env]{describelist} companion macro. In case of the \tsobj[env
\tsmacro{\typesetobj}[obj-type]{csv-list}
\tsmacro{\tsobj}[obj-type]{csv-list}
\end{codesyntax}
-It can be used to typeset a single 'object' or a list thereof. In the case of a list, each term will be separated by commas. The last two by \tsobj[key]{sep} (defaults to: and).
+This is the main typesetting command (most of the others are based on this). It can be used to typeset a single 'object' or a list thereof. In the case of a list, each term will be separated by commas. The last two by \tsobj[key]{sep} (defaults to: and).
\end{codedescribe}
\begin{tsremark}
One can change the last 'separator' with the key \tsobj[keys]{sep}, for instance \tsverb[code]{\tsobj[env,sep=or] {}} (in case one wants to produce an 'or' list of environments). Additionally, one can use the key \tsobj[keys]{comma} to change the last separator to a single comma, like \tsverb[code]{\tsobj[env,comma] {}}.
@@ -352,7 +396,7 @@ One can change the last 'separator' with the key \tsobj[keys]{sep}, for instance
\tsmacro{\typesetargs}[obj-type]{csv-list}
\tsmacro{\tsargs}[obj-type]{csv-list}
\end{codesyntax}
- Those will typeset \tsobj[marg]{csv-list} as a list of parameters, like \tsargs[oarg]{arg1,arg2,arg3}, or \tsargs[marg]{arg1,arg2,arg3}, etc. \tsobj[oarg]{obj-type} defines the formating AND kind of braces used: \tsverb{[]} for optional arguments (oarg), \tsverb{{}} for mandatory arguments (marg), and so on.
+ Those will typeset \tsobj[marg]{csv-list} as a list of parameters, like \tsargs[oarg]{arg1,arg2,arg3}, or \tsargs[marg]{arg1,arg2,arg3}, etc. \tsobj[oarg]{obj-type} defines the formating AND kind of brackets used (see \ref{obj-type-def}): \tsverb{[]} for optional arguments (oarg), \tsverb{{}} for mandatory arguments (marg), and so on.
\end{codedescribe}
@@ -377,8 +421,12 @@ This is just a short-cut for\par \tsobj[code]{\tsobj [code] {macro-list}} \tsobj
\tsmacro{\typesetverb}[obj-type]{verbatim text}
\tsmacro{\tsverb}[obj-type]{verbatim text}
\end{codesyntax}
- Typesets \tsobj[marg]{verbatim text} as is (verbatim...). \tsobj[oarg]{obj-type} defines the used format.
+ Typesets \tsobj[marg]{verbatim text} as is (verbatim...). \tsobj[oarg]{obj-type} defines the used format. The difference with \tsverb{\tsobj[verb]{something}} is that \tsmeta{something} can contain commas (which, otherwise, would be interpreted as a list separator in \tsobj{\tsobj}.
\end{codedescribe}
+\begin{tsremark}
+This is meant to short expressions, and not multi-line, complex code (one is better of, then, using \ref{codelist}). \tsobj[meta]{verbatim text} must be balanced ! otherwise, some low level \TeX\ errors may pop out.
+\end{tsremark}
+
\begin{codedescribe}[code]{\typesetmarginnote,\tsmarginnote}
\begin{codesyntax}
@@ -390,7 +438,7 @@ Typesets a small note at the margin.
\begin{codedescribe}[env]{tsremark}
\begin{codesyntax}
-\tsmacro{\begin{tsremark}[NB]}{}
+\tsmacro{\begin{tsremark}}[NB]{}
\tsmacro{\end{tsremark}}{}
\end{codesyntax}
The environment body will be typeset as a text note. \tsobj[oarg]{NB} (defaults to Note:) is the note begin (in boldface). For instance:
@@ -403,7 +451,7 @@ Typesets a small note at the margin.
\tsdemo{demo.remark}
\end{codedescribe}
-\subsection{Auxiliar Command / Environment}
+\subsection{Auxiliary Command / Environment}
In case the used Document Class redefines the \tsobj[code]{\maketitle} command and/or \tsobj[env]{abstract} environment, alternatives are provided (based on the article class).
\begin{codedescribe}[code]{typesettitle,tstitle}
@@ -429,5 +477,12 @@ This is based on the \tsobj[code]{\maketitle} from the \tsobj[pkg]{article} clas
This is the \tsobj[env]{abstract} environment from the \tsobj[pkg]{article} class.
\end{codedescribe}
+\begin{codedescribe}[code,new=2023/05/16]{typesetdate,tsdate}
+\begin{codesyntax}
+\tsmacro{\typesetdate}{}
+\tsmacro{\tsdate}{}
+\end{codesyntax}
+This provides the current date (Month Year, format).
+\end{codedescribe}
\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/codedescribe/latex/codedescribe.sty b/macros/latex/contrib/codedescribe/latex/codedescribe.sty
index 370f01ba82..a260c0d422 100644
--- a/macros/latex/contrib/codedescribe/latex/codedescribe.sty
+++ b/macros/latex/contrib/codedescribe/latex/codedescribe.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version 1.0.1beta (2023/05/11)
+%% This is version 1.1 (2023/05/16)
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/codedescribe
@@ -22,33 +22,37 @@
\RequirePackage{ expl3 }
\ProvidesExplPackage
{codedescribe}
- {2023/05/11}
- {1.0}
+ {2023/05/16}
+ {1.1}
{LaTeX Code Description/Documentation}
-\prop_if_exist:NTF \g__codedesc_pkg_prop
- {}
- { \prop_new:N \g__codedesc_pkg_prop }
-
-\prop_put_from_keyval:Nn \g__codedesc_pkg_prop
+%%%%%%%
+%%%
+%%% Just an attempt of having my packages info in a regular way
+%%% Idea being: { <pck-name> / pkg info } for each and all.
+%%%
+%%%%%%%
+\keys_define:nn { codedescribe / pkg info}
{
- codedesc . name = codedescribe ,
- codedesc . prefix = codedesc ,
- codedesc . date = 2023/05/11 ,
- codedesc . version = 1.0 ,
- codedesc . description = LaTeX Code Description/Documentation
+ name .code:n = codedescribe ,
+ prefix .code:n = codedesc ,
+ date .code:n = 2023/05/16 ,
+ version .code:n = 1.1 ,
+ description .code:n = \LaTeX~Code~Description/Documentation
}
-
-\cs_gset:Npn \__codedesc_pkg_info:nn #1#2
+\cs_if_exist:NF \__codedesc_pkg_info:nn
{
- \prop_item:Nn \g__codedesc_pkg_prop {#1.#2}
+ \cs_new_protected:Npn \__codedesc_pkg_info:nn #1#2
+ { \keys_set:nn {#1 / pkg info}{#2} }
}
+\cs_if_exist:NF \PkgInfo
+ { \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} } }
+%%%%%%%
+%%% End of cut-n-paste
+%%%%%%%
+
+
-\cs_if_exist:NTF \PkgInfo
- {}
- {
- \NewDocumentCommand \PkgInfo {mm} { \prop_item:Nn \g__codedesc_pkg_prop {#1.#2} }
- }
\use:c {@reversemargintrue}
@@ -58,20 +62,55 @@
\keys_define:nn { codedescribe }
{
- nolisting.usage:n = general,
+ nolisting.usage:n = load,
nolisting.bool_set_inverse:N = \l__codedesc_loadlisting_bool,
nolisting.default:n = {true},
}
\ProcessKeyOptions [codedescribe ]
+%% bbding is need for those hollow stars...
\RequirePackage{xcolor}
+\RequirePackage{pifont}
\bool_if:nT {\l__codedesc_loadlisting_bool}
{
\RequirePackage{codelisting}
}
+
\cs_generate_variant:Nn \tl_set:Nn {Ne}
+\cs_generate_variant:Nn \keys_set:nn {ne}
+\cs_generate_variant:Nn \keys_define:nn {ne}
+\cs_generate_variant:Nn \tl_to_str:n {o , e}
+
+
+\msg_new:nnnn {codedesc} {format-err}
+ {
+ (ID:#1)~Format~Key~(#2)~not~defined!
+ }
+ {
+ You~tried~to~use~a~non~defined~format~key:#2.
+ ~Error~Code~ ID:<#1>.
+ }
+
+\msg_new:nnnn {codedesc} {group-err}
+ {
+ (ID:#1)~Format~group~(#2)~not~defined!
+ }
+ {
+ You~tried~to~use~a~non~defined~format~group:#2.
+ ~Error~Code~ ID:<#1>.
+ }
+
+\msg_new:nnnn {codedesc} {object-err}
+ {
+ (ID:#1)~Objetc~Type~(#2)~not~defined!
+ }
+ {
+ You~tried~to~use~a~non~defined~object~type:#2.
+ ~Error~Code~ ID:<#1>.
+ }
+
@@ -99,7 +138,7 @@
\dim_new:N \l__codedesc_linewidth_dim
\dim_new:N \l__codedesc_textcolwidth_dim
-\cs_new:Npn \__codedesc_set_textcolwidth:
+\cs_new_protected:Npn \__codedesc_set_textcolwidth:
{
\dim_compare:nNnTF {\linewidth} = {\l__codedesc_linewidth_dim}
{}
@@ -113,246 +152,309 @@
}
-\colorlet{c__codedesc_none_color}{red!70!black}
-\bool_new:N \l__codedesc_descnotes_bool
-\bool_new:N \l__codedesc_descdate_new_bool
-\tl_new:N \l__codedesc_descdate_new_tl
-\bool_new:N \l__codedesc_descdate_update_bool
-\tl_new:N \l__codedesc_descdate_update_tl
-\bool_new:N \l__codedesc_sidenote_bool
-\tl_new:N \l__codedesc_sidenote_tl
-\cs_new:Npn \__codedesc_keysmetadefaults:nn #1#2
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+\keys_define:nn { codedesc / scratch_def }
+{
+ meta.usage:n = general ,
+ meta .value_forbidden:n = true ,
+ meta .code:n ={ \tl_set:Nn \l__codedesc_tmpfmt_tl {meta} } ,
+
+ xmeta.usage:n = general ,
+ xmeta .value_forbidden:n = true ,
+ xmeta .code:n ={ \tl_set:Nn \l__codedesc_tmpfmt_tl {xmeta} } ,
+
+ code.usage:n = general ,
+ code .value_forbidden:n = true ,
+ code .code:n ={ \tl_set:Nn \l__codedesc_tmpfmt_tl {code} } ,
+
+ verb.usage:n = general ,
+ verb .value_forbidden:n = true ,
+ verb .code:n ={ \tl_set:Nn \l__codedesc_tmpfmt_tl {verb} } ,
+
+ xverb.usage:n = general ,
+ xverb .value_forbidden:n = true ,
+ xverb .code:n ={ \tl_set:Nn \l__codedesc_tmpfmt_tl {xverb} } ,
+
+ nofmt.usage:n = general ,
+ nofmt .value_forbidden:n = true ,
+ nofmt .code:n = {\tl_clear:N \l__codedesc_tmpfmt_tl } ,
+
+ slshape.usage:n = general ,
+ slshape .value_forbidden:n = true ,
+ slshape .code:n ={ \tl_set:Nn \l__codedesc_tmpshape_tl { slshape} } ,
+
+ itshape.usage:n = general ,
+ itshape .value_forbidden:n = true ,
+ itshape .code:n ={ \tl_set:Nn \l__codedesc_tmpshape_tl { itshape} } ,
+
+ noshape.usage:n = general ,
+ noshape .value_forbidden:n = true ,
+ noshape .code:n ={ \tl_clear:N \l__codedesc_tmpshape_tl } ,
+
+ color.usage:n = general ,
+ color .value_required:n = true ,
+ color.code:n = { \tl_set:Nn \l__codedesc_tmpcolor_tl { #1 } } ,
+
+ lbracket .usage:n = general ,
+ lbracket .value_required:n = true ,
+ lbracket .code:n = { \tl_set:Nn \l__codedesc_tmplbracket_tl { #1 } } ,
+
+ rbracket .usage:n = general ,
+ rbracket .value_required:n = true ,
+ rbracket .code:n = { \tl_set:Nn \l__codedesc_tmprbracket_tl { #1 } } ,
+
+ unknown.code:n =
+ {
+ \msg_error:nnxx { codedesc } {format-err} {format}{\l_keys_key_str}
+ },
+
+}
+
+
+\keys_define:nn { codedesc / grp_scratch }
{
- \tl_if_blank:nTF {#2}
- { \keys_set:nn {codedesc / defaults} { #1 } }
- { \keys_set:nn {codedesc / defaults} { #1 = {#2} } }
+ unknown .code:n = {}
}
-\keys_define:nn { codedesc / defaults }
-{
- meta.usage:n = general,
- meta.code:n = { \colorlet{c__codedesc_marg_color}{#1} } ,
- meta.default:n = { gray!60!black } ,
- %
- marg.usage:n = general,
- marg.code:n = { \__codedesc_keysmetadefaults:nn {meta}{#1} } ,
- %
- arg.usage:n = general,
- arg.code:n = { \__codedesc_keysmetadefaults:nn {meta}{#1} } ,
- %
+\cs_new_protected:Npn \__codedesc_group_define:nn #1#2
+ {
+ \tl_clear:N \l__codedesc_tmpfmt_tl
+ \tl_clear:N \l__codedesc_tmpshape_tl
+ \tl_clear:N \l__codedesc_tmpcolor_tl
+ \tl_clear:N \l__codedesc_tmplbracket_tl
+ \tl_clear:N \l__codedesc_tmprbracket_tl
+
+ \keys_set:nn { codedesc / grp_scratch } {#1}
+ \keys_set:nn { codedesc / scratch_def } {#2}
+
+ \tl_clear:N \l_tmpa_tl
+ \tl_clear:N \l_tmpb_tl
+ \tl_if_empty:NF \l__codedesc_tmpfmt_tl
+ {
+ \tl_put_right:No \l_tmpa_tl{\l__codedesc_tmpfmt_tl}
+ \tl_set:Nn \l_tmpb_tl { , }
+ }
+ \tl_if_empty:NF \l__codedesc_tmpshape_tl
+ {
+ \tl_put_right:No \l_tmpa_tl{ \l_tmpb_tl }
+ \tl_put_right:No \l_tmpa_tl{\l__codedesc_tmpshape_tl}
+ \tl_set:Nn \l_tmpb_tl { , }
+ }
+ \tl_if_empty:NF \l__codedesc_tmpcolor_tl
+ {
+ \tl_put_right:No \l_tmpa_tl{ \l_tmpb_tl }
+ \tl_put_right:Nn \l_tmpa_tl{ color = }
+ \tl_put_right:No \l_tmpa_tl{ \l__codedesc_tmpcolor_tl}
+ \tl_set:Nn \l_tmpb_tl { , }
+ }
+ \tl_if_empty:NF \l__codedesc_tmplbracket_tl
+ {
+ \tl_put_right:No \l_tmpa_tl{ \l_tmpb_tl }
+ \tl_put_right:Nn \l_tmpa_tl{ lbracket = }
+ \tl_put_right:No \l_tmpa_tl{ \l__codedesc_tmplbracket_tl}
+ \tl_set:Nn \l_tmpb_tl { , }
+ }
+ \tl_if_empty:NF \l__codedesc_tmprbracket_tl
+ {
+ \tl_put_right:No \l_tmpa_tl{ \l_tmpb_tl }
+ \tl_put_right:Nn \l_tmpa_tl{ rbracket = }
+ \tl_put_right:No \l_tmpa_tl{ \l__codedesc_tmprbracket_tl}
+% \tl_set:Nn \l_tmpb_tl { , }
+ }
+
+ \keys_define:ne { codedesc / grp_scratch } { #1 .meta:nn = { codedesc / scratch_def } { \l_tmpa_tl} }
+ \keys_define:ne { codedesc / grp_fmt } { #1 .meta:nn = { codedesc / base_fmt } { \l_tmpa_tl} }
+ }
- oarg.usage:n = general,
- oarg.code:n = { \colorlet{c__codedesc_oarg_color}{#1} } ,
- oarg.default:n = { gray!90!black } ,
- %
- parg.usage:n = general,
- parg.code:n = { \__codedesc_keysmetadefaults:nn {oarg}{#1} } ,
- %
- xarg.usage:n = general,
- xarg.code:n = { \__codedesc_keysmetadefaults:nn {oarg}{#1} } ,
- %
- code.usage:n = general,
- code.code:n = { \colorlet{c__codedesc_code_color}{#1} } ,
- code.default:n = { blue!40!black } ,
- %
- macro.usage:n = general,
- macro.code:n = { \__codedesc_keysmetadefaults:nn {code}{#1} } ,
- %
- function.usage:n = general,
- function.code:n = { \__codedesc_keysmetadefaults:nn {code}{#1} } ,
- %
- syntax.usage:n = general,
- syntax.code:n = { \colorlet{c__codedesc_syntax_color}{#1} } ,
- syntax.default:n = { blue!60!black } ,
- %
- keyval.usage:n = general,
- keyval.code:n = { \colorlet{c__codedesc_keyval_color}{#1} } ,
- keyval.default:n = { teal!40!black } ,
- %
- key.usage:n = general,
- key.code:n = { \__codedesc_keysmetadefaults:nn {keyval}{#1} } ,
- %
- keys.usage:n = general,
- keys.code:n = { \__codedesc_keysmetadefaults:nn {keyval}{#1} } ,
- %
- value.usage:n = general,
- value.code:n = { \__codedesc_keysmetadefaults:nn {keyval}{#1} } ,
- %
+\keys_define:nn { codedesc / grp_fmt }
+ {
+ unknown .code:n = \msg_error:nnxx { codedesc } {group-err} {grpfmt}{\l_keys_key_str}
+ }
- option.usage:n = general,
- option.code:n = { \colorlet{c__codedesc_options_color}{#1} } ,
- option.default:n = { green!30!black } ,
- %
- defaultval.usage:n = general,
- defaultval.code:n = { \colorlet{c__codedesc_defaultval_color}{#1} } ,
- defaultval.default:n = { blue!60!black } ,
- %
+\cs_new_protected:Npn \__codedesc_object_define:nnn #1#2#3
+ {
+ \tl_if_blank:nTF {#3}
+ {
+ \keys_define:nn { codedesc / format }
+ { #1 .meta:nn = { codedesc / grp_fmt } { #2 } }
+ }
+ {
+ \__codedesc_group_define:nn { #1_objfmt } {#3}
+ \keys_define:nn { codedesc / format }
+ { #1 .meta:nn = { codedesc / grp_fmt } { #2 , #1_objfmt} }
+ }
+ }
- env.usage:n = general,
- env.code:n = { \colorlet{c__codedesc_env_color}{#1} } ,
- env.default:n = { green!30!black } ,
- %
- pkg.usage:n = general,
- pkg.code:n = { \colorlet{c__codedesc_pkg_color}{#1} } ,
- pkg.default:n = { green!30!black } ,
- %
- pack.usage:n = general,
- pack.code:n = { \__codedesc_keysmetadefaults:nn {pkg}{#1} } ,
- %
-
- allcolors.usage:n = general,
- allcolors.meta:n =
- {
- meta = {#1} ,
- oarg = {#1} ,
- code = {#1} ,
- syntax = {#1} ,
- keyval = {#1} ,
- option = {#1} ,
- defaultval = {#1} ,
- env = {#1} ,
- pkg = {#1} ,
- } ,
- allcolors.default:n = { black } ,
-
- font.usage:n = general ,
- font.code:n = { \tl_set:Nn \__codedesc_metafont_tl: {#1} } ,
- font.default:n = { \ttfamily } ,
-
- fontsize.usage:n = general ,
- fontsize.code:n = { \tl_set:Nn \__codedesc_metasize_tl: {#1} } ,
- fontsize.default:n = { \small } ,
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- fontshape.usage:n = general ,
- fontshape.code:n = { \tl_set:Nn \__codedesc_slshape_tl: {#1} } ,
- fontshape.default:n = { \slshape } ,
+
- setdefaults.usage:n = general ,
- setdefaults.meta:n = { meta, oarg, code, syntax, keyval, option, defaultval, env, pkg , font, fontsize, fontshape} ,
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- unknown.usage:n = general,
- unknown.code:n =
- { }, % unknown keys are silently ignored...
-}
+\tl_set:Nn \__codedesc_metasize_tl: {\small}
+\tl_set:Nn \__codedesc_metafont_tl: {\ttfamily}
-\keys_set:nn {codedesc / defaults}{setdefaults}
-\NewDocumentCommand \setcodefmt {m} { \keys_set:nn {codedesc / defaults}{#1}}
+ \colorlet{c__codedesc_none_color}{red!70!black}
-\keys_define:nn { codedesc / format }
-{
- meta.usage:n = general,
- meta.code:n =
- {
- \tl_set:Nn \__codedesc_metacolor_tl: { \color{c__codedesc_marg_color} }
- \tl_set:Nn \__codedesc_typeset_tl:n { \__codedesc_meta:n }
- \tl_set:Nn \__codedesc_typeset_tl:o { \__codedesc_meta:o }
- },
- marg.usage:n = general,
- marg.meta:n = { meta } ,
- %
- %
- arg.usage:n = general,
- arg.meta:n = { meta } ,
- %
+ \colorlet{c__codedesc_verb_color}{ black }
+\__codedesc_group_define:nn {verb} {color=c__codedesc_verb_color}
+\__codedesc_object_define:nnn {verb}{verb}{verb}
+\__codedesc_object_define:nnn {xverb}{verb}{xverb}
- oarg.usage:n = general,
- oarg.code:n =
- {
- \tl_set:Nn \__codedesc_metacolor_tl: { \color{c__codedesc_oarg_color} }
- \tl_set:Nn \__codedesc_typeset_tl:n { \__codedesc_meta:n }
- \tl_set:Nn \__codedesc_typeset_tl:o { \__codedesc_meta:o }
- },
- %
- parg.usage:n = general,
- parg.meta:n = { oarg } ,
- %
- xarg.usage:n = general,
- xarg.meta:n = { oarg } ,
- %
+ \colorlet{c__codedesc_marg_color}{ gray!60!black }
+\__codedesc_group_define:nn {meta} {meta,color=c__codedesc_marg_color}
+\__codedesc_object_define:nnn {meta}{meta}{}
+\__codedesc_object_define:nnn {arg}{meta}{}
+\__codedesc_object_define:nnn {marg}{meta}{lbracket={\{},rbracket={\}}}
- code.usage:n = general,
- code.code:n =
- {
- \tl_set:Nn \__codedesc_metacolor_tl: { \color{c__codedesc_code_color} }
- \tl_set:Nn \__codedesc_typeset_tl:n { \__codedesc_macro_typeset:n }
- \tl_set:Nn \__codedesc_typeset_tl:o { \__codedesc_macro_typeset:o }
- },
- %
- macro.usage:n = general,
- macro.meta:n = { code } ,
- %
- function.usage:n = general,
- function.meta:n = { code } ,
- %
+ \colorlet{c__codedesc_oarg_color}{ gray!90!black }
+\__codedesc_group_define:nn {oarg} {meta,color=c__codedesc_oarg_color}
+\__codedesc_object_define:nnn {oarg}{oarg}{lbracket={[},rbracket={]}}
+\__codedesc_object_define:nnn {parg}{oarg}{lbracket={(},rbracket={)}}
+\__codedesc_object_define:nnn {xarg}{oarg}{lbracket={<},rbracket={>}}
- syntax.usage:n = general,
- syntax.code:n =
- {
- \tl_set:Nn \__codedesc_metacolor_tl: { \color{c__codedesc_syntax_color} }
- },
- %
+ \colorlet{c__codedesc_code_color}{ blue!40!black }
+\__codedesc_group_define:nn {code} {code,color=c__codedesc_code_color}
+\__codedesc_object_define:nnn {code}{code}{}
+\__codedesc_object_define:nnn {macro}{code}{}
+\__codedesc_object_define:nnn {function}{code}{}
+%\__codedesc_group_define:nn {code} {xverb,color=red}
- keyval.usage:n = general,
- keyval.code:n =
- {
- \tl_set:Nn \__codedesc_metacolor_tl: { \color{c__codedesc_keyval_color} }
- \tl_set:Nn \__codedesc_metashape_tl: { \__codedesc_slshape_tl: }
- },
- %
- key.usage:n = general,
- key.meta:n = { keyval } ,
- %
- keys.usage:n = general,
- keys.meta:n = { keyval } ,
- %
- value.usage:n = general,
- value.meta:n = { keyval } ,
- %
+ \colorlet{c__codedesc_syntax_color}{ blue!60!black }
+\__codedesc_group_define:nn {syntax} {color=c__codedesc_syntax_color}
+\__codedesc_object_define:nnn {syntax}{syntax}{}
- option.usage:n = general,
- option.code:n =
- {
- \tl_set:Nn \__codedesc_metacolor_tl: { \color{c__codedesc_options_color} }
- },
- %
+ \colorlet{c__codedesc_keyval_color}{ teal!40!black }
+\__codedesc_group_define:nn {keyval} {slshape,color=c__codedesc_keyval_color}
+\__codedesc_object_define:nnn {keyval}{keyval}{}
+\__codedesc_object_define:nnn {key}{keyval}{}
+\__codedesc_object_define:nnn {keys}{keyval}{}
+\__codedesc_object_define:nnn {value}{keyval}{}
- defaultval.usage:n = general,
- defaultval.code:n =
- {
- \tl_set:Nn \__codedesc_metacolor_tl: { \color{c__codedesc_defaultval_color} }
- },
- %
+ \colorlet{c__codedesc_options_color}{ green!30!black }
+\__codedesc_group_define:nn {option} {color=c__codedesc_options_color}
+\__codedesc_object_define:nnn {option}{option}{}
+
+ \colorlet{c__codedesc_defaultval_color}{ blue!60!black }
+\__codedesc_group_define:nn {defaultval} {color=c__codedesc_defaultval_color}
+\__codedesc_object_define:nnn {defaultval}{defaultval}{}
- env.usage:n = general,
- env.code:n =
+ \colorlet{c__codedesc_env_color}{ green!30!black }
+\__codedesc_group_define:nn {env} {slshape,color=c__codedesc_env_color}
+\__codedesc_object_define:nnn {env}{env}{}
+
+ \colorlet{c__codedesc_pkg_color}{ green!30!black }
+\__codedesc_group_define:nn {pkg} {slshape,color=c__codedesc_pkg_color}
+\__codedesc_object_define:nnn {pkg}{pkg}{}
+\__codedesc_object_define:nnn {pack}{pkg}{}
+
+
+
+
+\keys_define:nn { codedesc / base_fmt }
+{
+ meta .usage:n = general ,
+ meta .value_forbidden:n = true ,
+ meta .code:n = {
+ \tl_set:Nn \__codedesc_typeset_tl:n { \__codedesc_meta:n }
+ \tl_set:Nn \__codedesc_typeset_tl:o { \__codedesc_meta:o }
+ } ,
+
+ xmeta .usage:n = general ,
+ xmeta .value_forbidden:n = true ,
+ xmeta .code:n = {
+ \tl_set:Nn \__codedesc_typeset_tl:n { \__codedesc_meta*:n }
+ \tl_set:Nn \__codedesc_typeset_tl:o { \__codedesc_meta*:o }
+ } ,
+
+ verb .usage:n = general ,
+ verb .value_forbidden:n = true ,
+ verb .code:n = {
+ \tl_set:Nn \__codedesc_typeset_tl:n { \tl_to_str:n }
+ \tl_set:Nn \__codedesc_typeset_tl:o { \tl_to_str:o }
+ } ,
+
+ xverb .usage:n = general ,
+ xverb .value_forbidden:n = true ,
+ xverb .code:n = {
+ \tl_set:Nn \__codedesc_typeset_tl:n { \__codedesc_verb_nospc_typeset:n }
+ \tl_set:Nn \__codedesc_typeset_tl:o { \__codedesc_verb_nospc_typeset:o }
+ } ,
+
+ code .usage:n = general ,
+ code .value_forbidden:n = true ,
+ code .code:n = {
+ \tl_set:Nn \__codedesc_typeset_tl:n { \__codedesc_macro_typeset:n }
+ \tl_set:Nn \__codedesc_typeset_tl:o { \__codedesc_macro_typeset:o }
+ } ,
+
+ slshape .usage:n = general ,
+ slshape .value_forbidden:n = true ,
+ slshape .code:n = {
+ \tl_set:Nn \__codedesc_metashape_tl: { \slshape}
+ } ,
+
+ itshape .usage:n = general ,
+ itshape .value_forbidden:n = true ,
+ itshape .code:n = {
+ \tl_set:Nn \__codedesc_metashape_tl: { \itshape }
+ } ,
+
+ lbracket .usage:n = general ,
+ lbracket .value_required:n = true ,
+ lbracket .code:n = { \tl_set:Nn \__codedesc_Lbracket_tl { #1 } } ,
+
+ rbracket .usage:n = general ,
+ rbracket .value_required:n = true ,
+ rbracket .code:n = { \tl_set:Nn \__codedesc_Rbracket_tl { #1 } } ,
+
+ color .usage:n = general ,
+ color .value_required:n = true ,
+ color .code:n = {
+ \tl_set:Nn \__codedesc_metacolor_tl: { \color{#1} }
+ } ,
+}
+
+\keys_define:nn { codedesc / format }
+{
+ EXP.usage:n = general,
+ EXP.code:n =
{
- \tl_set:Nn \__codedesc_metacolor_tl: { \color{c__codedesc_env_color} }
- \tl_set:Nn \__codedesc_metashape_tl: { \__codedesc_slshape_tl: }
+ \tl_set:Nn \__codedesc_exp_tl { ~\hfill{\scriptsize\ding{72}} }
},
%
-
- pkg.usage:n = general,
- pkg.code:n =
+ rEXP.usage:n = general,
+ rEXP.code:n =
{
- \tl_set:Nn \__codedesc_metacolor_tl: { \color{c__codedesc_pkg_color} }
- \tl_set:Nn \__codedesc_metashape_tl: { \__codedesc_slshape_tl: }
+ \tl_set:Nn \__codedesc_exp_tl { ~\hfill{\scriptsize\ding{73}} }
},
%
- pack.usage:n = general,
- pack.meta:n = { pkg } ,
- %
-
sep.usage:n = general,
- sep.code:n =
+ sep.code:n =
{
\tl_set:Nn \__codedesc_lastsep_tl { ~#1~ }
},
@@ -396,19 +498,23 @@
unknown.usage:n = general,
unknown.code:n =
{
- \tl_set:Nn \__codedesc_metacolor_tl: { \color{c__codedesc_none_color} }
- },
-
+ \tl_set:Nn \__codedesc_metacolor_tl: { \color{c__codedesc_none_color} }
+ \msg_error:nnxx { codedesc } {object-err} {format}{\l_keys_key_str}
+ },
}
-\cs_new:Npn \__codedesc_metafmt_set:n #1
+\cs_new_protected:Npn \__codedesc_metafmt_set:n #1
{
\tl_set:Nn \__codedesc_rulecolor_tl: { \__codedesc_metacolor_tl: }
\tl_set:Nn \__codedesc_metashape_tl: { }
\tl_set:Nn \__codedesc_typeset_tl:n { }
- \tl_set:Nn \__codedesc_typeset_tl:o { \relax }
+ \tl_set:Nn \__codedesc_typeset_tl:o { }
+ \tl_set:Nn \__codedesc_Lbracket_tl { }
+ \tl_set:Nn \__codedesc_Rbracket_tl { }
\tl_set:Nn \__codedesc_sep_tl {,\ }
\tl_set:Nn \__codedesc_lastsep_tl {\ and\ }
+ \tl_set:Nn \__codedesc_exp_tl { }
+
\bool_set_false:N \l__codedesc_descnotes_bool
\bool_set_false:N \l__codedesc_descdate_new_bool
@@ -420,29 +526,16 @@
\cs_generate_variant:Nn \__codedesc_metafmt_set:n {o}
-\cs_new:Npn \__codedesc_metafmt:n #1
+\cs_new_protected:Npn \__codedesc_metafmt:n #1
{
- \tl_set:Nn \__codedesc_rulecolor_tl: { \__codedesc_metacolor_tl: }
- \tl_set:Nn \__codedesc_metashape_tl: { }
- \tl_set:Nn \__codedesc_typeset_tl:n { }
- \tl_set:Nn \__codedesc_typeset_tl:o { }
- \tl_set:Nn \__codedesc_sep_tl {,\ }
- \tl_set:Nn \__codedesc_lastsep_tl {\ and\ }
-
- \bool_set_false:N \l__codedesc_descnotes_bool
- \bool_set_false:N \l__codedesc_descdate_new_bool
- \bool_set_false:N \l__codedesc_descdate_update_bool
- \bool_set_false:N \l__codedesc_sidenote_bool
-
- \keys_set:nn {codedesc / format}{#1}
- %\tl_show:N \__codedesc_rulecolor_tl
+ \__codedesc_metafmt_set:n {#1}
\__codedesc_metafmt:
}
\cs_generate_variant:Nn \__codedesc_metafmt:n {o}
-\cs_new:Npn \__codedesc_metafmt:
+\cs_new_protected:Npn \__codedesc_metafmt:
{
\__codedesc_metacolor_tl:
\__codedesc_metasize_tl:
@@ -451,57 +544,12 @@
}
-\keys_define:nn { codedesc / delimiters }
-{
- oarg.usage:n = general,
- oarg.code:n =
- {
- \tl_set:Nn \__codedesc_open_delimit_tl {[}
- \tl_set:Nn \__codedesc_close_delimit_tl {]}
- },
- marg.usage:n = general,
- marg.code:n =
- {
- \tl_set:Nn \__codedesc_open_delimit_tl {\{}
- \tl_set:Nn \__codedesc_close_delimit_tl {\}}
- },
- parg.usage:n = general,
- parg.code:n =
- {
- \tl_set:Nn \__codedesc_open_delimit_tl {(}
- \tl_set:Nn \__codedesc_close_delimit_tl {)}
- },
- %
- xarg.usage:n = general,
- xarg.code:n =
- {
- \tl_set:Nn \__codedesc_open_delimit_tl {<}
- \tl_set:Nn \__codedesc_close_delimit_tl {>}
- },
- %
- meta.usage:n = general,
- meta.code:n =
- {
- \tl_set:Nn \__codedesc_open_delimit_tl {}
- \tl_set:Nn \__codedesc_close_delimit_tl {}
- },
- %
- unknown.usage:n = general,
- unknown.code:n =
- {
-% \tl_set:Nn \__codedesc_open_delimit_tl {!}
-% \tl_set:Nn \__codedesc_close_delimit_tl {!}
- },
- %
-}
-
-
%%%%%%%
%%%
%%% < meta >
%%%
%%%%%%%
-\cs_new:Npn \__codedesc_meta:n #1
+\cs_new_protected:Npn \__codedesc_meta:n #1
{
\ensuremath\langle #1 \ensuremath\rangle
}
@@ -513,7 +561,7 @@
%%% < meta > 'detokenized'
%%%
%%%%%%%
-\cs_new:Npn \__codedesc_meta*:n #1
+\cs_new_protected:Npn \__codedesc_meta*:n #1
{
\ensuremath\langle \tl_to_str:n {#1} \ensuremath\rangle
}
@@ -523,7 +571,7 @@
-\cs_new:Npn \__codedesc_macro_typeset:n #1
+\cs_new_protected:Npn \__codedesc_macro_typeset:n #1
{
\tl_set:Ne \l_tmpb_tl {\tl_to_str:n{#1}}
\regex_replace_all:nnN {\ }{} \l_tmpb_tl
@@ -536,11 +584,18 @@
\cs_generate_variant:Nn \__codedesc_macro_typeset:n {o}
+\cs_new_protected:Npn \__codedesc_verb_nospc_typeset:n #1
+ {
+ \tl_set:Ne \l_tmpb_tl {\tl_to_str:n{#1}}
+ \regex_replace_all:nnN {\ }{} \l_tmpb_tl
+ \l_tmpb_tl
+ }
+\cs_generate_variant:Nn \__codedesc_verb_nospc_typeset:n {o}
-\cs_new:Npn \__codedesc_list_typeset:nnn #1#2#3
+\cs_new_protected:Npn \__codedesc_list_typeset:nnn #1#2#3
{
\seq_set_from_clist:Nn \l_tmpa_seq {#1}
\bool_set:Nn \l__codedesc_bool {\seq_if_empty_p:N \l_tmpa_seq}
@@ -578,7 +633,7 @@
-\cs_new:Npn \__codedesc_args_typeset:nnnn #1#2#3#4
+\cs_new_protected:Npn \__codedesc_args_typeset:nnnn #1#2#3#4
{
\seq_set_from_clist:Nn \l_tmpa_seq {#3}
\group_begin:
@@ -586,6 +641,13 @@
\seq_map_inline:Nn \l_tmpa_seq {~\!\!#2 \__codedesc_meta:n {##1} #4 }
\group_end:
}
+
+
+%%%%%%%%%%%%%%%%%%%
+%%%%
+%%%% Variables used in the codedescibe environment
+%%%%
+%%%%%%%%%%%%%%%%%%%
\bool_new:N \l__codedesc_longblock_bool
@@ -596,6 +658,22 @@
\dim_new:N \l__codedesc_syntax_wd_dim
\dim_new:N \l__codedesc_margin_wd_dim
+\bool_new:N \l__codedesc_descnotes_bool
+\bool_new:N \l__codedesc_descdate_new_bool
+\tl_new:N \l__codedesc_descdate_new_tl
+\bool_new:N \l__codedesc_descdate_update_bool
+\tl_new:N \l__codedesc_descdate_update_tl
+\bool_new:N \l__codedesc_sidenote_bool
+\tl_new:N \l__codedesc_sidenote_tl
+
+
+\coffin_new:N \__codedesc_describe_coffin
+\dim_new:N \__codedesc_describelabel_wd_dim
+\dim_new:N \__codedesc_describelist_wd_dim
+\tl_new:N \__codedesc_join_tl:
+\tl_new:N \__codedesc_ragged_tl:
+
+\dim_new:N \__codedesc_paradvance_dim
%%%%%%%%%%%%%%%%%%%
@@ -604,10 +682,26 @@
%%%%
%%%%%%%%%%%%%%%%%%%
-
+
+\NewDocumentCommand \defgroupfmt {mm}
+ {
+ \__codedesc_group_define:nn {#1} {#2}
+ }
+
+\NewDocumentCommand \defobjectfmt {mmm}
+ {
+ \__codedesc_object_define:nn {#1} {#2} {#3}
+ }
\NewDocumentEnvironment {codedescribe}{O{code}m}
{
+ \mode_if_horizontal:TF
+ {
+ \dim_set:Nn \__codedesc_paradvance_dim {\baselineskip}
+ }
+ {
+ \dim_set:Nn \__codedesc_paradvance_dim {0pt}
+ }
\seq_set_from_clist:Nn \l_tmpa_seq {#2}
\__codedesc_set_textcolwidth:
\hcoffin_set:Nn \l__codedesc_margin_coffin
@@ -616,21 +710,23 @@
\begin{tabular}{@{} l @{} }
\__codedesc_hline:nnnn {\__codedesc_rulecolor_tl:}{0.5ex}{2}{0.25ex}
- \seq_map_inline:Nn \l_tmpa_seq { \__codedesc_typeset_tl:n {##1} \\ }
+ \seq_map_inline:Nn \l_tmpa_seq { \__codedesc_typeset_tl:n {##1} \__codedesc_exp_tl \\ }
\bool_if:nTF {\l__codedesc_descnotes_bool}
{
- \\[-2.5ex]
- \__codedesc_hline:nnnn {\color{black}}{0.5ex}{0.25}{0.25ex}
-
- \bool_if:nT {\l__codedesc_descdate_new_bool}
- {\scriptsize\color{black}new:~ \l__codedesc_descdate_new_tl\\}
- \bool_if:nT {\l__codedesc_descdate_update_bool}
- {\scriptsize\color{black}update:~ \l__codedesc_descdate_update_tl\\}
- \bool_if:nT {\l__codedesc_sidenote_bool}
- {\scriptsize\color{black}NB:~ \l__codedesc_sidenote_tl\\}
+ \\[-2.5ex]
+ \__codedesc_hline:nnnn {\color{black}}{0.5ex}{0.25}{0.25ex}
+
+ \bool_if:nT {\l__codedesc_descdate_new_bool}
+ {\scriptsize\color{black}new:~ \l__codedesc_descdate_new_tl\\[-1ex]}
+ \bool_if:nT {\l__codedesc_descdate_update_bool}
+ {\scriptsize\color{black}update:~ \l__codedesc_descdate_update_tl\\[-1ex]}
+ \bool_if:nT {\l__codedesc_sidenote_bool}
+ {\scriptsize\color{black}NB:~ \l__codedesc_sidenote_tl\\[-1ex]}
+ \\[-1.5ex]
+ }
+ {
+ \\[-2.5ex]
}
- {}
- \\[-2.5ex]
\__codedesc_hline:nnnn {\__codedesc_rulecolor_tl:}{-0.25ex}{2}{1ex}
\end{tabular}
}
@@ -656,17 +752,18 @@
\bool_if:NTF \l__codedesc_longblock_bool
{ % __describeblock starting at marginpar
\coffin_join:NnnNnnnn \l__codedesc_syntax_coffin {l}{t} \l__codedesc_margin_coffin {r}{t} {-\marginparsep}{0pt}
- \coffin_join:NnnNnnnn \l__codedesc_syntax_coffin {l}{b} \l__codedesc_text_coffin {l}{t} {\marginparwidth+\marginparsep}{0pt}%{-0.25\baselineskip}
+ \coffin_join:NnnNnnnn \l__codedesc_syntax_coffin {l}{b} \l__codedesc_text_coffin {l}{t} {\marginparwidth+\marginparsep}{\baselineskip}
\par\noindent
- \coffin_typeset:Nnnnn \l__codedesc_syntax_coffin {l}{t} {-\marginparwidth-\marginparsep}{0pt}
+ \coffin_typeset:Nnnnn \l__codedesc_syntax_coffin {l}{t} {-\marginparwidth-\marginparsep}{\__codedesc_paradvance_dim}
}
{ % __describeblock at marginpar
\coffin_attach:NnnNnnnn \l__codedesc_syntax_coffin {l}{t} \l__codedesc_margin_coffin {r}{t} {-\marginparsep}{0pt}
- \coffin_join:NnnNnnnn \l__codedesc_syntax_coffin {l}{b} \l__codedesc_text_coffin {l}{t} {0pt}{0pt}%{-0.25\baselineskip}
+ \coffin_join:NnnNnnnn \l__codedesc_syntax_coffin {l}{b} \l__codedesc_text_coffin {l}{t} {0pt}{\baselineskip}
\par\noindent
- \coffin_typeset:Nnnnn \l__codedesc_syntax_coffin {l}{t} {0pt}{0pt}
+ \coffin_typeset:Nnnnn \l__codedesc_syntax_coffin {l}{t} {0pt}{\__codedesc_paradvance_dim}
}
- \\[0.25\baselineskip]
+ \\[0.5\baselineskip]
+ %\\[\__codedesc_paradvance_dim]%[-0.5\baselineskip]
}
@@ -691,20 +788,13 @@
\vcoffin_gset_end:
}
-
-\coffin_new:N \__codedesc_describe_coffin
-\dim_new:N \__codedesc_describelabel_wd_dim
-\dim_new:N \__codedesc_describelist_wd_dim
-\tl_new:N \__codedesc_join_tl:
-\tl_new:N \__codedesc_ragged_tl:
-
\NewDocumentEnvironment{describelist}{O{20mm}m}
{
%\vspace*{-1.5ex}
\mode_if_horizontal:TF
- {\vspace*{-0.75ex}}
+ {\\[-0.5\baselineskip]}
{}
\__codedesc_set_textcolwidth:
\coffin_clear:N \__codedesc_describe_coffin
@@ -722,7 +812,7 @@
{
%\vspace*{-1.5ex}
\mode_if_horizontal:TF
- {\vspace*{-1ex}}
+ {\\[-0.5\baselineskip]}%{\vspace*{-1ex}}
{}
\__codedesc_set_textcolwidth:
\coffin_clear:N \__codedesc_describe_coffin
@@ -737,34 +827,31 @@
}
\NewDocumentCommand \describe {mm}
- {
-
+ {
\hcoffin_set:Nn \l_tmpb_coffin
{
\__codedesc_metafmt:o { \__codedesc_listkind_tl }
\__codedesc_ragged_tl: \__codedesc_typeset_tl:n {#1}
- }
+ }
+ \dim_compare:nNnTF {\coffin_wd:N \l_tmpb_coffin} > {\__codedesc_describelabel_wd_dim}
+ {
+ \vcoffin_set:Nnn \l_tmpa_coffin
+ { \__codedesc_describelabel_wd_dim }
+ { ~\ ~ }
+ \coffin_attach:NnnNnnnn
+ \l_tmpa_coffin {r}{t}
+ \l_tmpb_coffin {r}{t}
+ {0pt}{0pt}
- \dim_compare:nNnTF {\coffin_wd:N \l_tmpb_coffin} > {\__codedesc_describelabel_wd_dim}
- {
- \vcoffin_set:Nnn \l_tmpa_coffin
- { \__codedesc_describelabel_wd_dim }
- { ~\ ~ }
- \coffin_attach:NnnNnnnn
- \l_tmpa_coffin {r}{t}
- \l_tmpb_coffin {r}{t}
- {0pt}{0pt}
-
- }
- {
- \vcoffin_set:Nnn \l_tmpa_coffin
- { \__codedesc_describelabel_wd_dim }
- {
- \__codedesc_metafmt:o { \__codedesc_listkind_tl }
- \noindent\__codedesc_ragged_tl: \__codedesc_typeset_tl:n {#1}
- }
- }
-
+ }
+ {
+ \vcoffin_set:Nnn \l_tmpa_coffin
+ { \__codedesc_describelabel_wd_dim }
+ {
+ \__codedesc_metafmt:o { \__codedesc_listkind_tl }
+ \noindent\__codedesc_ragged_tl: \__codedesc_typeset_tl:n {#1}
+ }
+ }
\vcoffin_set:Nnn \l_tmpb_coffin
{ \__codedesc_describelist_wd_dim }
{
@@ -772,26 +859,21 @@
\begin{minipage}[t]{ \__codedesc_describelist_wd_dim }
#2
\end{minipage}
- }
-
-
+ }
\__codedesc_join_tl:
\l_tmpb_coffin {l}{t}
\l_tmpa_coffin {r}{t}
{-\marginparsep}{0pt}
-
\mode_if_horizontal:TF
{
- \\
-% \tl_set:Nn \l_tmpa_tl {~\ ~}
- }
- {
-% \tl_set:Nn \l_tmpa_tl {~\ ~}
+ \\[-\baselineskip]
}
- \noindent%\vspace*{-1ex}
+ { }
+
+ \noindent
\coffin_typeset:Nnnnn
\l_tmpb_coffin {l}{t} {0pt}{0pt}
- \\[-0.5\baselineskip]
+ \\
}
@@ -804,8 +886,11 @@
\NewDocumentCommand \typesetargs {O{meta}m}
{
- \keys_set:nn {codedesc / delimiters}{#1}
- \__codedesc_args_typeset:nnnn {#1} \__codedesc_open_delimit_tl {#2} \__codedesc_close_delimit_tl
+% \keys_set:nn {codedesc / delimiters}{#1}
+ \group_begin:
+ \__codedesc_metafmt:n {#1}
+ \__codedesc_args_typeset:nnnn {#1} {\__codedesc_Lbracket_tl} {#2} {\__codedesc_Rbracket_tl}
+ \group_end:
}
\cs_new_eq:NN \tsargs \typesetargs
@@ -847,7 +932,6 @@
\NewDocumentEnvironment {tsremark} {O{Note:}}
{
-% \par\vspace*{0.5\baselineskip}
\mode_if_horizontal:TF
{\par\vspace*{0.25\baselineskip}}%\vspace*{-1.5ex}}
{\vspace*{0.75\baselineskip}}
@@ -861,7 +945,7 @@
{
\end{minipage}
\group_end:
- \par
+ \\[0.5\baselineskip]
}
@@ -870,20 +954,20 @@
\keys_define:nn { codedesc / title }
{
title .usage:n = general ,
+ title .value_required:n = true ,
title .tl_set:N = \l__codedesc_title_tl ,
author .usage:n = general ,
+ author .value_required:n = true ,
author .tl_set:N = \l__codedesc_author_tl ,
date .usage:n = general ,
+ date .value_required:n = true ,
date .tl_set:N = \l__codedesc_descdate_tl ,
-
- abstract .usage:n = general ,
- abstract .tl_set:N = \l__codedesc_abstract_tl ,
}
-\cs_new:Npn \__codedesc_make_title: {%
+\cs_new_protected:Npn \__codedesc_make_title: {%
\newpage
\null
\vskip 2em%
@@ -904,6 +988,29 @@
}
+
+\NewDocumentCommand \typesetdate {}
+ {
+ \int_case:nn {\month}
+ {
+ {1}{January}
+ {2}{February}
+ {3}{March}
+ {4}{April}
+ {5}{May}
+ {6}{June}
+ {7}{July}
+ {8}{August}
+ {9}{September}
+ {10}{October}
+ {11}{November}
+ {12}{December}
+ }
+ \use:n {~} \int_to_arabic:n {\year}
+ }
+
+\cs_new_eq:NN \tsdate \typesetdate
+
%%%ARGH !!!!!
%%% 'adapted' from 'abstract.cls'
%%%
diff --git a/macros/latex/contrib/codedescribe/latex/codelisting.sty b/macros/latex/contrib/codedescribe/latex/codelisting.sty
index ede0132e3e..c02633d912 100644
--- a/macros/latex/contrib/codedescribe/latex/codelisting.sty
+++ b/macros/latex/contrib/codedescribe/latex/codelisting.sty
@@ -12,43 +12,51 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version 1.0 (2023/05/11)
+%% This is version 1.1 (2023/05/16)
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/codedescribe
%%
%%%==============================================================================
\NeedsTeXFormat{LaTeX2e}[2022/06/01]
-
\RequirePackage{ expl3 }
\ProvidesExplPackage
{codelisting}
- {2023/05/11}
- {1.0}
+ {2023/05/16}
+ {1.1}
{LaTeX Code Listing}
-\prop_if_exist:NTF \g__codedesc_pkg_prop
- {}
- { \prop_new:N \g__codedesc_pkg_prop }
-
-\prop_put_from_keyval:Nn \g__codedesc_pkg_prop
+%%%%%%%
+%%%
+%%% Just an attempt of having my packages info in a regular way
+%%% Idea being: { <pck-name> / pkg info } for each and all.
+%%%
+%%%%%%%
+\keys_define:nn { codelisting / pkg info}
{
- codelist . name = codelisting ,
- codelist . prefix = codelist ,
- codelist . date = 2023/05/11 ,
- codelist . version = 1.0 ,
- codelist . description = LaTeX Code Listing
+ name .code:n = codelisting ,
+ prefix .code:n = codelist ,
+ date .code:n = 2023/05/16 ,
+ version .code:n = 1.1 ,
+ description .code:n = \LaTeX~Code~Listing
}
-
-\cs_gset:Npn \__codedesc_pkg_info:nn #1#2
+\cs_if_exist:NF \__codedesc_pkg_info:nn
{
- \prop_item:Nn \g__codedesc_pkg_prop {#1.#2}
+ \cs_new_protected:Npn \__codedesc_pkg_info:nn #1#2
+ { \keys_set:nn {#1 / pkg info}{#2} }
}
+\cs_if_exist:NF \PkgInfo
+ { \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} } }
+%%%%%%%
+%%% End of cut-n-paste
+%%%%%%%
+
-\RequirePackage{listings,scontents}
+\RequirePackage{listings,scontents}
+
\dim_new:N \l__codelist_demo_parindent_dim
\dim_new:N \l__codelist_org_parindent_dim
@@ -277,6 +285,9 @@
}
+%%%%%%
+%%% This one can't be proteced
+%%%%%%
\cs_new:Npn \__codelist_set_options:n #1 {\keys_set:nn {CodeListingOptions}{#1}}
\__codelist_set_options:n{default}
@@ -461,6 +472,9 @@
\cs_undefine:c{endverbatimsc}
\lstnewenvironment{verbatimsc}{\lstset{style=codestyle}}{}
+%%%%%%
+%%% This one can't be proteced
+%%%%%%
\cs_new:Npn \__codelist_set_verbsc:n #1
{
\cs_undefine:c{verbatimsc}
diff --git a/macros/latex/contrib/l3kernel/CHANGELOG.md b/macros/latex/contrib/l3kernel/CHANGELOG.md
index e973577cff..9b2db54278 100644
--- a/macros/latex/contrib/l3kernel/CHANGELOG.md
+++ b/macros/latex/contrib/l3kernel/CHANGELOG.md
@@ -7,6 +7,15 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2023-05-15]
+
+### Changed
+- Require `\expanded` and 'pdfTeX extension' primitives,
+ and thus TeX distributions from mid-2019 onward
+
+### Fixed
+- Treatment of trailing `/` in `\input@path`
+
## [2023-05-11]
### Added
@@ -1398,7 +1407,8 @@ this project uses date-based 'snapshot' version identifiers.
- Step functions have been added for dim variables,
e.g. `\dim_step_inline:nnnn`
-[Unreleased]: https://github.com/latex3/latex3/compare/2023-05-11...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2023-05-15...HEAD
+[2023-05-15]: https://github.com/latex3/latex3/compare/2023-05-11...2023-05-15
[2023-05-11]: https://github.com/latex3/latex3/compare/2023-05-05...2023-05-11
[2023-05-05]: https://github.com/latex3/latex3/compare/2023-04-20...2023-05-05
[2023-04-20]: https://github.com/latex3/latex3/compare/2023-04-19...2023-04-20
diff --git a/macros/latex/contrib/l3kernel/README.md b/macros/latex/contrib/l3kernel/README.md
index 14a42feda5..44bb66a2f7 100644
--- a/macros/latex/contrib/l3kernel/README.md
+++ b/macros/latex/contrib/l3kernel/README.md
@@ -1,7 +1,7 @@
LaTeX3 Programming Conventions
==============================
-Release 2023-05-11
+Release 2023-05-15
Overview
--------
diff --git a/macros/latex/contrib/l3kernel/expl3.dtx b/macros/latex/contrib/l3kernel/expl3.dtx
index 3b86288ffa..cdd27753ee 100644
--- a/macros/latex/contrib/l3kernel/expl3.dtx
+++ b/macros/latex/contrib/l3kernel/expl3.dtx
@@ -24,7 +24,7 @@
%
%<*driver|generic|package|2ekernel>
%</driver|generic|package|2ekernel>
-\def\ExplFileDate{2023-05-11}%
+\def\ExplFileDate{2023-05-15}%
%<*driver>
\documentclass[full]{l3doc}
\usepackage{graphicx}
@@ -51,7 +51,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/expl3.pdf b/macros/latex/contrib/l3kernel/expl3.pdf
index 0a40032cef..ae93ec6850 100644
--- a/macros/latex/contrib/l3kernel/expl3.pdf
+++ b/macros/latex/contrib/l3kernel/expl3.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/interface3.pdf b/macros/latex/contrib/l3kernel/interface3.pdf
index f1d727899c..84f53f8947 100644
--- a/macros/latex/contrib/l3kernel/interface3.pdf
+++ b/macros/latex/contrib/l3kernel/interface3.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/interface3.tex b/macros/latex/contrib/l3kernel/interface3.tex
index 5d53fcc74b..7dea564c3f 100644
--- a/macros/latex/contrib/l3kernel/interface3.tex
+++ b/macros/latex/contrib/l3kernel/interface3.tex
@@ -62,7 +62,7 @@ for those people who are interested.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2023-05-11}
+\date{Released 2023-05-15}
\pagenumbering{roman}
\maketitle
diff --git a/macros/latex/contrib/l3kernel/l3basics.dtx b/macros/latex/contrib/l3kernel/l3basics.dtx
index 2440b8ea32..fa09cc4806 100644
--- a/macros/latex/contrib/l3kernel/l3basics.dtx
+++ b/macros/latex/contrib/l3kernel/l3basics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
@@ -1631,12 +1631,8 @@
% \end{macrocode}
%
% \begin{macro}[EXP]{\use:e}
-% In non-\LuaTeX engines older than 2019, \cs{expanded} is emulated.
% \begin{macrocode}
\cs_set:Npn \use:e #1 { \tex_expanded:D {#1} }
-\tex_ifdefined:D \tex_expanded:D \tex_else:D
- \cs_set:Npn \use:e #1 { \exp_args:Ne \use:n {#1} }
-\tex_fi:D
% \end{macrocode}
% \end{macro}
%
diff --git a/macros/latex/contrib/l3kernel/l3bootstrap.dtx b/macros/latex/contrib/l3kernel/l3bootstrap.dtx
index 7c5e8f5e66..03749f402a 100644
--- a/macros/latex/contrib/l3kernel/l3bootstrap.dtx
+++ b/macros/latex/contrib/l3kernel/l3bootstrap.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
@@ -133,35 +133,6 @@
%<@@=kernel>
% \end{macrocode}
%
-% \subsection{\LuaTeX{}-specific code}
-%
-% Depending on the versions available, the \LaTeX{} format may not have
-% the raw |\Umath| primitive names available. We fix that globally:
-% it should cause no issues. Older \LuaTeX{} versions do not have
-% a pre-built table of the primitive names here so sort one out
-% ourselves. These end up globally-defined but at that is true with
-% a newer format anyway and as they all start |\U| this should be
-% reasonably safe.
-% \begin{macrocode}
-\begingroup
- \expandafter\ifx\csname directlua\endcsname\relax
- \else
- \directlua{%
- local i
- local t = { }
- for _,i in pairs(tex.extraprimitives("luatex")) do
- if string.match(i,"^U") then
- if not string.match(i,"^Uchar$") then %$
- table.insert(t,i)
- end
- end
- end
- tex.enableprimitives("", t)
- }%
- \fi
-\endgroup
-% \end{macrocode}
-%
% \subsection{The \tn{pdfstrcmp} primitive in \XeTeX{}}
%
% Only \pdfTeX{} has a primitive called \tn{pdfstrcmp}. The \XeTeX{}
@@ -222,39 +193,40 @@
%
% \subsection{Engine requirements}
%
-% The code currently requires \eTeX{} and functionality equivalent to
-% \tn{pdfstrcmp}, and also driver and Unicode character support. This is
-% available in a reasonably-wide range of engines.
-%
+% The code currently requires \eTeX{}, the set of \enquote{\pdfTeX{}
+% extensions} \emph{including} \tn{expanded}, and for Unicode engines the
+% ability to generate arbitrary character tokens by expansion. That is covered
+% by all supported engines since \TeX{} Live 2019, which we therefore use
+% as a baseline for engine and \LaTeX{} format support.
% For \LuaTeX, we require at least Lua 5.3 and the |token.set_lua| function.
-% This is available at least since \LuaTeX{} 1.10.
+% This is available at least since \LuaTeX{} 1.10, which again is the one
+% in \TeX{} Live 2019. (u)p\TeX{} only gained \tn{ifincsname} for \TeX{}
+% Live 2020, but at present that primitive is unused in \pkg{expl3} so for
+% the present it's not tested. If and when that changes, we will need to
+% revisit the code here.
% \begin{macrocode}
\begingroup
\def\next{\endgroup}%
\def\ShortText{Required primitives not found}%
\def\LongText%
{%
- The L3 programming layer requires the e-TeX primitives and additional
- \LineBreak functionality as described in the README file.
+ The L3 programming layer requires the e-TeX primitives and the
+ \LineBreak 'pdfTeX extensions' as described in the README file.
\LineBreak
These are available in the engines\LineBreak
- - pdfTeX v1.40.0\LineBreak
- - XeTeX v0.99992\LineBreak
+ - pdfTeX v1.40.20\LineBreak
+ - XeTeX v0.999991\LineBreak
- LuaTeX v1.10\LineBreak
- - e-(u)pTeX mid-2012\LineBreak
+ - e-(u)pTeX v3.8.2\LineBreak
- Prote (2021)\LineBreak
or later.\LineBreak
\LineBreak
}%
\ifnum0%
- \expandafter\ifx\csname expanded\endcsname\relax
- \expandafter\ifx\csname pdfstrcmp\endcsname\relax\else 1\fi
+ \expandafter\ifx\csname luatexversion\endcsname\relax
+ \expandafter\ifx\csname expanded\endcsname\relax\else 1\fi
\else
- \expandafter\ifx\csname luatexversion\endcsname\relax
- 1%
- \else
- \ifnum\luatexversion<110 \else 1\fi
- \fi
+ \ifnum\luatexversion<110 \else 1\fi
\fi
=0 %
\newlinechar`\^^J %
@@ -282,44 +254,6 @@ Type H <return> for immediate help}\def~{\errmessage{%
\next
% \end{macrocode}
%
-% \subsection{Extending allocators}
-%
-% The ability to extend \TeX{}'s allocation routine to allow for \eTeX{} has
-% been around since 1997 in the \pkg{etex} package.
-% Loading this support is delayed until here as we are now sure that the
-% \eTeX{} extensions and \tn{pdfstrcmp} or equivalent are available. Thus
-% there is no danger of an \enquote{uncontrolled} error if the engine
-% requirements are not met.
-%
-% For \LaTeXe{} we need to make sure that the extended pool is being used:
-% \pkg{expl3} uses a lot of registers. For formats from 2015 onward there is
-% nothing to do as this is automatic. For older formats, the \pkg{etex}
-% package needs to be loaded to do the job. In that case, some inserts are
-% reserved also as these have to be from the standard pool. Note that
-% \tn{reserveinserts} is \tn{outer} and so is accessed here by csname. In
-% earlier versions, loading \pkg{etex} was done directly and so
-% \tn{reserveinserts} appeared in the code: this then required a \tn{relax}
-% after \tn{RequirePackage} to prevent an error with \enquote{unsafe}
-% definitions as seen for example with \pkg{capoptions}. The optional loading
-% here is done using a group and \tn{ifx} test as we are not quite in the
-% position to have a single name for \tn{pdfstrcmp} just yet.
-% \begin{macrocode}
-\begingroup
- \def\@tempa{LaTeX2e}%
- \def\next{}%
- \ifx\fmtname\@tempa
- \expandafter\ifx\csname extrafloats\endcsname\relax
- \def\next
- {%
- \RequirePackage{etex}%
- \csname reserveinserts\endcsname{32}%
- }%
- \fi
- \fi
-\expandafter\endgroup
-\next
-% \end{macrocode}
-%
% \subsection{The \LaTeX3 code environment}
%
% The code environment is now set up.
diff --git a/macros/latex/contrib/l3kernel/l3box.dtx b/macros/latex/contrib/l3kernel/l3box.dtx
index 33b46834db..63cd2ac51a 100644
--- a/macros/latex/contrib/l3kernel/l3box.dtx
+++ b/macros/latex/contrib/l3kernel/l3box.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3candidates.dtx b/macros/latex/contrib/l3kernel/l3candidates.dtx
index 4bbdc84bbb..3f25a76e88 100644
--- a/macros/latex/contrib/l3kernel/l3candidates.dtx
+++ b/macros/latex/contrib/l3kernel/l3candidates.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3cctab.dtx b/macros/latex/contrib/l3kernel/l3cctab.dtx
index 18dbc69238..7d6c2ec300 100644
--- a/macros/latex/contrib/l3kernel/l3cctab.dtx
+++ b/macros/latex/contrib/l3kernel/l3cctab.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3clist.dtx b/macros/latex/contrib/l3kernel/l3clist.dtx
index ff4f9f7197..5abf32d8f0 100644
--- a/macros/latex/contrib/l3kernel/l3clist.dtx
+++ b/macros/latex/contrib/l3kernel/l3clist.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3coffins.dtx b/macros/latex/contrib/l3kernel/l3coffins.dtx
index 66f601180d..759672403c 100644
--- a/macros/latex/contrib/l3kernel/l3coffins.dtx
+++ b/macros/latex/contrib/l3kernel/l3coffins.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3color.dtx b/macros/latex/contrib/l3kernel/l3color.dtx
index e931d0b871..047467075c 100644
--- a/macros/latex/contrib/l3kernel/l3color.dtx
+++ b/macros/latex/contrib/l3kernel/l3color.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3debug.dtx b/macros/latex/contrib/l3kernel/l3debug.dtx
index c0475ede4e..79039b4773 100644
--- a/macros/latex/contrib/l3kernel/l3debug.dtx
+++ b/macros/latex/contrib/l3kernel/l3debug.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3deprecation.dtx b/macros/latex/contrib/l3kernel/l3deprecation.dtx
index c1fe0db03a..f9c788a097 100644
--- a/macros/latex/contrib/l3kernel/l3deprecation.dtx
+++ b/macros/latex/contrib/l3kernel/l3deprecation.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3doc.dtx b/macros/latex/contrib/l3kernel/l3doc.dtx
index 6056a215d0..039ee830a8 100644
--- a/macros/latex/contrib/l3kernel/l3doc.dtx
+++ b/macros/latex/contrib/l3kernel/l3doc.dtx
@@ -85,7 +85,7 @@ and all files in that bundle must be distributed together.
% require you to do updates, if the class changes.}}
%
% \author{\Team}
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
% \maketitle
% \tableofcontents
%
diff --git a/macros/latex/contrib/l3kernel/l3doc.pdf b/macros/latex/contrib/l3kernel/l3doc.pdf
index e4f681f131..a83c0c03df 100644
--- a/macros/latex/contrib/l3kernel/l3doc.pdf
+++ b/macros/latex/contrib/l3kernel/l3doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3docstrip.dtx b/macros/latex/contrib/l3kernel/l3docstrip.dtx
index e58953c8bb..deff694c40 100644
--- a/macros/latex/contrib/l3kernel/l3docstrip.dtx
+++ b/macros/latex/contrib/l3kernel/l3docstrip.dtx
@@ -63,7 +63,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3docstrip.pdf b/macros/latex/contrib/l3kernel/l3docstrip.pdf
index 194e4f8e35..1f63b51479 100644
--- a/macros/latex/contrib/l3kernel/l3docstrip.pdf
+++ b/macros/latex/contrib/l3kernel/l3docstrip.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3expan.dtx b/macros/latex/contrib/l3kernel/l3expan.dtx
index 8e6e06deeb..28ac1c8123 100644
--- a/macros/latex/contrib/l3kernel/l3expan.dtx
+++ b/macros/latex/contrib/l3kernel/l3expan.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
@@ -1043,18 +1043,10 @@
% \end{macro}
%
% \begin{macro}[EXP]{\::e}
-% With the \tn{expanded} primitive available, just expand. Otherwise
-% defer to \cs{exp_args:Ne} implemented later.
+% With the \tn{expanded} primitive available, just expand.
% \begin{macrocode}
-\cs_if_exist:NTF \tex_expanded:D
- {
- \cs_new:Npn \::e #1 \::: #2#3
- { \tex_expanded:D { \exp_not:n { #1 \::: } { \exp_not:n {#2} {#3} } } }
- }
- {
- \cs_new:Npn \::e #1 \::: #2#3
- { \exp_args:Ne \@@_arg_next:nnn {#3} {#1} {#2} }
- }
+\cs_new:Npn \::e #1 \::: #2#3
+ { \tex_expanded:D { \exp_not:n { #1 \::: } { \exp_not:n {#2} {#3} } } }
% \end{macrocode}
% \end{macro}
%
@@ -1242,21 +1234,10 @@
% \end{macro}
%
% \begin{macro}[EXP]{\exp_args:Ne}
-% When the \tn{expanded} primitive is available, use it. Otherwise
-% use \cs{@@_e:nn}, defined later, to fully expand tokens.
+% When the \tn{expanded} primitive is available, use it.
% \begin{macrocode}
-\cs_if_exist:NTF \tex_expanded:D
- {
- \cs_new:Npn \exp_args:Ne #1#2
- { \exp_after:wN #1 \tex_expanded:D { {#2} } }
- }
- {
- \cs_new:Npn \exp_args:Ne #1#2
- {
- \exp_after:wN #1 \exp_after:wN
- { \exp:w \@@_e:nn {#2} { } }
- }
- }
+\cs_new:Npn \exp_args:Ne #1#2
+ { \exp_after:wN #1 \tex_expanded:D { {#2} } }
% \end{macrocode}
% \end{macro}
%
@@ -1300,16 +1281,12 @@
\exp_after:wN #2
\exp_after:wN { \exp:w \@@_eval_register:c {#3} }
}
-\cs_if_exist:NTF \tex_expanded:D
+\cs_new:Npn \exp_args:NNe #1#2#3
{
- \cs_new:Npn \exp_args:NNe #1#2#3
- {
- \exp_after:wN #1
- \exp_after:wN #2
- \tex_expanded:D { {#3} }
- }
+ \exp_after:wN #1
+ \exp_after:wN #2
+ \tex_expanded:D { {#3} }
}
- { \cs_new:Npn \exp_args:NNe { \::N \::e \::: } }
\cs_new:Npn \exp_args:NNf #1#2#3
{
\exp_after:wN #1
@@ -1428,15 +1405,8 @@
\exp_after:wN \@@_arg_last_unbraced:nn
\exp_after:wN { \exp:w \@@_eval_register:c {#2} } {#1}
}
-\cs_if_exist:NTF \tex_expanded:D
- {
- \cs_new:Npn \::e_unbraced \::: #1#2
- { \tex_expanded:D { \exp_not:n {#1} #2 } }
- }
- {
- \cs_new:Npn \::e_unbraced \::: #1#2
- { \exp:w \@@_e:nn {#2} {#1} }
- }
+\cs_new:Npn \::e_unbraced \::: #1#2
+ { \tex_expanded:D { \exp_not:n {#1} #2 } }
\cs_new:Npn \::f_unbraced \::: #1#2
{
\exp_after:wN \@@_arg_last_unbraced:nn
@@ -1487,12 +1457,8 @@
{ \exp_after:wN #1 \exp:w \@@_eval_register:N #2 }
\cs_new:Npn \exp_last_unbraced:Nv #1#2
{ \exp_after:wN #1 \exp:w \@@_eval_register:c {#2} }
-\cs_if_exist:NTF \tex_expanded:D
- {
- \cs_new:Npn \exp_last_unbraced:Ne #1#2
- { \exp_after:wN #1 \tex_expanded:D {#2} }
- }
- { \cs_new:Npn \exp_last_unbraced:Ne { \::e_unbraced \::: } }
+\cs_new:Npn \exp_last_unbraced:Ne #1#2
+ { \exp_after:wN #1 \tex_expanded:D {#2} }
\cs_new:Npn \exp_last_unbraced:Nf #1#2
{ \exp_after:wN #1 \exp:w \exp_end_continue_f:w #2 }
\cs_new:Npn \exp_last_unbraced:NNo #1#2#3
@@ -1591,15 +1557,8 @@
% \begin{macrocode}
\cs_new:Npn \exp_not:c #1 { \exp_after:wN \exp_not:N \cs:w #1 \cs_end: }
\cs_new:Npn \exp_not:o #1 { \__kernel_exp_not:w \exp_after:wN {#1} }
-\cs_if_exist:NTF \tex_expanded:D
- {
- \cs_new:Npn \exp_not:e #1
- { \__kernel_exp_not:w \tex_expanded:D { {#1} } }
- }
- {
- \cs_new:Npn \exp_not:e
- { \__kernel_exp_not:w \exp_args:Ne \prg_do_nothing: }
- }
+\cs_new:Npn \exp_not:e #1
+ { \__kernel_exp_not:w \tex_expanded:D { {#1} } }
\cs_new:Npn \exp_not:f #1
{ \__kernel_exp_not:w \exp_after:wN { \exp:w \exp_end_continue_f:w #1 } }
\cs_new:Npn \exp_not:V #1
@@ -1685,475 +1644,6 @@
% \end{macro}
% \end{macro}
%
-%
-% \subsection{Emulating \texttt{e}-type expansion}
-%
-% When the \tn{expanded} primitive is available it is used to implement
-% \texttt{e}-type expansion; otherwise we emulate it.
-%
-% \begin{macrocode}
-\cs_if_exist:NF \tex_expanded:D
- {
-% \end{macrocode}
-%
-% \begin{macro}[EXP]{\@@_e:nn, \@@_e_end:nn}
-% Repeatedly expand tokens, keeping track of fully-expanded tokens in
-% the second argument to \cs{@@_e:nn}; this function eventually
-% calls \cs{@@_e_end:nn} to leave \cs{exp_end:} in the input
-% stream, followed by the result of the expansion. There are many
-% special cases: spaces, brace groups, \tn{noexpand}, \tn{unexpanded},
-% \tn{the}, \tn{primitive}.
-% While we use brace tricks \cs{if_false:} |{| \cs{fi:}, the expansion
-% of this function is always triggered by \cs{exp:w} so brace balance
-% is eventually restored after that is hit with a single step of
-% expansion. Otherwise we could not nest \texttt{e}-type expansions
-% within each other.
-% \begin{macrocode}
- \cs_new:Npn \@@_e:nn #1
- {
- \if_false: { \fi:
- \tl_if_head_is_N_type:nTF {#1}
- { \@@_e:N }
- {
- \tl_if_head_is_group:nTF {#1}
- { \@@_e_group:n }
- {
- \tl_if_empty:nTF {#1}
- { \exp_after:wN \@@_e_end:nn }
- { \exp_after:wN \@@_e_space:nn }
- \exp_after:wN { \if_false: } \fi:
- }
- }
- #1
- }
- }
- \cs_new:Npn \@@_e_end:nn #1#2 { \exp_end: #2 }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}[EXP]{\@@_e_space:nn}
-% For an explicit space character, remove it by \texttt{f}-expansion
-% and put it in the (future) output.
-% \begin{macrocode}
- \cs_new:Npn \@@_e_space:nn #1#2
- { \exp_args:Nf \@@_e:nn {#1} { #2 ~ } }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}[EXP]{\@@_e_group:n, \@@_e_put:nn, \@@_e_put:nnn}
-% For a group, expand its contents, wrap it in two pairs of braces,
-% and call \cs{@@_e_put:nn}. This function places the first item (the
-% double-brace wrapped result) into the output. Importantly,
-% \cs{tl_head:n} works even if the input contains quarks.
-% \begin{macrocode}
- \cs_new:Npn \@@_e_group:n #1
- {
- \exp_after:wN \@@_e_put:nn
- \exp_after:wN { \exp_after:wN { \exp_after:wN {
- \exp:w \if_false: } \fi: \@@_e:nn {#1} { } } }
- }
- \cs_new:Npn \@@_e_put:nn #1
- {
- \exp_args:NNo \exp_args:No \@@_e_put:nnn
- { \tl_head:n {#1} } {#1}
- }
- \cs_new:Npn \@@_e_put:nnn #1#2#3
- { \exp_args:No \@@_e:nn { \use_none:n #2 } { #3 #1 } }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}[EXP]
-% {\@@_e:N, \@@_e:Nnn, \@@_e_protected:Nnn, \@@_e_expandable:Nnn}
-% For an \texttt{N}-type token, call \cs{@@_e:Nnn} with arguments the
-% \meta{first token}, the remaining tokens to expand and what's
-% already been expanded. If the \meta{first token} is non-expandable,
-% including \tn{protected} (\tn{long} or not) macros, it is put in the
-% result by \cs{@@_e_protected:Nnn}. The four special primitives
-% \tn{unexpanded}, \tn{noexpand}, \tn{the}, \tn{primitive} are
-% detected; otherwise the token is expanded by
-% \cs{@@_e_expandable:Nnn}.
-% \begin{macrocode}
- \cs_new:Npn \@@_e:N #1
- {
- \exp_after:wN \@@_e:Nnn
- \exp_after:wN #1
- \exp_after:wN { \if_false: } \fi:
- }
- \cs_new:Npn \@@_e:Nnn #1
- {
- \if_case:w
- \exp_after:wN \if_meaning:w \exp_not:N #1 #1 1 ~ \fi:
- \token_if_protected_macro:NT #1 { 1 ~ }
- \token_if_protected_long_macro:NT #1 { 1 ~ }
- \if_meaning:w \exp_not:n #1 2 ~ \fi:
- \if_meaning:w \exp_not:N #1 3 ~ \fi:
- \if_meaning:w \tex_the:D #1 4 ~ \fi:
- \if_meaning:w \tex_primitive:D #1 5 ~ \fi:
- 0 ~
- \exp_after:wN \@@_e_expandable:Nnn
- \or: \exp_after:wN \@@_e_protected:Nnn
- \or: \exp_after:wN \@@_e_unexpanded:Nnn
- \or: \exp_after:wN \@@_e_noexpand:Nnn
- \or: \exp_after:wN \@@_e_the:Nnn
- \or: \exp_after:wN \@@_e_primitive:Nnn
- \fi:
- #1
- }
- \cs_new:Npn \@@_e_protected:Nnn #1#2#3
- { \@@_e:nn {#2} { #3 #1 } }
- \cs_new:Npn \@@_e_expandable:Nnn #1#2
- { \exp_args:No \@@_e:nn { #1 #2 } }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}[EXP]
-% {
-% \@@_e_primitive:Nnn,
-% \@@_e_primitive_aux:NNw,
-% \@@_e_primitive_aux:NNnn,
-% \@@_e_primitive_other:NNnn,
-% \@@_e_primitive_other_aux:nNNnn
-% }
-% We don't try hard to make sensible error recovery since the error
-% recovery of \cs{tex_primitive:D} when followed by something else
-% than a primitive depends on the engine. The only valid case is when
-% what follows is \texttt{N}-type. Then distinguish special
-% primitives \tn{unexpanded}, \tn{noexpand}, \tn{the}, \tn{primitive}
-% from other primitives. In the \enquote{other} case, the only
-% reasonable way to check if the primitive that follows
-% \cs{tex_primitive:D} is expandable is to expand and compare the
-% before-expansion and after-expansion results. If they coincide then
-% probably the primitive is non-expandable and should be put in the
-% output together with \cs{tex_primitive:D} (one can cook up contrived
-% counter-examples where the true \tn{expanded} would have an infinite
-% loop), and otherwise one should continue expanding.
-% \begin{macrocode}
- \cs_new:Npn \@@_e_primitive:Nnn #1#2
- {
- \if_false: { \fi:
- \tl_if_head_is_N_type:nTF {#2}
- { \@@_e_primitive_aux:NNw #1 }
- {
- \msg_expandable_error:nnn { kernel } { e-type }
- { Missing~primitive~name }
- \@@_e_primitive_aux:NNw #1 \c_empty_tl
- }
- #2
- }
- }
- \cs_new:Npn \@@_e_primitive_aux:NNw #1#2
- {
- \exp_after:wN \@@_e_primitive_aux:NNnn
- \exp_after:wN #1
- \exp_after:wN #2
- \exp_after:wN { \if_false: } \fi:
- }
- \cs_new:Npn \@@_e_primitive_aux:NNnn #1#2
- {
- \exp_args:Nf \str_case_e:nnTF { \cs_to_str:N #2 }
- {
- { unexpanded } { \@@_e_unexpanded:Nnn \exp_not:n }
- { noexpand } { \@@_e_noexpand:Nnn \exp_not:N }
- { the } { \@@_e_the:Nnn \tex_the:D }
- {
- \sys_if_engine_xetex:T { pdf }
- \sys_if_engine_luatex:T { pdf }
- primitive
- } { \@@_e_primitive:Nnn #1 }
- }
- { \@@_e_primitive_other:NNnn #1 #2 }
- }
- \cs_new:Npn \@@_e_primitive_other:NNnn #1#2#3
- {
- \exp_args:No \@@_e_primitive_other_aux:nNNnn
- { #1 #2 #3 }
- #1 #2 {#3}
- }
- \cs_new:Npn \@@_e_primitive_other_aux:nNNnn #1#2#3#4#5
- {
- \str_if_eq:nnTF {#1} { #2 #3 #4 }
- { \@@_e:nn {#4} { #5 #2 #3 } }
- { \@@_e:nn {#1} {#5} }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}[EXP]{\@@_e_noexpand:Nnn}
-% The \tn{noexpand} primitive has no effect when followed by a token
-% that is not \texttt{N}-type; otherwise \cs{@@_e_put:nn} can grab the
-% next token and put it in the result unchanged.
-% \begin{macrocode}
- \cs_new:Npn \@@_e_noexpand:Nnn #1#2
- {
- \tl_if_head_is_N_type:nTF {#2}
- { \@@_e_put:nn } { \@@_e:nn } {#2}
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}[EXP]
-% {
-% \@@_e_unexpanded:Nnn, \@@_e_unexpanded:nn,
-% \@@_e_unexpanded:nN, \@@_e_unexpanded:N
-% }
-% The \tn{unexpanded} primitive expands and ignores any space,
-% \cs{scan_stop:}, or token affected by \cs{exp_not:N}, then expects a
-% brace group. Since we only support brace-balanced token lists it is
-% impossible to support the case where the argument of \tn{unexpanded}
-% starts with an implicit brace. Even though we want to expand and
-% ignore spaces we cannot blindly \texttt{f}-expand because tokens
-% affected by \cs{exp_not:N} should discarded without being expanded
-% further.
-%
-% As usual distinguish four cases: brace group (the normal case, where
-% we just put the item in the result), space (just \texttt{f}-expand
-% to remove the space), empty (an error), or \texttt{N}-type
-% \meta{token}. In the last case call \cs{@@_e_unexpanded:nN}
-% triggered by an \texttt{f}-expansion. Having a non-expandable
-% \meta{token} after \tn{unexpanded} is an error (we recover by
-% passing |{}| to \tn{unexpanded}; this is different from \TeX{}
-% because the error recovery of \tn{unexpanded} changes the balance of
-% braces), unless that \meta{token} is \cs{scan_stop:} or a space
-% (recall that we don't implement the case of an implicit begin-group
-% token). An expandable \meta{token} is instead expanded, unless it
-% is \tn{noexpand}. The latter primitive can be followed by an expandable
-% \texttt{N}-type token (removed), by a non-expandable one (kept
-% and later causing an error), by a space (removed by
-% \texttt{f}-expansion), or by a brace group or nothing (later causing
-% an error).
-% \begin{macrocode}
- \cs_new:Npn \@@_e_unexpanded:Nnn #1 { \@@_e_unexpanded:nn }
- \cs_new:Npn \@@_e_unexpanded:nn #1
- {
- \tl_if_head_is_N_type:nTF {#1}
- {
- \exp_args:Nf \@@_e_unexpanded:nn
- { \@@_e_unexpanded:nN {#1} #1 }
- }
- {
- \tl_if_head_is_group:nTF {#1}
- { \@@_e_put:nn }
- {
- \tl_if_empty:nTF {#1}
- {
- \msg_expandable_error:nnn
- { kernel } { e-type }
- { \unexpanded missing~brace }
- \@@_e_end:nn
- }
- { \exp_args:Nf \@@_e_unexpanded:nn }
- }
- {#1}
- }
- }
- \cs_new:Npn \@@_e_unexpanded:nN #1#2
- {
- \exp_after:wN \if_meaning:w \exp_not:N #2 #2
- \exp_after:wN \use_i:nn
- \else:
- \exp_after:wN \use_ii:nn
- \fi:
- {
- \token_if_eq_catcode:NNTF #2 \c_space_token
- { \exp_stop_f: }
- {
- \token_if_eq_meaning:NNTF #2 \scan_stop:
- { \exp_stop_f: }
- {
- \msg_expandable_error:nnn
- { kernel } { e-type }
- { \unexpanded missing~brace }
- { }
- }
- }
- }
- {
- \token_if_eq_meaning:NNTF #2 \exp_not:N
- {
- \exp_args:No \tl_if_head_is_N_type:nT { \use_none:n #1 }
- { \@@_e_unexpanded:N }
- }
- { \exp_after:wN \exp_stop_f: #2 }
- }
- }
- \cs_new:Npn \@@_e_unexpanded:N #1
- {
- \exp_after:wN \if_meaning:w \exp_not:N #1 #1 \else:
- \exp_after:wN \use_i:nn
- \fi:
- \exp_stop_f: #1
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}[EXP]{\@@_e_the:Nnn, \@@_e_the:N, \@@_e_the_toks_reg:N}
-% Finally implement \tn{the}. Followed by anything other than an
-% \texttt{N}-type \meta{token} this causes an error (we just let
-% \TeX{} make one), otherwise we test the \meta{token}. If the
-% \meta{token} is expandable, expand it. Otherwise it could be any
-% kind of register, or things like \tn{numexpr}, so there is no way to
-% deal with all cases. Thankfully, only \tn{toks} data needs to be
-% protected from expansion since everything else gives a string of
-% characters. If the \meta{token} is \tn{toks} we find a number and
-% unpack using the |the_toks| functions. If it is a token register we
-% unpack it in a brace group and call \cs{@@_e_put:nn} to move it to
-% the result. Otherwise we unpack and continue expanding (useless but
-% safe) since it is basically impossible to have a handle on where the
-% result of \tn{the} ends.
-% \begin{macrocode}
- \cs_new:Npn \@@_e_the:Nnn #1#2
- {
- \tl_if_head_is_N_type:nTF {#2}
- { \if_false: { \fi: \@@_e_the:N #2 } }
- { \exp_args:No \@@_e:nn { \tex_the:D #2 } }
- }
- \cs_new:Npn \@@_e_the:N #1
- {
- \exp_after:wN \if_meaning:w \exp_not:N #1 #1
- \exp_after:wN \use_i:nn
- \else:
- \exp_after:wN \use_ii:nn
- \fi:
- {
- \if_meaning:w \tex_toks:D #1
- \exp_after:wN \@@_e_the_toks:wnn \int_value:w
- \exp_after:wN \@@_e_the_toks:n
- \exp_after:wN { \int_value:w \if_false: } \fi:
- \else:
- \@@_e_if_toks_register:NTF #1
- { \exp_after:wN \@@_e_the_toks_reg:N }
- {
- \exp_after:wN \@@_e:nn \exp_after:wN {
- \tex_the:D \if_false: } \fi:
- }
- \exp_after:wN #1
- \fi:
- }
- {
- \exp_after:wN \@@_e_the:Nnn \exp_after:wN ?
- \exp_after:wN { \exp:w \if_false: } \fi:
- \exp_after:wN \exp_end: #1
- }
- }
- \cs_new:Npn \@@_e_the_toks_reg:N #1
- {
- \exp_after:wN \@@_e_put:nn \exp_after:wN {
- \exp_after:wN {
- \tex_the:D \if_false: } \fi: #1 }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}[EXP]{\@@_e_the_toks:wnn, \@@_e_the_toks:n, \@@_e_the_toks:N}
-% The calling function has applied \cs{int_value:w} so we collect
-% digits with \cs{@@_e_the_toks:n} (which gets the token list as an
-% argument) and \cs{@@_e_the_toks:N} (which gets the first token in
-% case it is \texttt{N}-type). The digits are themselves collected
-% into an \cs{int_value:w} argument to \cs{@@_e_the_toks:wnn}. Then
-% that function unpacks the \tn{toks}\meta{number} into the result.
-% We include |?| because \cs{@@_e_put:nnn} removes one item from its
-% second argument. Note that our approach is rather crude: in cases
-% like |\the\toks12~34| the first \cs{int_value:w} removes the space
-% and we will incorrectly unpack the |\the\toks1234|.
-% \begin{macrocode}
- \cs_new:Npn \@@_e_the_toks:wnn #1; #2
- {
- \exp_args:No \@@_e_put:nnn
- { \tex_the:D \tex_toks:D #1 } { ? #2 }
- }
- \cs_new:Npn \@@_e_the_toks:n #1
- {
- \tl_if_head_is_N_type:nTF {#1}
- { \exp_after:wN \@@_e_the_toks:N \if_false: { \fi: #1 } }
- { ; {#1} }
- }
- \cs_new:Npn \@@_e_the_toks:N #1
- {
- \if_int_compare:w 10 < 9 \token_to_str:N #1 \exp_stop_f:
- \exp_after:wN \use_i:nn
- \else:
- \exp_after:wN \use_ii:nn
- \fi:
- {
- #1
- \exp_after:wN \@@_e_the_toks:n
- \exp_after:wN { \if_false: } \fi:
- }
- {
- \exp_after:wN ;
- \exp_after:wN { \if_false: } \fi: #1
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}[EXP]{\@@_e_if_toks_register:NTF}
-% \begin{macro}[EXP]
-% {
-% \@@_e_the_XeTeXinterchartoks:,
-% \@@_e_the_errhelp:,
-% \@@_e_the_everycr:,
-% \@@_e_the_everydisplay:,
-% \@@_e_the_everyeof:,
-% \@@_e_the_everyhbox:,
-% \@@_e_the_everyjob:,
-% \@@_e_the_everymath:,
-% \@@_e_the_everypar:,
-% \@@_e_the_everyvbox:,
-% \@@_e_the_output:,
-% \@@_e_the_pdfpageattr:,
-% \@@_e_the_pdfpageresources:,
-% \@@_e_the_pdfpagesattr:,
-% \@@_e_the_pdfpkmode:
-% }
-% We need to detect both \tn{toks} registers like \tn{toks@} in
-% \LaTeXe{} and parameters such as \tn{everypar}, as the result of
-% unpacking the register should not expand further. Registers are
-% found by \cs{token_if_toks_register:NTF} by inspecting the meaning.
-% The list of parameters is finite so we just use a
-% \cs{cs_if_exist:cTF} test to look up in a table. We abuse
-% \cs{cs_to_str:N}'s ability to remove a leading escape character
-% whatever it is.
-% \begin{macrocode}
- \prg_new_conditional:Npnn \@@_e_if_toks_register:N #1 { TF }
- {
- \token_if_toks_register:NTF #1 { \prg_return_true: }
- {
- \cs_if_exist:cTF
- {
- @@_e_the_
- \exp_after:wN \cs_to_str:N
- \token_to_meaning:N #1
- :
- } { \prg_return_true: } { \prg_return_false: }
- }
- }
- \cs_new_eq:NN \@@_e_the_XeTeXinterchartoks: ?
- \cs_new_eq:NN \@@_e_the_errhelp: ?
- \cs_new_eq:NN \@@_e_the_everycr: ?
- \cs_new_eq:NN \@@_e_the_everydisplay: ?
- \cs_new_eq:NN \@@_e_the_everyeof: ?
- \cs_new_eq:NN \@@_e_the_everyhbox: ?
- \cs_new_eq:NN \@@_e_the_everyjob: ?
- \cs_new_eq:NN \@@_e_the_everymath: ?
- \cs_new_eq:NN \@@_e_the_everypar: ?
- \cs_new_eq:NN \@@_e_the_everyvbox: ?
- \cs_new_eq:NN \@@_e_the_output: ?
- \cs_new_eq:NN \@@_e_the_pdfpageattr: ?
- \cs_new_eq:NN \@@_e_the_pdfpageresources: ?
- \cs_new_eq:NN \@@_e_the_pdfpagesattr: ?
- \cs_new_eq:NN \@@_e_the_pdfpkmode: ?
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% We are done emulating \texttt{e}-type argument expansion when
-% \tn{expanded} is unavailable.
-% \begin{macrocode}
- }
-% \end{macrocode}
-%
-%
% \subsection{Defining function variants}
%
% \begin{macrocode}
@@ -2638,22 +2128,8 @@
}
\cs_new_protected:Npn \@@_generate_internal_test_aux:w
##1 #1 ##2 \s_@@_mark ##3 ##4 \s_@@_stop {##3}
- \cs_if_exist:NTF \tex_expanded:D
- {
- \cs_new_eq:NN \@@_generate_internal_test:Nw
- \@@_generate_internal_test_aux:w
- }
- {
- \cs_new_protected:Npn \@@_generate_internal_test:Nw ##1
- {
- \if_meaning:w \tex_expanded:D ##1
- \exp_after:wN \@@_generate_internal_test_aux:w
- \exp_after:wN #1
- \else:
- \exp_after:wN \@@_generate_internal_test_aux:w
- \fi:
- }
- }
+ \cs_new_eq:NN \@@_generate_internal_test:Nw
+ \@@_generate_internal_test_aux:w
}
\exp_args:No \@@_tmp:w { \token_to_str:N p }
\cs_new_protected:Npn \@@_generate_internal_one_go:NNn #1#2#3
diff --git a/macros/latex/contrib/l3kernel/l3file.dtx b/macros/latex/contrib/l3kernel/l3file.dtx
index c5e7fc1df7..4be6f56f80 100644
--- a/macros/latex/contrib/l3kernel/l3file.dtx
+++ b/macros/latex/contrib/l3kernel/l3file.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
@@ -2817,7 +2817,7 @@
%
% \begin{macro}[EXP]{\file_full_name:n, \@@_full_name:n, \@@_full_name_aux:n}
% \begin{macro}[EXP]{\@@_full_name_auxi:nn, \@@_full_name_auxii:nn}
-% \begin{macro}[EXP]{\@@_full_name_aux:Nnn}
+% \begin{macro}[EXP]{\@@_full_name_aux:Nnnn}
% \begin{macro}[EXP]{\@@_full_name_aux:nN}
% \begin{macro}[EXP]{\@@_full_name_aux:nnN}
% \begin{macro}[EXP]{\@@_name_cleanup:w}
@@ -2887,11 +2887,11 @@
\tl_if_blank:nTF {#2}
{
\seq_map_tokens:Nn \l_file_search_path_seq
- { \@@_full_name_aux:Nnn \seq_map_break:n {#1} }
+ { \@@_full_name_aux:Nnnn \seq_map_break:n {#1} { / } }
\cs_if_exist:NT \input@path
{
\tl_map_tokens:Nn \input@path
- { \@@_full_name_aux:Nnn \tl_map_break:n {#1} }
+ { \@@_full_name_aux:Nnnn \tl_map_break:n {#1} { } }
}
\@@_name_end:
}
@@ -2901,8 +2901,8 @@
% Two pars to the auxiliary here so we can avoid doing quoting
% twice in the event we find the right file.
% \begin{macrocode}
-\cs_new:Npn \@@_full_name_aux:Nnn #1#2#3
- { \exp_args:Ne \@@_full_name_aux:nN { \tl_to_str:n {#3} / #2 } #1 }
+\cs_new:Npn \@@_full_name_aux:Nnnn #1#2#3#4
+ { \exp_args:Ne \@@_full_name_aux:nN { \tl_to_str:n {#4} #3 #2 } #1 }
\cs_new:Npn \@@_full_name_aux:nN #1
{ \exp_args:Nne \@@_full_name_aux:nnN {#1} { \@@_full_name_aux:n {#1} } }
\cs_new:Npn \@@_full_name_aux:nnN #1 #2 #3
@@ -2958,24 +2958,6 @@
}
}
% \end{macrocode}
-% Deal with the fact that the primitive might not be available.
-% \begin{macrocode}
-\cs_if_exist:NF \tex_filesize:D
- {
- \cs_gset:Npn \file_full_name:n #1
- {
- \msg_expandable_error:nnn
- { kernel } { primitive-not-available }
- { \(pdf)filesize }
- }
- }
-\msg_new:nnnn { kernel } { primitive-not-available }
- { Primitive~\token_to_str:N #1 not~available }
- {
- The~version~of~your~TeX~engine~does~not~provide~functionality~equivalent~to~
- the~#1~primitive.
- }
-% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
@@ -3014,68 +2996,12 @@
\cs_generate_variant:Nn \file_get_full_name:nNF { V }
\cs_generate_variant:Nn \file_get_full_name:nNTF { V }
% \end{macrocode}
-% If \cs{tex_filesize:D} is not available, the
-% way to test if a file exists is to try to open it: if it does
-% not exist then \TeX{} reports end-of-file. A search is made
-% looking at each potential path in turn (starting from the current
-% directory). The first location is of course treated as the correct
-% one: this is done by jumping to \cs{prg_break_point:}. If nothing
-% is found, |#2| is returned empty. A special case when there is no
-% extension is that once the first location is found we test the
-% existence of the file with |.tex| extension in that directory, and
-% if it exists we include the |.tex| extension in the result.
-% \begin{macrocode}
-\cs_if_exist:NF \tex_filesize:D
- {
- \prg_set_protected_conditional:Npnn \file_get_full_name:nN #1#2 { T , F , TF }
- {
- \__kernel_tl_set:Nx \l_@@_base_name_tl
- { \__kernel_file_name_sanitize:n {#1} }
- \@@_get_full_name_search:nN { } \use:n
- \seq_map_inline:Nn \l_file_search_path_seq
- { \@@_get_full_name_search:nN { ##1 / } \seq_map_break:n }
- \cs_if_exist:NT \input@path
- {
- \tl_map_inline:Nn \input@path
- { \@@_get_full_name_search:nN { ##1 } \tl_map_break:n }
- }
- \tl_set:Nn \l_@@_full_name_tl { \q_no_value }
- \prg_break_point:
- \quark_if_no_value:NTF \l_@@_full_name_tl
- {
- \ior_close:N \g_@@_internal_ior
- \prg_return_false:
- }
- {
- \file_parse_full_name:VNNN \l_@@_full_name_tl
- \l_@@_dir_str \l_@@_name_str \l_@@_ext_str
- \str_if_empty:NT \l_@@_ext_str
- {
- \__kernel_ior_open:No \g_@@_internal_ior
- { \l_@@_full_name_tl .tex }
- \ior_if_eof:NF \g_@@_internal_ior
- { \tl_put_right:Nn \l_@@_full_name_tl { .tex } }
- }
- \ior_close:N \g_@@_internal_ior
- \tl_set_eq:NN #2 \l_@@_full_name_tl
- \prg_return_true:
- }
- }
- }
-\cs_new_protected:Npn \@@_get_full_name_search:nN #1#2
- {
- \__kernel_tl_set:Nx \l_@@_full_name_tl
- { \tl_to_str:n {#1} \l_@@_base_name_tl }
- \__kernel_ior_open:No \g_@@_internal_ior \l_@@_full_name_tl
- \ior_if_eof:NF \g_@@_internal_ior { #2 { \prg_break: } }
- }
-% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
+%
% \begin{variable}{\g_@@_internal_ior}
-% A reserved stream to test for file existence (if required), and for
-% opening a shell.
+% A reserved stream to test for opening a shell.
% \begin{macrocode}
\ior_new:N \g_@@_internal_ior
% \end{macrocode}
@@ -3226,30 +3152,6 @@
{ \prg_return_true: }
}
% \end{macrocode}
-% Where the primitive is not available, issue an error: this is a little
-% more conservative than absolutely needed, but does work.
-% \begin{macrocode}
-\cs_if_exist:NF \tex_filesize:D
- {
- \cs_set_protected:Npn \@@_get_details:nnN #1#2#3
- {
- \tl_clear:N #3
- \msg_error:nnx
- { kernel } { primitive-not-available }
- {
- \token_to_str:N \(pdf)file
- \str_case:nn {#2}
- {
- { hex_dump } { dump }
- { mdfive_hash } { mdfivesum }
- { timestamp } { moddate }
- { size } { size }
- }
- }
- \prg_return_false:
- }
- }
-% \end{macrocode}
% \end{macro}
% \end{macro}
%
@@ -3328,17 +3230,6 @@
}
}
\cs_new_eq:NN \@@_timestamp:n \tex_filemoddate:D
-\cs_if_exist:NF \@@_timestamp:n
- {
- \prg_set_conditional:Npnn \file_compare_timestamp:nNn #1#2#3
- { p , T , F , TF }
- {
- \msg_expandable_error:nnn
- { kernel } { primitive-not-available }
- { \(pdf)filemoddate }
- \prg_return_false:
- }
- }
% \end{macrocode}
% \end{macro}
% \end{macro}
diff --git a/macros/latex/contrib/l3kernel/l3flag.dtx b/macros/latex/contrib/l3kernel/l3flag.dtx
index 581b7a7227..80981884fb 100644
--- a/macros/latex/contrib/l3kernel/l3flag.dtx
+++ b/macros/latex/contrib/l3kernel/l3flag.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-assign.dtx b/macros/latex/contrib/l3kernel/l3fp-assign.dtx
index 1fcd33b8d9..af1b0b98be 100644
--- a/macros/latex/contrib/l3kernel/l3fp-assign.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-assign.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
% \maketitle
%
% \begin{documentation}
diff --git a/macros/latex/contrib/l3kernel/l3fp-aux.dtx b/macros/latex/contrib/l3kernel/l3fp-aux.dtx
index b18b39218d..e5c3a0f5a2 100644
--- a/macros/latex/contrib/l3kernel/l3fp-aux.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-aux.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-basics.dtx b/macros/latex/contrib/l3kernel/l3fp-basics.dtx
index 635ebbcdde..17e2193713 100644
--- a/macros/latex/contrib/l3kernel/l3fp-basics.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-basics.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-convert.dtx b/macros/latex/contrib/l3kernel/l3fp-convert.dtx
index 6eb83223ab..fcc2b130e5 100644
--- a/macros/latex/contrib/l3kernel/l3fp-convert.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-convert.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-expo.dtx b/macros/latex/contrib/l3kernel/l3fp-expo.dtx
index 99824f74a8..43f1e9e0be 100644
--- a/macros/latex/contrib/l3kernel/l3fp-expo.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-expo.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-extended.dtx b/macros/latex/contrib/l3kernel/l3fp-extended.dtx
index ca1372da43..91ff16141e 100644
--- a/macros/latex/contrib/l3kernel/l3fp-extended.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-extended.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-logic.dtx b/macros/latex/contrib/l3kernel/l3fp-logic.dtx
index ca76fecb2c..ee89eacb40 100644
--- a/macros/latex/contrib/l3kernel/l3fp-logic.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-logic.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-parse.dtx b/macros/latex/contrib/l3kernel/l3fp-parse.dtx
index d3969b735c..082dbaf8ba 100644
--- a/macros/latex/contrib/l3kernel/l3fp-parse.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-parse.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-random.dtx b/macros/latex/contrib/l3kernel/l3fp-random.dtx
index 76c797e2eb..c4c718c72a 100644
--- a/macros/latex/contrib/l3kernel/l3fp-random.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-random.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-round.dtx b/macros/latex/contrib/l3kernel/l3fp-round.dtx
index 3ece03051c..98584be2f6 100644
--- a/macros/latex/contrib/l3kernel/l3fp-round.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-round.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-traps.dtx b/macros/latex/contrib/l3kernel/l3fp-traps.dtx
index 7c2b5cf957..06630644e0 100644
--- a/macros/latex/contrib/l3kernel/l3fp-traps.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-traps.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
% \maketitle
%
% \begin{documentation}
diff --git a/macros/latex/contrib/l3kernel/l3fp-trig.dtx b/macros/latex/contrib/l3kernel/l3fp-trig.dtx
index 991a56ec7a..24ac6a9115 100644
--- a/macros/latex/contrib/l3kernel/l3fp-trig.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-trig.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp.dtx b/macros/latex/contrib/l3kernel/l3fp.dtx
index 1d14dba2b6..88c323e415 100644
--- a/macros/latex/contrib/l3kernel/l3fp.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fparray.dtx b/macros/latex/contrib/l3kernel/l3fparray.dtx
index 7311ad5358..5836d5bee7 100644
--- a/macros/latex/contrib/l3kernel/l3fparray.dtx
+++ b/macros/latex/contrib/l3kernel/l3fparray.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3int.dtx b/macros/latex/contrib/l3kernel/l3int.dtx
index ca095b0359..f7d065d874 100644
--- a/macros/latex/contrib/l3kernel/l3int.dtx
+++ b/macros/latex/contrib/l3kernel/l3int.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3intarray.dtx b/macros/latex/contrib/l3kernel/l3intarray.dtx
index 3cc0e52578..b671f5e4ed 100644
--- a/macros/latex/contrib/l3kernel/l3intarray.dtx
+++ b/macros/latex/contrib/l3kernel/l3intarray.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
index 2bd0c676f0..3542167a7a 100644
--- a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
+++ b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3keys.dtx b/macros/latex/contrib/l3kernel/l3keys.dtx
index 60645c8363..64a301d906 100644
--- a/macros/latex/contrib/l3kernel/l3keys.dtx
+++ b/macros/latex/contrib/l3kernel/l3keys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
@@ -1113,26 +1113,14 @@
% The use of \cs{s_@@_mark} here prevents loss of braces from the key
% argument.
% \begin{macrocode}
- \cs_if_exist:NTF \tex_expanded:D
+ \cs_new:Npn \keyval_parse:nnn ##1 ##2 ##3
{
- \cs_new:Npn \keyval_parse:nnn ##1 ##2 ##3
+ \__kernel_exp_not:w \tex_expanded:D
{
- \__kernel_exp_not:w \tex_expanded:D
- {
- {
- \@@_loop_active:nnw {##1} {##2}
- \s_@@_mark ##3 #1 \s_@@_tail #1
- }
- }
- }
- }
- {
- \cs_new:Npn \keyval_parse:nnn ##1 ##2 ##3
- {
- \group_align_safe_begin:
- \@@_loop_active:nnw {##1} {##2}
- \s_@@_mark ##3 #1 \s_@@_tail #1
- \group_align_safe_end:
+ {
+ \@@_loop_active:nnw {##1} {##2}
+ \s_@@_mark ##3 #1 \s_@@_tail #1
+ }
}
}
\cs_new_eq:NN \keyval_parse:NNn \keyval_parse:nnn
@@ -1415,9 +1403,7 @@
\@@_loop_other:nnw {##2}
}
}
- \cs_if_exist:NTF \tex_expanded:D
- { \@@_tmp:w { } { } }
- { \@@_tmp:w \group_align_safe_end: \group_align_safe_begin: }
+ \@@_tmp:w { } { }
\group_end:
% \end{macrocode}
% \end{macro}
diff --git a/macros/latex/contrib/l3kernel/l3legacy.dtx b/macros/latex/contrib/l3kernel/l3legacy.dtx
index 0b228b4333..aa144fdb29 100644
--- a/macros/latex/contrib/l3kernel/l3legacy.dtx
+++ b/macros/latex/contrib/l3kernel/l3legacy.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3luatex.dtx b/macros/latex/contrib/l3kernel/l3luatex.dtx
index e73b5cbe7c..048fd472b8 100644
--- a/macros/latex/contrib/l3kernel/l3luatex.dtx
+++ b/macros/latex/contrib/l3kernel/l3luatex.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3msg.dtx b/macros/latex/contrib/l3kernel/l3msg.dtx
index bb739840dc..c256def116 100644
--- a/macros/latex/contrib/l3kernel/l3msg.dtx
+++ b/macros/latex/contrib/l3kernel/l3msg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
@@ -2077,11 +2077,6 @@
{ Relation~'#1'~not~among~=,<,>,==,!=,<=,>=. }
\msg_new:nnn { kernel } { zero-step }
{ Zero~step~size~for~function~#1. }
-\cs_if_exist:NF \tex_expanded:D
- {
- \msg_new:nnn { kernel } { e-type }
- { #1 ~ in~e-type~argument }
- }
% \end{macrocode}
%
% Messages used by the \enquote{\texttt{show}} functions.
diff --git a/macros/latex/contrib/l3kernel/l3names.dtx b/macros/latex/contrib/l3kernel/l3names.dtx
index 1470671ec6..09ec8a83ba 100644
--- a/macros/latex/contrib/l3kernel/l3names.dtx
+++ b/macros/latex/contrib/l3kernel/l3names.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
@@ -1333,72 +1333,6 @@
\tex_fi:D
\tex_fi:D
% \end{macrocode}
-% That is also true for the \LuaTeX{} primitives under \LaTeXe{}
-% (depending on the format-building date). There are a few primitives
-% that get the right names anyway so are missing here!
-% \begin{macrocode}
-\tex_ifdefined:D \luatexsuppressfontnotfounderror
- \tex_let:D \tex_alignmark:D \luatexalignmark
- \tex_let:D \tex_aligntab:D \luatexaligntab
- \tex_let:D \tex_attribute:D \luatexattribute
- \tex_let:D \tex_attributedef:D \luatexattributedef
- \tex_let:D \tex_catcodetable:D \luatexcatcodetable
- \tex_let:D \tex_clearmarks:D \luatexclearmarks
- \tex_let:D \tex_crampeddisplaystyle:D \luatexcrampeddisplaystyle
- \tex_let:D \tex_crampedscriptscriptstyle:D
- \luatexcrampedscriptscriptstyle
- \tex_let:D \tex_crampedscriptstyle:D \luatexcrampedscriptstyle
- \tex_let:D \tex_crampedtextstyle:D \luatexcrampedtextstyle
- \tex_let:D \tex_fontid:D \luatexfontid
- \tex_let:D \tex_formatname:D \luatexformatname
- \tex_let:D \tex_gleaders:D \luatexgleaders
- \tex_let:D \tex_initcatcodetable:D \luatexinitcatcodetable
- \tex_let:D \tex_latelua:D \luatexlatelua
- \tex_let:D \tex_luaescapestring:D \luatexluaescapestring
- \tex_let:D \tex_luafunction:D \luatexluafunction
- \tex_let:D \tex_mathstyle:D \luatexmathstyle
- \tex_let:D \tex_nokerns:D \luatexnokerns
- \tex_let:D \tex_noligs:D \luatexnoligs
- \tex_let:D \tex_outputbox:D \luatexoutputbox
- \tex_let:D \tex_pageleftoffset:D \luatexpageleftoffset
- \tex_let:D \tex_pagetopoffset:D \luatexpagetopoffset
- \tex_let:D \tex_postexhyphenchar:D \luatexpostexhyphenchar
- \tex_let:D \tex_posthyphenchar:D \luatexposthyphenchar
- \tex_let:D \tex_preexhyphenchar:D \luatexpreexhyphenchar
- \tex_let:D \tex_prehyphenchar:D \luatexprehyphenchar
- \tex_let:D \tex_savecatcodetable:D \luatexsavecatcodetable
- \tex_let:D \tex_scantextokens:D \luatexscantextokens
- \tex_let:D \tex_suppressifcsnameerror:D
- \luatexsuppressifcsnameerror
- \tex_let:D \tex_suppresslongerror:D \luatexsuppresslongerror
- \tex_let:D \tex_suppressmathparerror:D
- \luatexsuppressmathparerror
- \tex_let:D \tex_suppressoutererror:D \luatexsuppressoutererror
- \tex_let:D \tex_Uchar:D \luatexUchar
- \tex_let:D \tex_suppressfontnotfounderror:D
- \luatexsuppressfontnotfounderror
-% \end{macrocode}
-% Which also covers those slightly odd ones.
-% \begin{macrocode}
- \tex_let:D \tex_bodydir:D \luatexbodydir
- \tex_let:D \tex_boxdir:D \luatexboxdir
- \tex_let:D \tex_leftghost:D \luatexleftghost
- \tex_let:D \tex_localbrokenpenalty:D \luatexlocalbrokenpenalty
- \tex_let:D \tex_localinterlinepenalty:D
- \luatexlocalinterlinepenalty
- \tex_let:D \tex_localleftbox:D \luatexlocalleftbox
- \tex_let:D \tex_localrightbox:D \luatexlocalrightbox
- \tex_let:D \tex_mathdir:D \luatexmathdir
- \tex_let:D \tex_pagebottomoffset:D \luatexpagebottomoffset
- \tex_let:D \tex_pagedir:D \luatexpagedir
- \tex_let:D \tex_pageheight:D \luatexpageheight
- \tex_let:D \tex_pagerightoffset:D \luatexpagerightoffset
- \tex_let:D \tex_pagewidth:D \luatexpagewidth
- \tex_let:D \tex_pardir:D \luatexpardir
- \tex_let:D \tex_rightghost:D \luatexrightghost
- \tex_let:D \tex_textdir:D \luatextextdir
-\tex_fi:D
-% \end{macrocode}
% Only \pdfTeX{} and \LuaTeX{} define \tn{pdfmapfile} and \tn{pdfmapline}:
% Tidy up the fact that some format-building processes leave
% a couple of questionable decisions about that!
@@ -1440,16 +1374,6 @@
\tex_fi:D
\tex_endgroup:D
% \end{macrocode}
-% Up to v0.80, \LuaTeX{} defines the \pdfTeX{} version data: rather
-% confusing. Removing them means that \cs{tex_pdftexversion:D} is
-% a marker for \pdfTeX{} alone: useful in engine-dependent code later.
-% \begin{macrocode}
-\tex_ifdefined:D \tex_luatexversion:D
- \tex_let:D \tex_pdftexbanner:D \tex_undefined:D
- \tex_let:D \tex_pdftexrevision:D \tex_undefined:D
- \tex_let:D \tex_pdftexversion:D \tex_undefined:D
-\tex_fi:D
-% \end{macrocode}
% \pkg{cslatex} moves a couple of primitives which we recover here; as there
% is no other marker, we can only work by looking for the names.
% \begin{macrocode}
diff --git a/macros/latex/contrib/l3kernel/l3news.pdf b/macros/latex/contrib/l3kernel/l3news.pdf
index 636a6e0ec5..71a9e6840e 100644
--- a/macros/latex/contrib/l3kernel/l3news.pdf
+++ b/macros/latex/contrib/l3kernel/l3news.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news01.pdf b/macros/latex/contrib/l3kernel/l3news01.pdf
index 3f72f1e5b3..6a994a24c1 100644
--- a/macros/latex/contrib/l3kernel/l3news01.pdf
+++ b/macros/latex/contrib/l3kernel/l3news01.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news02.pdf b/macros/latex/contrib/l3kernel/l3news02.pdf
index ae10be53a6..5e76c8d5aa 100644
--- a/macros/latex/contrib/l3kernel/l3news02.pdf
+++ b/macros/latex/contrib/l3kernel/l3news02.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news03.pdf b/macros/latex/contrib/l3kernel/l3news03.pdf
index ff4daf4033..9c38abc8c8 100644
--- a/macros/latex/contrib/l3kernel/l3news03.pdf
+++ b/macros/latex/contrib/l3kernel/l3news03.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news04.pdf b/macros/latex/contrib/l3kernel/l3news04.pdf
index 57731785c3..1b410c1ef8 100644
--- a/macros/latex/contrib/l3kernel/l3news04.pdf
+++ b/macros/latex/contrib/l3kernel/l3news04.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news05.pdf b/macros/latex/contrib/l3kernel/l3news05.pdf
index 1c51600729..c3fb4f022b 100644
--- a/macros/latex/contrib/l3kernel/l3news05.pdf
+++ b/macros/latex/contrib/l3kernel/l3news05.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news06.pdf b/macros/latex/contrib/l3kernel/l3news06.pdf
index c170a56ff6..951757da63 100644
--- a/macros/latex/contrib/l3kernel/l3news06.pdf
+++ b/macros/latex/contrib/l3kernel/l3news06.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news07.pdf b/macros/latex/contrib/l3kernel/l3news07.pdf
index 3fa83fddad..fee9bbf2df 100644
--- a/macros/latex/contrib/l3kernel/l3news07.pdf
+++ b/macros/latex/contrib/l3kernel/l3news07.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news08.pdf b/macros/latex/contrib/l3kernel/l3news08.pdf
index c3a95d78de..a858a42c43 100644
--- a/macros/latex/contrib/l3kernel/l3news08.pdf
+++ b/macros/latex/contrib/l3kernel/l3news08.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news09.pdf b/macros/latex/contrib/l3kernel/l3news09.pdf
index c4902677af..c043e68add 100644
--- a/macros/latex/contrib/l3kernel/l3news09.pdf
+++ b/macros/latex/contrib/l3kernel/l3news09.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news10.pdf b/macros/latex/contrib/l3kernel/l3news10.pdf
index 3f1f303dc5..02e724712d 100644
--- a/macros/latex/contrib/l3kernel/l3news10.pdf
+++ b/macros/latex/contrib/l3kernel/l3news10.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news11.pdf b/macros/latex/contrib/l3kernel/l3news11.pdf
index 623bb991d2..a521a6ca25 100644
--- a/macros/latex/contrib/l3kernel/l3news11.pdf
+++ b/macros/latex/contrib/l3kernel/l3news11.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news12.pdf b/macros/latex/contrib/l3kernel/l3news12.pdf
index ad090e333b..166cdf0386 100644
--- a/macros/latex/contrib/l3kernel/l3news12.pdf
+++ b/macros/latex/contrib/l3kernel/l3news12.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3pdf.dtx b/macros/latex/contrib/l3kernel/l3pdf.dtx
index f3e7834b6e..0a76fc54e0 100644
--- a/macros/latex/contrib/l3kernel/l3pdf.dtx
+++ b/macros/latex/contrib/l3kernel/l3pdf.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3prefixes.csv b/macros/latex/contrib/l3kernel/l3prefixes.csv
index 00e59e10de..410b927d89 100644
--- a/macros/latex/contrib/l3kernel/l3prefixes.csv
+++ b/macros/latex/contrib/l3kernel/l3prefixes.csv
@@ -39,8 +39,10 @@ classics,classics,Eduardo C. Lourenço de Lima,,,,2013-03-16,2013-03-16,
clist,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27,
cmd,latex2e,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex2e.git,https://github.com/latex3/latex2e/issues,2021-01-20,2021-03-03,
code,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2021-04-23,2021-04-23,
+codedesc,codedescribe,Alceu Frigeri,https://github.com/alceu-frigeri/codedescribe,https://github.com/alceu-frigeri/codedescribe,https://github.com/alceu-frigeri/codedescribe/issues,2023-05-15,2023-05-15,
codedoc,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27,Somewhat experimental: may change
codehigh,codehigh,Jianrui Lyu,https://github.com/lvjr/codehigh,https://github.com/lvjr/codehigh.git,https://github.com/lvjr/codehigh/issues,2022-04-02,2022-04-02,
+codelist,codelisting,Alceu Frigeri,https://github.com/alceu-frigeri/codedescribe,https://github.com/alceu-frigeri/codedescribe,https://github.com/alceu-frigeri/codedescribe/issues,2023-05-15,2023-05-15,
codepoint,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27,
coffin,"l3kernel,xcoffins",The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27,
colon,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12,
@@ -208,6 +210,7 @@ reverse,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,htt
right,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12,
rivbook,rivbook,Julien Rivaud,,,,2018-06-13,2018-06-14,
rivmath,rivmath,Julien Rivaud,,,,2018-06-13,2018-06-13,
+sanuml,sanitize-umlaut,Thomas F. Sturm,https://github.com/T-F-S/sanitize-umlaut,https://github.com/T-F-S/sanitize-umlaut.git,https://github.com/T-F-S/sanitize-umlaut/issues,2022-07-19,2022-07-19,
scan,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27,
schulma,schulmathematik,Keno Wehr,https://ctan.org/pkg/schulmathematik,,,2021-08-23,2021-08-23,
scontents,scontents,Pablo González,https://github.com/pablgonz/scontents,git@github.com:pablgonz/scontents.git,https://github.com/pablgonz/scontents/issues,2019-12-05,2019-12-05,
@@ -221,6 +224,7 @@ skel,skeldoc,Magnus Lie Hetland,https://github.com/mlhetland/skeldoc.sty,https:/
skip,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27,
sort,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2017-02-13,
space,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12,
+starray,starray,Alceu Frigeri,https://github.com/alceu-frigeri/starray,https://github.com/alceu-frigeri/starray,https://github.com/alceu-frigeri/starray/issues,2023-05-15,2023-05-15,
statistics,statistics,Julien Rivaud,https://gitlab.com/frnchfrgg-latex/statistics,https://gitlab.com/frnchfrgg-latex/statistics.git,https://gitlab.com/frnchfrgg-latex/statistics/issues,2018-06-25,2018-06-25,
stm,lt3-stm,CV Radhakrishnan,http://www.cvr.cc/,,,2014-02-26,2014-02-26,
stop,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12,
diff --git a/macros/latex/contrib/l3kernel/l3prefixes.pdf b/macros/latex/contrib/l3kernel/l3prefixes.pdf
index d3204c1c37..b065870c91 100644
--- a/macros/latex/contrib/l3kernel/l3prefixes.pdf
+++ b/macros/latex/contrib/l3kernel/l3prefixes.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3prg.dtx b/macros/latex/contrib/l3kernel/l3prg.dtx
index 83b2904740..c1d42e10be 100644
--- a/macros/latex/contrib/l3kernel/l3prg.dtx
+++ b/macros/latex/contrib/l3kernel/l3prg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3prop.dtx b/macros/latex/contrib/l3kernel/l3prop.dtx
index 297fcd877f..341b46bdff 100644
--- a/macros/latex/contrib/l3kernel/l3prop.dtx
+++ b/macros/latex/contrib/l3kernel/l3prop.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
@@ -1087,66 +1087,31 @@
% have to make sure that the behaviour is as good as possible. Using a space
% before the opening brace we get the correct brace stripping behaviour for
% most of the key--value parsers available in \LaTeX.
-% If \cs{tex_expanded:D} is available this function makes use of it, so there
-% are two different implementations here. They both start with
-% \cs{__kernel_exp_not:w} to start the expansion context to expand in two
-% steps. If the \meta{property list} is empty they just leave an empty set of
-% braces in the input stream for \cs{__kernel_exp_not:w}.
-% \begin{macrocode}
-\cs_if_exist:NTF \tex_expanded:D
- {
-% \end{macrocode}
-% The variant using \cs{tex_expanded:D} can just iterate over the
+% Iterate over the
% \meta{property list} and remove the leading comma afterwards. Only the value
% has to be protected in \cs{__kernel_exp_not:w} as the property name is
% always a string. After the loop the leading comma is removed by
% \cs{use_none:n} and afterwards \cs{__kernel_exp_not:w} eventually finds the
% opening brace of its argument.
% \begin{macrocode}
- \cs_new:Npn \prop_to_keyval:N #1
- {
- \__kernel_exp_not:w
- \prop_if_empty:NTF #1
- { {} }
- {
- \exp_after:wN \exp_after:wN \exp_after:wN
+\cs_new:Npn \prop_to_keyval:N #1
+ {
+ \__kernel_exp_not:w
+ \prop_if_empty:NTF #1
+ { {} }
+ {
+ \exp_after:wN \exp_after:wN \exp_after:wN
+ {
+ \tex_expanded:D
{
- \tex_expanded:D
- {
- \__kernel_exp_not:w { \use_none:n }
- \prop_map_function:NN #1 \@@_to_keyval:nn
- }
+ \__kernel_exp_not:w { \use_none:n }
+ \prop_map_function:NN #1 \@@_to_keyval:nn
}
- }
- }
- \cs_new:Npn \@@_to_keyval:nn #1#2
- { , ~ {#1} =~ { \__kernel_exp_not:w {#2} } }
- }
-% \end{macrocode}
-% The other variant will iterate over the \meta{property list} and has to
-% output the result in a group after the marker
-% \cs{@@_to_keyval_exp_after:wN}. As a result this is considerably slower than
-% the \cs{tex_expanded:D} using variant as it has to read the entire contents
-% of the \meta{property list} for each item. Since the marker is just
-% \cs{exp_after:wN} with another name, after the loop the leading comma is
-% gobbled by \cs{use_none:n}, leaving the result as the argument to
-% \cs{__kernel_exp_not:w}.
-% \begin{macrocode}
- {
- \cs_new:Npn \prop_to_keyval:N #1
- {
- \__kernel_exp_not:w
- \prop_if_empty:NTF #1
- { {} }
- {
- \prop_map_function:NN #1 \@@_to_keyval:nnw
- \@@_to_keyval_exp_after:wN { \use_none:n }
- }
- }
- \cs_new_eq:NN \@@_to_keyval_exp_after:wN \exp_after:wN
- \cs_new:Npn \@@_to_keyval:nnw #1#2#3 \@@_to_keyval_exp_after:wN #4
- { #3 \@@_to_keyval_exp_after:wN { #4 , ~ {#1} =~ {#2} } }
+ }
+ }
}
+\cs_new:Npn \@@_to_keyval:nn #1#2
+ { , ~ {#1} =~ { \__kernel_exp_not:w {#2} } }
% \end{macrocode}
% \end{macro}
% \end{macro}
diff --git a/macros/latex/contrib/l3kernel/l3quark.dtx b/macros/latex/contrib/l3kernel/l3quark.dtx
index fda47356ef..67a431db2f 100644
--- a/macros/latex/contrib/l3kernel/l3quark.dtx
+++ b/macros/latex/contrib/l3kernel/l3quark.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3regex.dtx b/macros/latex/contrib/l3kernel/l3regex.dtx
index 46629fc8d6..629acfbf44 100644
--- a/macros/latex/contrib/l3kernel/l3regex.dtx
+++ b/macros/latex/contrib/l3kernel/l3regex.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3seq.dtx b/macros/latex/contrib/l3kernel/l3seq.dtx
index d5d0a52146..601083909e 100644
--- a/macros/latex/contrib/l3kernel/l3seq.dtx
+++ b/macros/latex/contrib/l3kernel/l3seq.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3skip.dtx b/macros/latex/contrib/l3kernel/l3skip.dtx
index 808807483a..8b2af6bb35 100644
--- a/macros/latex/contrib/l3kernel/l3skip.dtx
+++ b/macros/latex/contrib/l3kernel/l3skip.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3sort.dtx b/macros/latex/contrib/l3kernel/l3sort.dtx
index 72db7d8c42..5f2b7335bc 100644
--- a/macros/latex/contrib/l3kernel/l3sort.dtx
+++ b/macros/latex/contrib/l3kernel/l3sort.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3str-convert.dtx b/macros/latex/contrib/l3kernel/l3str-convert.dtx
index f71d2cb47e..5608305e28 100644
--- a/macros/latex/contrib/l3kernel/l3str-convert.dtx
+++ b/macros/latex/contrib/l3kernel/l3str-convert.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3str.dtx b/macros/latex/contrib/l3kernel/l3str.dtx
index e199e98b94..bb7c1e9f23 100644
--- a/macros/latex/contrib/l3kernel/l3str.dtx
+++ b/macros/latex/contrib/l3kernel/l3str.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3styleguide.pdf b/macros/latex/contrib/l3kernel/l3styleguide.pdf
index bf81491af3..76b087f846 100644
--- a/macros/latex/contrib/l3kernel/l3styleguide.pdf
+++ b/macros/latex/contrib/l3kernel/l3styleguide.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3styleguide.tex b/macros/latex/contrib/l3kernel/l3styleguide.tex
index 093b2e6e83..5c83920436 100644
--- a/macros/latex/contrib/l3kernel/l3styleguide.tex
+++ b/macros/latex/contrib/l3kernel/l3styleguide.tex
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2023-05-11}
+\date{Released 2023-05-15}
\begin{document}
diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
index d5534b9fa4..6f8bc1166d 100644
--- a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
+++ b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.tex b/macros/latex/contrib/l3kernel/l3syntax-changes.tex
index e8b8b4911a..8218429e71 100644
--- a/macros/latex/contrib/l3kernel/l3syntax-changes.tex
+++ b/macros/latex/contrib/l3kernel/l3syntax-changes.tex
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2023-05-11}
+\date{Released 2023-05-15}
\newcommand{\TF}{\textit{(TF)}}
diff --git a/macros/latex/contrib/l3kernel/l3sys.dtx b/macros/latex/contrib/l3kernel/l3sys.dtx
index 6f64b5ea4c..e7280bb33c 100644
--- a/macros/latex/contrib/l3kernel/l3sys.dtx
+++ b/macros/latex/contrib/l3kernel/l3sys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.pdf b/macros/latex/contrib/l3kernel/l3term-glossary.pdf
index 96e6dba07f..11c4fbb8f7 100644
--- a/macros/latex/contrib/l3kernel/l3term-glossary.pdf
+++ b/macros/latex/contrib/l3kernel/l3term-glossary.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.tex b/macros/latex/contrib/l3kernel/l3term-glossary.tex
index 4ef72973f7..9fae8221bb 100644
--- a/macros/latex/contrib/l3kernel/l3term-glossary.tex
+++ b/macros/latex/contrib/l3kernel/l3term-glossary.tex
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2023-05-11}
+\date{Released 2023-05-15}
\newcommand{\TF}{\textit{(TF)}}
diff --git a/macros/latex/contrib/l3kernel/l3text-case.dtx b/macros/latex/contrib/l3kernel/l3text-case.dtx
index 0dc9db24ed..b0aa1ceba9 100644
--- a/macros/latex/contrib/l3kernel/l3text-case.dtx
+++ b/macros/latex/contrib/l3kernel/l3text-case.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3text-map.dtx b/macros/latex/contrib/l3kernel/l3text-map.dtx
index 958ac7370e..d46ab15e38 100644
--- a/macros/latex/contrib/l3kernel/l3text-map.dtx
+++ b/macros/latex/contrib/l3kernel/l3text-map.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3text-purify.dtx b/macros/latex/contrib/l3kernel/l3text-purify.dtx
index 799d676b13..e6c967ca0f 100644
--- a/macros/latex/contrib/l3kernel/l3text-purify.dtx
+++ b/macros/latex/contrib/l3kernel/l3text-purify.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3text.dtx b/macros/latex/contrib/l3kernel/l3text.dtx
index 11fe78a202..5190bd4d8e 100644
--- a/macros/latex/contrib/l3kernel/l3text.dtx
+++ b/macros/latex/contrib/l3kernel/l3text.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
index 127aaaab2a..2e84945989 100644
--- a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
+++ b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3tl.dtx b/macros/latex/contrib/l3kernel/l3tl.dtx
index 6f0eb9f39e..958273893b 100644
--- a/macros/latex/contrib/l3kernel/l3tl.dtx
+++ b/macros/latex/contrib/l3kernel/l3tl.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
@@ -2882,49 +2882,18 @@
% empty result. The result is returned within the \tn{unexpanded} primitive.
% The approach here is to use \cs{if_false:} to allow us to use |}| as
% the closing delimiter: this is the only safe choice, as any other token
-% would not be able to parse it's own code. If the \tn{expanded} primitive
-% is available it is used to get a fast and safe code variant in which we
-% don't have to ensure that the left-most token is an internal to not break
-% in an |f|-type expansion. If \tn{expanded} isn't available, using a marker,
-% we can see if what we are grabbing is exactly the marker, or there is
-% anything else to deal with. If there is, there is a loop. If not, tidy up
-% and leave the item in the output stream. More detail in
+% would not be able to parse it's own code. More detail in
% \url{http://tex.stackexchange.com/a/70168}.
% \begin{macrocode}
-\cs_if_exist:NTF \tex_expanded:D
+\cs_new:Npn \tl_head:n #1
{
- \cs_new:Npn \tl_head:n #1
- {
- \__kernel_exp_not:w \tex_expanded:D
- { { \if_false: { \fi: \@@_head_aux:n #1 { } } } }
- }
- \cs_new:Npn \@@_head_aux:n #1
- {
- \__kernel_exp_not:w {#1}
- \exp_after:wN \use_none:n \exp_after:wN { \if_false: } \fi:
- }
+ \__kernel_exp_not:w \tex_expanded:D
+ { { \if_false: { \fi: \@@_head_aux:n #1 { } } } }
}
+\cs_new:Npn \@@_head_aux:n #1
{
- \cs_new:Npn \tl_head:n #1
- {
- \__kernel_exp_not:w
- \if_false: { \fi: \@@_head_auxi:nw #1 { } \s_@@_stop }
- }
- \cs_new:Npn \@@_head_auxi:nw #1#2 \s_@@_stop
- {
- \exp_after:wN \@@_head_auxii:n \exp_after:wN {
- \if_false: } \fi: {#1}
- }
- \exp_args:Nno \use:n
- { \cs_new:Npn \@@_head_auxii:n #1 }
- {
- \@@_if_empty_if:o { \use_none:n #1 }
- \exp_after:wN \use_ii:nnn
- \fi:
- \use_ii:nn
- {#1}
- { \if_false: { \fi: \@@_head_auxi:nw #1 } }
- }
+ \__kernel_exp_not:w {#1}
+ \exp_after:wN \use_none:n \exp_after:wN { \if_false: } \fi:
}
\cs_generate_variant:Nn \tl_head:n { V , v , f }
\cs_new:Npn \tl_head:w #1#2 \q_stop {#1}
diff --git a/macros/latex/contrib/l3kernel/l3token.dtx b/macros/latex/contrib/l3kernel/l3token.dtx
index 77e94d5b25..7b5467246f 100644
--- a/macros/latex/contrib/l3kernel/l3token.dtx
+++ b/macros/latex/contrib/l3kernel/l3token.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
@@ -1584,20 +1584,6 @@
\exp_after:wN \exp_end:
\tex_Ucharcat:D #1 \exp_stop_f: #2 \exp_stop_f:
}
- \cs_if_exist:NF \tex_expanded:D
- {
- \cs_new_eq:NN \@@_generate_auxii:nnw \@@_generate_aux:nnw
- \cs_gset:Npn \@@_generate_aux:nnw #1#2#3 \exp_end:
- {
- #3
- \if_int_compare:w #2 = 13 \exp_stop_f:
- \msg_expandable_error:nn { char } { active }
- \else:
- \@@_generate_auxii:nnw {#1} {#2}
- \fi:
- \exp_end:
- }
- }
\else:
% \end{macrocode}
% For engines where \tn{Ucharcat} isn't available or emulated, we have
diff --git a/macros/latex/contrib/l3kernel/l3unicode.dtx b/macros/latex/contrib/l3kernel/l3unicode.dtx
index fc3a2ba5e0..899937914e 100644
--- a/macros/latex/contrib/l3kernel/l3unicode.dtx
+++ b/macros/latex/contrib/l3kernel/l3unicode.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/source3.pdf b/macros/latex/contrib/l3kernel/source3.pdf
index 68f89b6013..84fa054d5f 100644
--- a/macros/latex/contrib/l3kernel/source3.pdf
+++ b/macros/latex/contrib/l3kernel/source3.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/source3.tex b/macros/latex/contrib/l3kernel/source3.tex
index ba7f8d430f..e12bd2b98d 100644
--- a/macros/latex/contrib/l3kernel/source3.tex
+++ b/macros/latex/contrib/l3kernel/source3.tex
@@ -53,7 +53,7 @@ for those people who are interested.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2023-05-11}
+\date{Released 2023-05-15}
\pagenumbering{roman}
\maketitle
diff --git a/macros/latex/contrib/starray/README.md b/macros/latex/contrib/starray/README.md
index 81c97cd931..d783c91e1e 100644
--- a/macros/latex/contrib/starray/README.md
+++ b/macros/latex/contrib/starray/README.md
@@ -33,7 +33,7 @@ at [the github page](http://github.com/alceu-frigeri/starray)
## Contacting Author
-For bug reports and enhacement suggestions, the preferred way is to use
+For bug reports and enhancement suggestions, the preferred way is to use
[the project's issue page](https://github.com/alceu-frigeri/starray/issues).
Please be ready to provide an example code showing the bug, if any.
@@ -73,5 +73,12 @@ The Current Maintainer of this work is Alceu Frigeri
## Changelog
+* Version 1.1
+ - Issues #1/#2
+ - most/all commands are protected now
+ - removed predicate version of conditionals
+ - documentation
+
+
* Version 1.0
- Initial release by CTAN.
diff --git a/macros/latex/contrib/starray/doc/starray.pdf b/macros/latex/contrib/starray/doc/starray.pdf
index c77d198ba9..01eb376434 100644
--- a/macros/latex/contrib/starray/doc/starray.pdf
+++ b/macros/latex/contrib/starray/doc/starray.pdf
Binary files differ
diff --git a/macros/latex/contrib/starray/doc/starray.tex b/macros/latex/contrib/starray/doc/starray.tex
index ee260e9ed8..a18117ac37 100644
--- a/macros/latex/contrib/starray/doc/starray.tex
+++ b/macros/latex/contrib/starray/doc/starray.tex
@@ -1,3 +1,6 @@
+% !TEX program = pdflatex
+% !TEX ext = --interaction=nonstopmode --enable-etex
+% !BIB program = none
%%%==============================================================================
%% Copyright 2023 by Alceu Frigeri
%%
@@ -12,20 +15,16 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version 1.0 (2023/05/11)
+%% This is version 1.1 (2023/05/16)
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/starray
%%
%%%==============================================================================
-% !TEX program = pdflatex
-% !TEX ext = --interaction=nonstopmode --enable-etex
-% !BIB program = none
\documentclass[10pt]{article}
\RequirePackage[verbose,a4paper,marginparwidth=27.5mm,top=2.5cm,bottom=1.5cm,hmargin={40mm,20mm},marginparsep=2.5mm,columnsep=10mm,asymmetric]{geometry}
%\RequirePackage[verbose,a4paper,marginparwidth=27.5mm,top=2.5cm,bottom=1.5cm,hmargin={45mm,25mm},marginparsep=2.5mm,columnsep=10mm,asymmetric]{geometry}
\usepackage{codedescribe}
-\usepackage{codelisting}
\usepackage{starray}
\RequirePackage[inline]{enumitem}
\SetEnumitemKey{miditemsep}{parsep=0ex,itemsep=0.4ex}
@@ -34,7 +33,7 @@
\begin{document}
\tstitle{
author={Alceu Frigeri\footnote{\tsverb{https://github.com/alceu-frigeri/starray}}},
- date={2023/05/11},
+ date={\tsdate},
title={The starray Package\break Version \PkgInfo{starray}{version}}
}
@@ -54,14 +53,21 @@ Internally, a \tsobj[pkg]{starray} is stored as a collection of property lists.
The construction/definition of a \tsobj[pkg]{starray} can be done piecewise (a property/sub-structure a time) or with a keyval interface or both, either way, one has to first ''create a root starray'' (\tsmacro{\starray_new:n}{}), define it's elements (properties and sub-structures), then instantiate them ''as needed''. An instance of a \tsobj[pkg]{starray} (or one of it's sub-structures) is referred, in this text, as a ''term''.
-Finally, almost all defined functions have a branching version, as per \tsobj[pkg]{expl3}: \tsobj[code]{_p,T,F,TF}. For simplicity, in the text bellow only the \underline{\textsl{TF}} variant is described, as in \tsobj[code]{\starray_new:nTF}, keep in mind that all 4 variants do exist, e.g. \tsobj[code]{\starray_new_p:n,\starray_new:nT,\starray_new_p:nF,\starray_new_p:nTF}. As usual, the \tsobj[code]{_p} version denotes, is the predicate one (which can be used in boolena expressions).
+Finally, almost all defined functions have a branching version, as per \tsobj[pkg]{expl3}: \tsobj[code]{T,F,TF} (note: no \tsobj{_p} variants, see below). For simplicity, in the text bellow only the \underline{\textsl{TF}} variant is described, as in \tsobj[code]{\starray_new:nTF}, keep in mind that all 3 variants are defined, e.g. \tsobj[code]{\starray_new:nT,\starray_new:nF,\starray_new:nTF}.
-\begin{tsremark}[N.B.:]
+\begin{tsremark}[Note:]
Could it be implemented with a single property list? It sure could, but at a cost:
\begin{enumerate*} \item complexity; \item access time. \end{enumerate*}
The current implementation, albeit also complex, tries to reach a balance between inherent structure complexity, number of used/defined auxiliary property lists and access time.
\end{tsremark}
+\begin{tsremark}[\color{red}Important:]
+ \textsl{Expandability}, unfortunately most/all defined functions are not ''fully expandable'', in particular, the conditional/branching functions aren't. This means, among other things, one can't have a 'predicated variant' of any conditional defined in this (for instance, to be used in a boolean expression).
+
+ For what it's worth, all user visible functions are 'protected'.
+\end{tsremark}
+
+
\section{Class Options}\label{pack:options}
The package options (\tsobj[key]{key}\,=\tsobj[value]{value}) are:
\begin{describelist}{option}
@@ -95,7 +101,6 @@ By default, the \tsobj[pkg]{starray} package only generates ''warnings'', with \
\tsmacro{\starray_new:nTF}{starray,if-true,if-false}
\end{codesyntax}
\end{codedescribe}
-
Creates a new \tsobj[marg]{starray} or raises a warning if the name is already taken. The declaration (and associated property lists) is global. The given name is referred (in this text) as the \tsobj[marg]{starray-root} or just \tsobj[marg]{root}.
\begin{tsremark}
A warning is raised (see \ref{pack:options}) if the name is already taken. The branching version doesn't raise any warning.
@@ -172,8 +177,9 @@ the construction \tsobj[key]{\tsobj[marg]{key} . struct} denotes a nested struct
The definitions/assignments to \tsobj[marg]{starray-ref} are all global.
-
-The non-branching version raises a warning (see \ref{pack:options}) in case of a \tsobj[marg]{starray-ref} syntax error. The branching version doesn't raise any warning. Please note that, syntax errors on the \tsobj[marg]{keyval-lst} might raise low level (\TeX) errors.
+\begin{tsremark}
+The non-branching version raises a warning (see \ref{pack:options}) in case of a \tsobj[marg]{starray-ref} syntax error. The branching version doesn't raise any warning. Also note that, syntax errors on the \tsobj[marg]{keyval-lst} might raise low level (\TeX) errors.
+\end{tsremark}
\subsection{Fixing an ill-instantiated starray}\label{pack:def-fix}
@@ -250,9 +256,9 @@ One will have created 6 \textsl{terms}:
\end{enumerate}
Note that, in the above example, it was used the ''implicit'' indexing (aka. iterator, see \ref{pack:ref}). Also note that no \textsl{term} of kind \tsobj[marg]{subYYY} was created.
-
+\begin{tsremark}
A warning is raised (see \ref{pack:options}) in case of a \tsobj[marg]{starray-ref} syntax error. The branching version doesn't raise any warning.
-
+\end{tsremark}
\subsection{referencing terms}\label{pack:ref}
@@ -553,6 +559,7 @@ The \tsmacro{\starray_if_in:nnTF}{starray-ref,key,\ldots,\ldots} tests if a give
\end{codedescribe}
Displays the \tsobj[marg]{starray} structure definition and initial property values in the terminal or directly in text.
+
\begin{codedescribe}{\starray_show_terms:n,\starray_show_terms_in_text:n}
\begin{codesyntax}%
\tsmacro{\starray_show_terms:n}{starray-ref}
diff --git a/macros/latex/contrib/starray/latex/starray.sty b/macros/latex/contrib/starray/latex/starray.sty
index 332118809f..c94304d0b1 100644
--- a/macros/latex/contrib/starray/latex/starray.sty
+++ b/macros/latex/contrib/starray/latex/starray.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version 1.0 (2023/05/11)
+%% This is version 1.1 (2023/05/16)
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/starray
@@ -20,35 +20,41 @@
%%%==============================================================================
\NeedsTeXFormat{LaTeX2e}[2022/06/01]
\RequirePackage{ expl3 }
+
+
\ProvidesExplPackage
{starray}
- {2023/05/11}
+ {2023/05/16}
{1.0}
{A structured array/hash of properties}
-\prop_if_exist:NTF \g__codedesc_pkg_prop
- {}
- { \prop_new:N \g__codedesc_pkg_prop }
-
-\prop_put_from_keyval:Nn \g__codedesc_pkg_prop
+%%%%%%%
+%%%
+%%% Just an attempt of having my packages info in a regular way
+%%% Idea being: { <pck-name> / pkg info } for each and all.
+%%%
+%%%%%%%
+\keys_define:nn { starray / pkg info}
{
- starray . name = starrayr ,
- starray . prefix = starray ,
- starray . date = 2023/05/01 ,
- starray . version = 1.0 ,
- starray . description = A structured array/hash of properties
+ name .code:n = starray ,
+ prefix .code:n = starray ,
+ date .code:n = 2023/05/16 ,
+ version .code:n = 1.1 ,
+ description .code:n = A~structured~array/hash~of~properties
}
-
-\cs_gset:Npn \__codedesc_pkg_info:nn #1#2
+\cs_if_exist:NF \__codedesc_pkg_info:nn
{
- \prop_item:Nn \g__codedesc_pkg_prop {#1.#2}
+ \cs_new_protected:Npn \__codedesc_pkg_info:nn #1#2
+ { \keys_set:nn {#1 / pkg info}{#2} }
}
+\cs_if_exist:NF \PkgInfo
+ { \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} } }
+%%%%%%%
+%%% End of cut-n-paste
+%%%%%%%
+
+
-\cs_if_exist:NTF \PkgInfo
- {}
- {
- \NewDocumentCommand \PkgInfo {mm} { \prop_item:Nn \g__codedesc_pkg_prop {#1.#2} }
- }
%%%%%%%%%%%%%%%%%%%
@@ -277,7 +283,7 @@
-\cs_new:Npn \__starray_msg:nnnnn #1#2#3#4#5
+\cs_new_protected:Npn \__starray_msg:nnnnn #1#2#3#4#5
{
\bool_gset_false:N \l__starray_rtn_bool
@@ -290,7 +296,7 @@
\cs_generate_variant:Nn \__starray_msg:nnnnn { nneee , neeee }
-\cs_new:Npn \__starray_msg_dispatch:
+\cs_new_protected:Npn \__starray_msg_dispatch:
{
\seq_map_tokens:Nn \l__starray_msg_seq { }
\seq_clear:N \l__starray_msg_seq
@@ -398,23 +404,25 @@
%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%
-\prg_new_conditional:Npnn \__starray_if_free:n #1 {p, T, F, TF}
+% probably EXP
+\prg_new_protected_conditional:Npnn \__starray_if_free:n #1 {T, F, TF}
{
\prop_if_exist:cTF {#1}
{ \prg_return_false: }
{ \prg_return_true: }
}
-\prg_generate_conditional_variant:Nnn \__starray_if_free:n {e} {p, T, F, TF}
+\prg_generate_conditional_variant:Nnn \__starray_if_free:n {e} {T, F, TF}
-\prg_new_conditional:Npnn \__starray_if_valid:n #1 {p, T, F, TF}
+% possible rEXP
+\prg_new_protected_conditional:Npnn \__starray_if_valid:n #1 {T, F, TF}
{
\bool_lazy_and:nnTF {\prop_if_exist_p:c {#1}} {\prop_item:cn {#1} {is_starray}}
{ \prg_return_true: }
{ \prg_return_false: }
}
-\prg_generate_conditional_variant:Nnn \__starray_if_valid:n {e} {p, T, F, TF}
+\prg_generate_conditional_variant:Nnn \__starray_if_valid:n {e} {T, F, TF}
%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%
@@ -425,8 +433,8 @@
%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%
-
-\cs_new:Npn \__starray_base_new:nn #1#2
+% needs protection.
+\cs_new_protected:Npn \__starray_base_new:nn #1#2
{
\int_new:c
{ \l__starray_prefix_tl #2 _cnt_int }
@@ -466,11 +474,13 @@
\cs_generate_variant:Nn \__starray_base_new:nn { ee }
-\cs_new:Npn \__starray_sub_base_new:nnn #1#2#3
+% needs protection.
+\cs_new_protected:Npn \__starray_sub_base_new:nnn #1#2#3
{ \__starray_base_new:ee {#1.#3}{#2.#3} }
-\cs_new:Npn \__starray_new:n #1
+% needs protection.
+\cs_new_protected:Npn \__starray_new:n #1
{
\prop_new:c
{ \l__starray_prefix_tl #1 _def_prop }
@@ -500,7 +510,8 @@
%%%%
%%%%%%%%%%%%%%%
-\cs_new:Npn \starray_new:n #1
+% needs protection.
+\cs_new_protected:Npn \starray_new:n #1
{
\__starray_if_free:nTF {\l__starray_prefix_tl #1 _def_prop}
{
@@ -513,7 +524,8 @@
}
-\prg_new_conditional:Npnn \starray_new:n #1 {p, T, F, TF}
+% needs protection.
+\prg_new_protected_conditional:Npnn \starray_new:n #1 {T, F, TF}
{
\__starray_if_free:nTF {\l__starray_prefix_tl #1 _def_prop}
{
@@ -547,6 +559,11 @@
%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%
+%%%
+%%% This one can't be protected... it is used in {e} expantion
+%%% if protected, it results in a quark loop
+%%%
+%
\cs_new:Npn \__starray_get_root:w #1 . #2 \q_stop { #1 }
@@ -561,7 +578,8 @@
%%%%%%%%%%%%%%%
-\cs_new:Npn \__starray_def_prop:nnn #1#2#3
+% needs protection.
+\cs_new_protected:Npn \__starray_def_prop:nnn #1#2#3
{
\prop_get:cnN {\l__starray_prefix_tl #1 _def_prop} {def} \l_tmpa_prop
\prop_put:Nnn \l_tmpa_prop {#2} {#3}
@@ -576,7 +594,8 @@
%%%%
%%%%%%%%%%%%%%%
-\cs_new:Npn \starray_def_prop:nnn #1#2#3
+% needs protection, because of _p
+\cs_new_protected:Npn \starray_def_prop:nnn #1#2#3
{
\__starray_if_valid:nTF {\l__starray_prefix_tl #1 _def_prop}
{ \__starray_def_prop:nnn {#1} {#2} {#3} }
@@ -587,7 +606,8 @@
}
-\prg_new_conditional:Npnn \starray_def_prop:nnn #1#2#3 {p, T, F, TF}
+% needs protection, because of _p
+\prg_new_protected_conditional:Npnn \starray_def_prop:nnn #1#2#3 {T, F, TF}
{
\__starray_if_valid:nTF {\l__starray_prefix_tl #1 _def_prop}
{
@@ -607,7 +627,8 @@
%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%
-\cs_new:Npn \__starray_def_struct:nn #1#2
+% needs protection because of \seq_if...
+\cs_new_protected:Npn \__starray_def_struct:nn #1#2
{
\prop_get:cnN {\l__starray_prefix_tl #1 _def_prop} {@st_seq} \l_tmpa_seq
\seq_if_in:NnF \l_tmpa_seq {#2}
@@ -633,7 +654,7 @@
%%%%%%%%%%%%%%%
%TODO: recurse over 'terms' to fix a 'late addtion' (after being instantiated?)
-\cs_new:Npn \__starray_fix_terms_seq_aux:nnnn #1#2#3#4
+\cs_new_protected:Npn \__starray_fix_terms_seq_aux:nnnn #1#2#3#4
{
\__starray_if_valid:eTF {\l__starray_prefix_tl #2 _ #3 . #4 _base_prop}
{
@@ -644,7 +665,7 @@
}
}
-\cs_new:Npn \__starray_fix_terms_seq:nnnn #1#2#3#4
+\cs_new_protected:Npn \__starray_fix_terms_seq:nnnn #1#2#3#4
{
\prop_get:cnN
{\l__starray_prefix_tl #2 _base_prop}
@@ -660,7 +681,7 @@
}
-\cs_new:Npn \__starray_fix_terms:nn #1#2
+\cs_new_protected:Npn \__starray_fix_terms:nn #1#2
{
\group_begin:
\prop_get:cnc
@@ -680,7 +701,7 @@
-\cs_new:Npn \starray_fix_terms:n #1
+\cs_new_protected:Npn \starray_fix_terms:n #1
{
\tl_set:Ne \l_tmpb_tl {\__starray_get_root:w #1 . \q_nil \q_stop}
@@ -702,7 +723,7 @@
%%%%
%%%%%%%%%%%%%%%
-\cs_new:Npn \starray_def_struct:nn #1#2
+\cs_new_protected:Npn \starray_def_struct:nn #1#2
{
\__starray_if_valid:nTF { \l__starray_prefix_tl #1 _def_prop}
{
@@ -714,7 +735,7 @@
}
}
-\prg_new_conditional:Npnn \starray_def_struct:nn #1#2 {p, T, F, TF}
+\prg_new_protected_conditional:Npnn \starray_def_struct:nn #1#2 {T, F, TF}
{
\__starray_if_valid:nTF { \l__starray_prefix_tl #1 _def_prop}
{
@@ -735,7 +756,7 @@
%%%%%%%%%%%%%%%
-\prg_new_conditional:Npnn \__starray_def_from_keyval_testdot_aux:w #1 . \q_nil { p, TF}
+\prg_new_protected_conditional:Npnn \__starray_def_from_keyval_testdot_aux:w #1 . \q_nil { TF}
{
\str_compare:nNnTF {#1} = {struct}
{ \prg_return_true: }
@@ -743,7 +764,7 @@
}
-\prg_new_conditional:Npnn \__starray_def_from_keyval_testdot:w #1 . #2 \q_stop { TF}
+\prg_new_protected_conditional:Npnn \__starray_def_from_keyval_testdot:w #1 . #2 \q_stop { TF}
{
\quark_if_nil:nTF {#2}
{
@@ -763,7 +784,7 @@
}
-\cs_new:Npn \__starray_def_from_keyval_parse:nnn #1#2#3
+\cs_new_protected:Npn \__starray_def_from_keyval_parse:nnn #1#2#3
{
\group_begin:
\__starray_def_from_keyval_testdot:wTF #2 . \q_nil \q_stop
@@ -784,7 +805,7 @@
\cs_generate_variant:Nn \__starray_def_from_keyval_parse:nnn {enn}
-\cs_new:Npn \__starray_def_from_keyval_parse:nn #1#2
+\cs_new_protected:Npn \__starray_def_from_keyval_parse:nn #1#2
{
\__starray_def_prop:nnn {#1} {#2} {}
}
@@ -799,7 +820,7 @@
%%%%
%%%%%%%%%%%%%%%
-\cs_new:Npn \starray_def_from_keyval:nn #1#2
+\cs_new_protected:Npn \starray_def_from_keyval:nn #1#2
{
% \bool_set_true:N \l__starray_rtn_bool
\__starray_if_valid:nTF { \l__starray_prefix_tl #1 _def_prop}
@@ -818,7 +839,7 @@
\cs_generate_variant:Nn \starray_def_from_keyval:nn {ne , ee}
-\prg_new_conditional:Npnn \starray_def_from_keyval:nn #1#2 {p, T, F, TF}
+\prg_new_protected_conditional:Npnn \starray_def_from_keyval:nn #1#2 {T, F, TF}
{
\__starray_if_valid:nTF { \l__starray_prefix_tl #1 _def_prop}
{
@@ -841,7 +862,7 @@
%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%
-\cs_new:Npn \__starray_new_term:nn #1#2
+\cs_new_protected:Npn \__starray_new_term:nn #1#2
{
\int_gincr:N
{\prop_item:cn {\l__starray_prefix_tl #1 _base_prop} {cnt} }
@@ -898,7 +919,7 @@
%%%%
%%%%%%%%%%%%%%%
-\cs_new:Npn \starray_new_term:nn #1#2
+\cs_new_protected:Npn \starray_new_term:nn #1#2
{
\__starray_parser:nnTF {\c__starray_no_idx_ending_bool}{#1}
{
@@ -912,7 +933,7 @@
}
}
-\prg_new_conditional:Npnn \starray_new_term:nn #1#2 {p, T, F, TF}
+\prg_new_protected_conditional:Npnn \starray_new_term:nn #1#2 {T, F, TF}
{
\__starray_parser:nnTF {\c__starray_no_idx_ending_bool}{#1}
{
@@ -928,14 +949,14 @@
%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%
%%%%
-%%%% changing iterator value (recursing sub-structures)
+%%%% changing iterator value (recursing over sub-structures)
%%%%
%%%% NOTE: since iterator change 'can' be just local, 'temp vars' are recursive aware.
%%%%
%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%
-\cs_new:Npn \__starray_incr_iter:n #1
+\cs_new_protected:Npn \__starray_incr_iter:n #1
{
\int_compare:nNnTF
{\prop_item:cn {\l__starray_prefix_tl #1 _base_prop} {iter}} <
@@ -949,7 +970,7 @@
}
}
-\prg_new_conditional:Npnn \__starray_set_iter:nn #1#2 {p , T , F , TF}
+\prg_new_protected_conditional:Npnn \__starray_set_iter:nn #1#2 {T , F , TF}
{
\int_compare:nNnTF {#1} > {\prop_item:cn {\l__starray_prefix_tl #2 _base_prop} {cnt}}
{
@@ -966,9 +987,9 @@
}
}
-\prg_generate_conditional_variant:Nnn \__starray_set_iter:nn {ne} {p , T , F , TF}
+\prg_generate_conditional_variant:Nnn \__starray_set_iter:nn {ne} {T , F , TF}
-\cs_new:Npn \__starray_set_sub_iter:nnn #1#2#3
+\cs_new_protected:Npn \__starray_set_sub_iter:nnn #1#2#3
{
\prop_get:cnN {\l__starray_prefix_tl #2#3 _base_prop} {idx_hash} \l_tmpa_prop
@@ -1016,7 +1037,7 @@
%%%%
%%%%%%%%%%%%%%%
-\cs_new:Npn \starray_set_iter:nn #1#2
+\cs_new_protected:Npn \starray_set_iter:nn #1#2
{
\__starray_parser:nnTF {\c__starray_no_idx_ending_bool}{#1}
{
@@ -1039,7 +1060,7 @@
-\prg_new_conditional:Npnn \starray_set_iter:nn #1#2 {p, T, F, TF}
+\prg_new_protected_conditional:Npnn \starray_set_iter:nn #1#2 {T, F, TF}
{
\bool_set_true:N \l__starray_rtn_bool
@@ -1075,7 +1096,7 @@
%%%%
%%%%%%%%%%%%%%%
-\cs_new:Npn \starray_reset_iter:n #1
+\cs_new_protected:Npn \starray_reset_iter:n #1
{
\__starray_parser:nnTF {\c__starray_no_idx_ending_bool}{#1}
{
@@ -1089,7 +1110,7 @@
}
-\prg_new_conditional:Npnn \starray_reset_iter:n #1 {p, T, F, TF}
+\prg_new_protected_conditional:Npnn \starray_reset_iter:n #1 {T, F, TF}
{
\bool_set_true:N \l__starray_rtn_bool
@@ -1114,7 +1135,7 @@
%%%%
%%%%%%%%%%%%%%%
-\cs_new:Npn \starray_next_iter:n #1
+\cs_new_protected:Npn \starray_next_iter:n #1
{
% \bool_set_true:N \l__starray_rtn_bool
\seq_clear:N \l__starray_msg_seq
@@ -1133,7 +1154,7 @@
-\prg_new_conditional:Npnn \starray_next_iter:n #1 {p, T, F, TF}
+\prg_new_protected_conditional:Npnn \starray_next_iter:n #1 {T, F, TF}
{
\bool_set_true:N \l__starray_rtn_bool
\seq_clear:N \l__starray_msg_seq
@@ -1159,7 +1180,7 @@
%%%%%%%%%%%%%%%
-\cs_new:Npn \__starray_get_prop:nn #1#2
+\cs_new_protected:Npn \__starray_get_prop:nn #1#2
{
\prop_item:cn {\l__starray_prefix_tl #1 _term_prop}{#2}
}
@@ -1173,7 +1194,7 @@
%%%%
%%%%%%%%%%%%%%%
-\cs_new:Npn \starray_get_prop:nn #1#2
+\cs_new_protected:Npn \starray_get_prop:nn #1#2
{
\__starray_parser:nnTF {\c__starray_idx_ending_bool}{#1}
{
@@ -1185,7 +1206,7 @@
} % returns nothing by default
}
-\cs_new:Npn \starray_get_prop:nnN #1#2#3
+\cs_new_protected:Npn \starray_get_prop:nnN #1#2#3
{
\__starray_parser:nnTF {\c__starray_idx_ending_bool}{#1}
{
@@ -1202,7 +1223,7 @@
}
-\prg_new_conditional:Npnn \starray_get_prop:nnN #1#2#3 {p, T, F, TF}
+\prg_new_protected_conditional:Npnn \starray_get_prop:nnN #1#2#3 {T, F, TF}
{
\__starray_parser:nnTF {\c__starray_idx_ending_bool}{#1}
{
@@ -1224,7 +1245,7 @@
}
-\prg_new_conditional:Npnn \starray_if_in:nn #1#2 {p, T, F, TF}
+\prg_new_protected_conditional:Npnn \starray_if_in:nn #1#2 {T, F, TF}
{
\__starray_parser:nnTF {\c__starray_idx_ending_bool}{#1}
{
@@ -1244,7 +1265,7 @@
}
-\cs_new:Npn \starray_get_cnt:n #1
+\cs_new_protected:Npn \starray_get_cnt:n #1
{
\__starray_parser:nnTF {\c__starray_no_idx_ending_bool}{#1}
{
@@ -1257,7 +1278,7 @@
} % returns nothing by default
}
-\cs_new:Npn \starray_get_cnt:nN #1#2
+\cs_new_protected:Npn \starray_get_cnt:nN #1#2
{
\__starray_parser:nnTF {\c__starray_no_idx_ending_bool}{#1}
{
@@ -1272,7 +1293,7 @@
} % returns nothing by default
}
-\prg_new_conditional:Npnn \starray_get_cnt:nN #1#2 {p, T, F, TF}
+\prg_new_protected_conditional:Npnn \starray_get_cnt:nN #1#2 {T, F, TF}
{
\__starray_parser:nnTF {\c__starray_no_idx_ending_bool}{#1}
{
@@ -1287,7 +1308,7 @@
} % returns nothing by default
}
-\cs_new:Npn \starray_get_iter:n #1
+\cs_new_protected:Npn \starray_get_iter:n #1
{
\__starray_parser:nnTF {\c__starray_no_idx_ending_bool}{#1}
{
@@ -1302,7 +1323,7 @@
}
-\cs_new:Npn \starray_get_iter:nN #1#2
+\cs_new_protected:Npn \starray_get_iter:nN #1#2
{
\__starray_parser:nnTF {\c__starray_no_idx_ending_bool}{#1}
{
@@ -1317,7 +1338,7 @@
} % returns nothing by default
}
-\prg_new_conditional:Npnn \starray_get_iter:nN #1#2 {p, T, F, TF}
+\prg_new_protected_conditional:Npnn \starray_get_iter:nN #1#2 {T, F, TF}
{
\__starray_parser:nnTF {\c__starray_no_idx_ending_bool}{#1}
{
@@ -1336,7 +1357,7 @@
-\cs_new:Npn \__starray_set_prop:nnn #1#2#3
+\cs_new_protected:Npn \__starray_set_prop:nnn #1#2#3
{
\l__starray_put_tl {\l__starray_prefix_tl #1 _term_prop}{#2}{#3}
}
@@ -1348,7 +1369,7 @@
%%%%
%%%%%%%%%%%%%%%
-\cs_new:Npn \starray_set_prop:nnn #1#2#3
+\cs_new_protected:Npn \starray_set_prop:nnn #1#2#3
{
\tl_set:Nn \l__starray_put_tl \prop_put:cnn
\__starray_parser:nnTF {\c__starray_idx_ending_bool}{#1}
@@ -1364,7 +1385,7 @@
\cs_generate_variant:Nn \starray_set_prop:nnn {nnV}
-\cs_new:Npn \starray_gset_prop:nnn #1#2#3
+\cs_new_protected:Npn \starray_gset_prop:nnn #1#2#3
{
\tl_set:Nn \l__starray_put_tl \prop_gput:cnn
\__starray_parser:nnTF {\c__starray_idx_ending_bool}{#1}
@@ -1381,7 +1402,7 @@
\cs_generate_variant:Nn \starray_gset_prop:nnn {nnV}
-\prg_new_conditional:Npnn \starray_set_prop:nnn #1#2#3 {p, T, F, TF}
+\prg_new_protected_conditional:Npnn \starray_set_prop:nnn #1#2#3 {T, F, TF}
{
\tl_set:Nn \l__starray_put_tl \prop_put:cnn
\__starray_parser:nnTF {\c__starray_idx_ending_bool}{#1}
@@ -1397,7 +1418,7 @@
\prg_generate_conditional_variant:Nnn \starray_set_prop:nnn { nnV } { p , T, F , TF }
-\prg_new_conditional:Npnn \starray_gset_prop:nnn #1#2#3 {p, T, F, TF}
+\prg_new_protected_conditional:Npnn \starray_gset_prop:nnn #1#2#3 {T, F, TF}
{
\tl_set:Nn \l__starray_put_tl \prop_gput:cnn
\__starray_parser:nnTF {\c__starray_idx_ending_bool}{#1}
@@ -1425,7 +1446,7 @@
%%%%%%%%%%%%%%%
-\prg_new_conditional:Npnn \__starray_set_parse_end:w #1#2 ] #3 \q_stop { TF}
+\prg_new_protected_conditional:Npnn \__starray_set_parse_end:w #1#2 ] #3 \q_stop { TF}
{
\quark_if_nil:nTF {#3}
{ \prg_return_false: } %% syntax ERR
@@ -1436,7 +1457,7 @@
}
-\prg_new_conditional:Npnn \__starray_set_parse_aux:w #1#2 [ \q_nil \q_stop { TF}
+\prg_new_protected_conditional:Npnn \__starray_set_parse_aux:w #1#2 [ \q_nil \q_stop { TF}
{
\__starray_set_parse_end:wTF {#1}#2 ] \q_nil\q_stop
{\prg_return_true:}
@@ -1444,7 +1465,7 @@
}
-\prg_new_conditional:Npnn \__starray_set_parse_begin:w #1#2 [ #3 \q_stop { TF}
+\prg_new_protected_conditional:Npnn \__starray_set_parse_begin:w #1#2 [ #3 \q_stop { TF}
{
\quark_if_nil:nTF {#3}
{ % no 'term' ref, just array_name (current/iter term)
@@ -1461,7 +1482,7 @@
-\cs_new:Npn \__starray_set_from_keyval_parse:nnnn #1#2#3#4
+\cs_new_protected:Npn \__starray_set_from_keyval_parse:nnnn #1#2#3#4
{
\__starray_set_prop:nnn {#3}{#4}{}
}
@@ -1479,7 +1500,7 @@
%%%%%%%%%%%%%%%
-\cs_new:Npn \__starray_set_from_keyval_parse:nnnnn #1#2#3#4#5
+\cs_new_protected:Npn \__starray_set_from_keyval_parse:nnnnn #1#2#3#4#5
{
\tl_clear:c {l__starray_tmp #1 _tl}
\__starray_set_parse_begin:wTF {#1}#4 [ \q_nil \q_stop
@@ -1604,7 +1625,7 @@
%%%%%%%%%%%%%%%
-\cs_new:Npn \__starray_set_from_keyval:nn #1#2
+\cs_new_protected:Npn \__starray_set_from_keyval:nn #1#2
{
\bool_set_true:N \l__starray_rtn_bool
\__starray_parser:nnTF {\c__starray_idx_ending_bool}{#1}
@@ -1624,20 +1645,22 @@
}
-\cs_new:Npn \starray_set_from_keyval:nn #1#2
+\cs_new_protected:Npn \starray_set_from_keyval:nn #1#2
{
\tl_set:Nn \l__starray_put_tl \prop_put:cnn
\__starray_set_from_keyval:nn {#1}{#2}
}
-\cs_new:Npn \starray_gset_from_keyval:nn #1#2
+\cs_new_protected:Npn \starray_gset_from_keyval:nn #1#2
{
\tl_set:Nn \l__starray_put_tl \prop_gput:cnn
\__starray_set_from_keyval:nn {#1}{#2}
}
-
-\cs_new:Npn \__starray_set_from_keyvalTF:nn #1#2
+%%%
+%%% small surprise, it was possible to _protected it... TODO: further test it.
+%%%
+\cs_new_protected:Npn \__starray_set_from_keyvalTF:nn #1#2
{
\bool_set_true:N \l__starray_rtn_bool
\__starray_parser:nnTF {\c__starray_idx_ending_bool}{#1}
@@ -1653,13 +1676,13 @@
{ \prg_return_false: }
}
-\prg_new_conditional:Npnn \starray_set_from_keyval:nn #1#2 {p, T, F, TF}
+\prg_new_protected_conditional:Npnn \starray_set_from_keyval:nn #1#2 {T, F, TF}
{
\tl_set:Nn \l__starray_put_tl \prop_put:cnn
\__starray_set_from_keyvalTF:nn {#1}{#2}
}
-\prg_new_conditional:Npnn \starray_gset_from_keyval:nn #1#2 {p, T, F, TF}
+\prg_new_protected_conditional:Npnn \starray_gset_from_keyval:nn #1#2 {T, F, TF}
{
\tl_set:Nn \l__starray_put_tl \prop_gput:cnn
\__starray_set_from_keyvalTF:nn {#1}{#2}
@@ -1680,7 +1703,7 @@
%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%
-\prg_new_conditional:Npnn \__starray_term_parse_end:w #1 ] #2 \q_stop { TF}
+\prg_new_protected_conditional:Npnn \__starray_term_parse_end:w #1 ] #2 \q_stop { TF}
{
\quark_if_nil:nTF {#2}
{ \prg_return_false: } %% syntax ERR
@@ -1691,7 +1714,7 @@
}
-\prg_new_conditional:Npnn \__starray_term_parse_aux:w #1 [ \q_nil \q_stop { TF}
+\prg_new_protected_conditional:Npnn \__starray_term_parse_aux:w #1 [ \q_nil \q_stop { TF}
{
\__starray_term_parse_end:wTF #1 ] \q_nil\q_stop
{\prg_return_true:}
@@ -1699,7 +1722,7 @@
}
-\prg_new_conditional:Npnn \__starray_term_parse_begin:w #1 [ #2 \q_stop { TF}
+\prg_new_protected_conditional:Npnn \__starray_term_parse_begin:w #1 [ #2 \q_stop { TF}
{
\tl_set:Nn \l__starray_parsed_term_tl {#1}
@@ -1717,9 +1740,9 @@
% verify #2 before going for #1 . . .
-% if #2 isn't empty test for it return true/false
+% if #2 isn't empty test for it, return true/false
% if #2 is empty, test if #1 is valid, return true/false
-\prg_new_conditional:Npnn \__starray_if_valid_idx:nn #1#2 {p, T, F, TF}
+\prg_new_protected_conditional:Npnn \__starray_if_valid_idx:nn #1#2 {T, F, TF}
{
\prop_get:cnN {\l__starray_prefix_tl \l__starray_parsed_ref_tl _base_prop} {idx_hash} \l_tmpa_prop
@@ -1738,9 +1761,13 @@
{\prg_return_false:}
}
-\prg_generate_conditional_variant:Nnn \__starray_if_valid_idx:nn {ee} {p, T, F, TF}
+\prg_generate_conditional_variant:Nnn \__starray_if_valid_idx:nn {ee} {T, F, TF}
+
-\cs_new:Npn \__starray_ref_parse:w #1 . #2 \q_stop
+%%%
+%%% small surprise, it was possible to _protected this... TODO: further test it.
+%%%
+\cs_new_protected:Npn \__starray_ref_parse:w #1 . #2 \q_stop
{
\tl_put_right:Ne \l__starray_parsed_tl {#1}
@@ -1846,7 +1873,7 @@
%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%
-\prg_new_conditional:Npnn \__starray_parser:nn #1#2 {p, T, F, TF}
+\prg_new_protected_conditional:Npnn \__starray_parser:nn #1#2 {T, F, TF}
{
\bool_set_eq:NN \l__starray_parser_no_idx_ending_bool #1
\bool_set_true:N \l__starray_parser_OK_bool
@@ -1874,7 +1901,7 @@
}
-\prg_new_conditional:Npnn \starray_term_syntax:n #1 {p, T, F, TF}
+\prg_new_protected_conditional:Npnn \starray_term_syntax:n #1 {T, F, TF}
{
\__starray_parser:nnTF {\c__starray_idx_ending_bool}{#1}
{\prg_return_true:}
@@ -1901,7 +1928,7 @@
%%%%%%%%%%%%%%%
-\cs_new:Npn \__starray_show_def_item:nnn #1#2#3
+\cs_new_protected:Npn \__starray_show_def_item:nnn #1#2#3
{
\tl_gput_right:Nn \l__starray_tmpa_tl
{
@@ -1912,7 +1939,7 @@
}
}
-\cs_new:Npn \__starray_show_def:nnn #1#2#3
+\cs_new_protected:Npn \__starray_show_def:nnn #1#2#3
{
\group_begin:
\tl_gput_right:Nn \l__starray_tmpa_tl
@@ -1951,7 +1978,7 @@
%%%%
%%%%%%%%%%%%%%%
-\cs_new:Npn \starray_show_def:n #1
+\cs_new_protected:Npn \starray_show_def:n #1
{
\tl_clear:N \l__starray_tmpa_tl
\tl_set:Nn \l__starray_showcmd_tl \iow_newline:
@@ -1963,7 +1990,7 @@
{ \tl_use:N \l__starray_tmpa_tl }
}
-\cs_new:Npn \starray_show_def_in_text:n #1
+\cs_new_protected:Npn \starray_show_def_in_text:n #1
{
\tl_clear:N \l__starray_tmpa_tl
\tl_set:Nn \l__starray_showcmd_tl \par
@@ -1991,7 +2018,7 @@
%%%%%%%%%%%%%%%
-\cs_new:Npn \__starray_show_term_item:nnnnn #1#2#3#4#5
+\cs_new_protected:Npn \__starray_show_term_item:nnnnn #1#2#3#4#5
{
\group_begin:
\tl_gput_right:Nn \l__starray_tmpa_tl
@@ -2027,7 +2054,7 @@
-\cs_new:Npn \__starray_show_terms:nnn #1#2#3
+\cs_new_protected:Npn \__starray_show_terms:nnn #1#2#3
{
\group_begin:
\prop_get:cnc
@@ -2049,7 +2076,7 @@
%%%%
%%%%%%%%%%%%%%%
-\cs_new:Npn \starray_show_terms:n #1
+\cs_new_protected:Npn \starray_show_terms:n #1
{
\tl_clear:N \l__starray_tmpa_tl
\tl_set:Nn \l__starray_showcmd_tl \iow_newline:
@@ -2061,7 +2088,7 @@
{ \tl_use:N \l__starray_tmpa_tl }
}
-\cs_new:Npn \starray_show_terms_in_text:n #1
+\cs_new_protected:Npn \starray_show_terms_in_text:n #1
{
\tl_clear:N \l__starray_tmpa_tl
\tl_set:Nn \l__starray_showcmd_tl \par
diff --git a/macros/latex/contrib/tagpdf/README.md b/macros/latex/contrib/tagpdf/README.md
index 334b394fcb..52a80b7f48 100644
--- a/macros/latex/contrib/tagpdf/README.md
+++ b/macros/latex/contrib/tagpdf/README.md
@@ -1,6 +1,6 @@
#tagpdf — A package to create tagged pdf
-Packageversion: 0.98f
-Packagedate: 2023/04/24
+Packageversion: 0.98g
+Packagedate: 2023/05/16
Author: Ulrike Fischer
## License
diff --git a/macros/latex/contrib/tagpdf/tagpdf-backend.dtx b/macros/latex/contrib/tagpdf/tagpdf-backend.dtx
index 7601935528..2f0e0fa8b9 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-backend.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-backend.dtx
@@ -47,13 +47,13 @@
% }^^A
% }
%
-% \date{Version 0.98f, released 2023-04-24}
+% \date{Version 0.98g, released 2023-05-16}
% \maketitle
% \begin{implementation}
% \begin{macrocode}
%<@@=tag>
%<*luatex>
-\ProvidesExplFile {tagpdf-luatex.def} {2023-04-24} {0.98f}
+\ProvidesExplFile {tagpdf-luatex.def} {2023-05-16} {0.98g}
{tagpdf~driver~for~luatex}
% \end{macrocode}
% \section{Loading the lua}
@@ -158,8 +158,8 @@
local ProvidesLuaModule = {
name = "tagpdf",
- version = "0.98f", --TAGVERSION
- date = "2023-04-24", --TAGDATE
+ version = "0.98g", --TAGVERSION
+ date = "2023-05-16", --TAGDATE
description = "tagpdf lua code",
license = "The LATEX Project Public License 1.3c"
}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-checks.dtx b/macros/latex/contrib/tagpdf/tagpdf-checks.dtx
index acabf29f97..830e667b52 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-checks.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-checks.dtx
@@ -48,7 +48,7 @@
% }^^A
% }
%
-% \date{Version 0.98f, released 2023-04-24}
+% \date{Version 0.98g, released 2023-05-16}
% \maketitle
% \begin{documentation}
% \section{Commands}
@@ -295,7 +295,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-checks-code} {2023-04-24} {0.98f}
+\ProvidesExplPackage {tagpdf-checks-code} {2023-05-16} {0.98g}
{part of tagpdf - code related to checks, conditionals, debugging and messages}
%</header>
% \end{macrocode}
@@ -441,7 +441,7 @@
% parent tags.
% \begin{macrocode}
\msg_new:nnn { tag } {role-parent-child}
- { Rule~'#1'~-->~'#2'~is~#3}
+ { Rule~'#1'~-->~'#2'~is~#3~\msg_line_context:}
% \end{macrocode}
% \end{macro}
% \begin{macro}{role-parent-child}
@@ -633,7 +633,7 @@
\prop_get:cnNT
{g_@@_struct_\@@_ref_value:enn{tagpdfstruct-#1}{tagstruct}{unknown}_prop}
{P}
- \l_tmpa_tl
+ \l_@@_tmpa_tl
{
\msg_warning:nnn { tag } {struct-used-twice} {#1}
}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-code.pdf b/macros/latex/contrib/tagpdf/tagpdf-code.pdf
index f37e06b89a..96903459f9 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-code.pdf
+++ b/macros/latex/contrib/tagpdf/tagpdf-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/tagpdf/tagpdf-data.dtx b/macros/latex/contrib/tagpdf/tagpdf-data.dtx
index fbdf89360e..b2955c8a94 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-data.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-data.dtx
@@ -47,7 +47,7 @@
% }^^A
% }
%
-% \date{Version 0.98f, released 2023-04-24}
+% \date{Version 0.98g, released 2023-05-16}
% \maketitle
% \begin{documentation}
% This files contains a various data files which are read in
@@ -60,7 +60,7 @@
% It lists the new tag, the rolemap and the namespace of the rolemap.
% \begin{macrocode}
%<*ns-latex>
-%% \ProvidesExplFile {tagpdf-ns-latex.def} {2023-04-24} {0.98f}
+%% \ProvidesExplFile {tagpdf-ns-latex.def} {2023-05-16} {0.98g}
%% {latex} {https://www.latex-project.org/ns/dflt/2022}{}
title, Title, pdf2,
part, Title, pdf2,
@@ -92,7 +92,7 @@ text, P, pdf2,
% It is bound to change
% \begin{macrocode}
%<*ns-latex-book>
-%% \ProvidesExplFile {tagpdf-ns-latex-book.def} {2023-04-24} {0.98f}
+%% \ProvidesExplFile {tagpdf-ns-latex-book.def} {2023-05-16} {0.98g}
%% {latex-book} {https://www.latex-project.org/ns/book/2022}{}
chapter, H1,pdf2,
section, H2,pdf2,
@@ -108,7 +108,7 @@ subparagraph, H6,pdf2,
% It is bound to change a lot!
% \begin{macrocode}
%<*ns-latex-inline>
-%% \ProvidesExplFile {tagpdf-ns-latex-inline.def} {2023-04-24} {0.98f}
+%% \ProvidesExplFile {tagpdf-ns-latex-inline.def} {2023-05-16} {0.98g}
%% {latex-inline} {https://www.latex-project.org/ns/inline/2022}{}
chapter, Span, pdf2,
section, Span, pdf2,
@@ -122,7 +122,7 @@ P, Span, pdf2,
% \section{The pdf namespace data}
% \begin{macrocode}
%<*ns-pdf>
-%% \ProvidesExplFile {tagpdf-ns-pdf.def} {2023-04-24} {0.98f}
+%% \ProvidesExplFile {tagpdf-ns-pdf.def} {2023-05-16} {0.98g}
%% {pdf} {http://iso.org/pdf/ssn}{}
StructTreeRoot,StructTreeRoot,pdf,D,
Document,Document,pdf,D,
@@ -190,7 +190,7 @@ Strong,Span,pdf,I,
% \section{The pdf 2.0 namespace data}
% \begin{macrocode}
%<*ns-pdf2>
-%% \ProvidesExplFile {tagpdf-ns-pdf2.def} {2023-04-24} {0.98f}
+%% \ProvidesExplFile {tagpdf-ns-pdf2.def} {2023-05-16} {0.98g}
%% {pdf2} {http://iso.org/pdf2/ssn}{}
Document,Document,pdf2,D,
Part,Part,pdf2,G,
@@ -246,7 +246,7 @@ Strong,Strong,pdf2,I,
% \section{The mathml namespace data}
% \begin{macrocode}
%<*ns-mathml>
-%% \ProvidesExplFile {tagpdf-ns-mathml.def} {2023-04-24} {0.98f}
+%% \ProvidesExplFile {tagpdf-ns-mathml.def} {2023-05-16} {0.98g}
% {mathml}{http://www.w3.org/1998/Math/MathML}{}
abs,abs,mathml,
and,and,mathml,
@@ -481,7 +481,7 @@ xor,xor,mathml,
% This will perhaps change in future.
% \begin{macrocode}
%<*parent-child>
-%% \ProvidesExplFile {tagpdf-parent-child.csv} {2023-04-24} {0.98f}
+%% \ProvidesExplFile {tagpdf-parent-child.csv} {2023-05-16} {0.98g}
,,,StructTreeRoot,Document,Art,Part,Div,Sect,BlockQuote,NonStruct,TOC,TOCI,Index,Private,Quote,Note,Reference,BibEntry,P,Hn,H,Lbl,Code,Span,Link,Annot,Form,Ruby,RB,RT,RP,Warichu,WT,WP,L,LI,LBody,Table,TR,TH,TD,THead,TBody,TFoot,Caption,Figure,Formula,MC
Document,both,document level,1,0..n,∅,‡,‡,∅,0..n,‡,∅,∅,∅,0..n,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅
Art,1.7,grouping,∅,0..n,∅,‡,‡,0..n,0..n,‡,∅,∅,∅,0..n,∅,0..n,∅,∅,∅,0..1,0..1,∅,∅,∅,0..n,0..n,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,0..n,∅,∅,0..n,0..n,∅,∅,∅,0..n,0..n,∅,∅
@@ -536,7 +536,7 @@ MC,both,---,∅,∅,∅,∅,∅,∅,0..n,‡,∅,∅,∅,0..n,0..n,0..n,0..n,0..
% This will perhaps change in future.
% \begin{macrocode}
%<*parent-child-2>
-%% \ProvidesExplFile {tagpdf-parent-child-2.csv} {2023-04-24} {0.98f}
+%% \ProvidesExplFile {tagpdf-parent-child-2.csv} {2023-05-16} {0.98g}
,,,StructTreeRoot,Document,DocumentFragment,Art,Part,Div,Sect,Aside,BlockQuote,NonStruct,TOC,TOCI,Index,Private,Title,Sub,Quote,Note,Reference,BibEntry,P,Hn,H,Lbl,Code,Em,Strong,Span,Link,Annot,Form,Ruby,RB,RT,RP,Warichu,WT,WP,FENote,L,LI,LBody,Table,TR,TH,TD,THead,TBody,TFoot,Caption,Figure,Formula,math,mathml,Artifact,MC
Document,both,document level,1,0..n,0..n,∅,‡,‡,∅,0..n,0..n,‡,∅,∅,∅,0..n,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,0..n,∅
DocumentFragment,2.0,document level,∅,0..n,0..n,0..n,‡,‡,0..n,0..n,0..n,‡,∅,∅,∅,0..n,∅,∅,∅,∅*,∅,∅,∅,∅,∅,∅,∅*,∅,∅,∅,∅*,∅*,∅,∅,∅,∅,∅,∅,∅,∅,∅*,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅*,∅,∅,∅,∅,0..n,∅
diff --git a/macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx b/macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx
index a7b129f2d3..68479088a5 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.98f, released 2023-04-24}
+% \date{Version 0.98g, released 2023-05-16}
% \maketitle
% \begin{documentation}
% \end{documentation}
@@ -55,11 +55,11 @@
% \begin{macrocode}
%<@@=tag>
%<*generic>
-\ProvidesExplPackage {tagpdf-mc-code-generic} {2023-04-24} {0.98f}
+\ProvidesExplPackage {tagpdf-mc-code-generic} {2023-05-16} {0.98g}
{part of tagpdf - code related to marking chunks - generic mode}
%</generic>
%<*debug>
-\ProvidesExplPackage {tagpdf-debug-generic} {2023-04-24} {0.98f}
+\ProvidesExplPackage {tagpdf-debug-generic} {2023-05-16} {0.98g}
{part of tagpdf - debugging code related to marking chunks - generic mode}
%</debug>
% \end{macrocode}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx b/macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx
index 08460ad418..a4f61192df 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.98f, released 2023-04-24}
+% \date{Version 0.98g, released 2023-05-16}
% \maketitle
% \begin{implementation}
% The code is splitted into three parts: code shared by all engines,
@@ -86,7 +86,7 @@
% \begin{macrocode}
%<@@=tag>
%<*luamode>
-\ProvidesExplPackage {tagpdf-mc-code-lua} {2023-04-24} {0.98f}
+\ProvidesExplPackage {tagpdf-mc-code-lua} {2023-05-16} {0.98g}
{tagpdf - mc code only for the luamode }
%</luamode>
% \end{macrocode}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx b/macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx
index fb2dcb1996..cdc0aaa5a3 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.98f, released 2023-04-24}
+% \date{Version 0.98g, released 2023-05-16}
% \maketitle
% \begin{documentation}
% \section{Public Commands}
@@ -174,7 +174,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-mc-code-shared} {2023-04-24} {0.98f}
+\ProvidesExplPackage {tagpdf-mc-code-shared} {2023-05-16} {0.98g}
{part of tagpdf - code related to marking chunks -
code shared by generic and luamode }
%</header>
diff --git a/macros/latex/contrib/tagpdf/tagpdf-roles.dtx b/macros/latex/contrib/tagpdf/tagpdf-roles.dtx
index 89216c5f88..ce860d71fa 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-roles.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-roles.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.98f, released 2023-04-24}
+% \date{Version 0.98g, released 2023-05-16}
% \maketitle
% \begin{documentation}
% \begin{function}
@@ -98,7 +98,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-roles-code} {2023-04-24} {0.98f}
+\ProvidesExplPackage {tagpdf-roles-code} {2023-05-16} {0.98g}
{part of tagpdf - code related to roles and structure names}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-space.dtx b/macros/latex/contrib/tagpdf/tagpdf-space.dtx
index 946887b06b..e8c1edfd5c 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-space.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-space.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.98f, released 2023-04-24}
+% \date{Version 0.98g, released 2023-05-16}
% \maketitle
% \begin{documentation}
% \begin{function}{interwordspace (setup-key)}
@@ -64,7 +64,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-space-code} {2023-04-24} {0.98f}
+\ProvidesExplPackage {tagpdf-space-code} {2023-05-16} {0.98g}
{part of tagpdf - code related to real space chars}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-struct.dtx b/macros/latex/contrib/tagpdf/tagpdf-struct.dtx
index 6d4d14fb89..81211bd445 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-struct.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-struct.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.98f, released 2023-04-24}
+% \date{Version 0.98g, released 2023-05-16}
% \maketitle
% \begin{documentation}
% \section{Public Commands}
@@ -247,7 +247,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-struct-code} {2023-04-24} {0.98f}
+\ProvidesExplPackage {tagpdf-struct-code} {2023-05-16} {0.98g}
{part of tagpdf - code related to storing structure}
%</header>
% \end{macrocode}
@@ -303,13 +303,6 @@
% \end{macrocode}
% \end{variable}
%
-% \begin{variable}{\g_@@_struct_tag_NS_prop}
-% For the parent-child check, we need the tag and NS of every structure
-% \begin{macrocode}
-\prop_new:N\g_@@_struct_tag_NS_prop
-% \end{macrocode}
-% \end{variable}
-%
%
% \begin{variable}{\g_@@_struct_stack_current_tl,\l_@@_struct_stack_parent_tmpa_tl}
% The global variable will hold the current structure number. It is already
@@ -516,16 +509,17 @@
{ parentrole }
{ {StructTreeRoot}{pdf} }
-\prop_gput:Nnn \g_@@_struct_tag_NS_prop {0}{{StructTreeRoot}{pdf}}
% \end{macrocode}
-% Namespaces are pdf 2.0 but it doesn't harm
-% to have an empty entry. We could add a test, but if the code moves into
-% the kernel, timing could get tricky.
+% Namespaces are pdf 2.0.
+% If the code moves into the kernel, the setting must be probably delayed.
% \begin{macrocode}
-\@@_prop_gput:cnx
- { g_@@_struct_0_prop }
- { Namespaces }
- { \pdf_object_ref:n { @@/tree/namespaces } }
+\pdf_version_compare:NnF < {2.0}
+ {
+ \@@_prop_gput:cnx
+ { g_@@_struct_0_prop }
+ { Namespaces }
+ { \pdf_object_ref:n { @@/tree/namespaces } }
+ }
% \end{macrocode}
% \end{variable}
%
@@ -562,7 +556,6 @@
{ g_@@_struct_#1_prop }
{ S }
{ \pdf_name_from_unicode_e:n {#2} } %
- \prop_gput:Nnn \g_@@_struct_tag_NS_prop {#1}{{#2}{#3}}
}
}
{
@@ -579,7 +572,6 @@
{ NS }
{ \l_@@_get_tmpc_tl } %
}
- \prop_gput:Nnn \g_@@_struct_tag_NS_prop {#1}{{#2}{#3}}
}
}
\cs_generate_variant:Nn \@@_struct_set_tag_info:nnn {eVV}
@@ -1553,7 +1545,75 @@
%</package>
% \end{macrocode}
% \end{macro}
-%
+% \begin{macro}{\tag_struct_use_num:n}
+% This command allows to use a stashed structure in another place.
+% differently to the previous command it doesn't use a label but directly
+% a structure number to find the parent.
+% TODO: decide how it should be guarded. Probably by the struct-check.
+% \begin{macrocode}
+%<base>\cs_new_protected:Npn \tag_struct_use_num:n #1 {}
+%<*package>
+\cs_set_protected:Npn \tag_struct_use_num:n #1 %#1 is structure number
+ {
+ \@@_check_if_active_struct:T
+ {
+ \prop_if_exist:cTF
+ { g_@@_struct_#1_prop } %
+ {
+ \prop_get:cnNT
+ {g_@@_struct_#1_prop}
+ {P}
+ \l_@@_tmpa_tl
+ {
+ \msg_warning:nnn { tag } {struct-used-twice} {#1}
+ }
+ %add the label structure as kid to the current structure (can be the root)
+ \@@_struct_kid_struct_gput_right:xx
+ { \g_@@_struct_stack_current_tl }
+ { #1 }
+ %add the current structure to the labeled one as parents
+ \@@_prop_gput:cnx
+ { g_@@_struct_#1_prop }
+ { P }
+ {
+ \pdf_object_ref:e { @@/struct/\g_@@_struct_stack_current_tl }
+ }
+% \end{macrocode}
+% check if the tag is allowed as child. Here we have to retrieve the
+% tag info for the child, while the data for the parent is in
+% the global tl-vars:
+% \begin{macrocode}
+ \@@_struct_get_parentrole:eNN
+ {#1}
+ \l_@@_tmpa_tl
+ \l_@@_tmpb_tl
+ \@@_check_parent_child:VVVVN
+ \g_@@_struct_tag_tl
+ \g_@@_struct_tag_NS_tl
+ \l_@@_tmpa_tl
+ \l_@@_tmpb_tl
+ \l_@@_parent_child_check_tl
+ \int_compare:nNnT {\l_@@_parent_child_check_tl}<0
+ {
+ \cs_set_eq:NN \l_@@_role_remap_tag_tl \g_@@_struct_tag_tl
+ \cs_set_eq:NN \l_@@_role_remap_NS_tl \g_@@_struct_tag_NS_tl
+ \@@_role_remap:
+ \cs_gset_eq:NN \g_@@_struct_tag_tl \l_@@_role_remap_tag_tl
+ \cs_gset_eq:NN \g_@@_struct_tag_NS_tl \l_@@_role_remap_NS_tl
+ \@@_struct_set_tag_info:eVV
+ { \int_eval:n {\c@g_@@_struct_abs_int} }
+ \g_@@_struct_tag_tl
+ \g_@@_struct_tag_NS_tl
+ }
+ }
+ {
+ \msg_warning:nnn{ tag }{struct-label-unknown}{#1}
+ }
+ }
+ }
+%</package>
+% \end{macrocode}
+% \end{macro}
% \begin{macro}[EXP]{\tag_struct_object_ref:n}
% This is a command that allows to reference a structure. The argument is the
% number which can be get for the current structure with |\tag_get:n{struct_num}|
@@ -1643,7 +1703,7 @@
% \section{Attributes and attribute classes}
% \begin{macrocode}
%<*header>
-\ProvidesExplPackage {tagpdf-attr-code} {2023-04-24} {0.98f}
+\ProvidesExplPackage {tagpdf-attr-code} {2023-05-16} {0.98g}
{part of tagpdf - code related to attributes and attribute classes}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-tree.dtx b/macros/latex/contrib/tagpdf/tagpdf-tree.dtx
index 4692689ff3..decc64928f 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-tree.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-tree.dtx
@@ -47,13 +47,13 @@
% }^^A
% }
%
-% \date{Version 0.98f, released 2023-04-24}
+% \date{Version 0.98g, released 2023-05-16}
% \maketitle
% \begin{implementation}
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-tree-code} {2023-04-24} {0.98f}
+\ProvidesExplPackage {tagpdf-tree-code} {2023-05-16} {0.98g}
{part of tagpdf - code related to writing trees and dictionaries to the pdf}
%</header>
% \end{macrocode}
@@ -310,7 +310,7 @@
% This is the main command to assemble the page related entries of the parent tree.
% It wanders through the pages and the mcid numbers and collects all mcid of one page.
% \begin{macrocode}
-
+\cs_new_protected:Npn \@@_tree_parenttree_rerun_msg: {}
\cs_new_protected:Npn \@@_tree_fill_parenttree:
{
\int_step_inline:nnnn{1}{1}{\@@_ref_value_lastpage:nn{abspage}{-1}} %not quite clear if labels are needed. See lua code
@@ -350,7 +350,10 @@
}
}
{
- \msg_warning:nn { tag } {tree-mcid-index-wrong}
+ \cs_set_protected:Npn \@@_tree_parenttree_rerun_msg:
+ {
+ \msg_warning:nn { tag } {tree-mcid-index-wrong}
+ }
}
}
\tl_put_right:Nn
@@ -396,6 +399,7 @@
{
\@@_tree_fill_parenttree:
}
+ \@@_tree_parenttree_rerun_msg:
\tl_put_right:NV \l_@@_parenttree_content_tl\g_@@_parenttree_objr_tl
\pdf_object_write:nnx { @@/tree/parenttree }{dict}
{
diff --git a/macros/latex/contrib/tagpdf/tagpdf-user.dtx b/macros/latex/contrib/tagpdf/tagpdf-user.dtx
index 9df99ecda2..36da045bba 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-user.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-user.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.98f, released 2023-04-24}
+% \date{Version 0.98g, released 2023-05-16}
% \maketitle
% \begin{documentation}
% \section{Setup commands}
@@ -250,7 +250,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-user} {2023-04-24} {0.98f}
+\ProvidesExplPackage {tagpdf-user} {2023-05-16} {0.98g}
{tagpdf - user commands}
%</header>
% \end{macrocode}
@@ -513,28 +513,30 @@
%
% \section{Commands to extend document commands}
% The following commands and code parts are not core command of tagpdf.
-% The either provide work arounds for missing functionality elsewhere,
+% They either provide work-arounds for missing functionality elsewhere,
% or do a first step to apply tagpdf commands to document commands.
% This part should be regularly revisited to check if the code should go to a
% better place or can be improved.
% \subsection{Document structure}
-% \begin{macro}{\@@_add_document_structure:n,activate (setup-key)}
+% \begin{macro}{\g_@@_root_default_tl,activate (setup-key)}
% \begin{macrocode}
-\cs_new_protected:Npn \@@_add_document_structure:n #1
- {
- \hook_gput_code:nnn{begindocument}{tagpdf}{\tagstructbegin{tag=#1}}
- \hook_gput_code:nnn{tagpdf/finish/before}{tagpdf}{\tagstructend}
- }
+\tl_new:N\g_@@_root_default_tl
+\tl_gset:Nn\g_@@_root_default_tl {Document}
+
+\hook_gput_code:nnn{begindocument}{tagpdf}{\tagstructbegin{tag=\g_@@_root_default_tl}}
+\hook_gput_code:nnn{tagpdf/finish/before}{tagpdf}{\tagstructend}
+
\keys_define:nn { @@ / setup}
- {
- activate .code:n =
+ {
+ activate .code:n =
{
\keys_set:nn { @@ / setup }
{ activate-mc,activate-tree,activate-struct }
- \@@_add_document_structure:n {#1}
+ \tl_gset:Nn\g_@@_root_default_tl {#1}
},
- activate .default:n = Document
+ activate .default:n = Document
}
+
% \end{macrocode}
% \end{macro}
% \subsection{Structure destinations}
@@ -563,7 +565,7 @@
% \subsection{Fake space}
% \begin{macro}{\pdffakespace}
% We need a luatex variant for |\pdffakespace|. This should probably go into
-% the kernel at some time.
+% the kernel at some time. We also provide a no-op version for dvi mode
% \begin{macrocode}
\sys_if_engine_luatex:T
{
@@ -572,6 +574,7 @@
\@@_fakespace:
}
}
+\providecommand\pdffakespace{}
% \end{macrocode}
% \end{macro}
%
@@ -697,26 +700,35 @@
}
}
}
+% \end{macrocode}
+% We check the para count at the end. If tagging is not active it is not a error,
+% but we issue a warning as it perhaps indicates that the testphase code didn't guard
+% everything correctly.
+% \begin{macrocode}
\AddToHook{enddocument/info}
{
- \int_compare:nNnF {\g_@@_para_main_begin_int}={\g_@@_para_main_end_int}
+ \tag_if_active:F
{
- \msg_error:nnxxx
- {tag}
- {para-hook-count-wrong}
- {\int_use:N\g_@@_para_main_begin_int}
- {\int_use:N\g_@@_para_main_end_int}
- {text-unit}
- }
+ \msg_redirect_name:nnn { tag } { para-hook-count-wrong } { warning }
+ }
+ \int_compare:nNnF {\g_@@_para_main_begin_int}={\g_@@_para_main_end_int}
+ {
+ \msg_error:nnxxx
+ {tag}
+ {para-hook-count-wrong}
+ {\int_use:N\g_@@_para_main_begin_int}
+ {\int_use:N\g_@@_para_main_end_int}
+ {text-unit}
+ }
\int_compare:nNnF {\g_@@_para_begin_int}={\g_@@_para_end_int}
- {
- \msg_error:nnxxx
- {tag}
- {para-hook-count-wrong}
- {\int_use:N\g_@@_para_begin_int}
- {\int_use:N\g_@@_para_end_int}
- {text}
- }
+ {
+ \msg_error:nnxxx
+ {tag}
+ {para-hook-count-wrong}
+ {\int_use:N\g_@@_para_begin_int}
+ {\int_use:N\g_@@_para_end_int}
+ {text}
+ }
}
% \end{macrocode}
% In generic mode we need the additional code from the ptagging tests.
diff --git a/macros/latex/contrib/tagpdf/tagpdf.dtx b/macros/latex/contrib/tagpdf/tagpdf.dtx
index 0ce62a8984..e9a394b5d4 100644
--- a/macros/latex/contrib/tagpdf/tagpdf.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf.dtx
@@ -36,7 +36,7 @@
% \begin{function}{ \tag_stop_group_begin:, \tag_stop_group_end:,
% \tag_stop:, \tag_start: }
% We need commands to stop tagging in some places.
-% There simply switches the two local booleans. The grouping commands
+% They simply switches the two local booleans. The grouping commands
% can be used to group the effect.
% \end{function}
%
@@ -92,7 +92,7 @@
% \begin{macrocode}
%<@@=tag>
%<*package>
-\ProvidesExplPackage {tagpdf} {2023-04-24} {0.98f}
+\ProvidesExplPackage {tagpdf} {2023-05-16} {0.98g}
{ A package to experiment with pdf tagging }
\bool_if:nF
@@ -118,7 +118,7 @@
% \end{macrocode}
%<*debug>
% \begin{macrocode}
-\ProvidesExplPackage {tagpdf-debug} {2023-04-24} {0.98f}
+\ProvidesExplPackage {tagpdf-debug} {2023-05-16} {0.98g}
{ debug code for tagpdf }
\@ifpackageloaded{tagpdf}{}{\PackageWarning{tagpdf-debug}{tagpdf~not~loaded,~quitting}\endinput}
% \end{macrocode}
@@ -141,7 +141,7 @@
% we define a base package with dummy functions
% \begin{macrocode}
%<*base>
-\ProvidesExplPackage {tagpdf-base} {2023-04-24} {0.98f}
+\ProvidesExplPackage {tagpdf-base} {2023-05-16} {0.98g}
{part of tagpdf - provide base, no-op versions of the user commands }
%</base>
% \end{macrocode}
diff --git a/macros/latex/contrib/tagpdf/tagpdf.pdf b/macros/latex/contrib/tagpdf/tagpdf.pdf
index 169a7cbb42..f5f890701e 100644
--- a/macros/latex/contrib/tagpdf/tagpdf.pdf
+++ b/macros/latex/contrib/tagpdf/tagpdf.pdf
Binary files differ
diff --git a/macros/latex/contrib/tagpdf/tagpdf.tex b/macros/latex/contrib/tagpdf/tagpdf.tex
index 89b0c73b0e..cc3295488e 100644
--- a/macros/latex/contrib/tagpdf/tagpdf.tex
+++ b/macros/latex/contrib/tagpdf/tagpdf.tex
@@ -15,8 +15,8 @@
}
\DebugBlocksOff
\makeatletter
-\def\UlrikeFischer@package@version{0.98f}
-\def\UlrikeFischer@package@date{2023-04-24}
+\def\UlrikeFischer@package@version{0.98g}
+\def\UlrikeFischer@package@date{2023-05-16}
\makeatother
\documentclass[DIV=12,parskip=half-,bibliography=totoc,a4paper]{article}
@@ -558,6 +558,7 @@ command so that \pkg{tagpdf} can pick up the correct code path.
{
% testphase = phase-I, % tagging without paragraph tagging
testphase = phase-II % tagging with paragraph tagging and other new stuff.
+ % testphase = phase-III % tagging with paragraph sec, toc, block tagging and more
% pdfversion = 2.0 % pdfversion must be set here.
}
\documentclass{article}
@@ -566,10 +567,26 @@ some text
\end{document}
\end{taglstlisting}
-\minisec{Activation needed!}
+\minisec{Deactivation}
-It is not recommended anymore, but
-the package can also be loaded normally with |\usepackage| (but it is
+When loading \pkg{tagpdf} through the \texttt{testphase} keys, it is automatically activated.
+To deactivate it while still retaining all the other new code from the latex-lab testphase files,
+use in the preamble |\tagpdfsetup{activate-all=false}|. You can additionally also deactivate the
+paratagging and the interword space code.
+To suppress the loading of the package alltogether you can try
+
+\begin{taglstlisting}
+\makeatletter
+\disable@package@load{tagpdf}{}
+\makeatother
+\DocumentMetadata{...}
+\end{taglstlisting}
+
+
+\minisec{Loading as package needs activation!}
+
+It is not recommended anymore, but the package can also be loaded normally with |\usepackage|
+(but it is
still required to use \cs{DocumentMetadata} to load the \PDF\ management) but
it will then -- apart from loading more packages and defining a lot of things -- not do much. You will have to \emph{activate} it with \verb+\tagpdfsetup+.
@@ -1745,7 +1762,8 @@ These commands insert a structure previously stashed away as kid into the curren
-A document should have at least one structure which contains the whole document. A suitable tag is \texttt{Document} or \texttt{Article}. I'm considering to automatically inserting it.
+A document should have at least one structure which contains the whole document. A suitable tag is \texttt{Document}.
+Such a root is now always added automatically. Its type can be changed with the key \texttt{activate}.
diff --git a/macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty b/macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty
index 3590017267..527d7bec01 100644
--- a/macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty
+++ b/macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty
@@ -1,5 +1,5 @@
%\RequirePackage[enable-debug]{expl3}[2018/06/14]
-\ProvidesExplPackage {tagpdfdocu-patches} {2023-04-24} {0.98f}
+\ProvidesExplPackage {tagpdfdocu-patches} {2023-05-16} {0.98g}
{patches/commands for the tagpdf documentation}
\RequirePackage{etoolbox,xpatch}
diff --git a/macros/unicodetex/latex/adobeornaments/README b/macros/unicodetex/latex/adobeornaments/README
index 26ab362f34..9a90f7b44b 100644
--- a/macros/unicodetex/latex/adobeornaments/README
+++ b/macros/unicodetex/latex/adobeornaments/README
@@ -1,16 +1,17 @@
adobeornaments - adobe ornaments in LaTeX
-version: 1.0.0
+version: 1.0.1
This package provides an easy way to use Adobe fonts' ornaments in LaTeX. NOTE: the Adobe fonts are not included with the package and must be purchased separately.
This work may be distributed and/or modified under the conditions of the
-LaTeX Project Public License (LPPL), version 1.3 or later.
+LaTeX Project Public License (LPPL), version 1.3c or later.
For suggestions, feature requests, and bug reports, please use the project's
GitHub site: https://github.com/ezgranet/adobeornaments
Version history:
+15/05/2023 - revise typo in README
14/05/2023 - package creation \ No newline at end of file
diff --git a/macros/unicodetex/latex/adobeornaments/adobeornaments-documentation.pdf b/macros/unicodetex/latex/adobeornaments/adobeornaments-documentation.pdf
index 153a613396..b677ff8ee1 100644
--- a/macros/unicodetex/latex/adobeornaments/adobeornaments-documentation.pdf
+++ b/macros/unicodetex/latex/adobeornaments/adobeornaments-documentation.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/adobeornaments/adobeornaments-documentation.tex b/macros/unicodetex/latex/adobeornaments/adobeornaments-documentation.tex
index 2d2210bd5f..41a15d6121 100644
--- a/macros/unicodetex/latex/adobeornaments/adobeornaments-documentation.tex
+++ b/macros/unicodetex/latex/adobeornaments/adobeornaments-documentation.tex
@@ -223,6 +223,9 @@ firstnumber=last
\section{Version History}
+\subsection{\texttt{1.0.1}}
+
+\ttfamily 15 May 2023: Fix typo in readme
\subsection{\texttt{1.0.0}}
diff --git a/macros/unicodetex/latex/adobeornaments/adobeornaments.sty b/macros/unicodetex/latex/adobeornaments/adobeornaments.sty
index b4718c86da..deb328c2f2 100644
--- a/macros/unicodetex/latex/adobeornaments/adobeornaments.sty
+++ b/macros/unicodetex/latex/adobeornaments/adobeornaments.sty
@@ -1,6 +1,6 @@
-\def\adobeornamentsversionnumber{1.0.0}
+\def\adobeornamentsversionnumber{1.0.1}
\ProvidesPackage{adobeornaments}
-[2023/05/13\adobeornamentsversionnumber\
+[2023/05/15\adobeornamentsversionnumber\
Command for ornaments in Adobe fonts]
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
diff --git a/macros/unicodetex/latex/textcsc/README b/macros/unicodetex/latex/textcsc/README
index 5ff7cb77ec..908b390cf9 100644
--- a/macros/unicodetex/latex/textcsc/README
+++ b/macros/unicodetex/latex/textcsc/README
@@ -1,16 +1,17 @@
textcsc - caps-to-small-caps command
-version: 1.1.0
+version: 1.2.0
This package provides a simple command for caps-to-small-caps text, to allow for small caps acronyms to be presented as uppercase in text (useful for things like copying and pasting from a PDF).
This work may be distributed and/or modified under the conditions of the
-LaTeX Project Public License (LPPL), version 1.3 or later.
+LaTeX Project Public License (LPPL), version 1.3c or later.
For suggestions, feature requests, and bug reports, please use the project's
GitHub site: https://github.com/ezgranet/textcsc
Version history:
+10/05/2023 added support for only caps to small caps
24/04/2023 fixed letterspacing issue
10/09/2022 Package creation \ No newline at end of file
diff --git a/macros/unicodetex/latex/textcsc/textcsc-documentation.pdf b/macros/unicodetex/latex/textcsc/textcsc-documentation.pdf
index e18bc2b423..a054e8b385 100644
--- a/macros/unicodetex/latex/textcsc/textcsc-documentation.pdf
+++ b/macros/unicodetex/latex/textcsc/textcsc-documentation.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/textcsc/textcsc-documentation.tex b/macros/unicodetex/latex/textcsc/textcsc-documentation.tex
index 12f1cdd871..cbda0e7f18 100644
--- a/macros/unicodetex/latex/textcsc/textcsc-documentation.tex
+++ b/macros/unicodetex/latex/textcsc/textcsc-documentation.tex
@@ -85,10 +85,36 @@ Produces:
The \textcsc{CIA} and the \textcsc{FBI}
\end{quote}
+
+If you want to convert only capitals to small capitals (for example, because your style guide, like that of \textit{The Economist} prescribes mixed small-caps and lowercase abbreviations), then you can use the macro \verb!\csconly{#1}! or the switch \verb!\csconlyshape! For example, the commands:
+\begin{minted}[
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+breaklines,
+firstnumber=last
+]
+{latex}
+She earned first an \csconly{MSc} and then a \csconlyshape PhD
+\end{minted}
+
+Produce:
+
+\begin{quote}
+
+She earned first an \csconly{MSc} and then a \csconlyshape PhD
+\end{quote}
+
+
+\normalfont
+
+
+
\section{Development}
-Bugs, feature requests, \textit{etc}, should be submitted to the project's official Githup page: (\url{github.com/ezgranet/textcsc}).
+Bugs, feature requests, \textit{etc}, should be submitted to the project's official Github page: (\url{github.com/ezgranet/textcsc}).
\section{Licence}
- This project is licensed under the Latex Public Project Licence version 1.3\textit{c}. This documentation is copyright of the author but licensed under \textcsc{CC-BY-SA} 3.0.
+ This project is licensed under the \LaTeX\ Public Project Licence version 1.3\textit{c}. This documentation is copyright of the author but licensed under \textcsc{CC-BY-SA} 3.0.
\clearpage
\section{Implementation}
\begin{minted}[
@@ -103,9 +129,9 @@ firstnumber=last
]
{latex}
-\def\textcscversionnumber{1.1}
-\ProvidesPackage{textcsc-dev}
-[2023/04/24\textcscversionnumber\
+\def\textcscversionnumber{1.2}
+\ProvidesPackage{textcsc}
+[2023/05/10\textcscversionnumber\
Command for caps-to-small-caps-text]
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
@@ -156,20 +182,26 @@ firstnumber=last
\newcommand{\textcsc}[1]{{\cscshape%
#1%
}}
-
+\newcommand{\csconlyshape}{\addfontfeature{RawFeature={+c2sc}}}
+\newcommand{\csconly}[1]{{\csconlyshape%
+#1%
+}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%
% all done
%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%
\end{minted}
-
\section{Version History}
+\subsection{\texttt{1.2.0}}
+\ttfamily 24 April 2023: added option for only caps to small caps text.
\subsection{\texttt{1.1.0}}
+
+
\ttfamily 24 April 2023: Update to fix issue with LetterSpace property not carrying over.
diff --git a/macros/unicodetex/latex/textcsc/textcsc.pdf b/macros/unicodetex/latex/textcsc/textcsc.pdf
deleted file mode 100644
index b01d83f92b..0000000000
--- a/macros/unicodetex/latex/textcsc/textcsc.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/unicodetex/latex/textcsc/textcsc.sty b/macros/unicodetex/latex/textcsc/textcsc.sty
index 63c9e27680..cd99a8641c 100644
--- a/macros/unicodetex/latex/textcsc/textcsc.sty
+++ b/macros/unicodetex/latex/textcsc/textcsc.sty
@@ -1,6 +1,6 @@
-\def\textcscversionnumber{1.1}
-\ProvidesPackage{textcsc-dev}
-[2023/04/24\textcscversionnumber\
+\def\textcscversionnumber{1.2}
+\ProvidesPackage{textcsc}
+[2023/05/10\textcscversionnumber\
Command for caps-to-small-caps-text]
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
@@ -51,7 +51,10 @@
\newcommand{\textcsc}[1]{{\cscshape%
#1%
}}
-
+\newcommand{\csconlyshape}{\addfontfeature{RawFeature={+c2sc}}}
+\newcommand{\csconly}[1]{{\csconlyshape%
+#1%
+}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%
% all done
diff --git a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
index ad44be49ea..85f6db83c1 100644
--- a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
+++ b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
@@ -89,7 +89,6 @@ $mirrors = {
'https://ctan.mines-albi.fr/' => 1,
'https://ctan.tetaneutral.net/' => 1,
'https://distrib-coffee.ipsl.jussieu.fr/pub/mirrors/ctan/' => 1,
- 'https://mirror.ibcp.fr/pub/CTAN/' => 1,
'https://mirrors.ircam.fr/pub/CTAN/' => 1,
'https://texlive.mycozy.space/' => 1,
},
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb b/systems/texlive/tlnet/tlpkg/texlive.tlpdb
index f120cccc09..24bff8cb14 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/67128
+depend revision/67136
name 00texlive.image
category TLCore
-revision 67125
+revision 67131
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
@@ -4743,7 +4743,7 @@ depend setting_available_architectures:aarch64-linux amd64-freebsd amd64-netbsd
name 00texlive.installer
category TLCore
-revision 67117
+revision 67130
shortdesc TeX Live standalone installer package
longdesc This package defines the files to go into the installer
longdesc archives (install-tl-unx.tar.gz, install-tl.zip) built by the
@@ -36521,7 +36521,7 @@ catalogue-version 2.5
name bibcop
category Package
-revision 65816
+revision 67131
shortdesc Style checker for .bib files
longdesc This LaTeX package checks the quality of your .bib file and
longdesc emits warning messages if any issues are found. For this, the
@@ -36532,10 +36532,10 @@ longdesc Windows.
depend bibcop.ARCH
depend iexec
depend pgfopts
-containersize 6464
-containerchecksum a035642f1b1827f0b6b4d15b4115054b9ab3ff49d7d369f3e304cab5964a707b23865b837c6b156b913e33fe8ae5589941e6ff284ee0b62454a9eb8ec77f3442
-doccontainersize 355000
-doccontainerchecksum 93abe6f0a97138237d7546d132385069f8ff8a638a31cf9be23619b812fa578af808e6f9ce04c06778a4559b1eef98b7d24a0ce5ce6eb5ca9680fc2ddbf7c4b8
+containersize 6824
+containerchecksum cc41b486476d93df5fa1bf9ccbeacc209dacc776ff780a2e32b3d20dec19d182b5866457f39ba86b2892e2c74a62db2ec32701c2fdfbda55f2712f92acd6db08
+doccontainersize 355032
+doccontainerchecksum 968d84cf6a1bca9fc165f7566bb1a458cbe0b4d98e3eb73ec57cfca274dcc6d7dfdb138f93a44c0abf32dbe465564e640b7963e9f479e820bb82749221747195
docfiles size=94
texmf-dist/doc/bibtex/bibcop/DEPENDS.txt
texmf-dist/doc/bibtex/bibcop/LICENSE.txt
@@ -36545,18 +36545,18 @@ docfiles size=94
texmf-dist/doc/man/man1/bibcop.1
texmf-dist/doc/man/man1/bibcop.man1.pdf
srccontainersize 5628
-srccontainerchecksum 42a5b9a9f058afa6a1460a3a7c6f7dc9ded6abbd8915529f8366d2df9c2871727bc766a407d2dbbb6716420da7115af5bc2795b343c974f2bf0e1d673d8e96f3
+srccontainerchecksum b4136fec12bba754940e1e7687c88c3a538b12ae88afb9a157a6131522158effc09903c87146d86a92e1c99fc1af2c77718e5dcb7a1eb4baf10e791c85fee796
srcfiles size=5
texmf-dist/source/bibtex/bibcop/bibcop.dtx
texmf-dist/source/bibtex/bibcop/bibcop.ins
-runfiles size=6
+runfiles size=7
texmf-dist/scripts/bibcop/bibcop.pl
texmf-dist/tex/latex/bibcop/bibcop.sty
catalogue-contact-repository https://github.com/yegor256/bibcop
catalogue-ctan /biblio/bibtex/utils/bibcop
catalogue-license mit
catalogue-topics biblio-supp ext-code
-catalogue-version 0.0.9
+catalogue-version 0.0.10
name bibcop.aarch64-linux
category Package
@@ -169973,7 +169973,7 @@ catalogue-version 3.35
name kpfonts-otf
category Package
-revision 66722
+revision 67132
shortdesc OTF version of the Kp-fonts
relocated 1
longdesc This bundle provides OpenType versions of the Type1 Kp-fonts
@@ -169987,10 +169987,10 @@ longdesc st), ancient long-s and a long-tailed capital Q are available
longdesc via font features. Math fonts cover all usual symbols including
longdesc AMS'; a full list of available symbols is provided, see the
longdesc 'List of glyphs'.
-containersize 1096696
-containerchecksum 262a08c86543b137b2a5136cf19052fbca0ad81db2df1439b4e792708d0b15cf304a93f6970f64c42e6efb71c8cd4e3038e480a1eba2fa832d1c0b6c43b8a4ec
-doccontainersize 2099776
-doccontainerchecksum bde9fea5773a2d8f17340719f1e9cfb624527f102377140449c4009aa808f9979ad11e062379070ad202b1f1d373d6e67907fa9875d78fdfd368c1862acacda7
+containersize 1097192
+containerchecksum 3b3c9309001de4aa7778609b55ad1bd75d0da7e7ea99658cfac72636c3bfd603f4e127f2446b8c5be976f4fcf05a54c95537942f9e13c566c0cc31ea7df808bd
+doccontainersize 2100404
+doccontainerchecksum 442166acb4a0410e647ba3f48c524c191a6edc0cb38a945e59ac9588ce078a6d38437b5a804285dc977b4d7106f5bb94921b56e1af979bf485fdf019dc4a5e41
docfiles size=585
RELOC/doc/fonts/kpfonts-otf/Kpfonts-OTF-Doc-English.ltx
RELOC/doc/fonts/kpfonts-otf/Kpfonts-OTF-Doc-English.pdf details="Package documentation (English)" language="en"
@@ -170031,7 +170031,7 @@ catalogue-also kpfonts
catalogue-ctan /fonts/kpfonts-otf
catalogue-license ofl lppl1.3
catalogue-topics font font-body font-serif font-sans font-proportional font-mono font-maths font-otf font-supp
-catalogue-version 0.51
+catalogue-version 0.52
name ksfh_nat
category Package
@@ -171412,7 +171412,7 @@ catalogue-topics macro-supp layout latex3 pre-release
name l3kernel
category Package
-revision 67074
+revision 67134
shortdesc LaTeX3 programming conventions
relocated 1
longdesc The l3kernel bundle provides an implementation of the LaTeX3
@@ -171422,11 +171422,11 @@ longdesc LaTeX3 kernel and other future code are built: it is an API for
longdesc TeX programmers. The packages are set up so that the LaTeX3
longdesc conventions can be used with regular LaTeX2e packages.
depend l3backend
-containersize 174324
-containerchecksum 4a0e171b6e2c677e8f4ab12528754faf558a67288d9f395e32a8a665b222c83c10189350ad1978c69ebd27e9d5384c208292b59b874333267b5e34aa0056e51e
-doccontainersize 11910288
-doccontainerchecksum a281848177796e352f6fe1ce1210c14d23bacfe4071d141dde9648859293c0a8de4efcb6b8e8521425884732f67e8d4e6745f7b45b0f7a178f76c774ef382af1
-docfiles size=3396
+containersize 172072
+containerchecksum 8d281c8a144af11ca396aa5bf20edb077b3f26ed3b3a894d08d443bf60c8a3fde0e7803d4dab4d5de4e672fcf4c6aa86531738ecf42763874d85e4a6b1053cfc
+doccontainersize 11843748
+doccontainerchecksum e52c27e95baaba936f1805e44442c9b25a8a050d1d6ab95c02ec7d87aabcf572879270a0cbad1e1f93fdd319b9ac4f3ccba1d8a2ac969a51b4c7e124dcf6151d
+docfiles size=3378
RELOC/doc/latex/l3kernel/CHANGELOG.md
RELOC/doc/latex/l3kernel/README.md details="Readme"
RELOC/doc/latex/l3kernel/expl3.pdf details="The LaTeX3 Programming Language"
@@ -171473,9 +171473,9 @@ docfiles size=3396
RELOC/doc/latex/l3kernel/source3.pdf
RELOC/doc/latex/l3kernel/source3.tex
RELOC/doc/latex/l3kernel/source3body.tex
-srccontainersize 597056
-srccontainerchecksum 52f4612ff33ce8a22ea2348e14052a84f7010bfec8acd1680cb121d71497ef24afec0a99212cf2109feac2ac9a081e55c639180abc30f2721592dda246b48f6b
-srcfiles size=919
+srccontainersize 591908
+srccontainerchecksum 880015946c8775c802b09909018e6e7619ca9f164239059b9f65be35ac770285ff0bf12b7501345000a762f1b23f77fa4de9b6b942472f176039d13d88ec0d38
+srcfiles size=910
RELOC/source/latex/l3kernel/expl3.dtx
RELOC/source/latex/l3kernel/l3.ins
RELOC/source/latex/l3kernel/l3basics.dtx
@@ -171534,7 +171534,7 @@ srcfiles size=919
RELOC/source/latex/l3kernel/l3tl.dtx
RELOC/source/latex/l3kernel/l3token.dtx
RELOC/source/latex/l3kernel/l3unicode.dtx
-runfiles size=355
+runfiles size=350
RELOC/tex/latex/l3kernel/expl3-code.tex
RELOC/tex/latex/l3kernel/expl3-generic.tex
RELOC/tex/latex/l3kernel/expl3.ltx
@@ -225765,7 +225765,7 @@ catalogue-topics font font-type1 font-decor
name nicematrix
category Package
-revision 66904
+revision 67135
shortdesc Improve the typesetting of mathematical matrices with PGF
relocated 1
longdesc This package is based on the package array. It creates PGF/TikZ
@@ -225777,26 +225777,28 @@ longdesc border matrices); control of the width of the columns; tools to
longdesc color rows and columns with a good PDF result; blocks of cells;
longdesc etc. The package requires and loads l3keys2e, xparse, array,
longdesc amsmath, pgfcore, and the module shapes of PGF.
-containersize 39352
-containerchecksum 0b7e3c527a5862885e9cefcb3e311d9adb68c92f3cd7018743df811f75c7eb23a61d53198a6a0af4b4f6f79e27ea616013e5ac43fb7bbf81da9d55feaf1617a2
-doccontainersize 1922220
-doccontainerchecksum 40be5e985cac3e6fc1233826f05945c783ed7933acf7e8331875f9e544ba207465dfd43c5f7e7f6b1275ef46b9e5ce017908120fb7e2e13af36e22d019b3cdad
-docfiles size=528
+containersize 39356
+containerchecksum 21671a61acde8241e8b1676af7e6fd84e6db3f0976dbce94f77c6b62f32572063abf0624edf249eaf2575cc9d2ea1eeaa172f8bedb3b33fa0b8e2ddf873bb578
+doccontainersize 2058676
+doccontainerchecksum 607804e3ec1c2b1ac81d2d5c7d1201593e9ad98b8b182a3fc7bf620c0ddff9dc009367d63cfd65cd8b14e2ec7bbd6b06366352713829085a9d4f223c18c47129
+docfiles size=625
RELOC/doc/latex/nicematrix/README.md details="Readme"
+ RELOC/doc/latex/nicematrix/nicematrix-code.pdf
RELOC/doc/latex/nicematrix/nicematrix-french.pdf details="Package documentation in French" language="fr"
RELOC/doc/latex/nicematrix/nicematrix-french.tex
RELOC/doc/latex/nicematrix/nicematrix.pdf details="Package documentation"
-srccontainersize 126412
-srccontainerchecksum a91217e0bb4dc64ef21a56b942842766bc42a9f7f9ebc4e87ccde444addf945652b0f5faefd9dd98cb907e8d1f964129b10d72dfcc03efaeee404d275223f7c9
-srcfiles size=195
- RELOC/source/latex/nicematrix/nicematrix.dtx
+ RELOC/doc/latex/nicematrix/nicematrix.tex
+srccontainersize 84788
+srccontainerchecksum a7f1e05b4360330426a7ea691bc9d33edb1ecf1731d9f0034e7b25eff97e760253ad5c02a860bb226caf03ac6689703a028b35a154141390ec1bb78132107db6
+srcfiles size=136
+ RELOC/source/latex/nicematrix/nicematrix-code.dtx
RELOC/source/latex/nicematrix/nicematrix.ins
runfiles size=87
RELOC/tex/latex/nicematrix/nicematrix.sty
catalogue-ctan /macros/latex/contrib/nicematrix
catalogue-license lppl1.3
catalogue-topics maths matrix pgf-tikz expl3
-catalogue-version 6.18
+catalogue-version 6.19
name nicetext
category Package
@@ -297375,7 +297377,7 @@ catalogue-version 1.1
name tagpdf
category Package
-revision 66937
+revision 67136
shortdesc Tools for experimenting with tagging using pdfLaTeX and LuaLaTeX
relocated 1
longdesc The package offers tools to experiment with tagging and
@@ -297386,11 +297388,11 @@ longdesc needed; to test what else is needed so that a pdf works e.g.
longdesc with a screen reader. Its goal is to get a feeling for what has
longdesc to be done, which kernel changes are needed, how packages
longdesc should be adapted.
-containersize 34816
-containerchecksum 0405d5f24b9706f7720306392cd478f2f74bd1b2f70d41c1172385820a47234329e386d0eb1a88c0137f0e330badc6bf30dd898d2cec7e0f0eb0939d470c9ea2
-doccontainersize 2073440
-doccontainerchecksum ba060aa895baa4c0d7d3f4263bba50f7961dcf7901f71c82a5ca0b1bcd2a804500be4c9dbf10e53c9df5767c82e8438c266ee75aa5414e43e85c190cb5888758
-docfiles size=758
+containersize 34932
+containerchecksum 269ab95609717876d6b06ff1e4e8ea79191369493a5197c948c2ca2f24c103f0e8cc4f52b53d5ee59c407761e6b86083585801dee00bc5f4739d04d0d048407c
+doccontainersize 2082936
+doccontainerchecksum 7c35f15d3f5341d23e1f4ce69762a359db82676ba1fdcf3a1cb060fc8843ea7bf1310c2ac2282a611831cc2eb5cc750723c6a45ad0fd4bfcb955c2c725f92709
+docfiles size=763
RELOC/doc/latex/tagpdf/README.md details="Readme"
RELOC/doc/latex/tagpdf/acrobat.png
RELOC/doc/latex/tagpdf/ex-AF-file.pdf
@@ -297425,8 +297427,8 @@ docfiles size=758
RELOC/doc/latex/tagpdf/tagpdf.bib
RELOC/doc/latex/tagpdf/tagpdf.pdf details="Package documentation"
RELOC/doc/latex/tagpdf/tagpdf.tex
-srccontainersize 62856
-srccontainerchecksum cdb52c1eadc692fd45484986ef552de36ca42a9b8c6b5f1477f5231ba60b876e2c18d4525994043883b5f2be82b407675b5732776d9758e4cc3fcf402ede1cf4
+srccontainersize 63112
+srccontainerchecksum 7fbe95044cc14cad87420aa4f8fe95ae3528cd94bfba3013713f49ae840be938effa67583652cbf5e4ff1b98602149d1c99bb4dbc9020ac5c848e5fc16569044
srcfiles size=92
RELOC/source/latex/tagpdf/tagpdf-backend.dtx
RELOC/source/latex/tagpdf/tagpdf-checks.dtx
@@ -297441,7 +297443,7 @@ srcfiles size=92
RELOC/source/latex/tagpdf/tagpdf-user.dtx
RELOC/source/latex/tagpdf/tagpdf.dtx
RELOC/source/latex/tagpdf/tagpdf.ins
-runfiles size=64
+runfiles size=65
RELOC/tex/latex/tagpdf/tagpdf-base.sty
RELOC/tex/latex/tagpdf/tagpdf-debug-generic.sty
RELOC/tex/latex/tagpdf/tagpdf-debug-lua.sty
@@ -297465,7 +297467,7 @@ catalogue-contact-support https://github.com/u-fischer/tagpdf/issues
catalogue-ctan /macros/latex/contrib/tagpdf
catalogue-license lppl1.3c
catalogue-topics tagged-pdf accessible expl3
-catalogue-version 0.98f
+catalogue-version 0.98g
name talk
category Package
@@ -312672,7 +312674,7 @@ docfiles size=376
name texlive-scripts
category TLCore
-revision 67117
+revision 67130
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.
@@ -312680,10 +312682,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 114088
-containerchecksum 2099c38e603ec04bb5188baebe0c72f73e28beafe51292574fa951c72af1de40009e5e2ce8e5e848812d2a971f378856863a01ff97307a94de52a277567c4314
-doccontainersize 426732
-doccontainerchecksum 1283f9e2f96945c58eae4725e5a77b4ca10308262faf5847ec91b734ff616edf94c97e7ab0b87eca7dd005c57e9af4578c02d3ce7634ab181b62eb1d27478817
+containersize 114076
+containerchecksum 1bb00c47d72fbaabb75a392c4c5c8c76188ba76eac549f74d3238d916ec791980805654b92c50870640f72f62172f123376442c8d92f1266d5840636f4843861
+doccontainersize 426844
+doccontainerchecksum f250d0d017ee942b903f2830b3cdcb92a24e769ae2e1277aff1c2e2af569aa1177e84c7325b3f250ca45a4d5f2269ca816bc283aee13c8a5c3ada603ac8b781f
docfiles size=544
doc.html
texmf-dist/doc/man/man1/fmtutil-sys.1
@@ -318928,7 +318930,7 @@ catalogue-version 1.1
name tikz-nfold
category Package
-revision 67010
+revision 67133
shortdesc Triple, quadruple, and n-fold paths with TikZ
relocated 1
longdesc This library adds higher-order paths to TikZ and also fixes
@@ -318936,15 +318938,15 @@ 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 16104
-containerchecksum 5f62243a18ffd94332f3fc5879f4fd6a93cb8d8b841c78fb7e800eba6a6b1ce3b20506ae62b5033e88c93544cc4282ef36485dca269af090959741aa605b56dc
-doccontainersize 273100
-doccontainerchecksum 021b4fea2e9b0ae05b8f69951a45c8dba5289f3213a7e66a0652aab38623429d88a028750b49ba74ec0e25c8b3bf22094c8d05aec81b4e1c819f7ab3991b51af
+containersize 16252
+containerchecksum f35fe1ce327723419001f962396ee667ecf3895c322a718a074b7e7b88dd93a2b72a153614bae73bb4ef646b8e431d653bb02cc6ed2b0c06cac491d236385c9a
+doccontainersize 273132
+doccontainerchecksum c8d4aed1376f39378ff8d3ec7b752a90bdb851e8049eba20d2098ef8fe3a1dda54722470a8a7e7ad3719ebf4a80432f9b7b7b1fff362f206b10fe1ba85d45144
docfiles size=83
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=18
+runfiles size=19
RELOC/tex/latex/tikz-nfold/pgflibrarybezieroffset.code.tex
RELOC/tex/latex/tikz-nfold/tikzlibrarynfold.code.tex
catalogue-contact-bugs https://github.com/jonschz/tikz-nfold/issues
@@ -318952,7 +318954,7 @@ 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.1
+catalogue-version 0.1.2
name tikz-opm
category Package
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
index c49f0048d2..60119880c9 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
@@ -1 +1 @@
-10fe19c46e21fdc8835d6f261ca15043 texlive.tlpdb
+fb4e62edef9b09c90f29bf15e8ea28e0 texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
index 2b8d5b650b..4b79db9567 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
@@ -1 +1 @@
-1a1e7dc893d4f9d833b5da6b88375418f45808aa0dc184ed5f6943162ea306e9f68273fe64870320e3309ed76b77668a226f1aafc2b3ca41f647b7ba7c497fbb texlive.tlpdb
+fdcb628709a00fea6ce9f1125323251cd0485996c3106c608be585407e2bbaa467952002081dc9e74c82823a29992a50ec4066de526e908ce4bbd9f58f386943 texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
index a6af3ea06e..315cafc99a 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+QqiBBqTOGHfhlDjHAFAmRiw/4ACgkQTOGHfhlD
-jHCFwQf/bG+VqXppVZD4x8PCM3gEGl6dHje2p0kznDZyKkXbjO5iVN6b9dukYaL3
-73jhH6xqkZDw5eWuRubWTENJwtKj23zh1m9163xnYAOBL67lhHkcQp+2KL0S+SGh
-0KrvesiPz8FAyB//Q1cX8CSHx/vGMg3ZClwJ3BuO4tnC/RgQBHqghRlx8a3V/7kS
-oLk6IaMtsEp7H80OpCiDXKtIiCGCTw1gBSqWSqweecpzEMCWnFljWCfuIU074MgK
-WkiSJ95cHBDcJbZAnwCpkGBHMJAzAgc5XWDMlYJbFPB70uuNp2ppdQSEg/h6VoZa
-oLWfZ3/S9ZBgEuGJbc5zpcyKWZlsxQ==
-=3i78
+iQEzBAEBCgAdFiEE2PL4YFeoV+QqiBBqTOGHfhlDjHAFAmRkFZkACgkQTOGHfhlD
+jHAWvwf/ebVXGzq4LQPdhrfNaWNeOFU/nhXlIqQSkG5f3R1256DHrSUXSMrx7de/
+sALdKOOQukoa7MqxgMWAbfRM80utT60/y8QQ2IePoJ7k2yIbhTLIpqWhMaqL5Bl0
+tZL7y2e1CcB6zUQmAwAObji6x/3AbZUMZQ4s+WH1KWprICc+6lywfxW/+BKHKg3S
+aSweQyVdv+0xwfbY5/OMhcB+3BKH3bF356nKJ/t9hJNCaJmXV5HRfoA3gqFf6xHV
+xL8xanMuTeIoXlGs7u5rV/8pfl2wUHo8G+0ZqwYgyBdHSGXSlLtGptNoY2syNepk
+iZR3PFlICKc4HNsse+HkkhWYEieS0g==
+=veGe
-----END PGP SIGNATURE-----
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
index 01c0091227..bc7eccc834 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 fbeb11bbde..9727088bf9 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-05-16-02-02
+2023-05-17-02-02