summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2024-08-09 03:01:45 +0000
committerNorbert Preining <norbert@preining.info>2024-08-09 03:01:45 +0000
commit0a85b78fc5352d581e5436de9861014dc1e4c8c9 (patch)
tree4802a34ed01f5986cbbfb61f13d0db6abe3cb2dd
parent223a9f6d977abd7486387f0dba0931d6d37ec4d4 (diff)
CTAN sync 202408090301HEADmaster
-rw-r--r--FILES.byname161
-rw-r--r--FILES.byname.gzbin2670148 -> 2670193 bytes
-rw-r--r--FILES.last07days165
-rw-r--r--biblio/ctan-bibdata/ctan.bib18
-rw-r--r--macros/latex/contrib/easybook/README.md2
-rw-r--r--macros/latex/contrib/easybook/easybook.dtx22
-rw-r--r--macros/latex/contrib/easybook/easybook.pdfbin638368 -> 638367 bytes
-rw-r--r--macros/latex/contrib/easybook/easybook.tex4
-rw-r--r--macros/latex/contrib/jsonparse/README.md6
-rw-r--r--macros/latex/contrib/jsonparse/jason/jason.pdfbin214713 -> 3965 bytes
-rw-r--r--macros/latex/contrib/jsonparse/jason/jason.svg88
-rw-r--r--macros/latex/contrib/jsonparse/jason/jason.tex289
-rw-r--r--macros/latex/contrib/jsonparse/jsonparse-doc.pdfbin578489 -> 430804 bytes
-rw-r--r--macros/latex/contrib/jsonparse/jsonparse-doc.tex150
-rw-r--r--macros/latex/contrib/jsonparse/jsonparse.sty324
-rw-r--r--macros/latex/contrib/rpgicons/README.md2
-rw-r--r--macros/latex/contrib/rpgicons/rpgicons-doc.pdfbin500755 -> 500161 bytes
-rw-r--r--macros/latex/contrib/rpgicons/rpgicons-doc.tex5
-rw-r--r--macros/latex/contrib/rpgicons/rpgicons-l3.sty40
-rw-r--r--macros/latex/contrib/rpgicons/rpgicons-pgf.sty2
-rw-r--r--macros/latex/contrib/rpgicons/rpgicons.sty4
-rw-r--r--systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl6
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb41
-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.xzbin2589384 -> 2584820 bytes
-rw-r--r--timestamp2
28 files changed, 860 insertions, 491 deletions
diff --git a/FILES.byname b/FILES.byname
index 5e473be02b..6e9b9d1c7b 100644
--- a/FILES.byname
+++ b/FILES.byname
@@ -2077,12 +2077,12 @@
2024/07/31 | 1837 | biblio/citation-style-language/README.md
2024/07/31 | 12878 | biblio/citation-style-language/vancouver.csl
2024/07/31 | 4571454 | biblio/citation-style-language.zip
-2024/08/07 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
+2024/08/08 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
2022/10/08 | 127 | biblio/ctan-bibdata/biblatex-ctan/ctan.cbx
-2024/08/07 | 2879599 | biblio/ctan-bibdata/ctan.bib
-2024/08/07 | 3708800 | biblio/ctan-bibdata/ctan.pdf
+2024/08/08 | 2879417 | biblio/ctan-bibdata/ctan.bib
+2024/08/08 | 3708800 | biblio/ctan-bibdata/ctan.pdf
2023/01/16 | 1489 | biblio/ctan-bibdata/README
-2024/08/07 | 4123929 | biblio/ctan-bibdata.zip
+2024/08/08 | 4123856 | 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
@@ -5444,7 +5444,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
-2024/08/07 | 100979 | FILES.last07days
+2024/08/08 | 86367 | 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
@@ -233233,12 +233233,12 @@
2008/02/10 | 19110 | macros/latex/contrib/ean13isbn/License.txt
2021/01/24 | 422 | macros/latex/contrib/ean13isbn/README
2021/01/24 | 322624 | macros/latex/contrib/ean13isbn.zip
-2024/08/06 | 90604 | macros/latex/contrib/easybook/easybook.dtx
+2024/08/08 | 90862 | macros/latex/contrib/easybook/easybook.dtx
2024/01/04 | 2081 | macros/latex/contrib/easybook/easybook.ins
-2024/08/06 | 638368 | macros/latex/contrib/easybook/easybook.pdf
-2024/08/06 | 109315 | macros/latex/contrib/easybook/easybook.tex
-2024/08/06 | 913 | macros/latex/contrib/easybook/README.md
-2024/08/07 | 691294 | macros/latex/contrib/easybook.zip
+2024/08/08 | 638367 | macros/latex/contrib/easybook/easybook.pdf
+2024/08/08 | 109315 | macros/latex/contrib/easybook/easybook.tex
+2024/08/08 | 913 | macros/latex/contrib/easybook/README.md
+2024/08/08 | 691362 | macros/latex/contrib/easybook.zip
2009/06/17 | 82589 | macros/latex/contrib/easy/doc/docbib.pdf
2009/06/17 | 78378 | macros/latex/contrib/easy/doc/docbmat.pdf
2009/06/17 | 99132 | macros/latex/contrib/easy/doc/doceqn.pdf
@@ -241063,14 +241063,15 @@
2024/03/06 | 23652 | macros/latex/contrib/jslectureplanner/jsmembertable.sty
2024/03/06 | 10156 | macros/latex/contrib/jslectureplanner/README
2024/03/06 | 1498662 | macros/latex/contrib/jslectureplanner.zip
-2024/04/28 | 214713 | macros/latex/contrib/jsonparse/jason/jason.pdf
-2024/04/29 | 6010 | macros/latex/contrib/jsonparse/jason/jason.svg
-2024/04/29 | 578489 | macros/latex/contrib/jsonparse/jsonparse-doc.pdf
-2024/04/29 | 24638 | macros/latex/contrib/jsonparse/jsonparse-doc.tex
-2024/04/29 | 26842 | macros/latex/contrib/jsonparse/jsonparse.sty
+2024/05/03 | 3965 | macros/latex/contrib/jsonparse/jason/jason.pdf
+2024/05/09 | 7658 | macros/latex/contrib/jsonparse/jason/jason.svg
+2024/08/08 | 14806 | macros/latex/contrib/jsonparse/jason/jason.tex
+2024/08/08 | 430804 | macros/latex/contrib/jsonparse/jsonparse-doc.pdf
+2024/08/08 | 28516 | macros/latex/contrib/jsonparse/jsonparse-doc.tex
+2024/08/08 | 30861 | macros/latex/contrib/jsonparse/jsonparse.sty
2024/04/05 | 19105 | macros/latex/contrib/jsonparse/LICENCE
-2024/04/28 | 1743 | macros/latex/contrib/jsonparse/README.md
-2024/04/29 | 708532 | macros/latex/contrib/jsonparse.zip
+2024/08/08 | 1742 | macros/latex/contrib/jsonparse/README.md
+2024/08/08 | 436918 | macros/latex/contrib/jsonparse.zip
2015/06/02 | 141342 | macros/latex/contrib/jumplines/jumplines_doc.pdf
2015/06/02 | 10822 | macros/latex/contrib/jumplines/jumplines_doc.tex
2015/06/02 | 110248 | macros/latex/contrib/jumplines/jumplines_example.pdf
@@ -249627,13 +249628,13 @@
2013/04/03 | 2694 | macros/latex/contrib/roundbox/roundbox.sty
2013/04/06 | 1888 | macros/latex/contrib/roundbox.zip
2024/03/15 | 19105 | macros/latex/contrib/rpgicons/LICENSE
-2024/05/15 | 1942 | macros/latex/contrib/rpgicons/README.md
-2024/05/15 | 500755 | macros/latex/contrib/rpgicons/rpgicons-doc.pdf
-2024/05/15 | 45746 | macros/latex/contrib/rpgicons/rpgicons-doc.tex
-2024/05/15 | 88052 | macros/latex/contrib/rpgicons/rpgicons-l3.sty
-2024/05/15 | 95752 | macros/latex/contrib/rpgicons/rpgicons-pgf.sty
-2024/05/15 | 1465 | macros/latex/contrib/rpgicons/rpgicons.sty
-2024/05/15 | 497219 | macros/latex/contrib/rpgicons.zip
+2024/08/08 | 1942 | macros/latex/contrib/rpgicons/README.md
+2024/08/08 | 500161 | macros/latex/contrib/rpgicons/rpgicons-doc.pdf
+2024/08/08 | 45864 | macros/latex/contrib/rpgicons/rpgicons-doc.tex
+2024/08/08 | 88059 | macros/latex/contrib/rpgicons/rpgicons-l3.sty
+2024/08/08 | 95752 | macros/latex/contrib/rpgicons/rpgicons-pgf.sty
+2024/08/08 | 1465 | macros/latex/contrib/rpgicons/rpgicons.sty
+2024/08/08 | 496707 | macros/latex/contrib/rpgicons.zip
2016/04/25 | 44232 | macros/latex/contrib/rpg-module/basic-stats.def
2016/04/25 | 16269 | macros/latex/contrib/rpg-module/basic-stats.sty
2016/04/25 | 770708 | macros/latex/contrib/rpg-module/doc/rpg_module_cover_art.png
@@ -307109,8 +307110,8 @@
2019/02/28 | 345168 | systems/texlive/tlnet/archive/arabxetex.doc.r38299.tar.xz
2019/02/28 | 147680 | systems/texlive/tlnet/archive/arabxetex.r38299.tar.xz
2019/02/28 | 29584 | systems/texlive/tlnet/archive/arabxetex.source.r38299.tar.xz
-2019/02/28 | 220652 | systems/texlive/tlnet/archive/aramaic-serto.doc.r30042.tar.xz
-2019/02/28 | 97924 | systems/texlive/tlnet/archive/aramaic-serto.r30042.tar.xz
+2024/08/08 | 220648 | systems/texlive/tlnet/archive/aramaic-serto.doc.r71991.tar.xz
+2024/08/08 | 97872 | systems/texlive/tlnet/archive/aramaic-serto.r71991.tar.xz
2019/02/28 | 340 | systems/texlive/tlnet/archive/arara.aarch64-linux.r46208.tar.xz
2019/02/28 | 340 | systems/texlive/tlnet/archive/arara.amd64-freebsd.r29036.tar.xz
2019/02/28 | 340 | systems/texlive/tlnet/archive/arara.amd64-netbsd.r30191.tar.xz
@@ -307277,9 +307278,9 @@
2019/02/28 | 346824 | systems/texlive/tlnet/archive/attachfile.doc.r42099.tar.xz
2019/02/28 | 4744 | systems/texlive/tlnet/archive/attachfile.r42099.tar.xz
2019/02/28 | 19996 | systems/texlive/tlnet/archive/attachfile.source.r42099.tar.xz
-2019/12/13 | 376388 | systems/texlive/tlnet/archive/atveryend.doc.r53108.tar.xz
-2019/12/13 | 3908 | systems/texlive/tlnet/archive/atveryend.r53108.tar.xz
-2019/12/13 | 8600 | systems/texlive/tlnet/archive/atveryend.source.r53108.tar.xz
+2024/08/08 | 376392 | systems/texlive/tlnet/archive/atveryend.doc.r71991.tar.xz
+2024/08/08 | 3820 | systems/texlive/tlnet/archive/atveryend.r71991.tar.xz
+2024/08/08 | 8600 | systems/texlive/tlnet/archive/atveryend.source.r71991.tar.xz
2019/06/06 | 2992 | systems/texlive/tlnet/archive/aucklandthesis.doc.r51323.tar.xz
2019/06/06 | 3176 | systems/texlive/tlnet/archive/aucklandthesis.r51323.tar.xz
2022/01/24 | 3324 | systems/texlive/tlnet/archive/augie.doc.r61719.tar.xz
@@ -307361,9 +307362,9 @@
2019/12/18 | 1660 | systems/texlive/tlnet/archive/auxhook.r53173.tar.xz
2019/12/18 | 5240 | systems/texlive/tlnet/archive/auxhook.source.r53173.tar.xz
2022/02/12 | 241568 | systems/texlive/tlnet/archive/avantgar.r61983.tar.xz
-2019/02/28 | 147960 | systems/texlive/tlnet/archive/avremu.doc.r35373.tar.xz
-2019/02/28 | 12992 | systems/texlive/tlnet/archive/avremu.r35373.tar.xz
-2019/02/28 | 22324 | systems/texlive/tlnet/archive/avremu.source.r35373.tar.xz
+2024/08/08 | 147960 | systems/texlive/tlnet/archive/avremu.doc.r71991.tar.xz
+2024/08/08 | 12936 | systems/texlive/tlnet/archive/avremu.r71991.tar.xz
+2024/08/08 | 22324 | systems/texlive/tlnet/archive/avremu.source.r71991.tar.xz
2021/01/08 | 56416 | systems/texlive/tlnet/archive/awesomebox.doc.r57349.tar.xz
2021/01/08 | 2252 | systems/texlive/tlnet/archive/awesomebox.r57349.tar.xz
2020/12/10 | 222888 | systems/texlive/tlnet/archive/axessibility.doc.r57105.tar.xz
@@ -310441,9 +310442,9 @@
2021/07/19 | 313228 | systems/texlive/tlnet/archive/easing.doc.r59975.tar.xz
2021/07/19 | 2220 | systems/texlive/tlnet/archive/easing.r59975.tar.xz
2021/07/19 | 7876 | systems/texlive/tlnet/archive/easing.source.r59975.tar.xz
-2024/08/07 | 663428 | systems/texlive/tlnet/archive/easybook.doc.r71981.tar.xz
-2024/08/07 | 19464 | systems/texlive/tlnet/archive/easybook.r71981.tar.xz
-2024/08/07 | 19360 | systems/texlive/tlnet/archive/easybook.source.r71981.tar.xz
+2024/08/08 | 667540 | systems/texlive/tlnet/archive/easybook.doc.r71991.tar.xz
+2024/08/08 | 19572 | systems/texlive/tlnet/archive/easybook.r71991.tar.xz
+2024/08/08 | 19460 | systems/texlive/tlnet/archive/easybook.source.r71991.tar.xz
2019/02/28 | 4540 | systems/texlive/tlnet/archive/easy.doc.r19440.tar.xz
2023/10/12 | 344 | systems/texlive/tlnet/archive/easydtx.aarch64-linux.r68514.tar.xz
2023/10/12 | 344 | systems/texlive/tlnet/archive/easydtx.amd64-freebsd.r68514.tar.xz
@@ -312412,8 +312413,8 @@
2024/07/28 | 293564 | systems/texlive/tlnet/archive/hypcap.doc.r71912.tar.xz
2024/07/28 | 2024 | systems/texlive/tlnet/archive/hypcap.r71912.tar.xz
2024/07/28 | 6212 | systems/texlive/tlnet/archive/hypcap.source.r71912.tar.xz
-2020/09/03 | 329064 | systems/texlive/tlnet/archive/hypdestopt.doc.r56253.tar.xz
-2020/09/03 | 2772 | systems/texlive/tlnet/archive/hypdestopt.r56253.tar.xz
+2024/08/08 | 344992 | systems/texlive/tlnet/archive/hypdestopt.doc.r71991.tar.xz
+2024/08/08 | 2852 | systems/texlive/tlnet/archive/hypdestopt.r71991.tar.xz
2023/10/27 | 326408 | systems/texlive/tlnet/archive/hypdoc.doc.r68661.tar.xz
2023/10/27 | 3624 | systems/texlive/tlnet/archive/hypdoc.r68661.tar.xz
2023/10/27 | 8684 | systems/texlive/tlnet/archive/hypdoc.source.r68661.tar.xz
@@ -313045,8 +313046,8 @@
2024/02/10 | 7348176 | systems/texlive/tlnet/archive/koma-script.r69755.tar.xz
2019/02/28 | 37524 | systems/texlive/tlnet/archive/koma-script-sfs.doc.r26137.tar.xz
2019/02/28 | 3400 | systems/texlive/tlnet/archive/koma-script-sfs.r26137.tar.xz
-2023/09/08 | 122504 | systems/texlive/tlnet/archive/korigamik.doc.r68204.tar.xz
-2023/09/08 | 3364 | systems/texlive/tlnet/archive/korigamik.r68204.tar.xz
+2024/08/08 | 122504 | systems/texlive/tlnet/archive/korigamik.doc.r71991.tar.xz
+2024/08/08 | 3348 | systems/texlive/tlnet/archive/korigamik.r71991.tar.xz
2024/03/08 | 852372 | systems/texlive/tlnet/archive/kotex-oblivoir.doc.r70491.tar.xz
2024/03/08 | 46600 | systems/texlive/tlnet/archive/kotex-oblivoir.r70491.tar.xz
2022/06/23 | 1852 | systems/texlive/tlnet/archive/kotex-plain.doc.r63689.tar.xz
@@ -313130,9 +313131,9 @@
2024/05/09 | 862356 | systems/texlive/tlnet/archive/l3backend-dev.doc.r71211.tar.xz
2024/05/09 | 16128 | systems/texlive/tlnet/archive/l3backend-dev.r71211.tar.xz
2024/05/09 | 33812 | systems/texlive/tlnet/archive/l3backend-dev.source.r71211.tar.xz
-2024/05/25 | 862344 | systems/texlive/tlnet/archive/l3backend.doc.r71341.tar.xz
-2024/05/25 | 16260 | systems/texlive/tlnet/archive/l3backend.r71341.tar.xz
-2024/05/25 | 33800 | systems/texlive/tlnet/archive/l3backend.source.r71341.tar.xz
+2024/08/08 | 862344 | systems/texlive/tlnet/archive/l3backend.doc.r71991.tar.xz
+2024/08/08 | 16256 | systems/texlive/tlnet/archive/l3backend.r71991.tar.xz
+2024/08/08 | 33800 | systems/texlive/tlnet/archive/l3backend.source.r71991.tar.xz
2019/02/28 | 344 | systems/texlive/tlnet/archive/l3build.aarch64-linux.r46894.tar.xz
2019/02/28 | 344 | systems/texlive/tlnet/archive/l3build.amd64-freebsd.r46894.tar.xz
2019/02/28 | 340 | systems/texlive/tlnet/archive/l3build.amd64-netbsd.r46894.tar.xz
@@ -313151,18 +313152,18 @@
2019/02/28 | 344 | systems/texlive/tlnet/archive/l3build.x86_64-linuxmusl.r46894.tar.xz
2019/02/28 | 340 | systems/texlive/tlnet/archive/l3build.x86_64-linux.r46894.tar.xz
2019/02/28 | 340 | systems/texlive/tlnet/archive/l3build.x86_64-solaris.r46894.tar.xz
-2024/03/15 | 2945672 | systems/texlive/tlnet/archive/l3experimental.doc.r70637.tar.xz
-2024/03/15 | 22092 | systems/texlive/tlnet/archive/l3experimental.r70637.tar.xz
-2024/03/15 | 75428 | systems/texlive/tlnet/archive/l3experimental.source.r70637.tar.xz
+2024/08/08 | 2945668 | systems/texlive/tlnet/archive/l3experimental.doc.r71991.tar.xz
+2024/08/08 | 22084 | systems/texlive/tlnet/archive/l3experimental.r71991.tar.xz
+2024/08/08 | 75420 | systems/texlive/tlnet/archive/l3experimental.source.r71991.tar.xz
2024/07/21 | 12040736 | systems/texlive/tlnet/archive/l3kernel-dev.doc.r71856.tar.xz
2024/07/21 | 180072 | systems/texlive/tlnet/archive/l3kernel-dev.r71856.tar.xz
2024/07/21 | 622388 | systems/texlive/tlnet/archive/l3kernel-dev.source.r71856.tar.xz
2024/08/03 | 12040200 | systems/texlive/tlnet/archive/l3kernel.doc.r71959.tar.xz
2024/08/03 | 180272 | systems/texlive/tlnet/archive/l3kernel.r71959.tar.xz
2024/08/03 | 622508 | systems/texlive/tlnet/archive/l3kernel.source.r71959.tar.xz
-2024/05/23 | 1457748 | systems/texlive/tlnet/archive/l3packages.doc.r71323.tar.xz
-2024/05/23 | 20344 | systems/texlive/tlnet/archive/l3packages.r71323.tar.xz
-2024/05/23 | 27284 | systems/texlive/tlnet/archive/l3packages.source.r71323.tar.xz
+2024/08/08 | 1457752 | systems/texlive/tlnet/archive/l3packages.doc.r71991.tar.xz
+2024/08/08 | 20336 | systems/texlive/tlnet/archive/l3packages.r71991.tar.xz
+2024/08/08 | 27288 | systems/texlive/tlnet/archive/l3packages.source.r71991.tar.xz
2024/03/18 | 348 | systems/texlive/tlnet/archive/l3sys-query.aarch64-linux.r70681.tar.xz
2024/03/18 | 352 | systems/texlive/tlnet/archive/l3sys-query.amd64-freebsd.r70681.tar.xz
2024/03/18 | 352 | systems/texlive/tlnet/archive/l3sys-query.amd64-netbsd.r70681.tar.xz
@@ -315243,8 +315244,8 @@
2020/01/24 | 1236 | systems/texlive/tlnet/archive/mweights.r53520.tar.xz
2022/11/08 | 807092 | systems/texlive/tlnet/archive/mwe.r64967.tar.xz
2022/11/08 | 8444 | systems/texlive/tlnet/archive/mwe.source.r64967.tar.xz
-2019/02/28 | 308524 | systems/texlive/tlnet/archive/mxedruli.doc.r30021.tar.xz
-2019/02/28 | 138692 | systems/texlive/tlnet/archive/mxedruli.r30021.tar.xz
+2024/08/08 | 308528 | systems/texlive/tlnet/archive/mxedruli.doc.r71991.tar.xz
+2024/08/08 | 138636 | systems/texlive/tlnet/archive/mxedruli.r71991.tar.xz
2019/02/28 | 512164 | systems/texlive/tlnet/archive/mycv.doc.r26807.tar.xz
2019/02/28 | 8084 | systems/texlive/tlnet/archive/mycv.r26807.tar.xz
2019/02/28 | 8664 | systems/texlive/tlnet/archive/mycv.source.r26807.tar.xz
@@ -316232,8 +316233,8 @@
2023/10/31 | 1350376 | systems/texlive/tlnet/archive/pgfornament-han.doc.r68704.tar.xz
2023/10/31 | 96368 | systems/texlive/tlnet/archive/pgfornament-han.r68704.tar.xz
2020/05/29 | 616692 | systems/texlive/tlnet/archive/pgfornament.r55326.tar.xz
-2024/08/02 | 5677884 | systems/texlive/tlnet/archive/pgf-periodictable.doc.r71948.tar.xz
-2024/08/02 | 516644 | systems/texlive/tlnet/archive/pgf-periodictable.r71948.tar.xz
+2024/08/08 | 5679152 | systems/texlive/tlnet/archive/pgf-periodictable.doc.r71991.tar.xz
+2024/08/08 | 516684 | systems/texlive/tlnet/archive/pgf-periodictable.r71991.tar.xz
2022/06/16 | 222616 | systems/texlive/tlnet/archive/pgf-pie.doc.r63603.tar.xz
2022/06/16 | 3744 | systems/texlive/tlnet/archive/pgf-pie.r63603.tar.xz
2022/01/24 | 13086868 | systems/texlive/tlnet/archive/pgfplots.doc.r61719.tar.xz
@@ -316534,8 +316535,8 @@
2019/02/28 | 4216 | systems/texlive/tlnet/archive/polynomial.source.r15878.tar.xz
2019/02/28 | 11156 | systems/texlive/tlnet/archive/polynom.r44832.tar.xz
2019/02/28 | 30328 | systems/texlive/tlnet/archive/polynom.source.r44832.tar.xz
-2024/08/02 | 108276 | systems/texlive/tlnet/archive/polyomino.doc.r71947.tar.xz
-2024/08/02 | 2744 | systems/texlive/tlnet/archive/polyomino.r71947.tar.xz
+2024/08/08 | 108280 | systems/texlive/tlnet/archive/polyomino.doc.r71991.tar.xz
+2024/08/08 | 2888 | systems/texlive/tlnet/archive/polyomino.r71991.tar.xz
2020/07/15 | 446940 | systems/texlive/tlnet/archive/polytable.doc.r55837.tar.xz
2020/07/15 | 6408 | systems/texlive/tlnet/archive/polytable.r55837.tar.xz
2020/07/15 | 21528 | systems/texlive/tlnet/archive/polytable.source.r55837.tar.xz
@@ -317907,8 +317908,8 @@
2022/04/08 | 1100 | systems/texlive/tlnet/archive/simpleoptics.r62977.tar.xz
2019/02/28 | 96196 | systems/texlive/tlnet/archive/simple-resume-cv.doc.r43057.tar.xz
2019/02/28 | 3432 | systems/texlive/tlnet/archive/simple-resume-cv.r43057.tar.xz
-2019/02/28 | 58000 | systems/texlive/tlnet/archive/simpler-wick.doc.r39074.tar.xz
-2019/02/28 | 2612 | systems/texlive/tlnet/archive/simpler-wick.r39074.tar.xz
+2024/08/08 | 57996 | systems/texlive/tlnet/archive/simpler-wick.doc.r71991.tar.xz
+2024/08/08 | 2604 | systems/texlive/tlnet/archive/simpler-wick.r71991.tar.xz
2022/07/04 | 1527324 | systems/texlive/tlnet/archive/simples-matrices.doc.r63802.tar.xz
2022/07/04 | 2508 | systems/texlive/tlnet/archive/simples-matrices.r63802.tar.xz
2022/07/04 | 14124 | systems/texlive/tlnet/archive/simples-matrices.source.r63802.tar.xz
@@ -318495,8 +318496,8 @@
2019/02/28 | 4372 | systems/texlive/tlnet/archive/tamefloats.r27345.tar.xz
2019/02/28 | 811124 | systems/texlive/tlnet/archive/tamethebeast.doc.r15878.tar.xz
2019/02/28 | 436 | systems/texlive/tlnet/archive/tamethebeast.r15878.tar.xz
-2019/02/28 | 117652 | systems/texlive/tlnet/archive/t-angles.doc.r15878.tar.xz
-2019/02/28 | 5684 | systems/texlive/tlnet/archive/t-angles.r15878.tar.xz
+2024/08/08 | 117652 | systems/texlive/tlnet/archive/t-angles.doc.r71991.tar.xz
+2024/08/08 | 5652 | systems/texlive/tlnet/archive/t-angles.r71991.tar.xz
2023/04/02 | 119648 | systems/texlive/tlnet/archive/tangocolors.doc.r66733.tar.xz
2023/04/02 | 1688 | systems/texlive/tlnet/archive/tangocolors.r66733.tar.xz
2023/04/02 | 3020 | systems/texlive/tlnet/archive/tangocolors.source.r66733.tar.xz
@@ -318884,7 +318885,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
-2024/08/07 | 436836 | systems/texlive/tlnet/archive/texlive-scripts.doc.r71983.tar.xz
+2024/08/08 | 436924 | systems/texlive/tlnet/archive/texlive-scripts.doc.r71990.tar.xz
2024/07/09 | 908 | systems/texlive/tlnet/archive/texlive-scripts-extra.aarch64-linux.r71749.tar.xz
2024/07/09 | 920 | systems/texlive/tlnet/archive/texlive-scripts-extra.amd64-freebsd.r71749.tar.xz
2024/07/09 | 908 | systems/texlive/tlnet/archive/texlive-scripts-extra.amd64-netbsd.r71749.tar.xz
@@ -318906,7 +318907,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
-2024/08/07 | 114432 | systems/texlive/tlnet/archive/texlive-scripts.r71983.tar.xz
+2024/08/08 | 114476 | systems/texlive/tlnet/archive/texlive-scripts.r71990.tar.xz
2022/09/13 | 580 | systems/texlive/tlnet/archive/texlive-scripts.universal-darwin.r64356.tar.xz
2024/05/10 | 60592 | systems/texlive/tlnet/archive/texlive-scripts.windows.r71215.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.x86_64-cygwin.r64356.tar.xz
@@ -319681,8 +319682,8 @@
2019/02/28 | 1664 | systems/texlive/tlnet/archive/turnthepage.r29803.tar.xz
2024/01/08 | 1301892 | systems/texlive/tlnet/archive/tutodoc.doc.r69343.tar.xz
2024/01/08 | 7456 | systems/texlive/tlnet/archive/tutodoc.r69343.tar.xz
-2022/10/30 | 712 | systems/texlive/tlnet/archive/twemoji-colr.doc.r64854.tar.xz
-2022/10/30 | 581228 | systems/texlive/tlnet/archive/twemoji-colr.r64854.tar.xz
+2024/08/08 | 712 | systems/texlive/tlnet/archive/twemoji-colr.doc.r71991.tar.xz
+2024/08/08 | 581212 | systems/texlive/tlnet/archive/twemoji-colr.r71991.tar.xz
2022/04/06 | 4751536 | systems/texlive/tlnet/archive/twemojis.doc.r62930.tar.xz
2022/04/06 | 4425040 | systems/texlive/tlnet/archive/twemojis.r62930.tar.xz
2022/04/06 | 70504 | systems/texlive/tlnet/archive/twemojis.source.r62930.tar.xz
@@ -320504,7 +320505,7 @@
2019/02/28 | 532 | systems/texlive/tlnet/archive/xetexconfig.r45845.tar.xz
2019/02/28 | 992 | systems/texlive/tlnet/archive/xetex-devanagari.doc.r34296.tar.xz
2019/02/28 | 12452 | systems/texlive/tlnet/archive/xetex-devanagari.r34296.tar.xz
-2024/05/27 | 634632 | systems/texlive/tlnet/archive/xetex.doc.r71363.tar.xz
+2024/08/08 | 634636 | systems/texlive/tlnet/archive/xetex.doc.r71991.tar.xz
2019/02/28 | 628 | systems/texlive/tlnet/archive/xetexfontinfo.doc.r15878.tar.xz
2019/02/28 | 2340 | systems/texlive/tlnet/archive/xetexfontinfo.r15878.tar.xz
2024/03/26 | 7718588 | systems/texlive/tlnet/archive/xetex.i386-freebsd.r70768.tar.xz
@@ -320517,7 +320518,7 @@
2024/03/01 | 54428 | systems/texlive/tlnet/archive/xetexko.r70315.tar.xz
2019/02/28 | 932 | systems/texlive/tlnet/archive/xetex-pstricks.doc.r17055.tar.xz
2019/02/28 | 724 | systems/texlive/tlnet/archive/xetex-pstricks.r17055.tar.xz
-2024/05/27 | 8008 | systems/texlive/tlnet/archive/xetex.r71363.tar.xz
+2024/08/08 | 7996 | systems/texlive/tlnet/archive/xetex.r71991.tar.xz
2024/03/01 | 164436 | systems/texlive/tlnet/archive/xetexref.doc.r70299.tar.xz
2024/03/01 | 452 | systems/texlive/tlnet/archive/xetexref.r70299.tar.xz
2019/02/28 | 1204 | systems/texlive/tlnet/archive/xetex-tibetan.doc.r28847.tar.xz
@@ -320859,16 +320860,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
2024/07/20 | 125851 | systems/texlive/tlnet/install-tl
-2024/08/07 | 5753887 | systems/texlive/tlnet/install-tl-unx.tar.gz
-2024/08/07 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
-2024/08/07 | 488 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2024/08/08 | 5753557 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2024/08/08 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2024/08/08 | 488 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
2024/04/13 | 5743 | systems/texlive/tlnet/install-tl-windows.bat
-2024/08/07 | 27715987 | systems/texlive/tlnet/install-tl-windows.exe
-2024/08/07 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
-2024/08/07 | 488 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2024/08/07 | 34425907 | systems/texlive/tlnet/install-tl.zip
-2024/08/07 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
-2024/08/07 | 488 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2024/08/08 | 27715881 | systems/texlive/tlnet/install-tl-windows.exe
+2024/08/08 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2024/08/08 | 488 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2024/08/08 | 34425931 | systems/texlive/tlnet/install-tl.zip
+2024/08/08 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2024/08/08 | 488 | systems/texlive/tlnet/install-tl.zip.sha512.asc
2024/03/13 | 1229 | systems/texlive/tlnet/README.md
2024/03/13 | 0 | systems/texlive/tlnet/TEXLIVE_2024
2024/01/02 | 9011 | systems/texlive/tlnet/tlpkg/gpg/pubring.gpg
@@ -320878,7 +320879,7 @@
2024/01/02 | 1280 | systems/texlive/tlnet/tlpkg/gpg/trustdb.gpg
2024/07/29 | 50743 | systems/texlive/tlnet/tlpkg/installer/config.guess
2010/11/11 | 11651 | systems/texlive/tlnet/tlpkg/installer/COPYING.MinGW-runtime.txt
-2024/08/07 | 7601 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
+2024/08/08 | 7711 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2024/07/03 | 228633 | 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
@@ -320920,12 +320921,12 @@
2023/02/21 | 20371 | systems/texlive/tlnet/tlpkg/TeXLive/TLCrypto.pm
2024/05/02 | 5898 | systems/texlive/tlnet/tlpkg/TeXLive/TLDownload.pm
2023/04/08 | 28167 | systems/texlive/tlnet/tlpkg/TeXLive/TLPaper.pm
-2024/08/07 | 19564920 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
-2024/08/07 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2024/08/08 | 19564628 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2024/08/08 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
2024/06/22 | 87725 | systems/texlive/tlnet/tlpkg/TeXLive/TLPDB.pm
-2024/08/07 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
-2024/08/07 | 488 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2024/08/07 | 2586372 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2024/08/08 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2024/08/08 | 488 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2024/08/08 | 2589384 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
2023/02/20 | 58928 | systems/texlive/tlnet/tlpkg/TeXLive/TLPOBJ.pm
2023/06/11 | 42749 | systems/texlive/tlnet/tlpkg/TeXLive/TLPSRC.pm
2023/02/21 | 16138 | systems/texlive/tlnet/tlpkg/TeXLive/TLTREE.pm
@@ -332562,7 +332563,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
-2024/08/08 | 186 | timestamp
+2024/08/09 | 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 c01d3cc329..497715a1e3 100644
--- a/FILES.byname.gz
+++ b/FILES.byname.gz
Binary files differ
diff --git a/FILES.last07days b/FILES.last07days
index 384b6aef10..0adec9a0c0 100644
--- a/FILES.last07days
+++ b/FILES.last07days
@@ -1,42 +1,94 @@
+2024/08/08 | 97872 | systems/texlive/tlnet/archive/aramaic-serto.r71991.tar.xz
+2024/08/08 | 95752 | macros/latex/contrib/rpgicons/rpgicons-pgf.sty
+2024/08/08 | 913 | macros/latex/contrib/easybook/README.md
+2024/08/08 | 90862 | macros/latex/contrib/easybook/easybook.dtx
+2024/08/08 | 88059 | macros/latex/contrib/rpgicons/rpgicons-l3.sty
+2024/08/08 | 862344 | systems/texlive/tlnet/archive/l3backend.doc.r71991.tar.xz
+2024/08/08 | 8600 | systems/texlive/tlnet/archive/atveryend.source.r71991.tar.xz
+2024/08/08 | 7996 | systems/texlive/tlnet/archive/xetex.r71991.tar.xz
+2024/08/08 | 7711 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
+2024/08/08 | 75420 | systems/texlive/tlnet/archive/l3experimental.source.r71991.tar.xz
+2024/08/08 | 712 | systems/texlive/tlnet/archive/twemoji-colr.doc.r71991.tar.xz
+2024/08/08 | 691362 | macros/latex/contrib/easybook.zip
+2024/08/08 | 667540 | systems/texlive/tlnet/archive/easybook.doc.r71991.tar.xz
+2024/08/08 | 638367 | macros/latex/contrib/easybook/easybook.pdf
+2024/08/08 | 634636 | systems/texlive/tlnet/archive/xetex.doc.r71991.tar.xz
+2024/08/08 | 581212 | systems/texlive/tlnet/archive/twemoji-colr.r71991.tar.xz
+2024/08/08 | 57996 | systems/texlive/tlnet/archive/simpler-wick.doc.r71991.tar.xz
+2024/08/08 | 5753557 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2024/08/08 | 5679152 | systems/texlive/tlnet/archive/pgf-periodictable.doc.r71991.tar.xz
+2024/08/08 | 5652 | systems/texlive/tlnet/archive/t-angles.r71991.tar.xz
+2024/08/08 | 516684 | systems/texlive/tlnet/archive/pgf-periodictable.r71991.tar.xz
+2024/08/08 | 500161 | macros/latex/contrib/rpgicons/rpgicons-doc.pdf
+2024/08/08 | 496707 | macros/latex/contrib/rpgicons.zip
+2024/08/08 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2024/08/08 | 488 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2024/08/08 | 488 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2024/08/08 | 488 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2024/08/08 | 488 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2024/08/08 | 45864 | macros/latex/contrib/rpgicons/rpgicons-doc.tex
+2024/08/08 | 436924 | systems/texlive/tlnet/archive/texlive-scripts.doc.r71990.tar.xz
+2024/08/08 | 436918 | macros/latex/contrib/jsonparse.zip
+2024/08/08 | 430804 | macros/latex/contrib/jsonparse/jsonparse-doc.pdf
+2024/08/08 | 4123856 | biblio/ctan-bibdata.zip
+2024/08/08 | 3820 | systems/texlive/tlnet/archive/atveryend.r71991.tar.xz
+2024/08/08 | 376392 | systems/texlive/tlnet/archive/atveryend.doc.r71991.tar.xz
+2024/08/08 | 3708800 | biblio/ctan-bibdata/ctan.pdf
+2024/08/08 | 344992 | systems/texlive/tlnet/archive/hypdestopt.doc.r71991.tar.xz
+2024/08/08 | 34425931 | systems/texlive/tlnet/install-tl.zip
+2024/08/08 | 33800 | systems/texlive/tlnet/archive/l3backend.source.r71991.tar.xz
+2024/08/08 | 3348 | systems/texlive/tlnet/archive/korigamik.r71991.tar.xz
+2024/08/08 | 30861 | macros/latex/contrib/jsonparse/jsonparse.sty
+2024/08/08 | 308528 | systems/texlive/tlnet/archive/mxedruli.doc.r71991.tar.xz
+2024/08/08 | 2945668 | systems/texlive/tlnet/archive/l3experimental.doc.r71991.tar.xz
+2024/08/08 | 2888 | systems/texlive/tlnet/archive/polyomino.r71991.tar.xz
+2024/08/08 | 2879417 | biblio/ctan-bibdata/ctan.bib
+2024/08/08 | 2852 | systems/texlive/tlnet/archive/hypdestopt.r71991.tar.xz
+2024/08/08 | 28516 | macros/latex/contrib/jsonparse/jsonparse-doc.tex
+2024/08/08 | 27715881 | systems/texlive/tlnet/install-tl-windows.exe
+2024/08/08 | 27288 | systems/texlive/tlnet/archive/l3packages.source.r71991.tar.xz
+2024/08/08 | 2604 | systems/texlive/tlnet/archive/simpler-wick.r71991.tar.xz
+2024/08/08 | 2589384 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2024/08/08 | 22324 | systems/texlive/tlnet/archive/avremu.source.r71991.tar.xz
+2024/08/08 | 22084 | systems/texlive/tlnet/archive/l3experimental.r71991.tar.xz
+2024/08/08 | 220648 | systems/texlive/tlnet/archive/aramaic-serto.doc.r71991.tar.xz
+2024/08/08 | 20336 | systems/texlive/tlnet/archive/l3packages.r71991.tar.xz
+2024/08/08 | 19572 | systems/texlive/tlnet/archive/easybook.r71991.tar.xz
+2024/08/08 | 19564628 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2024/08/08 | 19460 | systems/texlive/tlnet/archive/easybook.source.r71991.tar.xz
+2024/08/08 | 1942 | macros/latex/contrib/rpgicons/README.md
+2024/08/08 | 1742 | macros/latex/contrib/jsonparse/README.md
+2024/08/08 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
+2024/08/08 | 16256 | systems/texlive/tlnet/archive/l3backend.r71991.tar.xz
+2024/08/08 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2024/08/08 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2024/08/08 | 14806 | macros/latex/contrib/jsonparse/jason/jason.tex
+2024/08/08 | 147960 | systems/texlive/tlnet/archive/avremu.doc.r71991.tar.xz
+2024/08/08 | 1465 | macros/latex/contrib/rpgicons/rpgicons.sty
+2024/08/08 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2024/08/08 | 1457752 | systems/texlive/tlnet/archive/l3packages.doc.r71991.tar.xz
+2024/08/08 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2024/08/08 | 138636 | systems/texlive/tlnet/archive/mxedruli.r71991.tar.xz
+2024/08/08 | 12936 | systems/texlive/tlnet/archive/avremu.r71991.tar.xz
+2024/08/08 | 122504 | systems/texlive/tlnet/archive/korigamik.doc.r71991.tar.xz
+2024/08/08 | 117652 | systems/texlive/tlnet/archive/t-angles.doc.r71991.tar.xz
+2024/08/08 | 114476 | systems/texlive/tlnet/archive/texlive-scripts.r71990.tar.xz
+2024/08/08 | 109315 | macros/latex/contrib/easybook/easybook.tex
+2024/08/08 | 108280 | systems/texlive/tlnet/archive/polyomino.doc.r71991.tar.xz
2024/08/07 | 825848 | systems/texlive/tlnet/archive/mfb-oldstyle.r71982.tar.xz
2024/08/07 | 7756557 | graphics/pgf/contrib/pgf-periodictable.zip
-2024/08/07 | 7601 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2024/08/07 | 7558395 | graphics/pgf/contrib/pgf-periodictable/pgf-PeriodicTableManual.pdf
2024/08/07 | 7248 | graphics/pgf/contrib/pgf-periodictable/myGroupColors.tex
-2024/08/07 | 691294 | macros/latex/contrib/easybook.zip
-2024/08/07 | 663428 | systems/texlive/tlnet/archive/easybook.doc.r71981.tar.xz
-2024/08/07 | 5753887 | systems/texlive/tlnet/install-tl-unx.tar.gz
-2024/08/07 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
-2024/08/07 | 488 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2024/08/07 | 488 | systems/texlive/tlnet/install-tl.zip.sha512.asc
-2024/08/07 | 488 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2024/08/07 | 488 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
2024/08/07 | 438 | macros/latex/contrib/hypdestopt/README.md
-2024/08/07 | 436836 | systems/texlive/tlnet/archive/texlive-scripts.doc.r71983.tar.xz
-2024/08/07 | 4123929 | biblio/ctan-bibdata.zip
2024/08/07 | 4049 | graphics/pgf/contrib/pgf-periodictable/README
-2024/08/07 | 3708800 | biblio/ctan-bibdata/ctan.pdf
2024/08/07 | 347012 | macros/latex/contrib/hypdestopt/hypdestopt.pdf
-2024/08/07 | 34425907 | systems/texlive/tlnet/install-tl.zip
2024/08/07 | 343970 | macros/latex/contrib/hypdestopt.zip
-2024/08/07 | 2879599 | biblio/ctan-bibdata/ctan.bib
2024/08/07 | 28764 | macros/latex/contrib/hypdestopt/hypdestopt.dtx
-2024/08/07 | 27715987 | systems/texlive/tlnet/install-tl-windows.exe
-2024/08/07 | 2586372 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
2024/08/07 | 24954 | graphics/pgf/contrib/pgf-periodictable/manualfiles/pgfPTmanual.macros.tex
2024/08/07 | 210969 | graphics/pgf/contrib/pgf-periodictable/pgf-PeriodicTable.sty
2024/08/07 | 2076 | systems/texlive/tlnet/archive/collection-fontsextra.r71982.tar.xz
2024/08/07 | 20184 | graphics/pgf/contrib/pgf-periodictable/pgf-PeriodicTableManual.tex
-2024/08/07 | 19564920 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
-2024/08/07 | 19464 | systems/texlive/tlnet/archive/easybook.r71981.tar.xz
-2024/08/07 | 19360 | systems/texlive/tlnet/archive/easybook.source.r71981.tar.xz
-2024/08/07 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
2024/08/07 | 1552288 | systems/texlive/tlnet/archive/mfb-oldstyle.doc.r71982.tar.xz
-2024/08/07 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
-2024/08/07 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
-2024/08/07 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
-2024/08/07 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
-2024/08/07 | 114432 | systems/texlive/tlnet/archive/texlive-scripts.r71983.tar.xz
2024/08/06 | 9837 | usergrps/usergrps/de.html
2024/08/06 | 9783 | usergrps/usergrps/pl.html
2024/08/06 | 9776 | usergrps/usergrps/hu.html
@@ -68,10 +120,8 @@
2024/08/06 | 9217 | usergrps/usergrps/mx.html
2024/08/06 | 920 | systems/win32/miktex/tm/packages/pr.ini
2024/08/06 | 9208 | usergrps/usergrps/dk.html
-2024/08/06 | 913 | macros/latex/contrib/easybook/README.md
2024/08/06 | 9137 | usergrps/usergrps/ee.html
2024/08/06 | 9118 | usergrps/usergrps/tw.html
-2024/08/06 | 90604 | macros/latex/contrib/easybook/easybook.dtx
2024/08/06 | 8877 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
2024/08/06 | 88650 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
2024/08/06 | 8670 | systems/win32/miktex/tm/packages/fontscale.tar.lzma
@@ -106,7 +156,6 @@
2024/08/06 | 6640 | systems/win32/miktex/tm/packages/hypcap__source.tar.lzma
2024/08/06 | 65097 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma
2024/08/06 | 64638 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
-2024/08/06 | 638368 | macros/latex/contrib/easybook/easybook.pdf
2024/08/06 | 637803 | systems/win32/miktex/tm/packages/easybook__doc.tar.lzma
2024/08/06 | 6372 | usergrps/usergrps/index.html
2024/08/06 | 624952 | systems/win32/miktex/tm/packages/l3kernel__source.tar.lzma
@@ -261,7 +310,6 @@
2024/08/06 | 1147188 | systems/win32/miktex/tm/packages/wheelchart__doc.tar.lzma
2024/08/06 | 112402 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
2024/08/06 | 109913 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
-2024/08/06 | 109315 | macros/latex/contrib/easybook/easybook.tex
2024/08/06 | 108617 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
2024/08/06 | 106575 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
2024/08/06 | 10642 | usergrps/usergrps/labels.pdf
@@ -831,13 +879,11 @@
2024/08/02 | 60403 | macros/latex/required/l3kernel/CHANGELOG.md
2024/08/02 | 60301 | macros/latex/contrib/tagpdf/pac2024-report.png
2024/08/02 | 574 | support/texplate/scripts/texplate.sh
-2024/08/02 | 5677884 | systems/texlive/tlnet/archive/pgf-periodictable.doc.r71948.tar.xz
2024/08/02 | 565298 | macros/latex/required/l3kernel/l3doc.pdf
2024/08/02 | 552 | fonts/simpleicons/tfm/SimpleIcons--simpleiconsonethree.tfm
2024/08/02 | 5446 | support/texplate/source/main/kotlin/org/islandoftex/texplate/util/MergingUtils.kt
2024/08/02 | 5429 | macros/latex/required/l3kernel/l3news04.tex
2024/08/02 | 535 | support/texplate/source/main/kotlin/org/islandoftex/texplate/model/handlers/CSVListHandler.kt
-2024/08/02 | 516644 | systems/texlive/tlnet/archive/pgf-periodictable.r71948.tar.xz
2024/08/02 | 51091 | macros/latex/required/l3kernel/l3fp-extended.dtx
2024/08/02 | 50696 | macros/latex/required/l3kernel/l3prefixes.csv
2024/08/02 | 4977 | macros/latex/required/l3kernel/l3news07.tex
@@ -903,7 +949,6 @@
2024/08/02 | 279 | fonts/simpleicons/tex/usimpleiconsonethree.fd
2024/08/02 | 2772 | support/texplate/source/main/kotlin/org/islandoftex/texplate/util/PathUtils.kt
2024/08/02 | 274 | fonts/simpleicons/tex/usimpleiconsonezero.fd
-2024/08/02 | 2744 | systems/texlive/tlnet/archive/polyomino.r71947.tar.xz
2024/08/02 | 269 | fonts/simpleicons/tex/usimpleiconsonetwo.fd
2024/08/02 | 269 | fonts/simpleicons/tex/usimpleiconsoneone.fd
2024/08/02 | 26790 | macros/latex/required/l3kernel/l3pdf.dtx
@@ -1034,7 +1079,6 @@
2024/08/02 | 112286 | macros/latex/required/l3kernel/l3color.dtx
2024/08/02 | 1089 | macros/latex/contrib/fontscale/fontscale-table-classic.tex
2024/08/02 | 108493 | macros/latex/required/l3kernel/l3prop.dtx
-2024/08/02 | 108276 | systems/texlive/tlnet/archive/polyomino.doc.r71947.tar.xz
2024/08/02 | 107383 | macros/latex/required/l3kernel/l3news09.tex
2024/08/02 | 1063 | macros/latex/contrib/tagpdf/ex-list.tex
2024/08/02 | 105697 | support/texplate/doc/texplate-manual.pdf
@@ -1043,58 +1087,3 @@
2024/08/02 | 103904 | biblio/bibtex/contrib/iran-bibtex/iran-year.bst
2024/08/02 | 103384 | biblio/bibtex/contrib/iran-bibtex/iran.bst
2024/08/02 | 100428 | macros/latex/required/l3kernel/l3seq.dtx
-2024/08/01 | 99952 | systems/texlive/tlnet/archive/cjs-rcs-article.source.r71936.tar.xz
-2024/08/01 | 9896 | systems/texlive/tlnet/archive/se2thesis.r71938.tar.xz
-2024/08/01 | 9443 | macros/latex/contrib/siunitx/siunitx-symbol.dtx
-2024/08/01 | 94303 | macros/latex/contrib/asmeconf/asmeconf.cls
-2024/08/01 | 9068 | graphics/pgf/contrib/polyomino/polyomino.tex
-2024/08/01 | 8856 | macros/latex/contrib/siunitx/siunitx-command.dtx
-2024/08/01 | 879 | graphics/pgf/contrib/polyomino/README.md
-2024/08/01 | 81786 | macros/latex/contrib/siunitx/CHANGELOG.md
-2024/08/01 | 79172 | graphics/pgf/contrib/pgf-periodictable/pgfPT.drawing.keys.tex
-2024/08/01 | 705662 | macros/latex/contrib/asmeconf/asmeconf-template.pdf
-2024/08/01 | 703909 | macros/latex/contrib/siunitx/siunitx.pdf
-2024/08/01 | 6856 | systems/texlive/tlnet/archive/bib2qr.source.r71940.tar.xz
-2024/08/01 | 645632 | macros/latex/contrib/siunitx/siunitx-code.pdf
-2024/08/01 | 591788 | systems/texlive/tlnet/archive/se2thesis.doc.r71938.tar.xz
-2024/08/01 | 5816 | macros/latex/contrib/siunitx/siunitx-locale.dtx
-2024/08/01 | 55763 | macros/latex/contrib/siunitx/siunitx-table.dtx
-2024/08/01 | 494044 | systems/texlive/tlnet/archive/bib2qr.doc.r71940.tar.xz
-2024/08/01 | 48613 | macros/latex/contrib/asmeconf/asmeconf-template.tex
-2024/08/01 | 4748 | macros/latex/contrib/siunitx/siunitx-abbreviations.cfg
-2024/08/01 | 4598568 | systems/texlive/tlnet/archive/pagelayout.doc.r71937.tar.xz
-2024/08/01 | 44385694 | macros/latex/contrib/asmeconf.zip
-2024/08/01 | 43854 | macros/latex/contrib/siunitx/siunitx-compound.dtx
-2024/08/01 | 39914315 | macros/latex/contrib/asmeconf/examples/asmeconf-fontspec.pdf
-2024/08/01 | 39313 | macros/latex/contrib/siunitx/siunitx-complex.dtx
-2024/08/01 | 37988 | macros/latex/contrib/siunitx/siunitx-print.dtx
-2024/08/01 | 3682 | macros/latex/contrib/siunitx/siunitx.ins
-2024/08/01 | 346032 | systems/texlive/tlnet/archive/cjs-rcs-article.doc.r71936.tar.xz
-2024/08/01 | 31797 | macros/latex/contrib/siunitx/siunitx-emulation.dtx
-2024/08/01 | 31738 | macros/latex/contrib/siunitx/siunitx-version-1.cfg
-2024/08/01 | 3079 | graphics/pgf/contrib/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_name.tex
-2024/08/01 | 29544 | macros/latex/contrib/asmeconf/examples/asmeconf-fontspec.tex
-2024/08/01 | 2941 | macros/latex/contrib/siunitx/siunitx-binary.dtx
-2024/08/01 | 273398 | macros/latex/contrib/siunitx/siunitx-v2.sty
-2024/08/01 | 26628 | systems/texlive/tlnet/archive/se2thesis.source.r71938.tar.xz
-2024/08/01 | 2621 | macros/latex/contrib/siunitx/siunitx-code.tex
-2024/08/01 | 25868 | systems/texlive/tlnet/archive/pagelayout.r71937.tar.xz
-2024/08/01 | 22316 | macros/latex/contrib/siunitx/siunitx.dtx
-2024/08/01 | 18426 | macros/latex/contrib/siunitx/siunitx-angle.dtx
-2024/08/01 | 17763 | graphics/pgf/contrib/pgf-periodictable/pgfPT.names.tex
-2024/08/01 | 1729 | macros/latex/contrib/siunitx/siunitx-binary.cfg
-2024/08/01 | 1692 | systems/texlive/tlnet/archive/bib2qr.r71940.tar.xz
-2024/08/01 | 168557 | macros/latex/contrib/siunitx/siunitx.tex
-2024/08/01 | 163362 | macros/latex/contrib/siunitx/siunitx-number.dtx
-2024/08/01 | 1591546 | install/macros/latex/contrib/siunitx.tds.zip
-2024/08/01 | 1543968 | macros/latex/contrib/siunitx.zip
-2024/08/01 | 15296 | macros/latex/contrib/siunitx/siunitx-quantity.dtx
-2024/08/01 | 15044 | systems/texlive/tlnet/archive/cjs-rcs-article.r71936.tar.xz
-2024/08/01 | 14803 | graphics/pgf/contrib/polyomino/polyomino.sty
-2024/08/01 | 12949 | macros/latex/contrib/asmeconf/README.md
-2024/08/01 | 1292 | systems/texlive/tlnet/archive/collection-bibtexextra.r71940.tar.xz
-2024/08/01 | 1166 | macros/latex/contrib/siunitx/README.md
-2024/08/01 | 11252 | macros/latex/contrib/siunitx/siunitx-abbreviation.dtx
-2024/08/01 | 110899 | graphics/pgf/contrib/polyomino.zip
-2024/08/01 | 109235 | graphics/pgf/contrib/polyomino/polyomino.pdf
-2024/08/01 | 104102 | macros/latex/contrib/siunitx/siunitx-unit.dtx
diff --git a/biblio/ctan-bibdata/ctan.bib b/biblio/ctan-bibdata/ctan.bib
index f172722017..d100073dd7 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 08-08-2024, 02:00:03
+%% created at 09-08-2024, 02:00:03
%%
%% This file is provided under the terms of the LPPL v1.3 or
@@ -20921,8 +20921,8 @@
title = {The \texttt{easybook} package},
subtitle = {Easily typesetting Chinese theses or books},
author = {Qu Yi},
- date = {2024-08-07},
- version = {2024dh},
+ date = {2024-08-08},
+ version = {2024di},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/easybook},
url = {https://ctan.org/pkg/easybook},
@@ -36259,8 +36259,8 @@
title = {The \texttt{jsonparse} package},
subtitle = {Parse, store and access JSON data in \LaTeX{} documents},
author = {Jasper Habicht},
- date = {2024-05-09},
- version = {0.8.6},
+ date = {2024-08-08},
+ version = {0.8.7},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/jsonparse},
url = {https://ctan.org/pkg/jsonparse},
@@ -60988,8 +60988,8 @@
title = {The \texttt{rpgicons} package},
subtitle = {Icons for tabletop role-playing games},
author = {Jasper Habicht},
- date = {2024-05-15},
- version = {1.8.3},
+ date = {2024-08-08},
+ version = {1.8.4},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/rpgicons},
url = {https://ctan.org/pkg/rpgicons},
@@ -70846,8 +70846,8 @@
title = {The \texttt{3DLDF} package},
subtitle = {Three-dimensional drawing with MetaPost output},
author = {Laurence Finston},
- date = {2018-01-06},
- version = {1.1.5.1},
+ date = {2024-08-08},
+ version = {3.0},
license = {gpl},
mirror = {https://mirror.ctan.org/graphics/3DLDF},
url = {https://ctan.org/pkg/threedldf},
diff --git a/macros/latex/contrib/easybook/README.md b/macros/latex/contrib/easybook/README.md
index d8c76089a4..94518c744b 100644
--- a/macros/latex/contrib/easybook/README.md
+++ b/macros/latex/contrib/easybook/README.md
@@ -1,5 +1,5 @@
# The `easybook` document class
-Easily typesetting Chinese theses or books (v2024dh)
+Easily typesetting Chinese theses or books (v2024di)
## Abstract
`easybook` is a pure academic template created based on the `ctexbook` book document class. It also has the functions of `book` and `article` document class. Combined with the general framework design of the theses of many universities in China, providing multiple commands and interfaces allows users to easily customize the theses templates. Its basic macro package `easybase` can also be used with `ctex` and standard document classes.
diff --git a/macros/latex/contrib/easybook/easybook.dtx b/macros/latex/contrib/easybook/easybook.dtx
index c0638f2ef8..10d1c35ccf 100644
--- a/macros/latex/contrib/easybook/easybook.dtx
+++ b/macros/latex/contrib/easybook/easybook.dtx
@@ -14,7 +14,7 @@
% This work has the LPPL maintenance status `maintained'.
%<class|package>\NeedsTeXFormat{LaTeX2e}[2021/11/15]
%<*class>
-\ProvidesExplClass{easybook}{2024/08/06}{2024dh}
+\ProvidesExplClass{easybook}{2024/08/08}{2024di}
{Easily typesetting Chinese theses or books}
\bool_new:N \l__eb_compile_draft_bool
@@ -301,7 +301,7 @@
%</class>
%<*package>
\RequirePackage{etoolbox}
-\ProvidesExplPackage{easybase}{2024/08/06}{2024dh}
+\ProvidesExplPackage{easybase}{2024/08/08}{2024di}
{Easily typesetting Chinese theses or books}
\cs_generate_variant:Nn \dim_set:Nn { NV }
@@ -1123,12 +1123,12 @@
\ctex_at_end_package:nn { footmisc }
{
\eb_package_date_check:nn { footmisc } { 2022/02/10 }
- \ifbool{FN@para}{}
+ \ifboolexpr{not (bool {FN@para} or bool {FN@sidefn})}
{
\boolfalse{FN@setspace}
\cs_set_eq:NN \@makefntext \eb@@makefntext
\cs_set_eq:NN \@footnotetext \eb@@footnotetext
- }
+ }{}
\ifboolexpr
{
bool {FN@hangfoot} or
@@ -2136,8 +2136,7 @@
{
\use:x
{
- \exp_not:n
- { \captionsetup[#1] }
+ \exp_not:N \captionsetup[#1]
{ \eb_unknown_kv_handle: }
}
},
@@ -2791,12 +2790,20 @@
{
content =
{
+ \notbool{@titlepage}
+ {
+ \renewcommand{\theupfootnote}{\@fnsymbol\c@footnote}
+ \renewcommand{\thefootnote}{\@fnsymbol\c@footnote}
+ }
+ {}
\LARGE\@title\par\vskip 3em
\large
\begin{tabular}[t]{c}
\@author
\end{tabular}\par\vskip 1.5em
\@date
+ \notbool{@titlepage}{\par\vskip 1.5em}{}
+ \@thanks
},
beforecode =
{
@@ -2813,7 +2820,6 @@
},
aftercode =
{
- \@thanks
\ifbool{@titlepage}
{
\vfil\null
@@ -2838,7 +2844,7 @@
}
%</package>
%<*tcolorbox>
-\ProvidesExplFile{eb-tcolorbox.cfg}{2024/08/06}{2024dh}
+\ProvidesExplFile{eb-tcolorbox.cfg}{2024/08/08}{2024di}
{Customization of tcolorbox for easybook}
\cs_set_protected:Npn \addtotcbstyle #1#2
diff --git a/macros/latex/contrib/easybook/easybook.pdf b/macros/latex/contrib/easybook/easybook.pdf
index 4e4981ab96..445fa0af4c 100644
--- a/macros/latex/contrib/easybook/easybook.pdf
+++ b/macros/latex/contrib/easybook/easybook.pdf
Binary files differ
diff --git a/macros/latex/contrib/easybook/easybook.tex b/macros/latex/contrib/easybook/easybook.tex
index a985be89b4..582e5af198 100644
--- a/macros/latex/contrib/easybook/easybook.tex
+++ b/macros/latex/contrib/easybook/easybook.tex
@@ -23,8 +23,8 @@
name = easybook,
color-scheme = blue,
title = EASYBOOK使用手册,
- version = v2024dh,
- date = 2024/08/06,
+ version = v2024di,
+ date = 2024/08/08,
authors = 瞿毅,
info = 简便地排版中文学位论文或书籍,
email = toquyi@163.com,
diff --git a/macros/latex/contrib/jsonparse/README.md b/macros/latex/contrib/jsonparse/README.md
index 69258570db..c4df9ad419 100644
--- a/macros/latex/contrib/jsonparse/README.md
+++ b/macros/latex/contrib/jsonparse/README.md
@@ -1,6 +1,6 @@
-![Version 0.8.3](https://img.shields.io/badge/version-0.8.3-blue)
+![Version 0.8.7](https://img.shields.io/badge/version-0.8.7-blue)
-![Jason, the JSON parsing horse](https://github.com/jasperhabicht/jsonparse/assets/6378801/d6abde3a-fa12-4b63-a213-ad8332e32199)
+![Jason, the JSON parsing horse](https://github.com/jasperhabicht/jsonparse/assets/6378801/ddfddc70-bf5f-4121-ba45-4b9128875d85)
# The `jsonparse` package
@@ -46,5 +46,5 @@ We can store it in the token variable `\myJSONdata` using the command `\JSONPars
This package including all files is subject to the LPPL 1.3c license. Copyright 2024 Jasper Habicht (mail(at)jasperhabicht.de).
-Jason, the JSON parseing horse: Copyright 2024 Hannah Klöber.
+Jason, the JSON parsing horse: Copyright 2024 Hannah Klöber.
diff --git a/macros/latex/contrib/jsonparse/jason/jason.pdf b/macros/latex/contrib/jsonparse/jason/jason.pdf
index 324458e684..44ff3db133 100644
--- a/macros/latex/contrib/jsonparse/jason/jason.pdf
+++ b/macros/latex/contrib/jsonparse/jason/jason.pdf
Binary files differ
diff --git a/macros/latex/contrib/jsonparse/jason/jason.svg b/macros/latex/contrib/jsonparse/jason/jason.svg
index fe8793dfa8..aff567e175 100644
--- a/macros/latex/contrib/jsonparse/jason/jason.svg
+++ b/macros/latex/contrib/jsonparse/jason/jason.svg
@@ -1,67 +1,25 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="250px" height="250px" viewBox="0 0 450 450" enable-background="new 0 0 449.5 435" xml:space="preserve">
-<circle fill="#3FA9F5" cx="239" cy="226" r="206.166"/>
-<g>
- <defs>
- <circle id="SVGID_1_" cx="239" cy="226" r="206.166"/>
- </defs>
- <clipPath id="SVGID_2_">
- <use xlink:href="#SVGID_1_" overflow="visible"/>
- </clipPath>
- <path clip-path="url(#SVGID_2_)" fill="#C69C6D" d="M418.334,389.667c0,0-10.334-12.333-36-86.667S344,189.333,333.667,163
- c-5.552-14.149-12.545-22.326-17.83-26.869c7.769-5.957,15.778-13.185,19.83-20.131c6.902-11.834,11.667-24.5,15.667-38.5
- C353.731,69.108,361,63.333,361,63.333s-55-13-78.666,29.5c-1.534,2.754-3.036,5.383-4.538,7.892l-125.587,25.33
- C141.705,137.165,130.648,151.436,126,166c-4.127,12.93-11.333,16-26.333,28s-47.398,43.774-47.398,43.774l12.106,48.851
- l56.113,69.247c13.436-9.009,28.206-20.065,46.512-27.122c13.874-5.348,33.133-8.479,51.113-12.082
- c2.555,6.323,8.828,23.014,11.387,40.332c3.25,22,4.5,91.5,4.5,91.5L418.334,389.667z"/>
- <path clip-path="url(#SVGID_2_)" fill="#F7931E" stroke="#603813" stroke-width="3" stroke-miterlimit="10" d="M465.5,307.334
- c0,0-9.667-14.833-21.667-21c-11.409-5.863-24.5-7.167-24.5-7.167s2.853-11.646,11.167-22.833C439.667,244,456,233.667,456,233.667
- l-51.499-17.5c0,0,17.166-6.5,25.166-13.833c9.095-8.336,13.333-30,13.333-30s-47.621,2.806-54.333-15.167
- C383.501,143.333,402.001,114,402.001,114s-27.334-6.333-41.167-6.167c-7.572,0.091-15.827,0.876-22.104,2.556
- c-0.978,1.889-1.986,3.764-3.063,5.611c-4.052,6.946-12.062,14.174-19.83,20.131c5.285,4.543,12.278,12.72,17.83,26.869
- c10.333,26.333,23.001,65.666,48.667,140s36,86.667,36,86.667l32.5-36.5c-15.167-3-22.334-20.5-22.334-20.5L465.5,307.334z"/>
- <path clip-path="url(#SVGID_2_)" fill="none" stroke="#603813" stroke-width="3" stroke-miterlimit="10" d="M234,448.5
- c0,0-1.25-69.5-4.5-91.5c-2.559-17.318-8.832-34.009-11.387-40.332c-0.185,0.037-0.369,0.074-0.554,0.111"/>
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- This file was generated by dvisvgm 3.2.2 -->
+<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width="250px" height="250px" viewBox='-70.503905 -70.50391 452.105105 441.67801'>
+<defs>
+<clipPath id='clip'>
+<path d='M361.3402 148.0117C361.3402 261.4457 269.3832 353.4067 155.9452 353.4067C42.5082 353.4067-49.4531 261.4457-49.4531 148.0117C-49.4531 34.5747 42.5082-57.3867 155.9452-57.3867C269.3832-57.3867 361.3402 34.5747 361.3402 148.0117Z'/>
+</clipPath>
+</defs>
+<g id='page1'>
+<path d='M361.3402 148.0117C361.3402 261.4457 269.3832 353.4067 155.9452 353.4067C42.5082 353.4067-49.4531 261.4457-49.4531 148.0117C-49.4531 34.5747 42.5082-57.3867 155.9452-57.3867C269.3832-57.3867 361.3402 34.5747 361.3402 148.0117Z' fill='#5ba3de'/>
+<path d='M334.6092 311.0627C334.6092 311.0627 324.3162 298.7777 298.7422 224.7227C273.1762 150.6637 260.5542 111.4807 250.2582 85.2457C244.7262 71.1487 237.7622 62.9997 232.4962 58.4767C240.2342 52.5387 248.2152 45.3397 252.2502 38.4217C259.1252 26.6289 263.8752 14.0117 267.8592 .0664C270.2462-8.2969 277.4922-14.0508 277.4922-14.0508S222.6952-27 199.1172 15.3398C197.5862 18.0859 196.0942 20.7031 194.5942 23.2031L69.4762 48.4377C59.0122 59.5077 48.0002 73.7227 43.3672 88.2347C39.2542 101.1167 32.0742 104.1757 17.1289 116.1287C2.1875 128.0857-30.0898 159.7387-30.0898 159.7387L-18.0273 208.4097L37.8752 277.3987C51.2622 268.4177 65.9722 257.4067 84.2152 250.3787C98.0352 245.0467 117.2222 241.9297 135.1372 238.3397C137.6832 244.6367 143.9332 261.2657 146.4802 278.5237C149.7192 300.4377 150.9652 369.6797 150.9652 369.6797Z' fill='#ba8d5d' clip-path='url(#clip)'/>
+<path d='M381.6012 229.0387C381.6012 229.0387 371.9692 214.2617 360.0122 208.1167C348.6442 202.2777 335.6052 200.9767 335.6052 200.9767S338.4452 189.3747 346.7302 178.2307C355.8592 165.9457 372.1372 155.6447 372.1372 155.6447L320.8282 138.2107C320.8282 138.2107 337.9292 131.7347 345.8982 124.4297C354.9612 116.1247 359.1832 94.5427 359.1832 94.5427S311.7422 97.3397 305.0512 79.4337C299.9062 65.6527 318.3362 36.4297 318.3362 36.4297S291.1012 30.1167 277.3242 30.2847C269.7812 30.3747 261.5542 31.1567 255.3042 32.8277C254.3282 34.7107 253.3242 36.5817 252.2502 38.4217C248.2152 45.3397 240.2342 52.5387 232.4962 58.4767C237.7622 62.9997 244.7262 71.1487 250.2582 85.2457C260.5542 111.4807 273.1762 150.6637 298.7422 224.7227C324.3162 298.7777 334.6092 311.0627 334.6092 311.0627L366.9882 274.6997C351.8752 271.7107 344.7382 254.2777 344.7382 254.2777Z' fill='#f68623' stroke='#512c15' stroke-width='2.9888' stroke-miterlimit='10' clip-path='url(#clip)'/>
+<path d='M37.8712 277.3987C51.2622 268.4177 65.9722 257.4067 84.2152 250.3787C108.1682 241.1407 148.2502 238.5427 169.8632 228.6327C191.4762 218.7307 194.1792 185.4067 194.1792 185.4067M150.9652 369.6797C150.9652 369.6797 149.7192 300.4377 146.4802 278.5237C143.9332 261.2657 137.6832 244.6367 135.1332 238.3397C134.9492 238.3747 134.7692 238.4097 134.5862 238.4497M212.7342 71.7967C212.7342 71.7967 242.9532 54.3637 252.2502 38.4217C259.1252 26.6289 263.8752 14.0117 267.8592 .0664C270.2462-8.2969 277.4922-14.0508 277.4922-14.0508S222.6952-27 199.1172 15.3398C197.5862 18.0859 196.0942 20.7031 194.5942 23.2031M69.4762 48.4377C59.0122 59.5077 47.9962 73.7227 43.3672 88.2347C39.2542 101.1167 32.0742 104.1757 17.1289 116.1287C2.1875 128.0857-30.0898 159.7387-30.0898 159.7387' stroke='#512c15' fill='none' stroke-width='2.9888' stroke-miterlimit='10' clip-path='url(#clip)'/>
+<path d='M106.4652 1.2266C106.4652 1.2266 105.9652-3.918 96.3322-13.8828C94.6292-15.6484 92.7692-17.0078 90.8672-18.0586C91.1792-11.9961 91.7852-6.9063 92.1642-4.1016C98.3012-4.2969 103.4262-2.5938 106.4652 1.2266Z' fill='#ba8d5d' stroke='#512c15' stroke-width='2.9888' stroke-miterlimit='10'/>
+<path d='M96.1722-32.6484C106.4652-33.4766 119.5822-30.9844 125.7222-21.6875C128.7112-24.8398 128.7112-39.9531 128.7112-39.9531S136.2112-20.1836 148.1132-14.75C143.5472-30.8398 127.1132-45.75 120.3282-51.2422C113.3552-56.8906 103.7652-70.50391 103.7652-70.50391S94.8202-59.2109 91.8322-41.6133C91.2892-38.4297 90.9722-35.0938 90.8042-31.7695C92.5002-32.1836 94.2892-32.4961 96.1722-32.6484Z' fill='#ba8d5d' stroke='#512c15' stroke-width='2.9888' stroke-miterlimit='10'/>
+<path d='M184.1722-2.2617C173.5472-11.8906 162.4222-13.0547 153.6172-13.3828C138.5702-13.9531 128.7112-39.9531 128.7112-39.9531S128.7112-24.8398 125.7222-21.6875C119.5822-30.9844 106.4652-33.4766 96.1722-32.6484C81.6252-31.4727 72.2622-21.0234 72.2622-21.0234S86.7072-23.8438 96.3322-13.8828C105.9652-3.918 106.4652 1.2266 106.4652 1.2266C99.3242-7.7422 80.7262-5.082 64.4532 6.543C48.1832 18.1602 52.9962 49.3787 52.9962 49.3787S56.6522 36.5937 73.5862 28.7887C80.1332 25.7734 97.4962 25.1367 97.4962 25.1367S72.7582 25.9687 67.9412 54.8597C65.0472 72.2457 71.5942 87.0707 71.5942 87.0707S73.0902 71.6287 87.8672 62.4957C98.1402 56.1487 109.6212 53.1997 109.6212 53.1997C104.4722 57.0157 106.4652 67.9767 106.4652 67.9767S115.4292 52.8667 139.1722 54.3637C169.5392 56.2737 182.0352 44.1877 194.5942 23.2031C194.0432 17.1289 191.9692 4.8008 184.1722-2.2617Z' fill='#f68623' stroke='#512c15' stroke-width='2.9888' stroke-miterlimit='10'/>
+<path d='M37.8712 277.3987C46.1912 267.0387 57.7072 251.8637 60.5542 243.9027C68.0272 222.9807 59.3082 213.2657 54.5782 206.0427C49.8442 198.8207 57.8122 194.5857 44.6132 181.8827S-8.9336 190.1017-14.4141 187.6137C-19.8945 185.1207-19.3945 181.8827-20.8906 170.9257C-22.3867 159.9647-28.0469 158.7847-37.3281 159.9647C-49.9297 161.5627-55.7617 184.3747-58.9961 200.0667C-62.23437 215.7577-70.503905 215.5117-68.71094 228.9567C-67.86328 235.3317-64.28125 241.8907-52.8711 244.2927C-53.5937 250.0317-53.8047 257.0317-52.5898 264.6597C-49.4414 284.4727-17.918 294.3787 5.5 292.1247C16.2148 291.0977 26.5742 284.9727 37.8712 277.3987Z' fill='#976d46' stroke='#512c15' stroke-width='2.9888' stroke-miterlimit='10'/>
+<path d='M159.6012 113.0977C159.6012 122.6597 150.8982 130.4097 140.1722 130.4097C129.4412 130.4097 120.7462 122.6597 120.7462 113.0977C120.7462 103.5347 129.4412 95.7887 140.1722 95.7887C150.8982 95.7887 159.6012 103.5347 159.6012 113.0977Z' fill='#fff' stroke='#512c15' stroke-width='2.9888' stroke-miterlimit='10'/>
+<path d='M146.6482 115.1327C146.6482 118.9847 143.1172 122.1097 138.7622 122.1097C134.4062 122.1097 130.8712 118.9847 130.8712 115.1327C130.8712 111.2817 134.4062 108.1597 138.7622 108.1597C143.1172 108.1597 146.6482 111.2817 146.6482 115.1327Z' fill='#341a13'/>
+<path d='M-1.9453 215.2187C-1.9453 215.2187 .4883 211.0157 4.1406 206.1677C8.5508 200.3047 16.4766 195.1837 20.4531 194.8357C27.5508 194.2107 32.6052 195.9337 29.7152 201.4997C26.8281 207.0707 17.3984 212.9567 10.4922 213.8907C3.5781 214.8167-1.9453 215.2187-1.9453 215.2187Z' fill='#341a13'/>
+<path d='M-43.0742 245.1407C-43.793 249.6797-44.1641 256.3747-41.0664 260.0897C-36.082 266.0667-26.6211 275.0347-5.1992 262.0817C12.7813 251.2107 35.8402 229.8127 42.7892 223.2227C38.7772 226.3637 28.1367 232.1247 4.0156 231.9457C-22.5469 231.7417-28.8125 244.2577-43.0742 245.1407Z' fill='#fff' stroke='#512c15' stroke-width='2.9888' stroke-miterlimit='10'/>
+<path d='M-52.8711 244.2927C-50.918 244.7027-48.7383 244.9997-46.2969 245.1487C-45.1719 245.2107-44.1055 245.2067-43.0742 245.1407' stroke='#512c15' fill='none' stroke-width='2.9888' stroke-miterlimit='10'/>
+<path d='M25.7773 230.1017C9.6211 238.6997-18.1562 252.9177-25.7695 253.2777C-33.0273 253.6167-39.2852 248.5467-42.6719 245.1057C-42.8047 245.1167-42.9375 245.1287-43.0742 245.1407' stroke='#512c15' fill='none' stroke-width='2.9888' stroke-miterlimit='10'/>
</g>
-<path fill="#F7931E" stroke="#603813" stroke-width="3" stroke-miterlimit="10" d="M267.334,75.167
- C256.668,65.5,245.5,64.333,236.667,64c-15.107-0.57-25-26.667-25-26.667s0,15.167-3,18.333c-6.167-9.333-19.333-11.833-29.667-11
- c-14.596,1.177-24,11.667-24,11.667s14.5-2.833,24.167,7.167c9.667,10,10.167,15.167,10.167,15.167
- c-7.167-9-25.834-6.334-42.167,5.333s-11.5,43-11.5,43s3.667-12.833,20.667-20.667c6.572-3.028,24-3.667,24-3.667
- S155.5,103.5,150.667,132.5c-2.909,17.455,3.667,32.333,3.667,32.333s1.5-15.5,16.333-24.667c10.31-6.371,21.833-9.333,21.833-9.333
- c-5.167,3.833-3.166,14.833-3.166,14.833s9-15.167,32.833-13.667c30.479,1.918,43.022-10.208,55.629-31.275
- C277.24,94.63,275.157,82.257,267.334,75.167z"/>
-<path fill="#A67C52" stroke="#603813" stroke-width="3" stroke-miterlimit="10" d="M120.487,355.872
- c8.348-10.395,19.908-25.626,22.763-33.622c7.5-21-1.25-30.75-6-38s3.25-11.5-10-24.25S73.5,268.25,68,265.75S63,260,61.5,249
- s-7.183-12.182-16.5-11c-12.646,1.604-18.5,24.5-21.75,40.25s-11.549,15.507-9.75,29c0.854,6.402,4.447,12.983,15.898,15.396
- c-0.721,5.758-0.935,12.787,0.283,20.442c3.164,19.888,34.804,29.832,58.308,27.572C98.749,369.626,109.143,363.479,120.487,355.872
- z"/>
-<path fill="#C69C6D" stroke="#603813" stroke-width="3" stroke-miterlimit="10" d="M189.334,78.667c0,0-0.5-5.167-10.167-15.167
- c-1.713-1.772-3.58-3.135-5.489-4.188c0.317,6.082,0.921,11.189,1.303,14.006C181.138,73.124,186.281,74.833,189.334,78.667z"/>
-<path fill="#C69C6D" stroke="#603813" stroke-width="3" stroke-miterlimit="10" d="M179,44.667c10.334-0.833,23.5,1.667,29.667,11
- c3-3.167,3-18.333,3-18.333s7.525,19.843,19.471,25.298c-4.58-16.15-21.08-31.12-27.888-36.632
- c-7-5.667-16.625-19.333-16.625-19.333s-8.979,11.333-11.979,29c-0.542,3.195-0.864,6.542-1.031,9.882
- C175.318,45.129,177.115,44.819,179,44.667z"/>
-<ellipse fill="#FFFFFF" stroke="#603813" stroke-width="3" stroke-miterlimit="10" cx="223.167" cy="190.959" rx="19.5" ry="17.375"/>
-<ellipse fill="#42210B" cx="221.751" cy="193" rx="7.917" ry="7"/>
-<path fill="#603813" d="M80.519,293.464c0,0,2.443-4.219,6.106-9.089C91.052,278.49,99.007,273.351,103,273
- c7.125-0.625,12.198,1.105,9.299,6.695S99.936,291.193,93,292.125S80.519,293.464,80.519,293.464z"/>
-<path fill="none" stroke="#603813" stroke-width="3" stroke-miterlimit="10" d="M296,149.5c0,0,30.334-17.5,39.667-33.5
- c6.902-11.834,11.667-24.5,15.667-38.5C353.731,69.108,361,63.333,361,63.333s-55-13-78.666,29.5
- c-1.534,2.754-3.036,5.383-4.538,7.892"/>
-<path fill="none" stroke="#603813" stroke-width="3" stroke-miterlimit="10" d="M120.488,355.872
- c13.437-9.009,28.207-20.065,46.512-27.122c24.045-9.269,64.273-11.878,85.969-21.821s24.408-43.392,24.408-43.392"/>
-<path fill="#FFFFFF" stroke="#603813" stroke-width="3" stroke-miterlimit="10" d="M127.5,299.5c0,0-0.749,0.729-2.083,1.995
- C126.919,300.316,127.5,299.5,127.5,299.5z"/>
-<path fill="#FFFFFF" stroke="#603813" stroke-width="3" stroke-miterlimit="10" d="M39.236,323.495
- c-0.724,4.556-1.093,11.276,2.014,15.005c5,6,14.5,15,36,2c18.048-10.912,41.196-32.388,48.167-39.005
- c-4.023,3.157-14.707,8.937-38.917,8.755C59.839,310.05,53.549,322.611,39.236,323.495z"/>
-<path fill="none" stroke="#603813" stroke-width="3" stroke-miterlimit="10" d="M29.398,322.646c1.963,0.413,4.15,0.708,6.602,0.854
- c1.129,0.067,2.202,0.06,3.236-0.005"/>
-<path fill="none" stroke="#603813" stroke-width="3" stroke-miterlimit="10" d="M108.345,308.401
- c-16.22,8.63-44.097,22.899-51.74,23.26c-7.288,0.344-13.568-4.744-16.966-8.201c-0.135,0.01-0.266,0.026-0.403,0.035"/>
-<path fill="none" stroke="#603813" stroke-width="3" stroke-miterlimit="10" d="M152.209,126.056
- C141.705,137.165,130.648,151.436,126,166c-4.126,12.93-11.333,16-26.333,28s-47.398,43.774-47.398,43.774"/>
</svg>
diff --git a/macros/latex/contrib/jsonparse/jason/jason.tex b/macros/latex/contrib/jsonparse/jason/jason.tex
new file mode 100644
index 0000000000..28e9eb1b0c
--- /dev/null
+++ b/macros/latex/contrib/jsonparse/jason/jason.tex
@@ -0,0 +1,289 @@
+% File: jason/jason.tex
+% Copyright 2024 Jasper Habicht (mail(at)jasperhabicht.de).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+%
+% This file is part of the `jsonparse' package (The Work in LPPL)
+% and all files in that bundle must be distributed together.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+\documentclass{standalone}
+\usepackage{l3draw}
+
+\begin{document}
+\ExplSyntaxOn
+
+\color_set:nnn { color_i } { rgb } { 0.356863 , 0.639216 , 0.870588 }
+\color_set:nnn { color_ii } { rgb } { 0.729412 , 0.552941 , 0.364706 }
+\color_set:nnn { color_iii } { rgb } { 0.964706 , 0.52549 , 0.137255 }
+\color_set:nnn { color_iv } { rgb } { 0.592157 , 0.427451 , 0.27451 }
+\color_set:nnn { color_v } { rgb } { 0.317647 , 0.172549 , 0.0823529 }
+\color_set:nnn { color_vi } { rgb } { 0.203922 , 0.101961 , 0.0745098 }
+\color_set:nnn { color_vii } { rgb } { 1 , 1 , 1 }
+
+\draw_begin:
+
+\cs_new:Npn \__jsonparse_jason_path_i: {
+ \draw_path_moveto:n { 433.418 , 221.836 }
+ \draw_path_curveto:nnn { 433.418 , 335.695 } { 341.117 , 428 } { 227.254 , 428 }
+ \draw_path_curveto:nnn { 113.391 , 428 } { 21.086 , 335.695 } { 21.086 , 221.836 }
+ \draw_path_curveto:nnn { 21.086 , 107.973 } { 113.391 , 15.668 } { 227.254 , 15.668 }
+ \draw_path_curveto:nnn { 341.117 , 15.668 } { 433.418 , 107.973 } { 433.418 , 221.836 }
+ \draw_path_close:
+}
+
+\cs_new:Npn \__jsonparse_jason_path_ii: {
+ \draw_path_moveto:n { 406.586 , 385.5 }
+ \draw_path_curveto:nnn { 406.586 , 385.5 } { 396.254 , 373.168 } { 370.586 , 298.836 }
+ \draw_path_curveto:nnn { 344.922 , 224.5 } { 332.254 , 185.168 } { 321.918 , 158.836 }
+ \draw_path_curveto:nnn { 316.367 , 144.684 } { 309.375 , 136.508 } { 304.09 , 131.965 }
+ \draw_path_curveto:nnn { 311.859 , 126.008 } { 319.867 , 118.781 } { 323.918 , 111.836 }
+ \draw_path_curveto:nnn { 330.82 , 100 } { 335.586 , 87.336 } { 339.586 , 73.336 }
+ \draw_path_curveto:nnn { 341.984 , 64.941 } { 349.254 , 59.168 } { 349.254 , 59.168 }
+ \draw_path_curveto:nnn { 349.254 , 59.168 } { 294.254 , 46.168 } { 270.586 , 88.668 }
+ \draw_path_curveto:nnn { 269.051 , 91.422 } { 267.551 , 94.051 } { 266.047 , 96.559 }
+ \draw_path_lineto:n { 140.461 , 121.891 }
+ \draw_path_curveto:nnn { 129.957 , 133 } { 118.902 , 147.27 } { 114.254 , 161.836 }
+ \draw_path_curveto:nnn { 110.125 , 174.766 } { 102.918 , 177.836 } { 87.918 , 189.836 }
+ \draw_path_curveto:nnn { 72.918 , 201.836 } { 40.52 , 233.609 } { 40.52 , 233.609 }
+ \draw_path_lineto:n { 52.629 , 282.461 }
+ \draw_path_lineto:n { 108.742 , 351.707 }
+ \draw_path_curveto:nnn { 122.176 , 342.695 } { 136.945 , 331.641 } { 155.254 , 324.586 }
+ \draw_path_curveto:nnn { 169.125 , 319.234 } { 188.387 , 316.105 } { 206.367 , 312.504 }
+ \draw_path_curveto:nnn { 208.922 , 318.824 } { 215.195 , 335.516 } { 217.754 , 352.836 }
+ \draw_path_curveto:nnn { 221.004 , 374.836 } { 222.254 , 444.336 } { 222.254 , 444.336 }
+ \draw_path_close:
+}
+
+\cs_new:Npn \__jsonparse_jason_path_iii: {
+ \draw_path_moveto:n { 453.754 , 303.168 }
+ \draw_path_curveto:nnn { 453.754 , 303.168 } { 444.086 , 288.336 } { 432.086 , 282.168 }
+ \draw_path_curveto:nnn { 420.676 , 276.305 } { 407.586 , 275 } { 407.586 , 275 }
+ \draw_path_curveto:nnn { 407.586 , 275 } { 410.438 , 263.355 } { 418.754 , 252.168 }
+ \draw_path_curveto:nnn { 427.918 , 239.836 } { 444.254 , 229.5 } { 444.254 , 229.5 }
+ \draw_path_lineto:n { 392.754 , 212 }
+ \draw_path_curveto:nnn { 392.754 , 212 } { 409.918 , 205.5 } { 417.918 , 198.168 }
+ \draw_path_curveto:nnn { 427.016 , 189.832 } { 431.254 , 168.168 } { 431.254 , 168.168 }
+ \draw_path_curveto:nnn { 431.254 , 168.168 } { 383.633 , 170.973 } { 376.918 , 153 }
+ \draw_path_curveto:nnn { 371.754 , 139.168 } { 390.254 , 109.836 } { 390.254 , 109.836 }
+ \draw_path_curveto:nnn { 390.254 , 109.836 } { 362.918 , 103.5 } { 349.086 , 103.668 }
+ \draw_path_curveto:nnn { 341.516 , 103.758 } { 333.258 , 104.543 } { 326.984 , 106.223 }
+ \draw_path_curveto:nnn { 326.004 , 108.113 } { 324.996 , 109.988 } { 323.918 , 111.836 }
+ \draw_path_curveto:nnn { 319.867 , 118.781 } { 311.859 , 126.008 } { 304.09 , 131.965 }
+ \draw_path_curveto:nnn { 309.375 , 136.508 } { 316.367 , 144.684 } { 321.918 , 158.836 }
+ \draw_path_curveto:nnn { 332.254 , 185.168 } { 344.922 , 224.5 } { 370.586 , 298.836 }
+ \draw_path_curveto:nnn { 396.254 , 373.168 } { 406.586 , 385.5 } { 406.586 , 385.5 }
+ \draw_path_lineto:n { 439.086 , 349 }
+ \draw_path_curveto:nnn { 423.918 , 346 } { 416.754 , 328.5 } { 416.754 , 328.5 }
+ \draw_path_close:
+}
+
+\cs_new:Npn \__jsonparse_jason_path_iv: {
+ \draw_path_moveto:n { 255.586 , 71 }
+ \draw_path_curveto:nnn { 244.922 , 61.336 } { 233.754 , 60.168 } { 224.918 , 59.836 }
+ \draw_path_curveto:nnn { 209.812 , 59.266 } { 199.918 , 33.168 } { 199.918 , 33.168 }
+ \draw_path_curveto:nnn { 199.918 , 33.168 } { 199.918 , 48.336 } { 196.918 , 51.5 }
+ \draw_path_curveto:nnn { 190.754 , 42.168 } { 177.586 , 39.668 } { 167.254 , 40.5 }
+ \draw_path_curveto:nnn { 152.656 , 41.68 } { 143.254 , 52.168 } { 143.254 , 52.168 }
+ \draw_path_curveto:nnn { 143.254 , 52.168 } { 157.754 , 49.336 } { 167.418 , 59.336 }
+ \draw_path_curveto:nnn { 177.086 , 69.336 } { 177.586 , 74.5 } { 177.586 , 74.5 }
+ \draw_path_curveto:nnn { 170.418 , 65.5 } { 151.754 , 68.168 } { 135.418 , 79.836 }
+ \draw_path_curveto:nnn { 119.086 , 91.5 } { 123.918 , 122.836 } { 123.918 , 122.836 }
+ \draw_path_curveto:nnn { 123.918 , 122.836 } { 127.586 , 110 } { 144.586 , 102.168 }
+ \draw_path_curveto:nnn { 151.156 , 99.141 } { 168.586 , 98.5 } { 168.586 , 98.5 }
+ \draw_path_curveto:nnn { 168.586 , 98.5 } { 143.754 , 99.336 } { 138.918 , 128.336 }
+ \draw_path_curveto:nnn { 136.012 , 145.789 } { 142.586 , 160.668 } { 142.586 , 160.668 }
+ \draw_path_curveto:nnn { 142.586 , 160.668 } { 144.086 , 145.168 } { 158.918 , 136 }
+ \draw_path_curveto:nnn { 169.23 , 129.629 } { 180.754 , 126.668 } { 180.754 , 126.668 }
+ \draw_path_curveto:nnn { 175.586 , 130.5 } { 177.586 , 141.5 } { 177.586 , 141.5 }
+ \draw_path_curveto:nnn { 177.586 , 141.5 } { 186.586 , 126.336 } { 210.418 , 127.836 }
+ \draw_path_curveto:nnn { 240.898 , 129.754 } { 253.441 , 117.625 } { 266.047 , 96.559 }
+ \draw_path_curveto:nnn { 265.492 , 90.465 } { 263.41 , 78.09 } { 255.586 , 71 }
+ \draw_path_close:
+}
+
+\cs_new:Npn \__jsonparse_jason_path_v: {
+ \draw_path_moveto:n { 108.738 , 351.707 }
+ \draw_path_curveto:nnn { 117.086 , 341.312 } { 128.648 , 326.078 } { 131.504 , 318.086 }
+ \draw_path_curveto:nnn { 139.004 , 297.086 } { 130.254 , 287.336 } { 125.504 , 280.086 }
+ \draw_path_curveto:nnn { 120.754 , 272.836 } { 128.754 , 268.586 } { 115.504 , 255.836 }
+ \draw_path_curveto:nnn { 102.254 , 243.086 } { 61.754 , 264.086 } { 56.254 , 261.586 }
+ \draw_path_curveto:nnn { 50.754 , 259.086 } { 51.254 , 255.836 } { 49.754 , 244.836 }
+ \draw_path_curveto:nnn { 48.254 , 233.836 } { 42.57 , 232.652 } { 33.254 , 233.836 }
+ \draw_path_curveto:nnn { 20.605 , 235.438 } { 14.754 , 258.336 } { 11.504 , 274.086 }
+ \draw_path_curveto:nnn { 8.254 , 289.836 } { -0.047 , 289.59 } { 1.754 , 303.086 }
+ \draw_path_curveto:nnn { 2.605 , 309.484 } { 6.199 , 316.066 } { 17.652 , 318.48 }
+ \draw_path_curveto:nnn { 16.93 , 324.238 } { 16.715 , 331.266 } { 17.934 , 338.922 }
+ \draw_path_curveto:nnn { 21.098 , 358.809 } { 52.738 , 368.754 } { 76.242 , 366.492 }
+ \draw_path_curveto:nnn { 87 , 365.461 } { 97.395 , 359.312 } { 108.738 , 351.707 }
+ \draw_path_close:
+}
+
+\cs_new:Npn \__jsonparse_jason_path_vi: {
+ \draw_path_moveto:n { 108.738 , 351.707 }
+ \draw_path_curveto:nnn { 122.176 , 342.695 } { 136.945 , 331.641 } { 155.254 , 324.586 }
+ \draw_path_curveto:nnn { 179.297 , 315.316 } { 219.527 , 312.707 } { 241.223 , 302.762 }
+ \draw_path_curveto:nnn { 262.918 , 292.82 } { 265.629 , 259.371 } { 265.629 , 259.371 }
+
+ \draw_path_moveto:n { 222.254 , 444.336 }
+ \draw_path_curveto:nnn { 222.254 , 444.336 } { 221.004 , 374.836 } { 217.754 , 352.836 }
+ \draw_path_curveto:nnn { 215.195 , 335.516 } { 208.922 , 318.824 } { 206.363 , 312.504 }
+ \draw_path_curveto:nnn { 206.18 , 312.539 } { 205.996 , 312.574 } { 205.812 , 312.613 }
+
+ \draw_path_moveto:n { 284.254 , 145.336 }
+ \draw_path_curveto:nnn { 284.254 , 145.336 } { 314.586 , 127.836 } { 323.918 , 111.836 }
+ \draw_path_curveto:nnn { 330.82 , 100 } { 335.586 , 87.336 } { 339.586 , 73.336 }
+ \draw_path_curveto:nnn { 341.984 , 64.941 } { 349.254 , 59.168 } { 349.254 , 59.168 }
+ \draw_path_curveto:nnn { 349.254 , 59.168 } { 294.254 , 46.168 } { 270.586 , 88.668 }
+ \draw_path_curveto:nnn { 269.051 , 91.422 } { 267.551 , 94.051 } { 266.047 , 96.559 }
+
+ \draw_path_moveto:n { 140.461 , 121.891 }
+ \draw_path_curveto:nnn { 129.957 , 133 } { 118.898 , 147.27 } { 114.254 , 161.836 }
+ \draw_path_curveto:nnn { 110.125 , 174.766 } { 102.918 , 177.836 } { 87.918 , 189.836 }
+ \draw_path_curveto:nnn { 72.918 , 201.836 } { 40.52 , 233.609 } { 40.52 , 233.609 }
+}
+
+\cs_new:Npn \__jsonparse_jason_path_vii: {
+ \draw_path_moveto:n { 177.586 , 74.5 }
+ \draw_path_curveto:nnn { 177.586 , 74.5 } { 177.086 , 69.336 } { 167.418 , 59.336 }
+ \draw_path_curveto:nnn { 165.707 , 57.562 } { 163.84 , 56.199 } { 161.93 , 55.145 }
+ \draw_path_curveto:nnn { 162.246 , 61.227 } { 162.852 , 66.336 } { 163.234 , 69.152 }
+ \draw_path_curveto:nnn { 169.391 , 68.957 } { 174.535 , 70.668 } { 177.586 , 74.5 }
+ \draw_path_close:
+}
+
+\cs_new:Npn \__jsonparse_jason_path_viii: {
+ \draw_path_moveto:n { 167.254 , 40.5 }
+ \draw_path_curveto:nnn { 177.586 , 39.668 } { 190.754 , 42.168 } { 196.918 , 51.5 }
+ \draw_path_curveto:nnn { 199.918 , 48.336 } { 199.918 , 33.168 } { 199.918 , 33.168 }
+ \draw_path_curveto:nnn { 199.918 , 33.168 } { 207.445 , 53.012 } { 219.391 , 58.465 }
+ \draw_path_curveto:nnn { 214.809 , 42.316 } { 198.312 , 27.348 } { 191.504 , 21.836 }
+ \draw_path_curveto:nnn { 184.504 , 16.168 } { 174.879 , 2.5 } { 174.879 , 2.5 }
+ \draw_path_curveto:nnn { 174.879 , 2.5 } { 165.898 , 13.836 } { 162.898 , 31.5 }
+ \draw_path_curveto:nnn { 162.355 , 34.695 } { 162.035 , 38.043 } { 161.867 , 41.383 }
+ \draw_path_curveto:nnn { 163.57 , 40.965 } { 165.367 , 40.652 } { 167.254 , 40.5 }
+ \draw_path_close:
+}
+
+\cs_new:Npn \__jsonparse_jason_path_ix: {
+ \draw_path_moveto:n { 230.922 , 186.793 }
+ \draw_path_curveto:nnn { 230.922 , 196.391 } { 222.188 , 204.168 } { 211.422 , 204.168 }
+ \draw_path_curveto:nnn { 200.648 , 204.168 } { 191.922 , 196.391 } { 191.922 , 186.793 }
+ \draw_path_curveto:nnn { 191.922 , 177.195 } { 200.648 , 169.418 } { 211.422 , 169.418 }
+ \draw_path_curveto:nnn { 222.188 , 169.418 } { 230.922 , 177.195 } { 230.922 , 186.793 }
+ \draw_path_close:
+}
+
+\cs_new:Npn \__jsonparse_jason_path_x: {
+ \draw_path_moveto:n { 217.922 , 188.836 }
+ \draw_path_curveto:nnn { 217.922 , 192.699 } { 214.375 , 195.836 } { 210.004 , 195.836 }
+ \draw_path_curveto:nnn { 205.633 , 195.836 } { 202.086 , 192.699 } { 202.086 , 188.836 }
+ \draw_path_curveto:nnn { 202.086 , 184.969 } { 205.633 , 181.836 } { 210.004 , 181.836 }
+ \draw_path_curveto:nnn { 214.375 , 181.836 } { 217.922 , 184.969 } { 217.922 , 188.836 }
+ \draw_path_close:
+}
+
+% nostril
+\cs_new:Npn \__jsonparse_jason_path_xi: {
+ \draw_path_moveto:n { 68.77 , 289.297 }
+ \draw_path_curveto:nnn { 68.77 , 289.297 } { 71.215 , 285.078 } { 74.879 , 280.211 }
+ \draw_path_curveto:nnn { 79.305 , 274.324 } { 87.262 , 269.184 } { 91.254 , 268.836 }
+ \draw_path_curveto:nnn { 98.379 , 268.211 } { 103.449 , 269.938 } { 100.551 , 275.527 }
+ \draw_path_curveto:nnn { 97.652 , 281.117 } { 88.188 , 287.027 } { 81.254 , 287.961 }
+ \draw_path_curveto:nnn { 74.316 , 288.891 } { 68.77 , 289.297 } { 68.77 , 289.297 }
+ \draw_path_close:
+}
+
+% mouth
+\cs_new:Npn \__jsonparse_jason_path_xii: {
+ \draw_path_moveto:n { 27.488 , 319.328 }
+ \draw_path_curveto:nnn { 26.766 , 323.887 } { 26.395 , 330.605 } { 29.504 , 334.336 }
+ \draw_path_curveto:nnn { 34.504 , 340.336 } { 44.004 , 349.336 } { 65.504 , 336.336 }
+ \draw_path_curveto:nnn { 83.551 , 325.422 } { 106.699 , 303.945 } { 113.672 , 297.328 }
+ \draw_path_curveto:nnn { 109.645 , 300.484 } { 98.965 , 306.266 } { 74.754 , 306.086 }
+ \draw_path_curveto:nnn { 48.09 , 305.883 } { 41.801 , 318.445 } { 27.488 , 319.328 }
+ \draw_path_close:
+}
+
+% mouth edge
+\cs_new:Npn \__jsonparse_jason_path_xiii: {
+ \draw_path_moveto:n { 17.652 , 318.48 }
+ \draw_path_curveto:nnn { 19.613 , 318.891 } { 21.801 , 319.188 } { 24.254 , 319.336 }
+ \draw_path_curveto:nnn { 25.383 , 319.402 } { 26.453 , 319.395 } { 27.488 , 319.328 }
+}
+
+% teeth
+\cs_new:Npn \__jsonparse_jason_path_xiv: {
+ \draw_path_moveto:n { 96.598 , 304.234 }
+ \draw_path_curveto:nnn { 80.379 , 312.863 } { 52.5 , 327.137 } { 44.855 , 327.496 }
+ \draw_path_curveto:nnn { 37.57 , 327.84 } { 31.289 , 322.75 } { 27.891 , 319.293 }
+ \draw_path_curveto:nnn { 27.758 , 319.305 } { 27.625 , 319.32 } { 27.488 , 319.328 }
+}
+
+\draw_transform_yscale:n { -1 }
+\draw_linewidth:n { 3pt }
+\draw_miterlimit:n { 10 }
+\color_stroke:n { color_v }
+
+\draw_scope_begin:
+
+ \color_fill:n { color_i }
+ \__jsonparse_jason_path_i:
+ \draw_path_use_clear:n { fill , clip }
+
+ \color_fill:n { color_ii }
+ \__jsonparse_jason_path_ii:
+ \draw_path_use_clear:n { fill }
+
+ \color_fill:n { color_iii }
+ \__jsonparse_jason_path_iii:
+ \draw_path_use_clear:n { fill , draw }
+
+ \__jsonparse_jason_path_vi:
+ \draw_path_use_clear:n { draw }
+
+\draw_scope_end:
+
+\color_fill:n { color_ii }
+\__jsonparse_jason_path_vii:
+\draw_path_use_clear:n { fill , draw }
+
+\__jsonparse_jason_path_viii:
+\draw_path_use_clear:n { fill , draw }
+
+\color_fill:n { color_iii }
+\__jsonparse_jason_path_iv:
+\draw_path_use_clear:n { fill , draw }
+
+\color_fill:n { color_iv }
+\__jsonparse_jason_path_v:
+\draw_path_use_clear:n { fill , draw }
+
+\color_fill:n { color_vii }
+\__jsonparse_jason_path_ix:
+\draw_path_use_clear:n { fill , draw }
+
+\color_fill:n { color_vi }
+\__jsonparse_jason_path_x:
+\draw_path_use_clear:n { fill }
+
+\__jsonparse_jason_path_xi:
+\draw_path_use_clear:n { fill }
+
+\color_fill:n { color_vii }
+\__jsonparse_jason_path_xii:
+\draw_path_use_clear:n { fill , draw }
+
+\__jsonparse_jason_path_xiii:
+\draw_path_use_clear:n { draw }
+
+\__jsonparse_jason_path_xiv:
+\draw_path_use_clear:n { draw }
+
+\draw_end:
+
+\ExplSyntaxOff
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/jsonparse/jsonparse-doc.pdf b/macros/latex/contrib/jsonparse/jsonparse-doc.pdf
index ed7a1dded6..e52f8631a0 100644
--- a/macros/latex/contrib/jsonparse/jsonparse-doc.pdf
+++ b/macros/latex/contrib/jsonparse/jsonparse-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/jsonparse/jsonparse-doc.tex b/macros/latex/contrib/jsonparse/jsonparse-doc.tex
index 1cfcde1e18..7e775f7499 100644
--- a/macros/latex/contrib/jsonparse/jsonparse-doc.tex
+++ b/macros/latex/contrib/jsonparse/jsonparse-doc.tex
@@ -11,8 +11,8 @@
% This work has the LPPL maintenance status `maintained'.
%
\documentclass[a4paper]{article}
-\def\jsonparsefileversion{0.8.3}
-\def\jsonparsefiledate{28 April 2024}
+\def\jsonparsefileversion{0.8.7}
+\def\jsonparsefiledate{8 August 2024}
\usepackage[T1]{fontenc}
\usepackage{Alegreya}
@@ -193,10 +193,13 @@
\changes{v0.5.7}{2024/04/14}{Bug fixes, key-value option setting added.}
\changes{v0.6.0}{2024/04/15}{Bug fixes, renaming of several commands.}
\changes{v0.7.0}{2024/04/18}{Renaming and rearranging of keys, escaping of special JSON escape sequences added.}
-\changes{v0.7.1}{2024/04/20}{Access to first-level keys of object added.}
+\changes{v0.7.1}{2024/04/20}{Access to top-level keys of object added.}
\changes{v0.8.0}{2024/04/24}{Internal rewrite, escaping procedures changed.}
\changes{v0.8.2}{2024/04/26}{Bug fixes, externalizing parsed data.}
\changes{v0.8.3}{2024/04/28}{Escaping of characters with special meaning in TeX.}
+\changes{v0.8.5}{2024/05/05}{Enhanced key management.}
+\changes{v0.8.6}{2024/05/09}{Bug fix in nesting function.}
+\changes{v0.8.7}{2024/08/08}{Corrections in documentation, error messages.}
\begin{document}
\vspace*{-1cm}
@@ -225,20 +228,22 @@ The package does not load any dependencies.
\end{macrodef}
The package can be loaded with the option \macro{debug}. It will then output to the log file every instance of a string, a boolean (true or false) value, a null value, a number as well as the start and end of every object and the start and end of every array that is found while parsing the JSON string or JSON file.
+This key can be set either as package option or using \macro{\JSONParseSet}. It can also be set locally as option to the commands \macro{\JSONParse} and \macro{\JSONParseFromFile}.
+
\section{Escaping and special treatment of the input}\label{sec:escaping}
In general, the package reads the JSON source as string, which means that all characters have category code 12 (other), except for spaces which have category code 10 (space). The \macro{\endlinechar} value is set to $-1$. Furthermore, if PDFLaTeX is used, the upper-half of the 8-bit range is set to ``active''. JSON, however, defines a small set of escape sequences and in order to be able to process these, the category code of the backslash is set to 0 (escpape).
JSON strings cannot contain the two characters \macro{"} and \macro{\}. These two characters need to be escaped with a preceding backslash (\macro{\}). This package therefore redefines locally the TeX control symbols \macro{\"}, \macro{\/}, \macro{\\}, \macro{\b}, \macro{\f}, \macro{\n}, \macro{\r}, \macro{\t} and \macro{\u}. These control symbols are prevented from expanding during parsing. For example, \macro{\"} is first defined as \macro{\exp_not:N \"} and only hen typeset, \macro{\"} is expanded to \macro{"}, which ensures that strings are parsed properly.
-Similarly, the control symbol \macro{\/} expands eventually to \macro{/} and \macro{\\} to \macro{\c_backslash_str} (i.\,e. a backslash with category code 12). The escape sequence \macro{\u} followed by a hex value consisting of four digits eventually eventually expands to \macro{\char"} followed by the relevant four hex digits. The JSON escape sequences \macro{\b}, \macro{\f}, \macro{\n}, \macro{\r}, \macro{\t} or \macro{\u} (followed by a hex value) eventually expand to token variables of which the contents can be set using the relevant \macro{replacement} key. See more on setting keys below in section \ref{sec:settings}.
+Similarly, the control symbol \macro{\/} expands eventually to \macro{/} and \macro{\\} to \macro{\c_backslash_str} (i.\,e. a backslash with category code 12). The escape sequence \macro{\u} followed by a hex value consisting of four digits eventually eventually expands to \macro{\char"} followed by the relevant four hex digits. The JSON escape sequences \macro{\b}, \macro{\f}, \macro{\n}, \macro{\r}, \macro{\t} or \macro{\u} (followed by a hex value) eventually expand to token variables of which the contents can be set using the relevant \macro{replacement} key. See more on setting options below in section \ref{sec:options}.
It is possible to insert TeX macros to the JSON source that will eventually be parsed when typesetting. Backslashes of TeX macros need to be escaped by another backslash. The TeX macros \macro{\"} and \macro{\\} must be escaped twice in the JSON source, so that they become \macro{\\\"} and \macro{\\\\} respectively.
\begin{macrodef}
-|\x|[<token variable name>][<key>]
+|\x|{<token variable name>}{<key>}
\end{macrodef}
-Using the control sequence \macro{\x}, it is possible to nest JSON strings into each other. The control sequence takes two arguments delimited by square brackets. The first argument represents the name of the token variable that holds the parsed JSON data where the inserted JSON string should be taken from. The second argument sets the key that should be selected. The following example shows a simple use case:
+Using the control sequence \macro{\x}, it is possible to nest JSON strings into each other. The control sequence takes two arguments delimited by curly braces. The first argument represents the name of the token variable that holds the parsed JSON data where the inserted JSON string should be taken from. The second argument sets the key that should be selected. The following example shows a simple use case:
\begin{codeexamplecolumns}
\JSONParse{\myJSONdataA}{
@@ -246,49 +251,52 @@ Using the control sequence \macro{\x}, it is possible to nest JSON strings into
}
\JSONParse{\myJSONdataB}{
- { "d" : \x[myJSONdataA][a] }
+ { "d" : \x{myJSONdataA}{a} }
}
\JSONParseValue{\myJSONdataB}{d.b}
\end{codeexamplecolumns}
+Note that the control sequence \macro{\x} is replaced by the value exactly. Therefore, if the value happens to be a string, the control sequence \macro{\x} should be placed between quotation marks (\macro{"}) in order for the resulting string to be valid JSON.
+
\begin{macrodef}
-|escape|={<all>}
-|escape|={<none>}
-|escape|={<number sign>}
-|escape|={<dollar sign>}
-|escape|={<percent sign>}
-|escape|={<ampersand>}
-|escape|={<circumflex accent>}
-|escape|={<low line>}
-|escape|={<tilde>}
+|escape|={all}
+|escape|={none}
+|escape|={number sign}
+|escape|={dollar sign}
+|escape|={percent sign}
+|escape|={ampersand}
+|escape|={circumflex accent}
+|escape|={low line}
+|escape|={tilde}
\end{macrodef}
-The key \macro{escape} can be used to convert characters that don't require escaping in JSON but in TeX into their relevant TeX escape sequences. Apart from the backslash and curly braces that need to be escaped anyways, these are the number sign, the dollar sign, the percent sign, the ampersand, the circumflex accent, the low line and the tilde. The characters can be selected individually separated by a comma (for example \macro{escape={dollar sign, circumflex accent, low line}}. With \macro{escape={all}}, all escaping sequences are selected, with \macro{escape={none}}, none is selected.
+The key \macro{escape} can be used to convert characters that don't require escaping in JSON but in TeX into the relevant TeX escape sequences. Apart from the backslash and curly braces that need to be escaped anyways, these are the number sign, the dollar sign, the percent sign, the ampersand, the circumflex accent, the low line and the tilde. The characters can be selected individually separated by a comma (for example \macro{escape={dollar sign, circumflex accent, low line}}. With \macro{escape={all}}, all escaping sequences are selected, with \macro{escape={none}}, none is selected.
The naming of the relevant characters follows their Unicode names. However, \macro{hash} exists as alias for \macro{number sign}, \macro{dollar} as alias for \macro{dollar sign}, \macro{percent} for \macro{percent sign}, \macro{circumflex} for \macro{circumflex accent} and \macro{underscore} for \macro{low line}.
+This key can be set using \macro{\JSONParseSet}. It can also be set locally as option to the commands \macro{\JSONParseValue}, \macro{\JSONParseArrayValues} and \macro{\JSONParseArrayValuesMap}.
+
\begin{macrodef}
-replacement/|backspace|={<string>}
-replacement/|formfeed|={<string>}
-replacement/|linefeed|={<string>}
-replacement/|carriage return|={<string>}
-replacement/|horizontal tab|={<string>}
+|rescan|
+|rescan|={<boolean>}
\end{macrodef}
-These keys can be used to set the replacement text for the JSON escape sequences \macro{\b} (backspace), \macro{\f} (formfeed), \macro{\n} (linefeed), \macro{\r} (carriage return) and \macro{\t} (horizontal tab). The default replacement string is a space. Only strings can be used as replacement.
+The key \macro{rescan} can be used to activate and deactivate rescanning of the output. This key is active per default. Rescanning converts all tokens to their default category codes and TeX control sequences are expanded before typesetting. Further, during the rescanning process, JSON escape sequences are replaced and characters that don't require escaping in JSON but in TeX are replaced by the relevant TeX escape sequences.
+
+This key can be set using \macro{\JSONParseSet}. It can also be set locally as option to the commands \macro{\JSONParseValue}, \macro{\JSONParseArrayValues} and \macro{\JSONParseArrayValuesMap}.
\section{Main user commands}
\begin{macrodef}
-|\JSONParse|[<file name>]{<token variable>}{<JSON string>}
+|\JSONParse|[<options>]{<token variable>}{<JSON string>}
\end{macrodef}
The command \macro{\JSONParse} is used to parse a JSON string and store the parsed result in a token variable (a property list). The second argument takes the name of the token variable that is created by the command. The third argument takes the JSON string to be parsed.
For example, using \macro{\JSONParse{\myJSONdata}{ { "key" : "value" } }}, the relevant JSON string will be parsed and the result stored in the token variable \macro{\myJSONdata} as property list. In this case, the property list only consists of one entry with the key \macro{key} and the value \macro{value}. The command \macro{\JSONParseValue{\myJSONdata}{key}}, for example, can then be used to extract the relevant value from this property list (see the description below).
-The first optinal argument can be used to externalize the parsed JSON data to a file. See more on externalization in section \ref{sec:externalizing} below.
+The first optional argument can be used to pass options to the command that are then applied locally.
\begin{macrodef}
-|\JSONParseFromFile|[<file name>]{<token variable>}{<JSON file>}
+|\JSONParseFromFile|[<options>]{<token variable>}{<JSON file>}
\end{macrodef}
The command \macro{\JSONParseFromFile} is used to parse a JSON file and store the parsed result in a token variable (a property list). It works the same way as \macro{\JSONParse}, but instead of a JSON string, it takes as third argument the path to the JSON file relative to the working directory.
@@ -298,8 +306,7 @@ The command \macro{\JSONParseFromFile} is used to parse a JSON file and store th
The command \macro{\JSONParseKeys} is used to store all top-level keys of a parsed JSON object as array into a token variable. The command takes as first argument the token variable that holds the parsed JSON data. The second argument takes the token variable that is assigned a JSON array containing the top-level keys of the object represented by the token variable in the first argument. The token variable to store the keys as array is created if it does not exist.
\begin{macrodef}
-|\JSONParseValue|{<token variable>}{<key>}
-|\JSONParseValue*|{<token variable>}{<key>}
+|\JSONParseValue|[<options>]{<token variable>}{<key>}
|\JSONParseExpandableValue|{<token variable>}{<key>}
\end{macrodef}
The command \macro{\JSONParseValue} is used to select values from the token variable (property list) that has been created using the commands \macro{\JSONParse} or \macro{\JSONParseFromFile}. The first argument takes the token variable that holds the parsed JSON data. The second argument takes the key to select the relevant entry from the parsed JSON data using JavaScript syntax.
@@ -308,15 +315,14 @@ If the JSON string \macro{{ "key" : "value" }} is parsed into the token variable
Nested objects and arrays are assigned keys that adhere to JavaScript syntax. For example, if the JSON string \macro{{ "outer_key" : { "inner_key" : "value" } }} is parsed into the token variable \macro{\myJSONdata}, to select the value associated with the key \macro{inner_key}, the command \macro{\JSONParseValue{\myJSONdata}{outer_key.inner_key}} can be used. To give an example for an array, the command \macro{\JSONParseValue{\myJSONdata}{key[0]}} selects the first value of the array associated with the key \macro{key} in the JSON string \macro{{ "key" : [ "one" , "two" ] }}.
-The non-starred variant of this command, \macro{\JSONParseValue}, rescans the token list before it is typeset (which means that all category codes that may have been changed before are set to the default values). The starred variant, \macro{\JSONParseValue*}, does not rescan the ouput. The non-starred variants of this and similar commands should therefore not be placed in a \macro{\JSONParse} command.
+The first optional argument can be used to pass options to the command, such as \macro{escape} or \macro{rescan}, that are then applied locally. When the option \macro{rescan} is used, the token list is rescanned before it is typeset (which means that all category codes that may have been changed before are set to the default values). This is the default behaviour. If rescanning is not desired, pass the option \macro{rescan=false} to the command.
When a key is associated with an object or array, the whole object or array is output as JSON string. The special key \macro{.} (or the string defined using the key \macro{child sep}) returns the whole JSON object as string.
Whole objects or arrays can also be output as JSON string for further use in other macros using the expandable command \macro{\JSONParseExpandableValue}.
\begin{macrodef}
-|\JSONParseArrayValues|{<token variable>}{<key>}[<subkey>]{<string>}
-|\JSONParseArrayValues*|{<token variable>}{<key>}[<subkey>]{<string>}
+|\JSONParseArrayValues|[<options>]{<token variable>}{<key>}[<subkey>]{<string>}
\end{macrodef}
The command \macro{\JSONParseArrayValues} is used to select all values from an array from a parsed JSON string or JSON file. The first argument takes the token variable that holds the parsed JSON data. The second argument takes the key to select the relevant entry from the parsed JSON data using JavaScript syntax. The third argument is optional and can be used to pass a subkey, i.\,e. a key that is used to select a value for every item. The last argument takes a string that is inserted between all values when they are typeset.
@@ -339,11 +345,11 @@ For example, let us assume the following JSON data structure is parsed into the
Then, when using \macro{\JSONParseArrayValues{\myJSONdata}{array}[key_a]{, }}, `one, three' is typeset to the document.
-The starred variant, \macro{\JSONParseArrayValues*}, does not rescan the token lists before they are typeset.
+The first optional argument can be used to pass options to the command, such as \macro{escape} or \macro{rescan}, that are then applied locally.
\begin{macrodef}
-|\JSONParseArrayValuesMap|{<token variable>}{<key>}[<subkey>]{<command name>}
-|\JSONParseArrayValuesMap*|{<token variable>}{<key>}[<subkey>]{<command name>}
+|\JSONParseArrayValuesMap|[<options>]{<token variable>}{<key>}[<subkey>]
+ {<command name>}
\end{macrodef}
The command \macro{\JSONParseArrayValuesMap} takes the same first three arguments as the command \macro{\JSONParseArrayValues} and works in a similar way. However, instead of a string that is added between the array items, it takes a command name as fourth argument. This command can be defined beforehand and will be called for every array item. Inside its definition, the commands \macro{\JSONParseArrayIndex}, \macro{\JSONParseArrayKey} and \macro{\JSONParseArrayValue} can be used which are updated for each item and output the index, the key and the value of the current item respectively.
@@ -362,7 +368,7 @@ For example, let us assume the same JSON data structure as defined above parsed
\end{itemize}
\end{codeexamplecolumns}
-The starred variant, \macro{\JSONParseArrayValuesMap*}, does not rescan the token lists before they are typeset.
+The first optional argument can be used to pass options to the command, such as \macro{escape} or \macro{rescan}, that are then applied locally.
\begin{macrodef}
|\JSONParseArrayCount|{<token variable>}{<key>}
@@ -371,45 +377,89 @@ The command \macro{\JSONParseArrayCount} takes as first argument a token variabl
\subsection{Externalising parsed JSON data}\label{sec:externalizing}
-Parsing large JSON files can take quite a while. In order to speed up follow-up compilation runs, this package provides a way to store parsed JSON data for future use. The first opional argument of the commands \macro{\JSONParse} and \macro{\JSONParseFromFile} can be used to provide the name of a file (without file extension) that will be created in the working directory and which stores the relevant information. The file name will have the extension \macro{.jsonparse}. If a file with the same name and file extension already exists, an error will be issued. Once the file has been created, the package will try to load the data from this file instead of parsing the JSON data again.
+Parsing large JSON files can take quite a while. In order to speed up follow-up compilation runs, this package provides a way to store parsed JSON data for future use. Once a file for externalization has been created, the package will try to load the data from this file instead of parsing the JSON data again.
+
+\begin{macrodef}
+|externalize|
+|externalize|={<boolean>}
+\end{macrodef}
+With the key \macro{externalize} set (or set to true), a file will be created in the working directory that stores the externalization of the parsed JSON data. The file name gets the extension \macro{.jsonparse}. The file name is created automatically and consists of the name of the current file followed by an underscore and the name of the token variable where the JSON data is stored into. If a file with the same name and file extension already exists, an error will be issued.
+
+This key can be set using \macro{\JSONParseSet}. It can also be set locally as option to the commands \macro{\JSONParse} and \macro{\JSONParseFromFile}.
+
+\begin{macrodef}
+|externalize prefix|={<string>}
+\end{macrodef}
+With the key \macro{externalize prefix}, a prefix can be defined that is added to the file name. Per default this is an empty string.
+
+This key can be set using \macro{\JSONParseSet}. It can also be set locally as option to the commands \macro{\JSONParse} and \macro{\JSONParseFromFile}.
+
+\begin{macrodef}
+|externalize file name|={<token list>}
+\end{macrodef}
+The key \macro{externalize file name} sets the schema for the file name. The default schema is as follows:
+
+\begin{codeexample}
+\l_jsonparse_externalize_prefix_str \c_sys_jobname_str
+ \c_underscore_str \l_jsonparse_current_prop_str
+\end{codeexample}
+
+The token variable \macro{\l_jsonparse_externalize_prefix_str} contains the prefix that is set using the key \macro{externalize prefix}. \macro{\c_sys_jobname_str} holds the name of the current file (the current job name), \macro{\c_underscore_str} is an underscore and the token variable \macro{\l_jsonparse_current_prop_str} contains the name of the property list where the relevant JSON data is stored into.
+
+This key can be set using \macro{\JSONParseSet}. It can also be set locally as option to the commands \macro{\JSONParse} and \macro{\JSONParseFromFile}.
\begin{macrodef}
|\JSONParsePut|{<token variable>}{<key>}[<JSON string>]
\end{macrodef}
The command \macro{\JSONParsePut} is used by the externalization procedure to re-read already parsed JSON data to the main file. It just adds a key-value pair to the property list (where the value part is read as string). Hence, it can also be used to append more entries to an already existing property list containing parsed JSON data.
-\subsection{Changing separators, output and other settings}\label{sec:settings}
+\subsection{Changing separators, output and other options}\label{sec:options}
The package provides a set of keys can be set to change the separators used to select the relevant value in the JSON structure, the output that is generated from the JSON data as well as other things.
\begin{macrodef}
-|\JSONParseSet|{<key-value list>}
+|\JSONParseSet|{<options>}
\end{macrodef}
-The commands \macro{\JSONParseSet} can be used to specify settings via key-value pairs (separated by commas). Keys that are presented here as a subkey (i.\,e. preceded by another key and a slash) can also be set using the syntax \macro{key={subkey}} and multiple subkeys belonging to one key can be combined using a comma as separator. The following keys are available:
+The commands \macro{\JSONParseSet} can be used to specify options via key-value pairs (separated by commas). Keys that are presented here as a subkey (i.\,e. preceded by another key and a slash) can also be set using the syntax \macro{key={subkey}} and multiple subkeys belonging to one key can be combined using a comma as separator. Several user commands allow to pass keys directly which are then applied locally. The following keys are available:
\begin{macrodef}
separator/|child|={<string>}
+separator/|array left|={<string>}
+separator/|array right|={<string>}
\end{macrodef}
-With the key \macro{child sep}, the separator for child objects that is used in the syntax to select a specific value in the JSON data structure can be changed. Per default, the child separator is a dot (\macro{.}). Changing the separator can be useful if keys in the JSON structure already use these characters.
+With the key \macro{separator/child}, the separator for child objects that is used in the syntax to select a specific value in the JSON data structure can be changed. Per default, the child separator is a dot (\macro{.}). Changing the separator can be useful if keys in the JSON structure already use these characters.
+
+With the keys \macro{separator/array left} and \macro{separator/array right}, the separators for arrays that are used in the syntax to select a specific value in the JSON data structure can be changed. Per default, the separators are square brackets (\macro{[} and \macro{]}). Changing the separators can be useful if keys in the JSON structure already use these characters. Changing these separators to curly braces (\macro{{}}) is not supported due to their grouping function in TeX.
+
+These keys can be set using \macro{\JSONParseSet}. They can also be set locally as option to the commands \macro{\JSONParse} and \macro{\JSONParseFromFile}.
\begin{macrodef}
-separator/|array left|={<string>}
-separator/|array right|={<string>}
+|zero-based|
+|zero-based|={<boolean>}
\end{macrodef}
-With the keys \macro{array sep left} and \macro{array sep right}, the separators for arrays that are used in the syntax to select a specific value in the JSON data structure can be changed. Per default, the separators are square brackets (\macro{[} and \macro{]}). Changing the separators can be useful if keys in the JSON structure already use these characters.
+If set (or explicitly set to \macro{true}), the key \macro{zero-based} sets the numbering of the index of array items to zero-based. If set to false, the indexing starts with one instead. Per default, the package uses zero-based indexing to resemble JavaScript notation.
+
+This key can be set using \macro{\JSONParseSet}. It can also be set locally as option to the commands \macro{\JSONParse} and \macro{\JSONParseFromFile}.
\begin{macrodef}
-replacement/|true|={<string>}
-replacement/|false|={<string>}
-replacement/|null|={<string>}
+replace/|true|={<string>}
+replace/|false|={<string>}
+replace/|null|={<string>}
\end{macrodef}
-With the keys \macro{true}, \macro{false} and \macro{null}, the string that is typeset for true, false and null values can be changed. The default strings that are typeset are \macro{true}, \macro{false} and \macro{null} respectively. Only strings can be used as replacement.
+With the keys \macro{replace/true}, \macro{replace/false} and \macro{replace/null}, the string that is typeset for true, false and null values can be changed. The default strings that are typeset are \macro{true}, \macro{false} and \macro{null} respectively. Only strings can be used as replacement. These replacements take place already during parsing.
+
+These keys can be set using \macro{\JSONParseSet}. They can also be set locally as option to the commands \macro{\JSONParse} and \macro{\JSONParseFromFile}.
\begin{macrodef}
-|array index zero-based|
-|array index zero-based|={<boolean>}
+replace/|backspace|={<string>}
+replace/|formfeed|={<string>}
+replace/|linefeed|={<string>}
+replace/|carriage return|={<string>}
+replace/|horizontal tab|={<string>}
\end{macrodef}
-If set (or explicitly set to \macro{true}), the key \macro{array index zero-based} sets the numbering of the index of array items to zero-based. If set to false, the indexing starts with one instead. Per default, the package uses zero-based indexing to resemble JavaScript notation.
+These keys can be used to set the replacement text for the JSON escape sequences \macro{\b} (backspace), \macro{\f} (formfeed), \macro{\n} (linefeed), \macro{\r} (carriage return) and \macro{\t} (horizontal tab). The default replacement string is a space. Only strings can be used as replacement. These replacements take place only during typesetting.
+
+These keys can be set using \macro{\JSONParseSet}. They can also be set locally as option to the commands \macro{\JSONParseValue}, \macro{\JSONParseArrayValues} and \macro{\JSONParseArrayValuesMap}.
\subsection{L3 commands}
diff --git a/macros/latex/contrib/jsonparse/jsonparse.sty b/macros/latex/contrib/jsonparse/jsonparse.sty
index 680e89bfca..514064d92a 100644
--- a/macros/latex/contrib/jsonparse/jsonparse.sty
+++ b/macros/latex/contrib/jsonparse/jsonparse.sty
@@ -10,15 +10,16 @@
%
% This work has the LPPL maintenance status `maintained'.
%
-\ProvidesExplPackage {jsonparse} {2024-04-28} {0.8.3}
+\ProvidesExplPackage {jsonparse} {2024-08-08} {0.8.7}
{JSON Parse}
\bool_new:N \l__jsonparse_debug_mode_bool
-\keys_define:nn { jsonparse } {
+\keys_define:nn { jsonparse / global } {
debug .bool_set:N = \l__jsonparse_debug_mode_bool ,
debug .default:n = { true } ,
+ debug .initial:n = { false }
}
-\ProcessKeyOptions [ jsonparse ]
+\ProcessKeyOptions [ jsonparse / global ]
\msg_new:nnn { jsonparse } { debug-info } {
#1
@@ -43,7 +44,7 @@
\msg_new:nnn { jsonparse } { file-exists } {
\msg_error_text:n { jsonparse } \iow_newline:
- File ~ #1 ~ already ~ existing.
+ File ~ #1 ~ already ~ existing.
}
\msg_new:nnn { jsonparse } { escape-in-key } {
@@ -56,6 +57,11 @@
Escape ~ character ~ #1 ~ not ~ found.
}
+\msg_new:nnn { jsonparse } { unknown-key } {
+ \msg_warning_text:n { jsonparse } \iow_newline:
+ Ignoring ~ unknown ~ key: ~ #1.
+}
+
\msg_new:nnn { jsonparse } { saving-external } {
\msg_info_text:n { jsonparse } \iow_newline:
Saving ~ external ~ file: ~ #1.
@@ -67,14 +73,21 @@
}
% ===
-
+
+\str_new:N \l_jsonparse_externalize_prefix_str
+\str_new:N \l_jsonparse_current_prop_str
+
+\tl_new:N \l__jsonparse_externalize_file_name_tl
+
\str_new:N \l__jsonparse_child_sep_str
\str_new:N \l__jsonparse_array_sep_left_str
\str_new:N \l__jsonparse_array_sep_right_str
\str_new:N \l__jsonparse_true_str
\str_new:N \l__jsonparse_false_str
\str_new:N \l__jsonparse_null_str
-\bool_new:N \l__jsonparse_array_index_zero_based_bool
+\bool_new:N \l__jsonparse_zero_based_bool
+\bool_new:N \l__jsonparse_rescan_bool
+\bool_new:N \l__jsonparse_externalize_bool
\str_new:N \l__jsonparse_backspace_str
\str_new:N \l__jsonparse_formfeed_str
@@ -82,6 +95,8 @@
\str_new:N \l__jsonparse_carriage_return_str
\str_new:N \l__jsonparse_horizontal_tab_str
+\clist_new:N \l__jsonparse_unused_keys_clist
+
\clist_new:N \l__jsonparse_escape_tex_chars_clist
\clist_set:Nn \l__jsonparse_escape_tex_chars_clist {
number_sign ,
@@ -98,35 +113,48 @@
\bool_new:c { l__jsonparse_escape_ #1 _bool }
}
-\keys_define:nn { jsonparse } {
- array ~ index ~ zero-based .bool_set:N = \l__jsonparse_array_index_zero_based_bool ,
- array ~ index ~ zero-based .default:n = { true } ,
- array ~ index ~ zero-based .initial:n = { true } ,
- separator .code:n = { \keys_set:nn { jsonparse / separator } {#1} },
- separator / child .str_set:N = \l__jsonparse_child_sep_str ,
- separator / child .initial:n = { . } ,
- separator / array ~ left .str_set:N = \l__jsonparse_array_sep_left_str ,
- separator / array ~ left .initial:n = { [ } ,
- separator / array ~ right .str_set:N = \l__jsonparse_array_sep_right_str ,
- separator / array ~ right .initial:n = { ] } ,
- replacement .code:n = { \keys_set:nn { jsonparse / replacement } {#1} },
- replacement / true .str_set:N = \l__jsonparse_true_str ,
- replacement / true .initial:n = { true } ,
- replacement / false .str_set:N = \l__jsonparse_false_str ,
- replacement / false .initial:n = { false } ,
- replacement / null .str_set:N = \l__jsonparse_null_str ,
- replacement / null .initial:n = { null } ,
- replacement / backspace .str_set:N = \l__jsonparse_backspace_str ,
- replacement / backspace .initial:n = { ~ } ,
- replacement / formfeed .str_set:N = \l__jsonparse_formfeed_str ,
- replacement / formfeed .initial:n = { ~ } ,
- replacement / linefeed .str_set:N = \l__jsonparse_linefeed_str ,
- replacement / linefeed .initial:n = { ~ } ,
- replacement / carriage ~ return .str_set:N = \l__jsonparse_carriage_return_str ,
- replacement / carriage ~ return .initial:n = { ~ } ,
- replacement / horizontal ~ tab .str_set:N = \l__jsonparse_horizontal_tab_str ,
- replacement / horizontal ~ tab .initial:n = { ~ } ,
- escape .code:n = {
+\keys_define:nn { jsonparse / parse } {
+ externalize .bool_set:N = \l__jsonparse_externalize_bool ,
+ externalize .default:n = { true } ,
+ externalize .initial:n = { false } ,
+ externalize ~ prefix .str_set:N = \l_jsonparse_externalize_prefix_str ,
+ externalize ~ prefix .initial:n = { } ,
+ externalize ~ file ~ name .tl_set:N = \l__jsonparse_externalize_file_name_tl ,
+ externalize ~ file ~ name .initial:n = {
+ \l_jsonparse_externalize_prefix_str \c_sys_jobname_str \c_underscore_str \l_jsonparse_current_prop_str
+ } ,
+ separator .code:n = { \keys_set:nn { jsonparse / parse / separator } {#1} } ,
+ separator / child .str_set:N = \l__jsonparse_child_sep_str ,
+ separator / child .initial:n = { . } ,
+ separator / array ~ left .str_set:N = \l__jsonparse_array_sep_left_str ,
+ separator / array ~ left .initial:n = { [ } ,
+ separator / array ~ right .str_set:N = \l__jsonparse_array_sep_right_str ,
+ separator / array ~ right .initial:n = { ] } ,
+ zero-based .bool_set:N = \l__jsonparse_zero_based_bool ,
+ zero-based .default:n = { true } ,
+ zero-based .initial:n = { true } ,
+ replace .code:n = { \keys_set:nn { jsonparse / parse / replace } {#1} } ,
+ replace / true .str_set:N = \l__jsonparse_true_str ,
+ replace / true .initial:n = { true } ,
+ replace / false .str_set:N = \l__jsonparse_false_str ,
+ replace / false .initial:n = { false } ,
+ replace / null .str_set:N = \l__jsonparse_null_str ,
+ replace / null .initial:n = { null }
+}
+
+\keys_define:nn { jsonparse / typeset } {
+ replace .code:n = { \keys_set:nn { jsonparse / typeset / replace } {#1} } ,
+ replace / backspace .str_set:N = \l__jsonparse_backspace_str ,
+ replace / backspace .initial:n = { ~ } ,
+ replace / formfeed .str_set:N = \l__jsonparse_formfeed_str ,
+ replace / formfeed .initial:n = { ~ } ,
+ replace / linefeed .str_set:N = \l__jsonparse_linefeed_str ,
+ replace / linefeed .initial:n = { ~ } ,
+ replace / carriage ~ return .str_set:N = \l__jsonparse_carriage_return_str ,
+ replace / carriage ~ return .initial:n = { ~ } ,
+ replace / horizontal ~ tab .str_set:N = \l__jsonparse_horizontal_tab_str ,
+ replace / horizontal ~ tab .initial:n = { ~ } ,
+ escape .code:n = {
\str_case:nnF {#1} {
{ all } {
\clist_map_inline:Nn \l__jsonparse_escape_tex_chars_clist {
@@ -168,11 +196,27 @@
}
}
}
+ } ,
+ escape .groups:n = { output } ,
+ rescan .bool_set:N = \l__jsonparse_rescan_bool ,
+ rescan .default:n = { true } ,
+ rescan .initial:n = { true } ,
+ rescan .groups:n = { output }
+}
+
+\cs_new:Npn \__jsonparse_warning_unused_keys: {
+ \clist_map_inline:Nn \l__jsonparse_unused_keys_clist {
+ \msg_warning:nne { jsonparse } { unknown-key } {
+ ##1
+ }
}
}
\NewDocumentCommand { \JSONParseSet } { m } {
- \keys_set:nn { jsonparse } {#1}
+ \keys_set_known:nnN { jsonparse / global } {#1} \l__jsonparse_unused_keys_clist
+ \keys_set_known:noN { jsonparse / parse } { \l__jsonparse_unused_keys_clist } \l__jsonparse_unused_keys_clist
+ \keys_set_known:noN { jsonparse / typeset } { \l__jsonparse_unused_keys_clist } \l__jsonparse_unused_keys_clist
+ \__jsonparse_warning_unused_keys:
}
% ===
@@ -181,6 +225,7 @@
\cs_new:Npn \str_casefold:n { \str_foldcase:n }
}
+\cs_generate_variant:Nn \file_input:n { e }
\cs_generate_variant:Nn \tl_gset_rescan:Nnn { Nne }
\cs_generate_variant:Nn \tl_range:nnn { nne , nen }
\cs_generate_variant:Nn \tl_range:Nnn { Nne , Nen }
@@ -193,14 +238,20 @@
\cs_generate_variant:Nn \str_case_e:nn { en }
\cs_generate_variant:Nn \str_casefold:n { o }
\cs_generate_variant:Nn \str_head_ignore_spaces:n { o }
+\cs_generate_variant:Nn \str_set:Nn { Ne }
\cs_generate_variant:Nn \prop_gput:Nnn { Nee }
\cs_generate_variant:Nn \prop_item:Nn { Ne , ce }
\cs_generate_variant:Nn \prop_put:Nnn { Nen , Nee }
+\cs_generate_variant:Nn \keys_set_known:nnN { noN }
\cs_generate_variant:Nn \iow_now:Nn { Ne }
+\cs_generate_variant:Nn \iow_open:Nn { Ne }
\cs_generate_variant:Nn \msg_error:nnn { nno }
\cs_generate_variant:Nn \msg_error:nnnn { nnoo }
+\cs_generate_variant:Nn \msg_info:nnn { nne }
\cs_generate_variant:Nn \msg_log:nnn { nne }
+\cs_generate_variant:Nn \msg_warning:nnn { nne }
+\prg_generate_conditional_variant:Nnn \file_if_exist:n { e } { T , TF }
\prg_generate_conditional_variant:Nnn \tl_if_eq:nn { en } { T }
\prg_generate_conditional_variant:Nnn \tl_if_head_eq_charcode:nN { oN } { T , TF }
\prg_generate_conditional_variant:Nnn \tl_if_in:nn { nV } { F }
@@ -224,7 +275,7 @@
\int_new:N \l__jsonparse_array_count_last_int
\bool_new:N \l__jsonparse_prop_map_first_bool
-\bool_new:N \l__jsonparse_load_external_bool
+\bool_new:N \l__jsonparse_externalize_load_bool
\ior_new:N \l__jsonparse_json_ior
\iow_new:N \g__jsonparse_externalize_iow
@@ -366,10 +417,10 @@
\bool_if:NT \l__jsonparse_debug_mode_bool {
\msg_log:nnn { jsonparse } { debug-info } {
(arr ~ begin)
- }
+ }
}
\int_zero:N \l__jsonparse_array_index_int
- \bool_if:NT \l__jsonparse_array_index_zero_based_bool {
+ \bool_if:NT \l__jsonparse_zero_based_bool {
\int_decr:N \l__jsonparse_array_index_int
}
\tl_set_eq:NN \l__jsonparse_object_array_key_tl \l__jsonparse_key_tl
@@ -412,7 +463,7 @@
\tl_if_head_eq_charcode:oNTF { \l__jsonparse_remainder_tl } : {
\tl_remove_once:NV \l__jsonparse_remainder_tl \c_colon_str
\tl_set:Ne \l__jsonparse_key_tl { \l__jsonparse_prefix_tl #1 }
- } {
+ } {
\tl_set:Nn \l__jsonparse_val_tl {#1}
\prop_gput:Nee \g_jsonparse_entries_prop
{ \l__jsonparse_key_tl } { \l__jsonparse_val_tl }
@@ -515,7 +566,7 @@
\tl_if_empty:NF \l__jsonparse_remainder_tl {
\exp_args:No \jsonparse_parse:n { \l__jsonparse_remainder_tl }
}
-}
+}
\cs_new_protected:Npn \jsonparse_filter:Nn #1#2 {
\prop_clear:N \l__jsonparse_temp_prop
@@ -542,98 +593,117 @@
\prop_if_exist:NF #1 {
\prop_new:N #1
}
- \prop_gput:Nnn #1 { #2 } { #3 }
+ \prop_gput:Nnn #1 {#2} {#3}
}
\cs_new:Npn \__jsonparse_externalize:Nn #1#2 {
- \file_if_exist:nTF {#2} {
- \msg_error:nnn { jsonparse } { file-exists }
+ \file_if_exist:eTF {#2} {
+ \msg_error:nne { jsonparse } { file-exists }
{#2}
} {
- \iow_open:Nn \g__jsonparse_externalize_iow {#2}
+ \iow_open:Ne \g__jsonparse_externalize_iow {#2}
\prop_map_inline:Nn #1 {
\iow_now:Nn \g__jsonparse_externalize_iow {
\JSONParsePut {#1} {##1} {##2}
}
}
\iow_close:N \g__jsonparse_externalize_iow
- \msg_info:nnn { jsonparse } { saving-external }
+ \msg_info:nne { jsonparse } { saving-external }
{#2}
}
}
% ===
-\NewDocumentCommand { \JSONParse } { o m +v } {
- \bool_set_false:N \l__jsonparse_load_external_bool
- \tl_if_novalue:nF {#1} {
- \file_if_exist:nT { #1 .jsonparse } {
- \bool_set_true:N \l__jsonparse_load_external_bool
- }
+\cs_new:Npn \__json_nested_construct_cs:Nnn #1 #2 #3 {
+ \cs_set:Npn #1 #2 ##1 #3 #2 ##2 #3 {
+ \prop_item:ce {##1} {##2}
}
- \bool_if:NTF \l__jsonparse_load_external_bool {
- \msg_info:nnn { jsonparse } { loading-external }
- { #1 .jsonparse }
- \file_input:n { #1 .jsonparse }
- } {
- \prop_new:N #2
- \tl_gclear:N \g__jsonparse_json_tl
- \group_begin:
- \cs_set:Npn \" { \exp_not:N \" }
- \cs_set:Npn \/ { \exp_not:N \/ }
- \cs_set:Npn \\ { \exp_not:N \\ }
- \cs_set:Npn \b { \exp_not:N \b }
- \cs_set:Npn \f { \exp_not:N \f }
- \cs_set:Npn \n { \exp_not:N \n }
- \cs_set:Npn \r { \exp_not:N \r }
- \cs_set:Npn \t { \exp_not:N \t }
- \cs_set:Npn \u { \exp_not:N \u }
- \cs_set:Npn \x [ ##1 ] [ ##2 ] { \prop_item:ce {##1} {##2} }
- \tl_gset_rescan:Nne \g__jsonparse_json_tl { \cctab_select:N \c__jsonparse_json_escape_cctab } {#3}
- \exp_args:NNe \jsonparse_parse_to_prop:Nn #2 { \g__jsonparse_json_tl }
- \group_end:
- \tl_if_novalue:nF {#1} {
- \__jsonparse_externalize:Nn #2 { #1 .jsonparse }
+}
+\cs_generate_variant:Nn \__json_nested_construct_cs:Nnn { Noo }
+
+\NewDocumentCommand { \JSONParse } { O{} m +v } {
+ \group_begin:
+ \str_set:Ne \l_jsonparse_current_prop_str { \cs_to_str:N #2 }
+ \keys_set_known:nnN { jsonparse / global } {#1} \l__jsonparse_unused_keys_clist
+ \keys_set_known:noN { jsonparse / parse } { \l__jsonparse_unused_keys_clist } \l__jsonparse_unused_keys_clist
+ \__jsonparse_warning_unused_keys:
+ \bool_set_false:N \l__jsonparse_externalize_load_bool
+ \bool_if:NT \l__jsonparse_externalize_bool {
+ \file_if_exist:eT { \l__jsonparse_externalize_file_name_tl .jsonparse } {
+ \bool_set_true:N \l__jsonparse_externalize_load_bool
+ }
}
- }
+ \bool_if:NTF \l__jsonparse_externalize_load_bool {
+ \msg_info:nne { jsonparse } { loading-external }
+ { \l__jsonparse_externalize_file_name_tl .jsonparse }
+ \file_input:e { \l__jsonparse_externalize_file_name_tl .jsonparse }
+ } {
+ \prop_new:N #2
+ \tl_gclear:N \g__jsonparse_json_tl
+ \group_begin:
+ \cs_set:Npn \" { \exp_not:N \" }
+ \cs_set:Npn \/ { \exp_not:N \/ }
+ \cs_set:Npn \\ { \exp_not:N \\ }
+ \cs_set:Npn \b { \exp_not:N \b }
+ \cs_set:Npn \f { \exp_not:N \f }
+ \cs_set:Npn \n { \exp_not:N \n }
+ \cs_set:Npn \r { \exp_not:N \r }
+ \cs_set:Npn \t { \exp_not:N \t }
+ \cs_set:Npn \u { \exp_not:N \u }
+ \__json_nested_construct_cs:Noo \x \c_left_brace_str \c_right_brace_str
+ \tl_gset_rescan:Nne \g__jsonparse_json_tl { \cctab_select:N \c__jsonparse_json_escape_cctab } {#3}
+ \exp_args:NNe \jsonparse_parse_to_prop:Nn #2 { \g__jsonparse_json_tl }
+ \group_end:
+ \bool_if:NT \l__jsonparse_externalize_bool {
+ \__jsonparse_externalize:Nn #2 { \l__jsonparse_externalize_file_name_tl .jsonparse }
+ }
+ }
+ \group_end:
}
-\NewDocumentCommand { \JSONParseFromFile } { o m m } {
+\NewDocumentCommand { \JSONParseFromFile } { O{} m m } {
\file_if_exist:nF {#3} {
\msg_error:nnn { jsonparse } { file-not-found }
{#3}
}
- \bool_set_false:N \l__jsonparse_load_external_bool
- \tl_if_novalue:nF {#1} {
- \file_if_exist:nT { #1 .jsonparse } {
- \bool_set_true:N \l__jsonparse_load_external_bool
+ \group_begin:
+ \str_set:Ne \l_jsonparse_current_prop_str { \cs_to_str:N #2 }
+ \keys_set_known:nnN { jsonparse / global } {#1} \l__jsonparse_unused_keys_clist
+ \keys_set_known:noN { jsonparse / parse } { \l__jsonparse_unused_keys_clist } \l__jsonparse_unused_keys_clist
+ \__jsonparse_warning_unused_keys:
+ \bool_set_false:N \l__jsonparse_externalize_load_bool
+ \bool_if:NT \l__jsonparse_externalize_bool {
+ \file_if_exist:eT { \l__jsonparse_externalize_file_name_tl .jsonparse } {
+ \bool_set_true:N \l__jsonparse_externalize_load_bool
+ }
}
- }
- \bool_if:NTF \l__jsonparse_load_external_bool {
- \msg_info:nnn { jsonparse } { loading-external }
- { #1 .jsonparse }
- \file_input:n { #1 .jsonparse }
- } {
- \prop_new:N #2
- \tl_gclear:N \g__jsonparse_json_tl
- \group_begin:
- \cs_set:Npn \" { \exp_not:N \" }
- \cs_set:Npn \/ { \exp_not:N \/ }
- \cs_set:Npn \\ { \exp_not:N \\ }
- \cs_set:Npn \b { \exp_not:N \b }
- \cs_set:Npn \f { \exp_not:N \f }
- \cs_set:Npn \n { \exp_not:N \n }
- \cs_set:Npn \r { \exp_not:N \r }
- \cs_set:Npn \t { \exp_not:N \t }
- \cs_set:Npn \u { \exp_not:N \u }
- \cs_set:Npn \x [ ##1 ] [ ##2 ] { \prop_item:ce {##1} {##2} }
- \file_get:nnN {#3} { \cctab_select:N \c__jsonparse_json_escape_cctab } \g__jsonparse_json_tl
- \exp_args:NNe \jsonparse_parse_to_prop:Nn #2 { \g__jsonparse_json_tl }
- \group_end:
- \tl_if_novalue:nF {#1} {
- \__jsonparse_externalize:Nn #2 { #1 .jsonparse }
+ \bool_if:NTF \l__jsonparse_externalize_load_bool {
+ \msg_info:nne { jsonparse } { loading-external }
+ { \l__jsonparse_externalize_file_name_tl .jsonparse }
+ \file_input:e { \l__jsonparse_externalize_file_name_tl .jsonparse }
+ } {
+ \prop_new:N #2
+ \tl_gclear:N \g__jsonparse_json_tl
+ \group_begin:
+ \cs_set:Npn \" { \exp_not:N \" }
+ \cs_set:Npn \/ { \exp_not:N \/ }
+ \cs_set:Npn \\ { \exp_not:N \\ }
+ \cs_set:Npn \b { \exp_not:N \b }
+ \cs_set:Npn \f { \exp_not:N \f }
+ \cs_set:Npn \n { \exp_not:N \n }
+ \cs_set:Npn \r { \exp_not:N \r }
+ \cs_set:Npn \t { \exp_not:N \t }
+ \cs_set:Npn \u { \exp_not:N \u }
+ \cs_set:Npn \x [ ##1 ] [ ##2 ] { \prop_item:ce {##1} {##2} }
+ \file_get:nnN {#3} { \cctab_select:N \c__jsonparse_json_escape_cctab } \g__jsonparse_json_tl
+ \exp_args:NNe \jsonparse_parse_to_prop:Nn #2 { \g__jsonparse_json_tl }
+ \group_end:
+ \bool_if:NT \l__jsonparse_externalize_bool {
+ \__jsonparse_externalize:Nn #2 { \l__jsonparse_externalize_file_name_tl .jsonparse }
+ }
}
- }
+ \group_end:
}
\NewExpandableDocumentCommand { \JSONParseExpandableValue } { m m } {
@@ -682,12 +752,16 @@
\group_end:
}
-\NewDocumentCommand { \JSONParseValue } { s m m } {
- \bool_if:NTF #1 {
- \prop_item:Ne #2 {#3}
- } {
- \exp_args:Ne \__jsonparse_rescan:n { \prop_item:Ne #2 {#3} }
- }
+\NewDocumentCommand { \JSONParseValue } { O{} m m } {
+ \group_begin:
+ \keys_set_known:nn { jsonparse / typeset } {#1} \l__jsonparse_unused_keys_clist
+ \__jsonparse_warning_unused_keys:
+ \bool_if:NTF \l__jsonparse_rescan_bool {
+ \exp_args:Ne \__jsonparse_rescan:n { \prop_item:Ne #2 {#3} }
+ } {
+ \prop_item:Ne #2 {#3}
+ }
+ \group_end:
}
\NewDocumentCommand { \JSONParseKeys } { m m } {
@@ -700,7 +774,7 @@
\tl_if_in:nVF {##1} \l__jsonparse_child_sep_str {
\bool_if:NTF \l__jsonparse_prop_map_first_bool {
\bool_set_false:N \l__jsonparse_prop_map_first_bool
- } {
+ } {
\tl_put_right:Nn \l__jsonparse_temp_tl { , }
}
\tl_put_right:Nn \l__jsonparse_temp_tl { " ##1 " }
@@ -710,8 +784,10 @@
\tl_set_eq:NN #2 \l__jsonparse_temp_tl
}
-\NewDocumentCommand { \JSONParseArrayValues } { s m m O{} m } {
+\NewDocumentCommand { \JSONParseArrayValues } { O{} m m O{} m } {
\group_begin:
+ \keys_set_known:nn { jsonparse / typeset } {#1} \l__jsonparse_unused_keys_clist
+ \__jsonparse_warning_unused_keys:
\tl_set:Nn \l__jsonparse_temp_tl {#2}
\jsonparse_filter:Nn \l__jsonparse_temp_tl {#3}
\bool_set_true:N \l__jsonparse_prop_map_first_bool
@@ -721,13 +797,13 @@
} {#4} {
\bool_if:NTF \l__jsonparse_prop_map_first_bool {
\bool_set_false:N \l__jsonparse_prop_map_first_bool
- } {
+ } {
#5
}
- \bool_if:NTF #1 {
- ##2
- } {
+ \bool_if:NTF \l__jsonparse_rescan_bool {
\__jsonparse_rescan:n {##2}
+ } {
+ ##2
}
}
}
@@ -759,10 +835,12 @@
\tl_new:N \JSONParseArrayIndex
\tl_new:N \JSONParseArrayKey
-\tl_new:N \JSONParseArrayValue
+\tl_new:N \JSONParseArrayValue
-\NewDocumentCommand { \JSONParseArrayValuesMap } { s m m O{} m } {
+\NewDocumentCommand { \JSONParseArrayValuesMap } { O{} m m O{} m } {
\group_begin:
+ \keys_set_known:nn { jsonparse / typeset } {#1} \l__jsonparse_unused_keys_clist
+ \__jsonparse_warning_unused_keys:
\jsonparse_filter:Nn #2 {#3}
\prop_map_inline:Nn #2 {
\str_if_eq:enT {
@@ -771,10 +849,10 @@
\int_incr:N \l__jsonparse_array_index_int
\tl_set:Ne \JSONParseArrayIndex { \__jsonparse_get_array_index:w ##1 \q_stop }
\tl_set:Nn \JSONParseArrayKey {##1}
- \bool_if:NTF #1 {
- \tl_set:Nn \JSONParseArrayValue { \prop_item:Nn #2 {##1} }
- } {
+ \bool_if:NTF \l__jsonparse_rescan_bool {
\tl_set:Nn \JSONParseArrayValue { \exp_args:Ne \__jsonparse_rescan:n { \prop_item:Nn #2 {##1} } }
+ } {
+ \tl_set:Nn \JSONParseArrayValue { \prop_item:Nn #2 {##1} }
}
\use:c {#5}
}
diff --git a/macros/latex/contrib/rpgicons/README.md b/macros/latex/contrib/rpgicons/README.md
index e889b70b03..6de01a2586 100644
--- a/macros/latex/contrib/rpgicons/README.md
+++ b/macros/latex/contrib/rpgicons/README.md
@@ -1,4 +1,4 @@
-![Version 1.8.3](https://img.shields.io/badge/version-1.8.3-blue)
+![Version 1.8.4](https://img.shields.io/badge/version-1.8.4-blue)
<img width="200" alt="rpgicons-example" src="https://github.com/jasperhabicht/rpgicons/assets/6378801/81a1d0aa-7a4f-4f83-bbdc-3bc3332023b2" />
diff --git a/macros/latex/contrib/rpgicons/rpgicons-doc.pdf b/macros/latex/contrib/rpgicons/rpgicons-doc.pdf
index 7fa0c036d7..dc0bce82b9 100644
--- a/macros/latex/contrib/rpgicons/rpgicons-doc.pdf
+++ b/macros/latex/contrib/rpgicons/rpgicons-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/rpgicons/rpgicons-doc.tex b/macros/latex/contrib/rpgicons/rpgicons-doc.tex
index 7eef59a1a4..9aebfdcd52 100644
--- a/macros/latex/contrib/rpgicons/rpgicons-doc.tex
+++ b/macros/latex/contrib/rpgicons/rpgicons-doc.tex
@@ -11,8 +11,8 @@
% This work has the LPPL maintenance status `maintained'.
%
\documentclass[a4paper]{article}
-\def\rpgiconsfileversion{1.8.3}
-\def\rpgiconsfiledate{15 May 2024}
+\def\rpgiconsfileversion{1.8.4}
+\def\rpgiconsfiledate{8 August 2024}
\usepackage[T1]{fontenc}
\usepackage{Alegreya}
@@ -262,6 +262,7 @@
\changes{v1.8.0}{2024/03/24}{Unified wrapper to load either package variant.}
\changes{v1.8.2}{2024/04/28}{Roll dice syntax for PGF variant.}
\changes{v1.8.3}{2024/05/15}{Minor compatibility fix. Example of how to use pics added to ducumentation.}
+\changes{v1.8.3}{2024/05/15}{Bug fix in evocation spellschool shape. Unification of frames in PGF and L3 variants.}
\begin{document}
diff --git a/macros/latex/contrib/rpgicons/rpgicons-l3.sty b/macros/latex/contrib/rpgicons/rpgicons-l3.sty
index 3103502bf3..cc33d61bf2 100644
--- a/macros/latex/contrib/rpgicons/rpgicons-l3.sty
+++ b/macros/latex/contrib/rpgicons/rpgicons-l3.sty
@@ -10,8 +10,8 @@
%
% This work has the LPPL maintenance status `maintained'.
%
-\ProvidesExplPackage {rpgicons-l3} {2024-05-15} {1.8.3}
- {rpg Icons Package (l3 Variant)}
+\ProvidesExplPackage {rpgicons-l3} {2024-08-08} {1.8.4}
+ {RPG Icons Package (l3 Variant)}
\bool_new:N \l__rpgicons_unicode_mode_bool
\sys_if_engine_luatex:T {
@@ -792,22 +792,22 @@
\draw_path_lineto:n { 0cm , -.425cm }
\draw_path_moveto:n { -.425cm , 0cm }
\draw_path_lineto:n { .425cm , 0cm }
- \draw_path_moveto:n { \draw_point_polar:nnn { 30 } { .325cm } { .225cm } }
- \draw_path_lineto:n { \draw_point_polar:nn { 30 } { .4cm} }
- \draw_path_moveto:n { \draw_point_polar:nnn { 60 } { .325cm } { .225cm } }
- \draw_path_lineto:n { \draw_point_polar:nn { 60 } { .4cm} }
- \draw_path_moveto:n { \draw_point_polar:nnn { 120 } { .325cm } { .225cm } }
- \draw_path_lineto:n { \draw_point_polar:nn { 120 } { .4cm} }
- \draw_path_moveto:n { \draw_point_polar:nnn { 150 } { .325cm } { .225cm } }
- \draw_path_lineto:n { \draw_point_polar:nn { 150 } { .4cm} }
- \draw_path_moveto:n { \draw_point_polar:nnn { 210 } { .325cm } { .225cm } }
- \draw_path_lineto:n { \draw_point_polar:nn { 210 } { .4cm} }
- \draw_path_moveto:n { \draw_point_polar:nnn { 240 } { .325cm } { .225cm } }
- \draw_path_lineto:n { \draw_point_polar:nn { 240 } { .4cm} }
- \draw_path_moveto:n { \draw_point_polar:nnn { 300 } { .325cm } { .225cm } }
- \draw_path_lineto:n { \draw_point_polar:nn { 300 } { .4cm} }
- \draw_path_moveto:n { \draw_point_polar:nnn { 330 } { .325cm } { .225cm } }
- \draw_path_lineto:n { \draw_point_polar:nn { 330 } { .4cm} }
+ \draw_path_moveto:n { \draw_point_polar:nnn { .325cm } { .225cm } { 30 } }
+ \draw_path_lineto:n { \draw_point_polar:nn { .4cm } { 30 } }
+ \draw_path_moveto:n { \draw_point_polar:nnn { .325cm } { .225cm } { 60 } }
+ \draw_path_lineto:n { \draw_point_polar:nn { .4cm } { 60 } }
+ \draw_path_moveto:n { \draw_point_polar:nnn { .325cm } { .225cm } { 120 } }
+ \draw_path_lineto:n { \draw_point_polar:nn { .4cm } { 120 } }
+ \draw_path_moveto:n { \draw_point_polar:nnn { .325cm } { .225cm } { 150 } }
+ \draw_path_lineto:n { \draw_point_polar:nn { .4cm } { 150 } }
+ \draw_path_moveto:n { \draw_point_polar:nnn { .325cm } { .225cm } { 210 } }
+ \draw_path_lineto:n { \draw_point_polar:nn { .4cm } { 210 } }
+ \draw_path_moveto:n { \draw_point_polar:nnn { .325cm } { .225cm } { 240 } }
+ \draw_path_lineto:n { \draw_point_polar:nn { .4cm } { 240 } }
+ \draw_path_moveto:n { \draw_point_polar:nnn { .325cm } { .225cm } { 300 } }
+ \draw_path_lineto:n { \draw_point_polar:nn { .4cm } { 300 } }
+ \draw_path_moveto:n { \draw_point_polar:nnn { .325cm } { .225cm } { 330 } }
+ \draw_path_lineto:n { \draw_point_polar:nn { .4cm } { 330 } }
}
\cs_new:Npn \rpgicons_draw_shape_illusion: {
@@ -1546,7 +1546,7 @@
}
\cs_new:Npn \rpgicons_draw_frame_damage: {
- \draw_path_circle:nn { 0cm , 0cm } { .45cm }
+ \draw_path_circle:nn { 0cm , 0cm } { .5cm }
}
% USER COMMANDS
@@ -1910,7 +1910,7 @@
}
\cs_if_exist:NF \spell { \cs_new_eq:NN \spell \RPGIconsSpell }
-\NewDocumentCommand { \RPGIconsSpellschool } { O{positive} m O{} } {
+\NewDocumentCommand { \RPGIconsSpellschool } { O{negative} m O{} } {
\group_begin:
\keys_set_groups:nne { rpgicons / local ~ options } { extra } {#3}
\keys_set:ne { rpgicons / local ~ options } { \clist_use:Nn \l_rpgicons_types_every_spellschool_style_clist { , } }
diff --git a/macros/latex/contrib/rpgicons/rpgicons-pgf.sty b/macros/latex/contrib/rpgicons/rpgicons-pgf.sty
index 0e0c037187..dd75a7b4c0 100644
--- a/macros/latex/contrib/rpgicons/rpgicons-pgf.sty
+++ b/macros/latex/contrib/rpgicons/rpgicons-pgf.sty
@@ -11,7 +11,7 @@
% This work has the LPPL maintenance status `maintained'.
%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{rpgicons-pgf}[2024-05-15 rpg Icons Package (PGF Variant) (1.8.3)]
+\ProvidesPackage{rpgicons-pgf}[2024-08-08 RPG Icons Package (PGF Variant) (1.8.4)]
% provide pics option
\newif\ifrpgicons@pics\rpgicons@picsfalse
diff --git a/macros/latex/contrib/rpgicons/rpgicons.sty b/macros/latex/contrib/rpgicons/rpgicons.sty
index 8079232a4f..63a5fa2fc0 100644
--- a/macros/latex/contrib/rpgicons/rpgicons.sty
+++ b/macros/latex/contrib/rpgicons/rpgicons.sty
@@ -10,8 +10,8 @@
%
% This work has the LPPL maintenance status `maintained'.
%
-\ProvidesExplPackage {rpgicons} {2024-05-15} {1.8.3}
- {rpg Icons Package}
+\ProvidesExplPackage {rpgicons} {2024-08-08} {1.8.4}
+ {RPG Icons Package}
\bool_new:N \l__rpgicons_use_legacy_variant_bool
\clist_new:N \l__rpgicons_forwarded_options_clist
diff --git a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
index 547d2c57b5..0f432212ba 100644
--- a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
+++ b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
@@ -40,6 +40,7 @@ $mirrors = {
'http://ctan.asis.ai/' => 1,
},
'Japan' => {
+ 'http://ring.airnet.ne.jp/archives/text/CTAN/' => 1,
'https://ftp.jaist.ac.jp/pub/CTAN/' => 1,
'https://ftp.kddilabs.jp/CTAN/' => 1,
'https://ftp.yz.yamagata-u.ac.jp/pub/CTAN/' => 1,
@@ -76,10 +77,6 @@ $mirrors = {
'Belarus' => {
'https://mirror.datacenter.by/pub/mirrors/CTAN/' => 1,
},
- 'Bulgaria' => {
- 'https://mirrors.neterra.net/CTAN/' => 1,
- 'https://mirrors.netix.net/CTAN/' => 1,
- },
'Czech Republic' => {
'http://ftp.cvut.cz/tex-archive/' => 1,
'https://mirrors.nic.cz/tex-archive/' => 1,
@@ -156,7 +153,6 @@ $mirrors = {
'https://mirrors.nxthost.com/ctan/' => 1,
},
'Russia' => {
- 'https://ctan.altspu.ru/' => 1,
'https://mirror.macomnet.net/pub/CTAN/' => 1,
'https://mirror.truenetwork.ru/CTAN/' => 1,
},
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb b/systems/texlive/tlnet/tlpkg/texlive.tlpdb
index 1a6421ad11..c1421815f2 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb
@@ -26,7 +26,7 @@ depend container_split_src_files/1
depend frozen/0
depend minrelease/2016
depend release/2024
-depend revision/71990
+depend revision/71996
name 00texlive.image
category TLCore
@@ -4929,7 +4929,7 @@ depend setting_available_architectures:aarch64-linux amd64-freebsd amd64-netbsd
name 00texlive.installer
category TLCore
-revision 71989
+revision 71996
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
@@ -169672,31 +169672,32 @@ catalogue-version 1.13
name jsonparse
category Package
-revision 71329
+revision 71995
shortdesc Parse, store and access JSON data in LaTeX documents
relocated 1
longdesc This package provides an easy way to read in JSON data from
longdesc files or strings in LaTeX documents, parse the data and store
longdesc it in a user-defined token variable.
-containersize 4776
-containerchecksum e98c775b1548e59cacd55765ce63c8499a745de2e12f0486189da14148a1128fd17d4c1ba5f51b5b2b88fc0e99ef8f237726724e71b0a95ab88948a2dfdaad7d
-doccontainersize 563504
-doccontainerchecksum b13cb5038348edebf182bdb21d37126019744933f46427949e597c42ce86d9de3b72bd182d8e16cca8b55e8c8b953f043ce690ad857cb17949e52ff62045ecdc
-docfiles size=210
+containersize 5204
+containerchecksum 3f24e63db30b4689b27da7ed270a893713523d087c8be9c10d2cb73cecbe4be9bdde97aa330e5b7f0265dba87126dd8ce7d3d6a4e86b7b91577c5270cedda49a
+doccontainersize 422244
+doccontainerchecksum eb30e798f71e349b4a56da65d670ab4ea098ca4943161184cc2729e91583096663ebf677b176cb28ce9915c19374b7005f91e865c82041e9ae5d70a50ede6cbc
+docfiles size=126
RELOC/doc/latex/jsonparse/LICENCE
RELOC/doc/latex/jsonparse/README.md details="Readme"
RELOC/doc/latex/jsonparse/jason/jason.pdf
RELOC/doc/latex/jsonparse/jason/jason.svg
+ RELOC/doc/latex/jsonparse/jason/jason.tex
RELOC/doc/latex/jsonparse/jsonparse-doc.pdf details="Package documentation"
RELOC/doc/latex/jsonparse/jsonparse-doc.tex
-runfiles size=7
+runfiles size=8
RELOC/tex/latex/jsonparse/jsonparse.sty
catalogue-contact-bugs https://github.com/jasperhabicht/jsonparse/issues
catalogue-contact-repository https://github.com/jasperhabicht/jsonparse
catalogue-ctan /macros/latex/contrib/jsonparse
catalogue-license lppl1.3c
catalogue-topics data-manip expl3
-catalogue-version 0.8.6
+catalogue-version 0.8.7
name jumplines
category Package
@@ -290413,7 +290414,7 @@ catalogue-version 2.2
name rpgicons
category Package
-revision 71269
+revision 71994
shortdesc Icons for tabletop role-playing games
relocated 1
longdesc This package provides a set of high-quality icons for use in
@@ -290422,10 +290423,10 @@ longdesc be used in the body text, but they can also be used in other
longdesc contexts such as graphics or diagrams. The package comes in two
longdesc variants, one based on the l3draw package, and the other on
longdesc PGF/TikZ.
-containersize 17800
-containerchecksum 114c9063e34d987602e28c713f4a3c121e27ee434b04aef7e7906ce82c732760ba9a02f5c198e2c002e7cf1e02d2044370ae1960c70c82ef10211a9bbececb17
-doccontainersize 467884
-doccontainerchecksum 5db2079f59fa7212aa608780bc221fc242a59553ec03ed93078719f73347ba3c3bb0379fcd83f4273cd4b99deccede9b3adfa3a4c4f74883b51fc0695e1018b4
+containersize 17780
+containerchecksum a88cb5ae9b27dd5d3a62ff5baa4cb12a893765972329ccde8a5b8efb6f3bb2ff9c1d0a0f941bdd0e2f1affa19c2ceb1f3d0666c2838311839f34340a6409e80a
+doccontainersize 467384
+doccontainerchecksum e397dc8a3475d59414cf0dbeae48983f3d9023c87d24406798ce204a49264460c5d8085099dc64d86ab38f07f6b1d52f478139a3a6b805f4d93fef69da1225a2
docfiles size=141
RELOC/doc/latex/rpgicons/LICENSE
RELOC/doc/latex/rpgicons/README.md details="Readme"
@@ -290440,7 +290441,7 @@ catalogue-contact-repository https://github.com/jasperhabicht/rpgicons
catalogue-ctan /macros/latex/contrib/rpgicons
catalogue-license lppl1.3c
catalogue-topics games graphics pgf-tikz expl3
-catalogue-version 1.8.3
+catalogue-version 1.8.4
name rrgtrees
category Package
@@ -328738,7 +328739,7 @@ docfiles size=376
name texlive-scripts
category TLCore
-revision 71990
+revision 71996
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.
@@ -328746,10 +328747,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 114476
-containerchecksum 574688587a20a752249cd4bf774369057f5eea46e59e06258e48141ad3353998ff6977e6c9c459c1850e4d8e95930773f3a98b486cb43f656af3bd098eb4db6d
+containersize 114480
+containerchecksum 9dab9241cfb32b18a351c006e73b7e258c7d9926fb54695ec0365b0f69ba7fb1feb2bf552ab7f0323e7646f867368fe2d72594c08a383462e50bbfa38dccf15f
doccontainersize 436924
-doccontainerchecksum 648cb3c54bfd04232f80caac2a9c4d1fe61b519c008fbd8ff623bde285b055ce6bcf6bf56eaab6a02974196ba62d643f3772437fd24b24baf401c4ccde4ab2e7
+doccontainerchecksum 3cd29b2b5485cdb5d62e5d852ed9c4474bce352b69c567c89ecea24580e0af9e2e7c412e5260d2d3d313d52a8e5e14338fc45fc2a9aa159e8ee4c714b75de71b
docfiles size=572
doc.html
texmf-dist/doc/man/man1/fmtutil-sys.1
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
index 63a96b152c..e17ff3209c 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
@@ -1 +1 @@
-26f89b372a27eedcd6d2e9e56ed75fdd texlive.tlpdb
+4d9a5c52450441c4c005d6f82a16a19e texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
index 76a8046940..3054bb17a7 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
@@ -1 +1 @@
-557f330817ff32a9c3e86cfab530d5269526bfdfeb04e02ff3221860bd3b69f3abf9e4a6626ab92264c50de5661bf95838b27bf3bd9ab7eb540dcd85c03af73e texlive.tlpdb
+09c2e00ea6abe3705c0ccb5cf7c817934a40ac6e1aa5423719d78d448884418e3c368e91a5fcc1b07e897d29d64d7218c2d55380b03e953c486a25f4a103a95c texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
index 743300ee19..59439de84c 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+QqiBBqTOGHfhlDjHAFAma0B7QACgkQTOGHfhlD
-jHCZ9gf/THZoEZ/i2C9pCf8/8pcl5Ioqts7x5rUQoLMsCWhIbfAzryVb7RTPMiZZ
-RrNxuiXuBSPhaC5Vp3lJBWao1IREXmHYCgcX/bV0BPKtW+Gtu2dJDebYT7R2r0bc
-W1DoGk53cOFdVC08tTVy4f96wYCCXk7fy8VM6ecbdKls7TNiZqki+vU7FFMpwzDJ
-VU6cozejqHPRpUWNKAVPzqdDltg5yBDl4Kt46mRS596qABLHYGVXH9hLwIH9obt3
-SlG5OP/PUJdsSmicbDeS1k3pClZDcCXKgWmNHezL0rei3ek0O9qOFK+0hzYE/mz6
-WiQ6YkFi9qOYygkfkA8L5g0oaM5zPA==
-=ulCD
+iQEzBAEBCgAdFiEE2PL4YFeoV+QqiBBqTOGHfhlDjHAFAma1WakACgkQTOGHfhlD
+jHDzKgf/bc+TuRdWA3dqS5jGewaImfdhC3/IDg8h2/DlfJBGIJzOUr1XYD+J6fGk
+1+V9EDwxUYAwLq4G6BV5fp+hFGTu8SrE6O2fmdhdT3zn3S90MAy2quChCxPHVNxl
+v1gqxHyL8vIcyCgPw8SS/8A8EY58F6AJYDR61nNelvBrNGQsWgx797srkdX5QxOf
+39h7X4HDWIwX1iUrrR5A1Z7ixguM7ZDWNErdFnukVHl0j1Z1z+vyrZgN1PuShpWL
+5zln2/5Zp4UPbrjaarrKtT0fj3diIFLlf4V7gJQshbgn2g2xGG1442D60Ce9lBPw
+IoNe7Hs+Xpddg9fkAw8oGctmUuzi3w==
+=peQY
-----END PGP SIGNATURE-----
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
index 1c9ea89b62..dede23468d 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 d154350b62..b3ca82fec3 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:
-2024-08-08-02-02
+2024-08-09-02-02