summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2022-02-08 03:01:03 +0000
committerNorbert Preining <norbert@preining.info>2022-02-08 03:01:03 +0000
commit98810f6d7d064e61186d0ce674c4ee9de47a1f55 (patch)
tree66a7f325cde31d66d1ff1955cb1ab4aa4bd51aa9
parentf689c91581665257602a841d03f73078c3495e14 (diff)
CTAN sync 202202080301
-rw-r--r--FILES.byname1412
-rw-r--r--FILES.byname.gzbin2422020 -> 2422589 bytes
-rw-r--r--FILES.last07days1099
-rw-r--r--fonts/fourier-GUT/README8
-rw-r--r--fonts/fourier-GUT/afm/fourier-orns.afm7
-rw-r--r--fonts/fourier-GUT/doc/fourier-orns-doc.pdfbin48352 -> 112510 bytes
-rw-r--r--fonts/fourier-GUT/doc/fourier-orns-doc.tex49
-rw-r--r--fonts/fourier-GUT/latex/fourier-orns.sty146
-rw-r--r--fonts/fourier-GUT/latex/fourier.sty4
-rw-r--r--fonts/fourier-GUT/latex/ufuts.fd6
-rw-r--r--fonts/fourier-GUT/opentype/FourierOrns-Bold.otfbin31388 -> 0 bytes
-rw-r--r--fonts/fourier-GUT/opentype/FourierOrns-BoldItalic.otfbin31612 -> 0 bytes
-rw-r--r--fonts/fourier-GUT/opentype/FourierOrns-Italic.otfbin31544 -> 0 bytes
-rw-r--r--fonts/fourier-GUT/opentype/FourierOrns-Regular.otfbin31436 -> 31148 bytes
-rw-r--r--fonts/fourier-GUT/tfm/fourier-ligs.tfmbin1052 -> 0 bytes
-rw-r--r--fonts/fourier-GUT/tfm/fourier-orns.tfmbin656 -> 520 bytes
-rw-r--r--fonts/fourier-GUT/tfm/fut-oldlatin-it.tfmbin13968 -> 0 bytes
-rw-r--r--fonts/fourier-GUT/tfm/fut-oldlatin.tfmbin14256 -> 0 bytes
-rw-r--r--fonts/fourier-GUT/tfm/futboorn.tfmbin692 -> 628 bytes
-rw-r--r--fonts/fourier-GUT/tfm/futborn.tfmbin688 -> 624 bytes
-rw-r--r--fonts/fourier-GUT/tfm/futcorn.tfmbin688 -> 624 bytes
-rw-r--r--fonts/fourier-GUT/tfm/futroorn.tfmbin692 -> 628 bytes
-rw-r--r--fonts/fourier-GUT/tfm/futrorn.tfmbin688 -> 624 bytes
-rw-r--r--fonts/fourier-GUT/tfm/futsoorn.tfmbin692 -> 628 bytes
-rw-r--r--fonts/fourier-GUT/tfm/futsorn.tfmbin688 -> 624 bytes
-rw-r--r--fonts/fourier-GUT/type1/fourier-orns.pfbbin15813 -> 16008 bytes
-rw-r--r--fonts/fourier-GUT/vf/futboorn.vfbin300 -> 340 bytes
-rw-r--r--fonts/fourier-GUT/vf/futborn.vfbin296 -> 336 bytes
-rw-r--r--fonts/fourier-GUT/vf/futcorn.vfbin296 -> 340 bytes
-rw-r--r--fonts/fourier-GUT/vf/futroorn.vfbin296 -> 336 bytes
-rw-r--r--fonts/fourier-GUT/vf/futrorn.vfbin292 -> 332 bytes
-rw-r--r--fonts/fourier-GUT/vf/futsoorn.vfbin300 -> 340 bytes
-rw-r--r--fonts/fourier-GUT/vf/futsorn.vfbin296 -> 336 bytes
-rw-r--r--graphics/metapost/contrib/macros/byrne/README20
-rw-r--r--graphics/metapost/contrib/macros/byrne/byrne-latex.pdfbin0 -> 156788 bytes
-rw-r--r--graphics/metapost/contrib/macros/byrne/byrne-latex.tex1244
-rw-r--r--graphics/metapost/contrib/macros/byrne/byrne.mp3852
-rw-r--r--graphics/metapost/contrib/macros/byrne/byrne.sty298
-rw-r--r--graphics/metapost/contrib/macros/fiziko/README2
-rw-r--r--graphics/metapost/contrib/macros/fiziko/fiziko.mp715
-rw-r--r--graphics/metapost/contrib/macros/fiziko/fiziko.pdfbin4559755 -> 5338496 bytes
-rw-r--r--graphics/metapost/contrib/macros/fiziko/fiziko.tex113
-rw-r--r--indexing/xindex/CHANGELOG1
-rw-r--r--indexing/xindex/doc/xindex-doc.pdfbin412603 -> 412615 bytes
-rw-r--r--indexing/xindex/doc/xindex-doc.tex2
-rw-r--r--indexing/xindex/lualatex/xindex-danteedition.lua93
-rwxr-xr-xindexing/xindex/scripts/xindex.lua15
-rw-r--r--macros/latex/contrib/codehigh/README.txt (renamed from macros/latex/contrib/codehigh/README)0
-rw-r--r--macros/latex/contrib/codehigh/codehigh.pdfbin104400 -> 115099 bytes
-rw-r--r--macros/latex/contrib/codehigh/codehigh.sty102
-rw-r--r--macros/latex/contrib/codehigh/codehigh.tex28
-rw-r--r--macros/latex/contrib/l3backend/CHANGELOG.md8
-rw-r--r--macros/latex/contrib/l3backend/README.md2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-basics.dtx14
-rw-r--r--macros/latex/contrib/l3backend/l3backend-box.dtx2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-code.pdfbin896473 -> 896928 bytes
-rw-r--r--macros/latex/contrib/l3backend/l3backend-color.dtx9
-rw-r--r--macros/latex/contrib/l3backend/l3backend-draw.dtx2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-graphics.dtx2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-header.dtx2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-opacity.dtx2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-pdf.dtx2
-rw-r--r--macros/latex/contrib/mathtools/empheq.pdfbin329716 -> 329716 bytes
-rw-r--r--macros/latex/contrib/mathtools/mathtools.dtx4
-rw-r--r--macros/latex/contrib/mathtools/mathtools.pdfbin498903 -> 498910 bytes
-rw-r--r--macros/latex/contrib/mathtools/mhsetup.pdfbin255014 -> 255014 bytes
-rw-r--r--macros/latex/contrib/proof-at-the-end/README.md82
-rw-r--r--macros/latex/contrib/proof-at-the-end/proof-at-the-end.dtx318
-rw-r--r--macros/latex/contrib/proof-at-the-end/proof-at-the-end.ins2
-rw-r--r--macros/latex/contrib/proof-at-the-end/proof-at-the-end.pdfbin315974 -> 321713 bytes
-rw-r--r--macros/latex/contrib/proof-at-the-end/proof-at-the-end_demo.pdfbin121558 -> 121559 bytes
-rw-r--r--macros/latex/contrib/proof-at-the-end/proof-at-the-end_demo.tex26
-rw-r--r--macros/latex/contrib/siunitx/CHANGELOG.md12
-rw-r--r--macros/latex/contrib/siunitx/siunitx-code.pdfbin607726 -> 607830 bytes
-rw-r--r--macros/latex/contrib/siunitx/siunitx-locale.dtx7
-rw-r--r--macros/latex/contrib/siunitx/siunitx-print.dtx31
-rw-r--r--macros/latex/contrib/siunitx/siunitx.dtx2
-rw-r--r--macros/latex/contrib/siunitx/siunitx.pdfbin639466 -> 639784 bytes
-rw-r--r--macros/latex/contrib/siunitx/siunitx.tex9
-rw-r--r--macros/latex/contrib/tkz/tkz-base/README.md4
-rw-r--r--macros/latex/contrib/tkz/tkz-base/doc/latex/TKZdoc-base-main.tex10
-rw-r--r--macros/latex/contrib/tkz/tkz-base/doc/tkz-base.pdfbin366644 -> 368069 bytes
-rw-r--r--macros/latex/contrib/tkz/tkz-base/latex/tkz-base.cfg6
-rw-r--r--macros/latex/contrib/tkz/tkz-base/latex/tkz-base.sty9
-rw-r--r--macros/latex/contrib/tkz/tkz-base/latex/tkz-lib-marks.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-base/latex/tkz-lib-shape.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-axes.tex17
-rw-r--r--macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-axesmin.tex171
-rw-r--r--macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-grids.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-marks.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-points.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-rep.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-BB.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-arith.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-base.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-colors.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-misc.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-modules.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-print.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-text.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-utilities.tex6
-rw-r--r--macros/latex/contrib/zref-clever/CHANGELOG.md12
-rw-r--r--macros/latex/contrib/zref-clever/MANIFEST.md30
-rw-r--r--macros/latex/contrib/zref-clever/zref-clever-code.pdfbin1175713 -> 1248656 bytes
-rw-r--r--macros/latex/contrib/zref-clever/zref-clever.dtx1418
-rw-r--r--macros/latex/contrib/zref-clever/zref-clever.pdfbin310423 -> 312992 bytes
-rw-r--r--macros/latex/contrib/zref-clever/zref-clever.tex250
-rw-r--r--macros/luatex/generic/luatexja/COPYING2
-rw-r--r--macros/luatex/generic/luatexja/README10
-rw-r--r--macros/luatex/generic/luatexja/doc/luatexja-en.pdfbin713111 -> 717058 bytes
-rw-r--r--macros/luatex/generic/luatexja/doc/luatexja-ja.pdfbin1140418 -> 1144502 bytes
-rw-r--r--macros/luatex/generic/luatexja/doc/luatexja.dtx16
-rw-r--r--macros/luatex/generic/luatexja/src/addons/luatexja-adjust.sty10
-rw-r--r--macros/luatex/generic/luatexja/src/ltj-adjust.lua38
-rw-r--r--macros/luatex/generic/luatexja/src/ltj-direction.lua5
-rw-r--r--macros/luatex/generic/luatexja/src/ltj-jfmglue.lua12
-rw-r--r--macros/luatex/generic/luatexja/src/ltj-plain.sty4
-rw-r--r--macros/luatex/generic/luatexja/src/ltj-ruby.lua6
-rw-r--r--macros/luatex/generic/luatexja/src/luatexja-core.sty13
-rw-r--r--macros/luatex/generic/luatexja/src/luatexja.sty2
-rw-r--r--macros/luatex/generic/luatexja/src/patches/lltjcore.sty4
-rw-r--r--macros/luatex/generic/luatexja/src/patches/lltjdefs.sty6
-rw-r--r--support/TeX4ht/source/ChangeLog16
-rw-r--r--support/TeX4ht/source/mktex4ht-cnf.tex3
-rw-r--r--support/TeX4ht/source/tex4ht-html4.tex3
-rw-r--r--support/TeX4ht/source/tex4ht-ooffice.tex19
-rw-r--r--systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl5
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb252
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.md52
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha5122
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc14
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.xzbin2349068 -> 2349136 bytes
-rw-r--r--systems/win32/miktex/tm/packages/files.csv.lzmabin635247 -> 634742 bytes
-rw-r--r--systems/win32/miktex/tm/packages/next/files.csv.lzmabin635157 -> 635379 bytes
-rw-r--r--systems/win32/miktex/tm/packages/next/pr.ini10
-rw-r--r--systems/win32/miktex/tm/packages/pr.ini12
-rw-r--r--timestamp2
137 files changed, 10068 insertions, 2171 deletions
diff --git a/FILES.byname b/FILES.byname
index 4bb9a8db4a..b1a6a5787a 100644
--- a/FILES.byname
+++ b/FILES.byname
@@ -5210,7 +5210,7 @@
1990/10/02 | 5440 | dviware/vutex/vaxvms.hlp
1990/10/02 | 812 | dviware/vutex/vaxvms.ins
1990/10/02 | 127576 | dviware/vutex/vutex.web
-2022/02/06 | 359802 | FILES.last07days
+2022/02/07 | 364791 | 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
@@ -43194,12 +43194,12 @@
2020/08/01 | 1460 | fonts/forum/vf/Frm-lf-t2c.vf
2020/08/01 | 420 | fonts/forum/vf/Frm-lf-ts1.vf
2020/08/02 | 877161 | fonts/forum.zip
-2020/03/03 | 951 | fonts/fourier-GUT/afm/fourier-alt.afm
-2020/03/03 | 832 | fonts/fourier-GUT/afm/fourier-alt-black.afm
-2020/03/03 | 828 | fonts/fourier-GUT/afm/fourier-alt-bold.afm
+2022/02/05 | 951 | fonts/fourier-GUT/afm/fourier-alt.afm
+2022/02/05 | 832 | fonts/fourier-GUT/afm/fourier-alt-black.afm
+2022/02/05 | 828 | fonts/fourier-GUT/afm/fourier-alt-bold.afm
2020/03/03 | 850 | fonts/fourier-GUT/afm/fourier-alt-boldita.afm
2020/03/03 | 837 | fonts/fourier-GUT/afm/fourier-alt-ita.afm
-2020/03/03 | 892 | fonts/fourier-GUT/afm/fourier-alt-semi.afm
+2022/02/05 | 892 | fonts/fourier-GUT/afm/fourier-alt-semi.afm
2020/03/03 | 851 | fonts/fourier-GUT/afm/fourier-alt-semiita.afm
2020/03/03 | 1647 | fonts/fourier-GUT/afm/fourier-bb.afm
2020/03/03 | 1618 | fonts/fourier-GUT/afm/fourier-mcl.afm
@@ -43209,17 +43209,17 @@
2020/03/03 | 2702 | fonts/fourier-GUT/afm/fourier-mlit.afm
2020/03/03 | 2711 | fonts/fourier-GUT/afm/fourier-mlitb.afm
2020/03/03 | 7306 | fonts/fourier-GUT/afm/fourier-ms.afm
-2020/03/03 | 2177 | fonts/fourier-GUT/afm/fourier-orns.afm
+2021/11/24 | 2243 | fonts/fourier-GUT/afm/fourier-orns.afm
2019/11/28 | 249260 | fonts/fourier-GUT/doc/fourier-doc-en.pdf
2019/11/28 | 12628 | fonts/fourier-GUT/doc/fourier-doc-en.tex
-2020/03/03 | 48352 | fonts/fourier-GUT/doc/fourier-orns-doc.pdf
-2020/03/03 | 6205 | fonts/fourier-GUT/doc/fourier-orns-doc.tex
+2022/02/05 | 112510 | fonts/fourier-GUT/doc/fourier-orns-doc.pdf
+2022/02/05 | 6155 | fonts/fourier-GUT/doc/fourier-orns-doc.tex
2004/10/30 | 640 | fonts/fourier-GUT/latex/fmlfutm.fd
2004/10/30 | 656 | fonts/fourier-GUT/latex/fmlfutmi.fd
2004/10/30 | 344 | fonts/fourier-GUT/latex/fmsfutm.fd
2020/03/03 | 233 | fonts/fourier-GUT/latex/fmxfutm.fd
-2020/03/03 | 4980 | fonts/fourier-GUT/latex/fourier-orns.sty
-2020/03/03 | 15200 | fonts/fourier-GUT/latex/fourier.sty
+2022/02/05 | 3911 | fonts/fourier-GUT/latex/fourier-orns.sty
+2022/02/05 | 15200 | fonts/fourier-GUT/latex/fourier.sty
2005/12/19 | 1679 | fonts/fourier-GUT/latex/t1futj.fd
2004/03/02 | 1110 | fonts/fourier-GUT/latex/t1futs.fd
2005/12/19 | 1089 | fonts/fourier-GUT/latex/t1fut-sup.fd
@@ -43227,14 +43227,11 @@
2004/03/02 | 1015 | fonts/fourier-GUT/latex/ts1futj.fd
2003/09/14 | 787 | fonts/fourier-GUT/latex/ts1futs.fd
2004/03/02 | 1015 | fonts/fourier-GUT/latex/ts1futx.fd
-2004/03/02 | 996 | fonts/fourier-GUT/latex/ufuts.fd
+2021/11/24 | 1003 | fonts/fourier-GUT/latex/ufuts.fd
2019/11/26 | 1820 | fonts/fourier-GUT/map/fourier.map
2005/12/19 | 1384 | fonts/fourier-GUT/map/fourier-utopia-expert.map
-2020/03/03 | 31612 | fonts/fourier-GUT/opentype/FourierOrns-BoldItalic.otf
-2020/03/03 | 31388 | fonts/fourier-GUT/opentype/FourierOrns-Bold.otf
-2020/03/03 | 31544 | fonts/fourier-GUT/opentype/FourierOrns-Italic.otf
-2020/03/03 | 31436 | fonts/fourier-GUT/opentype/FourierOrns-Regular.otf
-2020/03/03 | 8363 | fonts/fourier-GUT/README
+2022/02/05 | 31148 | fonts/fourier-GUT/opentype/FourierOrns-Regular.otf
+2022/02/05 | 8650 | fonts/fourier-GUT/README
2005/12/19 | 232 | fonts/fourier-GUT/tfm/fourier-alt-black.tfm
2005/12/19 | 220 | fonts/fourier-GUT/tfm/fourier-alt-boldita.tfm
2005/12/19 | 240 | fonts/fourier-GUT/tfm/fourier-alt-bold-sl.tfm
@@ -43247,7 +43244,6 @@
2005/12/19 | 220 | fonts/fourier-GUT/tfm/fourier-alt.tfm
2006/07/13 | 588 | fonts/fourier-GUT/tfm/fourier-bb.tfm
2005/12/19 | 1052 | fonts/fourier-GUT/tfm/fourier-ligs-it.tfm
-2004/03/04 | 1052 | fonts/fourier-GUT/tfm/fourier-ligs.tfm
2005/12/19 | 620 | fonts/fourier-GUT/tfm/fourier-mcl.tfm
2005/12/30 | 1572 | fonts/fourier-GUT/tfm/fourier-mex.tfm
2005/12/19 | 1120 | fonts/fourier-GUT/tfm/fourier-mlb.tfm
@@ -43255,7 +43251,7 @@
2005/12/19 | 1076 | fonts/fourier-GUT/tfm/fourier-mlit.tfm
2005/12/19 | 1120 | fonts/fourier-GUT/tfm/fourier-ml.tfm
2005/12/19 | 1184 | fonts/fourier-GUT/tfm/fourier-ms.tfm
-2019/11/16 | 656 | fonts/fourier-GUT/tfm/fourier-orns.tfm
+2021/11/24 | 520 | fonts/fourier-GUT/tfm/fourier-orns.tfm
2005/12/19 | 1388 | fonts/fourier-GUT/tfm/futb8c.tfm
2005/12/19 | 1632 | fonts/fourier-GUT/tfm/futb8r.tfm
2005/12/19 | 16496 | fonts/fourier-GUT/tfm/futb8t.tfm
@@ -43279,22 +43275,20 @@
2005/12/19 | 1544 | fonts/fourier-GUT/tfm/futbo9c.tfm
2005/12/19 | 16656 | fonts/fourier-GUT/tfm/futbo9d.tfm
2005/12/19 | 16620 | fonts/fourier-GUT/tfm/futbo9e.tfm
-2019/11/16 | 692 | fonts/fourier-GUT/tfm/futboorn.tfm
-2019/11/16 | 688 | fonts/fourier-GUT/tfm/futborn.tfm
+2021/11/24 | 628 | fonts/fourier-GUT/tfm/futboorn.tfm
+2021/11/24 | 624 | fonts/fourier-GUT/tfm/futborn.tfm
2005/12/19 | 608 | fonts/fourier-GUT/tfm/futb-sup.tfm
2005/12/19 | 1616 | fonts/fourier-GUT/tfm/futc8r.tfm
2005/12/19 | 1164 | fonts/fourier-GUT/tfm/futc8x.tfm
2005/12/19 | 1428 | fonts/fourier-GUT/tfm/futc9c.tfm
2005/12/19 | 16932 | fonts/fourier-GUT/tfm/futc9d.tfm
2005/12/19 | 16900 | fonts/fourier-GUT/tfm/futc9e.tfm
-2019/11/16 | 688 | fonts/fourier-GUT/tfm/futcorn.tfm
+2021/11/24 | 624 | fonts/fourier-GUT/tfm/futcorn.tfm
2005/12/19 | 604 | fonts/fourier-GUT/tfm/futc-sup.tfm
2005/12/19 | 3896 | fonts/fourier-GUT/tfm/futmib.tfm
2005/12/19 | 4256 | fonts/fourier-GUT/tfm/futmiib.tfm
2005/12/19 | 4268 | fonts/fourier-GUT/tfm/futmii.tfm
2005/12/19 | 3908 | fonts/fourier-GUT/tfm/futmi.tfm
-2004/03/04 | 13968 | fonts/fourier-GUT/tfm/fut-oldlatin-it.tfm
-2004/03/04 | 14256 | fonts/fourier-GUT/tfm/fut-oldlatin.tfm
2005/12/19 | 1388 | fonts/fourier-GUT/tfm/futr8c.tfm
2005/12/19 | 1624 | fonts/fourier-GUT/tfm/futr8r.tfm
2005/12/19 | 16984 | fonts/fourier-GUT/tfm/futr8t.tfm
@@ -43327,8 +43321,8 @@
2005/12/19 | 1616 | fonts/fourier-GUT/tfm/futro9c.tfm
2005/12/19 | 17264 | fonts/fourier-GUT/tfm/futro9d.tfm
2005/12/19 | 17140 | fonts/fourier-GUT/tfm/futro9e.tfm
-2019/11/16 | 692 | fonts/fourier-GUT/tfm/futroorn.tfm
-2019/11/16 | 688 | fonts/fourier-GUT/tfm/futrorn.tfm
+2021/11/24 | 628 | fonts/fourier-GUT/tfm/futroorn.tfm
+2021/11/24 | 624 | fonts/fourier-GUT/tfm/futrorn.tfm
2005/12/19 | 604 | fonts/fourier-GUT/tfm/futr-sup.tfm
2005/12/19 | 1652 | fonts/fourier-GUT/tfm/futs8r.tfm
2005/12/19 | 1448 | fonts/fourier-GUT/tfm/futs8x.tfm
@@ -43352,8 +43346,8 @@
2005/12/19 | 1656 | fonts/fourier-GUT/tfm/futso9c.tfm
2005/12/19 | 17160 | fonts/fourier-GUT/tfm/futso9d.tfm
2005/12/19 | 17036 | fonts/fourier-GUT/tfm/futso9e.tfm
-2019/11/16 | 692 | fonts/fourier-GUT/tfm/futsoorn.tfm
-2019/11/16 | 688 | fonts/fourier-GUT/tfm/futsorn.tfm
+2021/11/24 | 628 | fonts/fourier-GUT/tfm/futsoorn.tfm
+2021/11/24 | 624 | fonts/fourier-GUT/tfm/futsorn.tfm
2005/12/19 | 604 | fonts/fourier-GUT/tfm/futs-sup.tfm
2005/12/19 | 2072 | fonts/fourier-GUT/tfm/futsy.tfm
2005/12/19 | 1460 | fonts/fourier-GUT/tfm/putb8a.tfm
@@ -43391,7 +43385,7 @@
2004/10/30 | 13137 | fonts/fourier-GUT/type1/fourier-mlit.pfb
2004/10/30 | 14981 | fonts/fourier-GUT/type1/fourier-ml.pfb
2005/01/07 | 22238 | fonts/fourier-GUT/type1/fourier-ms.pfb
-2019/11/17 | 15813 | fonts/fourier-GUT/type1/fourier-orns.pfb
+2021/11/24 | 16008 | fonts/fourier-GUT/type1/fourier-orns.pfb
2005/12/19 | 3436 | fonts/fourier-GUT/vf/futb8c.vf
2005/12/19 | 2168 | fonts/fourier-GUT/vf/futb8t.vf
2005/12/19 | 2852 | fonts/fourier-GUT/vf/futb9c.vf
@@ -43409,13 +43403,13 @@
2005/12/19 | 2888 | fonts/fourier-GUT/vf/futbo9c.vf
2005/12/19 | 2200 | fonts/fourier-GUT/vf/futbo9d.vf
2005/12/19 | 2188 | fonts/fourier-GUT/vf/futbo9e.vf
-2019/11/16 | 300 | fonts/fourier-GUT/vf/futboorn.vf
-2019/11/16 | 296 | fonts/fourier-GUT/vf/futborn.vf
+2021/11/24 | 340 | fonts/fourier-GUT/vf/futboorn.vf
+2021/11/24 | 336 | fonts/fourier-GUT/vf/futborn.vf
2005/12/19 | 212 | fonts/fourier-GUT/vf/futb-sup.vf
2005/12/19 | 2852 | fonts/fourier-GUT/vf/futc9c.vf
2005/12/19 | 2208 | fonts/fourier-GUT/vf/futc9d.vf
2005/12/19 | 2196 | fonts/fourier-GUT/vf/futc9e.vf
-2019/11/16 | 296 | fonts/fourier-GUT/vf/futcorn.vf
+2021/11/24 | 340 | fonts/fourier-GUT/vf/futcorn.vf
2005/12/19 | 212 | fonts/fourier-GUT/vf/futc-sup.vf
2005/12/19 | 1164 | fonts/fourier-GUT/vf/futmib.vf
2005/12/19 | 1336 | fonts/fourier-GUT/vf/futmiib.vf
@@ -43444,8 +43438,8 @@
2005/12/19 | 2884 | fonts/fourier-GUT/vf/futro9c.vf
2005/12/19 | 2200 | fonts/fourier-GUT/vf/futro9d.vf
2005/12/19 | 2192 | fonts/fourier-GUT/vf/futro9e.vf
-2019/11/16 | 296 | fonts/fourier-GUT/vf/futroorn.vf
-2019/11/16 | 292 | fonts/fourier-GUT/vf/futrorn.vf
+2021/11/24 | 336 | fonts/fourier-GUT/vf/futroorn.vf
+2021/11/24 | 332 | fonts/fourier-GUT/vf/futrorn.vf
2005/12/19 | 212 | fonts/fourier-GUT/vf/futr-sup.vf
2005/12/19 | 2852 | fonts/fourier-GUT/vf/futs9c.vf
2005/12/19 | 2204 | fonts/fourier-GUT/vf/futs9d.vf
@@ -43462,11 +43456,11 @@
2005/12/19 | 2888 | fonts/fourier-GUT/vf/futso9c.vf
2005/12/19 | 2208 | fonts/fourier-GUT/vf/futso9d.vf
2005/12/19 | 2200 | fonts/fourier-GUT/vf/futso9e.vf
-2019/11/16 | 300 | fonts/fourier-GUT/vf/futsoorn.vf
-2019/11/16 | 296 | fonts/fourier-GUT/vf/futsorn.vf
+2021/11/24 | 340 | fonts/fourier-GUT/vf/futsoorn.vf
+2021/11/24 | 336 | fonts/fourier-GUT/vf/futsorn.vf
2005/12/19 | 212 | fonts/fourier-GUT/vf/futs-sup.vf
2005/12/19 | 1244 | fonts/fourier-GUT/vf/futsy.vf
-2020/03/03 | 933352 | fonts/fourier-GUT.zip
+2022/02/07 | 945355 | fonts/fourier-GUT.zip
2007/04/26 | 1618 | fonts/fouriernc/afm/fourier-mcl.afm
2007/04/26 | 3489 | fonts/fouriernc/afm/fourier-ml.afm
2007/04/26 | 3503 | fonts/fouriernc/afm/fourier-mlb.afm
@@ -151266,6 +151260,12 @@
2007/12/12 | 970 | graphics/metapost/contrib/macros/bpolynomial/README
2007/11/30 | 102 | graphics/metapost/contrib/macros/bpolynomial/TODO
2007/12/12 | 205531 | graphics/metapost/contrib/macros/bpolynomial.zip
+2022/02/07 | 156788 | graphics/metapost/contrib/macros/byrne/byrne-latex.pdf
+2022/02/07 | 50955 | graphics/metapost/contrib/macros/byrne/byrne-latex.tex
+2022/02/01 | 147525 | graphics/metapost/contrib/macros/byrne/byrne.mp
+2022/02/01 | 10646 | graphics/metapost/contrib/macros/byrne/byrne.sty
+2022/02/05 | 682 | graphics/metapost/contrib/macros/byrne/README
+2022/02/07 | 192262 | graphics/metapost/contrib/macros/byrne.zip
2006/12/18 | 2996 | graphics/metapost/contrib/macros/cmarrows/cmarrows.mp
2006/12/19 | 52267 | graphics/metapost/contrib/macros/cmarrows/cmarrows.pdf
2006/12/18 | 830 | graphics/metapost/contrib/macros/cmarrows/README
@@ -152227,11 +152227,11 @@
2014/09/04 | 14712 | graphics/metapost/contrib/macros/featpost/png/xraycamera.1.png
2014/10/01 | 1325 | graphics/metapost/contrib/macros/featpost/README
2014/10/09 | 20159865 | graphics/metapost/contrib/macros/featpost.zip
-2019/03/08 | 90920 | graphics/metapost/contrib/macros/fiziko/fiziko.mp
-2019/03/08 | 4559755 | graphics/metapost/contrib/macros/fiziko/fiziko.pdf
-2019/03/08 | 31855 | graphics/metapost/contrib/macros/fiziko/fiziko.tex
-2019/03/08 | 666 | graphics/metapost/contrib/macros/fiziko/README
-2019/03/08 | 4533298 | graphics/metapost/contrib/macros/fiziko.zip
+2022/02/07 | 102988 | graphics/metapost/contrib/macros/fiziko/fiziko.mp
+2022/02/07 | 5338496 | graphics/metapost/contrib/macros/fiziko/fiziko.pdf
+2022/02/07 | 34221 | graphics/metapost/contrib/macros/fiziko/fiziko.tex
+2022/02/07 | 666 | graphics/metapost/contrib/macros/fiziko/README
+2022/02/07 | 5335494 | graphics/metapost/contrib/macros/fiziko.zip
2009/08/10 | 238 | graphics/metapost/contrib/macros/garrigues/article.txt
2009/08/10 | 34975 | graphics/metapost/contrib/macros/garrigues/garrigues.mp
2009/08/11 | 279 | graphics/metapost/contrib/macros/garrigues/README
@@ -160688,7 +160688,7 @@
2021/11/21 | 2311 | indexing/upmendex/source/var.h
2021/11/21 | 98 | indexing/upmendex/source/version.h
2021/11/21 | 473691 | indexing/upmendex.zip
-2022/01/22 | 2532 | indexing/xindex/CHANGELOG
+2022/02/07 | 2574 | indexing/xindex/CHANGELOG
2021/07/06 | 1231 | indexing/xindex/doc/Makefile
2021/07/06 | 32092 | indexing/xindex/doc/tests/buch.idx
2022/01/22 | 15380 | indexing/xindex/doc/tests/buch.ind
@@ -160727,8 +160727,8 @@
2022/01/22 | 630 | indexing/xindex/doc/tests/Umlaute.ind
2022/01/22 | 15194 | indexing/xindex/doc/tests/Umlaute.pdf
2021/07/06 | 485 | indexing/xindex/doc/tests/Umlaute.tex
-2022/01/22 | 412603 | indexing/xindex/doc/xindex-doc.pdf
-2022/01/22 | 53954 | indexing/xindex/doc/xindex-doc.tex
+2022/02/07 | 412615 | indexing/xindex/doc/xindex-doc.pdf
+2022/02/07 | 53954 | indexing/xindex/doc/xindex-doc.tex
2019/03/06 | 2247 | indexing/xindex/latex/xindex.sty
2022/01/22 | 2734 | indexing/xindex/lualatex/xindex-AU.lua
2022/01/22 | 3897 | indexing/xindex/lualatex/xindex-baselib.lua
@@ -160736,6 +160736,7 @@
2022/01/22 | 2999 | indexing/xindex/lualatex/xindex-cfg-common.lua
2022/01/22 | 2699 | indexing/xindex/lualatex/xindex-cfg.lua
2022/01/22 | 2385 | indexing/xindex/lualatex/xindex-cfg-uca.lua
+2022/02/07 | 2716 | indexing/xindex/lualatex/xindex-danteedition.lua
2022/01/22 | 2767 | indexing/xindex/lualatex/xindex-DIN2.lua
2022/01/22 | 4835 | indexing/xindex/lualatex/xindex-dtk.lua
2022/01/22 | 11085 | indexing/xindex/lualatex/xindex-HAdW-eKO.lua
@@ -160746,8 +160747,8 @@
2022/01/22 | 80454 | indexing/xindex/lualatex/xindex-unicode.lua
2022/01/22 | 7821 | indexing/xindex/lualatex/xindex-yannis.lua
2021/08/15 | 1283 | indexing/xindex/README.md
-2022/01/22 | 7765 | indexing/xindex/scripts/xindex.lua
-2022/01/22 | 582095 | indexing/xindex.zip
+2022/02/07 | 8001 | indexing/xindex/scripts/xindex.lua
+2022/02/07 | 583510 | indexing/xindex.zip
2010/05/11 | 498024 | indexing/xindy/base/xindy-2.4.tar.gz
2014/04/20 | 599578 | indexing/xindy/base/xindy-2.5.0.tar.gz
2014/09/15 | 517641 | indexing/xindy/base/xindy-2.5.1.tar.gz
@@ -184887,7 +184888,7 @@
2019/12/19 | 302191 | install/macros/latex/contrib/kvdefinekeys.tds.zip
2020/10/09 | 503116 | install/macros/latex/contrib/kvoptions.tds.zip
2019/12/15 | 385518 | install/macros/latex/contrib/kvsetkeys.tds.zip
-2022/01/12 | 935875 | install/macros/latex/contrib/l3backend.tds.zip
+2022/02/07 | 936231 | install/macros/latex/contrib/l3backend.tds.zip
2021/12/14 | 815616 | install/macros/latex/contrib/l3build.tds.zip
2022/02/05 | 4460553 | install/macros/latex/contrib/l3experimental.tds.zip
2022/02/05 | 13649809 | install/macros/latex/contrib/l3kernel.tds.zip
@@ -184912,7 +184913,7 @@
2019/11/29 | 336437 | install/macros/latex/contrib/magicnum.tds.zip
2009/09/03 | 125014 | install/macros/latex/contrib/makecmds.tds.zip
2018/08/09 | 330020 | install/macros/latex/contrib/marginnote.tds.zip
-2022/02/02 | 1194141 | install/macros/latex/contrib/mathtools.tds.zip
+2022/02/07 | 1194169 | install/macros/latex/contrib/mathtools.tds.zip
2014/06/19 | 690439 | install/macros/latex/contrib/matlab-prettifier.tds.zip
2010/03/26 | 732372 | install/macros/latex/contrib/mattens.tds.zip
2013/07/01 | 1898068 | install/macros/latex/contrib/mdframed.tds.zip
@@ -184988,7 +184989,7 @@
2012/09/24 | 130991 | install/macros/latex/contrib/scrjrnl.tds.zip
2021/11/10 | 657160 | install/macros/latex/contrib/sdaps.tds.zip
2019/12/10 | 544332 | install/macros/latex/contrib/selinput.tds.zip
-2022/02/03 | 1462892 | install/macros/latex/contrib/siunitx.tds.zip
+2022/02/07 | 1463664 | install/macros/latex/contrib/siunitx.tds.zip
2019/10/15 | 315856 | install/macros/latex/contrib/skmath.tds.zip
2019/10/16 | 345652 | install/macros/latex/contrib/skrapport.tds.zip
2019/12/15 | 357584 | install/macros/latex/contrib/soulutf8.tds.zip
@@ -185046,7 +185047,7 @@
2012/05/03 | 352839 | install/macros/latex/contrib/ydoc.tds.zip
2020/04/09 | 806385 | install/macros/latex/contrib/zhlipsum.tds.zip
2020/05/01 | 293478 | install/macros/latex/contrib/zhnumber.tds.zip
-2022/01/28 | 1542110 | install/macros/latex/contrib/zref-clever.tds.zip
+2022/02/07 | 1615902 | install/macros/latex/contrib/zref-clever.tds.zip
2020/10/09 | 728226 | install/macros/latex/contrib/zref.tds.zip
2022/02/04 | 36734965 | install/macros/latex-dev/latex-base-dev.tds.zip
2022/01/12 | 2792859 | install/macros/latex-dev/required/latex-amsmath-dev.tds.zip
@@ -207260,11 +207261,11 @@
2010/03/30 | 977 | macros/latex/contrib/codedoc/README
2010/03/30 | 418487 | macros/latex/contrib/codedoc.zip
2021/05/12 | 4186 | macros/latex/contrib/codehigh/codehigh.lua
-2021/05/12 | 104400 | macros/latex/contrib/codehigh/codehigh.pdf
-2021/05/12 | 16995 | macros/latex/contrib/codehigh/codehigh.sty
-2021/05/12 | 5770 | macros/latex/contrib/codehigh/codehigh.tex
-2021/05/11 | 186 | macros/latex/contrib/codehigh/README
-2021/05/12 | 91316 | macros/latex/contrib/codehigh.zip
+2022/02/07 | 115099 | macros/latex/contrib/codehigh/codehigh.pdf
+2022/02/07 | 18326 | macros/latex/contrib/codehigh/codehigh.sty
+2022/02/07 | 5984 | macros/latex/contrib/codehigh/codehigh.tex
+2021/05/11 | 186 | macros/latex/contrib/codehigh/README.txt
+2022/02/07 | 96736 | macros/latex/contrib/codehigh.zip
1995/01/02 | 2383 | macros/latex/contrib/codepage/codepage.drv
1995/01/02 | 131252 | macros/latex/contrib/codepage/codepage.dtx
1995/01/02 | 953 | macros/latex/contrib/codepage/codepage.ins
@@ -215941,20 +215942,20 @@
2019/12/15 | 374946 | macros/latex/contrib/kvsetkeys/kvsetkeys.pdf
2019/12/15 | 325 | macros/latex/contrib/kvsetkeys/README.md
2019/12/17 | 380042 | macros/latex/contrib/kvsetkeys.zip
-2022/01/12 | 6596 | macros/latex/contrib/l3backend/CHANGELOG.md
-2022/01/12 | 16824 | macros/latex/contrib/l3backend/l3backend-basics.dtx
-2022/01/12 | 14431 | macros/latex/contrib/l3backend/l3backend-box.dtx
-2022/01/12 | 896473 | macros/latex/contrib/l3backend/l3backend-code.pdf
-2022/01/12 | 1331 | macros/latex/contrib/l3backend/l3backend-code.tex
-2022/01/12 | 43912 | macros/latex/contrib/l3backend/l3backend-color.dtx
-2022/01/12 | 34288 | macros/latex/contrib/l3backend/l3backend-draw.dtx
-2022/01/12 | 20960 | macros/latex/contrib/l3backend/l3backend-graphics.dtx
-2022/01/12 | 14669 | macros/latex/contrib/l3backend/l3backend-header.dtx
-2022/01/12 | 4265 | macros/latex/contrib/l3backend/l3backend.ins
-2022/01/12 | 9171 | macros/latex/contrib/l3backend/l3backend-opacity.dtx
-2022/01/12 | 49097 | macros/latex/contrib/l3backend/l3backend-pdf.dtx
-2022/01/12 | 549 | macros/latex/contrib/l3backend/README.md
-2022/01/12 | 899064 | macros/latex/contrib/l3backend.zip
+2022/02/07 | 6759 | macros/latex/contrib/l3backend/CHANGELOG.md
+2022/02/07 | 16824 | macros/latex/contrib/l3backend/l3backend-basics.dtx
+2022/02/07 | 14431 | macros/latex/contrib/l3backend/l3backend-box.dtx
+2022/02/07 | 896928 | macros/latex/contrib/l3backend/l3backend-code.pdf
+2022/02/07 | 1331 | macros/latex/contrib/l3backend/l3backend-code.tex
+2022/02/07 | 43969 | macros/latex/contrib/l3backend/l3backend-color.dtx
+2022/02/07 | 34288 | macros/latex/contrib/l3backend/l3backend-draw.dtx
+2022/02/07 | 20960 | macros/latex/contrib/l3backend/l3backend-graphics.dtx
+2022/02/07 | 14669 | macros/latex/contrib/l3backend/l3backend-header.dtx
+2022/02/07 | 4265 | macros/latex/contrib/l3backend/l3backend.ins
+2022/02/07 | 9171 | macros/latex/contrib/l3backend/l3backend-opacity.dtx
+2022/02/07 | 49097 | macros/latex/contrib/l3backend/l3backend-pdf.dtx
+2022/02/07 | 549 | macros/latex/contrib/l3backend/README.md
+2022/02/07 | 899412 | macros/latex/contrib/l3backend.zip
2021/12/14 | 16388 | macros/latex/contrib/l3build/CHANGELOG.md
2021/12/14 | 2338 | macros/latex/contrib/l3build/CONTRIBUTING.md
2021/12/14 | 1816 | macros/latex/contrib/l3build/l3build.1
@@ -217398,17 +217399,17 @@
2018/02/27 | 790 | macros/latex/contrib/mathpunctspace/README.md
2018/02/27 | 4374 | macros/latex/contrib/mathpunctspace/tex/mathpunctspace.sty
2018/02/27 | 422799 | macros/latex/contrib/mathpunctspace.zip
-2022/02/02 | 163886 | macros/latex/contrib/mathtools/empheq.dtx
-2022/02/02 | 2795 | macros/latex/contrib/mathtools/empheq.ins
-2022/02/02 | 329716 | macros/latex/contrib/mathtools/empheq.pdf
-2022/02/02 | 241033 | macros/latex/contrib/mathtools/mathtools.dtx
-2022/02/02 | 2864 | macros/latex/contrib/mathtools/mathtools.ins
-2022/02/02 | 498903 | macros/latex/contrib/mathtools/mathtools.pdf
-2022/02/02 | 21784 | macros/latex/contrib/mathtools/mhsetup.dtx
-2022/02/02 | 2943 | macros/latex/contrib/mathtools/mhsetup.ins
-2022/02/02 | 255014 | macros/latex/contrib/mathtools/mhsetup.pdf
-2022/02/02 | 1674 | macros/latex/contrib/mathtools/README.md
-2022/02/02 | 1169208 | macros/latex/contrib/mathtools.zip
+2022/02/07 | 163886 | macros/latex/contrib/mathtools/empheq.dtx
+2022/02/07 | 2795 | macros/latex/contrib/mathtools/empheq.ins
+2022/02/07 | 329716 | macros/latex/contrib/mathtools/empheq.pdf
+2022/02/07 | 241035 | macros/latex/contrib/mathtools/mathtools.dtx
+2022/02/07 | 2864 | macros/latex/contrib/mathtools/mathtools.ins
+2022/02/07 | 498910 | macros/latex/contrib/mathtools/mathtools.pdf
+2022/02/07 | 21784 | macros/latex/contrib/mathtools/mhsetup.dtx
+2022/02/07 | 2943 | macros/latex/contrib/mathtools/mhsetup.ins
+2022/02/07 | 255014 | macros/latex/contrib/mathtools/mhsetup.pdf
+2022/02/07 | 1674 | macros/latex/contrib/mathtools/README.md
+2022/02/07 | 1169225 | macros/latex/contrib/mathtools.zip
2014/06/19 | 1111 | macros/latex/contrib/matlab-prettifier/makefile
2014/06/19 | 89705 | macros/latex/contrib/matlab-prettifier/matlab-prettifier.dtx
2014/06/19 | 2190 | macros/latex/contrib/matlab-prettifier/matlab-prettifier.ins
@@ -221800,13 +221801,13 @@
2021/12/16 | 2832 | macros/latex/contrib/projlib/ProjLib.ins
2021/12/16 | 4348 | macros/latex/contrib/projlib/README.md
2021/12/16 | 772758 | macros/latex/contrib/projlib.zip
-2022/02/01 | 121558 | macros/latex/contrib/proof-at-the-end/proof-at-the-end_demo.pdf
-2022/02/01 | 9998 | macros/latex/contrib/proof-at-the-end/proof-at-the-end_demo.tex
-2022/02/01 | 73600 | macros/latex/contrib/proof-at-the-end/proof-at-the-end.dtx
-2022/02/01 | 960 | macros/latex/contrib/proof-at-the-end/proof-at-the-end.ins
-2022/02/01 | 315974 | macros/latex/contrib/proof-at-the-end/proof-at-the-end.pdf
-2022/02/01 | 31381 | macros/latex/contrib/proof-at-the-end/README.md
-2022/02/01 | 461774 | macros/latex/contrib/proof-at-the-end.zip
+2022/02/07 | 121559 | macros/latex/contrib/proof-at-the-end/proof-at-the-end_demo.pdf
+2022/02/07 | 10484 | macros/latex/contrib/proof-at-the-end/proof-at-the-end_demo.tex
+2022/02/07 | 84168 | macros/latex/contrib/proof-at-the-end/proof-at-the-end.dtx
+2022/02/07 | 960 | macros/latex/contrib/proof-at-the-end/proof-at-the-end.ins
+2022/02/07 | 321713 | macros/latex/contrib/proof-at-the-end/proof-at-the-end.pdf
+2022/02/07 | 36137 | macros/latex/contrib/proof-at-the-end/README.md
+2022/02/07 | 471683 | macros/latex/contrib/proof-at-the-end.zip
2019/04/25 | 32432 | macros/latex/contrib/proofread/example.pdf
2019/04/25 | 6572 | macros/latex/contrib/proofread/example.tex
2019/04/25 | 18943 | macros/latex/contrib/proofread/proofread.dtx
@@ -224366,33 +224367,33 @@
2007/12/02 | 2971 | macros/latex/contrib/SIunits/SIunits.ins
2007/12/02 | 328621 | macros/latex/contrib/SIunits/SIunits.pdf
2007/12/02 | 296391 | macros/latex/contrib/SIunits.zip
-2022/02/03 | 64333 | macros/latex/contrib/siunitx/CHANGELOG.md
-2022/02/03 | 996 | macros/latex/contrib/siunitx/README.md
-2022/02/03 | 10106 | macros/latex/contrib/siunitx/siunitx-abbreviation.dtx
-2022/02/03 | 4748 | macros/latex/contrib/siunitx/siunitx-abbreviations.cfg
-2022/02/03 | 16709 | macros/latex/contrib/siunitx/siunitx-angle.dtx
-2022/02/03 | 1729 | macros/latex/contrib/siunitx/siunitx-binary.cfg
-2022/02/03 | 2883 | macros/latex/contrib/siunitx/siunitx-binary.dtx
-2022/02/03 | 607726 | macros/latex/contrib/siunitx/siunitx-code.pdf
-2022/02/03 | 2492 | macros/latex/contrib/siunitx/siunitx-code.tex
-2022/02/03 | 8798 | macros/latex/contrib/siunitx/siunitx-command.dtx
-2022/02/03 | 25985 | macros/latex/contrib/siunitx/siunitx-complex.dtx
-2022/02/03 | 33799 | macros/latex/contrib/siunitx/siunitx-compound.dtx
-2022/02/03 | 19900 | macros/latex/contrib/siunitx/siunitx.dtx
-2022/02/03 | 31668 | macros/latex/contrib/siunitx/siunitx-emulation.dtx
-2022/02/03 | 3687 | macros/latex/contrib/siunitx/siunitx.ins
-2022/02/03 | 5029 | macros/latex/contrib/siunitx/siunitx-locale.dtx
-2022/02/03 | 121890 | macros/latex/contrib/siunitx/siunitx-number.dtx
-2022/02/03 | 639466 | macros/latex/contrib/siunitx/siunitx.pdf
-2022/02/03 | 34421 | macros/latex/contrib/siunitx/siunitx-print.dtx
-2022/02/03 | 15317 | macros/latex/contrib/siunitx/siunitx-quantity.dtx
-2022/02/03 | 9759 | macros/latex/contrib/siunitx/siunitx-symbol.dtx
-2022/02/03 | 50881 | macros/latex/contrib/siunitx/siunitx-table.dtx
-2022/02/03 | 148539 | macros/latex/contrib/siunitx/siunitx.tex
-2022/02/03 | 98548 | macros/latex/contrib/siunitx/siunitx-unit.dtx
-2022/02/03 | 273398 | macros/latex/contrib/siunitx/siunitx-v2.sty
-2022/02/03 | 31738 | macros/latex/contrib/siunitx/siunitx-version-1.cfg
-2022/02/04 | 1422571 | macros/latex/contrib/siunitx.zip
+2022/02/07 | 64588 | macros/latex/contrib/siunitx/CHANGELOG.md
+2022/02/07 | 996 | macros/latex/contrib/siunitx/README.md
+2022/02/07 | 10106 | macros/latex/contrib/siunitx/siunitx-abbreviation.dtx
+2022/02/07 | 4748 | macros/latex/contrib/siunitx/siunitx-abbreviations.cfg
+2022/02/07 | 16709 | macros/latex/contrib/siunitx/siunitx-angle.dtx
+2022/02/07 | 1729 | macros/latex/contrib/siunitx/siunitx-binary.cfg
+2022/02/07 | 2883 | macros/latex/contrib/siunitx/siunitx-binary.dtx
+2022/02/07 | 607830 | macros/latex/contrib/siunitx/siunitx-code.pdf
+2022/02/07 | 2492 | macros/latex/contrib/siunitx/siunitx-code.tex
+2022/02/07 | 8798 | macros/latex/contrib/siunitx/siunitx-command.dtx
+2022/02/07 | 25985 | macros/latex/contrib/siunitx/siunitx-complex.dtx
+2022/02/07 | 33799 | macros/latex/contrib/siunitx/siunitx-compound.dtx
+2022/02/07 | 19900 | macros/latex/contrib/siunitx/siunitx.dtx
+2022/02/07 | 31668 | macros/latex/contrib/siunitx/siunitx-emulation.dtx
+2022/02/07 | 3687 | macros/latex/contrib/siunitx/siunitx.ins
+2022/02/07 | 5259 | macros/latex/contrib/siunitx/siunitx-locale.dtx
+2022/02/07 | 121890 | macros/latex/contrib/siunitx/siunitx-number.dtx
+2022/02/07 | 639784 | macros/latex/contrib/siunitx/siunitx.pdf
+2022/02/07 | 34543 | macros/latex/contrib/siunitx/siunitx-print.dtx
+2022/02/07 | 15317 | macros/latex/contrib/siunitx/siunitx-quantity.dtx
+2022/02/07 | 9759 | macros/latex/contrib/siunitx/siunitx-symbol.dtx
+2022/02/07 | 50881 | macros/latex/contrib/siunitx/siunitx-table.dtx
+2022/02/07 | 148643 | macros/latex/contrib/siunitx/siunitx.tex
+2022/02/07 | 98548 | macros/latex/contrib/siunitx/siunitx-unit.dtx
+2022/02/07 | 273398 | macros/latex/contrib/siunitx/siunitx-v2.sty
+2022/02/07 | 31738 | macros/latex/contrib/siunitx/siunitx-version-1.cfg
+2022/02/07 | 1423316 | macros/latex/contrib/siunitx.zip
2011/06/03 | 662398 | macros/latex/contrib/skb/doc/skb.pdf
2011/03/15 | 1485 | macros/latex/contrib/skb/doc/user-guide/database/acronyms.tex
2011/03/15 | 722 | macros/latex/contrib/skb/doc/user-guide/database/bibliography.tex
@@ -227354,7 +227355,7 @@
2021/12/17 | 5148 | macros/latex/contrib/tkz/tkz-base/doc/latex/TKZdoc-base-grid.tex
2021/12/12 | 8845 | macros/latex/contrib/tkz/tkz-base/doc/latex/TKZdoc-base-initialisation.tex
2021/12/12 | 799 | macros/latex/contrib/tkz/tkz-base/doc/latex/TKZdoc-base-installation.tex
-2022/01/25 | 6542 | macros/latex/contrib/tkz/tkz-base/doc/latex/TKZdoc-base-main.tex
+2022/02/07 | 6541 | macros/latex/contrib/tkz/tkz-base/doc/latex/TKZdoc-base-main.tex
2021/12/12 | 5859 | macros/latex/contrib/tkz/tkz-base/doc/latex/TKZdoc-base-marks.tex
2022/01/05 | 2119 | macros/latex/contrib/tkz/tkz-base/doc/latex/TKZdoc-base-news.tex
2020/03/02 | 267 | macros/latex/contrib/tkz/tkz-base/doc/latex/TKZdoc-base-obj.tex
@@ -227362,28 +227363,27 @@
2020/03/19 | 1971 | macros/latex/contrib/tkz/tkz-base/doc/latex/TKZdoc-base-rep.tex
2020/03/18 | 2223 | macros/latex/contrib/tkz/tkz-base/doc/latex/TKZdoc-base-style.tex
2020/03/20 | 4271 | macros/latex/contrib/tkz/tkz-base/doc/latex/TKZdoc-base-texte.tex
-2022/01/25 | 366644 | macros/latex/contrib/tkz/tkz-base/doc/tkz-base.pdf
-2022/01/25 | 9080 | macros/latex/contrib/tkz/tkz-base/latex/tkz-base.cfg
-2022/01/25 | 3532 | macros/latex/contrib/tkz/tkz-base/latex/tkz-base.sty
-2022/01/25 | 4368 | macros/latex/contrib/tkz/tkz-base/latex/tkz-lib-marks.tex
-2022/01/25 | 1997 | macros/latex/contrib/tkz/tkz-base/latex/tkz-lib-shape.tex
-2022/01/25 | 6744 | macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-axesmin.tex
-2022/01/25 | 18250 | macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-axes.tex
-2022/01/25 | 3468 | macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-grids.tex
-2022/01/25 | 4906 | macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-marks.tex
-2022/01/25 | 13203 | macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-points.tex
-2022/01/25 | 2725 | macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-rep.tex
-2022/01/25 | 6482 | macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-arith.tex
-2022/01/25 | 3476 | macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-base.tex
-2022/01/25 | 1217 | macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-BB.tex
-2022/01/25 | 2252 | macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-colors.tex
-2022/01/25 | 3484 | macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-misc.tex
-2022/01/25 | 2744 | macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-modules.tex
-2022/01/25 | 2705 | macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-print.tex
-2022/01/25 | 2971 | macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-text.tex
-2022/01/25 | 5672 | macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-utilities.tex
-2022/01/25 | 2597 | macros/latex/contrib/tkz/tkz-base/README.md
-2022/01/25 | 448964 | macros/latex/contrib/tkz/tkz-base.zip
+2022/02/07 | 368069 | macros/latex/contrib/tkz/tkz-base/doc/tkz-base.pdf
+2022/02/07 | 9082 | macros/latex/contrib/tkz/tkz-base/latex/tkz-base.cfg
+2022/02/07 | 3554 | macros/latex/contrib/tkz/tkz-base/latex/tkz-base.sty
+2022/02/07 | 4370 | macros/latex/contrib/tkz/tkz-base/latex/tkz-lib-marks.tex
+2022/02/07 | 1999 | macros/latex/contrib/tkz/tkz-base/latex/tkz-lib-shape.tex
+2022/02/07 | 18252 | macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-axes.tex
+2022/02/07 | 3470 | macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-grids.tex
+2022/02/07 | 4908 | macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-marks.tex
+2022/02/07 | 13205 | macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-points.tex
+2022/02/07 | 2726 | macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-rep.tex
+2022/02/07 | 6484 | macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-arith.tex
+2022/02/07 | 3478 | macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-base.tex
+2022/02/07 | 1219 | macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-BB.tex
+2022/02/07 | 2254 | macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-colors.tex
+2022/02/07 | 3486 | macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-misc.tex
+2022/02/07 | 2746 | macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-modules.tex
+2022/02/07 | 2707 | macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-print.tex
+2022/02/07 | 2973 | macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-text.tex
+2022/02/07 | 5674 | macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-utilities.tex
+2022/02/07 | 2710 | macros/latex/contrib/tkz/tkz-base/README.md
+2022/02/07 | 448633 | macros/latex/contrib/tkz/tkz-base.zip
2021/01/18 | 20634 | macros/latex/contrib/tkz/tkz-berge/doc/latex/TKZdoc-berge-classic.tex
2021/01/18 | 12925 | macros/latex/contrib/tkz/tkz-berge/doc/latex/TKZdoc-berge-macros-e.tex
2021/01/18 | 8992 | macros/latex/contrib/tkz/tkz-berge/doc/latex/TKZdoc-berge-macros.tex
@@ -234143,17 +234143,17 @@
2021/12/20 | 2573 | macros/latex/contrib/zref-check/zref-check.ins
2021/12/20 | 456837 | macros/latex/contrib/zref-check/zref-check.pdf
2021/12/20 | 2492 | macros/latex/contrib/zref-check/zref-check.tex
-2022/01/28 | 2339 | macros/latex/contrib/zref-clever/CHANGELOG.md
-2022/01/28 | 70 | macros/latex/contrib/zref-clever/DEPENDS.txt
-2022/01/28 | 14300 | macros/latex/contrib/zref-clever/MANIFEST.md
-2022/01/28 | 824 | macros/latex/contrib/zref-clever/README.md
-2022/01/28 | 1509701 | macros/latex/contrib/zref-clever.zip
-2022/01/28 | 1175713 | macros/latex/contrib/zref-clever/zref-clever-code.pdf
-2022/01/28 | 1486 | macros/latex/contrib/zref-clever/zref-clever-code.tex
-2022/01/28 | 290639 | macros/latex/contrib/zref-clever/zref-clever.dtx
-2022/01/28 | 3082 | macros/latex/contrib/zref-clever/zref-clever.ins
-2022/01/28 | 310423 | macros/latex/contrib/zref-clever/zref-clever.pdf
-2022/01/28 | 117090 | macros/latex/contrib/zref-clever/zref-clever.tex
+2022/02/07 | 2744 | macros/latex/contrib/zref-clever/CHANGELOG.md
+2022/02/07 | 70 | macros/latex/contrib/zref-clever/DEPENDS.txt
+2022/02/07 | 15228 | macros/latex/contrib/zref-clever/MANIFEST.md
+2022/02/07 | 824 | macros/latex/contrib/zref-clever/README.md
+2022/02/07 | 1580713 | macros/latex/contrib/zref-clever.zip
+2022/02/07 | 1248656 | macros/latex/contrib/zref-clever/zref-clever-code.pdf
+2022/02/07 | 1486 | macros/latex/contrib/zref-clever/zref-clever-code.tex
+2022/02/07 | 333678 | macros/latex/contrib/zref-clever/zref-clever.dtx
+2022/02/07 | 3082 | macros/latex/contrib/zref-clever/zref-clever.ins
+2022/02/07 | 312992 | macros/latex/contrib/zref-clever/zref-clever.pdf
+2022/02/07 | 118072 | macros/latex/contrib/zref-clever/zref-clever.tex
2020/10/09 | 581 | macros/latex/contrib/zref/README.md
2022/02/01 | 387 | macros/latex/contrib/zref-vario/CHANGELOG.md
2022/02/01 | 31 | macros/latex/contrib/zref-vario/DEPENDS.txt
@@ -235371,114 +235371,114 @@
2015/10/04 | 263467 | macros/luatex/generic/luatexbase/luatexbase.pdf
2015/10/04 | 450 | macros/luatex/generic/luatexbase/README.md
2015/10/04 | 270547 | macros/luatex/generic/luatexbase.zip
-2022/01/03 | 1536 | macros/luatex/generic/luatexja/COPYING
-2022/01/03 | 945 | macros/luatex/generic/luatexja/doc/jfm-testf.lua
-2022/01/03 | 3238 | macros/luatex/generic/luatexja/doc/jfm-test.lua
-2022/01/03 | 4452 | macros/luatex/generic/luatexja/doc/jfm-ujisc33.lua
-2022/01/03 | 166557 | macros/luatex/generic/luatexja/doc/lltjp-geometry.pdf
-2022/01/03 | 13726 | macros/luatex/generic/luatexja/doc/lltjp-geometry.tex
-2022/01/03 | 400068 | macros/luatex/generic/luatexja/doc/ltjclasses.pdf
-2022/01/03 | 69217 | macros/luatex/generic/luatexja/doc/ltjltxdoc.pdf
-2022/01/03 | 456779 | macros/luatex/generic/luatexja/doc/ltjsclasses.pdf
-2022/01/03 | 536663 | macros/luatex/generic/luatexja/doc/luatexja.dtx
-2022/01/03 | 713111 | macros/luatex/generic/luatexja/doc/luatexja-en.pdf
-2022/01/03 | 355 | macros/luatex/generic/luatexja/doc/luatexja.ins
-2022/01/03 | 1140418 | macros/luatex/generic/luatexja/doc/luatexja-ja.pdf
-2022/01/03 | 381090 | macros/luatex/generic/luatexja/doc/luatexja-ruby.pdf
-2022/01/03 | 52633 | macros/luatex/generic/luatexja/doc/luatexja-ruby.tex
-2022/01/03 | 3796 | macros/luatex/generic/luatexja/README
-2022/01/03 | 4560 | macros/luatex/generic/luatexja/src/addons/luatexja-adjust.sty
-2022/01/03 | 33461 | macros/luatex/generic/luatexja/src/addons/luatexja-ajmacros.sty
-2022/01/03 | 15839 | macros/luatex/generic/luatexja/src/addons/luatexja-fontspec-27c.sty
-2022/01/03 | 1637 | macros/luatex/generic/luatexja/src/addons/luatexja-fontspec.sty
-2022/01/03 | 6891 | macros/luatex/generic/luatexja/src/addons/luatexja-otf.sty
-2022/01/03 | 29181 | macros/luatex/generic/luatexja/src/addons/luatexja-preset.sty
-2022/01/03 | 9765 | macros/luatex/generic/luatexja/src/addons/luatexja-ruby.sty
-2022/01/03 | 2193 | macros/luatex/generic/luatexja/src/addons/luatexja-zhfonts.sty
-2022/01/03 | 2601 | macros/luatex/generic/luatexja/src/jfm-banjiao.lua
-2022/01/03 | 2207 | macros/luatex/generic/luatexja/src/jfm-CCT.lua
-2022/01/03 | 2342 | macros/luatex/generic/luatexja/src/jfm-jis.lua
-2022/01/03 | 2586 | macros/luatex/generic/luatexja/src/jfm-kaiming.lua
-2022/01/03 | 8106 | macros/luatex/generic/luatexja/src/jfm-min.lua
-2022/01/03 | 192 | macros/luatex/generic/luatexja/src/jfm-mono.lua
-2022/01/03 | 200 | macros/luatex/generic/luatexja/src/jfm-prop.lua
-2022/01/03 | 196 | macros/luatex/generic/luatexja/src/jfm-propv.lua
-2022/01/03 | 196 | macros/luatex/generic/luatexja/src/jfm-propw.lua
-2022/01/03 | 2575 | macros/luatex/generic/luatexja/src/jfm-quanjiao.lua
-2022/01/03 | 4808 | macros/luatex/generic/luatexja/src/jfm-tmin.lua
-2022/01/03 | 13899 | macros/luatex/generic/luatexja/src/jfm-ujis.lua
-2022/01/03 | 11508 | macros/luatex/generic/luatexja/src/jfm-ujisv.lua
-2022/01/03 | 26934 | macros/luatex/generic/luatexja/src/lltjext.sty
-2022/01/03 | 19566 | macros/luatex/generic/luatexja/src/ltj-adjust.lua
-2022/01/03 | 12151 | macros/luatex/generic/luatexja/src/ltj-base.lua
-2022/01/03 | 6203 | macros/luatex/generic/luatexja/src/ltj-base.sty
-2022/01/03 | 3961 | macros/luatex/generic/luatexja/src/ltj-charrange.lua
-2022/01/03 | 177499 | macros/luatex/generic/luatexja/src/ltjclasses.dtx
-2022/01/03 | 1278 | macros/luatex/generic/luatexja/src/ltjclasses.ins
-2022/01/03 | 3748 | macros/luatex/generic/luatexja/src/ltj-compat.lua
-2022/01/03 | 5222 | macros/luatex/generic/luatexja/src/ltj-debug.lua
-2022/01/03 | 39711 | macros/luatex/generic/luatexja/src/ltj-direction.lua
-2022/01/03 | 3425 | macros/luatex/generic/luatexja/src/ltj-inputbuf.lua
-2022/01/03 | 154928 | macros/luatex/generic/luatexja/src/ltj-ivd_aj1.lua
-2022/01/03 | 55322 | macros/luatex/generic/luatexja/src/ltj-jfmglue.lua
-2022/01/03 | 48649 | macros/luatex/generic/luatexja/src/ltj-jfont.lua
-2022/01/03 | 54427 | macros/luatex/generic/luatexja/src/ltj-jisx0208.lua
-2022/01/03 | 18722 | macros/luatex/generic/luatexja/src/ltj-kinsoku.tex
-2022/01/03 | 6235 | macros/luatex/generic/luatexja/src/ltj-latex.sty
-2022/01/03 | 3755 | macros/luatex/generic/luatexja/src/ltj-lineskip.lua
-2022/01/03 | 5940 | macros/luatex/generic/luatexja/src/ltj-lotf_aux.lua
-2022/01/03 | 8660 | macros/luatex/generic/luatexja/src/ltjltxdoc.dtx
-2022/01/03 | 126 | macros/luatex/generic/luatexja/src/ltjltxdoc.ins
-2022/01/03 | 7370 | macros/luatex/generic/luatexja/src/ltj-math.lua
-2022/01/03 | 8609 | macros/luatex/generic/luatexja/src/ltj-otf.lua
-2022/01/03 | 4408 | macros/luatex/generic/luatexja/src/ltj-plain.sty
-2022/01/03 | 7026 | macros/luatex/generic/luatexja/src/ltj-pretreat.lua
-2022/01/03 | 14929 | macros/luatex/generic/luatexja/src/ltj-rmlgbm.lua
-2022/01/03 | 32099 | macros/luatex/generic/luatexja/src/ltj-ruby.lua
-2022/01/03 | 188978 | macros/luatex/generic/luatexja/src/ltjsclasses.dtx
-2022/01/03 | 385 | macros/luatex/generic/luatexja/src/ltjsclasses.ins
-2022/01/03 | 13240 | macros/luatex/generic/luatexja/src/ltj-setwidth.lua
-2022/01/03 | 4871 | macros/luatex/generic/luatexja/src/ltj-stack.lua
-2022/01/03 | 7691 | macros/luatex/generic/luatexja/src/ltj-unicode-ccfix.lua
-2022/01/03 | 3451 | macros/luatex/generic/luatexja/src/luatexja-compat.sty
-2022/01/03 | 29536 | macros/luatex/generic/luatexja/src/luatexja-core.sty
-2022/01/03 | 22294 | macros/luatex/generic/luatexja/src/luatexja.lua
-2022/01/03 | 2042 | macros/luatex/generic/luatexja/src/luatexja.sty
-2022/01/03 | 12389 | macros/luatex/generic/luatexja/src/patches/lltjcore.sty
-2022/01/03 | 6497 | macros/luatex/generic/luatexja/src/patches/lltjdefs.sty
-2022/01/03 | 49557 | macros/luatex/generic/luatexja/src/patches/lltjfont.sty
-2022/01/03 | 617 | macros/luatex/generic/luatexja/src/patches/lltjp-array.sty
-2022/01/03 | 4196 | macros/luatex/generic/luatexja/src/patches/lltjp-atbegshi.sty
-2022/01/03 | 825 | macros/luatex/generic/luatexja/src/patches/lltjp-collcell.sty
-2022/01/03 | 405 | macros/luatex/generic/luatexja/src/patches/lltjp-everyshi.sty
-2022/01/03 | 5850 | macros/luatex/generic/luatexja/src/patches/lltjp-fontspec.sty
-2022/01/03 | 1362 | macros/luatex/generic/luatexja/src/patches/lltjp-footmisc.sty
-2022/01/03 | 19234 | macros/luatex/generic/luatexja/src/patches/lltjp-geometry.sty
-2022/01/03 | 14709 | macros/luatex/generic/luatexja/src/patches/lltjp-listings.sty
-2022/01/03 | 2057 | macros/luatex/generic/luatexja/src/patches/lltjp-microtype.sty
-2022/01/03 | 189 | macros/luatex/generic/luatexja/src/patches/lltjp-preview.sty
-2022/01/03 | 3893 | macros/luatex/generic/luatexja/src/patches/lltjp-siunitx.sty
-2022/01/03 | 885 | macros/luatex/generic/luatexja/src/patches/lltjp-stfloats.sty
-2022/01/03 | 5682 | macros/luatex/generic/luatexja/src/patches/lltjp-tascmac.sty
-2022/01/03 | 2374 | macros/luatex/generic/luatexja/src/patches/lltjp-unicode-math.sty
-2022/01/03 | 3371 | macros/luatex/generic/luatexja/src/patches/lltjp-xunicode.sty
-2022/01/03 | 580 | macros/luatex/generic/luatexja/tool/blocks2defcharrange.rb
-2022/01/03 | 1224 | macros/luatex/generic/luatexja/tool/chars2defcharrange.rb
-2022/01/03 | 1130 | macros/luatex/generic/luatexja/tool/function_uax50.lua
-2022/01/03 | 1397 | macros/luatex/generic/luatexja/tool/ivslist.tex
-2022/01/03 | 7790 | macros/luatex/generic/luatexja/tool/jfm-convert.lua
-2022/01/03 | 551 | macros/luatex/generic/luatexja/tool/jfm-readable.rb
-2022/01/03 | 6060 | macros/luatex/generic/luatexja/tool/kyoikukanjiChars.tex
-2022/01/03 | 4262 | macros/luatex/generic/luatexja/tool/kyoikukanji.txt
-2022/01/03 | 3313 | macros/luatex/generic/luatexja/tool/ltj-unicode-ccfix_make2.pl
-2022/01/03 | 355 | macros/luatex/generic/luatexja/tool/otf-AdobeMingStd-Light.txt
-2022/01/03 | 326 | macros/luatex/generic/luatexja/tool/otf-AdobeMyungjoStd-Medium.txt
-2022/01/03 | 317 | macros/luatex/generic/luatexja/tool/otf-AdobeSongStd-Light.txt
-2022/01/03 | 896 | macros/luatex/generic/luatexja/tool/otf-KozMinPr6N-Regular.txt
-2022/01/03 | 945 | macros/luatex/generic/luatexja/tool/table_ivd_aj1.lua
-2022/01/03 | 3100 | macros/luatex/generic/luatexja/tool/table_jisx0208.tex
-2022/01/03 | 11335 | macros/luatex/generic/luatexja/tool/unicodeBlocks.tex
-2022/01/03 | 3812067 | macros/luatex/generic/luatexja.zip
+2022/02/07 | 1536 | macros/luatex/generic/luatexja/COPYING
+2022/02/07 | 945 | macros/luatex/generic/luatexja/doc/jfm-testf.lua
+2022/02/07 | 3238 | macros/luatex/generic/luatexja/doc/jfm-test.lua
+2022/02/07 | 4452 | macros/luatex/generic/luatexja/doc/jfm-ujisc33.lua
+2022/02/07 | 166557 | macros/luatex/generic/luatexja/doc/lltjp-geometry.pdf
+2022/02/07 | 13726 | macros/luatex/generic/luatexja/doc/lltjp-geometry.tex
+2022/02/07 | 400068 | macros/luatex/generic/luatexja/doc/ltjclasses.pdf
+2022/02/07 | 69217 | macros/luatex/generic/luatexja/doc/ltjltxdoc.pdf
+2022/02/07 | 456779 | macros/luatex/generic/luatexja/doc/ltjsclasses.pdf
+2022/02/07 | 537770 | macros/luatex/generic/luatexja/doc/luatexja.dtx
+2022/02/07 | 717058 | macros/luatex/generic/luatexja/doc/luatexja-en.pdf
+2022/02/07 | 355 | macros/luatex/generic/luatexja/doc/luatexja.ins
+2022/02/07 | 1144502 | macros/luatex/generic/luatexja/doc/luatexja-ja.pdf
+2022/02/07 | 381090 | macros/luatex/generic/luatexja/doc/luatexja-ruby.pdf
+2022/02/07 | 52633 | macros/luatex/generic/luatexja/doc/luatexja-ruby.tex
+2022/02/07 | 3796 | macros/luatex/generic/luatexja/README
+2022/02/07 | 4892 | macros/luatex/generic/luatexja/src/addons/luatexja-adjust.sty
+2022/02/07 | 33461 | macros/luatex/generic/luatexja/src/addons/luatexja-ajmacros.sty
+2022/02/07 | 15839 | macros/luatex/generic/luatexja/src/addons/luatexja-fontspec-27c.sty
+2022/02/07 | 1637 | macros/luatex/generic/luatexja/src/addons/luatexja-fontspec.sty
+2022/02/07 | 6891 | macros/luatex/generic/luatexja/src/addons/luatexja-otf.sty
+2022/02/07 | 29181 | macros/luatex/generic/luatexja/src/addons/luatexja-preset.sty
+2022/02/07 | 9765 | macros/luatex/generic/luatexja/src/addons/luatexja-ruby.sty
+2022/02/07 | 2193 | macros/luatex/generic/luatexja/src/addons/luatexja-zhfonts.sty
+2022/02/07 | 2601 | macros/luatex/generic/luatexja/src/jfm-banjiao.lua
+2022/02/07 | 2207 | macros/luatex/generic/luatexja/src/jfm-CCT.lua
+2022/02/07 | 2342 | macros/luatex/generic/luatexja/src/jfm-jis.lua
+2022/02/07 | 2586 | macros/luatex/generic/luatexja/src/jfm-kaiming.lua
+2022/02/07 | 8106 | macros/luatex/generic/luatexja/src/jfm-min.lua
+2022/02/07 | 192 | macros/luatex/generic/luatexja/src/jfm-mono.lua
+2022/02/07 | 200 | macros/luatex/generic/luatexja/src/jfm-prop.lua
+2022/02/07 | 196 | macros/luatex/generic/luatexja/src/jfm-propv.lua
+2022/02/07 | 196 | macros/luatex/generic/luatexja/src/jfm-propw.lua
+2022/02/07 | 2575 | macros/luatex/generic/luatexja/src/jfm-quanjiao.lua
+2022/02/07 | 4808 | macros/luatex/generic/luatexja/src/jfm-tmin.lua
+2022/02/07 | 13899 | macros/luatex/generic/luatexja/src/jfm-ujis.lua
+2022/02/07 | 11508 | macros/luatex/generic/luatexja/src/jfm-ujisv.lua
+2022/02/07 | 26934 | macros/luatex/generic/luatexja/src/lltjext.sty
+2022/02/07 | 21126 | macros/luatex/generic/luatexja/src/ltj-adjust.lua
+2022/02/07 | 12151 | macros/luatex/generic/luatexja/src/ltj-base.lua
+2022/02/07 | 6203 | macros/luatex/generic/luatexja/src/ltj-base.sty
+2022/02/07 | 3961 | macros/luatex/generic/luatexja/src/ltj-charrange.lua
+2022/02/07 | 177499 | macros/luatex/generic/luatexja/src/ltjclasses.dtx
+2022/02/07 | 1278 | macros/luatex/generic/luatexja/src/ltjclasses.ins
+2022/02/07 | 3748 | macros/luatex/generic/luatexja/src/ltj-compat.lua
+2022/02/07 | 5222 | macros/luatex/generic/luatexja/src/ltj-debug.lua
+2022/02/07 | 39938 | macros/luatex/generic/luatexja/src/ltj-direction.lua
+2022/02/07 | 3425 | macros/luatex/generic/luatexja/src/ltj-inputbuf.lua
+2022/02/07 | 154928 | macros/luatex/generic/luatexja/src/ltj-ivd_aj1.lua
+2022/02/07 | 55450 | macros/luatex/generic/luatexja/src/ltj-jfmglue.lua
+2022/02/07 | 48649 | macros/luatex/generic/luatexja/src/ltj-jfont.lua
+2022/02/07 | 54427 | macros/luatex/generic/luatexja/src/ltj-jisx0208.lua
+2022/02/07 | 18722 | macros/luatex/generic/luatexja/src/ltj-kinsoku.tex
+2022/02/07 | 6235 | macros/luatex/generic/luatexja/src/ltj-latex.sty
+2022/02/07 | 3755 | macros/luatex/generic/luatexja/src/ltj-lineskip.lua
+2022/02/07 | 5940 | macros/luatex/generic/luatexja/src/ltj-lotf_aux.lua
+2022/02/07 | 8660 | macros/luatex/generic/luatexja/src/ltjltxdoc.dtx
+2022/02/07 | 126 | macros/luatex/generic/luatexja/src/ltjltxdoc.ins
+2022/02/07 | 7370 | macros/luatex/generic/luatexja/src/ltj-math.lua
+2022/02/07 | 8609 | macros/luatex/generic/luatexja/src/ltj-otf.lua
+2022/02/07 | 4408 | macros/luatex/generic/luatexja/src/ltj-plain.sty
+2022/02/07 | 7026 | macros/luatex/generic/luatexja/src/ltj-pretreat.lua
+2022/02/07 | 14929 | macros/luatex/generic/luatexja/src/ltj-rmlgbm.lua
+2022/02/07 | 32105 | macros/luatex/generic/luatexja/src/ltj-ruby.lua
+2022/02/07 | 188978 | macros/luatex/generic/luatexja/src/ltjsclasses.dtx
+2022/02/07 | 385 | macros/luatex/generic/luatexja/src/ltjsclasses.ins
+2022/02/07 | 13240 | macros/luatex/generic/luatexja/src/ltj-setwidth.lua
+2022/02/07 | 4871 | macros/luatex/generic/luatexja/src/ltj-stack.lua
+2022/02/07 | 7691 | macros/luatex/generic/luatexja/src/ltj-unicode-ccfix.lua
+2022/02/07 | 3451 | macros/luatex/generic/luatexja/src/luatexja-compat.sty
+2022/02/07 | 29814 | macros/luatex/generic/luatexja/src/luatexja-core.sty
+2022/02/07 | 22294 | macros/luatex/generic/luatexja/src/luatexja.lua
+2022/02/07 | 2042 | macros/luatex/generic/luatexja/src/luatexja.sty
+2022/02/07 | 12442 | macros/luatex/generic/luatexja/src/patches/lltjcore.sty
+2022/02/07 | 6497 | macros/luatex/generic/luatexja/src/patches/lltjdefs.sty
+2022/02/07 | 49557 | macros/luatex/generic/luatexja/src/patches/lltjfont.sty
+2022/02/07 | 617 | macros/luatex/generic/luatexja/src/patches/lltjp-array.sty
+2022/02/07 | 4196 | macros/luatex/generic/luatexja/src/patches/lltjp-atbegshi.sty
+2022/02/07 | 825 | macros/luatex/generic/luatexja/src/patches/lltjp-collcell.sty
+2022/02/07 | 405 | macros/luatex/generic/luatexja/src/patches/lltjp-everyshi.sty
+2022/02/07 | 5850 | macros/luatex/generic/luatexja/src/patches/lltjp-fontspec.sty
+2022/02/07 | 1362 | macros/luatex/generic/luatexja/src/patches/lltjp-footmisc.sty
+2022/02/07 | 19234 | macros/luatex/generic/luatexja/src/patches/lltjp-geometry.sty
+2022/02/07 | 14709 | macros/luatex/generic/luatexja/src/patches/lltjp-listings.sty
+2022/02/07 | 2057 | macros/luatex/generic/luatexja/src/patches/lltjp-microtype.sty
+2022/02/07 | 189 | macros/luatex/generic/luatexja/src/patches/lltjp-preview.sty
+2022/02/07 | 3893 | macros/luatex/generic/luatexja/src/patches/lltjp-siunitx.sty
+2022/02/07 | 885 | macros/luatex/generic/luatexja/src/patches/lltjp-stfloats.sty
+2022/02/07 | 5682 | macros/luatex/generic/luatexja/src/patches/lltjp-tascmac.sty
+2022/02/07 | 2374 | macros/luatex/generic/luatexja/src/patches/lltjp-unicode-math.sty
+2022/02/07 | 3371 | macros/luatex/generic/luatexja/src/patches/lltjp-xunicode.sty
+2022/02/07 | 580 | macros/luatex/generic/luatexja/tool/blocks2defcharrange.rb
+2022/02/07 | 1224 | macros/luatex/generic/luatexja/tool/chars2defcharrange.rb
+2022/02/07 | 1130 | macros/luatex/generic/luatexja/tool/function_uax50.lua
+2022/02/07 | 1397 | macros/luatex/generic/luatexja/tool/ivslist.tex
+2022/02/07 | 7790 | macros/luatex/generic/luatexja/tool/jfm-convert.lua
+2022/02/07 | 551 | macros/luatex/generic/luatexja/tool/jfm-readable.rb
+2022/02/07 | 6060 | macros/luatex/generic/luatexja/tool/kyoikukanjiChars.tex
+2022/02/07 | 4262 | macros/luatex/generic/luatexja/tool/kyoikukanji.txt
+2022/02/07 | 3313 | macros/luatex/generic/luatexja/tool/ltj-unicode-ccfix_make2.pl
+2022/02/07 | 355 | macros/luatex/generic/luatexja/tool/otf-AdobeMingStd-Light.txt
+2022/02/07 | 326 | macros/luatex/generic/luatexja/tool/otf-AdobeMyungjoStd-Medium.txt
+2022/02/07 | 317 | macros/luatex/generic/luatexja/tool/otf-AdobeSongStd-Light.txt
+2022/02/07 | 896 | macros/luatex/generic/luatexja/tool/otf-KozMinPr6N-Regular.txt
+2022/02/07 | 945 | macros/luatex/generic/luatexja/tool/table_ivd_aj1.lua
+2022/02/07 | 3100 | macros/luatex/generic/luatexja/tool/table_jisx0208.tex
+2022/02/07 | 11335 | macros/luatex/generic/luatexja/tool/unicodeBlocks.tex
+2022/02/07 | 3821240 | macros/luatex/generic/luatexja.zip
2021/07/10 | 9075 | macros/luatex/generic/luatexko/ChangeLog
2021/07/10 | 338346 | macros/luatex/generic/luatexko/luatexko-doc.pdf
2021/07/10 | 35829 | macros/luatex/generic/luatexko/luatexko-doc.tex
@@ -274957,7 +274957,7 @@
2021/05/03 | 629 | support/TeX4ht/doc/README
2020/08/24 | 358454 | support/TeX4ht/doc/TeX4ht-doc.tex
2021/05/11 | 262 | support/TeX4ht/README
-2022/02/05 | 182274 | support/TeX4ht/source/ChangeLog
+2022/02/06 | 182850 | support/TeX4ht/source/ChangeLog
2021/05/03 | 1375 | support/TeX4ht/source/checklog.lua
2021/05/03 | 1189 | support/TeX4ht/source/common-code.tex
2021/05/03 | 2727 | support/TeX4ht/source/common-info.tex
@@ -274965,7 +274965,7 @@
2021/05/06 | 15 | support/TeX4ht/source/extra-bin/vcss
2021/05/06 | 15 | support/TeX4ht/source/extra-bin/xmllint
2022/01/23 | 26845 | support/TeX4ht/source/Makefile
-2021/12/27 | 7881 | support/TeX4ht/source/mktex4ht-cnf.tex
+2022/02/06 | 7900 | support/TeX4ht/source/mktex4ht-cnf.tex
2021/05/03 | 1121 | support/TeX4ht/source/README
2021/05/03 | 1744 | support/TeX4ht/source/t1fontmake.lua
2021/05/03 | 297 | support/TeX4ht/source/t1fontsample.tex
@@ -274993,7 +274993,7 @@
2021/05/03 | 14218 | support/TeX4ht/source/tex4ht-htcmd.tex
2021/05/03 | 70683 | support/TeX4ht/source/tex4ht-html0.tex
2021/05/03 | 164748 | support/TeX4ht/source/tex4ht-html32.tex
-2022/02/05 | 610545 | support/TeX4ht/source/tex4ht-html4.tex
+2022/02/06 | 610614 | support/TeX4ht/source/tex4ht-html4.tex
2022/01/23 | 10834 | support/TeX4ht/source/tex4ht-html5.tex
2021/06/17 | 648233 | support/TeX4ht/source/tex4ht-html-speech.tex
2021/05/03 | 59483 | support/TeX4ht/source/tex4ht-html-speech-xtpipes.tex
@@ -275015,7 +275015,7 @@
2021/05/03 | 8860 | support/TeX4ht/source/tex4ht-mathplayer.tex
2021/06/20 | 49012 | support/TeX4ht/source/tex4ht-mkht.tex
2021/05/03 | 26652 | support/TeX4ht/source/tex4ht-moz.tex
-2022/01/19 | 336177 | support/TeX4ht/source/tex4ht-ooffice.tex
+2022/02/06 | 336643 | support/TeX4ht/source/tex4ht-ooffice.tex
2021/05/03 | 11161 | support/TeX4ht/source/tex4ht-ooimpress.tex
2021/05/03 | 45918 | support/TeX4ht/source/tex4ht-oo-xtpipes.tex
2021/06/21 | 13398 | support/TeX4ht/source/tex4ht-options.tex
@@ -278811,9 +278811,9 @@
2021/01/21 | 860228 | systems/texlive/tlnet/archive/achemso.doc.r57479.tar.xz
2021/01/21 | 19268 | systems/texlive/tlnet/archive/achemso.r57479.tar.xz
2021/01/21 | 31504 | systems/texlive/tlnet/archive/achemso.source.r57479.tar.xz
-2021/12/07 | 3563900 | systems/texlive/tlnet/archive/acmart.doc.r61233.tar.xz
-2021/12/07 | 38832 | systems/texlive/tlnet/archive/acmart.r61233.tar.xz
-2021/12/07 | 54768 | systems/texlive/tlnet/archive/acmart.source.r61233.tar.xz
+2022/02/07 | 3561068 | systems/texlive/tlnet/archive/acmart.doc.r61919.tar.xz
+2022/02/07 | 38944 | systems/texlive/tlnet/archive/acmart.r61919.tar.xz
+2022/02/07 | 55016 | systems/texlive/tlnet/archive/acmart.source.r61919.tar.xz
2019/02/28 | 89944 | systems/texlive/tlnet/archive/acmconf.doc.r15878.tar.xz
2019/02/28 | 4192 | systems/texlive/tlnet/archive/acmconf.r15878.tar.xz
2019/02/28 | 18700 | systems/texlive/tlnet/archive/acmconf.source.r15878.tar.xz
@@ -279996,8 +279996,8 @@
2021/03/07 | 4192 | systems/texlive/tlnet/archive/biblatex-trad.r58169.tar.xz
2019/02/28 | 70876 | systems/texlive/tlnet/archive/biblatex-true-citepages-omit.doc.r44653.tar.xz
2019/02/28 | 1308 | systems/texlive/tlnet/archive/biblatex-true-citepages-omit.r44653.tar.xz
-2020/05/27 | 434816 | systems/texlive/tlnet/archive/biblatex-unified.doc.r55290.tar.xz
-2020/05/27 | 7704 | systems/texlive/tlnet/archive/biblatex-unified.r55290.tar.xz
+2022/02/07 | 442364 | systems/texlive/tlnet/archive/biblatex-unified.doc.r61920.tar.xz
+2022/02/07 | 7184 | systems/texlive/tlnet/archive/biblatex-unified.r61920.tar.xz
2020/05/29 | 12120 | systems/texlive/tlnet/archive/biblatex-vancouver.doc.r55339.tar.xz
2020/05/29 | 1812 | systems/texlive/tlnet/archive/biblatex-vancouver.r55339.tar.xz
2020/06/23 | 363388 | systems/texlive/tlnet/archive/bibleref.doc.r55626.tar.xz
@@ -280465,8 +280465,8 @@
2021/07/21 | 6440 | systems/texlive/tlnet/archive/catechis.source.r59998.tar.xz
2019/02/28 | 19124 | systems/texlive/tlnet/archive/catoptions.doc.r35069.tar.xz
2019/02/28 | 37784 | systems/texlive/tlnet/archive/catoptions.r35069.tar.xz
-2020/12/15 | 424340 | systems/texlive/tlnet/archive/causets.doc.r57139.tar.xz
-2020/12/15 | 3672 | systems/texlive/tlnet/archive/causets.r57139.tar.xz
+2022/02/07 | 446248 | systems/texlive/tlnet/archive/causets.doc.r61916.tar.xz
+2022/02/07 | 4292 | systems/texlive/tlnet/archive/causets.r61916.tar.xz
2019/02/28 | 189788 | systems/texlive/tlnet/archive/cbcoptic.doc.r16666.tar.xz
2019/02/28 | 100688 | systems/texlive/tlnet/archive/cbcoptic.r16666.tar.xz
2020/03/04 | 428692 | systems/texlive/tlnet/archive/cbfonts.doc.r54080.tar.xz
@@ -280982,17 +280982,17 @@
2021/08/20 | 540 | systems/texlive/tlnet/archive/collection-games.r60276.tar.xz
2020/10/07 | 588 | systems/texlive/tlnet/archive/collection-humanities.r56575.tar.xz
2021/06/15 | 456 | systems/texlive/tlnet/archive/collection-langarabic.r59594.tar.xz
-2022/02/06 | 548 | systems/texlive/tlnet/archive/collection-langchinese.r61886.tar.xz
-2021/09/24 | 576 | systems/texlive/tlnet/archive/collection-langcjk.r60595.tar.xz
+2022/02/07 | 544 | systems/texlive/tlnet/archive/collection-langchinese.r61913.tar.xz
+2022/02/07 | 580 | systems/texlive/tlnet/archive/collection-langcjk.r61912.tar.xz
2020/03/04 | 608 | systems/texlive/tlnet/archive/collection-langcyrillic.r54074.tar.xz
2020/03/04 | 372 | systems/texlive/tlnet/archive/collection-langczechslovak.r54074.tar.xz
-2021/10/04 | 844 | systems/texlive/tlnet/archive/collection-langenglish.r60687.tar.xz
+2022/02/07 | 852 | systems/texlive/tlnet/archive/collection-langenglish.r61918.tar.xz
2021/12/28 | 716 | systems/texlive/tlnet/archive/collection-langeuropean.r61419.tar.xz
2021/08/20 | 604 | systems/texlive/tlnet/archive/collection-langfrench.r60273.tar.xz
2020/07/01 | 628 | systems/texlive/tlnet/archive/collection-langgerman.r55706.tar.xz
2022/02/02 | 436 | systems/texlive/tlnet/archive/collection-langgreek.r61820.tar.xz
2020/05/14 | 432 | systems/texlive/tlnet/archive/collection-langitalian.r55129.tar.xz
-2022/01/18 | 628 | systems/texlive/tlnet/archive/collection-langjapanese.r61636.tar.xz
+2022/02/07 | 632 | systems/texlive/tlnet/archive/collection-langjapanese.r61915.tar.xz
2020/03/04 | 396 | systems/texlive/tlnet/archive/collection-langkorean.r54074.tar.xz
2021/06/13 | 808 | systems/texlive/tlnet/archive/collection-langother.r59564.tar.xz
2020/03/04 | 408 | systems/texlive/tlnet/archive/collection-langpolish.r54074.tar.xz
@@ -284321,8 +284321,8 @@
2021/07/04 | 3148 | systems/texlive/tlnet/archive/ifptex.r59820.tar.xz
2019/02/28 | 120996 | systems/texlive/tlnet/archive/ifsym.doc.r24868.tar.xz
2019/02/28 | 9808 | systems/texlive/tlnet/archive/ifsym.r24868.tar.xz
-2020/10/08 | 218576 | systems/texlive/tlnet/archive/iftex.doc.r56594.tar.xz
-2020/10/08 | 3008 | systems/texlive/tlnet/archive/iftex.r56594.tar.xz
+2022/02/07 | 228940 | systems/texlive/tlnet/archive/iftex.doc.r61910.tar.xz
+2022/02/07 | 3132 | systems/texlive/tlnet/archive/iftex.r61910.tar.xz
2019/02/28 | 1924 | systems/texlive/tlnet/archive/ifthenx.doc.r25819.tar.xz
2019/02/28 | 4116 | systems/texlive/tlnet/archive/ifthenx.r25819.tar.xz
2019/02/28 | 199416 | systems/texlive/tlnet/archive/ifxptex.doc.r46153.tar.xz
@@ -285052,6 +285052,8 @@
2022/01/24 | 7564 | systems/texlive/tlnet/archive/latex-firstaid-dev.source.r61719.tar.xz
2019/02/28 | 1128 | systems/texlive/tlnet/archive/latex-fonts.doc.r28888.tar.xz
2019/02/28 | 17972 | systems/texlive/tlnet/archive/latex-fonts.r28888.tar.xz
+2022/02/07 | 2010712 | systems/texlive/tlnet/archive/latex-for-undergraduates.doc.r61918.tar.xz
+2022/02/07 | 452 | systems/texlive/tlnet/archive/latex-for-undergraduates.r61918.tar.xz
2020/04/21 | 446104 | systems/texlive/tlnet/archive/latexgit.doc.r54811.tar.xz
2019/02/28 | 344 | systems/texlive/tlnet/archive/latex-git-log.aarch64-linux.r46208.tar.xz
2019/02/28 | 348 | systems/texlive/tlnet/archive/latex-git-log.amd64-freebsd.r30983.tar.xz
@@ -287393,8 +287395,10 @@
2021/05/25 | 11876 | systems/texlive/tlnet/archive/pbalance.source.r59331.tar.xz
2019/02/28 | 123536 | systems/texlive/tlnet/archive/pb-diagram.doc.r15878.tar.xz
2019/02/28 | 15624 | systems/texlive/tlnet/archive/pb-diagram.r15878.tar.xz
-2019/02/28 | 846572 | systems/texlive/tlnet/archive/pbibtex-base.doc.r40986.tar.xz
-2019/02/28 | 14712 | systems/texlive/tlnet/archive/pbibtex-base.r40986.tar.xz
+2022/02/07 | 27920 | systems/texlive/tlnet/archive/pbibtex-base.doc.r61914.tar.xz
+2022/02/07 | 14700 | systems/texlive/tlnet/archive/pbibtex-base.r61914.tar.xz
+2022/02/07 | 943344 | systems/texlive/tlnet/archive/pbibtex-manual.doc.r61915.tar.xz
+2022/02/07 | 460 | systems/texlive/tlnet/archive/pbibtex-manual.r61915.tar.xz
2019/02/28 | 235996 | systems/texlive/tlnet/archive/pbox.doc.r24807.tar.xz
2019/02/28 | 1380 | systems/texlive/tlnet/archive/pbox.r24807.tar.xz
2019/02/28 | 5728 | systems/texlive/tlnet/archive/pbox.source.r24807.tar.xz
@@ -288332,9 +288336,9 @@
2021/03/13 | 5348 | systems/texlive/tlnet/archive/pst-ode.r58293.tar.xz
2019/02/28 | 373708 | systems/texlive/tlnet/archive/pstool.doc.r46393.tar.xz
2019/02/28 | 6984 | systems/texlive/tlnet/archive/pstool.r46393.tar.xz
-2021/02/28 | 3192500 | systems/texlive/tlnet/archive/pst-optexp.doc.r57977.tar.xz
-2021/02/28 | 37788 | systems/texlive/tlnet/archive/pst-optexp.r57977.tar.xz
-2021/02/28 | 155296 | systems/texlive/tlnet/archive/pst-optexp.source.r57977.tar.xz
+2022/02/07 | 3194704 | systems/texlive/tlnet/archive/pst-optexp.doc.r61917.tar.xz
+2022/02/07 | 37764 | systems/texlive/tlnet/archive/pst-optexp.r61917.tar.xz
+2022/02/07 | 155324 | systems/texlive/tlnet/archive/pst-optexp.source.r61917.tar.xz
2019/02/28 | 308860 | systems/texlive/tlnet/archive/pst-optic.doc.r41999.tar.xz
2019/02/28 | 14660 | systems/texlive/tlnet/archive/pst-optic.r41999.tar.xz
2019/02/28 | 1332868 | systems/texlive/tlnet/archive/pst-osci.doc.r15878.tar.xz
@@ -288554,8 +288558,8 @@
2019/02/28 | 340 | systems/texlive/tlnet/archive/purifyeps.x86_64-solaris.r18442.tar.xz
2020/12/30 | 201144 | systems/texlive/tlnet/archive/puyotikz.doc.r57254.tar.xz
2020/12/30 | 3968 | systems/texlive/tlnet/archive/puyotikz.r57254.tar.xz
-2021/11/07 | 10728 | systems/texlive/tlnet/archive/pwebmac.doc.r60979.tar.xz
-2021/11/07 | 8212 | systems/texlive/tlnet/archive/pwebmac.r60979.tar.xz
+2022/02/07 | 11076 | systems/texlive/tlnet/archive/pwebmac.doc.r61922.tar.xz
+2022/02/07 | 8644 | systems/texlive/tlnet/archive/pwebmac.r61922.tar.xz
2021/06/06 | 161900 | systems/texlive/tlnet/archive/pxbase.doc.r59473.tar.xz
2021/06/06 | 12356 | systems/texlive/tlnet/archive/pxbase.r59473.tar.xz
2021/06/04 | 322528 | systems/texlive/tlnet/archive/pxchfon.doc.r59449.tar.xz
@@ -289037,8 +289041,8 @@
2021/09/27 | 193772 | systems/texlive/tlnet/archive/scrambledenvs.doc.r60615.tar.xz
2021/09/27 | 2408 | systems/texlive/tlnet/archive/scrambledenvs.r60615.tar.xz
2021/09/27 | 5752 | systems/texlive/tlnet/archive/scrambledenvs.source.r60615.tar.xz
-2020/09/03 | 518596 | systems/texlive/tlnet/archive/scratch3.doc.r56258.tar.xz
-2020/09/03 | 8748 | systems/texlive/tlnet/archive/scratch3.r56258.tar.xz
+2022/02/07 | 528692 | systems/texlive/tlnet/archive/scratch3.doc.r61921.tar.xz
+2022/02/07 | 8832 | systems/texlive/tlnet/archive/scratch3.r61921.tar.xz
2019/02/28 | 506808 | systems/texlive/tlnet/archive/scratch.doc.r50073.tar.xz
2019/02/28 | 8388 | systems/texlive/tlnet/archive/scratch.r50073.tar.xz
2019/02/28 | 427720 | systems/texlive/tlnet/archive/scratchx.doc.r44906.tar.xz
@@ -289918,14 +289922,14 @@
2021/02/27 | 109184 | systems/texlive/tlnet/archive/tex4ht.amd64-freebsd.r57941.tar.xz
2021/02/24 | 87364 | systems/texlive/tlnet/archive/tex4ht.amd64-netbsd.r57877.tar.xz
2021/02/27 | 69944 | systems/texlive/tlnet/archive/tex4ht.armhf-linux.r57957.tar.xz
-2022/02/05 | 136384 | systems/texlive/tlnet/archive/tex4ht.doc.r61883.tar.xz
+2022/02/07 | 136384 | systems/texlive/tlnet/archive/tex4ht.doc.r61924.tar.xz
2021/03/16 | 51080 | systems/texlive/tlnet/archive/tex4ht.i386-cygwin.r58387.tar.xz
2021/02/27 | 93092 | systems/texlive/tlnet/archive/tex4ht.i386-freebsd.r57961.tar.xz
2021/02/24 | 89116 | systems/texlive/tlnet/archive/tex4ht.i386-linux.r57878.tar.xz
2021/02/24 | 76196 | systems/texlive/tlnet/archive/tex4ht.i386-netbsd.r57877.tar.xz
2021/02/27 | 83896 | systems/texlive/tlnet/archive/tex4ht.i386-solaris.r57938.tar.xz
-2022/02/05 | 924548 | systems/texlive/tlnet/archive/tex4ht.r61883.tar.xz
-2022/02/05 | 1238568 | systems/texlive/tlnet/archive/tex4ht.source.r61883.tar.xz
+2022/02/07 | 927184 | systems/texlive/tlnet/archive/tex4ht.r61924.tar.xz
+2022/02/07 | 1238584 | systems/texlive/tlnet/archive/tex4ht.source.r61924.tar.xz
2021/02/25 | 185088 | systems/texlive/tlnet/archive/tex4ht.universal-darwin.r57908.tar.xz
2021/04/08 | 57760 | systems/texlive/tlnet/archive/tex4ht.win32.r58783.tar.xz
2021/03/16 | 58360 | systems/texlive/tlnet/archive/tex4ht.x86_64-cygwin.r58387.tar.xz
@@ -290160,7 +290164,7 @@
2020/05/17 | 592 | systems/texlive/tlnet/archive/texlive-scripts.amd64-freebsd.r55172.tar.xz
2020/05/17 | 588 | systems/texlive/tlnet/archive/texlive-scripts.amd64-netbsd.r55172.tar.xz
2020/05/17 | 592 | systems/texlive/tlnet/archive/texlive-scripts.armhf-linux.r55172.tar.xz
-2022/02/06 | 403148 | systems/texlive/tlnet/archive/texlive-scripts.doc.r61885.tar.xz
+2022/02/07 | 403204 | systems/texlive/tlnet/archive/texlive-scripts.doc.r61909.tar.xz
2020/01/27 | 916 | systems/texlive/tlnet/archive/texlive-scripts-extra.aarch64-linux.r53577.tar.xz
2020/01/27 | 924 | systems/texlive/tlnet/archive/texlive-scripts-extra.amd64-freebsd.r53577.tar.xz
2020/01/27 | 916 | systems/texlive/tlnet/archive/texlive-scripts-extra.amd64-netbsd.r53577.tar.xz
@@ -290184,7 +290188,7 @@
2020/05/17 | 588 | systems/texlive/tlnet/archive/texlive-scripts.i386-linux.r55172.tar.xz
2020/05/17 | 592 | systems/texlive/tlnet/archive/texlive-scripts.i386-netbsd.r55172.tar.xz
2020/05/17 | 588 | systems/texlive/tlnet/archive/texlive-scripts.i386-solaris.r55172.tar.xz
-2022/02/06 | 108380 | systems/texlive/tlnet/archive/texlive-scripts.r61885.tar.xz
+2022/02/07 | 108364 | systems/texlive/tlnet/archive/texlive-scripts.r61909.tar.xz
2021/02/25 | 572 | systems/texlive/tlnet/archive/texlive-scripts.universal-darwin.r57908.tar.xz
2021/04/12 | 36308 | systems/texlive/tlnet/archive/texlive-scripts.win32.r58829.tar.xz
2020/05/17 | 588 | systems/texlive/tlnet/archive/texlive-scripts.x86_64-cygwin.r55172.tar.xz
@@ -291981,16 +291985,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
2021/12/06 | 105168 | systems/texlive/tlnet/install-tl
-2022/02/06 | 6807426 | systems/texlive/tlnet/install-tl-unx.tar.gz
-2022/02/06 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
-2022/02/06 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2022/02/07 | 6807264 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2022/02/07 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2022/02/07 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
2021/04/11 | 4945 | systems/texlive/tlnet/install-tl-windows.bat
-2022/02/06 | 20873863 | systems/texlive/tlnet/install-tl-windows.exe
-2022/02/06 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
-2022/02/06 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2022/02/06 | 25627668 | systems/texlive/tlnet/install-tl.zip
-2022/02/06 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
-2022/02/06 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2022/02/07 | 20871441 | systems/texlive/tlnet/install-tl-windows.exe
+2022/02/07 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2022/02/07 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2022/02/07 | 25627646 | systems/texlive/tlnet/install-tl.zip
+2022/02/07 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2022/02/07 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
2021/04/01 | 1229 | systems/texlive/tlnet/README.md
2021/04/01 | 0 | systems/texlive/tlnet/TEXLIVE_2021
2021/07/03 | 7181 | systems/texlive/tlnet/tlpkg/gpg/pubring.gpg
@@ -292000,7 +292004,7 @@
2021/07/03 | 1280 | systems/texlive/tlnet/tlpkg/gpg/trustdb.gpg
2022/01/12 | 49482 | systems/texlive/tlnet/tlpkg/installer/config.guess
2010/11/11 | 11651 | systems/texlive/tlnet/tlpkg/installer/COPYING.MinGW-runtime.txt
-2022/02/05 | 7240 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
+2022/02/06 | 7188 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2022/02/05 | 213092 | 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
@@ -292042,12 +292046,12 @@
2021/05/16 | 20371 | systems/texlive/tlnet/tlpkg/TeXLive/TLCrypto.pm
2021/12/21 | 5429 | systems/texlive/tlnet/tlpkg/TeXLive/TLDownload.pm
2021/12/21 | 27582 | systems/texlive/tlnet/tlpkg/TeXLive/TLPaper.pm
-2022/02/06 | 17104509 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
-2022/02/06 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2022/02/07 | 17107485 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2022/02/07 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
2021/12/21 | 86654 | systems/texlive/tlnet/tlpkg/TeXLive/TLPDB.pm
-2022/02/06 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
-2022/02/06 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2022/02/06 | 2349068 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2022/02/07 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2022/02/07 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2022/02/07 | 2349136 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
2021/12/21 | 58848 | systems/texlive/tlnet/tlpkg/TeXLive/TLPOBJ.pm
2021/12/21 | 42112 | systems/texlive/tlnet/tlpkg/TeXLive/TLPSRC.pm
2021/12/21 | 16130 | systems/texlive/tlnet/tlpkg/TeXLive/TLTREE.pm
@@ -295508,17 +295512,17 @@
2009/04/21 | 35717 | systems/win32/miktex/tm/packages/accfonts.tar.lzma
2019/12/06 | 338331 | systems/win32/miktex/tm/packages/accsupp.tar.lzma
2021/01/22 | 912973 | systems/win32/miktex/tm/packages/achemso.tar.lzma
-2021/12/07 | 3573547 | systems/win32/miktex/tm/packages/acmart__doc.tar.lzma
-2021/12/07 | 55712 | systems/win32/miktex/tm/packages/acmart__source.tar.lzma
-2021/12/07 | 38959 | systems/win32/miktex/tm/packages/acmart.tar.lzma
+2022/02/07 | 3570275 | systems/win32/miktex/tm/packages/acmart__doc.tar.lzma
+2022/02/07 | 55949 | systems/win32/miktex/tm/packages/acmart__source.tar.lzma
+2022/02/07 | 39111 | systems/win32/miktex/tm/packages/acmart.tar.lzma
2016/07/19 | 105378 | systems/win32/miktex/tm/packages/acmconf.tar.lzma
-2022/01/09 | 1223192 | systems/win32/miktex/tm/packages/acro__doc.tar.lzma
+2022/02/07 | 1223290 | systems/win32/miktex/tm/packages/acro__doc.tar.lzma
2016/08/30 | 774465 | systems/win32/miktex/tm/packages/acroflex.tar.lzma
2020/06/28 | 815002 | systems/win32/miktex/tm/packages/acromemory.tar.lzma
2020/04/15 | 301327 | systems/win32/miktex/tm/packages/acronym.tar.lzma
2020/06/22 | 2271156 | systems/win32/miktex/tm/packages/acrosort.tar.lzma
-2022/01/09 | 23359 | systems/win32/miktex/tm/packages/acro__source.tar.lzma
-2022/01/09 | 43805 | systems/win32/miktex/tm/packages/acro.tar.lzma
+2022/02/07 | 23421 | systems/win32/miktex/tm/packages/acro__source.tar.lzma
+2022/02/07 | 43863 | systems/win32/miktex/tm/packages/acro.tar.lzma
2010/11/24 | 163309 | systems/win32/miktex/tm/packages/acroterm.tar.lzma
2021/10/14 | 2815704 | systems/win32/miktex/tm/packages/acrotex__doc.tar.lzma
2021/11/06 | 590049 | systems/win32/miktex/tm/packages/acrotex-js__doc.tar.lzma
@@ -295595,6 +295599,9 @@
2019/03/11 | 6838192 | systems/win32/miktex/tm/packages/alpha-persian.tar.lzma
2021/05/20 | 1167310 | systems/win32/miktex/tm/packages/alterqcm.tar.lzma
2016/07/15 | 173316 | systems/win32/miktex/tm/packages/altfont.tar.lzma
+2022/02/07 | 328034 | systems/win32/miktex/tm/packages/altsubsup__doc.tar.lzma
+2022/02/07 | 4959 | systems/win32/miktex/tm/packages/altsubsup__source.tar.lzma
+2022/02/07 | 1661 | systems/win32/miktex/tm/packages/altsubsup.tar.lzma
2015/01/13 | 424664 | systems/win32/miktex/tm/packages/ametsoc.tar.lzma
2020/06/04 | 597611 | systems/win32/miktex/tm/packages/amiri.tar.lzma
2013/04/08 | 200948 | systems/win32/miktex/tm/packages/amsaddr.tar.lzma
@@ -295614,9 +295621,9 @@
2013/03/11 | 2065077 | systems/win32/miktex/tm/packages/amsrefs.tar.lzma
2011/06/23 | 385532 | systems/win32/miktex/tm/packages/amstex.tar.lzma
2008/12/23 | 68780 | systems/win32/miktex/tm/packages/analogclock.tar.lzma
-2022/01/24 | 3139454 | systems/win32/miktex/tm/packages/animate__doc.tar.lzma
-2022/01/24 | 30564 | systems/win32/miktex/tm/packages/animate__source.tar.lzma
-2022/01/24 | 23906 | systems/win32/miktex/tm/packages/animate.tar.lzma
+2022/02/07 | 3145254 | systems/win32/miktex/tm/packages/animate__doc.tar.lzma
+2022/02/07 | 30551 | systems/win32/miktex/tm/packages/animate__source.tar.lzma
+2022/02/07 | 24204 | systems/win32/miktex/tm/packages/animate.tar.lzma
2020/08/09 | 1139079 | systems/win32/miktex/tm/packages/annee-scolaire.tar.lzma
2018/08/27 | 1599994 | systems/win32/miktex/tm/packages/annot-pro.tar.lzma
2010/02/22 | 189080 | systems/win32/miktex/tm/packages/anonchap.tar.lzma
@@ -295736,9 +295743,9 @@
2013/12/23 | 242283 | systems/win32/miktex/tm/packages/autopdf.tar.lzma
2018/12/18 | 71586 | systems/win32/miktex/tm/packages/auto-pst-pdf-lua.tar.lzma
2020/10/09 | 221257 | systems/win32/miktex/tm/packages/auto-pst-pdf.tar.lzma
-2022/01/24 | 35127 | systems/win32/miktex/tm/packages/autopuncitems__doc.tar.lzma
-2022/01/24 | 2942 | systems/win32/miktex/tm/packages/autopuncitems__source.tar.lzma
-2022/01/24 | 3123 | systems/win32/miktex/tm/packages/autopuncitems.tar.lzma
+2022/02/07 | 32929 | systems/win32/miktex/tm/packages/autopuncitems__doc.tar.lzma
+2022/02/07 | 3117 | systems/win32/miktex/tm/packages/autopuncitems__source.tar.lzma
+2022/02/07 | 3174 | systems/win32/miktex/tm/packages/autopuncitems.tar.lzma
2020/03/12 | 271445 | systems/win32/miktex/tm/packages/autosp.tar.lzma
2019/12/21 | 292852 | systems/win32/miktex/tm/packages/auxhook.tar.lzma
2006/09/28 | 276931 | systems/win32/miktex/tm/packages/avantgar.cab
@@ -295759,7 +295766,7 @@
2014/09/29 | 121076 | systems/win32/miktex/tm/packages/babel-croatian.tar.lzma
2014/05/21 | 206798 | systems/win32/miktex/tm/packages/babel-czech.tar.lzma
2021/02/10 | 144839 | systems/win32/miktex/tm/packages/babel-danish.tar.lzma
-2022/01/02 | 847619 | systems/win32/miktex/tm/packages/babel__doc.tar.lzma
+2022/02/07 | 841476 | systems/win32/miktex/tm/packages/babel__doc.tar.lzma
2021/09/06 | 157877 | systems/win32/miktex/tm/packages/babel-dutch__doc.tar.lzma
2021/09/06 | 8372 | systems/win32/miktex/tm/packages/babel-dutch__source.tar.lzma
2021/09/06 | 3172 | systems/win32/miktex/tm/packages/babel-dutch.tar.lzma
@@ -295810,11 +295817,11 @@
2021/11/07 | 210288 | systems/win32/miktex/tm/packages/babel-sorbian__doc.tar.lzma
2021/11/07 | 6727 | systems/win32/miktex/tm/packages/babel-sorbian__source.tar.lzma
2021/11/07 | 3401 | systems/win32/miktex/tm/packages/babel-sorbian.tar.lzma
-2022/01/02 | 696743 | systems/win32/miktex/tm/packages/babel__source.tar.lzma
+2022/02/07 | 697268 | systems/win32/miktex/tm/packages/babel__source.tar.lzma
2015/05/25 | 5256 | systems/win32/miktex/tm/packages/babel-spanglish.tar.lzma
2021/05/29 | 222183 | systems/win32/miktex/tm/packages/babel-spanish.tar.lzma
2021/02/10 | 148420 | systems/win32/miktex/tm/packages/babel-swedish.tar.lzma
-2022/01/02 | 183446 | systems/win32/miktex/tm/packages/babel.tar.lzma
+2022/02/07 | 183524 | systems/win32/miktex/tm/packages/babel.tar.lzma
2014/05/21 | 234101 | systems/win32/miktex/tm/packages/babel-thai.tar.lzma
2019/07/06 | 309208 | systems/win32/miktex/tm/packages/babel-turkish.tar.lzma
2021/01/17 | 159246 | systems/win32/miktex/tm/packages/babel-ukrainian.tar.lzma
@@ -295828,9 +295835,9 @@
2021/08/05 | 73667 | systems/win32/miktex/tm/packages/bangla__doc.tar.lzma
2021/08/05 | 2623 | systems/win32/miktex/tm/packages/bangla__source.tar.lzma
2021/08/05 | 208960 | systems/win32/miktex/tm/packages/bangla.tar.lzma
-2021/11/13 | 294441 | systems/win32/miktex/tm/packages/bangorcsthesis__doc.tar.lzma
-2021/11/13 | 55952 | systems/win32/miktex/tm/packages/bangorcsthesis__source.tar.lzma
-2021/11/13 | 48630 | systems/win32/miktex/tm/packages/bangorcsthesis.tar.lzma
+2022/02/07 | 294152 | systems/win32/miktex/tm/packages/bangorcsthesis__doc.tar.lzma
+2022/02/07 | 55672 | systems/win32/miktex/tm/packages/bangorcsthesis__source.tar.lzma
+2022/02/07 | 52633 | systems/win32/miktex/tm/packages/bangorcsthesis.tar.lzma
2018/02/14 | 282226 | systems/win32/miktex/tm/packages/bangorexam.tar.lzma
2003/12/07 | 280135 | systems/win32/miktex/tm/packages/bangtex.cab
2015/11/17 | 128866 | systems/win32/miktex/tm/packages/bankstatement.tar.lzma
@@ -295930,10 +295937,10 @@
2022/01/24 | 233728 | systems/win32/miktex/tm/packages/bibarts__source.tar.lzma
2022/01/24 | 27497 | systems/win32/miktex/tm/packages/bibarts.tar.lzma
2021/01/02 | 33903617 | systems/win32/miktex/tm/packages/biber-darwin-x86_64.tar.lzma
-2021/01/02 | 277552 | systems/win32/miktex/tm/packages/biber-doc.tar.lzma
-2021/01/02 | 23593926 | systems/win32/miktex/tm/packages/biber-linux-x86_64.tar.lzma
-2021/01/02 | 24471988 | systems/win32/miktex/tm/packages/biber-windows-x64.tar.lzma
-2021/01/02 | 22914608 | systems/win32/miktex/tm/packages/biber-windows-x86.tar.lzma
+2022/02/07 | 281056 | systems/win32/miktex/tm/packages/biber-doc.tar.lzma
+2022/02/07 | 23593842 | systems/win32/miktex/tm/packages/biber-linux-x86_64.tar.lzma
+2022/02/07 | 24475654 | systems/win32/miktex/tm/packages/biber-windows-x64.tar.lzma
+2022/02/07 | 22928214 | systems/win32/miktex/tm/packages/biber-windows-x86.tar.lzma
2019/04/01 | 274474 | systems/win32/miktex/tm/packages/bibexport.tar.lzma
2006/01/01 | 17664 | systems/win32/miktex/tm/packages/bib-fr.cab
2013/09/09 | 34440 | systems/win32/miktex/tm/packages/bibhtml.tar.lzma
@@ -295962,16 +295969,16 @@
2021/07/01 | 102223 | systems/win32/miktex/tm/packages/biblatex-chicago.tar.lzma
2017/04/11 | 92574 | systems/win32/miktex/tm/packages/biblatex-claves.tar.lzma
2021/06/03 | 179773 | systems/win32/miktex/tm/packages/biblatex-cv.tar.lzma
-2021/06/06 | 6977268 | systems/win32/miktex/tm/packages/biblatex__doc.tar.lzma
+2022/02/07 | 7062449 | systems/win32/miktex/tm/packages/biblatex__doc.tar.lzma
2016/12/09 | 1140816 | systems/win32/miktex/tm/packages/biblatex-dw.tar.lzma
2017/06/18 | 10024 | systems/win32/miktex/tm/packages/biblatex-enc.tar.lzma
2021/09/06 | 832559 | systems/win32/miktex/tm/packages/biblatex-ext__doc.tar.lzma
2021/09/06 | 38811 | systems/win32/miktex/tm/packages/biblatex-ext__source.tar.lzma
2021/09/06 | 27095 | systems/win32/miktex/tm/packages/biblatex-ext.tar.lzma
2017/11/22 | 616165 | systems/win32/miktex/tm/packages/biblatex-fiwi.tar.lzma
-2021/12/14 | 1386229 | systems/win32/miktex/tm/packages/biblatex-gb7714-2015__doc.tar.lzma
-2021/12/14 | 87430 | systems/win32/miktex/tm/packages/biblatex-gb7714-2015__source.tar.lzma
-2021/12/14 | 43093 | systems/win32/miktex/tm/packages/biblatex-gb7714-2015.tar.lzma
+2022/02/07 | 1474218 | systems/win32/miktex/tm/packages/biblatex-gb7714-2015__doc.tar.lzma
+2022/02/07 | 89173 | systems/win32/miktex/tm/packages/biblatex-gb7714-2015__source.tar.lzma
+2022/02/07 | 43260 | systems/win32/miktex/tm/packages/biblatex-gb7714-2015.tar.lzma
2020/11/24 | 173898 | systems/win32/miktex/tm/packages/biblatex-german-legal.tar.lzma
2021/05/18 | 1022019 | systems/win32/miktex/tm/packages/biblatex-gost.tar.lzma
2010/08/24 | 601778 | systems/win32/miktex/tm/packages/biblatex-historian.tar.lzma
@@ -296019,16 +296026,18 @@
2018/05/27 | 114808 | systems/win32/miktex/tm/packages/biblatex-socialscienceshuberlin.tar.lzma
2021/01/11 | 318193 | systems/win32/miktex/tm/packages/biblatex-software.tar.lzma
2017/09/22 | 67698 | systems/win32/miktex/tm/packages/biblatex-source-division.tar.lzma
-2021/06/06 | 188177 | systems/win32/miktex/tm/packages/biblatex__source.tar.lzma
+2022/02/07 | 191902 | systems/win32/miktex/tm/packages/biblatex__source.tar.lzma
2022/01/02 | 74815 | systems/win32/miktex/tm/packages/biblatex-spbasic__doc.tar.lzma
2022/01/02 | 3509 | systems/win32/miktex/tm/packages/biblatex-spbasic__source.tar.lzma
2022/01/02 | 6291 | systems/win32/miktex/tm/packages/biblatex-spbasic.tar.lzma
2017/03/07 | 71964 | systems/win32/miktex/tm/packages/biblatex-subseries.tar.lzma
2014/01/24 | 535684 | systems/win32/miktex/tm/packages/biblatex-swiss-legal.tar.lzma
-2021/06/06 | 248682 | systems/win32/miktex/tm/packages/biblatex.tar.lzma
+2022/02/07 | 257908 | systems/win32/miktex/tm/packages/biblatex.tar.lzma
2021/03/08 | 477795 | systems/win32/miktex/tm/packages/biblatex-trad.tar.lzma
2017/06/21 | 72547 | systems/win32/miktex/tm/packages/biblatex-true-citepages-omit.tar.lzma
-2020/05/30 | 444980 | systems/win32/miktex/tm/packages/biblatex-unified.tar.lzma
+2022/02/07 | 430877 | systems/win32/miktex/tm/packages/biblatex-unified__doc.tar.lzma
+2022/02/07 | 15117 | systems/win32/miktex/tm/packages/biblatex-unified__source.tar.lzma
+2022/02/07 | 7397 | systems/win32/miktex/tm/packages/biblatex-unified.tar.lzma
2020/05/30 | 13429 | systems/win32/miktex/tm/packages/biblatex-vancouver.tar.lzma
2019/12/15 | 657270 | systems/win32/miktex/tm/packages/bibleref-french.tar.lzma
2011/04/08 | 668543 | systems/win32/miktex/tm/packages/bibleref-german.tar.lzma
@@ -296048,11 +296057,13 @@
2004/05/16 | 43918 | systems/win32/miktex/tm/packages/bibunits.cab
2012/05/11 | 98279 | systems/win32/miktex/tm/packages/bickham.tar.lzma
2014/07/18 | 32691 | systems/win32/miktex/tm/packages/bidicontour.tar.lzma
+2022/02/07 | 3752017 | systems/win32/miktex/tm/packages/bidi__doc.tar.lzma
2015/07/14 | 45842 | systems/win32/miktex/tm/packages/bidihl.tar.lzma
2014/07/18 | 29429 | systems/win32/miktex/tm/packages/bidipagegrid.tar.lzma
2014/09/29 | 102419 | systems/win32/miktex/tm/packages/bidipresentation.tar.lzma
2014/07/18 | 122091 | systems/win32/miktex/tm/packages/bidishadowtext.tar.lzma
-2020/05/18 | 3975524 | systems/win32/miktex/tm/packages/bidi.tar.lzma
+2022/02/07 | 134318 | systems/win32/miktex/tm/packages/bidi__source.tar.lzma
+2022/02/07 | 116249 | systems/win32/miktex/tm/packages/bidi.tar.lzma
2015/09/01 | 787676 | systems/win32/miktex/tm/packages/bigfoot.tar.lzma
2019/12/20 | 478294 | systems/win32/miktex/tm/packages/bigintcalc.tar.lzma
2010/03/08 | 109153 | systems/win32/miktex/tm/packages/bigints.tar.lzma
@@ -296085,9 +296096,12 @@
2011/05/25 | 126612 | systems/win32/miktex/tm/packages/bloques.tar.lzma
2018/01/07 | 325263 | systems/win32/miktex/tm/packages/blowup.tar.lzma
2021/03/03 | 394486 | systems/win32/miktex/tm/packages/blox.tar.lzma
+2022/02/07 | 1291723 | systems/win32/miktex/tm/packages/bmstu__doc.tar.lzma
2021/06/15 | 117777 | systems/win32/miktex/tm/packages/bmstu-iu8__doc.tar.lzma
2021/06/06 | 1614 | systems/win32/miktex/tm/packages/bmstu-iu8__source.tar.lzma
2021/06/15 | 66577 | systems/win32/miktex/tm/packages/bmstu-iu8.tar.lzma
+2022/02/07 | 135336 | systems/win32/miktex/tm/packages/bmstu__source.tar.lzma
+2022/02/07 | 136432 | systems/win32/miktex/tm/packages/bmstu.tar.lzma
2021/05/18 | 158537 | systems/win32/miktex/tm/packages/bnumexpr.tar.lzma
2017/03/28 | 360484 | systems/win32/miktex/tm/packages/bodegraph.tar.lzma
2022/01/24 | 694155 | systems/win32/miktex/tm/packages/bodeplot__doc.tar.lzma
@@ -296228,7 +296242,9 @@
2021/07/24 | 6785 | systems/win32/miktex/tm/packages/catechis__source.tar.lzma
2021/07/24 | 1893 | systems/win32/miktex/tm/packages/catechis.tar.lzma
2014/09/08 | 55144 | systems/win32/miktex/tm/packages/catoptions.tar.lzma
-2020/12/21 | 429315 | systems/win32/miktex/tm/packages/causets.tar.lzma
+2022/02/07 | 439801 | systems/win32/miktex/tm/packages/causets__doc.tar.lzma
+2022/02/07 | 9379 | systems/win32/miktex/tm/packages/causets__source.tar.lzma
+2022/02/07 | 4502 | systems/win32/miktex/tm/packages/causets.tar.lzma
2021/06/06 | 189148 | systems/win32/miktex/tm/packages/cbcoptic__doc.tar.lzma
2021/06/06 | 4123 | systems/win32/miktex/tm/packages/cbcoptic__source.tar.lzma
2021/06/06 | 101053 | systems/win32/miktex/tm/packages/cbcoptic.tar.lzma
@@ -296346,8 +296362,8 @@
2021/06/17 | 2164 | systems/win32/miktex/tm/packages/circledsteps.tar.lzma
2010/03/08 | 182332 | systems/win32/miktex/tm/packages/circle.tar.lzma
2009/07/13 | 270032 | systems/win32/miktex/tm/packages/circ.tar.lzma
-2021/12/07 | 1573639 | systems/win32/miktex/tm/packages/circuitikz__doc.tar.lzma
-2021/12/07 | 149611 | systems/win32/miktex/tm/packages/circuitikz.tar.lzma
+2022/02/07 | 1598394 | systems/win32/miktex/tm/packages/circuitikz__doc.tar.lzma
+2022/02/07 | 150583 | systems/win32/miktex/tm/packages/circuitikz.tar.lzma
2004/11/28 | 18758 | systems/win32/miktex/tm/packages/cirth.cab
2022/01/24 | 221332 | systems/win32/miktex/tm/packages/citation-style-language__doc.tar.lzma
2022/01/24 | 1742 | systems/win32/miktex/tm/packages/citation-style-language__source.tar.lzma
@@ -296381,6 +296397,9 @@
2021/09/20 | 2196 | systems/win32/miktex/tm/packages/clicks__source.tar.lzma
2021/09/20 | 1740 | systems/win32/miktex/tm/packages/clicks.tar.lzma
2018/05/19 | 162774 | systems/win32/miktex/tm/packages/clipboard.tar.lzma
+2022/02/07 | 669648 | systems/win32/miktex/tm/packages/clistmap__doc.tar.lzma
+2022/02/07 | 10990 | systems/win32/miktex/tm/packages/clistmap__source.tar.lzma
+2022/02/07 | 6262 | systems/win32/miktex/tm/packages/clistmap.tar.lzma
2016/07/20 | 71559 | systems/win32/miktex/tm/packages/clock.tar.lzma
2020/07/01 | 592006 | systems/win32/miktex/tm/packages/cloze.tar.lzma
2018/05/06 | 294581 | systems/win32/miktex/tm/packages/clrdblpg.tar.lzma
@@ -296419,12 +296438,12 @@
2014/12/22 | 117038 | systems/win32/miktex/tm/packages/cntdwn.tar.lzma
2014/08/02 | 434288 | systems/win32/miktex/tm/packages/cntformats.tar.lzma
2015/06/02 | 275735 | systems/win32/miktex/tm/packages/cntperchap.tar.lzma
-2022/01/24 | 574136 | systems/win32/miktex/tm/packages/cochineal__doc.tar.lzma
+2022/02/07 | 574161 | systems/win32/miktex/tm/packages/cochineal__doc.tar.lzma
2021/11/15 | 7058 | systems/win32/miktex/tm/packages/cochineal__source.tar.lzma
-2022/01/24 | 2565817 | systems/win32/miktex/tm/packages/cochineal.tar.lzma
+2022/02/07 | 2555809 | systems/win32/miktex/tm/packages/cochineal.tar.lzma
2019/07/13 | 262509 | systems/win32/miktex/tm/packages/codeanatomy.tar.lzma
-2022/01/09 | 367403 | systems/win32/miktex/tm/packages/codebox__doc.tar.lzma
-2022/01/09 | 11805 | systems/win32/miktex/tm/packages/codebox__source.tar.lzma
+2022/02/07 | 369449 | systems/win32/miktex/tm/packages/codebox__doc.tar.lzma
+2022/02/07 | 11935 | systems/win32/miktex/tm/packages/codebox__source.tar.lzma
2022/01/02 | 8259 | systems/win32/miktex/tm/packages/codebox.tar.lzma
2010/04/13 | 384686 | systems/win32/miktex/tm/packages/codedoc.tar.lzma
2021/05/18 | 89431 | systems/win32/miktex/tm/packages/codehigh.tar.lzma
@@ -296531,9 +296550,9 @@
2018/05/11 | 2710331 | systems/win32/miktex/tm/packages/cqubeamer.tar.lzma
2020/06/24 | 1215573 | systems/win32/miktex/tm/packages/cquthesis.tar.lzma
2013/04/08 | 31446 | systems/win32/miktex/tm/packages/crbox.tar.lzma
-2021/11/07 | 107640 | systems/win32/miktex/tm/packages/crefthe__doc.tar.lzma
-2021/11/07 | 3535 | systems/win32/miktex/tm/packages/crefthe__source.tar.lzma
-2021/11/07 | 1845 | systems/win32/miktex/tm/packages/crefthe.tar.lzma
+2022/02/07 | 116441 | systems/win32/miktex/tm/packages/crefthe__doc.tar.lzma
+2022/02/07 | 4250 | systems/win32/miktex/tm/packages/crefthe__source.tar.lzma
+2022/02/07 | 2538 | systems/win32/miktex/tm/packages/crefthe.tar.lzma
2019/10/23 | 2625723 | systems/win32/miktex/tm/packages/crimsonpro.tar.lzma
2017/03/20 | 1419998 | systems/win32/miktex/tm/packages/crimson.tar.lzma
2006/06/24 | 47642 | systems/win32/miktex/tm/packages/croatian.cab
@@ -296564,8 +296583,8 @@
2017/04/23 | 2092323 | systems/win32/miktex/tm/packages/css-colors.tar.lzma
2016/09/06 | 106657 | systems/win32/miktex/tm/packages/cstypo.tar.lzma
2019/08/13 | 235822 | systems/win32/miktex/tm/packages/csvmerge.tar.lzma
-2022/01/09 | 1638245 | systems/win32/miktex/tm/packages/csvsimple__doc.tar.lzma
-2022/01/09 | 11468 | systems/win32/miktex/tm/packages/csvsimple.tar.lzma
+2022/02/07 | 1643095 | systems/win32/miktex/tm/packages/csvsimple__doc.tar.lzma
+2022/02/07 | 11538 | systems/win32/miktex/tm/packages/csvsimple.tar.lzma
2007/07/04 | 215599 | systems/win32/miktex/tm/packages/csvtools.tar.lzma
2015/10/06 | 155555 | systems/win32/miktex/tm/packages/ctablestack.tar.lzma
2015/10/20 | 716564 | systems/win32/miktex/tm/packages/ctable.tar.lzma
@@ -296608,11 +296627,13 @@
2021/03/06 | 935341 | systems/win32/miktex/tm/packages/dashundergaps.tar.lzma
2015/09/22 | 267580 | systems/win32/miktex/tm/packages/dataref.tar.lzma
2019/09/29 | 2844543 | systems/win32/miktex/tm/packages/datatool.tar.lzma
-2021/10/03 | 190626 | systems/win32/miktex/tm/packages/datax__doc.tar.lzma
-2021/10/03 | 4879 | systems/win32/miktex/tm/packages/datax__source.tar.lzma
-2021/10/03 | 1504 | systems/win32/miktex/tm/packages/datax.tar.lzma
+2022/02/07 | 198552 | systems/win32/miktex/tm/packages/datax__doc.tar.lzma
+2022/02/07 | 4861 | systems/win32/miktex/tm/packages/datax__source.tar.lzma
+2022/02/07 | 1462 | systems/win32/miktex/tm/packages/datax.tar.lzma
2012/10/17 | 260631 | systems/win32/miktex/tm/packages/dateiliste.tar.lzma
-2006/11/14 | 111476 | systems/win32/miktex/tm/packages/datenumber.cab
+2022/02/07 | 303651 | systems/win32/miktex/tm/packages/datenumber__doc.tar.lzma
+2022/02/07 | 9423 | systems/win32/miktex/tm/packages/datenumber__source.tar.lzma
+2022/02/07 | 3554 | systems/win32/miktex/tm/packages/datenumber.tar.lzma
2018/07/05 | 840667 | systems/win32/miktex/tm/packages/datepicker-pro.tar.lzma
2021/12/15 | 115355 | systems/win32/miktex/tm/packages/datestamp__doc.tar.lzma
2021/12/15 | 3805 | systems/win32/miktex/tm/packages/datestamp__source.tar.lzma
@@ -296665,9 +296686,9 @@
2022/01/24 | 591608 | systems/win32/miktex/tm/packages/dbshow__doc.tar.lzma
2022/01/24 | 29440 | systems/win32/miktex/tm/packages/dbshow__source.tar.lzma
2022/01/24 | 7289 | systems/win32/miktex/tm/packages/dbshow.tar.lzma
-2021/09/06 | 284599 | systems/win32/miktex/tm/packages/dccpaper__doc.tar.lzma
-2021/09/06 | 26862 | systems/win32/miktex/tm/packages/dccpaper__source.tar.lzma
-2021/09/06 | 24970 | systems/win32/miktex/tm/packages/dccpaper.tar.lzma
+2022/02/07 | 284711 | systems/win32/miktex/tm/packages/dccpaper__doc.tar.lzma
+2022/02/07 | 26887 | systems/win32/miktex/tm/packages/dccpaper__source.tar.lzma
+2022/02/07 | 24959 | systems/win32/miktex/tm/packages/dccpaper.tar.lzma
2013/05/06 | 949470 | systems/win32/miktex/tm/packages/dcpic.tar.lzma
2019/09/08 | 288031 | systems/win32/miktex/tm/packages/ddphonism.tar.lzma
2021/10/14 | 237351 | systems/win32/miktex/tm/packages/debate__doc.tar.lzma
@@ -296780,7 +296801,9 @@
2022/01/02 | 48564 | systems/win32/miktex/tm/packages/dtk-bibliography__source.tar.lzma
2022/01/02 | 378482 | systems/win32/miktex/tm/packages/dtk-bibliography.tar.lzma
2021/04/07 | 95995 | systems/win32/miktex/tm/packages/dtk.tar.lzma
-2019/07/20 | 354196 | systems/win32/miktex/tm/packages/dtxdescribe.tar.lzma
+2022/02/07 | 385235 | systems/win32/miktex/tm/packages/dtxdescribe__doc.tar.lzma
+2022/02/07 | 20577 | systems/win32/miktex/tm/packages/dtxdescribe__source.tar.lzma
+2022/02/07 | 5892 | systems/win32/miktex/tm/packages/dtxdescribe.tar.lzma
2019/07/20 | 61900 | systems/win32/miktex/tm/packages/dtxgen.tar.lzma
2015/09/22 | 315058 | systems/win32/miktex/tm/packages/dtxtut.tar.lzma
2020/10/31 | 516258 | systems/win32/miktex/tm/packages/ducksay.tar.lzma
@@ -296806,9 +296829,9 @@
2021/07/18 | 313984 | systems/win32/miktex/tm/packages/easing__doc.tar.lzma
2021/07/18 | 8201 | systems/win32/miktex/tm/packages/easing__source.tar.lzma
2021/07/18 | 2391 | systems/win32/miktex/tm/packages/easing.tar.lzma
-2022/01/24 | 601778 | systems/win32/miktex/tm/packages/easybook__doc.tar.lzma
-2022/01/24 | 39436 | systems/win32/miktex/tm/packages/easybook__source.tar.lzma
-2022/01/24 | 16672 | systems/win32/miktex/tm/packages/easybook.tar.lzma
+2022/02/07 | 578771 | systems/win32/miktex/tm/packages/easybook__doc.tar.lzma
+2022/02/07 | 38556 | systems/win32/miktex/tm/packages/easybook__source.tar.lzma
+2022/02/07 | 16137 | systems/win32/miktex/tm/packages/easybook.tar.lzma
2018/03/31 | 183421 | systems/win32/miktex/tm/packages/easyfig.tar.lzma
2020/12/21 | 609763 | systems/win32/miktex/tm/packages/easyfloats.tar.lzma
2017/06/12 | 52618 | systems/win32/miktex/tm/packages/easyformat.tar.lzma
@@ -296873,7 +296896,9 @@
2021/05/08 | 2097438 | systems/win32/miktex/tm/packages/elegantbook.tar.lzma
2020/04/15 | 1342298 | systems/win32/miktex/tm/packages/elegantnote.tar.lzma
2020/04/15 | 993140 | systems/win32/miktex/tm/packages/elegantpaper.tar.lzma
-2019/10/15 | 425439 | systems/win32/miktex/tm/packages/elements.tar.lzma
+2022/02/07 | 414404 | systems/win32/miktex/tm/packages/elements__doc.tar.lzma
+2022/02/07 | 3842 | systems/win32/miktex/tm/packages/elements__source.tar.lzma
+2022/02/07 | 9027 | systems/win32/miktex/tm/packages/elements.tar.lzma
2021/06/06 | 702887 | systems/win32/miktex/tm/packages/elhyphen__doc.tar.lzma
2021/06/06 | 25130 | systems/win32/miktex/tm/packages/elhyphen__source.tar.lzma
2021/06/06 | 16128 | systems/win32/miktex/tm/packages/elhyphen.tar.lzma
@@ -296963,14 +296988,16 @@
2021/06/06 | 3602 | systems/win32/miktex/tm/packages/eq-pin2corr.tar.lzma
2021/05/08 | 327575 | systems/win32/miktex/tm/packages/eq-save.tar.lzma
2009/07/26 | 707878 | systems/win32/miktex/tm/packages/erdc.tar.lzma
-2022/01/02 | 372455 | systems/win32/miktex/tm/packages/erewhon__doc.tar.lzma
+2022/02/07 | 372588 | systems/win32/miktex/tm/packages/erewhon__doc.tar.lzma
2021/10/03 | 1955465 | systems/win32/miktex/tm/packages/erewhon-math__doc.tar.lzma
2021/10/03 | 12566 | systems/win32/miktex/tm/packages/erewhon-math__source.tar.lzma
2021/10/03 | 225679 | systems/win32/miktex/tm/packages/erewhon-math.tar.lzma
2021/12/23 | 5613 | systems/win32/miktex/tm/packages/erewhon__source.tar.lzma
-2022/01/02 | 2564791 | systems/win32/miktex/tm/packages/erewhon.tar.lzma
+2022/02/07 | 2565010 | systems/win32/miktex/tm/packages/erewhon.tar.lzma
2007/11/19 | 155443 | systems/win32/miktex/tm/packages/errata.tar.lzma
-2020/06/09 | 690795 | systems/win32/miktex/tm/packages/erw-l3.tar.lzma
+2022/02/07 | 485349 | systems/win32/miktex/tm/packages/erw-l3__doc.tar.lzma
+2022/02/07 | 6472 | systems/win32/miktex/tm/packages/erw-l3__source.tar.lzma
+2022/02/07 | 4108 | systems/win32/miktex/tm/packages/erw-l3.tar.lzma
2022/01/24 | 1489612 | systems/win32/miktex/tm/packages/esami__doc.tar.lzma
2022/01/24 | 26942 | systems/win32/miktex/tm/packages/esami__source.tar.lzma
2022/01/24 | 23218 | systems/win32/miktex/tm/packages/esami.tar.lzma
@@ -296988,9 +297015,9 @@
2004/02/14 | 311433 | systems/win32/miktex/tm/packages/es-tex-faq.cab
2014/04/07 | 110785 | systems/win32/miktex/tm/packages/esvect.tar.lzma
2005/06/02 | 82131 | systems/win32/miktex/tm/packages/etaremune.cab
-2021/12/23 | 2211 | systems/win32/miktex/tm/packages/etbb__doc.tar.lzma
-2021/12/23 | 447028 | systems/win32/miktex/tm/packages/etbb__source.tar.lzma
-2021/12/23 | 859196 | systems/win32/miktex/tm/packages/etbb.tar.lzma
+2022/02/07 | 2298 | systems/win32/miktex/tm/packages/etbb__doc.tar.lzma
+2022/02/07 | 527485 | systems/win32/miktex/tm/packages/etbb__source.tar.lzma
+2022/02/07 | 884841 | systems/win32/miktex/tm/packages/etbb.tar.lzma
2019/12/20 | 308618 | systems/win32/miktex/tm/packages/etexcmds.tar.lzma
2016/11/03 | 6439 | systems/win32/miktex/tm/packages/etex-pkg.tar.lzma
2016/11/03 | 183734 | systems/win32/miktex/tm/packages/etex.tar.lzma
@@ -297058,9 +297085,9 @@
2021/11/23 | 447881 | systems/win32/miktex/tm/packages/expkv-cs__doc.tar.lzma
2021/11/23 | 26376 | systems/win32/miktex/tm/packages/expkv-cs__source.tar.lzma
2021/11/23 | 5941 | systems/win32/miktex/tm/packages/expkv-cs.tar.lzma
-2021/10/03 | 401953 | systems/win32/miktex/tm/packages/expkv-def__doc.tar.lzma
-2021/10/03 | 18111 | systems/win32/miktex/tm/packages/expkv-def__source.tar.lzma
-2021/10/03 | 5451 | systems/win32/miktex/tm/packages/expkv-def.tar.lzma
+2022/02/07 | 414361 | systems/win32/miktex/tm/packages/expkv-def__doc.tar.lzma
+2022/02/07 | 19291 | systems/win32/miktex/tm/packages/expkv-def__source.tar.lzma
+2022/02/07 | 5812 | systems/win32/miktex/tm/packages/expkv-def.tar.lzma
2021/10/03 | 481350 | systems/win32/miktex/tm/packages/expkv__doc.tar.lzma
2021/04/07 | 276959 | systems/win32/miktex/tm/packages/expkv-opt.tar.lzma
2021/10/03 | 28803 | systems/win32/miktex/tm/packages/expkv__source.tar.lzma
@@ -297109,9 +297136,9 @@
2015/08/11 | 690069 | systems/win32/miktex/tm/packages/fcavtex.tar.lzma
2004/06/09 | 99326 | systems/win32/miktex/tm/packages/fc.cab
2011/11/02 | 668269 | systems/win32/miktex/tm/packages/fcltxdoc.tar.lzma
-2021/11/23 | 319740 | systems/win32/miktex/tm/packages/fcolumn__doc.tar.lzma
-2021/11/23 | 21977 | systems/win32/miktex/tm/packages/fcolumn__source.tar.lzma
-2021/11/23 | 4650 | systems/win32/miktex/tm/packages/fcolumn.tar.lzma
+2022/02/07 | 320878 | systems/win32/miktex/tm/packages/fcolumn__doc.tar.lzma
+2022/02/07 | 22334 | systems/win32/miktex/tm/packages/fcolumn__source.tar.lzma
+2022/02/07 | 4528 | systems/win32/miktex/tm/packages/fcolumn.tar.lzma
2012/06/11 | 1400409 | systems/win32/miktex/tm/packages/fdsymbol.tar.lzma
2020/09/06 | 1590331 | systems/win32/miktex/tm/packages/fduthesis.tar.lzma
2014/10/21 | 18012017 | systems/win32/miktex/tm/packages/featpost.tar.lzma
@@ -297146,7 +297173,7 @@
2020/10/03 | 318630 | systems/win32/miktex/tm/packages/filehook.tar.lzma
2012/12/04 | 924573 | systems/win32/miktex/tm/packages/fileinfo.tar.lzma
2011/09/21 | 281409 | systems/win32/miktex/tm/packages/filemod.tar.lzma
-2022/02/06 | 635247 | systems/win32/miktex/tm/packages/files.csv.lzma
+2022/02/07 | 634742 | systems/win32/miktex/tm/packages/files.csv.lzma
2001/05/14 | 5617 | systems/win32/miktex/tm/packages/finbib.tar.lzma
2015/10/20 | 44379 | systems/win32/miktex/tm/packages/findhyph.tar.lzma
2011/10/21 | 89323 | systems/win32/miktex/tm/packages/fink.tar.lzma
@@ -297195,9 +297222,9 @@
2010/12/13 | 283775 | systems/win32/miktex/tm/packages/fncychap.tar.lzma
2019/09/17 | 209485 | systems/win32/miktex/tm/packages/fncylab.tar.lzma
2012/03/21 | 178634 | systems/win32/miktex/tm/packages/fnpara.tar.lzma
-2022/01/09 | 490805 | systems/win32/miktex/tm/packages/fnpct__doc.tar.lzma
-2022/01/09 | 8210 | systems/win32/miktex/tm/packages/fnpct__source.tar.lzma
-2022/01/09 | 11988 | systems/win32/miktex/tm/packages/fnpct.tar.lzma
+2022/02/07 | 511078 | systems/win32/miktex/tm/packages/fnpct__doc.tar.lzma
+2022/02/07 | 8478 | systems/win32/miktex/tm/packages/fnpct__source.tar.lzma
+2022/02/07 | 12235 | systems/win32/miktex/tm/packages/fnpct.tar.lzma
2017/09/21 | 172726 | systems/win32/miktex/tm/packages/fnspe.tar.lzma
2010/12/13 | 216596 | systems/win32/miktex/tm/packages/fntproof.tar.lzma
2013/02/22 | 260345 | systems/win32/miktex/tm/packages/fnumprint.tar.lzma
@@ -297217,15 +297244,15 @@
2017/08/22 | 278877 | systems/win32/miktex/tm/packages/fontloader-luaotfload.tar.lzma
2017/03/20 | 94879 | systems/win32/miktex/tm/packages/fontmfizz.tar.lzma
2021/01/02 | 128815 | systems/win32/miktex/tm/packages/fontname.tar.lzma
-2021/11/20 | 127451 | systems/win32/miktex/tm/packages/fontools__doc.tar.lzma
-2021/11/20 | 52520 | systems/win32/miktex/tm/packages/fontools.tar.lzma
+2022/02/07 | 127482 | systems/win32/miktex/tm/packages/fontools__doc.tar.lzma
+2022/02/07 | 52518 | systems/win32/miktex/tm/packages/fontools.tar.lzma
2005/06/25 | 33931 | systems/win32/miktex/tm/packages/fontsampler.cab
2020/02/13 | 2425284 | systems/win32/miktex/tm/packages/fonts-arundina.tar.lzma
2020/10/03 | 1907391 | systems/win32/miktex/tm/packages/fonts-churchslavonic.tar.lzma
-2021/12/14 | 467896 | systems/win32/miktex/tm/packages/fontsetup__doc.tar.lzma
+2022/02/07 | 527206 | systems/win32/miktex/tm/packages/fontsetup__doc.tar.lzma
2021/05/08 | 334066 | systems/win32/miktex/tm/packages/fontsetup-nonfree.tar.lzma
-2021/12/14 | 5286 | systems/win32/miktex/tm/packages/fontsetup__source.tar.lzma
-2021/12/14 | 6682 | systems/win32/miktex/tm/packages/fontsetup.tar.lzma
+2022/02/07 | 5349 | systems/win32/miktex/tm/packages/fontsetup__source.tar.lzma
+2022/02/07 | 6877 | systems/win32/miktex/tm/packages/fontsetup.tar.lzma
2021/08/05 | 379528 | systems/win32/miktex/tm/packages/fontsize__doc.tar.lzma
2021/08/05 | 15380 | systems/win32/miktex/tm/packages/fontsize__source.tar.lzma
2021/08/05 | 5188 | systems/win32/miktex/tm/packages/fontsize.tar.lzma
@@ -297431,8 +297458,8 @@
2021/08/03 | 7188 | systems/win32/miktex/tm/packages/graphicscache__source.tar.lzma
2021/08/03 | 3485 | systems/win32/miktex/tm/packages/graphicscache.tar.lzma
2016/11/04 | 1845 | systems/win32/miktex/tm/packages/graphics-cfg.tar.lzma
-2021/11/23 | 1081 | systems/win32/miktex/tm/packages/graphics-def__doc.tar.lzma
-2021/11/23 | 11094 | systems/win32/miktex/tm/packages/graphics-def.tar.lzma
+2022/02/07 | 1061 | systems/win32/miktex/tm/packages/graphics-def__doc.tar.lzma
+2022/02/07 | 11126 | systems/win32/miktex/tm/packages/graphics-def.tar.lzma
2021/12/15 | 2014148 | systems/win32/miktex/tm/packages/graphics__doc.tar.lzma
2021/11/20 | 2665 | systems/win32/miktex/tm/packages/graphics-pln__doc.tar.lzma
2021/11/20 | 9050 | systems/win32/miktex/tm/packages/graphics-pln.tar.lzma
@@ -297491,9 +297518,9 @@
2012/09/14 | 432549 | systems/win32/miktex/tm/packages/hacm.tar.lzma
2020/10/31 | 3898854 | systems/win32/miktex/tm/packages/hagenberg-thesis.tar.lzma
2019/11/02 | 936424 | systems/win32/miktex/tm/packages/halloweenmath.tar.lzma
-2022/01/24 | 179934 | systems/win32/miktex/tm/packages/hamnosys__doc.tar.lzma
-2022/01/24 | 16192 | systems/win32/miktex/tm/packages/hamnosys__source.tar.lzma
-2022/01/24 | 20885 | systems/win32/miktex/tm/packages/hamnosys.tar.lzma
+2022/02/07 | 186949 | systems/win32/miktex/tm/packages/hamnosys__doc.tar.lzma
+2022/02/07 | 16182 | systems/win32/miktex/tm/packages/hamnosys__source.tar.lzma
+2022/02/07 | 20802 | systems/win32/miktex/tm/packages/hamnosys.tar.lzma
2018/07/23 | 445055 | systems/win32/miktex/tm/packages/handin.tar.lzma
2017/04/23 | 198187 | systems/win32/miktex/tm/packages/handout.tar.lzma
2021/11/13 | 318720 | systems/win32/miktex/tm/packages/handoutwithnotes__doc.tar.lzma
@@ -297508,8 +297535,11 @@
2012/01/10 | 52557 | systems/win32/miktex/tm/packages/happy4th.tar.lzma
2005/09/15 | 278342 | systems/win32/miktex/tm/packages/ha-prosper.cab
2005/12/29 | 1366 | systems/win32/miktex/tm/packages/har2nat.cab
-2021/04/14 | 25718673 | systems/win32/miktex/tm/packages/haranoaji-extra.tar.lzma
-2021/02/01 | 26004880 | systems/win32/miktex/tm/packages/haranoaji.tar.lzma
+2022/02/07 | 3328 | systems/win32/miktex/tm/packages/haranoaji__doc.tar.lzma
+2022/02/07 | 3337 | systems/win32/miktex/tm/packages/haranoaji-extra__doc.tar.lzma
+2022/02/07 | 25752265 | systems/win32/miktex/tm/packages/haranoaji-extra.tar.lzma
+2022/02/07 | 935 | systems/win32/miktex/tm/packages/haranoaji__source.tar.lzma
+2022/02/07 | 25900642 | systems/win32/miktex/tm/packages/haranoaji.tar.lzma
2011/02/15 | 134243 | systems/win32/miktex/tm/packages/hardwrap.tar.lzma
2007/05/12 | 6681 | systems/win32/miktex/tm/packages/harmony.tar.bz2
2012/05/29 | 52924 | systems/win32/miktex/tm/packages/harnon-cv.tar.lzma
@@ -297663,8 +297693,8 @@
2021/07/06 | 3605 | systems/win32/miktex/tm/packages/ifptex__doc.tar.lzma
2021/07/06 | 3373 | systems/win32/miktex/tm/packages/ifptex.tar.lzma
2016/09/22 | 129620 | systems/win32/miktex/tm/packages/ifsym.tar.lzma
-2021/06/06 | 219105 | systems/win32/miktex/tm/packages/iftex__doc.tar.lzma
-2021/06/06 | 3134 | systems/win32/miktex/tm/packages/iftex.tar.lzma
+2022/02/07 | 229464 | systems/win32/miktex/tm/packages/iftex__doc.tar.lzma
+2022/02/07 | 3283 | systems/win32/miktex/tm/packages/iftex.tar.lzma
2012/04/04 | 4704 | systems/win32/miktex/tm/packages/ifthenx.tar.lzma
2017/09/06 | 201604 | systems/win32/miktex/tm/packages/ifxptex.tar.lzma
2007/02/20 | 668774 | systems/win32/miktex/tm/packages/igo.tar.bz2
@@ -297766,7 +297796,9 @@
2021/11/07 | 518906 | systems/win32/miktex/tm/packages/jlreq__doc.tar.lzma
2021/07/24 | 8661 | systems/win32/miktex/tm/packages/jlreq__source.tar.lzma
2021/11/07 | 149705 | systems/win32/miktex/tm/packages/jlreq.tar.lzma
-2020/10/03 | 1810556 | systems/win32/miktex/tm/packages/jmlr.tar.lzma
+2022/02/07 | 967134 | systems/win32/miktex/tm/packages/jmlr__doc.tar.lzma
+2022/02/07 | 42857 | systems/win32/miktex/tm/packages/jmlr__source.tar.lzma
+2022/02/07 | 17725 | systems/win32/miktex/tm/packages/jmlr.tar.lzma
2006/04/13 | 7131 | systems/win32/miktex/tm/packages/jneurosci.cab
2020/11/09 | 602780 | systems/win32/miktex/tm/packages/jnuexam.tar.lzma
2020/12/21 | 1269380 | systems/win32/miktex/tm/packages/josefin.tar.lzma
@@ -297874,12 +297906,12 @@
2021/12/15 | 31170 | systems/win32/miktex/tm/packages/l3build__source.tar.lzma
2021/12/15 | 35706 | systems/win32/miktex/tm/packages/l3build.tar.lzma
2013/05/29 | 156214 | systems/win32/miktex/tm/packages/l3ctr2e.tar.lzma
-2021/11/13 | 3506514 | systems/win32/miktex/tm/packages/l3experimental__doc.tar.lzma
-2021/11/13 | 80561 | systems/win32/miktex/tm/packages/l3experimental__source.tar.lzma
-2021/11/13 | 23575 | systems/win32/miktex/tm/packages/l3experimental.tar.lzma
-2022/01/24 | 10887168 | systems/win32/miktex/tm/packages/l3kernel__doc.tar.lzma
-2022/01/24 | 583735 | systems/win32/miktex/tm/packages/l3kernel__source.tar.lzma
-2022/01/24 | 169691 | systems/win32/miktex/tm/packages/l3kernel.tar.lzma
+2022/02/07 | 3509083 | systems/win32/miktex/tm/packages/l3experimental__doc.tar.lzma
+2022/02/07 | 80496 | systems/win32/miktex/tm/packages/l3experimental__source.tar.lzma
+2022/02/07 | 23548 | systems/win32/miktex/tm/packages/l3experimental.tar.lzma
+2022/02/07 | 11397504 | systems/win32/miktex/tm/packages/l3kernel__doc.tar.lzma
+2022/02/07 | 585343 | systems/win32/miktex/tm/packages/l3kernel__source.tar.lzma
+2022/02/07 | 169973 | systems/win32/miktex/tm/packages/l3kernel.tar.lzma
2022/01/24 | 1809233 | systems/win32/miktex/tm/packages/l3packages__doc.tar.lzma
2022/01/24 | 45993 | systems/win32/miktex/tm/packages/l3packages__source.tar.lzma
2022/01/24 | 21833 | systems/win32/miktex/tm/packages/l3packages.tar.lzma
@@ -297907,8 +297939,8 @@
2021/09/06 | 20924 | systems/win32/miktex/tm/packages/lastpage__source.tar.lzma
2021/09/06 | 3728 | systems/win32/miktex/tm/packages/lastpage.tar.lzma
2021/01/02 | 1948756 | systems/win32/miktex/tm/packages/latex2e-help-texinfo-fr.tar.lzma
-2021/07/27 | 1419948 | systems/win32/miktex/tm/packages/latex2e-help-texinfo__source.tar.lzma
-2021/07/27 | 1672031 | systems/win32/miktex/tm/packages/latex2e-help-texinfo.tar.lzma
+2022/02/07 | 1433452 | systems/win32/miktex/tm/packages/latex2e-help-texinfo__source.tar.lzma
+2022/02/07 | 1696548 | systems/win32/miktex/tm/packages/latex2e-help-texinfo.tar.lzma
2018/11/26 | 335319 | systems/win32/miktex/tm/packages/latex2man.tar.lzma
2021/09/18 | 19490 | systems/win32/miktex/tm/packages/latex2nemeth__doc.tar.lzma
2021/09/18 | 147725 | systems/win32/miktex/tm/packages/latex2nemeth__source.tar.lzma
@@ -297920,9 +297952,9 @@
2022/01/24 | 66225 | systems/win32/miktex/tm/packages/latex-amsmath-dev__source.tar.lzma
2022/01/24 | 30881 | systems/win32/miktex/tm/packages/latex-amsmath-dev.tar.lzma
2016/11/05 | 150896 | systems/win32/miktex/tm/packages/latexbangla.tar.lzma
-2022/01/24 | 28788130 | systems/win32/miktex/tm/packages/latex-base-dev__doc.tar.lzma
-2022/01/24 | 693734 | systems/win32/miktex/tm/packages/latex-base-dev__source.tar.lzma
-2022/01/24 | 222206 | systems/win32/miktex/tm/packages/latex-base-dev.tar.lzma
+2022/02/07 | 28834752 | systems/win32/miktex/tm/packages/latex-base-dev__doc.tar.lzma
+2022/02/07 | 694962 | systems/win32/miktex/tm/packages/latex-base-dev__source.tar.lzma
+2022/02/07 | 222334 | systems/win32/miktex/tm/packages/latex-base-dev.tar.lzma
2021/10/03 | 208129 | systems/win32/miktex/tm/packages/latexbug__doc.tar.lzma
2021/10/03 | 10359 | systems/win32/miktex/tm/packages/latexbug__source.tar.lzma
2021/10/03 | 5635 | systems/win32/miktex/tm/packages/latexbug.tar.lzma
@@ -297943,6 +297975,8 @@
2021/11/13 | 7963 | systems/win32/miktex/tm/packages/latex-firstaid__source.tar.lzma
2021/11/13 | 3571 | systems/win32/miktex/tm/packages/latex-firstaid.tar.lzma
2009/06/30 | 18674 | systems/win32/miktex/tm/packages/latex-fonts.tar.lzma
+2022/02/07 | 1308527 | systems/win32/miktex/tm/packages/latex-for-undergraduates__source.tar.lzma
+2022/02/07 | 1784641 | systems/win32/miktex/tm/packages/latex-for-undergraduates.tar.lzma
2020/02/28 | 86786 | systems/win32/miktex/tm/packages/latex-git-log.tar.lzma
2020/04/21 | 455359 | systems/win32/miktex/tm/packages/latexgit.tar.lzma
2022/01/24 | 2504654 | systems/win32/miktex/tm/packages/latex-graphics-dev__doc.tar.lzma
@@ -298023,15 +298057,16 @@
2021/07/24 | 587676 | systems/win32/miktex/tm/packages/libertinus-otf__doc.tar.lzma
2021/07/24 | 9238 | systems/win32/miktex/tm/packages/libertinus-otf__source.tar.lzma
2021/07/24 | 3961 | systems/win32/miktex/tm/packages/libertinus-otf.tar.lzma
-2022/01/09 | 1537473 | systems/win32/miktex/tm/packages/libertinust1math__doc.tar.lzma
+2022/02/07 | 1540651 | systems/win32/miktex/tm/packages/libertinust1math__doc.tar.lzma
2022/01/09 | 6266 | systems/win32/miktex/tm/packages/libertinust1math__source.tar.lzma
-2022/01/09 | 1252687 | systems/win32/miktex/tm/packages/libertinust1math.tar.lzma
+2022/02/07 | 1252897 | systems/win32/miktex/tm/packages/libertinust1math.tar.lzma
2020/05/07 | 17336 | systems/win32/miktex/tm/packages/libertinus.tar.lzma
2021/02/19 | 10239524 | systems/win32/miktex/tm/packages/libertinus-type1.tar.lzma
2012/09/26 | 53049 | systems/win32/miktex/tm/packages/libgreek.tar.lzma
2010/06/18 | 167997 | systems/win32/miktex/tm/packages/librarian.tar.lzma
2020/08/09 | 609825 | systems/win32/miktex/tm/packages/librebaskerville.tar.lzma
-2016/01/14 | 568853 | systems/win32/miktex/tm/packages/librebodoni.tar.lzma
+2022/02/07 | 20448 | systems/win32/miktex/tm/packages/librebodoni__doc.tar.lzma
+2022/02/07 | 549130 | systems/win32/miktex/tm/packages/librebodoni.tar.lzma
2020/08/09 | 802532 | systems/win32/miktex/tm/packages/librecaslon.tar.lzma
2019/10/25 | 3039369 | systems/win32/miktex/tm/packages/librefranklin.tar.lzma
2010/07/27 | 754595 | systems/win32/miktex/tm/packages/libris.tar.lzma
@@ -298221,9 +298256,9 @@
2021/08/11 | 7867 | systems/win32/miktex/tm/packages/lua-uni-algos.tar.lzma
2021/01/11 | 294199 | systems/win32/miktex/tm/packages/lua-visual-debug.tar.lzma
2021/03/03 | 103795 | systems/win32/miktex/tm/packages/luavlna.tar.lzma
-2021/12/17 | 289185 | systems/win32/miktex/tm/packages/lua-widow-control__doc.tar.lzma
-2021/12/17 | 12443 | systems/win32/miktex/tm/packages/lua-widow-control__source.tar.lzma
-2021/12/17 | 6768 | systems/win32/miktex/tm/packages/lua-widow-control.tar.lzma
+2022/02/07 | 293628 | systems/win32/miktex/tm/packages/lua-widow-control__doc.tar.lzma
+2022/02/07 | 12466 | systems/win32/miktex/tm/packages/lua-widow-control__source.tar.lzma
+2022/02/07 | 6733 | systems/win32/miktex/tm/packages/lua-widow-control.tar.lzma
2021/10/14 | 114779 | systems/win32/miktex/tm/packages/luaxml__doc.tar.lzma
2021/10/14 | 9729 | systems/win32/miktex/tm/packages/luaxml__source.tar.lzma
2021/10/14 | 32350 | systems/win32/miktex/tm/packages/luaxml.tar.lzma
@@ -298246,9 +298281,9 @@
2021/11/13 | 4201 | systems/win32/miktex/tm/packages/lutabulartools__source.tar.lzma
2021/11/13 | 6083 | systems/win32/miktex/tm/packages/lutabulartools.tar.lzma
2004/03/16 | 167583 | systems/win32/miktex/tm/packages/luxi.cab
-2021/10/03 | 3011033 | systems/win32/miktex/tm/packages/lwarp__doc.tar.lzma
-2021/10/03 | 445855 | systems/win32/miktex/tm/packages/lwarp__source.tar.lzma
-2021/10/03 | 205452 | systems/win32/miktex/tm/packages/lwarp.tar.lzma
+2022/02/07 | 3047041 | systems/win32/miktex/tm/packages/lwarp__doc.tar.lzma
+2022/02/07 | 448958 | systems/win32/miktex/tm/packages/lwarp__source.tar.lzma
+2022/02/07 | 206311 | systems/win32/miktex/tm/packages/lwarp.tar.lzma
2013/12/23 | 1470948 | systems/win32/miktex/tm/packages/lxfonts.tar.lzma
2011/01/18 | 57807 | systems/win32/miktex/tm/packages/ly1.tar.lzma
2019/05/29 | 884130 | systems/win32/miktex/tm/packages/lyluatex.tar.lzma
@@ -298288,9 +298323,9 @@
2017/07/04 | 2804679 | systems/win32/miktex/tm/packages/malayalam-latex.tar.lzma
2005/05/04 | 8243 | systems/win32/miktex/tm/packages/maltese.cab
2016/07/16 | 280131 | systems/win32/miktex/tm/packages/malvern.tar.lzma
-2021/08/28 | 452998 | systems/win32/miktex/tm/packages/mandi__doc.tar.lzma
-2021/08/28 | 28681 | systems/win32/miktex/tm/packages/mandi__source.tar.lzma
-2021/08/28 | 11455 | systems/win32/miktex/tm/packages/mandi.tar.lzma
+2022/02/07 | 483703 | systems/win32/miktex/tm/packages/mandi__doc.tar.lzma
+2022/02/07 | 30716 | systems/win32/miktex/tm/packages/mandi__source.tar.lzma
+2022/02/07 | 12189 | systems/win32/miktex/tm/packages/mandi.tar.lzma
2020/04/04 | 258136 | systems/win32/miktex/tm/packages/manfnt.tar.lzma
2018/09/05 | 25785 | systems/win32/miktex/tm/packages/manfnt-type1.tar.lzma
2015/01/24 | 60553 | systems/win32/miktex/tm/packages/manuscript.tar.lzma
@@ -298304,9 +298339,9 @@
2018/07/27 | 222854 | systems/win32/miktex/tm/packages/marginfit.tar.lzma
2020/05/12 | 265372 | systems/win32/miktex/tm/packages/marginfix.tar.lzma
2018/08/14 | 331408 | systems/win32/miktex/tm/packages/marginnote.tar.lzma
-2022/01/02 | 885491 | systems/win32/miktex/tm/packages/markdown__doc.tar.lzma
-2022/01/02 | 85270 | systems/win32/miktex/tm/packages/markdown__source.tar.lzma
-2022/01/02 | 40947 | systems/win32/miktex/tm/packages/markdown.tar.lzma
+2022/02/07 | 891508 | systems/win32/miktex/tm/packages/markdown__doc.tar.lzma
+2022/02/07 | 86007 | systems/win32/miktex/tm/packages/markdown__source.tar.lzma
+2022/02/07 | 41194 | systems/win32/miktex/tm/packages/markdown.tar.lzma
2012/04/17 | 561606 | systems/win32/miktex/tm/packages/marvosym.tar.lzma
2021/03/25 | 4805865 | systems/win32/miktex/tm/packages/matapli.tar.lzma
2014/12/22 | 402728 | systems/win32/miktex/tm/packages/matc3mem.tar.lzma
@@ -298337,7 +298372,9 @@
2011/06/23 | 3523427 | systems/win32/miktex/tm/packages/mathspic.tar.lzma
2011/02/11 | 122992 | systems/win32/miktex/tm/packages/mathstone.tar.lzma
2006/10/05 | 40045 | systems/win32/miktex/tm/packages/mathtime.cab
-2021/04/14 | 1097017 | systems/win32/miktex/tm/packages/mathtools.tar.lzma
+2022/02/07 | 1037277 | systems/win32/miktex/tm/packages/mathtools__doc.tar.lzma
+2022/02/07 | 89706 | systems/win32/miktex/tm/packages/mathtools__source.tar.lzma
+2022/02/07 | 20349 | systems/win32/miktex/tm/packages/mathtools.tar.lzma
2014/06/23 | 692686 | systems/win32/miktex/tm/packages/matlab-prettifier.tar.lzma
2019/08/08 | 149195 | systems/win32/miktex/tm/packages/matrix-skeleton.tar.lzma
2010/03/30 | 726094 | systems/win32/miktex/tm/packages/mattens.tar.lzma
@@ -298658,18 +298695,18 @@
2018/01/12 | 157226 | systems/win32/miktex/tm/packages/miktex-zip-bin-x64.tar.lzma
2022/01/29 | 39717 | systems/win32/miktex/tm/packages/miktex-zlib-bin-2.9.tar.lzma
2022/01/29 | 43173 | systems/win32/miktex/tm/packages/miktex-zlib-bin-x64-2.9.tar.lzma
-2022/02/06 | 262652 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
-2022/02/06 | 1410708 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
-2022/02/06 | 1305401 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
+2022/02/07 | 265226 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
+2022/02/07 | 1417050 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
+2022/02/07 | 1309336 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
2022/01/29 | 13505 | systems/win32/miktex/tm/packages/miktex-zzip-bin-2.9.tar.lzma
2022/01/29 | 14408 | systems/win32/miktex/tm/packages/miktex-zzip-bin-x64-2.9.tar.lzma
2016/07/15 | 35914 | systems/win32/miktex/tm/packages/mil3.tar.lzma
2004/11/11 | 10497 | systems/win32/miktex/tm/packages/miller.cab
2016/07/06 | 405919 | systems/win32/miktex/tm/packages/milog.tar.lzma
2020/03/18 | 1596082 | systems/win32/miktex/tm/packages/milsymb.tar.lzma
-2021/12/17 | 179166 | systems/win32/miktex/tm/packages/mindflow__doc.tar.lzma
-2021/12/17 | 6582 | systems/win32/miktex/tm/packages/mindflow__source.tar.lzma
-2021/12/17 | 2716 | systems/win32/miktex/tm/packages/mindflow.tar.lzma
+2022/02/07 | 196468 | systems/win32/miktex/tm/packages/mindflow__doc.tar.lzma
+2022/02/07 | 6897 | systems/win32/miktex/tm/packages/mindflow__source.tar.lzma
+2022/02/07 | 2753 | systems/win32/miktex/tm/packages/mindflow.tar.lzma
2013/07/01 | 286736 | systems/win32/miktex/tm/packages/minibox.tar.lzma
2017/04/13 | 193445 | systems/win32/miktex/tm/packages/minidocument.tar.lzma
2014/01/06 | 486298 | systems/win32/miktex/tm/packages/minifp.tar.lzma
@@ -298871,9 +298908,9 @@
2019/11/26 | 120397 | systems/win32/miktex/tm/packages/newfloat.tar.lzma
2009/04/21 | 411400 | systems/win32/miktex/tm/packages/newlfm.tar.lzma
2021/03/08 | 77936 | systems/win32/miktex/tm/packages/newpax.tar.lzma
-2022/01/02 | 239490 | systems/win32/miktex/tm/packages/newpx__doc.tar.lzma
+2022/02/07 | 239552 | systems/win32/miktex/tm/packages/newpx__doc.tar.lzma
2021/12/07 | 18529 | systems/win32/miktex/tm/packages/newpx__source.tar.lzma
-2022/01/02 | 2872226 | systems/win32/miktex/tm/packages/newpx.tar.lzma
+2022/02/07 | 2873220 | systems/win32/miktex/tm/packages/newpx.tar.lzma
2005/06/25 | 43902 | systems/win32/miktex/tm/packages/newsletr.cab
2007/12/30 | 204631 | systems/win32/miktex/tm/packages/newspaper.tar.lzma
2022/01/24 | 601333 | systems/win32/miktex/tm/packages/newtx__doc.tar.lzma
@@ -298884,189 +298921,189 @@
2018/04/09 | 400132 | systems/win32/miktex/tm/packages/newunicodechar.tar.lzma
2011/09/19 | 101312 | systems/win32/miktex/tm/packages/newvbtm.tar.lzma
2021/03/17 | 232249 | systems/win32/miktex/tm/packages/newverbs.tar.lzma
-2022/02/06 | 635157 | systems/win32/miktex/tm/packages/next/files.csv.lzma
-2022/02/06 | 51549 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma
-2022/02/06 | 57354 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
-2022/02/06 | 960374 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma
-2022/02/06 | 1086643 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
-2022/02/06 | 28770 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma
-2022/02/06 | 31540 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
-2022/02/06 | 30182 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma
-2022/02/06 | 35238 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
-2022/02/06 | 56849 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma
-2022/02/06 | 65079 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
-2022/02/06 | 86495 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma
-2022/02/06 | 95214 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
-2022/02/06 | 68736 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma
-2022/02/06 | 77069 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
-2022/02/06 | 27254 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma
-2022/02/06 | 31335 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
-2022/02/06 | 332531 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma
-2022/02/06 | 393908 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
-2022/02/06 | 32964 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma
-2022/02/06 | 37112 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
-2022/02/06 | 51412 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma
-2022/02/06 | 57211 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
-2022/02/06 | 256593 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma
-2022/02/06 | 281917 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
-2022/02/06 | 179948 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma
-2022/02/06 | 196135 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
-2022/02/06 | 54997 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma
-2022/02/06 | 62444 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
-2022/02/06 | 21312 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma
-2022/02/06 | 24077 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
-2022/02/06 | 478897 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma
-2022/02/06 | 46110 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma
-2022/02/06 | 52004 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
-2022/02/06 | 285552 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma
-2022/02/06 | 326180 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
-2022/02/06 | 41388 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma
-2022/02/06 | 45736 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
-2022/02/06 | 120230 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma
-2022/02/06 | 134989 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
-2022/02/06 | 1300071 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma
-2022/02/06 | 1452956 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
-2022/02/06 | 99694 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma
-2022/02/06 | 113010 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
-2022/02/06 | 43653 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma
-2022/02/06 | 48820 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
-2022/02/06 | 25129 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma
-2022/02/06 | 28584 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
-2022/02/06 | 57011 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma
-2022/02/06 | 63365 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
-2022/02/06 | 135905 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma
-2022/02/06 | 155441 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
-2022/02/06 | 73652 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma
-2022/02/06 | 79058 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
-2022/02/06 | 72005 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma
-2022/02/06 | 81507 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
-2022/02/06 | 259151 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma
-2022/02/06 | 296123 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
-2022/02/06 | 22157 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma
-2022/02/06 | 25080 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
-2022/02/06 | 97052 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma
-2022/02/06 | 112668 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
-2022/02/06 | 64539 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma
-2022/02/06 | 73206 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
-2022/02/06 | 96823 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma
-2022/02/06 | 115634 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
-2022/02/06 | 38478 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma
-2022/02/06 | 43812 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
-2022/02/06 | 484673 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma
-2022/02/06 | 565708 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
-2022/02/06 | 152021 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma
-2022/02/06 | 168796 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
-2022/02/06 | 95477 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma
-2022/02/06 | 109549 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
-2022/02/06 | 16509 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma
-2022/02/06 | 18376 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
-2022/02/06 | 28337 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma
-2022/02/06 | 30561 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
-2022/02/06 | 630636 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma
-2022/02/06 | 682181 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
-2022/02/06 | 532414 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma
-2022/02/06 | 598775 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
-2022/02/06 | 477698 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma
-2022/02/06 | 528109 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
-2022/02/06 | 94013 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma
-2022/02/06 | 103411 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
-2022/02/06 | 1732207 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma
-2022/02/06 | 2006600 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
-2022/02/06 | 68021 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma
-2022/02/06 | 74118 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
-2022/02/06 | 27787 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma
-2022/02/06 | 32080 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
-2022/02/06 | 7759 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma
-2022/02/06 | 8779 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
-2022/02/06 | 199421 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma
-2022/02/06 | 216595 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
-2022/02/06 | 251253 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma
-2022/02/06 | 286572 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
-2022/02/06 | 99227 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma
-2022/02/06 | 104698 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
-2022/02/06 | 126864 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma
-2022/02/06 | 139187 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
-2022/02/06 | 254846 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma
-2022/02/06 | 286070 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
-2022/02/06 | 199791 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma
-2022/02/06 | 181556 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
-2022/02/06 | 68532 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma
-2022/02/06 | 76200 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
-2022/02/06 | 31412 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma
-2022/02/06 | 35178 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
-2022/02/06 | 38567 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma
-2022/02/06 | 43945 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
-2022/02/06 | 43429 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma
-2022/02/06 | 47985 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
-2022/02/06 | 45928 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma
-2022/02/06 | 52323 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
-2022/02/06 | 199170 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma
-2022/02/06 | 213133 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
-2022/02/06 | 36061 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma
-2022/02/06 | 41239 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
-2022/02/06 | 753732 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma
-2022/02/06 | 824418 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
-2022/02/06 | 200155 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma
-2022/02/06 | 203062 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
-2022/02/06 | 209863 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma
-2022/02/06 | 244997 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
-2022/02/06 | 78983 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma
-2022/02/06 | 88151 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
-2022/02/06 | 1181081 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma
-2022/02/06 | 1322847 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
-2022/02/06 | 20189 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma
-2022/02/06 | 23935 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
-2022/02/06 | 31570 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma
-2022/02/06 | 37377 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
-2022/02/06 | 64693 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma
-2022/02/06 | 72889 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
-2022/02/06 | 50823 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma
-2022/02/06 | 58644 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
-2022/02/06 | 691860 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin.tar.lzma
-2022/02/06 | 752443 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin-x64.tar.lzma
-2022/02/06 | 1355173 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma
-2022/02/06 | 1499490 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
-2022/02/06 | 42765 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma
-2022/02/06 | 52514 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
-2022/02/06 | 57562 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma
-2022/02/06 | 63750 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma
-2022/02/06 | 25481 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma
-2022/02/06 | 27460 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
-2022/02/06 | 16569 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma
-2022/02/06 | 18493 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
-2022/02/06 | 64505 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma
-2022/02/06 | 70973 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
-2022/02/06 | 157568 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma
-2022/02/06 | 172637 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
-2022/02/06 | 58729 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma
-2022/02/06 | 67221 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
-2022/02/06 | 101559 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma
-2022/02/06 | 109309 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
-2022/02/06 | 2674150 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma
-2022/02/06 | 2799002 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
-2022/02/06 | 55200 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma
-2022/02/06 | 62352 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
-2022/02/06 | 37133 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma
-2022/02/06 | 41215 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma
-2022/02/06 | 28703 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma
-2022/02/06 | 34051 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
-2022/02/06 | 67891 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma
-2022/02/06 | 71844 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
-2022/02/06 | 317512 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma
-2022/02/06 | 355066 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
-2022/02/06 | 55755 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin.tar.lzma
-2022/02/06 | 57423 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma
-2022/02/06 | 591259 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma
-2022/02/06 | 629384 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
-2022/02/06 | 39324 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma
-2022/02/06 | 43566 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
-2022/02/06 | 262753 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
-2022/02/06 | 1410376 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
-2022/02/06 | 1305217 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
-2022/02/06 | 13512 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma
-2022/02/06 | 14406 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
+2022/02/07 | 635379 | systems/win32/miktex/tm/packages/next/files.csv.lzma
+2022/02/07 | 51549 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma
+2022/02/07 | 57355 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
+2022/02/07 | 960374 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma
+2022/02/07 | 1086643 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
+2022/02/07 | 28769 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma
+2022/02/07 | 31539 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
+2022/02/07 | 30182 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma
+2022/02/07 | 35238 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
+2022/02/07 | 56850 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma
+2022/02/07 | 65079 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
+2022/02/07 | 86495 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma
+2022/02/07 | 95214 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
+2022/02/07 | 68736 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma
+2022/02/07 | 77069 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
+2022/02/07 | 27254 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma
+2022/02/07 | 31336 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
+2022/02/07 | 332531 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma
+2022/02/07 | 393910 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
+2022/02/07 | 32965 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma
+2022/02/07 | 37112 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
+2022/02/07 | 51414 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma
+2022/02/07 | 57210 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
+2022/02/07 | 256595 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma
+2022/02/07 | 281918 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
+2022/02/07 | 179947 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma
+2022/02/07 | 196136 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
+2022/02/07 | 54999 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma
+2022/02/07 | 62445 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
+2022/02/07 | 21312 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma
+2022/02/07 | 24078 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
+2022/02/07 | 478896 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma
+2022/02/07 | 46111 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma
+2022/02/07 | 52005 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
+2022/02/07 | 285553 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma
+2022/02/07 | 326180 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
+2022/02/07 | 41389 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma
+2022/02/07 | 45737 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
+2022/02/07 | 120230 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma
+2022/02/07 | 134990 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
+2022/02/07 | 1300071 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma
+2022/02/07 | 1452955 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
+2022/02/07 | 99696 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma
+2022/02/07 | 113012 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
+2022/02/07 | 43653 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma
+2022/02/07 | 48822 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
+2022/02/07 | 25130 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma
+2022/02/07 | 28584 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
+2022/02/07 | 57013 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma
+2022/02/07 | 63366 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
+2022/02/07 | 135905 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma
+2022/02/07 | 155442 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
+2022/02/07 | 73653 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma
+2022/02/07 | 79061 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
+2022/02/07 | 72004 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma
+2022/02/07 | 81505 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
+2022/02/07 | 259152 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma
+2022/02/07 | 296124 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
+2022/02/07 | 22157 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma
+2022/02/07 | 25079 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
+2022/02/07 | 97052 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma
+2022/02/07 | 112668 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
+2022/02/07 | 64540 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma
+2022/02/07 | 73205 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
+2022/02/07 | 96823 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma
+2022/02/07 | 115636 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
+2022/02/07 | 38478 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma
+2022/02/07 | 43812 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
+2022/02/07 | 484672 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma
+2022/02/07 | 565708 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
+2022/02/07 | 152021 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma
+2022/02/07 | 168798 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
+2022/02/07 | 95478 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma
+2022/02/07 | 109550 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
+2022/02/07 | 16509 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma
+2022/02/07 | 18378 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
+2022/02/07 | 28338 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma
+2022/02/07 | 30560 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
+2022/02/07 | 630635 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma
+2022/02/07 | 682183 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
+2022/02/07 | 532416 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma
+2022/02/07 | 598775 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
+2022/02/07 | 477698 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma
+2022/02/07 | 528110 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
+2022/02/07 | 94013 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma
+2022/02/07 | 103412 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
+2022/02/07 | 1732211 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma
+2022/02/07 | 2006600 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
+2022/02/07 | 68020 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma
+2022/02/07 | 74117 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
+2022/02/07 | 27787 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma
+2022/02/07 | 32080 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
+2022/02/07 | 7759 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma
+2022/02/07 | 8784 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
+2022/02/07 | 199422 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma
+2022/02/07 | 216595 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
+2022/02/07 | 251253 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma
+2022/02/07 | 286572 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
+2022/02/07 | 99226 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma
+2022/02/07 | 104698 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
+2022/02/07 | 126868 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma
+2022/02/07 | 139186 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
+2022/02/07 | 254846 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma
+2022/02/07 | 286071 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
+2022/02/07 | 199793 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma
+2022/02/07 | 181556 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
+2022/02/07 | 68531 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma
+2022/02/07 | 76201 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
+2022/02/07 | 31413 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma
+2022/02/07 | 35179 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
+2022/02/07 | 38568 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma
+2022/02/07 | 43947 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
+2022/02/07 | 43429 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma
+2022/02/07 | 47986 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
+2022/02/07 | 45928 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma
+2022/02/07 | 52324 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
+2022/02/07 | 199170 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma
+2022/02/07 | 213134 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
+2022/02/07 | 36061 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma
+2022/02/07 | 41239 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
+2022/02/07 | 753734 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma
+2022/02/07 | 824420 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
+2022/02/07 | 200155 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma
+2022/02/07 | 203064 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
+2022/02/07 | 209866 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma
+2022/02/07 | 244997 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
+2022/02/07 | 78984 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma
+2022/02/07 | 88151 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
+2022/02/07 | 1181082 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma
+2022/02/07 | 1322846 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
+2022/02/07 | 20190 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma
+2022/02/07 | 23936 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
+2022/02/07 | 31572 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma
+2022/02/07 | 37379 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
+2022/02/07 | 64693 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma
+2022/02/07 | 72890 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
+2022/02/07 | 50824 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma
+2022/02/07 | 58643 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
+2022/02/07 | 691861 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin.tar.lzma
+2022/02/07 | 752446 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin-x64.tar.lzma
+2022/02/07 | 1355174 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma
+2022/02/07 | 1499491 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
+2022/02/07 | 42765 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma
+2022/02/07 | 52515 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
+2022/02/07 | 57563 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma
+2022/02/07 | 63750 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma
+2022/02/07 | 25482 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma
+2022/02/07 | 27462 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
+2022/02/07 | 16570 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma
+2022/02/07 | 18494 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
+2022/02/07 | 64506 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma
+2022/02/07 | 70974 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
+2022/02/07 | 157568 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma
+2022/02/07 | 172638 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
+2022/02/07 | 58730 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma
+2022/02/07 | 67221 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
+2022/02/07 | 101562 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma
+2022/02/07 | 109309 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
+2022/02/07 | 2674149 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma
+2022/02/07 | 2799002 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
+2022/02/07 | 55202 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma
+2022/02/07 | 62354 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
+2022/02/07 | 37134 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma
+2022/02/07 | 41215 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma
+2022/02/07 | 28704 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma
+2022/02/07 | 34053 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
+2022/02/07 | 67892 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma
+2022/02/07 | 71845 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
+2022/02/07 | 317514 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma
+2022/02/07 | 355067 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
+2022/02/07 | 55754 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin.tar.lzma
+2022/02/07 | 57424 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma
+2022/02/07 | 591260 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma
+2022/02/07 | 629384 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
+2022/02/07 | 39325 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma
+2022/02/07 | 43569 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
+2022/02/07 | 265208 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
+2022/02/07 | 1416095 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
+2022/02/07 | 1309360 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
+2022/02/07 | 13512 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma
+2022/02/07 | 14407 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
2019/03/12 | 1412 | systems/win32/miktex/tm/packages/nextpage.tar.lzma
-2022/02/06 | 1153 | systems/win32/miktex/tm/packages/next/pr.ini
+2022/02/07 | 1153 | systems/win32/miktex/tm/packages/next/pr.ini
2018/07/06 | 145915 | systems/win32/miktex/tm/packages/nexus-otf.tar.lzma
2017/03/30 | 191149 | systems/win32/miktex/tm/packages/nfssext-cfr.tar.lzma
2012/12/20 | 612251 | systems/win32/miktex/tm/packages/nicefilelist.tar.lzma
@@ -299156,9 +299193,9 @@
2021/08/11 | 2026079 | systems/win32/miktex/tm/packages/nwafuthesis__doc.tar.lzma
2021/08/11 | 805052 | systems/win32/miktex/tm/packages/nwafuthesis__source.tar.lzma
2021/08/11 | 28318 | systems/win32/miktex/tm/packages/nwafuthesis.tar.lzma
-2021/10/14 | 1325314 | systems/win32/miktex/tm/packages/nwejm__doc.tar.lzma
-2021/10/14 | 47617 | systems/win32/miktex/tm/packages/nwejm__source.tar.lzma
-2021/10/14 | 4057308 | systems/win32/miktex/tm/packages/nwejm.tar.lzma
+2022/02/07 | 1321432 | systems/win32/miktex/tm/packages/nwejm__doc.tar.lzma
+2022/02/07 | 49576 | systems/win32/miktex/tm/packages/nwejm__source.tar.lzma
+2022/02/07 | 4074733 | systems/win32/miktex/tm/packages/nwejm.tar.lzma
2005/12/30 | 63383 | systems/win32/miktex/tm/packages/oands.cab
2021/11/20 | 8516338 | systems/win32/miktex/tm/packages/oberdiek__doc.tar.lzma
2021/11/20 | 114239 | systems/win32/miktex/tm/packages/oberdiek__source.tar.lzma
@@ -299197,9 +299234,9 @@
2021/07/02 | 32634 | systems/win32/miktex/tm/packages/optexcount__doc.tar.lzma
2021/07/02 | 3024 | systems/win32/miktex/tm/packages/optexcount__source.tar.lzma
2021/07/02 | 6319 | systems/win32/miktex/tm/packages/optexcount.tar.lzma
-2021/08/28 | 1988454 | systems/win32/miktex/tm/packages/optex__doc.tar.lzma
+2022/02/07 | 2000760 | systems/win32/miktex/tm/packages/optex__doc.tar.lzma
2021/08/28 | 28234 | systems/win32/miktex/tm/packages/optex__source.tar.lzma
-2021/08/28 | 199784 | systems/win32/miktex/tm/packages/optex.tar.lzma
+2022/02/07 | 200979 | systems/win32/miktex/tm/packages/optex.tar.lzma
2019/04/24 | 262064 | systems/win32/miktex/tm/packages/optidef.tar.lzma
2010/05/10 | 298765 | systems/win32/miktex/tm/packages/optional.tar.lzma
2015/12/08 | 233022 | systems/win32/miktex/tm/packages/options.tar.lzma
@@ -299258,9 +299295,9 @@
2020/04/23 | 136368 | systems/win32/miktex/tm/packages/parsa.tar.lzma
2011/02/21 | 145575 | systems/win32/miktex/tm/packages/parselines.tar.lzma
2021/03/17 | 321741 | systems/win32/miktex/tm/packages/parskip.tar.lzma
-2022/01/09 | 161890 | systems/win32/miktex/tm/packages/pascaltriangle__doc.tar.lzma
-2022/01/09 | 3939 | systems/win32/miktex/tm/packages/pascaltriangle__source.tar.lzma
-2022/01/09 | 3938 | systems/win32/miktex/tm/packages/pascaltriangle.tar.lzma
+2022/02/07 | 161923 | systems/win32/miktex/tm/packages/pascaltriangle__doc.tar.lzma
+2022/02/07 | 3918 | systems/win32/miktex/tm/packages/pascaltriangle__source.tar.lzma
+2022/02/07 | 3912 | systems/win32/miktex/tm/packages/pascaltriangle.tar.lzma
2020/07/19 | 740564 | systems/win32/miktex/tm/packages/pas-cours.tar.lzma
2013/12/04 | 171878 | systems/win32/miktex/tm/packages/pas-crosswords.tar.lzma
2013/11/28 | 333255 | systems/win32/miktex/tm/packages/pas-cv.tar.lzma
@@ -299276,6 +299313,9 @@
2021/10/21 | 794209 | systems/win32/miktex/tm/packages/pbibtex-base__doc.tar.lzma
2021/10/21 | 56264 | systems/win32/miktex/tm/packages/pbibtex-base__source.tar.lzma
2021/10/21 | 14822 | systems/win32/miktex/tm/packages/pbibtex-base.tar.lzma
+2022/02/07 | 912623 | systems/win32/miktex/tm/packages/pbibtex-manual__doc.tar.lzma
+2022/02/07 | 35288 | systems/win32/miktex/tm/packages/pbibtex-manual__source.tar.lzma
+2022/02/07 | 912617 | systems/win32/miktex/tm/packages/pbibtex-manual.tar.lzma
2011/12/09 | 243059 | systems/win32/miktex/tm/packages/pbox.tar.lzma
2004/02/22 | 502407 | systems/win32/miktex/tm/packages/pbsheet.cab
2011/01/12 | 181874 | systems/win32/miktex/tm/packages/pcarl.tar.lzma
@@ -299294,15 +299334,17 @@
2019/11/20 | 111715 | systems/win32/miktex/tm/packages/pdfjam.tar.lzma
2018/02/13 | 89850 | systems/win32/miktex/tm/packages/pdflatexpicscale.tar.lzma
2019/12/09 | 306824 | systems/win32/miktex/tm/packages/pdflscape.tar.lzma
-2022/01/24 | 8523446 | systems/win32/miktex/tm/packages/pdfmanagement-testphase__doc.tar.lzma
-2022/01/24 | 127363 | systems/win32/miktex/tm/packages/pdfmanagement-testphase__source.tar.lzma
-2022/01/24 | 49989 | systems/win32/miktex/tm/packages/pdfmanagement-testphase.tar.lzma
+2022/02/07 | 8525623 | systems/win32/miktex/tm/packages/pdfmanagement-testphase__doc.tar.lzma
+2022/02/07 | 127504 | systems/win32/miktex/tm/packages/pdfmanagement-testphase__source.tar.lzma
+2022/02/07 | 50243 | systems/win32/miktex/tm/packages/pdfmanagement-testphase.tar.lzma
2011/08/11 | 384460 | systems/win32/miktex/tm/packages/pdfmarginpar.tar.lzma
2021/11/07 | 566422 | systems/win32/miktex/tm/packages/pdfoverlay__doc.tar.lzma
2021/11/07 | 6275 | systems/win32/miktex/tm/packages/pdfoverlay__source.tar.lzma
2021/11/07 | 3183 | systems/win32/miktex/tm/packages/pdfoverlay.tar.lzma
2015/07/28 | 1817839 | systems/win32/miktex/tm/packages/pdfpagediff.tar.lzma
-2021/03/08 | 370406 | systems/win32/miktex/tm/packages/pdfpages.tar.lzma
+2022/02/07 | 323804 | systems/win32/miktex/tm/packages/pdfpages__doc.tar.lzma
+2022/02/07 | 35499 | systems/win32/miktex/tm/packages/pdfpages__source.tar.lzma
+2022/02/07 | 14205 | systems/win32/miktex/tm/packages/pdfpages.tar.lzma
2018/07/22 | 82751 | systems/win32/miktex/tm/packages/pdfpc-movie.tar.lzma
2021/02/15 | 178175 | systems/win32/miktex/tm/packages/pdfpc.tar.lzma
2017/12/04 | 270667 | systems/win32/miktex/tm/packages/pdfprivacy.tar.lzma
@@ -299513,7 +299555,7 @@
2020/10/20 | 342254 | systems/win32/miktex/tm/packages/preview.tar.lzma
2019/06/20 | 375963 | systems/win32/miktex/tm/packages/prftree.tar.lzma
2021/04/23 | 274028 | systems/win32/miktex/tm/packages/principia.tar.lzma
-2022/02/06 | 1151 | systems/win32/miktex/tm/packages/pr.ini
+2022/02/07 | 926 | systems/win32/miktex/tm/packages/pr.ini
2010/09/27 | 248469 | systems/win32/miktex/tm/packages/printlen.tar.lzma
2008/06/17 | 77313 | systems/win32/miktex/tm/packages/proba.tar.lzma
2017/07/12 | 988486 | systems/win32/miktex/tm/packages/probsoln.tar.lzma
@@ -299530,7 +299572,9 @@
2021/12/17 | 660171 | systems/win32/miktex/tm/packages/projlib__doc.tar.lzma
2021/12/17 | 41614 | systems/win32/miktex/tm/packages/projlib__source.tar.lzma
2021/12/17 | 16837 | systems/win32/miktex/tm/packages/projlib.tar.lzma
-2019/05/23 | 390400 | systems/win32/miktex/tm/packages/proof-at-the-end.tar.lzma
+2022/02/07 | 439512 | systems/win32/miktex/tm/packages/proof-at-the-end__doc.tar.lzma
+2022/02/07 | 20675 | systems/win32/miktex/tm/packages/proof-at-the-end__source.tar.lzma
+2022/02/07 | 6165 | systems/win32/miktex/tm/packages/proof-at-the-end.tar.lzma
2019/04/26 | 299565 | systems/win32/miktex/tm/packages/proofread.tar.lzma
2019/10/04 | 890932 | systems/win32/miktex/tm/packages/prooftrees.tar.lzma
2009/07/13 | 2304 | systems/win32/miktex/tm/packages/properties.tar.lzma
@@ -299630,11 +299674,15 @@
2021/09/06 | 8316712 | systems/win32/miktex/tm/packages/pst-moire__doc.tar.lzma
2021/09/06 | 18438 | systems/win32/miktex/tm/packages/pst-moire__source.tar.lzma
2021/09/06 | 5615 | systems/win32/miktex/tm/packages/pst-moire.tar.lzma
-2020/04/03 | 444847 | systems/win32/miktex/tm/packages/pst-node.tar.lzma
+2022/02/07 | 504261 | systems/win32/miktex/tm/packages/pst-node__doc.tar.lzma
+2022/02/07 | 27220 | systems/win32/miktex/tm/packages/pst-node__source.tar.lzma
+2022/02/07 | 25576 | systems/win32/miktex/tm/packages/pst-node.tar.lzma
2020/03/25 | 180754 | systems/win32/miktex/tm/packages/pst-ob3d.tar.lzma
2021/03/17 | 120180 | systems/win32/miktex/tm/packages/pst-ode.tar.lzma
2018/01/22 | 382442 | systems/win32/miktex/tm/packages/pstool.tar.lzma
-2021/03/03 | 3359482 | systems/win32/miktex/tm/packages/pst-optexp.tar.lzma
+2022/02/07 | 3164237 | systems/win32/miktex/tm/packages/pst-optexp__doc.tar.lzma
+2022/02/07 | 155020 | systems/win32/miktex/tm/packages/pst-optexp__source.tar.lzma
+2022/02/07 | 37965 | systems/win32/miktex/tm/packages/pst-optexp.tar.lzma
2016/09/06 | 323840 | systems/win32/miktex/tm/packages/pst-optic.tar.lzma
2005/12/30 | 1335509 | systems/win32/miktex/tm/packages/pst-osci.cab
2020/05/06 | 32330 | systems/win32/miktex/tm/packages/pst-ovl.tar.lzma
@@ -299724,9 +299772,9 @@
2021/11/01 | 9326 | systems/win32/miktex/tm/packages/pxtxalfa.tar.lzma
2020/02/09 | 131421 | systems/win32/miktex/tm/packages/pxufont.tar.lzma
2020/12/22 | 604136 | systems/win32/miktex/tm/packages/pygmentex.tar.lzma
-2021/11/07 | 82758 | systems/win32/miktex/tm/packages/pyluatex__doc.tar.lzma
-2021/11/07 | 4824 | systems/win32/miktex/tm/packages/pyluatex__source.tar.lzma
-2021/11/07 | 6893 | systems/win32/miktex/tm/packages/pyluatex.tar.lzma
+2022/02/07 | 84805 | systems/win32/miktex/tm/packages/pyluatex__doc.tar.lzma
+2022/02/07 | 5024 | systems/win32/miktex/tm/packages/pyluatex__source.tar.lzma
+2022/02/07 | 7085 | systems/win32/miktex/tm/packages/pyluatex.tar.lzma
2021/08/05 | 1179 | systems/win32/miktex/tm/packages/python__doc.tar.lzma
2017/02/10 | 3926 | systems/win32/miktex/tm/packages/pythonhighlight.tar.lzma
2021/08/05 | 2235 | systems/win32/miktex/tm/packages/python.tar.lzma
@@ -299803,9 +299851,9 @@
2021/03/25 | 549997 | systems/win32/miktex/tm/packages/regexpatch.tar.lzma
2020/03/23 | 335314 | systems/win32/miktex/tm/packages/register.tar.lzma
2012/01/10 | 416161 | systems/win32/miktex/tm/packages/regstats.tar.lzma
-2022/01/24 | 10221925 | systems/win32/miktex/tm/packages/reledmac__doc.tar.lzma
-2022/01/24 | 257192 | systems/win32/miktex/tm/packages/reledmac__source.tar.lzma
-2022/01/24 | 55392 | systems/win32/miktex/tm/packages/reledmac.tar.lzma
+2022/02/07 | 10221769 | systems/win32/miktex/tm/packages/reledmac__doc.tar.lzma
+2022/02/07 | 257200 | systems/win32/miktex/tm/packages/reledmac__source.tar.lzma
+2022/02/07 | 55372 | systems/win32/miktex/tm/packages/reledmac.tar.lzma
2016/07/18 | 62816 | systems/win32/miktex/tm/packages/relenc.tar.lzma
2013/05/29 | 315594 | systems/win32/miktex/tm/packages/relsize.tar.lzma
2010/02/12 | 58689 | systems/win32/miktex/tm/packages/renditions.tar.lzma
@@ -299880,7 +299928,9 @@
2009/01/22 | 297472 | systems/win32/miktex/tm/packages/sageep.tar.lzma
2020/10/18 | 798058 | systems/win32/miktex/tm/packages/sagetex.tar.lzma
2020/01/02 | 373536 | systems/win32/miktex/tm/packages/sanitize-umlaut.tar.lzma
-2021/03/17 | 956197 | systems/win32/miktex/tm/packages/sankey.tar.lzma
+2022/02/07 | 966262 | systems/win32/miktex/tm/packages/sankey__doc.tar.lzma
+2022/02/07 | 28021 | systems/win32/miktex/tm/packages/sankey__source.tar.lzma
+2022/02/07 | 10077 | systems/win32/miktex/tm/packages/sankey.tar.lzma
2005/05/04 | 598648 | systems/win32/miktex/tm/packages/sanskrit.cab
2017/01/12 | 744460 | systems/win32/miktex/tm/packages/sanskrit-t1.tar.lzma
2017/01/12 | 935933 | systems/win32/miktex/tm/packages/sanskrit.tar.lzma
@@ -299889,9 +299939,9 @@
2021/06/23 | 4885 | systems/win32/miktex/tm/packages/sansmathfonts__source.tar.lzma
2021/06/23 | 4275027 | systems/win32/miktex/tm/packages/sansmathfonts.tar.lzma
2010/04/27 | 185726 | systems/win32/miktex/tm/packages/sansmath.tar.lzma
-2022/01/09 | 321417 | systems/win32/miktex/tm/packages/sapthesis__doc.tar.lzma
-2022/01/09 | 14102 | systems/win32/miktex/tm/packages/sapthesis__source.tar.lzma
-2022/01/09 | 14630 | systems/win32/miktex/tm/packages/sapthesis.tar.lzma
+2022/02/07 | 305902 | systems/win32/miktex/tm/packages/sapthesis__doc.tar.lzma
+2022/02/07 | 13943 | systems/win32/miktex/tm/packages/sapthesis__source.tar.lzma
+2022/02/07 | 30561 | systems/win32/miktex/tm/packages/sapthesis.tar.lzma
2006/02/12 | 90043 | systems/win32/miktex/tm/packages/sarabian.cab
2017/12/02 | 219252 | systems/win32/miktex/tm/packages/sasnrdisplay.tar.lzma
2014/01/31 | 898533 | systems/win32/miktex/tm/packages/sa-tikz.tar.lzma
@@ -299908,7 +299958,9 @@
2019/08/02 | 256441 | systems/win32/miktex/tm/packages/schedule.tar.lzma
2009/01/22 | 155506 | systems/win32/miktex/tm/packages/schemabloc.tar.lzma
2021/03/03 | 844312 | systems/win32/miktex/tm/packages/schemata.tar.lzma
-2021/04/07 | 2222920 | systems/win32/miktex/tm/packages/scholax.tar.lzma
+2022/02/07 | 334342 | systems/win32/miktex/tm/packages/scholax__doc.tar.lzma
+2022/02/07 | 7712 | systems/win32/miktex/tm/packages/scholax__source.tar.lzma
+2022/02/07 | 1891732 | systems/win32/miktex/tm/packages/scholax.tar.lzma
2021/09/20 | 908269 | systems/win32/miktex/tm/packages/schooldocs__doc.tar.lzma
2021/09/20 | 10748 | systems/win32/miktex/tm/packages/schooldocs__source.tar.lzma
2021/09/20 | 3275 | systems/win32/miktex/tm/packages/schooldocs.tar.lzma
@@ -299929,7 +299981,9 @@
2021/10/03 | 194402 | systems/win32/miktex/tm/packages/scrambledenvs__doc.tar.lzma
2021/10/03 | 6186 | systems/win32/miktex/tm/packages/scrambledenvs__source.tar.lzma
2021/10/03 | 2643 | systems/win32/miktex/tm/packages/scrambledenvs.tar.lzma
-2020/09/06 | 531661 | systems/win32/miktex/tm/packages/scratch3.tar.lzma
+2022/02/07 | 523752 | systems/win32/miktex/tm/packages/scratch3__doc.tar.lzma
+2022/02/07 | 10111 | systems/win32/miktex/tm/packages/scratch3__source.tar.lzma
+2022/02/07 | 9057 | systems/win32/miktex/tm/packages/scratch3.tar.lzma
2018/04/08 | 510347 | systems/win32/miktex/tm/packages/scratch.tar.lzma
2017/07/29 | 435046 | systems/win32/miktex/tm/packages/scratchx.tar.lzma
2017/08/12 | 165612 | systems/win32/miktex/tm/packages/screenplay-pkg.tar.lzma
@@ -299945,9 +299999,9 @@
2009/07/13 | 181403 | systems/win32/miktex/tm/packages/sdrt.tar.lzma
2016/05/31 | 1997899 | systems/win32/miktex/tm/packages/sduthesis.tar.lzma
2010/11/01 | 258578 | systems/win32/miktex/tm/packages/secdot.tar.lzma
-2021/09/06 | 421039 | systems/win32/miktex/tm/packages/secnum__doc.tar.lzma
-2021/09/06 | 5781 | systems/win32/miktex/tm/packages/secnum__source.tar.lzma
-2020/02/03 | 388840 | systems/win32/miktex/tm/packages/secnum.tar.lzma
+2022/02/07 | 447707 | systems/win32/miktex/tm/packages/secnum__doc.tar.lzma
+2022/02/07 | 6250 | systems/win32/miktex/tm/packages/secnum__source.tar.lzma
+2022/02/07 | 2469 | systems/win32/miktex/tm/packages/secnum.tar.lzma
2005/10/23 | 18972 | systems/win32/miktex/tm/packages/sectionbox.cab
2019/03/12 | 52416 | systems/win32/miktex/tm/packages/sectionbreak.tar.lzma
2010/10/23 | 368753 | systems/win32/miktex/tm/packages/section.tar.lzma
@@ -300019,9 +300073,9 @@
2005/06/12 | 46888 | systems/win32/miktex/tm/packages/sides.cab
2016/02/18 | 315728 | systems/win32/miktex/tm/packages/signchart.tar.lzma
2012/07/11 | 489410 | systems/win32/miktex/tm/packages/silence.tar.lzma
-2022/01/24 | 270696 | systems/win32/miktex/tm/packages/sillypage__doc.tar.lzma
-2022/01/24 | 4232 | systems/win32/miktex/tm/packages/sillypage__source.tar.lzma
-2022/01/24 | 1593 | systems/win32/miktex/tm/packages/sillypage.tar.lzma
+2022/02/07 | 291877 | systems/win32/miktex/tm/packages/sillypage__doc.tar.lzma
+2022/02/07 | 4941 | systems/win32/miktex/tm/packages/sillypage__source.tar.lzma
+2022/02/07 | 13654 | systems/win32/miktex/tm/packages/sillypage.tar.lzma
2020/10/27 | 137964 | systems/win32/miktex/tm/packages/simplebnf.tar.lzma
2013/03/01 | 939150 | systems/win32/miktex/tm/packages/simplecd.tar.lzma
2014/11/20 | 300788 | systems/win32/miktex/tm/packages/simplecv.tar.lzma
@@ -300040,9 +300094,9 @@
2008/07/22 | 360807 | systems/win32/miktex/tm/packages/sistyle.tar.lzma
2011/04/21 | 76017 | systems/win32/miktex/tm/packages/sitem.tar.lzma
2007/12/09 | 81490 | systems/win32/miktex/tm/packages/siunits.tar.lzma
-2022/01/24 | 1209057 | systems/win32/miktex/tm/packages/siunitx__doc.tar.lzma
-2022/01/24 | 108258 | systems/win32/miktex/tm/packages/siunitx__source.tar.lzma
-2022/01/24 | 62132 | systems/win32/miktex/tm/packages/siunitx.tar.lzma
+2022/02/07 | 1210364 | systems/win32/miktex/tm/packages/siunitx__doc.tar.lzma
+2022/02/07 | 108504 | systems/win32/miktex/tm/packages/siunitx__source.tar.lzma
+2022/02/07 | 62168 | systems/win32/miktex/tm/packages/siunitx.tar.lzma
2009/02/21 | 477338 | systems/win32/miktex/tm/packages/skaknew.tar.lzma
2018/02/08 | 221377 | systems/win32/miktex/tm/packages/skak.tar.lzma
2011/06/23 | 1471957 | systems/win32/miktex/tm/packages/skb.tar.lzma
@@ -300093,9 +300147,9 @@
2017/01/03 | 143479 | systems/win32/miktex/tm/packages/sparklines.tar.lzma
2019/04/14 | 106425 | systems/win32/miktex/tm/packages/spark-otf.tar.lzma
2021/02/22 | 1423643 | systems/win32/miktex/tm/packages/spath3.tar.lzma
-2022/01/24 | 71624 | systems/win32/miktex/tm/packages/spbmark__doc.tar.lzma
-2022/01/24 | 3793 | systems/win32/miktex/tm/packages/spbmark__source.tar.lzma
-2022/01/24 | 3347 | systems/win32/miktex/tm/packages/spbmark.tar.lzma
+2022/02/07 | 74746 | systems/win32/miktex/tm/packages/spbmark__doc.tar.lzma
+2022/02/07 | 4055 | systems/win32/miktex/tm/packages/spbmark__source.tar.lzma
+2022/02/07 | 3362 | systems/win32/miktex/tm/packages/spbmark.tar.lzma
2022/01/09 | 1765051 | systems/win32/miktex/tm/packages/spectralsequences__doc.tar.lzma
2022/01/09 | 45340 | systems/win32/miktex/tm/packages/spectralsequences__source.tar.lzma
2022/01/09 | 72175 | systems/win32/miktex/tm/packages/spectralsequences.tar.lzma
@@ -300265,6 +300319,9 @@
2022/01/24 | 76984 | systems/win32/miktex/tm/packages/tagpdf__source.tar.lzma
2022/01/24 | 27055 | systems/win32/miktex/tm/packages/tagpdf.tar.lzma
2007/08/13 | 135721 | systems/win32/miktex/tm/packages/talk.tar.lzma
+2022/02/07 | 63660 | systems/win32/miktex/tm/packages/talos__doc.tar.lzma
+2022/02/07 | 2030 | systems/win32/miktex/tm/packages/talos__source.tar.lzma
+2022/02/07 | 97369 | systems/win32/miktex/tm/packages/talos.tar.lzma
2005/05/04 | 6944 | systems/win32/miktex/tm/packages/tamefloats.cab
2006/08/17 | 125942 | systems/win32/miktex/tm/packages/t-angles.cab
2004/09/09 | 107770 | systems/win32/miktex/tm/packages/tapir.cab
@@ -300323,9 +300380,9 @@
2018/08/27 | 999444 | systems/win32/miktex/tm/packages/tex-locale.tar.lzma
2020/03/25 | 4631 | systems/win32/miktex/tm/packages/texloganalyser.tar.lzma
2006/01/13 | 2094 | systems/win32/miktex/tm/packages/texlogos.cab
-2022/01/09 | 64908 | systems/win32/miktex/tm/packages/texlogsieve__doc.tar.lzma
-2022/01/09 | 6296 | systems/win32/miktex/tm/packages/texlogsieve__source.tar.lzma
-2022/01/09 | 32923 | systems/win32/miktex/tm/packages/texlogsieve.tar.lzma
+2022/02/07 | 65953 | systems/win32/miktex/tm/packages/texlogsieve__doc.tar.lzma
+2022/02/07 | 6514 | systems/win32/miktex/tm/packages/texlogsieve__source.tar.lzma
+2022/02/07 | 35447 | systems/win32/miktex/tm/packages/texlogsieve.tar.lzma
2006/09/22 | 256338 | systems/win32/miktex/tm/packages/texmate.cab
2009/01/02 | 93067 | systems/win32/miktex/tm/packages/texments.tar.lzma
2021/02/10 | 2137306 | systems/win32/miktex/tm/packages/texnegar.tar.lzma
@@ -300485,15 +300542,17 @@
2021/07/06 | 34168 | systems/win32/miktex/tm/packages/titlesec__source.tar.lzma
2021/07/06 | 20223 | systems/win32/miktex/tm/packages/titlesec.tar.lzma
2009/09/11 | 192166 | systems/win32/miktex/tm/packages/titling.tar.lzma
-2022/01/09 | 335456 | systems/win32/miktex/tm/packages/tkz-base__doc.tar.lzma
-2022/01/09 | 56072 | systems/win32/miktex/tm/packages/tkz-base__source.tar.lzma
-2022/01/09 | 15490 | systems/win32/miktex/tm/packages/tkz-base.tar.lzma
+2022/02/07 | 357768 | systems/win32/miktex/tm/packages/tkz-base__doc.tar.lzma
+2022/02/07 | 56089 | systems/win32/miktex/tm/packages/tkz-base__source.tar.lzma
+2022/02/07 | 15503 | systems/win32/miktex/tm/packages/tkz-base.tar.lzma
2021/01/22 | 945692 | systems/win32/miktex/tm/packages/tkz-berge.tar.lzma
2020/04/15 | 9380 | systems/win32/miktex/tm/packages/tkz-doc.tar.lzma
2022/01/24 | 994140 | systems/win32/miktex/tm/packages/tkz-euclide__doc.tar.lzma
2022/01/24 | 75011 | systems/win32/miktex/tm/packages/tkz-euclide__source.tar.lzma
2022/01/24 | 36938 | systems/win32/miktex/tm/packages/tkz-euclide.tar.lzma
-2020/05/06 | 753889 | systems/win32/miktex/tm/packages/tkz-fct.tar.lzma
+2022/02/07 | 718559 | systems/win32/miktex/tm/packages/tkz-fct__doc.tar.lzma
+2022/02/07 | 28095 | systems/win32/miktex/tm/packages/tkz-fct__source.tar.lzma
+2022/02/07 | 4916 | systems/win32/miktex/tm/packages/tkz-fct.tar.lzma
2021/01/22 | 332159 | systems/win32/miktex/tm/packages/tkz-graph.tar.lzma
2018/09/21 | 159649 | systems/win32/miktex/tm/packages/tkz-kiviat.tar.lzma
2018/09/21 | 343489 | systems/win32/miktex/tm/packages/tkz-linknodes.tar.lzma
@@ -300531,9 +300590,9 @@
2020/07/01 | 1071787 | systems/win32/miktex/tm/packages/tracklang.tar.lzma
2005/07/06 | 128933 | systems/win32/miktex/tm/packages/trajan.cab
2013/04/08 | 32051 | systems/win32/miktex/tm/packages/tram.tar.lzma
-2022/01/09 | 515035 | systems/win32/miktex/tm/packages/translations__doc.tar.lzma
-2022/01/09 | 8869 | systems/win32/miktex/tm/packages/translations__source.tar.lzma
-2022/01/09 | 13084 | systems/win32/miktex/tm/packages/translations.tar.lzma
+2022/02/07 | 515305 | systems/win32/miktex/tm/packages/translations__doc.tar.lzma
+2022/02/07 | 8858 | systems/win32/miktex/tm/packages/translations__source.tar.lzma
+2022/02/07 | 13710 | systems/win32/miktex/tm/packages/translations.tar.lzma
2021/06/03 | 243414 | systems/win32/miktex/tm/packages/translator.tar.lzma
2019/12/01 | 273853 | systems/win32/miktex/tm/packages/transparent.tar.lzma
2011/03/15 | 113853 | systems/win32/miktex/tm/packages/tree-dvips.tar.lzma
@@ -300658,17 +300717,17 @@
2011/05/25 | 474633 | systems/win32/miktex/tm/packages/unisugar.tar.lzma
2020/05/12 | 72331 | systems/win32/miktex/tm/packages/unitconv.tar.lzma
2021/04/07 | 194827 | systems/win32/miktex/tm/packages/unitipa.tar.lzma
-2021/11/07 | 1591835 | systems/win32/miktex/tm/packages/uni-titlepage__doc.tar.lzma
-2021/11/07 | 24042 | systems/win32/miktex/tm/packages/uni-titlepage__source.tar.lzma
-2021/11/07 | 10419 | systems/win32/miktex/tm/packages/uni-titlepage.tar.lzma
+2022/02/07 | 1590680 | systems/win32/miktex/tm/packages/uni-titlepage__doc.tar.lzma
+2022/02/07 | 24060 | systems/win32/miktex/tm/packages/uni-titlepage__source.tar.lzma
+2022/02/07 | 10424 | systems/win32/miktex/tm/packages/uni-titlepage.tar.lzma
2017/10/23 | 831131 | systems/win32/miktex/tm/packages/unitn-bimrep.tar.lzma
2005/01/09 | 652197 | systems/win32/miktex/tm/packages/unitsdef.cab
2016/07/20 | 216220 | systems/win32/miktex/tm/packages/units.tar.lzma
2014/05/09 | 549281 | systems/win32/miktex/tm/packages/universalis.tar.lzma
2019/08/30 | 658057 | systems/win32/miktex/tm/packages/universa.tar.lzma
-2021/11/07 | 2147196 | systems/win32/miktex/tm/packages/univie-ling__doc.tar.lzma
-2021/11/07 | 13775 | systems/win32/miktex/tm/packages/univie-ling__source.tar.lzma
-2021/11/07 | 132321 | systems/win32/miktex/tm/packages/univie-ling.tar.lzma
+2022/02/07 | 2148792 | systems/win32/miktex/tm/packages/univie-ling__doc.tar.lzma
+2022/02/07 | 13862 | systems/win32/miktex/tm/packages/univie-ling__source.tar.lzma
+2022/02/07 | 132349 | systems/win32/miktex/tm/packages/univie-ling.tar.lzma
2013/09/09 | 73791 | systems/win32/miktex/tm/packages/uni-wtal-ger.tar.lzma
2013/08/19 | 97009 | systems/win32/miktex/tm/packages/uni-wtal-lin.tar.lzma
2019/07/20 | 33320 | systems/win32/miktex/tm/packages/unizgklasa.tar.lzma
@@ -300684,7 +300743,7 @@
2021/07/08 | 98265 | systems/win32/miktex/tm/packages/upmethodology.tar.lzma
2016/10/18 | 171420 | systems/win32/miktex/tm/packages/uppunctlm.tar.lzma
2012/04/27 | 167179 | systems/win32/miktex/tm/packages/upquote.tar.lzma
-2021/10/21 | 160062 | systems/win32/miktex/tm/packages/uptex-base__doc.tar.lzma
+2022/02/07 | 160040 | systems/win32/miktex/tm/packages/uptex-base__doc.tar.lzma
2021/10/21 | 10020 | systems/win32/miktex/tm/packages/uptex-base.tar.lzma
2020/03/03 | 166576 | systems/win32/miktex/tm/packages/uptex-fonts.tar.lzma
2018/04/08 | 208382 | systems/win32/miktex/tm/packages/upzhkinsoku.tar.lzma
@@ -300803,9 +300862,9 @@
2006/04/13 | 17782 | systems/win32/miktex/tm/packages/wordlike.cab
2018/08/20 | 100026 | systems/win32/miktex/tm/packages/worksheet.tar.lzma
2021/05/18 | 4058301 | systems/win32/miktex/tm/packages/worldflags.tar.lzma
-2022/01/02 | 502988 | systems/win32/miktex/tm/packages/wrapfig2__doc.tar.lzma
-2022/01/02 | 17063 | systems/win32/miktex/tm/packages/wrapfig2__source.tar.lzma
-2022/01/02 | 5435 | systems/win32/miktex/tm/packages/wrapfig2.tar.lzma
+2022/02/07 | 749425 | systems/win32/miktex/tm/packages/wrapfig2__doc.tar.lzma
+2022/02/07 | 23711 | systems/win32/miktex/tm/packages/wrapfig2__source.tar.lzma
+2022/02/07 | 6475 | systems/win32/miktex/tm/packages/wrapfig2.tar.lzma
2022/01/09 | 334685 | systems/win32/miktex/tm/packages/wrapfig__doc.tar.lzma
2022/01/09 | 6343 | systems/win32/miktex/tm/packages/wrapfig__source.tar.lzma
2022/01/09 | 9608 | systems/win32/miktex/tm/packages/wrapfig.tar.lzma
@@ -300817,9 +300876,9 @@
2021/11/23 | 29712 | systems/win32/miktex/tm/packages/xassoccnt__source.tar.lzma
2021/11/23 | 19786 | systems/win32/miktex/tm/packages/xassoccnt.tar.lzma
2020/01/19 | 376430 | systems/win32/miktex/tm/packages/xbmks.tar.lzma
-2021/10/14 | 474738 | systems/win32/miktex/tm/packages/xcharter__doc.tar.lzma
+2022/02/07 | 474794 | systems/win32/miktex/tm/packages/xcharter__doc.tar.lzma
2021/09/06 | 10205 | systems/win32/miktex/tm/packages/xcharter__source.tar.lzma
-2021/10/14 | 2140486 | systems/win32/miktex/tm/packages/xcharter.tar.lzma
+2022/02/07 | 2140121 | systems/win32/miktex/tm/packages/xcharter.tar.lzma
2020/01/22 | 161707 | systems/win32/miktex/tm/packages/xcite.tar.lzma
2020/05/06 | 328896 | systems/win32/miktex/tm/packages/xcjk2uni.tar.lzma
2018/01/07 | 348703 | systems/win32/miktex/tm/packages/xcntperchap.tar.lzma
@@ -300844,8 +300903,10 @@
2014/12/22 | 80890 | systems/win32/miktex/tm/packages/xeindex.tar.lzma
2009/03/24 | 1448867 | systems/win32/miktex/tm/packages/xelibertine.tar.lzma
2018/04/17 | 358102 | systems/win32/miktex/tm/packages/xellipsis.tar.lzma
+2022/02/07 | 1004586 | systems/win32/miktex/tm/packages/xepersian__doc.tar.lzma
2020/09/06 | 1301445 | systems/win32/miktex/tm/packages/xepersian-hm.tar.lzma
-2020/05/18 | 1104015 | systems/win32/miktex/tm/packages/xepersian.tar.lzma
+2022/02/07 | 74931 | systems/win32/miktex/tm/packages/xepersian__source.tar.lzma
+2022/02/07 | 59514 | systems/win32/miktex/tm/packages/xepersian.tar.lzma
2019/08/22 | 623746 | systems/win32/miktex/tm/packages/xesearch.tar.lzma
2021/04/07 | 26436 | systems/win32/miktex/tm/packages/xesoul.tar.lzma
2021/03/03 | 146851 | systems/win32/miktex/tm/packages/xespotcolor.tar.lzma
@@ -300949,9 +301010,9 @@
2011/06/23 | 128192 | systems/win32/miktex/tm/packages/york-thesis.tar.lzma
2020/10/03 | 157093 | systems/win32/miktex/tm/packages/youngtab.tar.lzma
2016/07/18 | 10494 | systems/win32/miktex/tm/packages/yplan.tar.lzma
-2022/01/02 | 741823 | systems/win32/miktex/tm/packages/yquant__doc.tar.lzma
-2022/01/02 | 65689 | systems/win32/miktex/tm/packages/yquant__source.tar.lzma
-2022/01/02 | 52692 | systems/win32/miktex/tm/packages/yquant.tar.lzma
+2022/02/07 | 755978 | systems/win32/miktex/tm/packages/yquant__doc.tar.lzma
+2022/02/07 | 68031 | systems/win32/miktex/tm/packages/yquant__source.tar.lzma
+2022/02/07 | 56409 | systems/win32/miktex/tm/packages/yquant.tar.lzma
2016/07/28 | 23987 | systems/win32/miktex/tm/packages/yswab.tar.lzma
2016/10/18 | 1347285 | systems/win32/miktex/tm/packages/yt4pdf.tar.lzma
2021/06/15 | 379486 | systems/win32/miktex/tm/packages/ytableau__doc.tar.lzma
@@ -300988,10 +301049,13 @@
2021/12/23 | 1053650 | systems/win32/miktex/tm/packages/zref-check__doc.tar.lzma
2021/12/23 | 22752 | systems/win32/miktex/tm/packages/zref-check__source.tar.lzma
2021/12/23 | 5798 | systems/win32/miktex/tm/packages/zref-check.tar.lzma
-2022/01/24 | 1349951 | systems/win32/miktex/tm/packages/zref-clever__doc.tar.lzma
-2022/01/24 | 44722 | systems/win32/miktex/tm/packages/zref-clever__source.tar.lzma
-2022/01/24 | 19667 | systems/win32/miktex/tm/packages/zref-clever.tar.lzma
+2022/02/07 | 1452584 | systems/win32/miktex/tm/packages/zref-clever__doc.tar.lzma
+2022/02/07 | 46850 | systems/win32/miktex/tm/packages/zref-clever__source.tar.lzma
+2022/02/07 | 21071 | systems/win32/miktex/tm/packages/zref-clever.tar.lzma
2020/10/10 | 703582 | systems/win32/miktex/tm/packages/zref.tar.lzma
+2022/02/07 | 644870 | systems/win32/miktex/tm/packages/zref-vario__doc.tar.lzma
+2022/02/07 | 9640 | systems/win32/miktex/tm/packages/zref-vario__source.tar.lzma
+2022/02/07 | 3829 | systems/win32/miktex/tm/packages/zref-vario.tar.lzma
2008/06/26 | 246879 | systems/win32/miktex/tm/packages/zwgetfdate.tar.lzma
2020/02/29 | 646041 | systems/win32/miktex/tm/packages/zwpagelayout.tar.lzma
2021/11/01 | 605804 | systems/win32/miktex/tm/packages/zx-calculus__doc.tar.lzma
@@ -301257,7 +301321,7 @@
2004/06/04 | 404 | tds/tds.sed
2004/06/23 | 65418 | tds/tds.tex
2019/05/29 | 304264 | tds.zip
-2022/02/07 | 186 | timestamp
+2022/02/08 | 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 37a848d5e2..8467053b0a 100644
--- a/FILES.byname.gz
+++ b/FILES.byname.gz
Binary files differ
diff --git a/FILES.last07days b/FILES.last07days
index 58e6ccc35d..bea837770b 100644
--- a/FILES.last07days
+++ b/FILES.last07days
@@ -1,197 +1,756 @@
-2022/02/06 | 99694 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma
-2022/02/06 | 99227 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma
-2022/02/06 | 97052 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma
-2022/02/06 | 96823 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma
-2022/02/06 | 960374 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma
-2022/02/06 | 95477 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma
-2022/02/06 | 95214 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
+2022/02/07 | 996 | macros/latex/contrib/siunitx/README.md
+2022/02/07 | 99696 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma
+2022/02/07 | 99226 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma
+2022/02/07 | 98548 | macros/latex/contrib/siunitx/siunitx-unit.dtx
+2022/02/07 | 9765 | macros/luatex/generic/luatexja/src/addons/luatexja-ruby.sty
+2022/02/07 | 9759 | macros/latex/contrib/siunitx/siunitx-symbol.dtx
+2022/02/07 | 97369 | systems/win32/miktex/tm/packages/talos.tar.lzma
+2022/02/07 | 97052 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma
+2022/02/07 | 96823 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma
+2022/02/07 | 96736 | macros/latex/contrib/codehigh.zip
+2022/02/07 | 967134 | systems/win32/miktex/tm/packages/jmlr__doc.tar.lzma
+2022/02/07 | 966262 | systems/win32/miktex/tm/packages/sankey__doc.tar.lzma
+2022/02/07 | 9640 | systems/win32/miktex/tm/packages/zref-vario__source.tar.lzma
+2022/02/07 | 960 | macros/latex/contrib/proof-at-the-end/proof-at-the-end.ins
+2022/02/07 | 960374 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma
+2022/02/07 | 95478 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma
+2022/02/07 | 95214 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
+2022/02/07 | 945 | macros/luatex/generic/luatexja/tool/table_ivd_aj1.lua
+2022/02/07 | 945 | macros/luatex/generic/luatexja/doc/jfm-testf.lua
+2022/02/07 | 945355 | fonts/fourier-GUT.zip
+2022/02/07 | 943344 | systems/texlive/tlnet/archive/pbibtex-manual.doc.r61915.tar.xz
+2022/02/07 | 9423 | systems/win32/miktex/tm/packages/datenumber__source.tar.lzma
+2022/02/07 | 94013 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma
+2022/02/07 | 9379 | systems/win32/miktex/tm/packages/causets__source.tar.lzma
+2022/02/07 | 936231 | install/macros/latex/contrib/l3backend.tds.zip
+2022/02/07 | 935 | systems/win32/miktex/tm/packages/haranoaji__source.tar.lzma
+2022/02/07 | 927184 | systems/texlive/tlnet/archive/tex4ht.r61924.tar.xz
+2022/02/07 | 926 | systems/win32/miktex/tm/packages/pr.ini
+2022/02/07 | 9171 | macros/latex/contrib/l3backend/l3backend-opacity.dtx
+2022/02/07 | 912623 | systems/win32/miktex/tm/packages/pbibtex-manual__doc.tar.lzma
+2022/02/07 | 912617 | systems/win32/miktex/tm/packages/pbibtex-manual.tar.lzma
+2022/02/07 | 9082 | macros/latex/contrib/tkz/tkz-base/latex/tkz-base.cfg
+2022/02/07 | 9057 | systems/win32/miktex/tm/packages/scratch3.tar.lzma
+2022/02/07 | 9027 | systems/win32/miktex/tm/packages/elements.tar.lzma
+2022/02/07 | 899412 | macros/latex/contrib/l3backend.zip
+2022/02/07 | 89706 | systems/win32/miktex/tm/packages/mathtools__source.tar.lzma
+2022/02/07 | 896 | macros/luatex/generic/luatexja/tool/otf-KozMinPr6N-Regular.txt
+2022/02/07 | 896928 | macros/latex/contrib/l3backend/l3backend-code.pdf
+2022/02/07 | 89173 | systems/win32/miktex/tm/packages/biblatex-gb7714-2015__source.tar.lzma
+2022/02/07 | 891508 | systems/win32/miktex/tm/packages/markdown__doc.tar.lzma
+2022/02/07 | 885 | macros/luatex/generic/luatexja/src/patches/lltjp-stfloats.sty
+2022/02/07 | 8858 | systems/win32/miktex/tm/packages/translations__source.tar.lzma
+2022/02/07 | 884841 | systems/win32/miktex/tm/packages/etbb.tar.lzma
+2022/02/07 | 8832 | systems/texlive/tlnet/archive/scratch3.r61921.tar.xz
+2022/02/07 | 88151 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
+2022/02/07 | 8798 | macros/latex/contrib/siunitx/siunitx-command.dtx
+2022/02/07 | 8784 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
+2022/02/07 | 8660 | macros/luatex/generic/luatexja/src/ltjltxdoc.dtx
+2022/02/07 | 86495 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma
+2022/02/07 | 8644 | systems/texlive/tlnet/archive/pwebmac.r61922.tar.xz
+2022/02/07 | 8609 | macros/luatex/generic/luatexja/src/ltj-otf.lua
+2022/02/07 | 86007 | systems/win32/miktex/tm/packages/markdown__source.tar.lzma
+2022/02/07 | 852 | systems/texlive/tlnet/archive/collection-langenglish.r61918.tar.xz
+2022/02/07 | 8525623 | systems/win32/miktex/tm/packages/pdfmanagement-testphase__doc.tar.lzma
+2022/02/07 | 84805 | systems/win32/miktex/tm/packages/pyluatex__doc.tar.lzma
+2022/02/07 | 8478 | systems/win32/miktex/tm/packages/fnpct__source.tar.lzma
+2022/02/07 | 84168 | macros/latex/contrib/proof-at-the-end/proof-at-the-end.dtx
+2022/02/07 | 841476 | systems/win32/miktex/tm/packages/babel__doc.tar.lzma
+2022/02/07 | 825 | macros/luatex/generic/luatexja/src/patches/lltjp-collcell.sty
+2022/02/07 | 824 | macros/latex/contrib/zref-clever/README.md
+2022/02/07 | 824420 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
+2022/02/07 | 81505 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
+2022/02/07 | 8106 | macros/luatex/generic/luatexja/src/jfm-min.lua
+2022/02/07 | 80496 | systems/win32/miktex/tm/packages/l3experimental__source.tar.lzma
+2022/02/07 | 8001 | indexing/xindex/scripts/xindex.lua
+2022/02/07 | 79061 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
+2022/02/07 | 78984 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma
+2022/02/07 | 7790 | macros/luatex/generic/luatexja/tool/jfm-convert.lua
+2022/02/07 | 7759 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma
+2022/02/07 | 7712 | systems/win32/miktex/tm/packages/scholax__source.tar.lzma
+2022/02/07 | 77069 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
+2022/02/07 | 7691 | macros/luatex/generic/luatexja/src/ltj-unicode-ccfix.lua
+2022/02/07 | 76201 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
+2022/02/07 | 755978 | systems/win32/miktex/tm/packages/yquant__doc.tar.lzma
+2022/02/07 | 753734 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma
+2022/02/07 | 752446 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin-x64.tar.lzma
+2022/02/07 | 749425 | systems/win32/miktex/tm/packages/wrapfig2__doc.tar.lzma
+2022/02/07 | 74931 | systems/win32/miktex/tm/packages/xepersian__source.tar.lzma
+2022/02/07 | 74746 | systems/win32/miktex/tm/packages/spbmark__doc.tar.lzma
+2022/02/07 | 74117 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
+2022/02/07 | 7397 | systems/win32/miktex/tm/packages/biblatex-unified.tar.lzma
+2022/02/07 | 7370 | macros/luatex/generic/luatexja/src/ltj-math.lua
+2022/02/07 | 73653 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma
+2022/02/07 | 73205 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
+2022/02/07 | 72890 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
+2022/02/07 | 72004 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma
+2022/02/07 | 718559 | systems/win32/miktex/tm/packages/tkz-fct__doc.tar.lzma
+2022/02/07 | 7184 | systems/texlive/tlnet/archive/biblatex-unified.r61920.tar.xz
+2022/02/07 | 71845 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
+2022/02/07 | 717058 | macros/luatex/generic/luatexja/doc/luatexja-en.pdf
+2022/02/07 | 70 | macros/latex/contrib/zref-clever/DEPENDS.txt
+2022/02/07 | 70974 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
+2022/02/07 | 7085 | systems/win32/miktex/tm/packages/pyluatex.tar.lzma
+2022/02/07 | 7062449 | systems/win32/miktex/tm/packages/biblatex__doc.tar.lzma
+2022/02/07 | 7026 | macros/luatex/generic/luatexja/src/ltj-pretreat.lua
+2022/02/07 | 697268 | systems/win32/miktex/tm/packages/babel__source.tar.lzma
+2022/02/07 | 694962 | systems/win32/miktex/tm/packages/latex-base-dev__source.tar.lzma
+2022/02/07 | 69217 | macros/luatex/generic/luatexja/doc/ltjltxdoc.pdf
+2022/02/07 | 691861 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin.tar.lzma
+2022/02/07 | 6897 | systems/win32/miktex/tm/packages/mindflow__source.tar.lzma
+2022/02/07 | 6891 | macros/luatex/generic/luatexja/src/addons/luatexja-otf.sty
+2022/02/07 | 6877 | systems/win32/miktex/tm/packages/fontsetup.tar.lzma
+2022/02/07 | 68736 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma
+2022/02/07 | 68531 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma
+2022/02/07 | 682183 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
+2022/02/07 | 6807264 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2022/02/07 | 68031 | systems/win32/miktex/tm/packages/yquant__source.tar.lzma
+2022/02/07 | 68020 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma
+2022/02/07 | 67892 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma
+2022/02/07 | 6759 | macros/latex/contrib/l3backend/CHANGELOG.md
+2022/02/07 | 6733 | systems/win32/miktex/tm/packages/lua-widow-control.tar.lzma
+2022/02/07 | 67221 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
+2022/02/07 | 669648 | systems/win32/miktex/tm/packages/clistmap__doc.tar.lzma
+2022/02/07 | 666 | graphics/metapost/contrib/macros/fiziko/README
+2022/02/07 | 65953 | systems/win32/miktex/tm/packages/texlogsieve__doc.tar.lzma
+2022/02/07 | 6541 | macros/latex/contrib/tkz/tkz-base/doc/latex/TKZdoc-base-main.tex
+2022/02/07 | 6514 | systems/win32/miktex/tm/packages/texlogsieve__source.tar.lzma
+2022/02/07 | 65079 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
+2022/02/07 | 6497 | macros/luatex/generic/luatexja/src/patches/lltjdefs.sty
+2022/02/07 | 6484 | macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-arith.tex
+2022/02/07 | 6475 | systems/win32/miktex/tm/packages/wrapfig2.tar.lzma
+2022/02/07 | 6472 | systems/win32/miktex/tm/packages/erw-l3__source.tar.lzma
+2022/02/07 | 64693 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma
+2022/02/07 | 64588 | macros/latex/contrib/siunitx/CHANGELOG.md
+2022/02/07 | 64540 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma
+2022/02/07 | 64506 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma
+2022/02/07 | 644870 | systems/win32/miktex/tm/packages/zref-vario__doc.tar.lzma
+2022/02/07 | 639784 | macros/latex/contrib/siunitx/siunitx.pdf
+2022/02/07 | 63750 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma
+2022/02/07 | 63660 | systems/win32/miktex/tm/packages/talos__doc.tar.lzma
+2022/02/07 | 635379 | systems/win32/miktex/tm/packages/next/files.csv.lzma
+2022/02/07 | 634742 | systems/win32/miktex/tm/packages/files.csv.lzma
+2022/02/07 | 63366 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
+2022/02/07 | 632 | systems/texlive/tlnet/archive/collection-langjapanese.r61915.tar.xz
+2022/02/07 | 630635 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma
+2022/02/07 | 629384 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
+2022/02/07 | 6262 | systems/win32/miktex/tm/packages/clistmap.tar.lzma
+2022/02/07 | 6250 | systems/win32/miktex/tm/packages/secnum__source.tar.lzma
+2022/02/07 | 62445 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
+2022/02/07 | 6235 | macros/luatex/generic/luatexja/src/ltj-latex.sty
+2022/02/07 | 62354 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
+2022/02/07 | 62168 | systems/win32/miktex/tm/packages/siunitx.tar.lzma
+2022/02/07 | 6203 | macros/luatex/generic/luatexja/src/ltj-base.sty
+2022/02/07 | 617 | macros/luatex/generic/luatexja/src/patches/lltjp-array.sty
+2022/02/07 | 6165 | systems/win32/miktex/tm/packages/proof-at-the-end.tar.lzma
+2022/02/07 | 607830 | macros/latex/contrib/siunitx/siunitx-code.pdf
+2022/02/07 | 6060 | macros/luatex/generic/luatexja/tool/kyoikukanjiChars.tex
+2022/02/07 | 598775 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
+2022/02/07 | 5984 | macros/latex/contrib/codehigh/codehigh.tex
+2022/02/07 | 59514 | systems/win32/miktex/tm/packages/xepersian.tar.lzma
+2022/02/07 | 5940 | macros/luatex/generic/luatexja/src/ltj-lotf_aux.lua
+2022/02/07 | 591260 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma
+2022/02/07 | 5892 | systems/win32/miktex/tm/packages/dtxdescribe.tar.lzma
+2022/02/07 | 58730 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma
+2022/02/07 | 58643 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
+2022/02/07 | 585343 | systems/win32/miktex/tm/packages/l3kernel__source.tar.lzma
+2022/02/07 | 5850 | macros/luatex/generic/luatexja/src/patches/lltjp-fontspec.sty
+2022/02/07 | 583510 | indexing/xindex.zip
+2022/02/07 | 5812 | systems/win32/miktex/tm/packages/expkv-def.tar.lzma
+2022/02/07 | 580 | systems/texlive/tlnet/archive/collection-langcjk.r61912.tar.xz
+2022/02/07 | 580 | macros/luatex/generic/luatexja/tool/blocks2defcharrange.rb
+2022/02/07 | 578771 | systems/win32/miktex/tm/packages/easybook__doc.tar.lzma
+2022/02/07 | 57563 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma
+2022/02/07 | 57424 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma
+2022/02/07 | 574161 | systems/win32/miktex/tm/packages/cochineal__doc.tar.lzma
+2022/02/07 | 57355 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
+2022/02/07 | 57210 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
+2022/02/07 | 57013 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma
+2022/02/07 | 56850 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma
+2022/02/07 | 5682 | macros/luatex/generic/luatexja/src/patches/lltjp-tascmac.sty
+2022/02/07 | 5674 | macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-utilities.tex
+2022/02/07 | 565708 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
+2022/02/07 | 56409 | systems/win32/miktex/tm/packages/yquant.tar.lzma
+2022/02/07 | 56089 | systems/win32/miktex/tm/packages/tkz-base__source.tar.lzma
+2022/02/07 | 55949 | systems/win32/miktex/tm/packages/acmart__source.tar.lzma
+2022/02/07 | 55754 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin.tar.lzma
+2022/02/07 | 55672 | systems/win32/miktex/tm/packages/bangorcsthesis__source.tar.lzma
+2022/02/07 | 55450 | macros/luatex/generic/luatexja/src/ltj-jfmglue.lua
+2022/02/07 | 55372 | systems/win32/miktex/tm/packages/reledmac.tar.lzma
+2022/02/07 | 55202 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma
+2022/02/07 | 551 | macros/luatex/generic/luatexja/tool/jfm-readable.rb
+2022/02/07 | 55016 | systems/texlive/tlnet/archive/acmart.source.r61919.tar.xz
+2022/02/07 | 549 | macros/latex/contrib/l3backend/README.md
+2022/02/07 | 54999 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma
+2022/02/07 | 549130 | systems/win32/miktex/tm/packages/librebodoni.tar.lzma
+2022/02/07 | 544 | systems/texlive/tlnet/archive/collection-langchinese.r61913.tar.xz
+2022/02/07 | 54427 | macros/luatex/generic/luatexja/src/ltj-jisx0208.lua
+2022/02/07 | 53954 | indexing/xindex/doc/xindex-doc.tex
+2022/02/07 | 537770 | macros/luatex/generic/luatexja/doc/luatexja.dtx
+2022/02/07 | 5349 | systems/win32/miktex/tm/packages/fontsetup__source.tar.lzma
+2022/02/07 | 5338496 | graphics/metapost/contrib/macros/fiziko/fiziko.pdf
+2022/02/07 | 5335494 | graphics/metapost/contrib/macros/fiziko.zip
+2022/02/07 | 532416 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma
+2022/02/07 | 528692 | systems/texlive/tlnet/archive/scratch3.doc.r61921.tar.xz
+2022/02/07 | 528110 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
+2022/02/07 | 527485 | systems/win32/miktex/tm/packages/etbb__source.tar.lzma
+2022/02/07 | 527206 | systems/win32/miktex/tm/packages/fontsetup__doc.tar.lzma
+2022/02/07 | 52633 | systems/win32/miktex/tm/packages/bangorcsthesis.tar.lzma
+2022/02/07 | 52633 | macros/luatex/generic/luatexja/doc/luatexja-ruby.tex
+2022/02/07 | 5259 | macros/latex/contrib/siunitx/siunitx-locale.dtx
+2022/02/07 | 52518 | systems/win32/miktex/tm/packages/fontools.tar.lzma
+2022/02/07 | 52515 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
+2022/02/07 | 523752 | systems/win32/miktex/tm/packages/scratch3__doc.tar.lzma
+2022/02/07 | 52324 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
+2022/02/07 | 5222 | macros/luatex/generic/luatexja/src/ltj-debug.lua
+2022/02/07 | 52005 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
+2022/02/07 | 51549 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma
+2022/02/07 | 515305 | systems/win32/miktex/tm/packages/translations__doc.tar.lzma
+2022/02/07 | 51414 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma
+2022/02/07 | 511078 | systems/win32/miktex/tm/packages/fnpct__doc.tar.lzma
+2022/02/07 | 50955 | graphics/metapost/contrib/macros/byrne/byrne-latex.tex
+2022/02/07 | 50881 | macros/latex/contrib/siunitx/siunitx-table.dtx
+2022/02/07 | 50824 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma
+2022/02/07 | 504261 | systems/win32/miktex/tm/packages/pst-node__doc.tar.lzma
+2022/02/07 | 5024 | systems/win32/miktex/tm/packages/pyluatex__source.tar.lzma
+2022/02/07 | 50243 | systems/win32/miktex/tm/packages/pdfmanagement-testphase.tar.lzma
+2022/02/07 | 498910 | macros/latex/contrib/mathtools/mathtools.pdf
+2022/02/07 | 4959 | systems/win32/miktex/tm/packages/altsubsup__source.tar.lzma
+2022/02/07 | 49576 | systems/win32/miktex/tm/packages/nwejm__source.tar.lzma
+2022/02/07 | 49557 | macros/luatex/generic/luatexja/src/patches/lltjfont.sty
+2022/02/07 | 4941 | systems/win32/miktex/tm/packages/sillypage__source.tar.lzma
+2022/02/07 | 4916 | systems/win32/miktex/tm/packages/tkz-fct.tar.lzma
+2022/02/07 | 49097 | macros/latex/contrib/l3backend/l3backend-pdf.dtx
+2022/02/07 | 4908 | macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-marks.tex
+2022/02/07 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2022/02/07 | 4892 | macros/luatex/generic/luatexja/src/addons/luatexja-adjust.sty
+2022/02/07 | 48822 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
+2022/02/07 | 4871 | macros/luatex/generic/luatexja/src/ltj-stack.lua
+2022/02/07 | 48649 | macros/luatex/generic/luatexja/src/ltj-jfont.lua
+2022/02/07 | 4861 | systems/win32/miktex/tm/packages/datax__source.tar.lzma
+2022/02/07 | 485349 | systems/win32/miktex/tm/packages/erw-l3__doc.tar.lzma
+2022/02/07 | 484672 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma
+2022/02/07 | 483703 | systems/win32/miktex/tm/packages/mandi__doc.tar.lzma
+2022/02/07 | 4808 | macros/luatex/generic/luatexja/src/jfm-tmin.lua
+2022/02/07 | 47986 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
+2022/02/07 | 478896 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma
+2022/02/07 | 477698 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma
+2022/02/07 | 4748 | macros/latex/contrib/siunitx/siunitx-abbreviations.cfg
+2022/02/07 | 474794 | systems/win32/miktex/tm/packages/xcharter__doc.tar.lzma
+2022/02/07 | 471683 | macros/latex/contrib/proof-at-the-end.zip
+2022/02/07 | 46850 | systems/win32/miktex/tm/packages/zref-clever__source.tar.lzma
+2022/02/07 | 46111 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma
+2022/02/07 | 460 | systems/texlive/tlnet/archive/pbibtex-manual.r61915.tar.xz
+2022/02/07 | 45928 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma
+2022/02/07 | 45737 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
+2022/02/07 | 456779 | macros/luatex/generic/luatexja/doc/ltjsclasses.pdf
+2022/02/07 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2022/02/07 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2022/02/07 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2022/02/07 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2022/02/07 | 452 | systems/texlive/tlnet/archive/latex-for-undergraduates.r61918.tar.xz
+2022/02/07 | 4528 | systems/win32/miktex/tm/packages/fcolumn.tar.lzma
+2022/02/07 | 4502 | systems/win32/miktex/tm/packages/causets.tar.lzma
+2022/02/07 | 448958 | systems/win32/miktex/tm/packages/lwarp__source.tar.lzma
+2022/02/07 | 448633 | macros/latex/contrib/tkz/tkz-base.zip
+2022/02/07 | 447707 | systems/win32/miktex/tm/packages/secnum__doc.tar.lzma
+2022/02/07 | 446248 | systems/texlive/tlnet/archive/causets.doc.r61916.tar.xz
+2022/02/07 | 4452 | macros/luatex/generic/luatexja/doc/jfm-ujisc33.lua
+2022/02/07 | 442364 | systems/texlive/tlnet/archive/biblatex-unified.doc.r61920.tar.xz
+2022/02/07 | 4408 | macros/luatex/generic/luatexja/src/ltj-plain.sty
+2022/02/07 | 439801 | systems/win32/miktex/tm/packages/causets__doc.tar.lzma
+2022/02/07 | 43969 | macros/latex/contrib/l3backend/l3backend-color.dtx
+2022/02/07 | 439512 | systems/win32/miktex/tm/packages/proof-at-the-end__doc.tar.lzma
+2022/02/07 | 43947 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
+2022/02/07 | 43863 | systems/win32/miktex/tm/packages/acro.tar.lzma
+2022/02/07 | 43812 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
+2022/02/07 | 4370 | macros/latex/contrib/tkz/tkz-base/latex/tkz-lib-marks.tex
+2022/02/07 | 43653 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma
+2022/02/07 | 43569 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
+2022/02/07 | 43429 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma
+2022/02/07 | 43260 | systems/win32/miktex/tm/packages/biblatex-gb7714-2015.tar.lzma
+2022/02/07 | 430877 | systems/win32/miktex/tm/packages/biblatex-unified__doc.tar.lzma
+2022/02/07 | 4292 | systems/texlive/tlnet/archive/causets.r61916.tar.xz
+2022/02/07 | 42857 | systems/win32/miktex/tm/packages/jmlr__source.tar.lzma
+2022/02/07 | 42765 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma
+2022/02/07 | 4265 | macros/latex/contrib/l3backend/l3backend.ins
+2022/02/07 | 4262 | macros/luatex/generic/luatexja/tool/kyoikukanji.txt
+2022/02/07 | 4250 | systems/win32/miktex/tm/packages/crefthe__source.tar.lzma
+2022/02/07 | 4196 | macros/luatex/generic/luatexja/src/patches/lltjp-atbegshi.sty
+2022/02/07 | 414404 | systems/win32/miktex/tm/packages/elements__doc.tar.lzma
+2022/02/07 | 414361 | systems/win32/miktex/tm/packages/expkv-def__doc.tar.lzma
+2022/02/07 | 41389 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma
+2022/02/07 | 412615 | indexing/xindex/doc/xindex-doc.pdf
+2022/02/07 | 41239 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
+2022/02/07 | 41215 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma
+2022/02/07 | 41194 | systems/win32/miktex/tm/packages/markdown.tar.lzma
+2022/02/07 | 4108 | systems/win32/miktex/tm/packages/erw-l3.tar.lzma
+2022/02/07 | 4074733 | systems/win32/miktex/tm/packages/nwejm.tar.lzma
+2022/02/07 | 405 | macros/luatex/generic/luatexja/src/patches/lltjp-everyshi.sty
+2022/02/07 | 4055 | systems/win32/miktex/tm/packages/spbmark__source.tar.lzma
+2022/02/07 | 403204 | systems/texlive/tlnet/archive/texlive-scripts.doc.r61909.tar.xz
+2022/02/07 | 400068 | macros/luatex/generic/luatexja/doc/ltjclasses.pdf
+2022/02/07 | 39938 | macros/luatex/generic/luatexja/src/ltj-direction.lua
+2022/02/07 | 3961 | macros/luatex/generic/luatexja/src/ltj-charrange.lua
+2022/02/07 | 393910 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
+2022/02/07 | 39325 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma
+2022/02/07 | 3918 | systems/win32/miktex/tm/packages/pascaltriangle__source.tar.lzma
+2022/02/07 | 3912 | systems/win32/miktex/tm/packages/pascaltriangle.tar.lzma
+2022/02/07 | 39111 | systems/win32/miktex/tm/packages/acmart.tar.lzma
+2022/02/07 | 38944 | systems/texlive/tlnet/archive/acmart.r61919.tar.xz
+2022/02/07 | 3893 | macros/luatex/generic/luatexja/src/patches/lltjp-siunitx.sty
+2022/02/07 | 385 | macros/luatex/generic/luatexja/src/ltjsclasses.ins
+2022/02/07 | 38568 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma
+2022/02/07 | 38556 | systems/win32/miktex/tm/packages/easybook__source.tar.lzma
+2022/02/07 | 385235 | systems/win32/miktex/tm/packages/dtxdescribe__doc.tar.lzma
+2022/02/07 | 38478 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma
+2022/02/07 | 3842 | systems/win32/miktex/tm/packages/elements__source.tar.lzma
+2022/02/07 | 3829 | systems/win32/miktex/tm/packages/zref-vario.tar.lzma
+2022/02/07 | 3821240 | macros/luatex/generic/luatexja.zip
+2022/02/07 | 381090 | macros/luatex/generic/luatexja/doc/luatexja-ruby.pdf
+2022/02/07 | 3796 | macros/luatex/generic/luatexja/README
+2022/02/07 | 37965 | systems/win32/miktex/tm/packages/pst-optexp.tar.lzma
+2022/02/07 | 37764 | systems/texlive/tlnet/archive/pst-optexp.r61917.tar.xz
+2022/02/07 | 3755 | macros/luatex/generic/luatexja/src/ltj-lineskip.lua
+2022/02/07 | 3752017 | systems/win32/miktex/tm/packages/bidi__doc.tar.lzma
+2022/02/07 | 3748 | macros/luatex/generic/luatexja/src/ltj-compat.lua
+2022/02/07 | 37379 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
+2022/02/07 | 372588 | systems/win32/miktex/tm/packages/erewhon__doc.tar.lzma
+2022/02/07 | 37134 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma
+2022/02/07 | 37112 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
+2022/02/07 | 369449 | systems/win32/miktex/tm/packages/codebox__doc.tar.lzma
+2022/02/07 | 3687 | macros/latex/contrib/siunitx/siunitx.ins
+2022/02/07 | 368069 | macros/latex/contrib/tkz/tkz-base/doc/tkz-base.pdf
+2022/02/07 | 36137 | macros/latex/contrib/proof-at-the-end/README.md
+2022/02/07 | 36061 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma
+2022/02/07 | 357768 | systems/win32/miktex/tm/packages/tkz-base__doc.tar.lzma
+2022/02/07 | 3570275 | systems/win32/miktex/tm/packages/acmart__doc.tar.lzma
+2022/02/07 | 3561068 | systems/texlive/tlnet/archive/acmart.doc.r61919.tar.xz
+2022/02/07 | 355 | macros/luatex/generic/luatexja/tool/otf-AdobeMingStd-Light.txt
+2022/02/07 | 355 | macros/luatex/generic/luatexja/doc/luatexja.ins
+2022/02/07 | 3554 | systems/win32/miktex/tm/packages/datenumber.tar.lzma
+2022/02/07 | 3554 | macros/latex/contrib/tkz/tkz-base/latex/tkz-base.sty
+2022/02/07 | 355067 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
+2022/02/07 | 35499 | systems/win32/miktex/tm/packages/pdfpages__source.tar.lzma
+2022/02/07 | 35447 | systems/win32/miktex/tm/packages/texlogsieve.tar.lzma
+2022/02/07 | 35288 | systems/win32/miktex/tm/packages/pbibtex-manual__source.tar.lzma
+2022/02/07 | 35238 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
+2022/02/07 | 35179 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
+2022/02/07 | 3509083 | systems/win32/miktex/tm/packages/l3experimental__doc.tar.lzma
+2022/02/07 | 3486 | macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-misc.tex
+2022/02/07 | 3478 | macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-base.tex
+2022/02/07 | 3470 | macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-grids.tex
+2022/02/07 | 34543 | macros/latex/contrib/siunitx/siunitx-print.dtx
+2022/02/07 | 3451 | macros/luatex/generic/luatexja/src/luatexja-compat.sty
+2022/02/07 | 34288 | macros/latex/contrib/l3backend/l3backend-draw.dtx
+2022/02/07 | 3425 | macros/luatex/generic/luatexja/src/ltj-inputbuf.lua
+2022/02/07 | 34221 | graphics/metapost/contrib/macros/fiziko/fiziko.tex
+2022/02/07 | 34053 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
+2022/02/07 | 33799 | macros/latex/contrib/siunitx/siunitx-compound.dtx
+2022/02/07 | 3371 | macros/luatex/generic/luatexja/src/patches/lltjp-xunicode.sty
+2022/02/07 | 3362 | systems/win32/miktex/tm/packages/spbmark.tar.lzma
+2022/02/07 | 33461 | macros/luatex/generic/luatexja/src/addons/luatexja-ajmacros.sty
+2022/02/07 | 334342 | systems/win32/miktex/tm/packages/scholax__doc.tar.lzma
+2022/02/07 | 3337 | systems/win32/miktex/tm/packages/haranoaji-extra__doc.tar.lzma
+2022/02/07 | 333678 | macros/latex/contrib/zref-clever/zref-clever.dtx
+2022/02/07 | 3328 | systems/win32/miktex/tm/packages/haranoaji__doc.tar.lzma
+2022/02/07 | 332531 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma
+2022/02/07 | 3313 | macros/luatex/generic/luatexja/tool/ltj-unicode-ccfix_make2.pl
+2022/02/07 | 329716 | macros/latex/contrib/mathtools/empheq.pdf
+2022/02/07 | 32965 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma
+2022/02/07 | 32929 | systems/win32/miktex/tm/packages/autopuncitems__doc.tar.lzma
+2022/02/07 | 3283 | systems/win32/miktex/tm/packages/iftex.tar.lzma
+2022/02/07 | 328034 | systems/win32/miktex/tm/packages/altsubsup__doc.tar.lzma
+2022/02/07 | 326 | macros/luatex/generic/luatexja/tool/otf-AdobeMyungjoStd-Medium.txt
+2022/02/07 | 326180 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
+2022/02/07 | 3238 | macros/luatex/generic/luatexja/doc/jfm-test.lua
+2022/02/07 | 323804 | systems/win32/miktex/tm/packages/pdfpages__doc.tar.lzma
+2022/02/07 | 321713 | macros/latex/contrib/proof-at-the-end/proof-at-the-end.pdf
+2022/02/07 | 32105 | macros/luatex/generic/luatexja/src/ltj-ruby.lua
+2022/02/07 | 320878 | systems/win32/miktex/tm/packages/fcolumn__doc.tar.lzma
+2022/02/07 | 32080 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
+2022/02/07 | 3194704 | systems/texlive/tlnet/archive/pst-optexp.doc.r61917.tar.xz
+2022/02/07 | 317 | macros/luatex/generic/luatexja/tool/otf-AdobeSongStd-Light.txt
+2022/02/07 | 317514 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma
+2022/02/07 | 3174 | systems/win32/miktex/tm/packages/autopuncitems.tar.lzma
+2022/02/07 | 31738 | macros/latex/contrib/siunitx/siunitx-version-1.cfg
+2022/02/07 | 31668 | macros/latex/contrib/siunitx/siunitx-emulation.dtx
+2022/02/07 | 3164237 | systems/win32/miktex/tm/packages/pst-optexp__doc.tar.lzma
+2022/02/07 | 31572 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma
+2022/02/07 | 31539 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
+2022/02/07 | 3145254 | systems/win32/miktex/tm/packages/animate__doc.tar.lzma
+2022/02/07 | 31413 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma
+2022/02/07 | 31336 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
+2022/02/07 | 3132 | systems/texlive/tlnet/archive/iftex.r61910.tar.xz
+2022/02/07 | 312992 | macros/latex/contrib/zref-clever/zref-clever.pdf
+2022/02/07 | 3117 | systems/win32/miktex/tm/packages/autopuncitems__source.tar.lzma
+2022/02/07 | 3100 | macros/luatex/generic/luatexja/tool/table_jisx0208.tex
+2022/02/07 | 3082 | macros/latex/contrib/zref-clever/zref-clever.ins
+2022/02/07 | 30716 | systems/win32/miktex/tm/packages/mandi__source.tar.lzma
+2022/02/07 | 305902 | systems/win32/miktex/tm/packages/sapthesis__doc.tar.lzma
+2022/02/07 | 30561 | systems/win32/miktex/tm/packages/sapthesis.tar.lzma
+2022/02/07 | 30560 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
+2022/02/07 | 30551 | systems/win32/miktex/tm/packages/animate__source.tar.lzma
+2022/02/07 | 3047041 | systems/win32/miktex/tm/packages/lwarp__doc.tar.lzma
+2022/02/07 | 303651 | systems/win32/miktex/tm/packages/datenumber__doc.tar.lzma
+2022/02/07 | 30182 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma
+2022/02/07 | 29814 | macros/luatex/generic/luatexja/src/luatexja-core.sty
+2022/02/07 | 2973 | macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-text.tex
+2022/02/07 | 296124 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
+2022/02/07 | 2943 | macros/latex/contrib/mathtools/mhsetup.ins
+2022/02/07 | 294152 | systems/win32/miktex/tm/packages/bangorcsthesis__doc.tar.lzma
+2022/02/07 | 293628 | systems/win32/miktex/tm/packages/lua-widow-control__doc.tar.lzma
+2022/02/07 | 291877 | systems/win32/miktex/tm/packages/sillypage__doc.tar.lzma
+2022/02/07 | 29181 | macros/luatex/generic/luatexja/src/addons/luatexja-preset.sty
+2022/02/07 | 2883 | macros/latex/contrib/siunitx/siunitx-binary.dtx
+2022/02/07 | 28834752 | systems/win32/miktex/tm/packages/latex-base-dev__doc.tar.lzma
+2022/02/07 | 28769 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma
+2022/02/07 | 2873220 | systems/win32/miktex/tm/packages/newpx.tar.lzma
+2022/02/07 | 28704 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma
+2022/02/07 | 286572 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
+2022/02/07 | 2864 | macros/latex/contrib/mathtools/mathtools.ins
+2022/02/07 | 286071 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
+2022/02/07 | 28584 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
+2022/02/07 | 285553 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma
+2022/02/07 | 284711 | systems/win32/miktex/tm/packages/dccpaper__doc.tar.lzma
+2022/02/07 | 28338 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma
+2022/02/07 | 281918 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
+2022/02/07 | 281056 | systems/win32/miktex/tm/packages/biber-doc.tar.lzma
+2022/02/07 | 28095 | systems/win32/miktex/tm/packages/tkz-fct__source.tar.lzma
+2022/02/07 | 28021 | systems/win32/miktex/tm/packages/sankey__source.tar.lzma
+2022/02/07 | 2799002 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
+2022/02/07 | 2795 | macros/latex/contrib/mathtools/empheq.ins
+2022/02/07 | 27920 | systems/texlive/tlnet/archive/pbibtex-base.doc.r61914.tar.xz
+2022/02/07 | 27787 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma
+2022/02/07 | 2753 | systems/win32/miktex/tm/packages/mindflow.tar.lzma
+2022/02/07 | 2746 | macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-modules.tex
+2022/02/07 | 27462 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
+2022/02/07 | 2744 | macros/latex/contrib/zref-clever/CHANGELOG.md
+2022/02/07 | 273398 | macros/latex/contrib/siunitx/siunitx-v2.sty
+2022/02/07 | 2726 | macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-rep.tex
+2022/02/07 | 27254 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma
+2022/02/07 | 27220 | systems/win32/miktex/tm/packages/pst-node__source.tar.lzma
+2022/02/07 | 2716 | indexing/xindex/lualatex/xindex-danteedition.lua
+2022/02/07 | 2710 | macros/latex/contrib/tkz/tkz-base/README.md
+2022/02/07 | 2707 | macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-print.tex
+2022/02/07 | 26934 | macros/luatex/generic/luatexja/src/lltjext.sty
+2022/02/07 | 26887 | systems/win32/miktex/tm/packages/dccpaper__source.tar.lzma
+2022/02/07 | 2674149 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma
+2022/02/07 | 265226 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
+2022/02/07 | 265208 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
+2022/02/07 | 2601 | macros/luatex/generic/luatexja/src/jfm-banjiao.lua
+2022/02/07 | 25985 | macros/latex/contrib/siunitx/siunitx-complex.dtx
+2022/02/07 | 259152 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma
+2022/02/07 | 25900642 | systems/win32/miktex/tm/packages/haranoaji.tar.lzma
+2022/02/07 | 2586 | macros/luatex/generic/luatexja/src/jfm-kaiming.lua
+2022/02/07 | 257908 | systems/win32/miktex/tm/packages/biblatex.tar.lzma
+2022/02/07 | 2575 | macros/luatex/generic/luatexja/src/jfm-quanjiao.lua
+2022/02/07 | 25752265 | systems/win32/miktex/tm/packages/haranoaji-extra.tar.lzma
+2022/02/07 | 2574 | indexing/xindex/CHANGELOG
+2022/02/07 | 257200 | systems/win32/miktex/tm/packages/reledmac__source.tar.lzma
+2022/02/07 | 256595 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma
+2022/02/07 | 2565010 | systems/win32/miktex/tm/packages/erewhon.tar.lzma
+2022/02/07 | 25627646 | systems/texlive/tlnet/install-tl.zip
+2022/02/07 | 25576 | systems/win32/miktex/tm/packages/pst-node.tar.lzma
+2022/02/07 | 2555809 | systems/win32/miktex/tm/packages/cochineal.tar.lzma
+2022/02/07 | 255014 | macros/latex/contrib/mathtools/mhsetup.pdf
+2022/02/07 | 254846 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma
+2022/02/07 | 25482 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma
+2022/02/07 | 2538 | systems/win32/miktex/tm/packages/crefthe.tar.lzma
+2022/02/07 | 25130 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma
+2022/02/07 | 251253 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma
+2022/02/07 | 25079 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
+2022/02/07 | 24959 | systems/win32/miktex/tm/packages/dccpaper.tar.lzma
+2022/02/07 | 2492 | macros/latex/contrib/siunitx/siunitx-code.tex
+2022/02/07 | 2469 | systems/win32/miktex/tm/packages/secnum.tar.lzma
+2022/02/07 | 244997 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
+2022/02/07 | 24475654 | systems/win32/miktex/tm/packages/biber-windows-x64.tar.lzma
+2022/02/07 | 24204 | systems/win32/miktex/tm/packages/animate.tar.lzma
+2022/02/07 | 241035 | macros/latex/contrib/mathtools/mathtools.dtx
+2022/02/07 | 24078 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
+2022/02/07 | 24060 | systems/win32/miktex/tm/packages/uni-titlepage__source.tar.lzma
+2022/02/07 | 239552 | systems/win32/miktex/tm/packages/newpx__doc.tar.lzma
+2022/02/07 | 23936 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
+2022/02/07 | 2374 | macros/luatex/generic/luatexja/src/patches/lltjp-unicode-math.sty
+2022/02/07 | 23711 | systems/win32/miktex/tm/packages/wrapfig2__source.tar.lzma
+2022/02/07 | 23593842 | systems/win32/miktex/tm/packages/biber-linux-x86_64.tar.lzma
+2022/02/07 | 23548 | systems/win32/miktex/tm/packages/l3experimental.tar.lzma
+2022/02/07 | 2349136 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2022/02/07 | 2342 | macros/luatex/generic/luatexja/src/jfm-jis.lua
+2022/02/07 | 23421 | systems/win32/miktex/tm/packages/acro__source.tar.lzma
+2022/02/07 | 2298 | systems/win32/miktex/tm/packages/etbb__doc.tar.lzma
+2022/02/07 | 229464 | systems/win32/miktex/tm/packages/iftex__doc.tar.lzma
+2022/02/07 | 22928214 | systems/win32/miktex/tm/packages/biber-windows-x86.tar.lzma
+2022/02/07 | 228940 | systems/texlive/tlnet/archive/iftex.doc.r61910.tar.xz
+2022/02/07 | 2254 | macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-colors.tex
+2022/02/07 | 22334 | systems/win32/miktex/tm/packages/fcolumn__source.tar.lzma
+2022/02/07 | 22294 | macros/luatex/generic/luatexja/src/luatexja.lua
+2022/02/07 | 222334 | systems/win32/miktex/tm/packages/latex-base-dev.tar.lzma
+2022/02/07 | 22157 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma
+2022/02/07 | 2207 | macros/luatex/generic/luatexja/src/jfm-CCT.lua
+2022/02/07 | 2193 | macros/luatex/generic/luatexja/src/addons/luatexja-zhfonts.sty
+2022/02/07 | 21784 | macros/latex/contrib/mathtools/mhsetup.dtx
+2022/02/07 | 216595 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
+2022/02/07 | 2148792 | systems/win32/miktex/tm/packages/univie-ling__doc.tar.lzma
+2022/02/07 | 2140121 | systems/win32/miktex/tm/packages/xcharter.tar.lzma
+2022/02/07 | 213134 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
+2022/02/07 | 21312 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma
+2022/02/07 | 21126 | macros/luatex/generic/luatexja/src/ltj-adjust.lua
+2022/02/07 | 21071 | systems/win32/miktex/tm/packages/zref-clever.tar.lzma
+2022/02/07 | 209866 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma
+2022/02/07 | 20960 | macros/latex/contrib/l3backend/l3backend-graphics.dtx
+2022/02/07 | 20871441 | systems/texlive/tlnet/install-tl-windows.exe
+2022/02/07 | 20802 | systems/win32/miktex/tm/packages/hamnosys.tar.lzma
+2022/02/07 | 20675 | systems/win32/miktex/tm/packages/proof-at-the-end__source.tar.lzma
+2022/02/07 | 206311 | systems/win32/miktex/tm/packages/lwarp.tar.lzma
+2022/02/07 | 2057 | macros/luatex/generic/luatexja/src/patches/lltjp-microtype.sty
+2022/02/07 | 20577 | systems/win32/miktex/tm/packages/dtxdescribe__source.tar.lzma
+2022/02/07 | 20448 | systems/win32/miktex/tm/packages/librebodoni__doc.tar.lzma
+2022/02/07 | 2042 | macros/luatex/generic/luatexja/src/luatexja.sty
+2022/02/07 | 20349 | systems/win32/miktex/tm/packages/mathtools.tar.lzma
+2022/02/07 | 2030 | systems/win32/miktex/tm/packages/talos__source.tar.lzma
+2022/02/07 | 203064 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
+2022/02/07 | 20190 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma
+2022/02/07 | 2010712 | systems/texlive/tlnet/archive/latex-for-undergraduates.doc.r61918.tar.xz
+2022/02/07 | 200 | macros/luatex/generic/luatexja/src/jfm-prop.lua
+2022/02/07 | 200979 | systems/win32/miktex/tm/packages/optex.tar.lzma
+2022/02/07 | 2006600 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
+2022/02/07 | 200155 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma
+2022/02/07 | 2000760 | systems/win32/miktex/tm/packages/optex__doc.tar.lzma
+2022/02/07 | 1999 | macros/latex/contrib/tkz/tkz-base/latex/tkz-lib-shape.tex
+2022/02/07 | 199793 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma
+2022/02/07 | 199422 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma
+2022/02/07 | 199170 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma
+2022/02/07 | 19900 | macros/latex/contrib/siunitx/siunitx.dtx
+2022/02/07 | 198552 | systems/win32/miktex/tm/packages/datax__doc.tar.lzma
+2022/02/07 | 196 | macros/luatex/generic/luatexja/src/jfm-propw.lua
+2022/02/07 | 196 | macros/luatex/generic/luatexja/src/jfm-propv.lua
+2022/02/07 | 196468 | systems/win32/miktex/tm/packages/mindflow__doc.tar.lzma
+2022/02/07 | 196136 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
+2022/02/07 | 192 | macros/luatex/generic/luatexja/src/jfm-mono.lua
+2022/02/07 | 19291 | systems/win32/miktex/tm/packages/expkv-def__source.tar.lzma
+2022/02/07 | 19234 | macros/luatex/generic/luatexja/src/patches/lltjp-geometry.sty
+2022/02/07 | 192262 | graphics/metapost/contrib/macros/byrne.zip
+2022/02/07 | 191902 | systems/win32/miktex/tm/packages/biblatex__source.tar.lzma
+2022/02/07 | 189 | macros/luatex/generic/luatexja/src/patches/lltjp-preview.sty
+2022/02/07 | 1891732 | systems/win32/miktex/tm/packages/scholax.tar.lzma
+2022/02/07 | 188978 | macros/luatex/generic/luatexja/src/ltjsclasses.dtx
+2022/02/07 | 18722 | macros/luatex/generic/luatexja/src/ltj-kinsoku.tex
+2022/02/07 | 186949 | systems/win32/miktex/tm/packages/hamnosys__doc.tar.lzma
+2022/02/07 | 18494 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
+2022/02/07 | 18378 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
+2022/02/07 | 183524 | systems/win32/miktex/tm/packages/babel.tar.lzma
+2022/02/07 | 18326 | macros/latex/contrib/codehigh/codehigh.sty
+2022/02/07 | 18252 | macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-axes.tex
+2022/02/07 | 181556 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
+2022/02/07 | 179947 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma
+2022/02/07 | 1784641 | systems/win32/miktex/tm/packages/latex-for-undergraduates.tar.lzma
+2022/02/07 | 177499 | macros/luatex/generic/luatexja/src/ltjclasses.dtx
+2022/02/07 | 17725 | systems/win32/miktex/tm/packages/jmlr.tar.lzma
+2022/02/07 | 1732211 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma
+2022/02/07 | 1729 | macros/latex/contrib/siunitx/siunitx-binary.cfg
+2022/02/07 | 172638 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
+2022/02/07 | 17107485 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2022/02/07 | 169973 | systems/win32/miktex/tm/packages/l3kernel.tar.lzma
+2022/02/07 | 1696548 | systems/win32/miktex/tm/packages/latex2e-help-texinfo.tar.lzma
+2022/02/07 | 168798 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
+2022/02/07 | 16824 | macros/latex/contrib/l3backend/l3backend-basics.dtx
+2022/02/07 | 1674 | macros/latex/contrib/mathtools/README.md
+2022/02/07 | 16709 | macros/latex/contrib/siunitx/siunitx-angle.dtx
+2022/02/07 | 166557 | macros/luatex/generic/luatexja/doc/lltjp-geometry.pdf
+2022/02/07 | 1661 | systems/win32/miktex/tm/packages/altsubsup.tar.lzma
+2022/02/07 | 16570 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma
+2022/02/07 | 16509 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma
+2022/02/07 | 1643095 | systems/win32/miktex/tm/packages/csvsimple__doc.tar.lzma
+2022/02/07 | 163886 | macros/latex/contrib/mathtools/empheq.dtx
+2022/02/07 | 1637 | macros/luatex/generic/luatexja/src/addons/luatexja-fontspec.sty
+2022/02/07 | 161923 | systems/win32/miktex/tm/packages/pascaltriangle__doc.tar.lzma
+2022/02/07 | 16182 | systems/win32/miktex/tm/packages/hamnosys__source.tar.lzma
+2022/02/07 | 1615902 | install/macros/latex/contrib/zref-clever.tds.zip
+2022/02/07 | 16137 | systems/win32/miktex/tm/packages/easybook.tar.lzma
+2022/02/07 | 160040 | systems/win32/miktex/tm/packages/uptex-base__doc.tar.lzma
+2022/02/07 | 1598394 | systems/win32/miktex/tm/packages/circuitikz__doc.tar.lzma
+2022/02/07 | 1590680 | systems/win32/miktex/tm/packages/uni-titlepage__doc.tar.lzma
+2022/02/07 | 15839 | macros/luatex/generic/luatexja/src/addons/luatexja-fontspec-27c.sty
+2022/02/07 | 1580713 | macros/latex/contrib/zref-clever.zip
+2022/02/07 | 157568 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma
+2022/02/07 | 156788 | graphics/metapost/contrib/macros/byrne/byrne-latex.pdf
+2022/02/07 | 155442 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
+2022/02/07 | 155324 | systems/texlive/tlnet/archive/pst-optexp.source.r61917.tar.xz
+2022/02/07 | 15503 | systems/win32/miktex/tm/packages/tkz-base.tar.lzma
+2022/02/07 | 155020 | systems/win32/miktex/tm/packages/pst-optexp__source.tar.lzma
+2022/02/07 | 154928 | macros/luatex/generic/luatexja/src/ltj-ivd_aj1.lua
+2022/02/07 | 1540651 | systems/win32/miktex/tm/packages/libertinust1math__doc.tar.lzma
+2022/02/07 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2022/02/07 | 1536 | macros/luatex/generic/luatexja/COPYING
+2022/02/07 | 15317 | macros/latex/contrib/siunitx/siunitx-quantity.dtx
+2022/02/07 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2022/02/07 | 15228 | macros/latex/contrib/zref-clever/MANIFEST.md
+2022/02/07 | 152021 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma
+2022/02/07 | 15117 | systems/win32/miktex/tm/packages/biblatex-unified__source.tar.lzma
+2022/02/07 | 150583 | systems/win32/miktex/tm/packages/circuitikz.tar.lzma
+2022/02/07 | 1499491 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
+2022/02/07 | 14929 | macros/luatex/generic/luatexja/src/ltj-rmlgbm.lua
+2022/02/07 | 1486 | macros/latex/contrib/zref-clever/zref-clever-code.tex
+2022/02/07 | 148643 | macros/latex/contrib/siunitx/siunitx.tex
+2022/02/07 | 1474218 | systems/win32/miktex/tm/packages/biblatex-gb7714-2015__doc.tar.lzma
+2022/02/07 | 14709 | macros/luatex/generic/luatexja/src/patches/lltjp-listings.sty
+2022/02/07 | 14700 | systems/texlive/tlnet/archive/pbibtex-base.r61914.tar.xz
+2022/02/07 | 14669 | macros/latex/contrib/l3backend/l3backend-header.dtx
+2022/02/07 | 1463664 | install/macros/latex/contrib/siunitx.tds.zip
+2022/02/07 | 1462 | systems/win32/miktex/tm/packages/datax.tar.lzma
+2022/02/07 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2022/02/07 | 1452955 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
+2022/02/07 | 1452584 | systems/win32/miktex/tm/packages/zref-clever__doc.tar.lzma
+2022/02/07 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2022/02/07 | 14431 | macros/latex/contrib/l3backend/l3backend-box.dtx
+2022/02/07 | 14407 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
+2022/02/07 | 1433452 | systems/win32/miktex/tm/packages/latex2e-help-texinfo__source.tar.lzma
+2022/02/07 | 1423316 | macros/latex/contrib/siunitx.zip
+2022/02/07 | 14205 | systems/win32/miktex/tm/packages/pdfpages.tar.lzma
+2022/02/07 | 1417050 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
+2022/02/07 | 1416095 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
+2022/02/07 | 1397 | macros/luatex/generic/luatexja/tool/ivslist.tex
+2022/02/07 | 13943 | systems/win32/miktex/tm/packages/sapthesis__source.tar.lzma
+2022/02/07 | 139186 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
+2022/02/07 | 13899 | macros/luatex/generic/luatexja/src/jfm-ujis.lua
+2022/02/07 | 13862 | systems/win32/miktex/tm/packages/univie-ling__source.tar.lzma
+2022/02/07 | 13726 | macros/luatex/generic/luatexja/doc/lltjp-geometry.tex
+2022/02/07 | 13710 | systems/win32/miktex/tm/packages/translations.tar.lzma
+2022/02/07 | 13654 | systems/win32/miktex/tm/packages/sillypage.tar.lzma
+2022/02/07 | 136432 | systems/win32/miktex/tm/packages/bmstu.tar.lzma
+2022/02/07 | 136384 | systems/texlive/tlnet/archive/tex4ht.doc.r61924.tar.xz
+2022/02/07 | 1362 | macros/luatex/generic/luatexja/src/patches/lltjp-footmisc.sty
+2022/02/07 | 135905 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma
+2022/02/07 | 1355174 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma
+2022/02/07 | 135336 | systems/win32/miktex/tm/packages/bmstu__source.tar.lzma
+2022/02/07 | 13512 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma
+2022/02/07 | 134990 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
+2022/02/07 | 134318 | systems/win32/miktex/tm/packages/bidi__source.tar.lzma
+2022/02/07 | 1331 | macros/latex/contrib/l3backend/l3backend-code.tex
+2022/02/07 | 13240 | macros/luatex/generic/luatexja/src/ltj-setwidth.lua
+2022/02/07 | 132349 | systems/win32/miktex/tm/packages/univie-ling.tar.lzma
+2022/02/07 | 1322846 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
+2022/02/07 | 1321432 | systems/win32/miktex/tm/packages/nwejm__doc.tar.lzma
+2022/02/07 | 13205 | macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-points.tex
+2022/02/07 | 1309360 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
+2022/02/07 | 1309336 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
+2022/02/07 | 1308527 | systems/win32/miktex/tm/packages/latex-for-undergraduates__source.tar.lzma
+2022/02/07 | 1300071 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma
+2022/02/07 | 1291723 | systems/win32/miktex/tm/packages/bmstu__doc.tar.lzma
+2022/02/07 | 1278 | macros/luatex/generic/luatexja/src/ltjclasses.ins
+2022/02/07 | 127504 | systems/win32/miktex/tm/packages/pdfmanagement-testphase__source.tar.lzma
+2022/02/07 | 127482 | systems/win32/miktex/tm/packages/fontools__doc.tar.lzma
+2022/02/07 | 126 | macros/luatex/generic/luatexja/src/ltjltxdoc.ins
+2022/02/07 | 126868 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma
+2022/02/07 | 1252897 | systems/win32/miktex/tm/packages/libertinust1math.tar.lzma
+2022/02/07 | 1248656 | macros/latex/contrib/zref-clever/zref-clever-code.pdf
+2022/02/07 | 12466 | systems/win32/miktex/tm/packages/lua-widow-control__source.tar.lzma
+2022/02/07 | 12442 | macros/luatex/generic/luatexja/src/patches/lltjcore.sty
+2022/02/07 | 1238584 | systems/texlive/tlnet/archive/tex4ht.source.r61924.tar.xz
+2022/02/07 | 1224 | macros/luatex/generic/luatexja/tool/chars2defcharrange.rb
+2022/02/07 | 12235 | systems/win32/miktex/tm/packages/fnpct.tar.lzma
+2022/02/07 | 1223290 | systems/win32/miktex/tm/packages/acro__doc.tar.lzma
+2022/02/07 | 1219 | macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-BB.tex
+2022/02/07 | 12189 | systems/win32/miktex/tm/packages/mandi.tar.lzma
+2022/02/07 | 121890 | macros/latex/contrib/siunitx/siunitx-number.dtx
+2022/02/07 | 121559 | macros/latex/contrib/proof-at-the-end/proof-at-the-end_demo.pdf
+2022/02/07 | 12151 | macros/luatex/generic/luatexja/src/ltj-base.lua
+2022/02/07 | 1210364 | systems/win32/miktex/tm/packages/siunitx__doc.tar.lzma
+2022/02/07 | 120230 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma
+2022/02/07 | 1194169 | install/macros/latex/contrib/mathtools.tds.zip
+2022/02/07 | 11935 | systems/win32/miktex/tm/packages/codebox__source.tar.lzma
+2022/02/07 | 1181082 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma
+2022/02/07 | 118072 | macros/latex/contrib/zref-clever/zref-clever.tex
+2022/02/07 | 1169225 | macros/latex/contrib/mathtools.zip
+2022/02/07 | 116441 | systems/win32/miktex/tm/packages/crefthe__doc.tar.lzma
+2022/02/07 | 116249 | systems/win32/miktex/tm/packages/bidi.tar.lzma
+2022/02/07 | 115636 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
+2022/02/07 | 1153 | systems/win32/miktex/tm/packages/next/pr.ini
+2022/02/07 | 11538 | systems/win32/miktex/tm/packages/csvsimple.tar.lzma
+2022/02/07 | 115099 | macros/latex/contrib/codehigh/codehigh.pdf
+2022/02/07 | 11508 | macros/luatex/generic/luatexja/src/jfm-ujisv.lua
+2022/02/07 | 1144502 | macros/luatex/generic/luatexja/doc/luatexja-ja.pdf
+2022/02/07 | 11397504 | systems/win32/miktex/tm/packages/l3kernel__doc.tar.lzma
+2022/02/07 | 11335 | macros/luatex/generic/luatexja/tool/unicodeBlocks.tex
+2022/02/07 | 1130 | macros/luatex/generic/luatexja/tool/function_uax50.lua
+2022/02/07 | 113012 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
+2022/02/07 | 112668 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
+2022/02/07 | 11126 | systems/win32/miktex/tm/packages/graphics-def.tar.lzma
+2022/02/07 | 11076 | systems/texlive/tlnet/archive/pwebmac.doc.r61922.tar.xz
+2022/02/07 | 10990 | systems/win32/miktex/tm/packages/clistmap__source.tar.lzma
+2022/02/07 | 109550 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
+2022/02/07 | 109309 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
+2022/02/07 | 1086643 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
+2022/02/07 | 108504 | systems/win32/miktex/tm/packages/siunitx__source.tar.lzma
+2022/02/07 | 108364 | systems/texlive/tlnet/archive/texlive-scripts.r61909.tar.xz
+2022/02/07 | 1061 | systems/win32/miktex/tm/packages/graphics-def__doc.tar.lzma
+2022/02/07 | 10484 | macros/latex/contrib/proof-at-the-end/proof-at-the-end_demo.tex
+2022/02/07 | 104698 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
+2022/02/07 | 10424 | systems/win32/miktex/tm/packages/uni-titlepage.tar.lzma
+2022/02/07 | 1037277 | systems/win32/miktex/tm/packages/mathtools__doc.tar.lzma
+2022/02/07 | 103412 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
+2022/02/07 | 102988 | graphics/metapost/contrib/macros/fiziko/fiziko.mp
+2022/02/07 | 10221769 | systems/win32/miktex/tm/packages/reledmac__doc.tar.lzma
+2022/02/07 | 101562 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma
+2022/02/07 | 10111 | systems/win32/miktex/tm/packages/scratch3__source.tar.lzma
+2022/02/07 | 10106 | macros/latex/contrib/siunitx/siunitx-abbreviation.dtx
+2022/02/07 | 10077 | systems/win32/miktex/tm/packages/sankey.tar.lzma
+2022/02/07 | 1004586 | systems/win32/miktex/tm/packages/xepersian__doc.tar.lzma
2022/02/06 | 951818 | biblio/pbibtex/pbibtex-manual.zip
2022/02/06 | 942 | biblio/pbibtex/pbibtex-manual/README.md
-2022/02/06 | 94013 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma
-2022/02/06 | 88151 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
2022/02/06 | 88104 | systems/texlive/tlnet/archive/pyluatex.doc.r61901.tar.xz
-2022/02/06 | 8779 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
-2022/02/06 | 86495 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma
2022/02/06 | 85939 | biblio/pbibtex/pbibtex-base.zip
2022/02/06 | 836085 | graphics/pstricks/contrib/pst-optexp/pst-optexp.dtx
-2022/02/06 | 824418 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
2022/02/06 | 823616 | systems/texlive/tlnet/archive/yquant.doc.r61897.tar.xz
-2022/02/06 | 81507 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
2022/02/06 | 79956 | systems/texlive/tlnet/archive/l3experimental.source.r61903.tar.xz
-2022/02/06 | 79058 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
-2022/02/06 | 78983 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma
-2022/02/06 | 7759 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma
-2022/02/06 | 77069 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
-2022/02/06 | 76200 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
+2022/02/06 | 7900 | support/TeX4ht/source/mktex4ht-cnf.tex
2022/02/06 | 760 | graphics/pgf/contrib/causets/causet_tikz_example1.tex
-2022/02/06 | 753732 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma
-2022/02/06 | 752443 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin-x64.tar.lzma
-2022/02/06 | 74118 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
-2022/02/06 | 73652 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma
-2022/02/06 | 73206 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
-2022/02/06 | 72889 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
-2022/02/06 | 72005 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma
-2022/02/06 | 71844 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
-2022/02/06 | 70973 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
+2022/02/06 | 7188 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2022/02/06 | 697140 | systems/texlive/tlnet/archive/latex-base-dev.source.r61902.tar.xz
-2022/02/06 | 691860 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin.tar.lzma
2022/02/06 | 6904 | systems/texlive/tlnet/archive/pyluatex.r61901.tar.xz
-2022/02/06 | 68736 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma
-2022/02/06 | 68532 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma
2022/02/06 | 684 | macros/latex/contrib/scratch3/README
-2022/02/06 | 682181 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
-2022/02/06 | 6807426 | systems/texlive/tlnet/install-tl-unx.tar.gz
-2022/02/06 | 68021 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma
-2022/02/06 | 67891 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma
-2022/02/06 | 67221 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
2022/02/06 | 664 | systems/texlive/tlnet/archive/collection-xetex.r61886.tar.xz
-2022/02/06 | 65079 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
-2022/02/06 | 64693 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma
-2022/02/06 | 64539 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma
-2022/02/06 | 64505 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma
-2022/02/06 | 63750 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma
-2022/02/06 | 635247 | systems/win32/miktex/tm/packages/files.csv.lzma
-2022/02/06 | 635157 | systems/win32/miktex/tm/packages/next/files.csv.lzma
-2022/02/06 | 63365 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
-2022/02/06 | 630636 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma
-2022/02/06 | 629384 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
-2022/02/06 | 62444 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
-2022/02/06 | 62352 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
2022/02/06 | 61993 | graphics/pstricks/contrib/pst-optexp/pst-optexp-quickref.pdf
+2022/02/06 | 610614 | support/TeX4ht/source/tex4ht-html4.tex
2022/02/06 | 604 | systems/texlive/tlnet/archive/graphics-def.doc.r61899.tar.xz
-2022/02/06 | 598775 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
2022/02/06 | 597264 | systems/texlive/tlnet/archive/easybook.doc.r61898.tar.xz
-2022/02/06 | 591259 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma
2022/02/06 | 587508 | systems/texlive/tlnet/archive/l3kernel.source.r61903.tar.xz
-2022/02/06 | 58729 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma
-2022/02/06 | 58644 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
2022/02/06 | 579770 | web/c_cpp/cweb.zip
-2022/02/06 | 57562 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma
-2022/02/06 | 57423 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma
-2022/02/06 | 57354 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
-2022/02/06 | 57211 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
-2022/02/06 | 57011 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma
-2022/02/06 | 56849 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma
-2022/02/06 | 565708 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
2022/02/06 | 56396 | systems/texlive/tlnet/archive/yquant.r61897.tar.xz
2022/02/06 | 56168 | systems/texlive/tlnet/archive/cweb.doc.r61894.tar.xz
-2022/02/06 | 55755 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin.tar.lzma
-2022/02/06 | 55200 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma
-2022/02/06 | 54997 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma
-2022/02/06 | 548 | systems/texlive/tlnet/archive/collection-langchinese.r61886.tar.xz
2022/02/06 | 537241 | macros/latex/contrib/scratch3.zip
2022/02/06 | 53326 | biblio/pbibtex/pbibtex-manual/jbtxdoc.tex
-2022/02/06 | 532414 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma
-2022/02/06 | 528109 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
-2022/02/06 | 52514 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
-2022/02/06 | 52323 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
2022/02/06 | 520325 | macros/latex/contrib/scratch3/scratch3-fr.pdf
-2022/02/06 | 52004 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
2022/02/06 | 518100 | systems/texlive/tlnet/archive/translations.doc.r61896.tar.xz
-2022/02/06 | 51549 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma
-2022/02/06 | 51412 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma
-2022/02/06 | 50823 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma
2022/02/06 | 5008 | web/pwebmac/index.md
-2022/02/06 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
-2022/02/06 | 48820 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
2022/02/06 | 486618 | graphics/pgf/contrib/causets.zip
-2022/02/06 | 484673 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma
-2022/02/06 | 47985 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
-2022/02/06 | 478897 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma
-2022/02/06 | 477698 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma
2022/02/06 | 47689 | macros/latex/contrib/scratch3/scratch3.sty
-2022/02/06 | 46110 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma
-2022/02/06 | 45928 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma
-2022/02/06 | 45736 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
-2022/02/06 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2022/02/06 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
-2022/02/06 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2022/02/06 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
-2022/02/06 | 43945 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
-2022/02/06 | 43812 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
-2022/02/06 | 43653 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma
-2022/02/06 | 43566 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
2022/02/06 | 435576 | graphics/pgf/contrib/causets/causets.pdf
-2022/02/06 | 43429 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma
-2022/02/06 | 42765 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma
-2022/02/06 | 41388 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma
-2022/02/06 | 41239 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
-2022/02/06 | 41215 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma
-2022/02/06 | 403148 | systems/texlive/tlnet/archive/texlive-scripts.doc.r61885.tar.xz
-2022/02/06 | 393908 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
-2022/02/06 | 39324 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma
-2022/02/06 | 38567 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma
2022/02/06 | 38536 | biblio/pbibtex/pbibtex-manual/jbtxhak.tex
-2022/02/06 | 38478 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma
2022/02/06 | 3766 | graphics/pstricks/contrib/pst-optexp/pst-optexp.ins
2022/02/06 | 3750885 | graphics/pstricks/contrib/pst-optexp.zip
-2022/02/06 | 37377 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
-2022/02/06 | 37133 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma
-2022/02/06 | 37112 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
-2022/02/06 | 36061 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma
-2022/02/06 | 355066 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
-2022/02/06 | 35238 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
-2022/02/06 | 35178 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
2022/02/06 | 3507648 | systems/texlive/tlnet/archive/l3experimental.doc.r61903.tar.xz
2022/02/06 | 3502 | biblio/pbibtex/pbibtex-base/jbtxdoc.bib
2022/02/06 | 346104 | web/c_cpp/cweb/cwebman.pdf
2022/02/06 | 34466 | graphics/pgf/contrib/causets/causets.tex
-2022/02/06 | 34051 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
2022/02/06 | 3369 | graphics/pgf/contrib/causets/causet_tikz_example2.tex
-2022/02/06 | 332531 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma
+2022/02/06 | 336643 | support/TeX4ht/source/tex4ht-ooffice.tex
2022/02/06 | 3311941 | graphics/pstricks/contrib/pst-optexp/pst-optexp-DE.pdf
-2022/02/06 | 32964 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma
2022/02/06 | 32810 | macros/latex/contrib/scratch3/scratch3-fr.tex
2022/02/06 | 3266542 | graphics/pstricks/contrib/pst-optexp/pst-optexp.pdf
-2022/02/06 | 326180 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
-2022/02/06 | 32080 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
-2022/02/06 | 317512 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma
-2022/02/06 | 31570 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma
-2022/02/06 | 31540 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
-2022/02/06 | 31412 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma
-2022/02/06 | 31335 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
2022/02/06 | 3122422 | info/latex-for-undergraduates.zip
2022/02/06 | 3110 | biblio/pbibtex/pbibtex-base/cpp.awk
2022/02/06 | 30811 | biblio/pbibtex/pbibtex-manual/jbibtex.tex
-2022/02/06 | 30561 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
-2022/02/06 | 30182 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma
-2022/02/06 | 296123 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
2022/02/06 | 29400040 | systems/texlive/tlnet/archive/latex-base-dev.doc.r61902.tar.xz
2022/02/06 | 289185 | biblio/pbibtex/pbibtex-manual/jbtxdoc.pdf
-2022/02/06 | 28770 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma
-2022/02/06 | 28703 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma
-2022/02/06 | 286572 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
-2022/02/06 | 286070 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
-2022/02/06 | 28584 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
-2022/02/06 | 285552 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma
-2022/02/06 | 28337 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma
-2022/02/06 | 281917 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
-2022/02/06 | 2799002 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
-2022/02/06 | 27787 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma
-2022/02/06 | 27460 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
-2022/02/06 | 27254 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma
2022/02/06 | 2723 | graphics/pstricks/contrib/pst-optexp/Makefile
-2022/02/06 | 2674150 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma
-2022/02/06 | 262753 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
-2022/02/06 | 262652 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
2022/02/06 | 26075 | biblio/pbibtex/pbibtex-base/jalpha.bst
-2022/02/06 | 259151 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma
2022/02/06 | 25829 | biblio/pbibtex/pbibtex-base/jname.bst
2022/02/06 | 257313 | biblio/pbibtex/pbibtex-manual/jbibtex.pdf
-2022/02/06 | 256593 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma
-2022/02/06 | 25627668 | systems/texlive/tlnet/install-tl.zip
-2022/02/06 | 254846 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma
-2022/02/06 | 25481 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma
-2022/02/06 | 25129 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma
-2022/02/06 | 251253 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma
-2022/02/06 | 25080 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
2022/02/06 | 247228 | biblio/pbibtex/pbibtex-manual/jbtxhak.pdf
-2022/02/06 | 244997 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
2022/02/06 | 24088 | systems/texlive/tlnet/archive/cweb.r61894.tar.xz
-2022/02/06 | 24077 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
2022/02/06 | 23980 | biblio/pbibtex/pbibtex-base/jxampl.bib
-2022/02/06 | 23935 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
-2022/02/06 | 2349068 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
2022/02/06 | 233 | web/pwebmac/trapman.ch
2022/02/06 | 23196 | systems/texlive/tlnet/archive/l3experimental.r61903.tar.xz
2022/02/06 | 22890 | biblio/pbibtex/pbibtex-base/jplain.bst
@@ -201,92 +760,33 @@
2022/02/06 | 22422 | biblio/pbibtex/pbibtex-base/jabbrv.bst
2022/02/06 | 223192 | systems/texlive/tlnet/archive/latex-base-dev.r61902.tar.xz
2022/02/06 | 2220 | web/pwebmac/README.md
-2022/02/06 | 22157 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma
-2022/02/06 | 216595 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
2022/02/06 | 2152860 | systems/texlive/tlnet/archive/univie-ling.doc.r61900.tar.xz
-2022/02/06 | 213133 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
-2022/02/06 | 21312 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma
-2022/02/06 | 209863 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma
2022/02/06 | 20984 | biblio/pbibtex/pbibtex-base/tieice.bst
-2022/02/06 | 20873863 | systems/texlive/tlnet/install-tl-windows.exe
2022/02/06 | 20777 | web/pwebmac.zip
2022/02/06 | 20673 | biblio/pbibtex/pbibtex-base/tipsj.bst
2022/02/06 | 2064 | graphics/pgf/contrib/causets/README.md
2022/02/06 | 20459 | biblio/pbibtex/pbibtex-base/junsrt.bst
-2022/02/06 | 203062 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
-2022/02/06 | 20189 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma
-2022/02/06 | 2006600 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
-2022/02/06 | 200155 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma
-2022/02/06 | 199791 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma
-2022/02/06 | 199421 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma
-2022/02/06 | 199170 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma
2022/02/06 | 19614 | graphics/pgf/contrib/causets/causets.sty
-2022/02/06 | 196135 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
-2022/02/06 | 18493 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
-2022/02/06 | 18376 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
-2022/02/06 | 181556 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
-2022/02/06 | 179948 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma
-2022/02/06 | 1732207 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma
-2022/02/06 | 172637 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
-2022/02/06 | 17104509 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2022/02/06 | 182850 | support/TeX4ht/source/ChangeLog
2022/02/06 | 170460 | systems/texlive/tlnet/archive/l3kernel.r61903.tar.xz
-2022/02/06 | 168796 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
2022/02/06 | 16580 | systems/texlive/tlnet/archive/easybook.r61898.tar.xz
-2022/02/06 | 16569 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma
-2022/02/06 | 16509 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma
2022/02/06 | 16488 | systems/texlive/tlnet/archive/easybook.source.r61898.tar.xz
-2022/02/06 | 157568 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma
2022/02/06 | 1554 | biblio/pbibtex/pbibtex-manual/LICENSE
2022/02/06 | 1554 | biblio/pbibtex/pbibtex-base/LICENSE
-2022/02/06 | 155441 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
-2022/02/06 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
-2022/02/06 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
-2022/02/06 | 152021 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma
2022/02/06 | 1514 | web/pwebmac/Xerrorlog.tex
-2022/02/06 | 1499490 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
-2022/02/06 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
-2022/02/06 | 1452956 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
-2022/02/06 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
-2022/02/06 | 14406 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
-2022/02/06 | 1410708 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
-2022/02/06 | 1410376 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
-2022/02/06 | 139187 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
-2022/02/06 | 135905 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma
-2022/02/06 | 1355173 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma
-2022/02/06 | 13512 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma
-2022/02/06 | 134989 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
2022/02/06 | 13476 | systems/texlive/tlnet/archive/translations.r61896.tar.xz
2022/02/06 | 13420 | biblio/pbibtex/pbibtex-manual/pbibtex-manual.tex
2022/02/06 | 1339 | graphics/pstricks/contrib/pst-optexp/README
2022/02/06 | 132324 | systems/texlive/tlnet/archive/univie-ling.r61900.tar.xz
-2022/02/06 | 1322847 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
-2022/02/06 | 1305401 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
-2022/02/06 | 1305217 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
-2022/02/06 | 1300071 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma
-2022/02/06 | 126864 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma
2022/02/06 | 12307 | web/pwebmac/makeall
-2022/02/06 | 120230 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma
2022/02/06 | 118781 | biblio/pbibtex/pbibtex-manual/pbibtex-manual.pdf
-2022/02/06 | 1181081 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma
2022/02/06 | 11595 | web/pwebmac/webman.ch
2022/02/06 | 11571472 | systems/texlive/tlnet/archive/l3kernel.doc.r61903.tar.xz
-2022/02/06 | 115634 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
-2022/02/06 | 1153 | systems/win32/miktex/tm/packages/next/pr.ini
-2022/02/06 | 1151 | systems/win32/miktex/tm/packages/pr.ini
-2022/02/06 | 113010 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
-2022/02/06 | 112668 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
2022/02/06 | 10988 | systems/texlive/tlnet/archive/graphics-def.r61899.tar.xz
-2022/02/06 | 109549 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
-2022/02/06 | 109309 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
2022/02/06 | 1090 | biblio/pbibtex/pbibtex-base/jbibtex.bib
-2022/02/06 | 1086643 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
-2022/02/06 | 108380 | systems/texlive/tlnet/archive/texlive-scripts.r61885.tar.xz
2022/02/06 | 10831 | graphics/pstricks/contrib/pst-optexp/Changes
-2022/02/06 | 104698 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
-2022/02/06 | 103411 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
2022/02/06 | 1022 | biblio/pbibtex/pbibtex-base/README.md
2022/02/06 | 101714 | biblio/pbibtex/pbibtex-base/jbtxbst.doc
-2022/02/06 | 101559 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma
2022/02/06 | 10152128 | macros/latex/contrib/acmart.zip
2022/02/06 | 1009 | biblio/pbibtex/pbibtex-base/generate.sh
2022/02/05 | 99 | graphics/asymptote/base/asy_filetype.vim
@@ -337,6 +837,7 @@
2022/02/05 | 954 | graphics/asymptote/examples/poster.asy
2022/02/05 | 953 | graphics/asymptote/LspCpp/include/LibLsp/lsp/workspace/workspaceFolders.h
2022/02/05 | 952118 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/nuklear.h
+2022/02/05 | 951 | fonts/fourier-GUT/afm/fourier-alt.afm
2022/02/05 | 9502 | graphics/asymptote/LspCpp/third_party/uri/deps/googletest/test/gtest_list_output_unittest.py
2022/02/05 | 94 | graphics/asymptote/LspCpp/third_party/rapidjson/include_dirs.js
2022/02/05 | 94 | graphics/asymptote/LspCpp/CMakeFiles/CMakeRuleHashes.txt
@@ -366,7 +867,6 @@
2022/02/05 | 9271 | graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/biginteger.h
2022/02/05 | 9267 | graphics/asymptote/LspCpp/third_party/uri/deps/googlemock/src/gmock-internal-utils.cc
2022/02/05 | 9251 | graphics/asymptote/errors
-2022/02/05 | 924548 | systems/texlive/tlnet/archive/tex4ht.r61883.tar.xz
2022/02/05 | 923 | graphics/asymptote/LspCpp/third_party/rapidjson/bin/jsonschema/tests/draft4/required.json
2022/02/05 | 92378 | graphics/asymptote/LspCpp/third_party/rapidjson/doc/diagram/iterative-parser-states-diagram.png
2022/02/05 | 922 | graphics/asymptote/doc/imagecontour.asy
@@ -401,6 +901,7 @@
2022/02/05 | 896 | web/c_cpp/cweb/comm-pc.ch
2022/02/05 | 896 | graphics/asymptote/LspCpp/third_party/rapidjson/bin/jsonschema/tests/draft4/maxLength.json
2022/02/05 | 895 | graphics/asymptote/LspCpp/third_party/rapidjson/bin/jsonschema/tests/draft3/maxLength.json
+2022/02/05 | 892 | fonts/fourier-GUT/afm/fourier-alt-semi.afm
2022/02/05 | 8911 | graphics/asymptote/doc/asy.1
2022/02/05 | 88 | graphics/asymptote/cudareflect/tinyexr/examples/exrfilter/README.md
2022/02/05 | 8894 | graphics/asymptote/LspCpp/third_party/uri/deps/googletest/README.md
@@ -436,6 +937,7 @@
2022/02/05 | 866 | graphics/asymptote/examples/xxsq01x-1.asy
2022/02/05 | 8668 | graphics/asymptote/xstream.h
2022/02/05 | 86552 | graphics/asymptote/LspCpp/third_party/uri/deps/docs/advanced.md
+2022/02/05 | 8650 | fonts/fourier-GUT/README
2022/02/05 | 85 | graphics/asymptote/LspCpp/CMakeFiles/cmake.check_cache
2022/02/05 | 85 | graphics/asymptote/cudareflect/tinyexr/vcsetup2019.bat
2022/02/05 | 85989 | graphics/asymptote/base/three.asy
@@ -480,6 +982,7 @@
2022/02/05 | 83449 | graphics/asymptote/lex.yy.cc
2022/02/05 | 8342 | graphics/asymptote/base/simplex.asy
2022/02/05 | 832 | graphics/asymptote/cudareflect/tinyexr/test/unit/regression/poc-255456016cca60ddb5c5ed6898182e13739bf687b17d1411e97bb60ad95e7a84_min
+2022/02/05 | 832 | fonts/fourier-GUT/afm/fourier-alt-black.afm
2022/02/05 | 831 | graphics/asymptote/runbacktrace.in
2022/02/05 | 831 | graphics/asymptote/cudareflect/tinyexr/test/fuzzer/fuzz.cc
2022/02/05 | 830 | graphics/asymptote/shaders.h
@@ -489,6 +992,7 @@
2022/02/05 | 8296 | graphics/asymptote/LspCpp/third_party/threadpool/libs/threadpool/doc/overview.txt
2022/02/05 | 828 | graphics/asymptote/LspCpp/third_party/rapidjson/CMakeModules/FindGTestSrc.cmake
2022/02/05 | 828 | graphics/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/generateDelegateMethods.h
+2022/02/05 | 828 | fonts/fourier-GUT/afm/fourier-alt-bold.afm
2022/02/05 | 827 | graphics/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/checkDelegateMethodsStatus.h
2022/02/05 | 82754 | macros/latex/contrib/biblatex-contrib/biblatex-unified/unified-test.pdf
2022/02/05 | 826548 | graphics/asymptote/LspCpp/CMakeFiles/lspcpp.dir/compiler_depend.make
@@ -612,7 +1116,6 @@
2022/02/05 | 727 | graphics/asymptote/examples/fermi.asy
2022/02/05 | 7274 | graphics/asymptote/runtime.pl
2022/02/05 | 725 | graphics/asymptote/LspCpp/third_party/rapidjson/bin/jsonschema/tests/draft4/minProperties.json
-2022/02/05 | 7240 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2022/02/05 | 722 | graphics/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/searchSymbols.h
2022/02/05 | 72283 | graphics/asymptote/base/three_surface.asy
2022/02/05 | 7222 | graphics/asymptote/GUI/pyUIClass/widg_addLabel.py
@@ -672,6 +1175,7 @@
2022/02/05 | 683 | graphics/asymptote/examples/fractaltree.asy
2022/02/05 | 6835 | web/c_cpp/cweb/examples/treeprint.w
2022/02/05 | 68347 | graphics/asymptote/base/webgl/asygl.js
+2022/02/05 | 682 | graphics/metapost/contrib/macros/byrne/README
2022/02/05 | 6818 | graphics/asymptote/LspCpp/third_party/rapidjson/CHANGELOG.md
2022/02/05 | 68126 | graphics/asymptote/prc/PRCTools/describePRC.cc
2022/02/05 | 680 | graphics/asymptote/tests/array/delete.asy
@@ -805,12 +1309,12 @@
2022/02/05 | 61667 | graphics/asymptote/LspCpp/third_party/uri/deps/googlemock/include/gmock/gmock-actions.h
2022/02/05 | 615 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/ThirdPartyLibs/nativefiledialog/src/nfd_common.h
2022/02/05 | 6159 | graphics/asymptote/base/plain_strings.asy
+2022/02/05 | 6155 | fonts/fourier-GUT/doc/fourier-orns-doc.tex
2022/02/05 | 612 | graphics/asymptote/cudareflect/tinyexr/experimental/js/README.md
2022/02/05 | 612 | graphics/asymptote/cudareflect/tinyexr/examples/exr2rgbe/exr2rgbe.cc
2022/02/05 | 611 | graphics/asymptote/GUI/xasy.py
2022/02/05 | 6117 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/ThirdPartyLibs/nativefiledialog/src/nfd_cocoa.m
2022/02/05 | 610 | graphics/asymptote/examples/impact.asy
-2022/02/05 | 610545 | support/TeX4ht/source/tex4ht-html4.tex
2022/02/05 | 6104 | graphics/asymptote/LspCpp/third_party/uri/deps/BUILD.bazel
2022/02/05 | 6104 | graphics/asymptote/doc/FAQ/m-lout.pl
2022/02/05 | 60 | graphics/asymptote/LspCpp/third_party/rapidjson/bin/jsonchecker/fail1.json
@@ -1271,6 +1775,7 @@
2022/02/05 | 3917 | graphics/asymptote/LspCpp/third_party/uri/deps/googletest/samples/sample2_unittest.cc
2022/02/05 | 3917 | graphics/asymptote/LspCpp/include/LibLsp/lsp/Markup/Markup.h
2022/02/05 | 3912 | graphics/asymptote/tr.h
+2022/02/05 | 3911 | fonts/fourier-GUT/latex/fourier-orns.sty
2022/02/05 | 390 | graphics/asymptote/doc/tile.asy
2022/02/05 | 38 | graphics/asymptote/LspCpp/third_party/rapidjson/bin/jsonchecker/fail26.json
2022/02/05 | 38 | graphics/asymptote/LspCpp/CMakeFiles/lspcpp.dir/cmake_clean_target.cmake
@@ -1489,6 +1994,7 @@
2022/02/05 | 3125 | graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/filewritestream.h
2022/02/05 | 3125 | graphics/asymptote/doc/latexusage.tex
2022/02/05 | 311 | graphics/asymptote/LspCpp/third_party/uri/deps/googletest/cmake/gtest.pc.in
+2022/02/05 | 31148 | fonts/fourier-GUT/opentype/FourierOrns-Regular.otf
2022/02/05 | 3112 | graphics/asymptote/LspCpp/CMakeFiles/CMakeError.log
2022/02/05 | 3109 | graphics/asymptote/cudareflect/tinyexr/deps/miniz/examples/example1.c
2022/02/05 | 310131 | graphics/pgf/contrib/yquant/doc/yquant-doc.tex
@@ -2063,7 +2569,6 @@
2022/02/05 | 182 | graphics/asymptote/tests/string/find.asy
2022/02/05 | 182 | graphics/asymptote/examples/label3.asy
2022/02/05 | 1828 | graphics/asymptote/beziercurve.cc
-2022/02/05 | 182274 | support/TeX4ht/source/ChangeLog
2022/02/05 | 1814 | graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/document_symbol.h
2022/02/05 | 1813 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/OpenGLWindow/OpenGLInclude.h
2022/02/05 | 18095 | graphics/asymptote/doc/asy-latex.dtx
@@ -2234,6 +2739,7 @@
2022/02/05 | 1525 | graphics/asymptote/LspCpp/third_party/rapidjson/bin/jsonschema/tests/draft4/multipleOf.json
2022/02/05 | 1524 | graphics/asymptote/patches/flex.patch
2022/02/05 | 1521 | graphics/asymptote/LspCpp/third_party/utfcpp/source/utf8.h
+2022/02/05 | 15200 | fonts/fourier-GUT/latex/fourier.sty
2022/02/05 | 151956 | systems/texlive/tlnet/tlpkg/TeXLive/TLUtils.pm
2022/02/05 | 151573 | macros/latex/contrib/l3kernel/l3news06.pdf
2022/02/05 | 151570 | macros/latex/contrib/l3kernel/l3docstrip.pdf
@@ -2315,7 +2821,6 @@
2022/02/05 | 13663 | graphics/asymptote/doc/install-sh
2022/02/05 | 13663 | graphics/asymptote/doc/FAQ/install-sh
2022/02/05 | 13649809 | install/macros/latex/contrib/l3kernel.tds.zip
-2022/02/05 | 136384 | systems/texlive/tlnet/archive/tex4ht.doc.r61883.tar.xz
2022/02/05 | 136306 | macros/latex/contrib/l3kernel/l3file.dtx
2022/02/05 | 13615 | graphics/asymptote/entry.h
2022/02/05 | 13612 | graphics/asymptote/LspCpp/third_party/uri/deps/googlemock/test/gmock_output_test_golden.txt
@@ -2407,7 +2912,6 @@
2022/02/05 | 123 | graphics/asymptote/doc/superpath.asy
2022/02/05 | 1239 | graphics/asymptote/v3dheadertypes.h
2022/02/05 | 123958 | macros/latex/contrib/l3kernel/l3keys.dtx
-2022/02/05 | 1238568 | systems/texlive/tlnet/archive/tex4ht.source.r61883.tar.xz
2022/02/05 | 1236 | graphics/asymptote/primitives.h
2022/02/05 | 1236 | graphics/asymptote/LspCpp/third_party/rapidjson/doc/performance.zh-cn.md
2022/02/05 | 1235 | graphics/asymptote/examples/animations/inlinemovie.tex
@@ -2510,6 +3014,7 @@
2022/02/05 | 1126 | graphics/asymptote/coenv.cc
2022/02/05 | 1125 | graphics/asymptote/LspCpp/third_party/threadpool/Makefile
2022/02/05 | 11255 | graphics/asymptote/LspCpp/src/lsp/textDocument.cpp
+2022/02/05 | 112510 | fonts/fourier-GUT/doc/fourier-orns-doc.pdf
2022/02/05 | 1124 | graphics/asymptote/GUI/res/icons/android-locate.svg
2022/02/05 | 112487 | macros/latex/contrib/l3kernel/l3news05.pdf
2022/02/05 | 1122 | graphics/asymptote/LspCpp/third_party/threadpool/libs/threadpool/doc/examples_header.htm
@@ -3878,7 +4383,6 @@
2022/02/04 | 142849 | macros/latex-dev/base/ltnews06.pdf
2022/02/04 | 142825 | macros/latex-dev/base/ltclass.dtx
2022/02/04 | 1422 | macros/xetex/latex/xepersian/README
-2022/02/04 | 1422571 | macros/latex/contrib/siunitx.zip
2022/02/04 | 1420 | fonts/etbb/tfm/ETbb-Italic-tosf-ts1.tfm
2022/02/04 | 1420 | fonts/etbb/tfm/ETbb-Italic-tlf-ts1.tfm
2022/02/04 | 1420 | fonts/etbb/tfm/ETbb-Italic-osf-ts1.tfm
@@ -4002,52 +4506,25 @@
2022/02/04 | 1021798 | graphics/pgf/contrib/circuitikz/tex/circuitikz-1.2.7-body.tex
2022/02/04 | 1014383 | graphics/pgf/contrib/circuitikz/tex/t-circuitikz-1.2.7.tex
2022/02/04 | 1006705 | macros/latex/contrib/reledmac/reledpar.pdf
-2022/02/03 | 996 | macros/latex/contrib/siunitx/README.md
-2022/02/03 | 98548 | macros/latex/contrib/siunitx/siunitx-unit.dtx
-2022/02/03 | 9759 | macros/latex/contrib/siunitx/siunitx-symbol.dtx
2022/02/03 | 9184 | macros/latex/contrib/fnpct/fnpct-manual.cls
2022/02/03 | 89216 | systems/texlive/tlnet/archive/mathtools.source.r61856.tar.xz
-2022/02/03 | 8798 | macros/latex/contrib/siunitx/siunitx-command.dtx
-2022/02/03 | 64333 | macros/latex/contrib/siunitx/CHANGELOG.md
-2022/02/03 | 639466 | macros/latex/contrib/siunitx/siunitx.pdf
-2022/02/03 | 607726 | macros/latex/contrib/siunitx/siunitx-code.pdf
2022/02/03 | 527283 | macros/latex/contrib/fnpct.zip
2022/02/03 | 509779 | macros/latex/contrib/fnpct/fnpct-manual.pdf
-2022/02/03 | 50881 | macros/latex/contrib/siunitx/siunitx-table.dtx
-2022/02/03 | 5029 | macros/latex/contrib/siunitx/siunitx-locale.dtx
2022/02/03 | 47991 | macros/latex/contrib/fnpct/fnpct.sty
-2022/02/03 | 4748 | macros/latex/contrib/siunitx/siunitx-abbreviations.cfg
2022/02/03 | 4592 | systems/texlive/tlnet/archive/sillypage.source.r61857.tar.xz
2022/02/03 | 4300 | systems/texlive/tlnet/archive/fcolumn.r61855.tar.xz
-2022/02/03 | 3687 | macros/latex/contrib/siunitx/siunitx.ins
2022/02/03 | 35316 | systems/texlive/tlnet/archive/texlogsieve.r61859.tar.xz
-2022/02/03 | 34421 | macros/latex/contrib/siunitx/siunitx-print.dtx
-2022/02/03 | 33799 | macros/latex/contrib/siunitx/siunitx-compound.dtx
2022/02/03 | 320148 | systems/texlive/tlnet/archive/fcolumn.doc.r61855.tar.xz
-2022/02/03 | 31738 | macros/latex/contrib/siunitx/siunitx-version-1.cfg
-2022/02/03 | 31668 | macros/latex/contrib/siunitx/siunitx-emulation.dtx
2022/02/03 | 291008 | systems/texlive/tlnet/archive/sillypage.doc.r61857.tar.xz
-2022/02/03 | 2883 | macros/latex/contrib/siunitx/siunitx-binary.dtx
2022/02/03 | 27748 | macros/latex/contrib/fnpct/fnpct-manual.tex
-2022/02/03 | 273398 | macros/latex/contrib/siunitx/siunitx-v2.sty
2022/02/03 | 26116 | biblio/biber/documentation/Changes
-2022/02/03 | 25985 | macros/latex/contrib/siunitx/siunitx-complex.dtx
-2022/02/03 | 2492 | macros/latex/contrib/siunitx/siunitx-code.tex
2022/02/03 | 21760 | systems/texlive/tlnet/archive/fcolumn.source.r61855.tar.xz
2022/02/03 | 20176 | systems/texlive/tlnet/archive/mathtools.r61856.tar.xz
-2022/02/03 | 19900 | macros/latex/contrib/siunitx/siunitx.dtx
2022/02/03 | 18768170 | macros/latex/contrib/biblatex.zip
-2022/02/03 | 1729 | macros/latex/contrib/siunitx/siunitx-binary.cfg
-2022/02/03 | 16709 | macros/latex/contrib/siunitx/siunitx-angle.dtx
-2022/02/03 | 15317 | macros/latex/contrib/siunitx/siunitx-quantity.dtx
2022/02/03 | 1505 | macros/latex/contrib/fnpct/README
-2022/02/03 | 148539 | macros/latex/contrib/siunitx/siunitx.tex
-2022/02/03 | 1462892 | install/macros/latex/contrib/siunitx.tds.zip
2022/02/03 | 13468 | systems/texlive/tlnet/archive/sillypage.r61857.tar.xz
-2022/02/03 | 121890 | macros/latex/contrib/siunitx/siunitx-number.dtx
2022/02/03 | 1035328 | systems/texlive/tlnet/archive/mathtools.doc.r61856.tar.xz
2022/02/03 | 103252 | systems/texlive/tlnet/archive/texlogsieve.doc.r61859.tar.xz
-2022/02/03 | 10106 | macros/latex/contrib/siunitx/siunitx-abbreviation.dtx
2022/02/02 | 99 | macros/latex/contrib/biblatex/latex/bbx/authoryear-icomp.bbx
2022/02/02 | 98 | macros/latex/contrib/biblatex/latex/bbx/authoryear-ibid.bbx
2022/02/02 | 98 | macros/latex/contrib/biblatex/latex/bbx/authoryear-comp.bbx
@@ -4138,7 +4615,6 @@
2022/02/02 | 5091 | macros/latex/contrib/biblatex/doc/examples/21-indexing-multiple.tex
2022/02/02 | 505 | macros/latex/contrib/biblatex/doc/examples/95-customlists.bib
2022/02/02 | 5047 | macros/latex/contrib/biblatex/doc/examples/70-style-verbose.tex
-2022/02/02 | 498903 | macros/latex/contrib/mathtools/mathtools.pdf
2022/02/02 | 48817 | macros/latex/contrib/biblatex/CHANGES.md
2022/02/02 | 483688 | systems/texlive/tlnet/archive/xcharter.doc.r61837.tar.xz
2022/02/02 | 47849 | macros/latex/contrib/biblatex/latex/lbx/spanish.lbx
@@ -4187,7 +4663,6 @@
2022/02/02 | 33871 | macros/latex/contrib/biblatex/latex/lbx/serbianc.lbx
2022/02/02 | 33851 | macros/latex/contrib/biblatex/latex/lbx/czech.lbx
2022/02/02 | 33796 | macros/latex/contrib/biblatex/latex/lbx/estonian.lbx
-2022/02/02 | 329716 | macros/latex/contrib/mathtools/empheq.pdf
2022/02/02 | 32943 | macros/latex/contrib/biblatex/latex/lbx/slovak.lbx
2022/02/02 | 328741 | macros/latex/contrib/biblatex/doc/examples/74-style-verbose-trad1-biber.pdf
2022/02/02 | 32796 | macros/latex/contrib/biblatex/latex/lbx/polish.lbx
@@ -4211,18 +4686,15 @@
2022/02/02 | 29861 | macros/latex/contrib/biblatex/latex/lbx/croatian.lbx
2022/02/02 | 2948 | systems/texlive/tlnet/archive/autopuncitems.r61825.tar.xz
2022/02/02 | 29444 | macros/latex/contrib/biblatex/latex/lbx/galician.lbx
-2022/02/02 | 2943 | macros/latex/contrib/mathtools/mhsetup.ins
2022/02/02 | 2934 | macros/latex/contrib/biblatex/latex/cbx/authortitle-tcomp.cbx
2022/02/02 | 2917 | macros/latex/contrib/biblatex/latex/lbx/british.lbx
2022/02/02 | 290007 | macros/latex/contrib/biblatex/doc/examples/60-style-authortitle-biber.pdf
2022/02/02 | 2899 | macros/latex/contrib/biblatex/doc/examples/18-numeric-hybrid.tex
2022/02/02 | 2893 | macros/latex/contrib/biblatex/latex/cbx/authortitle.cbx
-2022/02/02 | 2864 | macros/latex/contrib/mathtools/mathtools.ins
2022/02/02 | 283555 | macros/latex/contrib/biblatex/doc/examples/03-localization-keys-biber.pdf
2022/02/02 | 2833 | macros/latex/contrib/biblatex/doc/examples/63-style-authortitle-icomp.tex
2022/02/02 | 283040 | macros/latex/contrib/biblatex/doc/examples/03-localization-keys-bibtex.pdf
2022/02/02 | 280070 | macros/latex/contrib/biblatex/doc/examples/50-style-authoryear-biber.pdf
-2022/02/02 | 2795 | macros/latex/contrib/mathtools/empheq.ins
2022/02/02 | 2780 | macros/latex/contrib/sillypage/sillypage.ins
2022/02/02 | 277799 | macros/latex/contrib/biblatex/doc/examples/50-style-authoryear-bibtex.pdf
2022/02/02 | 276 | macros/latex/contrib/biblatex/latex/lbx/austrian.lbx
@@ -4249,7 +4721,6 @@
2022/02/02 | 25680 | macros/latex/contrib/biblatex/latex/bbx/standard.bbx
2022/02/02 | 2558812 | systems/texlive/tlnet/archive/erewhon.r61835.tar.xz
2022/02/02 | 2554092 | systems/texlive/tlnet/archive/cochineal.r61834.tar.xz
-2022/02/02 | 255014 | macros/latex/contrib/mathtools/mhsetup.pdf
2022/02/02 | 2548 | systems/texlive/tlnet/archive/mindflow.r61843.tar.xz
2022/02/02 | 25296 | macros/latex/contrib/biblatex/doc/examples/96-dates-biber.pdf
2022/02/02 | 25288 | systems/texlive/tlnet/archive/pst-node.r61838.tar.xz
@@ -4259,7 +4730,6 @@
2022/02/02 | 244291 | macros/latex/contrib/biblatex/doc/examples/80-style-reading-biber.pdf
2022/02/02 | 24377 | macros/latex/contrib/biblatex/latex/blx-bibtex.def
2022/02/02 | 2434 | macros/latex/contrib/biblatex/doc/examples/20-indexing-single.tex
-2022/02/02 | 241033 | macros/latex/contrib/mathtools/mathtools.dtx
2022/02/02 | 24027 | macros/latex/contrib/biblatex/doc/examples/94-labelprefix-biber.pdf
2022/02/02 | 23970 | macros/latex/contrib/biblatex/latex/lbx/italian.lbx
2022/02/02 | 2395 | macros/latex/contrib/biblatex/doc/examples/04-delimiters.tex
@@ -4271,7 +4741,6 @@
2022/02/02 | 222705 | macros/latex/contrib/biblatex/doc/examples/63-style-authortitle-icomp-biber.pdf
2022/02/02 | 219530 | macros/latex/contrib/sillypage/sillypage.pdf
2022/02/02 | 2190 | macros/latex/contrib/biblatex/latex/blx-natbib.def
-2022/02/02 | 21784 | macros/latex/contrib/mathtools/mhsetup.dtx
2022/02/02 | 21707 | macros/latex/contrib/biblatex/doc/examples/91-sorting-schemes-biber.pdf
2022/02/02 | 213637 | macros/latex/contrib/biblatex/doc/examples/51-style-authoryear-ibid-bibtex.pdf
2022/02/02 | 213637 | macros/latex/contrib/biblatex/doc/examples/51-style-authoryear-ibid-biber.pdf
@@ -4320,11 +4789,9 @@
2022/02/02 | 1682 | macros/latex/contrib/biblatex/doc/examples/14-references-by-category.tex
2022/02/02 | 167962 | macros/latex/contrib/biblatex/doc/examples/01-introduction-bibtex.pdf
2022/02/02 | 167962 | macros/latex/contrib/biblatex/doc/examples/01-introduction-biber.pdf
-2022/02/02 | 1674 | macros/latex/contrib/mathtools/README.md
2022/02/02 | 16647 | macros/latex/contrib/biblatex/doc/examples/97-annotations-biber.pdf
2022/02/02 | 1644696 | systems/texlive/tlnet/archive/csvsimple.doc.r61839.tar.xz
2022/02/02 | 163 | macros/latex/contrib/biblatex/latex/lbx/canadian.lbx
-2022/02/02 | 163886 | macros/latex/contrib/mathtools/empheq.dtx
2022/02/02 | 1630751 | macros/latex/contrib/biblatex/doc/biblatex.pdf
2022/02/02 | 159 | macros/latex/contrib/biblatex/doc/examples/95-customlists.dbx
2022/02/02 | 158306 | macros/latex/contrib/biblatex/doc/examples/19-alphabetic-prefixed-biber.pdf
@@ -4372,10 +4839,8 @@
2022/02/02 | 12400 | macros/latex/contrib/biblatex/doc/examples/93-nameparts.tex
2022/02/02 | 12296 | macros/latex/contrib/biblatex/doc/examples/95-customlists-biber.pdf
2022/02/02 | 121056 | fonts/etbb/type1/ETbb-BoldItalic.pfb
-2022/02/02 | 1194141 | install/macros/latex/contrib/mathtools.tds.zip
2022/02/02 | 119269 | macros/latex/contrib/biblatex/doc/examples/15-references-by-type-bibtex.pdf
2022/02/02 | 119269 | macros/latex/contrib/biblatex/doc/examples/15-references-by-type-biber.pdf
-2022/02/02 | 1169208 | macros/latex/contrib/mathtools.zip
2022/02/02 | 116836 | fonts/etbb/opentype/ETbb-Regular.otf
2022/02/02 | 1160 | macros/latex/contrib/biblatex/latex/bbx/draft.bbx
2022/02/02 | 114572 | fonts/etbb/type1/ETbb-Italic.pfb
@@ -4401,9 +4866,7 @@
2022/02/02 | 101002 | macros/latex/contrib/biblatex/doc/examples/42-style-alphabetic-template-biber.pdf
2022/02/02 | 100 | macros/latex/contrib/biblatex/latex/bbx/authortitle-ibid.bbx
2022/02/02 | 100 | macros/latex/contrib/biblatex/latex/bbx/authortitle-comp.bbx
-2022/02/01 | 9998 | macros/latex/contrib/proof-at-the-end/proof-at-the-end_demo.tex
2022/02/01 | 97289 | macros/latex/contrib/dtxdescribe/dtxdescribe.dtx
-2022/02/01 | 960 | macros/latex/contrib/proof-at-the-end/proof-at-the-end.ins
2022/02/01 | 9350 | macros/latex/contrib/csvsimple/CHANGES.md
2022/02/01 | 930 | macros/latex/contrib/dtxdescribe/README.txt
2022/02/01 | 9078 | macros/latex/contrib/zref-vario/zref-vario.tex
@@ -4413,7 +4876,6 @@
2022/02/01 | 7964 | macros/latex/contrib/csvsimple/csvsimple.tex
2022/02/01 | 7698 | fonts/scholax/tex/scholax.sty
2022/02/01 | 75624 | macros/latex/contrib/csvsimple/csvsimple-example.pdf
-2022/02/01 | 73600 | macros/latex/contrib/proof-at-the-end/proof-at-the-end.dtx
2022/02/01 | 727093 | fonts/scholax/doc/scholax-doc.pdf
2022/02/01 | 719 | macros/latex/contrib/lwarp/lwarp_baseline_marker.eps
2022/02/01 | 71390 | macros/latex/contrib/csvsimple/csvsimple-legacy.tex
@@ -4424,7 +4886,6 @@
2022/02/01 | 538943 | macros/latex/contrib/zref-vario/zref-vario-code.pdf
2022/02/01 | 5336755 | fonts/erewhon.zip
2022/02/01 | 4671605 | fonts/xcharter.zip
-2022/02/01 | 461774 | macros/latex/contrib/proof-at-the-end.zip
2022/02/01 | 459 | macros/latex/contrib/mindflow/README.md
2022/02/01 | 42376 | macros/latex/contrib/csvsimple/csvsimple-l3.sty
2022/02/01 | 4236884 | install/macros/latex/contrib/lwarp.tds.zip
@@ -4442,8 +4903,6 @@
2022/02/01 | 31 | macros/latex/contrib/zref-vario/DEPENDS.txt
2022/02/01 | 319237 | macros/latex/contrib/fcolumn/fcolumn.pdf
2022/02/01 | 3176264 | macros/latex/contrib/lwarp/lwarp.pdf
-2022/02/01 | 315974 | macros/latex/contrib/proof-at-the-end/proof-at-the-end.pdf
-2022/02/01 | 31381 | macros/latex/contrib/proof-at-the-end/README.md
2022/02/01 | 309204 | macros/latex/contrib/csvsimple/csvsimple.pdf
2022/02/01 | 3054 | macros/latex/contrib/fcolumn/README
2022/02/01 | 29813 | macros/latex/contrib/lwarp/lwarpmk.lua
@@ -4473,134 +4932,6 @@
2022/02/01 | 1403 | macros/latex/contrib/zref-vario/zref-vario-code.tex
2022/02/01 | 135 | macros/latex/contrib/csvsimple/encoding.xml
2022/02/01 | 127249 | macros/latex/contrib/csvsimple/csvsimple-title.png
-2022/02/01 | 121558 | macros/latex/contrib/proof-at-the-end/proof-at-the-end_demo.pdf
2022/02/01 | 121131 | macros/latex/contrib/zref-vario/zref-vario.pdf
2022/02/01 | 1093900 | macros/latex/contrib/csvsimple/csvsimple-l3.pdf
2022/02/01 | 102188 | macros/latex/contrib/csvsimple/csvsimple-l3.tex
-2022/01/31 | 943544 | macros/unicodetex/latex/fontsetup.zip
-2022/01/31 | 9280 | fonts/xcharter/tex/XCharter.sty
-2022/01/31 | 9087 | systems/win32/miktex/setup/rpm/fedora/35/repodata/0fb481ae887c58b587a80a7c404b7352e7a93594a547e501267c8ff7fd5fc7a8-filelists.sqlite.bz2
-2022/01/31 | 89 | systems/win32/miktex/setup/deb/dists/buster/universe/binary-amd64/Release
-2022/01/31 | 89 | systems/win32/miktex/setup/deb/dists/bionic/universe/binary-amd64/Release
-2022/01/31 | 893692 | systems/texlive/tlnet/archive/markdown.doc.r61807.tar.xz
-2022/01/31 | 8902 | fonts/cochineal/README
-2022/01/31 | 86 | systems/win32/miktex/setup/deb/dists/focal/universe/binary-amd64/Release
-2022/01/31 | 85796 | systems/texlive/tlnet/archive/markdown.source.r61807.tar.xz
-2022/01/31 | 80233 | macros/latex/contrib/spbmark.zip
-2022/01/31 | 783 | systems/win32/miktex/setup/rpm/fedora/35/repodata/0a6f96eb9805e0bc590b4f0dd2a5639d4d65925d42601c8c173bf601f6e79baa-other.sqlite.bz2
-2022/01/31 | 76932 | fonts/greek/talos/Talos-Regular.otf
-2022/01/31 | 76523 | systems/win32/miktex/setup/rpm/fedora/28/repodata/18b0f74af9eedcfac2baa47df5431294d91e023139e07d660a6018e501115a9b-filelists.sqlite.bz2
-2022/01/31 | 7606 | systems/win32/miktex/setup/rpm/fedora/35/repodata/d67fd40354684cae5b6bea9f3ebc853fbd041e6c3ce5acf22035b4e5a7847d49-primary.sqlite.bz2
-2022/01/31 | 75040 | macros/latex/contrib/spbmark/spbmark.pdf
-2022/01/31 | 70705 | graphics/pstricks/contrib/pst-node/tex/pst-node.tex
-2022/01/31 | 7020 | fonts/erewhon/tex/erewhon.sty
-2022/01/31 | 6719 | systems/win32/miktex/setup/rpm/fedora/35/repodata/90341bf49549cf74f157333522dc84c20b64c709cc9c6a42f4bde48626c43e7e-filelists.xml.gz
-2022/01/31 | 667032 | systems/texlive/tlnet/archive/clistmap.doc.r61811.tar.xz
-2022/01/31 | 6488 | graphics/pstricks/contrib/pst-node/dvips/pst-node97.pro
-2022/01/31 | 63576499 | systems/win32/miktex/setup/darwin-x86_64/miktex-22.1-darwin-x86_64.dmg
-2022/01/31 | 63068 | fonts/greek/talos/talos-doc.pdf
-2022/01/31 | 6056 | systems/texlive/tlnet/archive/clistmap.r61811.tar.xz
-2022/01/31 | 5876 | systems/texlive/tlnet/archive/secnum.source.r61813.tar.xz
-2022/01/31 | 562757 | graphics/pstricks/contrib/pst-node.zip
-2022/01/31 | 55917 | systems/win32/miktex/setup/rpm/fedora/28/repodata/b13a3a7e0c284e8c9863b54c703949bd673beeca6d508d8848f5047d2dbaa3b0-primary.sqlite.bz2
-2022/01/31 | 5574 | systems/win32/miktex/setup/rpm/fedora/28/repodata/d47d061acd22bd4df06ce2143f0d742582290d53a4a0fac55f677b4fa402b6fa-primary.xml.gz
-2022/01/31 | 555 | systems/win32/miktex/setup/rpm/fedora/33/repodata/f090f618424f3d066e3aaa9b415c5b9fa42a7627a398903582e77c5978656aa5-other.xml.gz
-2022/01/31 | 55582 | systems/win32/miktex/setup/rpm/opensuse/15/repodata/3d08411fd2ffd83dac5e0a192257e7da30e93961ddb2885541f0ca68785d76c6-primary.sqlite.bz2
-2022/01/31 | 5551 | systems/win32/miktex/setup/rpm/opensuse/15/repodata/795d2bbc30a2c87274c813d545e40a32d29d2de426ef0e2b2b32f2a5f805235a-primary.xml.gz
-2022/01/31 | 51893 | systems/win32/miktex/setup/rpm/fedora/28/repodata/1476570fe8994557d5445c8fce463df683f2222b22ee15919fdedc7390c6f477-filelists.xml.gz
-2022/01/31 | 518759 | macros/unicodetex/latex/fontsetup/doc/fontsetup-doc.pdf
-2022/01/31 | 513402 | graphics/pstricks/contrib/pst-node/doc/pst-node-doc.pdf
-2022/01/31 | 512 | systems/texlive/tlnet/archive/tex-vpat.r61810.tar.xz
-2022/01/31 | 508 | systems/win32/miktex/setup/rpm/fedora/34/repodata/68b0667958acd71de2a82fe354beb57174344e665ea0571fe36a33ea03ec7dd2-other.xml.gz
-2022/01/31 | 499 | systems/win32/miktex/source/miktex-22.1.tar.xz.asc
-2022/01/31 | 488 | systems/win32/miktex/setup/rpm/opensuse/15/repodata/repomd.xml.asc
-2022/01/31 | 488 | systems/win32/miktex/setup/rpm/fedora/35/repodata/repomd.xml.asc
-2022/01/31 | 488 | systems/win32/miktex/setup/rpm/fedora/34/repodata/repomd.xml.asc
-2022/01/31 | 488 | systems/win32/miktex/setup/rpm/fedora/33/repodata/repomd.xml.asc
-2022/01/31 | 488 | systems/win32/miktex/setup/rpm/fedora/28/repodata/repomd.xml.asc
-2022/01/31 | 473 | systems/win32/miktex/setup/deb/dists/focal/Release.gpg
-2022/01/31 | 473 | systems/win32/miktex/setup/deb/dists/buster/Release.gpg
-2022/01/31 | 473 | systems/win32/miktex/setup/deb/dists/bionic/Release.gpg
-2022/01/31 | 445424 | systems/texlive/tlnet/archive/secnum.doc.r61813.tar.xz
-2022/01/31 | 4386 | systems/win32/miktex/setup/rpm/opensuse/15/repodata/80a8abd82349ca2adb326dcd31ba67580201cb6b3411180b86f43762de432a8f-filelists.xml.gz
-2022/01/31 | 40928 | systems/texlive/tlnet/archive/markdown.r61807.tar.xz
-2022/01/31 | 405 | fonts/greek/talos/README
-2022/01/31 | 39192 | macros/luatex/latex/autopuncitems.zip
-2022/01/31 | 3554998 | graphics/asymptote/binaries/x86_64-windows/cygwin1.dll
-2022/01/31 | 3487 | graphics/pstricks/contrib/pst-node/Changes
-2022/01/31 | 34601758 | systems/win32/miktex/setup/deb/pool/universe/m/miktex/miktex_22.1-bionic1_amd64.deb
-2022/01/31 | 343 | systems/win32/miktex/setup/rpm/fedora/35/repodata/e6f9a847ab4f9a7abb6d1be43aa5e93e48063a00fac6592076a8002b4eb096d1-other.xml.gz
-2022/01/31 | 34268012 | systems/win32/miktex/setup/deb/pool/universe/m/miktex/miktex_22.1-focal1_amd64.deb
-2022/01/31 | 33678606 | systems/win32/miktex/setup/deb/pool/universe/m/miktex/miktex_22.1-buster1_amd64.deb
-2022/01/31 | 3302 | systems/win32/miktex/setup/rpm/fedora/33/repodata/94008196f6acbd545ca7acfbf751a259856729aaeb66603f1b763d4fc83ae048-primary.xml.gz
-2022/01/31 | 3281267 | graphics/asymptote/binaries/i386-windows/cygwin1.dll
-2022/01/31 | 3233 | fonts/greek/talos/talos-doc.tex
-2022/01/31 | 31456 | systems/win32/miktex/setup/rpm/fedora/33/repodata/67588bddd2ecdbfa1a21037aa3b031b97e6a5c48e64234084196db675d223b67-filelists.sqlite.bz2
-2022/01/31 | 3111 | graphics/pstricks/contrib/pst-node/doc/pst-node-doc.bib
-2022/01/31 | 3048 | systems/texlive/tlnet/archive/haranoaji-extra.doc.r61808.tar.xz
-2022/01/31 | 3036 | systems/texlive/tlnet/archive/haranoaji.doc.r61809.tar.xz
-2022/01/31 | 3028 | systems/win32/miktex/setup/rpm/fedora/34/repodata/e06f4dc3eb4069b93439a7b8ecb7416b48c6df35a3ecde9ac186bd35b5a5cbd5-primary.xml.gz
-2022/01/31 | 2981 | systems/win32/miktex/setup/rpm/fedora/28/repodata/repomd.xml
-2022/01/31 | 2980 | systems/win32/miktex/setup/rpm/opensuse/15/repodata/repomd.xml
-2022/01/31 | 2979 | systems/win32/miktex/setup/rpm/fedora/34/repodata/repomd.xml
-2022/01/31 | 2979 | systems/win32/miktex/setup/rpm/fedora/33/repodata/repomd.xml
-2022/01/31 | 2972 | systems/win32/miktex/setup/rpm/fedora/35/repodata/repomd.xml
-2022/01/31 | 2860236 | systems/texlive/tlnet/archive/newpx.r61806.tar.xz
-2022/01/31 | 28004360 | systems/win32/miktex/source/miktex-22.1.tar.xz
-2022/01/31 | 2629 | systems/win32/miktex/setup/deb/dists/focal/universe/binary-amd64/Packages.bz2
-2022/01/31 | 26186944 | systems/win32/miktex/setup/rpm/fedora/28/miktex-22.1-1.fc28.x86_64.rpm
-2022/01/31 | 25942608 | systems/texlive/tlnet/archive/haranoaji.r61809.tar.xz
-2022/01/31 | 25809068 | systems/texlive/tlnet/archive/haranoaji-extra.r61808.tar.xz
-2022/01/31 | 256092 | systems/texlive/tlnet/archive/newpx.doc.r61806.tar.xz
-2022/01/31 | 25171 | systems/win32/miktex/setup/rpm/fedora/34/repodata/c56038b492c1dd8a2e983aff732a3e3879a7664b38fc5641991e802bbebc8ee7-filelists.sqlite.bz2
-2022/01/31 | 25147 | systems/win32/miktex/setup/rpm/fedora/33/repodata/97246cb049f8c2ceb5a333dcfb76c7fff75620d316b19833970760e70deea52f-primary.sqlite.bz2
-2022/01/31 | 2444 | systems/win32/miktex/setup/deb/dists/buster/universe/binary-amd64/Packages.bz2
-2022/01/31 | 24300616 | systems/win32/miktex/setup/rpm/opensuse/15/miktex-22.1-1.x86_64.rpm
-2022/01/31 | 2356 | systems/win32/miktex/setup/deb/dists/bionic/universe/binary-amd64/Packages.bz2
-2022/01/31 | 23426855 | systems/win32/miktex/setup/rpm/fedora/35/miktex-22.1-1.fc35.x86_64.rpm
-2022/01/31 | 2268 | systems/texlive/tlnet/archive/secnum.r61813.tar.xz
-2022/01/31 | 2187 | systems/win32/miktex/setup/rpm/fedora/35/repodata/e26ea2179d9db66cdc52ba1ac6d20c15fc35a0cb9497233e5de4a899b5237bc0-primary.xml.gz
-2022/01/31 | 21608 | systems/win32/miktex/setup/rpm/fedora/34/repodata/b2f74ca028d4f1971e704e96bed8604ca989af83038d52c581c3ce4daa4cd197-primary.sqlite.bz2
-2022/01/31 | 21484368 | systems/win32/miktex/setup/rpm/fedora/34/miktex-22.1-1.fc34.x86_64.rpm
-2022/01/31 | 21478362 | systems/win32/miktex/setup/rpm/fedora/33/miktex-22.1-1.fc33.x86_64.rpm
-2022/01/31 | 2111 | systems/win32/miktex/setup/deb/dists/focal/universe/binary-amd64/Packages.gz
-2022/01/31 | 20647 | systems/win32/miktex/setup/rpm/fedora/33/repodata/0364b5d3ccaaa934ca9217249820c731393ed6eec720daf8365ef26d7f37d2da-filelists.xml.gz
-2022/01/31 | 2034 | systems/win32/miktex/setup/deb/dists/buster/InRelease
-2022/01/31 | 2034 | systems/win32/miktex/setup/deb/dists/bionic/InRelease
-2022/01/31 | 2030 | systems/win32/miktex/setup/deb/dists/focal/InRelease
-2022/01/31 | 2001 | systems/win32/miktex/setup/deb/dists/buster/universe/binary-amd64/Packages.gz
-2022/01/31 | 1980 | systems/win32/miktex/setup/rpm/fedora/28/repodata/95f5acd2916e42275db5c84fa74b6b8c29432e030dbc431ae490e3989933dfb1-other.sqlite.bz2
-2022/01/31 | 1978 | systems/win32/miktex/setup/rpm/opensuse/15/repodata/d02c5ff6681e2a93475872fb96214063d76ce17495be518add01e18f4f996e31-other.sqlite.bz2
-2022/01/31 | 1957 | systems/win32/miktex/setup/deb/dists/bionic/universe/binary-amd64/Packages.gz
-2022/01/31 | 19400 | fonts/greek/talos/Talos-Bold.otf
-2022/01/31 | 184448 | systems/texlive/tlnet/archive/tex-vpat.doc.r61810.tar.xz
-2022/01/31 | 18420 | macros/unicodetex/latex/fontsetup/doc/fontsetup-doc.tex
-2022/01/31 | 177740 | fonts/greek/talos.zip
-2022/01/31 | 17419 | systems/win32/miktex/setup/deb/dists/focal/universe/binary-amd64/Packages
-2022/01/31 | 16949 | graphics/pstricks/contrib/pst-node/dvips/pst-node.pro
-2022/01/31 | 1674 | systems/win32/miktex/setup/deb/dists/focal/universe/Contents-amd64.gz
-2022/01/31 | 1674 | systems/win32/miktex/setup/deb/dists/buster/universe/Contents-amd64.gz
-2022/01/31 | 1674 | systems/win32/miktex/setup/deb/dists/bionic/universe/Contents-amd64.gz
-2022/01/31 | 16679 | fonts/cochineal/tex/cochineal.sty
-2022/01/31 | 16166 | systems/win32/miktex/setup/rpm/fedora/34/repodata/27d237af2e7279838fdc171e6fa89ecf2fb48e93f79cfa0cc8233d939ca43955-filelists.xml.gz
-2022/01/31 | 15602 | systems/win32/miktex/setup/deb/dists/buster/universe/binary-amd64/Packages
-2022/01/31 | 153 | fonts/scholax/tex/newtx-ncf-subs.tex
-2022/01/31 | 1512 | systems/win32/miktex/setup/deb/dists/buster/Release
-2022/01/31 | 1512 | systems/win32/miktex/setup/deb/dists/bionic/Release
-2022/01/31 | 1508 | systems/win32/miktex/setup/deb/dists/focal/Release
-2022/01/31 | 1481 | graphics/pstricks/contrib/pst-node/latex/pst-node.sty
-2022/01/31 | 14760 | systems/win32/miktex/setup/deb/dists/bionic/universe/binary-amd64/Packages
-2022/01/31 | 13535 | macros/latex/contrib/spbmark/spbmark.sty
-2022/01/31 | 13425 | fonts/xcharter/README
-2022/01/31 | 12029 | graphics/pstricks/contrib/pst-node/tex/pst-node97.tex
-2022/01/31 | 1201 | systems/win32/miktex/setup/rpm/fedora/33/repodata/061cd3abfd2f242b7a92ec4be2fd29ee381296f49ee96cb14a4fc32614c46eac-other.sqlite.bz2
-2022/01/31 | 11980 | macros/latex/contrib/spbmark/spbmark.tex
-2022/01/31 | 1102 | systems/win32/miktex/setup/rpm/fedora/34/repodata/15c1af8ca0f6f97df9da6d51c2b27729ba4c9ca97626d67cbde2b0224b06af33-other.sqlite.bz2
-2022/01/31 | 109 | systems/win32/miktex/setup/rpm/fedora-35.repo
-2022/01/31 | 10998 | fonts/erewhon/README
-2022/01/31 | 10656 | systems/texlive/tlnet/archive/clistmap.source.r61811.tar.xz
-2022/01/31 | 10347 | systems/win32/miktex/setup/rpm/opensuse/15/repodata/b39a45255e198739b5dd67d81647edba406a08634945a566940fb7ca7e18f679-filelists.sqlite.bz2
-2022/01/31 | 1029 | graphics/pstricks/contrib/pst-node/README
-2022/01/31 | 101117 | graphics/pstricks/contrib/pst-node/doc/pst-node-doc.tex
-2022/01/31 | 1001 | systems/win32/miktex/setup/rpm/fedora/28/repodata/9dbfc14507f6caa55c643ca5299b1d273f71e9802d8790af4dcd3ddb2dfea032-other.xml.gz
-2022/01/31 | 1000 | systems/win32/miktex/setup/rpm/opensuse/15/repodata/e27746a01403dbb519557b1ca939a00f9a059eb7f6f73ac3eda76abc6b994311-other.xml.gz
diff --git a/fonts/fourier-GUT/README b/fonts/fourier-GUT/README
index e3991428e0..5fafcb8e63 100644
--- a/fonts/fourier-GUT/README
+++ b/fonts/fourier-GUT/README
@@ -7,7 +7,13 @@ Fourier-GUTenberg distribution, Michel Bovani michel.bovani@icloud.com
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1 VERSION
-This version number is 2.2 (2020-03-03)
+This version number is 2.3 (2022-02-05)
+
+NEW in version 2.3
+* there is a new \caution command (dangerous bend).
+* Chars selection now use the \texorpdfstring command and the \TakeFourierOrnament command have been replaced by \FourierOrns.
+* chars in the type1 fonts are now in place of digits or letters like in the OTF font.
+
NEW in version 2.2 :
* fourier-orns have now a noOTF option in order to use it with type1 PostScript fonts and luaTeX/XeTeX engines.
* chars in the OTF fonts are now slotted in place of digits or letters.
diff --git a/fonts/fourier-GUT/afm/fourier-orns.afm b/fonts/fourier-GUT/afm/fourier-orns.afm
index 73f6354b1c..02e7e72ad9 100644
--- a/fonts/fourier-GUT/afm/fourier-orns.afm
+++ b/fonts/fourier-GUT/afm/fourier-orns.afm
@@ -1,5 +1,6 @@
StartFontMetrics 2.0
-Comment UniqueID 23685440
+Comment UniqueID 60927232
+Comment Panose 0 0 0 0 0 0 0 0 0 0
FullName fourier-orns
FontName fourier-orns
FamilyName fourier-orns
@@ -15,11 +16,13 @@ XHeight 500
CapHeight 700
UnderlinePosition -100
UnderlineThickness 50
+StdHW 25
+StdVW 33
EncodingScheme FontSpecific
StartCharMetrics 36
-C 0 ; WX 500 ; N space ; B 0 0 0 0 ;
C 33 ; WX 1027 ; N noway ; B 42 -237 977 698 ;
C 34 ; WX 1184 ; N beware ; B 45 -239 1133 699 ;
+C 35 ; WX 1184 ; N caution ; B 45 -239 1133 699 ;
C 44 ; WX 613 ; N bomb ; B 28 -238 585 841 ;
C 45 ; WX 1005 ; N grimace ; B 26 -236 966 704 ;
C 46 ; WX 900 ; N barcino ; B 108 -66 781 709 ;
diff --git a/fonts/fourier-GUT/doc/fourier-orns-doc.pdf b/fonts/fourier-GUT/doc/fourier-orns-doc.pdf
index e534d523d7..e345f6fcba 100644
--- a/fonts/fourier-GUT/doc/fourier-orns-doc.pdf
+++ b/fonts/fourier-GUT/doc/fourier-orns-doc.pdf
Binary files differ
diff --git a/fonts/fourier-GUT/doc/fourier-orns-doc.tex b/fonts/fourier-GUT/doc/fourier-orns-doc.tex
index b5e7eb123a..24c2ed3493 100644
--- a/fonts/fourier-GUT/doc/fourier-orns-doc.tex
+++ b/fonts/fourier-GUT/doc/fourier-orns-doc.tex
@@ -1,28 +1,28 @@
-% !TEX TS-program = LuaLaTeX
\documentclass[a4paper,11pt,draft]{article}
\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
\usepackage{array,xcolor}
-\usepackage{fourier-orns}
+\usepackage{lmodern}
+\usepackage{fourier}
\usepackage[french,english]{babel}
\setlength{\leftmargini}{1em}
\newcommand{\fourier}{Fourier-GUT\kern-0.15em\textit{enberg}}
\title{\floweroneleft{}\,The \emph{fourier-orns} package\,\floweroneright}
\author{Michel Bovani\\\texttt{michel.bovani@icloud.com}}
-%%\renewcommand{\FrenchLabelItem}{\textbullet}
\renewcommand\arraystretch{1.5}
\renewcommand{\labelitemi}{\starredbullet}
-\setmainfont{Linux Libertine O}
-\begin{document}
+
+\begin{document}\sloppy
\maketitle
\fourier{} provides several logos and ornaments: they are now usable by those who do not want to use
the \fourier{} font system. In this case, just call the \textit{fourier-orns} package (\verb=\usepackage{fourier-orns}=).
Remember that:
-\begin{itemize}
+\begin{itemize}
\item You have to install \fourier{} anyway.
\item If you call \textit{fourier}, you should \emph{not} call \textit{fourier-orns}, because \textit{fourier} will do it anyway.
All the commands described here may be used with \textit{fourier}.
-\item Thanks to Daniel Flipo (\texttt{daniel.flipo@free.fr}), there are now opentype versions of the fourier ornaments fonts. Those fonts are automatically selected and the \texttt{fontspec} package is called, when the \TeX{} engine is lua\TeX{} or Xe\TeX{}.
+\item Thanks to Daniel Flipo (\texttt{daniel.flipo@free.fr}), there are now opentype versions of the fourier ornaments fonts. Those fonts are automatically selected and the \texttt{fontspec} package is called, when the \TeX{} engine is lua\TeX{} or Xe\TeX{}.
\item There is a \texttt{noOTF} option which force the use of PostScript type 1 fonts, even when the \TeX{} engine is lua\TeX{} or Xe\TeX{}. Note that the \textit{fourier} call for \textit{fourier-orns} uses that option.
\end{itemize}
@@ -31,11 +31,8 @@ All the commands described here may be used with \textit{fourier}.
Here are the provided symbols:
\begin{itemize}
-\item A variant of the euro symbol: \verb=\eurologo= \eurologo, \textbf{\eurologo}.
-
-Please note that the \verb=\textit= command will not change the slant of this symbol,
-but \verb=\textsl{\eurologo}= \textsl{\eurologo} will do it.
-
+\item A variant of the euro symbol: \verb=\eurologo= \eurologo,
+ \textbf{\eurologo}, \textit{\eurologo}, \textbf{\textit{\eurologo}}.
\item A ``starred'' bullet \verb=\starredbullet=: used as the item mark in this document.
\item Smileys typesetted in \verb=\LARGE= size:
@@ -44,8 +41,7 @@ but \verb=\textsl{\eurologo}= \textsl{\eurologo} will do it.
\end{tabular}
\clearpage
-\item Decos and logos typesetted in \verb=\LARGE= size:
-
+\item Decos and logos typesetted in \verb=\LARGE= size:
\begin{tabular}{l>{\centering\LARGE}p{2cm}l>{\centering\LARGE}p{2cm}}
\verb=\noway= &\noway&\verb=\warning=& \warning\tabularnewline
@@ -55,11 +51,12 @@ but \verb=\textsl{\eurologo}= \textsl{\eurologo} will do it.
\verb=\decofourleft= &\decofourleft&\verb=\decofourright= &\decofourright\tabularnewline
\verb=\floweroneleft= &\floweroneleft&\verb=\floweroneright= &\floweroneright\tabularnewline
\verb=\lefthand= &\lefthand&\verb=\righthand=& \righthand\tabularnewline
-\verb=\decosix= &\decosix&\verb=\bomb=&\bomb
+\verb=\decosix= &\decosix&\verb=\bomb=&\bomb\tabularnewline
+\verb=\caution= {\normalsize (New in 2.3)}&\caution
\end{tabular}
-
- \noindent{\Large\textcolor{red}{\warning}} The old command \verb=\danger= (fourier-orns 1.1) is now deprecated: use \verb=\warning= instead. Note that \verb=\danger= is still usable, provided you \emph{don't} use the \texttt{unicode-math} package.
-\item Leaves typesetted in \verb=\LARGE= size:
+
+ \noindent{\Large\textcolor{red}{\warning}} The old command \verb=\danger= (fourier-orns 1.1) is now deprecated: use \verb=\warning= instead. Note that \verb=\danger= is still usable, provided you \emph{don't} use the \texttt{unicode-math} package.
+\item Leaves typesetted in \verb=\LARGE= size:
\begin{tabular}{l>{\centering\LARGE}p{2cm}l>{\centering\LARGE}p{2cm}}
\verb=\leafleft= &\leafleft&\verb=\leafright=&\leafright\tabularnewline
@@ -83,7 +80,7 @@ Old pilcrow ``with tails'' can be used like that:
\noindent \textcolor{newred}{\oldpilcrowfour}\,We few,
we happy few, we band of brothers; \textcolor{newred}
{\oldpilcrowfive}\,For he to-day that sheds his blood with
- me \textcolor{newred}{\oldpilcrowsix}\,Shall be my brother;
+ me \textcolor{newred}{\oldpilcrowsix}\,Shall be my brother;
be he ne'er so vile, \textcolor{newred}
{\oldpilcrowfour}\,This day shall gentle his condition.
\end{verbatim}
@@ -92,7 +89,7 @@ be he ne'er so vile, \textcolor{newred}
\noindent \textcolor{newred}{\oldpilcrowfour}\,We few,
we happy few, we band of brothers; \textcolor{newred}
{\oldpilcrowfive}\,For he to-day that sheds his blood with
- me \textcolor{newred}{\oldpilcrowsix}\,Shall be my brother;
+ me \textcolor{newred}{\oldpilcrowsix}\,Shall be my brother;
be he ne'er so vile, \textcolor{newred}
{\oldpilcrowfour}\,This day shall gentle his condition.
\end{itemize}
@@ -102,7 +99,11 @@ be he ne'er so vile, \textcolor{newred}
}
\vspace\baselineskip
-Finally, the opentype version of \textit{fourier-orns} provides a \verb+\FourierOrns+ command in order to select the font. As chars in the font are now slotted in place of digits or letters, the correspondence in the table below can be used, but, remember, only when using opentype fonts.
+%%% Modif (df) POURQUOI PAS {\FourierOrns 2} (seulement avec pdflatex) ???
+Finally, \textit{fourier-orns} provides a \verb+\FourierOrns+ command in order
+to select the font. As chars in the font are now slotted in place of digits or
+letters, the correspondence in the table below can be used, this works for
+both opentype and type1 fonts.
\begin{center}\begin{tabular}{ccccccccccc}
\hline
@@ -127,5 +128,7 @@ U&V&W&X&Y&Z\\
\hline
\end{tabular}\end{center}
-For instance, you could type \verb+{\FourierOrns E 2 F}+ to obtain {\FourierOrns E 2 F}.
-\end{document} \ No newline at end of file
+For instance, you could type \verb+{\FourierOrns E 1 F}+ to obtain
+{\FourierOrns E 1 F}.
+
+\end{document}
diff --git a/fonts/fourier-GUT/latex/fourier-orns.sty b/fonts/fourier-GUT/latex/fourier-orns.sty
index 77eef8fbe9..265b33a70e 100644
--- a/fonts/fourier-GUT/latex/fourier-orns.sty
+++ b/fonts/fourier-GUT/latex/fourier-orns.sty
@@ -1,6 +1,6 @@
\NeedsTeXFormat{LaTeX2e}
-\def\fileversion{2.2}
-\def\filedate{2020/03/03}
+\def\fileversion{2.3}
+\def\filedate{2022/02/05}
\ProvidesPackage{fourier-orns}%
[\filedate\space\fileversion\space fourier-ornaments package]
@@ -9,98 +9,68 @@
\DeclareOption{noOTF}{\Fourier@noOTFtrue}
\ProcessOptions
+\providecommand\texorpdfstring[2]{#1}
\RequirePackage{iftex}[2019/10/24]
\iftutex \Fourier@TUtrue \fi
\ifFourier@noOTF \Fourier@TUfalse \fi
\ifFourier@TU
- \RequirePackage{fontspec}
- \newfontfamily\FourierOrns{FourierOrns-Regular.otf}[
- BoldFont = FourierOrns-Bold.otf ,
- ItalicFont = FourierOrns-Italic.otf ,
- BoldItalicFont = FourierOrns-BoldItalic.otf ]
- \newcommand*{\TakeFourierOrnament}[1]{{\FourierOrns \char#1}}
- \renewcommand*{\textpertenthousand}{\TakeFourierOrnament{37}}
- \newcommand*{\eurologo}{\TakeFourierOrnament{101}}
- \newcommand*{\noway}{\TakeFourierOrnament{48}}
- \newcommand*{\warning}{\TakeFourierOrnament{49}}
- \newcommand*{\caution}{\TakeFourierOrnament{50}}
- \newcommand*{\oldpilcrowone}{\TakeFourierOrnament{51}}
- \newcommand*{\oldpilcrowtwo}{\TakeFourierOrnament{52}}
- \newcommand*{\oldpilcrowthree}{\TakeFourierOrnament{53}}
- \newcommand*{\oldpilcrowfour}{\TakeFourierOrnament{54}}
- \newcommand*{\oldpilcrowfive}{\TakeFourierOrnament{55}}
- \newcommand*{\oldpilcrowsix}{\TakeFourierOrnament{56}}
- \newcommand*{\bomb}{\TakeFourierOrnament{57}}
- \newcommand*{\grimace}{\TakeFourierOrnament{89}}
- \newcommand*{\textthing}{\TakeFourierOrnament{90}}
- \newcommand*{\textxswup}{\TakeFourierOrnament{84}}
- \newcommand*{\textxswdown}{\TakeFourierOrnament{83}}
- \newcommand*{\decoone}{\TakeFourierOrnament{85}}
- \newcommand*{\decothreeleft}{\TakeFourierOrnament{82}}
- \newcommand*{\decothreeright}{\TakeFourierOrnament{81}}
- \newcommand*{\decofourleft}{\TakeFourierOrnament{80}}
- \newcommand*{\decofourright}{\TakeFourierOrnament{79}}
- \newcommand*{\decosix}{\TakeFourierOrnament{86}}
- \newcommand*{\decotwo}{\TakeFourierOrnament{87}}
- \newcommand*{\floweroneleft}{\TakeFourierOrnament{69}}
- \newcommand*{\floweroneright}{\TakeFourierOrnament{70}}
- \newcommand*{\starredbullet}{\TakeFourierOrnament{88}}
- \newcommand*{\leafNE}{\TakeFourierOrnament{71}}
- \newcommand*{\leafSE}{\TakeFourierOrnament{73}}
- \newcommand*{\leafNW}{\TakeFourierOrnament{72}}
- \newcommand*{\leafSW}{\TakeFourierOrnament{74}}
- \newcommand*{\leafleft}{\TakeFourierOrnament{76}}
- \newcommand*{\leafright}{\TakeFourierOrnament{75}}
- \newcommand*{\aldinesmall}{\TakeFourierOrnament{68}}
- \newcommand*{\aldineleft}{\TakeFourierOrnament{65}}
- \newcommand*{\aldineright}{\TakeFourierOrnament{66}}
- \newcommand*{\aldine}{\TakeFourierOrnament{67}}
- \newcommand*{\lefthand}{\TakeFourierOrnament{77}}
- \newcommand*{\righthand}{\TakeFourierOrnament{78}}
+ \ifdefined\Store@KV@Option % fourier-orns is loaded by fourier-otf.sty
+ \else
+ \RequirePackage{fontspec}
+ \newfontfamily\FourierOrns{FourierOrns-Regular.otf}
+ [BoldFont = FourierOrns-Regular.otf ,
+ ItalicFont = FourierOrns-Regular.otf ,
+ BoldItalicFont = FourierOrns-Regular.otf ]
+ \fi
+ \newcommand*{\eurologo}{\texorpdfstring{%
+ {\fontspec{erewhon}[RawFeature=+ss03]€}}%
+ {\texteuro}}
\else
- \newcommand*{\TakeFourierOrnament}[1]{{%
- \fontencoding{U}\fontfamily{futs}\selectfont\char#1}}
- \newcommand*{\eurologo}{\TakeFourierOrnament{69}}
- \newcommand*{\noway}{\TakeFourierOrnament{65}}
- \newcommand*{\warning}{\TakeFourierOrnament{66}}
- \newcommand*{\bomb}{\TakeFourierOrnament{76}}
- \newcommand*{\grimace}{\TakeFourierOrnament{77}}
- \newcommand*{\textthing}{\TakeFourierOrnament{78}}
- \newcommand*{\oldpilcrowone}{\TakeFourierOrnament{79}}
- \newcommand*{\oldpilcrowtwo}{\TakeFourierOrnament{80}}
- \newcommand*{\oldpilcrowthree}{\TakeFourierOrnament{81}}
- \newcommand*{\oldpilcrowfour}{\TakeFourierOrnament{82}}
- \newcommand*{\oldpilcrowfive}{\TakeFourierOrnament{83}}
- \newcommand*{\oldpilcrowsix}{\TakeFourierOrnament{84}}
- \newcommand*{\textxswup}{\TakeFourierOrnament{85}}
- \newcommand*{\textxswdown}{\TakeFourierOrnament{86}}
- \newcommand*{\decoone}{\TakeFourierOrnament{88}}
- \newcommand*{\decothreeleft}{\TakeFourierOrnament{89}}
- \newcommand*{\decothreeright}{\TakeFourierOrnament{90}}
- \newcommand*{\decofourleft}{\TakeFourierOrnament{91}}
- \newcommand*{\decofourright}{\TakeFourierOrnament{92}}
- \newcommand*{\decosix}{\TakeFourierOrnament{93}}
- \newcommand*{\decotwo}{\TakeFourierOrnament{97}}
- \newcommand*{\floweroneleft}{\TakeFourierOrnament{98}}
- \newcommand*{\floweroneright}{\TakeFourierOrnament{99}}
- \newcommand*{\starredbullet}{\TakeFourierOrnament{100}}
- \newcommand*{\leafNE}{\TakeFourierOrnament{102}}
- \newcommand*{\leafNW}{\TakeFourierOrnament{103}}
- \newcommand*{\leafSE}{\TakeFourierOrnament{104}}
- \newcommand*{\leafSW}{\TakeFourierOrnament{105}}
- \newcommand*{\leafleft}{\TakeFourierOrnament{106}}
- \newcommand*{\leafright}{\TakeFourierOrnament{107}}
- \newcommand*{\aldinesmall}{\TakeFourierOrnament{108}}
- \newcommand*{\aldineleft}{\TakeFourierOrnament{109}}
- \newcommand*{\aldineright}{\TakeFourierOrnament{110}}
- \newcommand*{\aldine}{\TakeFourierOrnament{111}}
- \newcommand*{\lefthand}{\TakeFourierOrnament{116}}
- \newcommand*{\righthand}{\TakeFourierOrnament{117}}
+ \newcommand*{\FourierOrns}{\fontencoding{U}\fontfamily{futs}\selectfont}
+ \newcommand*{\eurologo}{\texorpdfstring{{\FourierOrns e}}{\texteuro}}
\fi
- \newcommand*{\danger}{\PackageWarning{fourier-orns}{%
- Command \protect\danger\space is deprecated.\MessageBreak
- Use \protect\warning\space instead; reported}%
- \warning}
+%
+\newcommand*{\noway}{\texorpdfstring{{\FourierOrns 0}}{\textdagger}}
+\newcommand*{\warning}{\texorpdfstring{{\FourierOrns 1}}{\textdagger}}
+\newcommand*{\caution}{\texorpdfstring{{\FourierOrns 2}}{\textdagger}}
+\newcommand*{\oldpilcrowone}{\texorpdfstring{{\FourierOrns 3}}{\textdagger}}
+\newcommand*{\oldpilcrowtwo}{\texorpdfstring{{\FourierOrns 4}}{\textdagger}}
+\newcommand*{\oldpilcrowthree}{\texorpdfstring{{\FourierOrns 5}}{\textdagger}}
+\newcommand*{\oldpilcrowfour}{\texorpdfstring{{\FourierOrns 6}}{\textdagger}}
+\newcommand*{\oldpilcrowfive}{\texorpdfstring{{\FourierOrns 7}}{\textdagger}}
+\newcommand*{\oldpilcrowsix}{\texorpdfstring{{\FourierOrns 8}}{\textdagger}}
+\newcommand*{\bomb}{\texorpdfstring{{\FourierOrns 9}}{\textdagger}}
+\newcommand*{\aldineleft}{\texorpdfstring{{\FourierOrns A}}{\textdagger}}
+\newcommand*{\aldineright}{\texorpdfstring{{\FourierOrns B}}{\textdagger}}
+\newcommand*{\aldine}{\texorpdfstring{{\FourierOrns C}}{\textdagger}}
+\newcommand*{\aldinesmall}{\texorpdfstring{{\FourierOrns D}}{\textdagger}}
+\newcommand*{\floweroneleft}{\texorpdfstring{{\FourierOrns E}}{\textdagger}}
+\newcommand*{\floweroneright}{\texorpdfstring{{\FourierOrns F}}{\textdagger}}
+\newcommand*{\leafNE}{\texorpdfstring{{\FourierOrns G}}{\textdagger}}
+\newcommand*{\leafNW}{\texorpdfstring{{\FourierOrns H}}{\textdagger}}
+\newcommand*{\leafSE}{\texorpdfstring{{\FourierOrns I}}{\textdagger}}
+\newcommand*{\leafSW}{\texorpdfstring{{\FourierOrns J}}{\textdagger}}
+\newcommand*{\leafright}{\texorpdfstring{{\FourierOrns K}}{\textdagger}}
+\newcommand*{\leafleft}{\texorpdfstring{{\FourierOrns L}}{\textdagger}}
+\newcommand*{\lefthand}{\texorpdfstring{{\FourierOrns M}}{\textdagger}}
+\newcommand*{\righthand}{\texorpdfstring{{\FourierOrns N}}{\textdagger}}
+\newcommand*{\decofourright}{\texorpdfstring{{\FourierOrns O}}{\textdagger}}
+\newcommand*{\decofourleft}{\texorpdfstring{{\FourierOrns P}}{\textdagger}}
+\newcommand*{\decothreeright}{\texorpdfstring{{\FourierOrns Q}}{\textdagger}}
+\newcommand*{\decothreeleft}{\texorpdfstring{{\FourierOrns R}}{\textdagger}}
+\newcommand*{\textxswdown}{\texorpdfstring{{\FourierOrns S}}{\textdagger}}
+\newcommand*{\textxswup}{\texorpdfstring{{\FourierOrns T}}{\textdagger}}
+\newcommand*{\decoone}{\texorpdfstring{{\FourierOrns U}}{\textdagger}}
+\newcommand*{\decosix}{\texorpdfstring{{\FourierOrns V}}{\textdagger}}
+\newcommand*{\decotwo}{\texorpdfstring{{\FourierOrns W}}{\textdagger}}
+\newcommand*{\starredbullet}{\texorpdfstring{{\FourierOrns X}}{\textdagger}}
+\newcommand*{\grimace}{\texorpdfstring{{\FourierOrns Y}}{\textdagger}}
+\newcommand*{\textthing}{\texorpdfstring{{\FourierOrns Z}}{\textdagger}}
+%
+\newcommand*{\danger}{\PackageWarning{fourier-orns}{%
+ Command \protect\danger\space is deprecated.\MessageBreak
+ Use \protect\warning\space instead; reported}%
+ \warning}
%
%
\endinput
diff --git a/fonts/fourier-GUT/latex/fourier.sty b/fonts/fourier-GUT/latex/fourier.sty
index f942548210..e29a07d07d 100644
--- a/fonts/fourier-GUT/latex/fourier.sty
+++ b/fonts/fourier-GUT/latex/fourier.sty
@@ -1,5 +1,5 @@
-\def\fileversion{2.2}%
-\def\filedate{2020/03/03}%
+\def\fileversion{2.3}%
+\def\filedate{2022/02/05}%
\NeedsTeXFormat{LaTeX2e}%
\ProvidesPackage{fourier}%
[\filedate\space\fileversion\space fourier-GUTenberg package]%
diff --git a/fonts/fourier-GUT/latex/ufuts.fd b/fonts/fourier-GUT/latex/ufuts.fd
index dc1b271e9f..533bbf61e1 100644
--- a/fonts/fourier-GUT/latex/ufuts.fd
+++ b/fonts/fourier-GUT/latex/ufuts.fd
@@ -1,11 +1,11 @@
%Filename: ufuts.fd
-%Created by: tex build-fourier
-%Created using fontinst v1.926
+%Created by: tex build-only-ornaments
+%Created using fontinst v1.933
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ufuts.fd}
- [2004/03/02 Fontinst v1.926 font definitions for U/futs.]
+ [2021/11/24 Fontinst v1.933 font definitions for U/futs.]
\DeclareFontFamily{U}{futs}{}
diff --git a/fonts/fourier-GUT/opentype/FourierOrns-Bold.otf b/fonts/fourier-GUT/opentype/FourierOrns-Bold.otf
deleted file mode 100644
index 775fb3632f..0000000000
--- a/fonts/fourier-GUT/opentype/FourierOrns-Bold.otf
+++ /dev/null
Binary files differ
diff --git a/fonts/fourier-GUT/opentype/FourierOrns-BoldItalic.otf b/fonts/fourier-GUT/opentype/FourierOrns-BoldItalic.otf
deleted file mode 100644
index 7f9a261dbd..0000000000
--- a/fonts/fourier-GUT/opentype/FourierOrns-BoldItalic.otf
+++ /dev/null
Binary files differ
diff --git a/fonts/fourier-GUT/opentype/FourierOrns-Italic.otf b/fonts/fourier-GUT/opentype/FourierOrns-Italic.otf
deleted file mode 100644
index ee54b734f7..0000000000
--- a/fonts/fourier-GUT/opentype/FourierOrns-Italic.otf
+++ /dev/null
Binary files differ
diff --git a/fonts/fourier-GUT/opentype/FourierOrns-Regular.otf b/fonts/fourier-GUT/opentype/FourierOrns-Regular.otf
index 3cc8a9b191..e41c6aade1 100644
--- a/fonts/fourier-GUT/opentype/FourierOrns-Regular.otf
+++ b/fonts/fourier-GUT/opentype/FourierOrns-Regular.otf
Binary files differ
diff --git a/fonts/fourier-GUT/tfm/fourier-ligs.tfm b/fonts/fourier-GUT/tfm/fourier-ligs.tfm
deleted file mode 100644
index 446ef7b466..0000000000
--- a/fonts/fourier-GUT/tfm/fourier-ligs.tfm
+++ /dev/null
Binary files differ
diff --git a/fonts/fourier-GUT/tfm/fourier-orns.tfm b/fonts/fourier-GUT/tfm/fourier-orns.tfm
index 8e0f502fb2..dfc071dff8 100644
--- a/fonts/fourier-GUT/tfm/fourier-orns.tfm
+++ b/fonts/fourier-GUT/tfm/fourier-orns.tfm
Binary files differ
diff --git a/fonts/fourier-GUT/tfm/fut-oldlatin-it.tfm b/fonts/fourier-GUT/tfm/fut-oldlatin-it.tfm
deleted file mode 100644
index 70d1ec8c0a..0000000000
--- a/fonts/fourier-GUT/tfm/fut-oldlatin-it.tfm
+++ /dev/null
Binary files differ
diff --git a/fonts/fourier-GUT/tfm/fut-oldlatin.tfm b/fonts/fourier-GUT/tfm/fut-oldlatin.tfm
deleted file mode 100644
index 8ce0b57a7a..0000000000
--- a/fonts/fourier-GUT/tfm/fut-oldlatin.tfm
+++ /dev/null
Binary files differ
diff --git a/fonts/fourier-GUT/tfm/futboorn.tfm b/fonts/fourier-GUT/tfm/futboorn.tfm
index e7e4dd3dc5..b81cbda18b 100644
--- a/fonts/fourier-GUT/tfm/futboorn.tfm
+++ b/fonts/fourier-GUT/tfm/futboorn.tfm
Binary files differ
diff --git a/fonts/fourier-GUT/tfm/futborn.tfm b/fonts/fourier-GUT/tfm/futborn.tfm
index 7b298cf93c..eb5fdd136f 100644
--- a/fonts/fourier-GUT/tfm/futborn.tfm
+++ b/fonts/fourier-GUT/tfm/futborn.tfm
Binary files differ
diff --git a/fonts/fourier-GUT/tfm/futcorn.tfm b/fonts/fourier-GUT/tfm/futcorn.tfm
index 61026122dc..facdb8e40b 100644
--- a/fonts/fourier-GUT/tfm/futcorn.tfm
+++ b/fonts/fourier-GUT/tfm/futcorn.tfm
Binary files differ
diff --git a/fonts/fourier-GUT/tfm/futroorn.tfm b/fonts/fourier-GUT/tfm/futroorn.tfm
index e7e4dd3dc5..b81cbda18b 100644
--- a/fonts/fourier-GUT/tfm/futroorn.tfm
+++ b/fonts/fourier-GUT/tfm/futroorn.tfm
Binary files differ
diff --git a/fonts/fourier-GUT/tfm/futrorn.tfm b/fonts/fourier-GUT/tfm/futrorn.tfm
index 7b298cf93c..eb5fdd136f 100644
--- a/fonts/fourier-GUT/tfm/futrorn.tfm
+++ b/fonts/fourier-GUT/tfm/futrorn.tfm
Binary files differ
diff --git a/fonts/fourier-GUT/tfm/futsoorn.tfm b/fonts/fourier-GUT/tfm/futsoorn.tfm
index e7e4dd3dc5..b81cbda18b 100644
--- a/fonts/fourier-GUT/tfm/futsoorn.tfm
+++ b/fonts/fourier-GUT/tfm/futsoorn.tfm
Binary files differ
diff --git a/fonts/fourier-GUT/tfm/futsorn.tfm b/fonts/fourier-GUT/tfm/futsorn.tfm
index 7b298cf93c..eb5fdd136f 100644
--- a/fonts/fourier-GUT/tfm/futsorn.tfm
+++ b/fonts/fourier-GUT/tfm/futsorn.tfm
Binary files differ
diff --git a/fonts/fourier-GUT/type1/fourier-orns.pfb b/fonts/fourier-GUT/type1/fourier-orns.pfb
index ebca44f048..b6c1534463 100644
--- a/fonts/fourier-GUT/type1/fourier-orns.pfb
+++ b/fonts/fourier-GUT/type1/fourier-orns.pfb
Binary files differ
diff --git a/fonts/fourier-GUT/vf/futboorn.vf b/fonts/fourier-GUT/vf/futboorn.vf
index 3d6d2ba5d2..59108ea291 100644
--- a/fonts/fourier-GUT/vf/futboorn.vf
+++ b/fonts/fourier-GUT/vf/futboorn.vf
Binary files differ
diff --git a/fonts/fourier-GUT/vf/futborn.vf b/fonts/fourier-GUT/vf/futborn.vf
index 43c31856bb..2bdd3d0462 100644
--- a/fonts/fourier-GUT/vf/futborn.vf
+++ b/fonts/fourier-GUT/vf/futborn.vf
Binary files differ
diff --git a/fonts/fourier-GUT/vf/futcorn.vf b/fonts/fourier-GUT/vf/futcorn.vf
index 167f9be9e6..5252ce5c5b 100644
--- a/fonts/fourier-GUT/vf/futcorn.vf
+++ b/fonts/fourier-GUT/vf/futcorn.vf
Binary files differ
diff --git a/fonts/fourier-GUT/vf/futroorn.vf b/fonts/fourier-GUT/vf/futroorn.vf
index 6fb71dba62..3e43b6775f 100644
--- a/fonts/fourier-GUT/vf/futroorn.vf
+++ b/fonts/fourier-GUT/vf/futroorn.vf
Binary files differ
diff --git a/fonts/fourier-GUT/vf/futrorn.vf b/fonts/fourier-GUT/vf/futrorn.vf
index 2fe0475af8..f1dd12bac6 100644
--- a/fonts/fourier-GUT/vf/futrorn.vf
+++ b/fonts/fourier-GUT/vf/futrorn.vf
Binary files differ
diff --git a/fonts/fourier-GUT/vf/futsoorn.vf b/fonts/fourier-GUT/vf/futsoorn.vf
index 0119eeacca..84f58f3c60 100644
--- a/fonts/fourier-GUT/vf/futsoorn.vf
+++ b/fonts/fourier-GUT/vf/futsoorn.vf
Binary files differ
diff --git a/fonts/fourier-GUT/vf/futsorn.vf b/fonts/fourier-GUT/vf/futsorn.vf
index dd71ad2524..689c495c16 100644
--- a/fonts/fourier-GUT/vf/futsorn.vf
+++ b/fonts/fourier-GUT/vf/futsorn.vf
Binary files differ
diff --git a/graphics/metapost/contrib/macros/byrne/README b/graphics/metapost/contrib/macros/byrne/README
new file mode 100644
index 0000000000..39cb5c1d21
--- /dev/null
+++ b/graphics/metapost/contrib/macros/byrne/README
@@ -0,0 +1,20 @@
+Name: byrne-latex
+Version: 0.2.2
+License: GNU GPLv3 or later
+Author: Sergey Slyusarev
+Repository: https://github.com/jemmybutton/byrne-latex
+
+Description:
+The MetaPost library used in this package was initially
+written for ConTeXt version of Oliver Byrne's edition
+of Euclid's "Elements." It provides functions for drawing basic
+geometric primitives, such as lines, angles, polygons etc.
+and for referencing them in text. LaTeX package provides
+wrapper macros for MetaPost code. This package works with
+LuaLaTeX.
+
+Contents:
+byrne.mp — MetaPost library
+byrne.sty — LaTeX package
+byrne-latex.tex — documentation source code
+byrne-latex.pdf — documentation pdf
diff --git a/graphics/metapost/contrib/macros/byrne/byrne-latex.pdf b/graphics/metapost/contrib/macros/byrne/byrne-latex.pdf
new file mode 100644
index 0000000000..d1b46ed317
--- /dev/null
+++ b/graphics/metapost/contrib/macros/byrne/byrne-latex.pdf
Binary files differ
diff --git a/graphics/metapost/contrib/macros/byrne/byrne-latex.tex b/graphics/metapost/contrib/macros/byrne/byrne-latex.tex
new file mode 100644
index 0000000000..bbd12af27e
--- /dev/null
+++ b/graphics/metapost/contrib/macros/byrne/byrne-latex.tex
@@ -0,0 +1,1244 @@
+\begin{filecontents}{byrne-latex.bib}
+@book{Byrne1847,
+ author = {Byrne, Oliver},
+ publisher = {William Pickering},
+ title = {{The first six books of the elements of Euclid, in which coloured diagrams and symbols are used instead of letters for the greater ease of learners}},
+ year = 1847
+}
+@book{Tufte90,
+ author = {Tufte, Edward R.},
+ isbn = {978-0-9613921-1-6},
+ publisher = {Graphics Press},
+ title = {{Envisioning Information}},
+ year = 1990
+}
+@misc{Slyusarev2017,
+ author = {Slyusarev, Sergey},
+ title = {{MetaPost + ConTeXt rendition of Oliver Byrne's "The first six books of the Elements of Euclid"}},
+ year = {2017},
+ howpublished = {\url{https://github.com/jemmybutton/byrne-euclid}}
+}
+@misc{Rougeux2018,
+ author = {Rougeux, Nicholas},
+ title = {{Byrne’s Euclid}},
+ year = {2018},
+ howpublished = {\url{https://www.c82.net/euclid/}}
+}
+@misc{Okabe2008,
+ author = {Okabe, Masataka and Ito, Kei},
+ title = {{Color Universal Design (CUD) How to make figures and presentations that are friendly to Colorblind people}},
+ year = {2008},
+ howpublished = {\url{https://jfly.uni-koeln.de/color/}}
+}
+\end{filecontents}
+
+\documentclass{ltxdoc}
+\usepackage{byrne}
+\usepackage{ccicons,bxtexlogo,listings,hyperref}
+\hypersetup{
+ colorlinks=true,
+ linkcolor=blue,
+ filecolor=blue,
+ citecolor = black,
+ urlcolor=cyan,
+ }
+
+\lstset{
+language=MetaPost,
+alsolanguage=TeX,
+numbers=none,
+basicstyle=\ttfamily\scriptsize
+}
+
+\def\mpPre{textLabels := true;}
+
+\author{Sergey Slyusarev}
+\title{``Byrne'' v. 0.2.2 package for \METAPOST\ and \LaTeX}
+
+\begin{document}
+\maketitle
+
+\begin{abstract}
+This document describes ``Byrne'' package for \METAPOST\ and \LaTeX.
+\end{abstract}
+
+\begin{centering}
+
+This document is distributed under CC-BY-SA 4.0 license
+
+\ccbysa
+
+\href{https://github.com/jemmybutton/byrne-latex}{https://github.com/jemmybutton/byrne-latex}
+
+\end{centering}
+
+\section{Introduction}
+Oliver Byrne's \href{https://archive.org/details/firstsixbooksofe00byrn/}{1847 quirky edition on the first six books of Euclid's ``Elements''}\cite{Byrne1847} is an interesting example of tight interplay between text and graphics in information visualization. The main feature of this book is that instead of relying on letter designations to describe lines, angles, etc., all the diagrams in it are colored and parts of these diagrams are directly incorporated into text.
+
+Recently this work met somewhat of a renaissance and in the span of a couple of years at least three independent attempts were made at reviving Byrne's work. In early 2017 the first six books \href{https://github.com/jemmybutton/byrne-euclid/}{remade in \ConTeXt} were published on GitHub\cite{Slyusarev2017}, in late 2018 an \href{https://www.c82.net/euclid/}{interactive web-version} was published by Nicholas Rougeux\cite{Rougeux2018} and in late 2019 a \href{https://www.kroneckerwallis.com/product/euclids-elements-completing-oliver-byrnes-work/}{printed version} of all Euclid's 15 books was published by Kronecker Wallis. All three are very different in terms of approach and goals.
+
+The \ConTeXt\ version's main objective was to develop a toolkit for applying Byrne's approach to a variety of geometry problems in the least time-consuming manner. This package is a \LaTeX\ (specifically \LuaLaTeX) version of the toolkit. It consists of two parts: \METAPOST\ code to describe and render geometric constructions and \LaTeX\ code to incorporate these constructions in text.
+
+\section{Requirements}
+
+This package works with \LuaLaTeX\ and requires \texttt{luamplib v2.23.0} or higher.
+\section{Example}
+
+\begin{minipage}{\textwidth}
+\vskip 0.5\baselineskip
+\defineNewPicture{
+textLabels := true;
+angleSize := 1cm;
+pair A, B, C;
+A := (0, 0);
+B := (0, 2cm);
+C := (3cm, 0);
+byAngleDefine(C, B, A, byyellow, 0);
+byAngleDefine(B, A, C, byblue, 0);
+byAngleDefine(A, C, B, byred, 0);
+draw byNamedAngleResized();
+byLineDefine(A, B, byred, 0, 0);
+byLineDefine(B, C, byblue, 0, 0);
+byLineDefine(C, A, byyellow, 0, 0);
+draw byNamedLineSeq(0)(AB,BC,CA);
+draw byLabelsOnPolygon(A, B, C)(0, 0);
+}
+~\hfill\drawCurrentPicture\hfill~
+\vskip \baselineskip
+
+In
+\drawFromCurrentPicture[middle][triangleABC]{
+startAutoLabeling;
+draw byNamedLineSeq(0)(AB,BC,CA);
+stopAutoLabeling;
+}
+the angle \drawAngle{A}
+is a right angle, therefore \triangleABC
+is a right-angled triangle.
+In it $\drawUnitLine{CB} > \drawUnitLine{AB}$
+and $\drawUnitLine{BC} > \drawUnitLine{AC}$.
+\end{minipage}
+
+\vskip 2\baselineskip
+The construction above is described like this:
+\vskip 1.5\baselineskip
+
+\begin{lstlisting}
+\usepackage{byrne}
+...
+\defineNewPicture{ % MetaPost code to describe the main diagram is placed inside
+ textLabels := true; % This turns text labels on
+ pair A, B, C;
+ A := (0, 0);
+ B := (0, 2cm);
+ C := (3cm, 0);
+ byAngleDefine(C, B, A, byyellow, 0); % This defines a yellow angle CBA
+ byAngleDefine(B, A, C, byblue, 0);
+ byAngleDefine(A, C, B, byred, 0);
+ draw byNamedAngleResized(); % Draws angles.
+ byLineDefine(A, B, byred, 0, 0); % This defines a red line AB.
+ byLineDefine(B, C, byblue, 0, 0);
+ byLineDefine(C, A, byyellow, 0, 0);
+ draw byNamedLineSeq(1)(AB,BC,CA); % Draws joint lines in sequence
+ draw byLabelsOnPolygon(A, B, C)(0, 0); % Draws text labels
+}
+\drawCurrentPicture % Draws the diagram
+
+In
+\drawFromCurrentPicture[middle][triangleABC]{
+ startAutoLabeling;
+ draw byNamedLineSeq(0)(AB,BC,CA);
+ stopAutoLabeling;
+}
+the angle \drawAngle{A} is a right angle, therefore \triangleABC\ is
+a right-angled triangle. In it $\drawUnitLine{CB} > \drawUnitLine{AB}$
+and $\drawUnitLine{BC} > \drawUnitLine{AC}$.
+\end{lstlisting}
+
+\vskip 1.5\baselineskip
+
+Several things to note here.
+
+In the \METAPOST\ part:
+All points are ordinary \METAPOST\ pairs and can be defined and manipulated as such. Normally every part of the diagram is first defined (e.g. \texttt{byAngleDefine} or \texttt{byLineDefine}) and then is drawn (e.g. \texttt{draw byNamedAngleResized...} or \texttt{draw byNamedLineSeq...}). Also, although Byrne didn't use text labels in his book, they are implemented in this package \ref{textlabels}. Normally they are placed semi-manually in the main diagram (using functions like \texttt{byLabelsOnPolygon}) and mostly automatically in offspring pictures. By default they are turned off, and to turn them on \texttt{textLabels := true;} should be set.
+
+In the \LaTeX\ part:
+The most general way to reference main diagram is to use \cs{drawFromCurrentPicture}. It will process arbitrary \METAPOST\ code based on the main diagram's code and output an image. However, it would be too cumbersome to use this route every time, so a few shortcuts are in place. If you do need to process arbitrary code, you can give picture a name (in the example it's \texttt{triangleABC}). It will define a macro of the same name \cs{triangleABC} which will output the same image again. For most common cases there are special macros which don't require you to write any \METAPOST\ code. For instance \cs{drawAngle} and \cs{drawUnitLine} allow you to call angles and lines simply by name. The names don't have to match the initial definition exactly. For instance, the angle in the example can be called \texttt{A}, \texttt{BAC} or \texttt{ABC} interchangeably, or the same line segment can be called either \texttt{BC} or \texttt{CB}.
+
+For more examples you can look at the source code of the \href{https://github.com/jemmybutton/byrne-euclid/}{\ConTeXt\ version of Byrne's book.} This package shares syntax with it and its code can be transferred to \LaTeX\ with minimal changes.
+
+The following reference guide is not complete and will be updated in the future.
+
+\section{\METAPOST\ part reference}
+
+\subsection{Global variables and settings}
+
+\subsubsection{Global variables}\label{Variables}
+
+ There are several variables which control the looks and behaviour.
+
+ \texttt{lineWidth}\label{lineWidth}~— the width for regular lines, set to \texttt{2pt} by default. Normally referenced as \texttt{0}.
+
+ \texttt{lineWidthThin}~— the width for thin lines, set to \texttt{1pt} by default. Normally referenced as \texttt{1}.
+
+ \texttt{lineWidthHair}~— the width for superthin lines, set to \texttt{1/2pt} by default. Normally referenced as \texttt{2}.
+
+ \texttt{pointMarkSize}\label{pointMarkSize}~— size of point marks, set to \texttt{4pt} by default.
+
+ \texttt{pointLinesSize}\label{pointLinesSize}~— size for line segments used to depict points, set to \texttt{1/2cm} by default.
+
+ \texttt{defaultScaleFactor}~— global default scale factor, set to \texttt{1} by default.
+
+ \texttt{angleSize}\label{angleSize}~— angle arc radius, set to \texttt{1cm} by default.
+
+ \texttt{angleScale}\label{angleScale}~— scale factor for angle arcs, set to \texttt{1} by default.
+
+ \texttt{globalRotation}~— angle to rotate the whole picture.
+
+ \texttt{markLength}~— size of marks on lines, set to \texttt{3lineWidth} by default.
+
+ \texttt{rayExtension}~— length for a ray depiction, set to \texttt{1/3cm} by default.
+
+% magnitudeSize := 5/18cm;
+% magnitudeScale := 1;
+% magnitudeGap := 3/2lineWidth;
+
+ \texttt{textLabels}~— whether to render text labels, set to \texttt{false} by default.
+
+%ghostLines := true;
+
+ \texttt{autoRightAngles}\label{autoRightAngles}~— whether to depict right angles using angles instead of arcs, set to \texttt{false} by default.
+
+%omitDuplicateTextLabels := false;
+
+ \texttt{textLabelShift}~— how far away to put text labels from points, set to \texttt{lineWidth} by default.
+
+%autoLabelingMode := false;
+%mainPictureMode := false;
+
+%pathToString
+
+\subsubsection{defineColor.ColorName(color)}\label{defineColor}
+
+ \defineNewPicture{
+ textLabels := false;
+ pair A, B, C;
+ A := dir(60);
+ B := (0, 0);
+ C := dir(0);
+ forsuffixes s=byblack,byred,byblue,byyellow,oiBlack,oiOrange,oiSkyBlue,oiGreen,oiYellow,oiBlue,oiVermillion,oiPurple:
+ byAngleDefine.s(A, B, C,s, 0);
+ endfor;
+ }
+ Defines a color. Colors can be defined as regular \METAPOST\ colors as well, this is just a shorthand version.
+
+ \texttt{ColorName}~— mandatory color name of \texttt{suffix type}.
+
+ \texttt{color}~— an actual calor, can be either of \texttt{color} type or of \texttt{cmykcolor} type.
+
+ Some colors are predefined. Colors similar to the ones Byrne used for his book are: \texttt{byblack}\drawAngle{byblack}, \texttt{byred}\drawAngle{byred}, \texttt{byblue}\drawAngle{byblue}, \texttt{byyellow}\drawAngle{byyellow}. One obvious issue of any color coding is whether the colors are discernible by colorblind people. Byrne's colors should be mostly fine, but there are only foru of them. In case more colors are necessary, eight colors from \href{https://jfly.uni-koeln.de/color/}{colorblind-friendly palette by Okabe and Ito} \cite{Okabe2008} are defined: \texttt{oiBlack}\drawAngle{oiBlack}, \texttt{oiOrange}\drawAngle{oiOrange}, \texttt{oiSkyBlue}\drawAngle{oiSkyBlue}, \texttt{oiGreen}\drawAngle{oiGreen}, \texttt{oiYellow}\drawAngle{oiYellow}, \texttt{oiBlue}\drawAngle{oiBlue}, \texttt{oiVermillion}\drawAngle{oiVermillion}, \texttt{oiPurple}\drawAngle{oiPurple}. Also text labels \ref{textlabels} are helpful as a secondary means of identification.
+
+%\subsubsection{selectOutlineColor.ColorName}\label{selectOutlineColor}
+
+% Selects an outline color for a color.
+
+% \texttt{ColorName}~— mandatory color name of \texttt{suffix type}.
+
+% ...
+
+\subsubsection{startTempScale(tmpScale); ... \METAPOST\ code ... stopTempScale;}\label{startTempScale}
+
+ Used to temporarily set scale factor for a section of code;
+
+ \texttt{tmpScale}~— scale factor for a section of code.
+
+\subsubsection{startTempAngleScale(tmpAngleScale); ... \METAPOST\ code ... stopTempAngleScale;}\label{startTempAngleScale}
+
+ Used to temporarily set angle scale factor for a section of code;
+
+ \texttt{tmpAngleScale}~— angle scale factor for a section of code.
+
+\subsubsection{startGlobalRotation(rotationAngle); ... \METAPOST\ code ... stopGlobalRotation;}\label{startGlobalRotation}
+
+ Used to temporarily set global rotation for a section of code;
+
+ \texttt{rotationAngle}~— global rotation for a section of code.
+
+\subsubsection{startAutoLabeling; ... \METAPOST\ code ... stopAutoLabeling}\label{startAutoLabeling}
+
+ Used to turn auto labeling for a section of code. Most of the drawing functions have auto labeling which is turned off by default. Sometimes it's handy to use it instead of labeling items by hand.
+
+%startOffspringPictureMode
+%stopOffspringPictureMode
+
+%startMainPictureMode
+%stopMainPictureMode
+
+\subsection{Lines}
+
+% byLineRender
+% byReturnLineLength
+
+\subsubsection{byLineDefine.LineName(A, B, color, dashed, thick)}\label{byLineDefine}
+
+ Defines a straight line. Does not return anything.
+
+ \texttt{LineName}~— optional line name of \texttt{suffix type}. If no name is provided, it is being constructed from point names, e.g. \texttt{AB}.
+
+ \texttt{A, B}~— point names, of \texttt{suffix} type (i.e., variable names should be provided).
+
+ \texttt{color}~— line color, of \texttt{color} type.
+
+ \texttt{dashed}~— is line dashed. \texttt{0} for solid line and \texttt{1} for dashed line.
+
+ \texttt{thick}~— is line thick. \texttt{0} for regular line and \texttt{1} for thin line \ref{lineWidth}.
+
+ \defineNewPicture{
+ pair A, B, C, D;
+ A := (0, 0);
+ B := (2cm, 0);
+ C := (3cm, 0);
+ D := (5cm, 0);
+ byLineDefine(A, B, byred, 0, 0);
+ byLineDefine(C, D, byblue, 1, 1);
+ }
+ For example, this line \drawUnitLine{AB} is defined as \texttt{byLineDefine(A, B, byred, 0, 0);} and this line \drawUnitLine{CD} is defined as \texttt{byLineDefine(C, D, byblue, 1, 1);}
+
+% byLineStylize
+
+\subsubsection{byLine.LineName(A, B, color, dashed, thick)}\label{byLine}
+
+ Defines and draws a straight line. Returns a \texttt{picture} of the line.
+
+ Arguments are the same as in \texttt{byLineDefine} \ref{byLineDefine}.
+
+% byLineFull
+% byLineWithName
+% byNamedLineFull
+
+\subsubsection{byNamedLine(LINES\_LIST)}\label{byNamedLine}
+
+ Draws lines. Returns a picture of the lines.
+
+ \texttt{LINES\_LIST}~— a comma-separated list of line names.
+
+\subsubsection{byNamedLineSeq(lineShift)(LINES\_LIST)}\label{byNamedLineSeq}
+
+ \defineNewPicture[1]{
+ pair A, B, C;
+ A := dir(45) scaled 1/4cm;
+ B := (0, 0);
+ C := dir(0) scaled 1/4cm;
+ byLineDefine(A, B, byred, 0, 0);
+ byLineDefine(B,C, byyellow, 0, 0);
+ draw byNamedLineSeq(0)(BC,AB) scaled 2;
+ }
+
+ Draws lines joined in sequence. Line joints look like this:\drawCurrentPicture. Returns a picture of the lines.
+
+ \texttt{lineShift}~— how much the lines are shifted perpendicular lines' axis. \texttt{1} is for one regular line thickness to one side%
+ \drawFromCurrentPicture[bottom]{
+ draw byNamedLineSeq(1)(BC,AB) scaled 2;
+ draw (A--B--C) scaled 2 withpen pencircle scaled 1/2pt;
+ },
+ \texttt{-1} is for one regular line thickness to the other side%
+ \drawFromCurrentPicture[bottom]{
+ draw byNamedLineSeq(-1)(BC,AB) scaled 2;
+ draw (A--B--C) scaled 2 withpen pencircle scaled 1/2pt;
+ }.
+
+ \texttt{LINES\_LIST}~— a comma-separated list of line names.
+
+
+\subsubsection{byMarkLine(position, color)(LineName)}\label{byMarkLine}
+
+ \defineNewPicture[1]{
+ pair A, B;
+ A := (0, 0);
+ B := (1cm, 0);
+ byLineDefine(A, B, byblue, 0, 0);
+ }
+
+ Defines and draws a mark on a line.
+
+ \texttt{position}~— a position of the mark. \texttt{0} for one end of the line, \texttt{1} for the other end of the line.
+
+ \texttt{color}~— mark color, of \texttt{color} type.
+
+ \texttt{LineName}~— line name, of \texttt{suffix} type.
+
+ For example this line mark \drawFromCurrentPicture{
+ startAutoLabeling;
+ draw byNamedLine(AB);
+ draw byLabelLine(0)(AB);
+ draw byMarkLine(1/4, byred, AB);
+ stopAutoLabeling;
+ } is drawn with \texttt{draw byMarkLine(1/4, byred, AB);}.
+
+\subsubsection{byNamedMarkLine(LineName)}
+
+ Draws a defined mark on the given line.
+
+ \texttt{LineName}~— line name, of \texttt{suffix} type.
+
+%byFindLinePointedThere
+%byConstructCompoundLine
+%byExpandLines
+%byNamedCompoundLine
+%byNamedCompoundRay
+%byNamedCompoundIndLine
+%byNamedCompoundLineRender
+%generateLineSynonyms
+
+\subsection{Points}
+
+\subsubsection{byPointLabelDefine(A, pointLabel)}\label{byPointLabelDefine}
+
+ Defines a point text label, returns nothing. By default point names are the same as the names of respective variables.
+
+ \texttt{A}~— a name of a point of \texttt{suffix} type (i.e., variable name should be provided).
+
+ \texttt{pointLabel}~— point label of \texttt{string} type.
+
+\subsubsection{byPointLabelRemove(POINTS\_LIST)}\label{byPointLabelRemove}
+
+ Sets text labels of multiple points to blank. Useful if text labels are turned on, but you don't want labels on certain points.
+
+ \texttt{POINTS\_LIST}~— a comma-separated list of point names.
+
+\subsubsection{byPointMarkDefine(PointName)(color, style)}\label{byPointMarkDefine}
+
+ \defineNewPicture{
+ textLabels := false;
+ pair A, B;
+ A := (0, 0);
+ B := (1cm, 0);
+ draw byPointMark(A, byblue, 0);
+ draw byPointMark(B, byred, 1);
+ }
+
+ Defines a point mark.
+
+ \texttt{color}~— mark color, of \texttt{color} type.
+
+ \texttt{style}~— \texttt{0} for solid circle \drawPointM{A}, \texttt{1} for white circle with outline \drawPointM{B}. Mark size is controlled by \texttt{pointMarkSize} \ref{pointMarkSize}.
+
+%byPointXYZDefine
+%byPointXYZEmpty
+%byIsPointInSpace
+%byPair
+%byRotatePoints
+%byPointMarkRender
+%byNamedPointMark
+%byPointMark
+%byNamedPointLines
+
+\subsection{Arcs and circles}
+
+%byCirclePathGenerate
+%byArcRender
+
+\subsubsection{byArcDefineBE.ArcName(O, begin, end, radius, color, dashed, thick, shift, endType)}\label{byArcDefineBE}
+
+ Defines an arc based on its center, radius and two angles. Returns nothing.
+
+ \defineNewPicture[1]{
+ textLabels := false;
+ pair A, B;
+ A := (0, 0);
+ }
+
+ \texttt{ArcName}~— optional arc name of \texttt{suffix type}. If no name is provided, it is being constructed from center point name, e.g. \texttt{O}.
+
+ \texttt{O}~— the center of the circle an arc is from, of \texttt{suffix} type (i.e., variable name should be provided).
+
+ \texttt{begin, end}~— beginning and ending of the arc in eighths (in essence, \texttt{arctime} of \texttt{fullcircle}). \texttt{0} for 3 o'clock, \texttt{2} for 12 o'clock etc. For instance, this
+ \drawFromCurrentPicture{
+ draw byArcBE(A, 0, 3, 2/6cm, byblue, 0, 0, 1, 0);
+ }
+ is \texttt{0, 3} and this
+ \drawFromCurrentPicture{
+ draw byArcBE(A, 5, 7, 2/6cm, byblue, 0, 0, 1, 0);
+ }
+ is \texttt{5, 7}.
+
+ \texttt{radius}~— arc radius.
+
+ \texttt{color}~— arc color, of \texttt{color} type.
+
+ \texttt{dashed}~— is arc line dashed. \texttt{0} for solid line and \texttt{1} for dashed line.
+
+ \texttt{thick}~— is arc line thick. \texttt{0} for regular line and \texttt{1} for thin line \ref{lineWidth}.
+
+ \texttt{shift}~— how much arc line is shifted. \texttt{1} is for one regular line thickness outwards
+ \drawFromCurrentPicture{
+ draw byArcBE(A, 1/2, 7/2, 1/6cm, byyellow, 0, 0, 1, 0) scaled 2;
+ draw (subpath (1/2, 7/2) of (fullcircle scaled 4/6cm)) withpen pencircle scaled 1/2pt;
+ }, \texttt{-1} is for one regular line thickness inwards
+ \drawFromCurrentPicture{
+ draw byArcBE(A, 1/2, 7/2, 1/6cm, byyellow, 0, 0, -1, 0) scaled 2;
+ draw (subpath (1/2, 7/2) of (fullcircle scaled 4/6cm)) withpen pencircle scaled 1/2pt;
+ }.
+
+ \texttt{endType}~— type of arc line ends. \texttt{0} for ends cut by the radii
+ \drawFromCurrentPicture{
+ draw byArcBE(A, 1/2, 7/2, 1/6cm, byred, 0, 0, 0, 0) scaled 2;
+ }
+ and \texttt{1} for ends cut by the chord
+ \drawFromCurrentPicture{
+ draw byArcBE(A, 1/2, 7/2, 1/6cm, byred, 0, 0, 0, 1) scaled 2;
+ }.
+
+\subsubsection{byArcBE.arcName(O, begin, end, radius, color, dashed, thick, shift, endType)}\label{byArcBE}
+
+ Defines and draws an arc based on its center, radius and two angles. Returns the picture of the arc.
+
+ Arguments are the same as in \texttt{byArcDefineBE} \ref{byArcDefineBE}.
+
+\subsubsection{byArcDefine.ArcName(O, B, E, radius, color, dashed, thick, shift, endType)}\label{byArcDefine}
+
+ Defines an arc based on its center, radius and two points. Returns nothing.
+
+ Arguments are the same as in \texttt{byArcDefineBE} \ref{byArcDefineBE}, except for instead of angles in eights points are used.
+
+ \texttt{ArcName}~— optional arc name of \texttt{suffix type}. If no name is provided, it is being constructed from point names, e.g. \texttt{BOE}.
+
+ \texttt{B, E}~— points in the direction of the beginning and the ending of the arc respectively. Of \texttt{suffix} type (i.e., variable names should be provided).
+
+\subsubsection{byArc.ArcName(O, B, E, radius, color, dashed, thick, shift, endType))}\label{byArc}
+
+ Arguments are the same as in \texttt{byArcDefine} \ref{byArcDefine}.
+
+\subsubsection{byNamedArcExact(ARCS\_LIST)}\label{byNamedArcExact}
+ Draws a picture of arcs just as they were defined. Returns a picture of the arcs.
+
+ \texttt{ARCS\_LIST}~— a comma-separated list of arc names.
+
+\subsubsection{byNamedArc(ARCS\_LIST)}\label{byNamedArc}
+ Draws a picture of arcs, except of it ignores \texttt{shift} and \texttt{endType}. Returns a picture of the arcs.
+
+ \texttt{ARCS\_LIST}~— a comma-separated list of arc names.
+
+%byNamedArcLabel
+
+\subsubsection{byCircleDefineFree.CircleName(o, radius, color, dashed, thick, shift)}\label{byCircleDefineFree}
+
+ Defines a circle based on its center and radius. Returns nothing.
+
+ \defineNewPicture[1]{
+ }
+
+ \texttt{CircleName}~— optional circle name of \texttt{suffix type}. If no name is provided, \texttt{aCircle} is used for a name.
+
+ \texttt{o}~— the center of the circle, of \texttt{pair} type.
+
+ \texttt{radius}~— circle radius.
+
+ \texttt{color}~— circle color, of \texttt{color} type.
+
+ \texttt{dashed}~— is circle line dashed. \texttt{0} for solid line and \texttt{1} for dashed line.
+
+ \texttt{thick}~— is circle line thick. \texttt{0} for regular line and \texttt{1} for thin line \ref{lineWidth}.
+
+ \texttt{shift}~— how much circle line is shifted. \texttt{1} is for one regular line thickness outwards
+ \drawFromCurrentPicture{
+ byCircleDefineFree((0,0), 1/8cm, byyellow, 0, 0, 1);
+ draw byNamedCircle(aCircle) scaled 2;
+ draw fullcircle scaled 1/2cm;
+ }, \texttt{-1} is for one regular line thickness inwards
+ \drawFromCurrentPicture{
+ byCircleDefineFree((0,0), 1/8cm, byyellow, 0, 0, -1);
+ draw byNamedCircle(aCircle) scaled 2;
+ draw fullcircle scaled 1/2cm;
+ }.
+
+\subsubsection{byCircleDefineR.CircleName(O, radius, color, dashed, thick, shift)}\label{byCircleDefineR}
+
+ Defines a circle based on its center and radius. Returns nothing.
+
+ Arguments are the same as in \texttt{byCircleDefineFree} \ref{byCircleDefineFree}, except for the center is not defined directly by a \texttt{pair}.
+
+ \texttt{CircleName}~— optional circle name of \texttt{suffix type}. If no name is provided, it is being constructed from center name, e.g. \texttt{O}.
+
+ \texttt{O}~— the center of the circle. Of \texttt{suffix} type (i.e., variable name should be provided).
+
+\subsubsection{byCircleR.CircleName(O, radius, color, dashed, thick, shift)}\label{byCircleR}
+
+ Defines and draws circle based on its center and radius. Returns a picture of that circle.
+
+ Arguments are the same as in \texttt{byCircleDefineR} \ref{byCircleDefineR}.
+
+\subsubsection{byCircleDefine.CircleName(O, A, color, dashed, thick, shift)}\label{byCircleDefine}
+
+ Defines circle based on its center and a point. Returns nothing.
+
+ Arguments are the same as in \texttt{byCircleDefineR} \ref{byCircleDefineR}, except for instead of the radius, a point through which the circle is drawn is used.
+
+ \texttt{CircleName}~— optional circle name of \texttt{suffix type}. If no name is provided, it is being constructed from point names, e.g. \texttt{OA}.
+
+ \texttt{A}~— a point through which the circle is drawn. Of \texttt{suffix} type (i.e., variable name should be provided).
+
+\subsubsection{byCircle.CircleName(O, A, color, dashed, thick, shift)}\label{byCircle}
+
+ Defines and draws circle based on its center and a point. Returns a picture of that circle.
+
+ Arguments are the same as in \texttt{byCircleDefine} \ref{byCircleDefine}.
+
+\subsubsection{byCircleABC.CircleName(A, B, C, color, dashed, thick, shift)}\label{byCircleABC}
+
+ Arguments are the same as in \texttt{byCircleDefineR} \ref{byCircleDefineR}, except for instead of the center and the radius, three points through which the circle is drawn are used.
+
+ \texttt{CircleName}~— optional circle name of \texttt{suffix type}. If no name is provided, it is being constructed from point names, e.g. \texttt{ABC}.
+
+ \texttt{A, B, C}~— points through which the circle is drawn. Of \texttt{suffix} type (i.e., variable names should be provided).
+
+%byFindCircleCenterABC
+%byFindCircleCenterABCinSpace
+%byReturnCircleCenter
+
+\subsubsection{byNamedCircle(CIRCLES\_LIST)}\label{byNamedCircle}
+
+ Draws circles. Returns a picture of the circles.
+
+ \texttt{CIRCLES\_LIST}~— a comma-separated list of circle names.
+
+\subsection{Arbitraty figures}
+
+\subsubsection{byArbitraryFigureDefine.ArbitraryFigureName(figurePath, col\-or, dashed, thick)}\label{byArbitraryFigureDefine}
+
+ Defines an arbitrary figure (basically, any path). Returns nothing.
+
+ \texttt{ArbitraryFigureName}~— optional figure name of \texttt{suffix type}. If no name is provided, \texttt{anArbitraryFigure} is used for a name.
+
+ \texttt{figurePath}~— figure path, of \texttt{path} type.
+
+ \texttt{color}~— figure color, of \texttt{color} type.
+
+ \texttt{dashed}~— is figure line dashed. \texttt{0} for solid line and \texttt{1} for dashed line.
+
+ \texttt{thick}~— is figure line thick. \texttt{0} for regular line and \texttt{1} for thin line \ref{lineWidth}.
+
+\subsubsection{byArbitraryFigure.ArbitraryFigureName(figurePath, color, dash\-ed, thick)}\label{byArbitraryFigure}
+
+ Defines an arbitrary figure. Returns nothing.
+
+ Arguments are the same as in \texttt{byArbitraryFigure} \ref{byArbitraryFigure}.
+
+\subsubsection{byNamedArbitraryFigure(ARBITRARY\_FIGURES\_LIST)}\label{byNamedArbitraryFigure}
+
+ Draws arbitrary figures. Returns a picture of the figures.
+
+ \texttt{ARBITRARY\_FIGURES\_LIST}~— a comma-separated list of figure names.
+
+%byArbitraryFigureRender
+%byArbitraryCurveDefine
+%byNamedArbitraryCurve
+%byListToPath
+%byArbitraryCurve
+
+\subsection{Filled figures}
+
+%byFilledCircleSegment
+%byNamedFilledCircleSegment
+%byFilledCircleSector
+%byNamedFilledCircleSector
+
+\subsubsection{byPolygonDefine.PolygonName(POINTS\_LIST)(Color)}\label{byPolygonDefine}
+
+ Defines a polygon based on its vertex points. Returns nothing.
+
+ \texttt{PolygonName}~— optional polygon name \texttt{suffix}.
+
+ \texttt{POINTS\_LIST}~— a comma-separated list of point names.
+
+ \texttt{Color}~— line color, of \texttt{suffix} type (i.e. a variable name should be provided).
+
+%byPolygonPathFromList
+
+\subsubsection{byPolygon.polygonName(POINTS\_LIST)(Color)}\label{byPolygon}
+
+ Defines and draws a polygon based on its vertex points. Returns a picture of the polygon.
+
+ Arguments are the same as in \texttt{byPolygonDefine} \ref{byPolygonDefine}.
+
+%byPolygonName
+
+\subsubsection{byNamedPolygon(POLYGONS\_LIST)}\label{byNamedPolygon}
+
+ Draws polygons. Returns a picture of the polygons.
+
+ \texttt{POLYGONS\_LIST}~— a comma-separated list of polygon names.
+
+%byMergePolygons
+%polygonCleanup
+
+\subsection{Angles}
+
+\subsubsection{byAngleDefine.AngleName(A, B, C, color, style)}\label{byAngleDefine}
+
+ \defineNewPicture{
+ textLabels := false;
+ pair A, B, C, A', B', C', A'', B'', C'';
+ A := dir(60);
+ B := (0, 0);
+ C := dir(0);
+ A' := A shifted (1cm, 0);
+ B' := B shifted (1cm, 0);
+ C' := C shifted (1cm, 0);
+ A'' := A shifted (2cm, 0);
+ B'' := B shifted (2cm, 0);
+ C'' := C shifted (2cm, 0);
+ byAngleDefine(A, B, C, byred, 0);
+ byAngleDefine(A', B', C', byred, 1);
+ byAngleDefine(A'', B'', C'', byred, 2);
+ }
+
+ Defines an angle based on three points. Returns nothing.
+
+ \texttt{AngleName}~— optional angle name \texttt{suffix}.
+
+ \texttt{A, B, C}~— angle points. Of \texttt{suffix} type (i.e., variable names should be provided).
+
+ \texttt{color}~— angle color, of \texttt{color} type.
+
+ \texttt{style}~— angle arc style. \texttt{0} for solid filled sector \drawAngle{B}, \texttt{1} for arc \drawAngle{B'}, \texttt{2} for dashed arc \drawAngle{B''}. Default arc radius is determined by \texttt{angleSize} \ref{angleSize}. It can be temporarily changed using \texttt{angleScale} \ref{angleScale}. You can also define custom angle styles \ref{AngleStyles}.
+
+\subsubsection{byConsiderAngleRight(AngleName)}\label{byConsiderAngleRight}
+
+ \defineNewPicture{
+ textLabels := false;
+ pair A, B, C, A', B', C';
+ A := dir(60)*cm;
+ B := (0, 0);
+ C := dir(0)*cm;
+ A' := A shifted (2cm, 0);
+ B' := B shifted (2cm, 0);
+ C' := C shifted (2cm, 0);
+ byAngleDefine(A, B, C, byyellow, 0);
+ byAngleDefine(A', B', C', byyellow, 0);
+ byConsiderAngleRight(A'B'C');
+ }
+ Makes a defined angle look like an angle \drawAngle{A'B'C'} instead of a circle arc \drawAngle{ABC}, as right angles are often depicted. Useful if an angle is not actually right in the diagram, but is meant to be right or assumed to be right. To make all the right angles look like this automatically, you can set \texttt{autoRightAngles := true;}\ref{autoRightAngles}.
+
+ \texttt{AngleName}~— name of the angle.
+
+%byConstructAngleArc
+%byIsArcClockwise
+%byFullCircleToPlane
+
+\subsubsection{byAngle.AngleName(A, B, C, color, style)}\label{byAngle}
+
+ Defines and draws an angle based on three points. Returns a picture of the angle.
+
+ Arguments are the same as in \texttt{byAngleDefine} \ref{byAngleDefine}.
+
+\subsubsection{byAngleDefineExtended.AngleName(A, B, C, color, style)(OPTIONAL\_COLORS\_LIST)}\label{byAngleDefineExtended}
+
+ Defines an angle based on three points. Returns nothing.
+
+ Arguments are the same as in \texttt{byAngleDefine} \ref{byAngleDefine}, except for using this function it's possible to define optional colors for an angle.
+
+ \texttt{OPTIONAL\_COLORS\_LIST}~— a comma-separated list of optional color names. See \ref{AngleStyles} for details.
+
+\subsubsection{byAngleExtended.AngleName(A, B, C, color, style)(OPTION\-AL\_COLORS\_LIST)}\label{byAngleExtended}
+
+ Defines and draws an angle based on three points. Returns a picture of the angle.
+
+ Arguments are the same as in \texttt{byAngleDefineExtended} \ref{byAngleDefineExtended}.
+
+\subsubsection{byNamedAngle(ANGLES\_LIST)}\label{byNamedAngle}
+
+ Draws angles. Returns a picture of the angles.
+
+ \texttt{ANGLES\_LIST}~— a comma-separated list of polygon names.
+
+%byNamedSolidAngle
+%byProcessAnglesList
+%byAngleMWhite
+%byAngleMSolid
+%byAngleMLine
+%byAngleMThinLine
+%byAngleMDashedLine
+%byNamedAngleSidesFull
+%byNamedAngleDummySides
+%byNamedAngleSides
+%byNamedAngleWithDummySides
+%byNamedAngleResized
+%generateAngleSynonyms
+%sortPointAnglesList
+%bySplitStringIntoAngles
+%byConstructCompoundAngle
+%twoRightAngles
+%rightAngle
+%byDefineGenericRightAngles
+
+\subsubsection{Angle styles}\label{AngleStyles}
+
+ It's possible to add custom angle styles. To do this, you first need to define a function, with a particular set of arguments and then include this function's name into a special list. As an example here's the function which describes a regular solid angle sector:
+
+\begin{lstlisting}
+vardef byAngleMSolid (expr angleArc, angleColor)(suffix AngleOptionalColors) =
+ save p;
+ path p;
+ p := angleArc scaled (angleScale*angleSize);
+ image(
+ fill ((0, 0)--p--cycle) withcolor angleColor;
+ )
+enddef;
+\end{lstlisting}
+
+ Note the argument \texttt{AngleOptionalColors}. It is not used for solid angles and is not defined with \texttt{byAngleDefine}, but several optional colors can be defined using \texttt{byAngleDefineExtended} \ref{byAngleDefineExtended} and can be accessed using \texttt{AngleOptionalColors[0]}, \texttt{AngleOptionalColors[1]} etc.
+
+ And here's how this angle style is included in the list:
+
+\begin{lstlisting}
+byAngleMacroName[0] := "byAngleMSolid";
+\end{lstlisting}
+
+ Here \texttt{0} is the value of \texttt{sty} argument used in \texttt{byAngleDefine} \ref{byAngleDefine} and such to call this particular angle style.
+
+ As a more practical example, in Byrne's book, in a couple of places for some reason he chooses not to use ordinary arcs and sectors, but instead goes with unique angle designs. In order not to include these peculiarities into the main lib in the \ConTeXt\ version they were defined \textit{in situ}. Here's the definition from IV.III:
+
+ \defineNewPicture{
+ vardef byAngleMSectors (expr angleArc, angleColor)(suffix angleOptionalColors) =
+ save p;
+ path p[];
+ p1 := (subpath(0, arctime (1/3arclength(angleArc)) of angleArc)
+ of angleArc)
+ scaled (angleScale*angleSize);
+ p2 := (subpath(arctime (1/3arclength(angleArc))
+ of angleArc, arctime(2/3arclength(angleArc)) of angleArc) of angleArc)
+ scaled (angleScale*angleSize);
+ p3 := (subpath(arctime (2/3arclength(angleArc))
+ of angleArc, length(angleArc)) of angleArc)
+ scaled (angleScale*angleSize);
+ image(
+ fill ((0, 0)--p1--cycle) withcolor angleOptionalColors[0];
+ fill ((0, 0)--p2--cycle) withcolor angleColor;
+ fill ((0, 0)--p3--cycle) withcolor angleOptionalColors[1];
+ )
+ enddef;
+ byAngleMacroName[3] := "byAngleMSectors";
+ textLabels := false;
+ pair A, B, C;
+ A := dir(45) scaled 1/4cm;
+ B := (0, 0);
+ C := dir(0) scaled 1/4cm;
+ byAngleDefineExtended(A, B, C, byred, 3)(byblue, byyellow);
+ }
+
+\begin{lstlisting}
+vardef byAngleMSectors (expr angleArc, angleColor)(suffix angleOptionalColors) =
+ save p;
+ path p[];
+ p1 := (subpath(0, arctime (1/3arclength(angleArc)) of angleArc)
+ of angleArc)
+ scaled (angleScale*angleSize);
+ p2 := (subpath(arctime (1/3arclength(angleArc))
+ of angleArc, arctime(2/3arclength(angleArc)) of angleArc) of angleArc)
+ scaled (angleScale*angleSize);
+ p3 := (subpath(arctime (2/3arclength(angleArc))
+ of angleArc, length(angleArc)) of angleArc)
+ scaled (angleScale*angleSize);
+ image(
+ fill ((0, 0)--p1--cycle) withcolor angleOptionalColors[0];
+ fill ((0, 0)--p2--cycle) withcolor angleColor;
+ fill ((0, 0)--p3--cycle) withcolor angleOptionalColors[1];
+ )
+enddef;
+byAngleMacroName[3] := "byAngleMSectors";
+\end{lstlisting}
+
+This angle style employs two optional colors and can be called by setting \texttt{style} argument \ref{byAngleDefine} to \texttt{3}. This is what the result of \texttt{byAngleDefineExtended(A, B, C, byred, 3)(byblue, byyellow);} (\ref{byAngleDefineExtended}) looks like:\drawAngle{B}.
+%https://archive.org/details/firstsixbooksofe00byrn/page/126/mode/2up
+
+%\subsection{Arrows}
+
+%commonArrowSettings
+%byRotationArrowDefine
+%byGenerateRotationArrowPath
+%byNamedRotationArrow
+%byFlatArrowDefine
+%byNamedFlatArrow
+
+%\subsection{Spheres}
+
+%\subsection{Magnitudes}
+
+%byMagnitudeSymbolDefine
+%byNamedMagnitudeSymbol
+%byMagnitudeDefine
+%byNamedMagnitude
+
+\subsection{Text labels}\label{textlabels}
+
+There are no text labels in Byrne's book, but, as Edward Tufte points out in his 1990 book, adding small text labels can actually help speed recognition of geometric elements \cite{Tufte90}. It's not clear whether it's indeed the case for the reader, but at the very least text labels provide the author with the means of linking source code with the rendered pages. Several functions listed below allow for adding text labels very similar to the ones suggested by Tufte.
+
+Text labels are turned off by default. As a result, simply adding code for text labels won't make them visible. They only appear when \texttt{textLabels := true;} is set in the beginning of a main picture or globally by defining \texttt{\textbackslash def\textbackslash\{...\} mpPre} \ref{defineNewPicture}. Text labels don't always have to be added manually, most elements can do auto labeling \ref{startAutoLabeling} which is intended to work with standalone angles, polygons, etc.
+
+%\subsubsection{byTextLabel(labelType, text, point, angle, distance)}\label{byTextLabel}
+%Draws a text label. Returns a picture of the label.
+
+\subsubsection{byLabelPoint(A, labelAngle, distance)}\label{byLabelPoint}
+Draws a text label for a point. Returns a picture of the label.
+
+ \texttt{A}~— the point to label, of \texttt{suffix} type (i.e., point name should be provided).
+
+ \texttt{labelAngle}~— angle at which the label should be drawn in degrees.
+
+ \texttt{distance}~— distance at which the label should be drawn in \texttt{textLabelShift} units.
+
+\subsubsection{byLabelLine(distance)(LINES\_LIST)}\label{byLabelLine}
+
+ Draws text labels for lines. Returns a picture of the labels.
+
+ \texttt{distance}~— distance at which the labels should be drawn in \texttt{textLabelShift} units.
+
+ \texttt{LINES\_LIST}~— a comma-separated list of line names.
+
+\subsubsection{byLabelPolygon(distance)(POLYGONS\_LIST)}\label{byLabelPolygon}
+
+ Draws text labels for polygons. Returns a picture of the labels.
+
+ \texttt{distance}~— distance at which the labels should be drawn in \texttt{textLabelShift} units.
+
+ \texttt{POLYGONS\_LIST}~— a comma-separated list of polygon names.
+
+%byLabelCircle
+
+\subsubsection{byLabelsOnCircle(POINTS\_LIST)(CircleName)}\label{byLabelsOnCircle}
+
+ Draws text labels for points on a circle. Returns a picture of the labels.
+
+ \texttt{POINTS\_LIST}~— a comma-separated list of point names.
+
+ \texttt{CircleName}~— circle name of \texttt{suffix type}.
+
+\subsubsection{byLabelsOnPolygon(POINTS\_LIST)(style, shift)}\label{byLabelsOnPolygon}
+
+ Draws text labels for points on a polygon. Returns a picture of the labels.
+
+ \defineNewPicture{
+ pair A, B, C, D;
+ D := (0, 0);
+ C := (1cm, 0);
+ B := (2cm, 0);
+ A := (1/2cm, 1cm);
+ byPolygonDefine(D, C, A)(byred);
+ byPolygonDefine(C, B, A)(byyellow);
+ }
+
+ \texttt{POINTS\_LIST}~— a comma-separated list of point names.
+
+ \texttt{style}~— specifies which points to omit. \texttt{0} to draw labels for all listed points
+ \drawFromCurrentPicture{
+ draw byNamedPolygon(DCA,CBA);
+ draw byLabelsOnPolygon(A, B, C, D)(0, 0);
+ }, \texttt{1} to draw labels for all listed points, except for the ones at straight angles
+ \drawFromCurrentPicture{
+ draw byNamedPolygon(DCA,CBA);
+ draw byLabelsOnPolygon(A, B, C, D)(1, 0);
+ }, \texttt{2} omits first and last points
+ \drawFromCurrentPicture{
+ draw byNamedPolygon(DCA,CBA);
+ draw byLabelsOnPolygon(A, B, C, D)(2, 0);
+ }, \texttt{3} omits the first point
+ \drawFromCurrentPicture{
+ draw byNamedPolygon(DCA,CBA);
+ draw byLabelsOnPolygon(A, B, C, D)(3, 0);
+ }, \texttt{4} omits the last point
+ \drawFromCurrentPicture{
+ draw byNamedPolygon(DCA,CBA);
+ draw byLabelsOnPolygon(A, B, C, D)(4, 0);
+ }.
+
+ \texttt{shift}~— negative to move labels closer, positive to move labels farther.
+
+\subsubsection{byLabelLineEnd(A, B)(distance)}\label{byLabelLineEnd}
+
+ Draws a text label for a line end. Returns a picture of the label.
+
+ \texttt{A, B}~— line ends, of \texttt{suffix} type (i.e., point name should be provided).
+
+ \texttt{distance}~— negative to move labels closer, positive to move labels farther.
+
+%byLabelAngleCompensate
+
+\section{\LaTeX\ part reference}
+
+\subsection{General purpose}
+
+\sloppy
+
+\subsubsection{\textbackslash defineNewPicture [offspringPicture\-Sca\-leFactor] [mainPicture\-Sca\-le\-Factor] \{\METAPOST\ code\}}\label{defineNewPicture}
+
+\fussy
+
+ This macro is used to describe a main diagram.
+
+ \texttt{offspringPictureScaleFactor}~— how much smaller offspring pictures should be. \texttt{1/3} by default.
+
+ \texttt{mainPictureScaleFactor}~— scale factor for the main picture. \texttt{1} by default.
+
+ \texttt{\METAPOST\ code}~— actual \METAPOST\ code to describe the main picture. To have some snippets of code always executed before and after the code for the main picture (e.g. to turn on text labels by default with \texttt{textLabels := true;}), define \cs{mpPre} and \cs{mpPost} macros respectively in the preamble of your document, like this:
+
+\begin{lstlisting}
+\def\mpPre{...some \METAPOST\ code...}
+\def\mpPost{...some \METAPOST\ code...}
+\end{lstlisting}
+
+
+\subsubsection{\textbackslash drawCurrentPicture}
+
+ Draws the main diagram.
+
+% \drawImageFromCurrentInstance
+
+% \unmarkPictAsReady
+
+% \addToUndefineList
+
+\sloppy
+
+\subsubsection{\textbackslash defineFromCurrentPicture \{verticalAlignment\} \{PictureName\} \{\METAPOST\ code\}}
+
+\fussy
+
+ This macro is used to describe a diagram, based on the main diagram.
+
+ \texttt{verticalAlignment}~— vertical alignment declaration. \texttt{middle} to align the picture with the middle of the line, anything else for bottom alignment.
+
+ \texttt{PictureName}~— picture name.
+
+ \texttt{MP code}~— actual \METAPOST\ code to describe the picture.
+
+ Can be drawn using \texttt{\textbackslash PictureName}.
+
+\sloppy
+
+\subsubsection{\textbackslash drawFromCurrentPicture [verticalAlignment] [PictureName] \{\METAPOST\nolinebreak\ code\}}
+
+ \fussy
+
+ This macro is used to describe and draw a diagram, based on the main diagram.
+
+ \texttt{verticalAlignment}~— optional vertical alignment declaration. \texttt{middle} to align the picture with the middle of the line, anything else for bottom alignment.
+
+ \texttt{PictureName}~— optional picture name.
+
+ \texttt{\METAPOST\ code}~— actual \METAPOST\ code to describe the picture.
+
+ Can be drawn again later using \texttt{\textbackslash PictureName}.
+
+% \drawDefinedPicture
+
+\subsection{Specialized}
+
+\subsubsection{\textbackslash drawUnitLine[LineSecondName]\{LineName\}}
+
+ Draws a line of unit length with colors and labels based on the line of the same name in the main diagram.
+
+ \texttt{LineSecondName}~— optional line name.
+
+ \texttt{LineName}~— name of the line to reference in the main diagram.
+
+ If a name is given, can be called later using \texttt{\textbackslash ulineLineNameLineSecondName}, otherwise~— \texttt{\textbackslash ulineLineName}.
+
+\subsubsection{\textbackslash drawProportionalLine\{LineName\}}
+
+ Draws a line with colors and labels based on and length linearly proportional to the line of the same name in the main diagram.
+
+ \texttt{LineName}~— name of the line to reference in the main diagram.
+
+ Can be called later using \texttt{\textbackslash plineLineName}.
+
+%\drawProportionalLine
+
+\subsubsection{\textbackslash drawSizedLine[LineSecondName]\{LineName\}}
+
+ Draws a line with colors and labels based on and length proportional to the line of the same name in the main diagram.
+
+ \texttt{LineSecondName}~— optional line name.
+
+ \texttt{LineName}~— name of the line to reference in the main diagram.
+
+ If a name is given, can be called later using \texttt{\textbackslash slineLineNameLineSecondName}, otherwise~— \texttt{\textbackslash slineLineName}.
+
+\subsubsection{\textbackslash drawUnitRay[RayName]\{LineName\}}
+
+ Draws a ray of unit length with colors and labels based on the line of the same name in the main diagram.
+
+ \texttt{RayName}~— optional ray name.
+
+ \texttt{LineName}~— name of the line to reference in the main diagram.
+
+ If a name is given, can be called later using \texttt{\textbackslash urayLineNameRayName}, otherwise~— \texttt{\textbackslash urayLineName}.
+
+%\subsubsection{\textbackslash drawProportionalRay\{LineName\}}
+
+% Draws a ray.
+
+% \texttt{LineName}~— name of the line to reference in the main diagram.
+
+% Can be called later using \texttt{\textbackslash prayAngleName}.
+
+%\drawSizedRay
+
+%\drawUnitIndLine
+
+%\drawProportionalIndLine
+
+\subsubsection{\textbackslash drawRightAngle, \textbackslash drawTwoRightAngles}
+ \defineNewPicture{textLabels := false;}
+ Draws a right angle \drawRightAngle\ and two right angles \drawTwoRightAngles\ respectively.
+
+ More broadly, following generic right angles are defined: \texttt{rightAngleNE} \drawAngle{rightAngleNE}, \texttt{rightAngleES} \drawAngle{rightAngleES}, \texttt{rightAngleSW} \drawAngle{rightAngleSW}, \texttt{rightAngleWN} \drawAngle{rightAngleWN}.
+
+ If you choose to go with angles instead of arcs for right angles (\ref{autoRightAngles}, \ref{byConsiderAngleRight}), adding \texttt{autoRightAngles := true;} to \texttt{\textbackslash mpPre} \ref{defineNewPicture} won't change the appearance of these angles, since they are defined before \texttt{\textbackslash mpPre} commands are executed. Instead, these angles should be redefined. There's a special command for this purpose: \texttt{byDefineGenericRightAngles(true);} where \texttt{true} tells this command to run \texttt{byConsiderAngleRight} \ref{byConsiderAngleRight} for each of the generic right angles.
+
+\subsubsection{\textbackslash drawAngle\{AngleName\}}\label{drawAngle}
+
+ Draws an angle.
+
+ \defineNewPicture{
+ pair A, B, C, D, E, O;
+ O := (0, 0);
+ A := (2cm, 0);
+ B := A rotated (360/5);
+ C := B rotated (360/5);
+ D := C rotated (360/5);
+ E := D rotated (360/5);
+ byAngleDefine(A, O, B, byred, 0);
+ byAngleDefine(B, O, C, byyellow, 0);
+ byAngleDefine(C, O, D, byblue, 0);
+ byAngleDefine(D, O, E, byblack, 0);
+ byAngleDefine(E, O, A, byblack, 1);
+ byLineDefine(A, O, byblack, 0, 0);
+ }
+
+ \texttt{AngleName}~— name of the angle to reference in the main diagram.
+ When just one letter is used, all the angles defined at this point will be drawn, e.g. \drawAngle{O}. When used to reference one single defined angle, the direction doesn't matter.
+ E.g. \texttt{AOB} and \texttt{BOA} will return the same picture \drawAngle{AOB}.
+ When used to reference an angle composed of several defined angles, the name sould be given counterclockwise.
+ E.g. \texttt{\textbackslash drawAngle\{AOD\}} is \drawAngle{AOD} and \texttt{\textbackslash drawAngle\{DOA\}} is \drawAngle{DOA}.
+
+ Can be called later using \texttt{\textbackslash angleAngleName}.
+
+\subsubsection{\textbackslash drawAngleWithSides \{AngleName\}}
+
+ \defineNewPicture{
+ pair A, B, C, D;
+ A := (1/2cm, 2cm);
+ B := (0, 0);
+ C := (3cm, 0);
+ D := 1/2[A, C];
+ byAngleDefine(A, B, D, byyellow, 1);
+ byAngleDefine(D, B, C, byyellow, 0);
+ byLineDefine(A, B, byred, 1, 0);
+ byLineDefine(B, C, byblue, 0, 0);
+ draw byNamedAngleResized();
+ draw byNamedLineSeq(0)(AB, BC);
+ }
+
+ Draws an angle and sections of its adjacent sides placed if angle portion style is not \texttt{0}. E.g., this angle \drawAngle{B} is drawn with \texttt{\textbackslash drawAngle\{B\}}, and this angle \drawAngleWithSides{B} is drawn with \texttt{\textbackslash drawAngleWithSides\{B\}}.
+
+ \texttt{AngleName}~— the same as in \ref{drawAngle}.
+
+ Can be called later using \texttt{\textbackslash anglewithsidesAngleName}.
+
+\subsubsection{\textbackslash drawPolygon[verticalAlignment][PolygonNewName] \{Poly\-gon\-Na\-me\}}
+
+ Draws a polygon.
+
+ \texttt{verticalAlignment}~— optional vertical alignment declaration. \texttt{middle} to align the picture with the middle of the line, anything else for bottom alignment.
+
+ \texttt{PolygonNewName}~— optional polygon name.
+
+ \texttt{PolygonName}~— name of the polygon to reference in the main diagram.
+
+ If a name is given, can be called later using \texttt{\textbackslash PolygonNewName}, otherwise~— \texttt{\textbackslash polygonPolygonName}.
+
+\subsubsection{\textbackslash drawCircle[verticalAlignment][scaleFactor]\{CircleName\}}
+
+ Draws a circle.
+
+ \texttt{verticalAlignment}~— optional vertical alignment declaration. \texttt{middle} to align the picture with the middle of the line, anything else for bottom alignment.
+
+ \texttt{scaleFactor}~— optional scale factor for the circle to replace the default offspring picture scale factor.
+
+ \texttt{CircleName}~— name of the circle to reference in the main diagram.
+
+ Can be called later using \texttt{\textbackslash circleCircleName}.
+
+\subsubsection{\textbackslash drawArc[verticalAlignment][scaleFactor]\{ArcName\}}
+
+ Draws an arc.
+
+ \texttt{verticalAlignment}~— optional vertical alignment declaration. \texttt{middle} to align the picture with the middle of the line, anything else for bottom alignment.
+
+ \texttt{scaleFactor}~— optional scale factor for the arc to replace the default offspring picture scale factor.
+
+ \texttt{ArcName}~— name of the arc to reference in the main diagram.
+
+ Can be called later using \texttt{\textbackslash arcCircleName}.
+
+\subsubsection{\textbackslash drawLine[verticalAlignment][LineNewName]\{LineName\}}
+
+ Draws a line.
+
+ \texttt{verticalAlignment}~— optional vertical alignment declaration. \texttt{middle} to align the picture with the middle of the line, anything else for bottom alignment.
+
+ \texttt{LineNewName}~— optional line name.
+
+ \texttt{LineName}~— name of the line to reference in the main diagram.
+
+ If a name is given, can be called later using \texttt{\textbackslash LineNewName}, otherwise~— \texttt{\textbackslash lineLineName}.
+
+\subsubsection{\textbackslash drawPointM\{PointName\}}
+
+ \defineNewPicture{
+ pair A, B, C, D;
+ A := (0, 0);
+ B := dir(15)*cm;
+ C := B rotated 120;
+ D := C rotated 120;
+ byLineDefine(A, B, byred, 0, 0);
+ byLineDefine(A, C, byyellow, 0, 0);
+ byLineDefine(A, D, byblue, 0, 0);
+ draw byNamedLine(AD);
+ draw byNamedLineSeq(0)(AB,AC);
+ draw byPointMark(A, byblack, 1);
+ }
+
+ Draws a point, depicted as a small circle \drawPointM{A}.
+
+ \texttt{PointName}~— name of the point to reference in the main diagram.
+
+ Can be called later using \texttt{\textbackslash pointmPointName}.
+
+\subsubsection{\textbackslash drawPointL[verticalAlignment][LinesToOmit]\{PointName\}}\label{drawPointL}
+
+ Draws a point, depicted as line segments starting/ending in it \drawPointL{A}. Only the lines which were actually drawn, not just defined, are used. Line segments' length is controlled by \texttt{pointLinesSize} \ref{pointLinesSize}.
+
+ \texttt{verticalAlignment}~— optional vertical alignment declaration. \texttt{middle} to align the picture with the middle of the line, anything else for bottom alignment.
+
+ \texttt{LinesToOmit}~— a comma-separated list lines, segments of which not to draw.
+
+ \texttt{PointName}~— name of the point to reference in the main diagram.
+
+ If a list of lines to omit is given, can be called later using \texttt{\textbackslash pointl\-Point\-Name\-Minus\-Lines\-To\-Omit}, otherwise~— \texttt{\textbackslash pointlPointName}.
+
+\subsubsection{\textbackslash drawPoint[verticalAlignment][LinesToOmit]\{PointName\}}
+
+ Draws a point, depicted as line segments starting/ending in it with a point mark if defined \drawPoint{A}. Only the lines which were actually drawn, not just defined, are used.
+
+ Arguments are the same as in \texttt{drawPointL} \ref{drawPointL}.
+
+ If a list of lines to omit is given, can be called later using \texttt{\textbackslash point\-Point\-Name\-Minus\-Lines\-To\-Omit}, otherwise~— \texttt{\textbackslash pointPointName}.
+
+%\drawMagnitude
+
+\bibliographystyle{plain}
+\bibliography{byrne-latex}
+
+\end{document} \ No newline at end of file
diff --git a/graphics/metapost/contrib/macros/byrne/byrne.mp b/graphics/metapost/contrib/macros/byrne/byrne.mp
new file mode 100644
index 0000000000..115998e257
--- /dev/null
+++ b/graphics/metapost/contrib/macros/byrne/byrne.mp
@@ -0,0 +1,3852 @@
+% byrne-euclid 0.2.2
+% MetaPost library that implements most of the graphical
+% features present in Oliver Byrne's version of Euclid's "Elements"
+% Copyright 2022 Sergey Slyusarev
+%
+% This program is free software: you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation, either version 3 of the License, or
+% (at your option) any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+%
+% Here we define some things of general interest
+%
+
+pi := 3.1415926;
+radian := 180/pi;
+lineWidth := 2pt;
+lineWidthThin := 1pt;
+lineWidthHair := 1/2pt;
+pointMarkSize := 4pt;
+pointLinesSize := 1/2cm;
+defaultScaleFactor := 1;
+angleSize := 1cm;
+angleScale := 1;
+globalRotation := 0;
+magnitudeSize := 5/18cm;
+magnitudeScale := 1;
+magnitudeGap := 3/2lineWidth;
+markLength := 3lineWidth;
+rayExtension := 1/3cm;
+
+boolean textLabels, ghostLines, autoRightAngles, omitDuplicateTextLabels, autoLabelingMode, mainPictureMode;
+
+textLabels := false;
+ghostLines := true;
+autoRightAngles := false;
+omitDuplicateTextLabels := false;
+textLabelShift := lineWidth;
+autoLabelingMode := false;
+mainPictureMode := false;
+
+boolean solidAngleMode;
+
+solidAngleMode := false;
+
+numeric dpLength[];
+dpLength0 := 2lineWidth;
+dpLength1 := 2lineWidth;
+
+vardef sin primary x = (sind(x*radian)) enddef;
+
+vardef cos primary x = (cosd(x*radian)) enddef;
+
+vardef arcsind primary x = angle((1+-+x,x)) enddef;
+
+vardef arccosd primary x = angle((x,1+-+x)) enddef;
+
+vardef pathToString (expr p) =
+save outputString, endpoint, i;
+ string outputString;
+ if (length(p) > 0):
+ outputString :=
+ "(" & decimal(xpart(point 0 of p)) & ", " & decimal(ypart(point 0 of p)) & ")"
+ & ".. controls (" & decimal(xpart(postcontrol 0 of p)) & ", " & decimal(ypart(postcontrol 0 of p)) & ") and "
+ & "(" & decimal(xpart(precontrol 1 of p)) & ", " & decimal(ypart(precontrol 1 of p)) & ")";
+ if (cycle p):
+ endpoint := length(p) - 1;
+ else:
+ endpoint := length(p);
+ fi;
+ for i := 1 step 1 until endpoint:
+ outputString := outputString
+ & ".. (" & decimal(xpart(point i of p)) & ", " & decimal(ypart(point i of p)) & ")";
+ if ((i < length(p)) or (cycle p)):
+ outputString := outputString
+ & ".. controls (" & decimal(xpart(postcontrol i of p)) & ", " & decimal(ypart(postcontrol i of p)) & ") and "
+ & "(" & decimal(xpart(precontrol i + 1 of p)) & ", " & decimal(ypart(precontrol i + 1 of p)) & ")";
+ fi;
+ endfor;
+ if (cycle p):
+ outputString := outputString & " .. cycle";
+ fi;
+ else:
+ outputString :=
+ "(" & decimal(xpart(point 0 of p)) & ", " & decimal(ypart(point 0 of p)) & ")";
+ fi;
+ outputString
+enddef;
+
+color byred, byblue, byyellow, byblack, bygrey,
+ byredN, byblueN, byyellowN, byblackN, bygreyN,
+ outlineColor.byredN, outlineColor.byblueN, outlineColor.byyellowN, outlineColor.byblackN, outlineColor.bygreyN,
+ bytransparent, byDefaultAngleOptionalColor;
+byred := (.85, .3, .1);
+byblue := (.15, .35, .6);
+byyellow := (.95, .7, 0.1);
+byblack := black;
+bygrey := (.8, .8, .8);
+byredN := white;
+byblueN := white;
+byyellowN := white;
+byblackN := white;
+bygreyN := white;
+outlineColor.byredN := byred;
+outlineColor.byblueN := byblue;
+outlineColor.byyellowN := byyellow;
+outlineColor.byblackN := byblack;
+outlineColor.bygreyN := bygrey;
+bytransparent := 0.99white;
+
+byDefaultAngleOptionalColor := white;
+
+linecap := butt;
+
+vardef typeOf (expr v) =
+ save determinedType;
+ string determinedType;
+ determinedType := "undefined";
+ if (boolean v):
+ determinedType := "boolean";
+ elseif (cmykcolor v):
+ determinedType := "cmykcolor";
+ elseif (color v):
+ determinedType := "color";
+ elseif (rgbcolor v):
+ determinedType := "rgbcolor";
+ elseif (numeric v):
+ determinedType := "numeric";
+ elseif (pair v):
+ determinedType := "pair";
+ elseif (path v):
+ determinedType := "path";
+ elseif (pen v):
+ determinedType := "pen";
+ elseif (picture v):
+ determinedType := "picture";
+ elseif (string v):
+ determinedType := "string";
+ elseif (transform v):
+ determinedType := "transform";
+ fi;
+ determinedType
+enddef;
+
+vardef sign (expr x) =
+ if x > 0: 1 fi
+ if x < 0: -1 fi
+ if x = 0: 1 fi
+enddef;
+
+vardef colorLightness (expr col) =
+save r, g, b;
+ if color col:
+ r := redpart(col);
+ g := greenpart(col);
+ b := bluepart(col);
+ elseif cmykcolor col:
+ r := (1 - cyanpart(col)) * (1 - blackpart(col));
+ g := (1 - magentapart(col)) * (1 - blackpart(col));
+ b := (1 - yellowpart(col)) * (1 - blackpart(col));
+ fi;
+ (0.2126*r) + (0.7152*g) + (0.0722*b) % from here https://en.wikipedia.org/wiki/Relative_luminance but it doesn't work this way; to be corrected
+enddef;
+
+vardef isWhite (expr col) =
+ if (colorLightness(col) = 1): % arbitrary value
+ true
+ else:
+ false
+ fi
+enddef;
+
+vardef isLight (expr col) =
+ if (colorLightness(col) > 0.95): % arbitrary value
+ true
+ else:
+ false
+ fi
+enddef;
+
+vardef defineColor@#(expr col) =
+ if (typeOf(col) = "color"):
+ color @#;
+ else:
+ cmykcolor @#;
+ fi;
+ @# := col;
+enddef;
+
+vardef selectOutlineColor@# =
+ if (typeOf(outlineColor.@#) = "color") or (typeOf(outlineColor.@#) = "cmykcolor"):
+ outlineColor.@#
+ else:
+ black
+ fi
+enddef;
+
+defineColor.oiBlack((0, 0, 0));
+defineColor.oiOrange((0.9,0.6,0));
+defineColor.oiSkyBlue((0.35,0.7,0.9));
+defineColor.oiGreen((0,0.6,0.5));
+defineColor.oiYellow((0.95,0.9,0.25));
+defineColor.oiBlue((0,0.45,0.7));
+defineColor.oiVermillion((0.8,0.4,0));
+defineColor.oiPurple((0.8,0.6,0.7));
+
+% CMYK variants
+%defineColor.oiBlack((0,0,0,1));
+%defineColor.oiOrange((0,0.5,1,0));
+%defineColor.oiSkyBlue((0.8,0,0,0));
+%defineColor.oiGreen((0.97,0,0.75,0));
+%defineColor.oiYellow((0.1,0.05,0.9,0));
+%defineColor.oiBlue((1,0.5,0,0));
+%defineColor.oiVermillion((0,0.8,1,0));
+%defineColor.oiPurple((0.1,0.7,0,0));
+
+vardef cycleval (expr v, l) =
+ save rv;
+ numeric rv;
+ if (l > 0):
+ if ((v mod l) < 0):
+ rv := l - (v mod l);
+ else:
+ rv := (v mod l);
+ fi;
+ else:
+ rv := 0;
+ fi;
+ rv
+enddef;
+
+vardef angleOpticalScale (expr v) =
+ save va;
+ numeric va;
+ if (v > 60):
+ va := 60;
+ else:
+ va := v;
+ fi;
+ ((va/60)**(-1/2))
+enddef;
+
+vardef distanceToLine (expr givenPoint, givenLine) =
+ save p;
+ pair p[];
+ p0 := point 0 of givenLine;
+ p1 := point 0 of reverse(givenLine);
+ p2 - givenPoint = whatever * ((p1-p0) rotated 90);
+ p2 = whatever[p0, p1];
+ p3 := p2;
+ arclength(givenPoint -- p3)
+enddef;
+
+vardef angleValue (expr a, b, c) =
+ save v;
+ numeric v;
+ v := angle(a-b) - angle(c-b);
+ if (v > 180): v := v - 360; fi;
+ if (v < -180): v := v + 360; fi;
+ v
+enddef;
+
+vardef lineThickness (expr th) =
+ if (th = 0):
+ lineWidth
+ elseif (th = 1):
+ lineWidthThin
+ elseif (th = 2):
+ lineWidthHair
+ else:
+ lineWidth
+ fi
+enddef;
+
+vardef byDashPattern (expr l, dp) =
+ save d, n;
+ numeric d[], n;
+ n := ceiling(l/(1/3dpLength[dp]));
+ if (n mod 3) <> 2:
+ n := n - (n mod 3) + 2;
+ fi;
+ d1 := 2(l/n);
+ d2 := l/n;
+ dashpattern (on d1 off d2)
+enddef;
+
+def startTempScale (expr tmpScale) =
+ begingroup
+ save scaleFactor;
+ scaleFactor := tmpScale;
+enddef;
+
+def stopTempScale =
+ endgroup
+enddef;
+
+def startTempAngleScale (expr tmpAngleScale) =
+ begingroup
+ save angleScale;
+ angleScale := tmpAngleScale;
+enddef;
+
+def stopTempAngleScale =
+ endgroup
+enddef;
+
+def startGlobalRotation (expr ang) =
+ begingroup
+ save globalRotation;
+ globalRotation := ang;
+enddef;
+
+def stopGlobalRotation =
+ endgroup
+enddef;
+
+def startAutoLabeling =
+ begingroup
+ save autoLabelingMode;
+ boolean autoLabelingMode;
+ autoLabelingMode := true;
+enddef;
+
+def stopAutoLabeling =
+ endgroup
+enddef;
+
+def startOffspringPictureMode =
+ begingroup
+ save uniqueTextLabels, omitDuplicateTextLabels;
+ string uniqueTextLabels;
+ boolean omitDuplicateTextLabels;
+ omitDuplicateTextLabels := true;
+ uniqueTextLabels := "";
+enddef;
+
+def stopOffspringPictureMode =
+ endgroup
+enddef;
+
+def startMainPictureMode =
+ begingroup
+ save mainPictureMode, ghostPicture;
+ boolean mainPictureMode;
+ picture ghostPicture;
+ ghostPicture := image();
+ mainPictureMode := true;
+enddef;
+
+def stopMainPictureMode =
+ endgroup
+enddef;
+
+picture ghostPicture;
+ghostPicture := image();
+
+%
+% This section is devoted to lists
+%
+
+vardef appendList (suffix listName)(expr valueToAdd, whereToAdd, omitDuplicates) =
+ if (not string listName) or (unknown listName):
+ string listName;
+ listName := "";
+ fi;
+ if length(listName) = 0:
+ listName := valueToAdd;
+ else:
+ save valueExists;
+ boolean valueExists;
+ valueExists := false;
+ if omitDuplicates:
+ valueExists := isInList (valueToAdd, listName);
+ fi;
+ if not valueExists:
+ if (whereToAdd = 1):
+ listName := listName & ", " & valueToAdd;
+ else:
+ listName := valueToAdd & ", " & listName;
+ fi;
+ fi;
+ fi;
+enddef;
+
+vardef isInList (expr valueToLookFor)(suffix listName) =
+ save rv, i;
+ boolean rv;
+ rv := false;
+ if (not string listName) or (unknown listName):
+ string listName;
+ listName := "";
+ fi;
+ forsuffixes i=scantokens(listName):
+ if (str i = valueToLookFor):
+ rv := true;
+ fi;
+ endfor;
+ rv
+enddef;
+
+vardef setAttribute@#(expr attrGenus, attrSpecies, attrName, attrValue) =
+ save finName;
+ string finName;
+ if not string scantokens(attrGenus & "Synonym").scantokens(attrName):
+ finName := attrName;
+ else:
+ finName := scantokens(attrGenus & "Synonym").scantokens(attrName);
+ if (boolean scantokens(attrGenus & "SynonymPartial").scantokens(attrName)):
+ if scantokens(attrGenus & "SynonymPartial").scantokens(attrName):
+ finName := attrName;
+ fi;
+ fi;
+ fi;
+ if str @# = "":
+ scantokens(typeOf(attrValue)) scantokens(attrGenus & attrSpecies).scantokens(finName);
+ elseif (typeOf(scantokens(attrGenus & attrSpecies).scantokens(finName)0) <> typeOf(attrValue)):
+ scantokens(typeOf(attrValue)) scantokens(attrGenus & attrSpecies).scantokens(finName)[];
+ fi;
+ scantokens(attrGenus & attrSpecies).scantokens(finName)@# := attrValue;
+enddef;
+
+vardef getAttribute@#(expr attrGenus, attrSpecies, attrName) =
+ save finName;
+ string finName;
+ if not string scantokens(attrGenus & "Synonym").scantokens(attrName):
+ finName := attrName;
+ else:
+ finName := scantokens(attrGenus & "Synonym").scantokens(attrName);
+ if (boolean scantokens(attrGenus & "SynonymPartial").scantokens(attrName)):
+ if scantokens(attrGenus & "SynonymPartial").scantokens(attrName):
+ if known scantokens(attrGenus & attrSpecies).scantokens(attrName)@#:
+ finName := attrName;
+ fi;
+ fi;
+ fi;
+ fi;
+ scantokens(attrGenus & attrSpecies).scantokens(finName)@#
+enddef;
+
+vardef attributeExists (expr attrGenus, attrSpecies, attrName) =
+ save rv;
+ boolean rv;
+ if known scantokens(attrGenus & attrSpecies).scantokens(attrName):
+ rv := true;
+ else:
+ rv := false;
+ fi;
+ rv
+enddef;
+
+setAttribute("line", "Color", "noLine", white);
+setAttribute("line", "Dashed", "noLine", 0);
+setAttribute("line", "EndAName", "noLine", "noLine");
+setAttribute("line", "EndBName", "noLine", "noLine");
+setAttribute("line", "EndA", "noLine", inf);
+setAttribute("line", "EndB", "noLine", inf);
+setAttribute("line", "Synonym", "noLine", "noLine");
+
+setAttribute("line", "Color", "dummyLine", bygrey);
+setAttribute("line", "Dashed", "dummyLine", 0);
+setAttribute("line", "Thin", "dummyLine", 1);
+
+%
+% Some general 3D stuff
+%
+
+color projectionAngle;
+projectionAngle := (0, 0, 0);
+
+color rotationAxisB.X, rotationAxisE.X, rotationAxisB.Y, rotationAxisE.Y, rotationAxisB.Z, rotationAxisE.Z;
+string rotationAxisPart.X, rotationAxisPart.Y, rotationAxisPart.Z;
+rotationAxisB.X := (0, 0, 0);
+rotationAxisE.X := (1, 0, 0);
+rotationAxisPart.X := "redpart";
+rotationAxisB.Y := (0, 0, 0);
+rotationAxisE.Y := (0, 1, 0);
+rotationAxisPart.Y := "greenpart";
+rotationAxisB.Z := (0, 0, 0);
+rotationAxisE.Z := (0, 0, 1);
+rotationAxisPart.Z := "bluepart";
+
+primarydef somecolor colorrotated someangle =
+ rotateColor(somecolor, someangle)
+enddef;
+
+% Rotation order can be selected like this rotateColor.XYZ,
+% or by setting defaultRotationOrder
+
+string defaultRotationOrder;
+defaultRotationOrder := "ZYX";
+
+vardef rotateColor@#(expr somecolor, someangle) =
+ save rotationOrder, argumentString, rv;
+ string rotationOrder[], argumentString;
+ color rv;
+ argumentString := str @#;
+ if argumentString = "":
+ argumentString := defaultRotationOrder;
+ fi;
+ for i := 0 step 1 until length(argumentString) - 1:
+ rotationOrder[i] = substring (i, i + 1) of argumentString;
+ endfor;
+ rv := somecolor;
+ rv := byRotateAroundAxis(
+ rotationAxisB.scantokens(rotationOrder0),
+ rotationAxisE.scantokens(rotationOrder0),
+ scantokens(rotationAxisPart.scantokens(rotationOrder0))(someangle), rv);
+ rv := byRotateAroundAxis(
+ rotationAxisB.scantokens(rotationOrder1),
+ rotationAxisE.scantokens(rotationOrder1),
+ scantokens(rotationAxisPart.scantokens(rotationOrder1))(someangle), rv);
+ rv := byRotateAroundAxis(
+ rotationAxisB.scantokens(rotationOrder2),
+ rotationAxisE.scantokens(rotationOrder2),
+ scantokens(rotationAxisPart.scantokens(rotationOrder2))(someangle), rv);
+ rv
+enddef;
+
+primarydef colorone crossproduct colortwo =
+begingroup
+ save xp, yp, zp;
+ numeric xp[], yp[], zp[];
+ xp1 := (redpart colorone)/cm;
+ yp1 := (greenpart colorone)/cm;
+ zp1 := (bluepart colorone)/cm;
+ xp2 := (redpart colortwo)/cm;
+ yp2 := (greenpart colortwo)/cm;
+ zp2 := (bluepart colortwo)/cm;
+ xp3 := ((yp1*zp2) - (zp1*yp2))*cm;
+ yp3 := ((zp1*xp2) - (xp1*zp2))*cm;
+ zp3 := ((xp1*yp2) - (yp1*xp2))*cm;
+ (xp3, yp3, zp3)
+endgroup
+enddef;
+
+primarydef colorone dotprodXYZ colortwo =
+begingroup
+ save xp, yp, zp;
+ numeric xp[], yp[], zp[];
+ xp1 := (redpart colorone);
+ yp1 := (greenpart colorone);
+ zp1 := (bluepart colorone);
+ xp2 := (redpart colortwo);
+ yp2 := (greenpart colortwo);
+ zp2 := (bluepart colortwo);
+ xp1*xp2 + yp1*yp2 + zp1*zp2
+endgroup
+enddef;
+
+vardef isInPlane (expr colPoint, colPlaneA, colPlaneB, colPlaneC) =
+ save vecsToCompare, rv;
+ color vecsToCompare[];
+ boolean rv;
+ rv := false;
+ if (colPoint = colPlaneA)
+ or (colPoint = colPlaneB)
+ or (colPoint = colPlaneC):
+ rv := true;
+ else:
+ vecsToCompare1 := colPlaneA-colPlaneB;
+ vecsToCompare2 := colPlaneC-colPlaneB;
+ vecsToCompare3 := colPoint-colPlaneB;
+ fi;
+ if not rv:
+ if ((absXYZ(unitvectorXYZ(vecsToCompare1) - unitvectorXYZ(vecsToCompare3)) < 1/100)
+ or (absXYZ(unitvectorXYZ(vecsToCompare1) + unitvectorXYZ(vecsToCompare3)) < 1/100)
+ or (absXYZ(unitvectorXYZ(vecsToCompare2) - unitvectorXYZ(vecsToCompare3)) < 1/100)
+ or (absXYZ(unitvectorXYZ(vecsToCompare2) + unitvectorXYZ(vecsToCompare3)) < 1/100)):
+ rv := true;
+ else:
+ vecsToCompare4 := unitvectorXYZ(vecsToCompare1 crossproduct vecsToCompare2);
+ vecsToCompare5 := unitvectorXYZ(vecsToCompare3 crossproduct vecsToCompare2);
+ if ((absXYZ(vecsToCompare4 - vecsToCompare5) < 1/100)
+ or (absXYZ(vecsToCompare4 + vecsToCompare5) < 1/100)):
+ rv := true;
+ else:
+ rv := false;
+ fi;
+ fi;
+ fi;
+ rv
+enddef;
+
+vardef unitvectorXYZ (expr somecolor) =
+ save vecLength;
+ numeric vecLength;
+ vecLength := absXYZ(somecolor);
+ if (vecLength > 0):
+ somecolor/vecLength
+ else:
+ errmessage("Can't construct a unit vector from a zero-length vector");
+ fi
+enddef;
+
+vardef absXYZ (expr somecolor) =
+ (sqrt(
+ ((redpart somecolor)/1cm)**2
+ + ((greenpart somecolor)/1cm)**2
+ + ((bluepart somecolor)/1cm)**2)*1cm)
+enddef;
+
+vardef lineAndPlaneIntersection (expr lineA, lineB, planeA, planeB, planeC) =
+ save planeNormal, planeOrigin, lineD;
+ color planeNormal, planeOrigin;
+ numeric lineD;
+ planeNormal := unitvectorXYZ((planeA-planeB) crossproduct (planeC-planeB));
+ planeOrigin := planeB;
+ lineD := ((planeNormal/cm) dotprodXYZ ((planeOrigin - lineA)/cm))
+ /((planeNormal/cm) dotprodXYZ ((lineB - lineA)/cm));
+ lineA + ((lineB-lineA)*lineD)
+enddef;
+
+vardef spaceRotated (suffix somepath)(expr someangle) =
+ save rv, tv, spacepoint, op, rp, tp;
+ path rv, tv;
+ color spacepoint[];
+ pair op[], rp[], tp[];
+ if (typeOf(thirdDimension.somepath) <> "path"):
+ path thirdDimension.somepath;
+ thirdDimension.somepath := somepath scaled 0;
+ fi;
+ for i := 0 step 1 until length(somepath):
+ op0 := point i of somepath;
+ spacepoint0 :=
+ (xpart(op0), ypart(op0),
+ xpart(point i of thirdDimension.somepath)
+ ) colorrotated someangle;
+ rp0 := (redpart(spacepoint0), greenpart(spacepoint0));
+ tp0 := (bluepart(spacepoint0), 0);
+ if (i = 0):
+ rv := rp0;
+ tv := tp0;
+ else:
+ op1 := postcontrol (i-1) of somepath;
+ spacepoint1 :=
+ (xpart(op1), ypart(op1),
+ xpart(postcontrol (i-1) of thirdDimension.somepath)
+ ) colorrotated someangle;
+ rp1 := (redpart(spacepoint1), greenpart(spacepoint1));
+ tp1 := (bluepart(spacepoint1), 0);
+ op2 := precontrol i of somepath;
+ spacepoint2 :=
+ (xpart(op2), ypart(op2),
+ xpart(precontrol i of thirdDimension.somepath)
+ ) colorrotated someangle;
+ rp2 := (redpart(spacepoint2), greenpart(spacepoint2));
+ tp2 := (bluepart(spacepoint2), 0);
+ rv := rv .. controls rp1 and rp2 ..
+ if ((i < length(somepath)) or (not cycle somepath)):
+ rp0
+ else:
+ cycle
+ fi;
+ tv := tv .. controls tp1 and tp2 ..
+ if ((i < length(somepath)) or (not cycle somepath)):
+ tp0
+ else:
+ cycle
+ fi;
+ fi;
+ endfor;
+ thirdDimension.somepath := tv;
+ rv
+enddef;
+
+vardef bySetProjection@#(expr xa, ya, za) =
+ projectionAngle := (xa, ya, za);
+ byRotatePoints@#(xa, ya, za, false)();
+ if str @# <> "":
+ defaultRotationOrder := str @#;
+ fi;
+enddef;
+
+vardef byPutPointsInSpace (text pL) =
+ byRotatePoints(0, 0, 0, true)(pL);
+enddef;
+
+% Gets a either a 2d or a 3d point and returns a 3d point
+
+vardef byGetPointXYZ (suffix givenPoint) =
+ if (typeOf(givenPoint) = "color"):
+ givenPoint
+ elseif (typeOf(pointXYZ.givenPoint) = "color"):
+ pointXYZ.givenPoint
+ else:
+ errmessage("Point " & str givenPoint & " has no representation in space");
+ fi
+enddef;
+
+vardef byRotateAroundAxis (expr lineEndA, lineEndB, a, pointA) =
+ save vecA, vecB, rV, q;
+ color vecA, vecB, rV;
+ cmykcolor q[];
+ vecA := pointA - lineEndA;
+ vecB := unitvectorXYZ(lineEndB - lineEndA);
+ q1 := (0, redpart(vecA), greenpart(vecA), bluepart(vecA));
+ q2 := (cosd(a/2), sind(a/2)*redpart(vecB), sind(a/2)*greenpart(vecB), sind(a/2)*bluepart(vecB));
+ q3 := (cyanpart(q2), -magentapart(q2), -yellowpart(q2), -blackpart(q2));
+ q4 := (q2 hamiltonProduct q1) hamiltonProduct q3;
+ rV := (magentapart(q4), yellowpart(q4), blackpart(q4)) + lineEndA;
+ rV
+enddef;
+
+vardef byRotatePointsAroundAxis (suffix lineEndA, lineEndB)(expr a)(text pointsList) =
+ save lineEndAxyz, lineEndBxyz, pN;
+ color lineEndAxyz, lineEndBxyz;
+ if (typeOf(lineEndA) = "color"):
+ lineEndAxyz := lineEndA;
+ else:
+ byPutPointsInSpace(lineEndA);
+ lineEndAxyz := pointXYZ.lineEndA;
+ fi;
+ if (typeOf(lineEndB) = "color"):
+ lineEndBxyz := lineEndB;
+ else:
+ byPutPointsInSpace(lineEndB);
+ lineEndBxyz := pointXYZ.lineEndB;
+ fi;
+ forsuffixes pN := pointsList:
+ if (typeOf(pN) = "color"):
+ pN := byRotateAroundAxis(lineEndAxyz, lineEndBxyz, a, pN);
+ elseif (typeOf(pN) = "pair"):
+ byPutPointsInSpace(pN);
+ pointXYZ.pN := byRotateAroundAxis(lineEndAxyz, lineEndBxyz, a, pointXYZ.pN);
+ fi;
+ endfor;
+enddef;
+
+primarydef colorone hamiltonProduct colortwo =
+begingroup
+ save a, b, c, d;
+ numeric a[], b[], c[], d[];
+ a1 := cyanpart(colorone);
+ b1 := magentapart(colorone);
+ c1 := yellowpart(colorone);
+ d1 := blackpart(colorone);
+ a2 := cyanpart(colortwo);
+ b2 := magentapart(colortwo);
+ c2 := yellowpart(colortwo);
+ d2 := blackpart(colortwo);
+ (
+ (a1*a2) - (b1*b2) - (c1*c2) - (d1*d2),
+ (a1*b2) + (b1*a2) + (c1*d2) - (d1*c2),
+ (a1*c2) - (b1*d2) + (c1*a2) + (d1*b2),
+ (a1*d2) + (b1*c2) - (c1*b2) + (d1*a2)
+ )
+endgroup
+enddef;
+
+vardef isRightAngle (suffix a, b, c) =
+ save d, rv;
+ numeric d;
+ boolean rv;
+ if (attributeExists("point", "XYZ", str a)
+ and attributeExists("point", "XYZ", str b)
+ and attributeExists("point", "XYZ", str c)):
+ d := unitvectorXYZ(pointXYZ.a - pointXYZ.b) dotprodXYZ unitvectorXYZ(pointXYZ.c - pointXYZ.b);
+ else:
+ d := unitvector(a - b) dotprod unitvector(c - b);
+ fi;
+ if (abs(d) < 1/1000):
+ rv := true;
+ else:
+ rv := false;
+ fi;
+ rv
+enddef;
+
+%
+% This section is dedicated to lines
+%
+
+vardef byLineRender (expr a, b, col, dp, th, c, d, ct, dt, s, sf) =
+ save p, la, lineItself, lineBleeding, clippingPath, cutAngle, linePerp, lineStyShift, currentLineWidth, clippingPathPoint, aS, bS;
+ picture p;
+ path lineItself, lineBleeding, clippingPath;
+ pair cutAngle[], linePerp, lineStyShift, clippingPathPoint[], aS, bS;
+ la := angle(b-a);
+ aS := a*sf;
+ bS := b*sf;
+ lineStyShift := (0, 0);
+ currentLineWidth := lineThickness(th);
+ cutAngle1 := unitvector(b-a) rotated -90;
+ if (abs(c-a) > 0):
+ if (abs(unitvector(c-a)-unitvector(a-b)) > 1/100):
+ if (ct = 0):
+ cutAngle1 := unitvector(1/2[unitvector(b-a), unitvector(c-a)]);
+ elseif (ct = 1):
+ cutAngle1 := unitvector(1[unitvector(b-a), unitvector(c-a)]);
+ fi;
+ fi;
+ fi;
+ cutAngle2 := unitvector(a-b) rotated 90;
+ if (abs(d-b) > 0):
+ if (abs(unitvector(d-b)-unitvector(b-a)) > 1/100):
+ if (dt = 0):
+ cutAngle2 := unitvector(1/2[unitvector(a-b), unitvector(d-b)]);
+ elseif (dt = 1):
+ cutAngle2 := unitvector(1[unitvector(a-b), unitvector(d-b)]);
+ fi;
+ fi;
+ fi;
+ if (sign(ypart(cutAngle2 rotated -la)) <> sign(ypart(cutAngle1 rotated -la))):
+ cutAngle2 := cutAngle2 rotated 180;
+ fi;
+ lineItself := (a--b) scaled sf;
+ linePerp := unitvector((point 0 of lineItself)-(point 1 of lineItself)) rotated 90;
+ lineBleeding :=
+ ((point 0 of lineItself) shifted (unitvector((point 0 of lineItself) - (point 1 of lineItself)) scaled 2dpLength[dp])) --
+ lineItself -- ((point 1 of lineItself) shifted (unitvector((point 1 of lineItself) - (point 0 of lineItself)) scaled 2dpLength[dp]));
+ lineStyShift := (linePerp scaled (1/2currentLineWidth*s));
+ p := image(
+ pickup pencircle scaled currentLineWidth;
+ if (dp > 0):
+ draw (lineItself shifted lineStyShift) withcolor white;
+ draw (lineItself shifted lineStyShift) withcolor col
+ dashed byDashPattern(arclength(lineItself), dp);
+ draw (subpath(0, 1) of lineBleeding shifted lineStyShift) withcolor col;
+ draw (subpath(2, 3) of lineBleeding shifted lineStyShift) withcolor col;
+ else:
+ draw (lineBleeding shifted lineStyShift) withcolor col;
+ fi;
+ if (th < 0):
+ draw (lineBleeding shifted (lineStyShift + (linePerp scaled 1/4currentLineWidth))) withpen pencircle scaled 1/2currentLineWidth withcolor black;
+ fi;
+ );
+ clippingPathPoint1
+ = whatever[aS shifted (linePerp*1/2lineWidth) shifted lineStyShift,
+ bS shifted (linePerp*1/2lineWidth) shifted lineStyShift]
+ = whatever[aS, aS shifted cutAngle1];
+ clippingPathPoint2
+ = whatever[aS shifted (linePerp*-1/2lineWidth) shifted lineStyShift,
+ bS shifted (linePerp*-1/2lineWidth) shifted lineStyShift]
+ = whatever[aS, aS shifted cutAngle1];
+ clippingPathPoint3
+ = whatever[aS shifted (linePerp*-1/2lineWidth) shifted lineStyShift,
+ bS shifted (linePerp*-1/2lineWidth) shifted lineStyShift]
+ = whatever[bS, bS shifted cutAngle2];
+ clippingPathPoint4
+ = whatever[aS shifted (linePerp*1/2lineWidth) shifted lineStyShift,
+ bS shifted (linePerp*1/2lineWidth) shifted lineStyShift]
+ = whatever[bS, bS shifted cutAngle2];
+ clippingPath := clippingPathPoint1 -- clippingPathPoint2 -- clippingPathPoint3 -- clippingPathPoint4 -- cycle;
+ clip p to clippingPath;
+ if mainPictureMode and ghostLines:
+ save gP;
+ picture gP;
+ gP := ghostPicture;
+ ghostPicture := image(
+ draw gP;
+ begingroup;
+ save ghostLines;
+ boolean ghostLines;
+ ghostLines := false;
+ draw byLineRender (a, b, white, dp, 2, c, d, ct, dt, s, sf);
+ % draw byLineRender (a, b, col, dp, 2, c, d, ct, dt, s, sf);
+ endgroup;
+ );
+ fi;
+ p rotated globalRotation
+enddef;
+
+vardef byReturnLineLength (suffix a, b) =
+ if byIsPointInSpace(a, b):
+ absXYZ(pointXYZ.a - pointXYZ.b)
+ else:
+ abs(a-b)
+ fi
+enddef;
+
+vardef byLineDefine@#(suffix a, b)(expr col, dp, th) =
+if str @# = "":
+ byLineDefine.scantokens(str a & str b)(a, b)(col, dp, th);
+else:
+ save lA;
+ if mainPictureMode:
+ appendList(allLinesList, str @#, 1, true);
+ fi;
+ if byIsPointInSpace(a, b):
+ if (typeOf(a) = "pair") and (typeOf(b) = "pair"):
+ if (a <> b):
+ lA := angle(b-a);
+ else:
+ lA := 0;
+ fi;
+ else:
+ lA := 0;
+ fi;
+ else:
+ if (a <> b):
+ lA := angle(b-a);
+ else:
+ lA := 0;
+ fi;
+ fi;
+ setAttribute("line", "Angle", str @#, lA);
+ setAttribute("line", "Color", str @#, col);
+ setAttribute("line", "Dashed", str @#, dp);
+ setAttribute("line", "Thin", str @#, th);
+ setAttribute("line", "EndA", str @#, a);
+ setAttribute("line", "EndB", str @#, b);
+ setAttribute("line", "Shift", str @#, 0);
+ setAttribute("line", "DirA", str @#, a);
+ setAttribute("line", "DirB", str @#, b);
+ setAttribute("line", "EndAType", str @#, 0);
+ setAttribute("line", "EndBType", str @#, 0);
+ setAttribute("line", "EndAName", str @#, str a);
+ setAttribute("line", "EndBName", str @#, str b);
+ setAttribute("line", "DirAName", str @#, str a);
+ setAttribute("line", "DirBName", str @#, str b);
+ setAttribute("line", "UseLineLabel", str @#, false);
+ setAttribute("line", "Label", str @#, str @#);
+ setAttribute("line", "Synonym", str @#, str @#);
+fi;
+enddef;
+
+vardef byLineStylize (suffix c, d)(expr ct, dt, s) (suffix lineName) =
+ setAttribute("line", "Shift", str lineName, s);
+ setAttribute("line", "DirA", str lineName, c);
+ setAttribute("line", "DirB", str lineName, d);
+ setAttribute("line", "DirAName", str lineName, str c);
+ setAttribute("line", "DirBName", str lineName, str d);
+ setAttribute("line", "EndAType", str lineName, ct);
+ setAttribute("line", "EndBType", str lineName, dt);
+enddef;
+
+vardef byLine@#(suffix a, b)(expr col, dp, th) =
+if str @# = "":
+ byLine.scantokens(str a & str b)(a, b)(col, dp, th)
+else:
+ byLineDefine@#(a, b, col, dp, th);
+ byNamedLineFull(a, b, 0, 0, 0)(@#)
+fi
+enddef;
+
+vardef byLineFull@#(suffix a, b)(expr col, dp, th)(suffix c, d)(expr ct, dt, s) =
+if str @# = "":
+ byLineFull.scantokens(str a & str b)(a, b)(col, dp, th)(c, d)(ct, dt, s)
+else:
+ byLineDefine@#(a, b) (col, dp, th);
+ byLineStylize (c, d, ct, dt, s)(@#);
+ byNamedLine(@#)
+fi
+enddef;
+
+% This one's behaviour is slightly off, since it affects line label type
+
+vardef byLineWithName (suffix a, b)(expr col, dp, th)(suffix lineLabel) =
+ byLineDefine.lineLabel(a, b, col, dp, th);
+ setAttribute("line", "UseLineLabel", str lineLabel, true);
+ byNamedLineFull(a, b, 0, 0, 0)(lineLabel)
+enddef;
+
+vardef byNamedLineFull (expr c, d, ct, dt, s) (suffix lineName) =
+ if (mainPictureMode):
+ appendList(pointLinesList.scantokens(getAttribute("line", "EndAName", str lineName)), str lineName, 1, true);
+ appendList(pointLinesList.scantokens(getAttribute("line", "EndBName", str lineName)), str lineName, 1, true);
+ fi;
+ byLineRender(
+ scantokens(getAttribute("line", "EndAName", str lineName)),
+ scantokens(getAttribute("line", "EndBName", str lineName)),
+ getAttribute("line", "Color", str lineName),
+ getAttribute("line", "Dashed", str lineName),
+ getAttribute("line", "Thin", str lineName),
+ c, d, ct, dt, s, scaleFactor)
+enddef;
+
+vardef byNamedLine (text linesList) =
+ image(
+ forsuffixes lN=linesList:
+ draw byNamedLineFull(
+ scantokens(getAttribute("line", "DirAName", str lN)),
+ scantokens(getAttribute("line", "DirBName", str lN)),
+ getAttribute("line", "EndAType", str lN),
+ getAttribute("line", "EndBType", str lN),
+ getAttribute("line", "Shift", str lN))(lN);
+ endfor;
+ )
+enddef;
+
+vardef byNamedLineSeq (expr s)(text linesListRaw) =
+ save lAname, lBname, lShift, lName, i, j, k, l, m, n, c, d, prp, pointNames, linesList;
+ string lAname[], lBname[], lName[], c, d, pointNames, linesList;
+ numeric i, j, k, l, m, n, prp, lShift[];
+ linesList := byExpandLines(linesListRaw);
+ pointNames := "";
+ image(
+ i := -1;
+ forsuffixes lN=scantokens(linesList):
+ i := i + 1;
+ lAname[i] := getAttribute("line", "EndAName", str lN);
+ lBname[i] := getAttribute("line", "EndBName", str lN);
+ lShift[i] := getAttribute("line", "Shift", str lN);
+ lName[i] := str lN;
+ endfor;
+ if (i = 1):
+ i := i + 1;
+ lAname[i] := "noLine";
+ lBname[i] := "noLine";
+ lName[i] := "noLine";
+ fi;
+ if (i > 0):
+ for j := 0 step 1 until i:
+ k := cycleval (j - 1, i + 1);
+ l := cycleval (j + 1, i + 1);
+ m := 0;
+ n := 0;
+ if (lAname[k] = "noLine"):
+ k := cycleval (k - 1, i + 1);
+ m := 1;
+ fi;
+ if (lAname[l] = "noLine"):
+ l := cycleval (l + 1, i + 1);
+ n := 1;
+ fi;
+ c := lAname[j];
+ d := lBname[j];
+ prp := 0;
+ if (((lAname[j] = lAname[k]) or (lAname[j] = lBname[k]))
+ and (not ((m <> 0) and (lName[k] = lName[l])))) or
+ (((lBname[j] = lAname[l]) or (lBname[j] = lBname[l]))
+ and (not ((n <> 0) and (lName[k] = lName[l])))):
+ if (lAname[j] = lAname[k]):
+ if (m = 0): c := lBname[k]; fi;
+ elseif (lAname[j] = lBname[k]):
+ if (m = 0): c := lAname[k]; fi;
+ else:
+ m := 2;
+ fi;
+ if (lBname[j] = lAname[l]):
+ if (n = 0): d := lBname[l]; fi;
+ elseif (lBname[j] = lBname[l]):
+ if (n = 0): d := lAname[l]; fi;
+ else:
+ n := 2;
+ fi;
+ prp := 1;
+ else:
+ if (lAname[j] = lAname[l]):
+ if (n = 0): c := lBname[l]; fi;
+ elseif (lAname[j] = lBname[l]):
+ if (n = 0): c := lAname[l]; fi;
+ else:
+ n := 2;
+ fi;
+ if (lBname[j] = lAname[k]):
+ if (m = 0): d := lBname[k]; fi;
+ elseif (lBname[j] = lBname[k]):
+ if (m = 0): d := lAname[k]; fi;
+ else:
+ m := 2;
+ fi;
+ prp := -1;
+ fi;
+ if (lName[j] <> "noLine"):
+ if (prp = 1):
+ pointNames := pointNames & lAname[j] & ", ";
+ if (n = 2):
+ pointNames := pointNames & lBname[j] & ", noPoint, ";
+ fi;
+ elseif (prp = -1):
+ pointNames := pointNames & lBname[j] & ", ";
+ if (n = 2):
+ pointNames := pointNames & lAname[j] & ", noPoint, ";
+ fi;
+ fi;
+ lShift[j] := s*prp;
+ draw byNamedLineFull(scantokens(c), scantokens(d), 0, 0, -s*sign(prp))(scantokens(lName[j]));
+ else:
+ prp := -2;
+ fi;
+ endfor;
+ if (prp = 1) and (n <> 2):
+ pointNames := pointNames & lBname[i];
+ elseif (prp = -1) and (n <> 2):
+ pointNames := pointNames & lAname[i];
+ else:
+ pointNames := substring (0, length(pointNames)-2) of pointNames;
+ fi;
+ if (textLabels and autoLabelingMode):
+ draw byLabelsOnPolygon(scantokens pointNames)(1, s);
+ fi;
+ else:
+ forsuffixes lN=scantokens(linesList):
+ setAttribute("line", "Shift", str lN, s);
+ draw byNamedLineFull(
+ scantokens(getAttribute("line", "EndAName", str lN)),
+ scantokens(getAttribute("line", "EndBName", str lN)),
+ 0, 0, -s)(lN);
+ if (textLabels and autoLabelingMode):
+ draw byLabelsOnPolygon(scantokens (getAttribute("line", "EndAName", str lN) & ", " & getAttribute("line", "EndBName", str lN)))(1, s);
+ fi;
+ endfor;
+ fi;
+ )
+enddef;
+
+vardef byMarkLine(expr pos, col)(suffix lineName) =
+ setAttribute("mark", "Position", str lineName, pos);
+ setAttribute("mark", "Color", str lineName, col);
+ byNamedMarkLine(lineName)
+enddef;
+
+vardef byNamedMarkLine(suffix lineName) =
+ save p, q;
+ pair q[];
+ picture p;
+ p := image(
+ q0 := getAttribute("mark", "Position", str lineName)[
+ scantokens(getAttribute("line", "EndAName", str lineName)),
+ scantokens(getAttribute("line", "EndBName", str lineName))
+ ];
+ q1 := q0 shifted (dir(getAttribute("line", "Angle", str lineName) + 90) scaled 1/2markLength);
+ q2 := q0 shifted (dir(getAttribute("line", "Angle", str lineName) - 90) scaled 1/2markLength);
+ q3 := (dir(getAttribute("line", "Angle", str lineName) - 90) scaled (1/2lineWidth*getAttribute("line", "Shift", str lineName)));
+ draw (q1--q2) shifted q3 withpen pencircle scaled lineWidthThin withcolor getAttribute("mark", "Color", str lineName);
+ );
+ p rotated globalRotation
+enddef;
+
+vardef byFindLinePointedThere (expr a, b) =
+ save endA, endB, endAC, endBC, endAA, endBA, chosenLine, lL;
+ string chosenLine;
+ pair endA, endB, endAC, endBC, endAA, endBA;
+ numeric lL;
+ endA := scantokens(a);
+ endB := b;
+ if known pointLinesList.scantokens(a):
+ forsuffixes lL=scantokens(pointLinesList.scantokens(a)):
+ endAC := scantokens(getAttribute("line", "EndAName", str lL));
+ endBC := scantokens(getAttribute("line", "EndBName", str lL));
+ if (endAC = endA):
+ endAA := endAC;
+ endBA := endBC;
+ elseif (endBC = endA):
+ endAA := endBC;
+ endBA := endAC;
+ fi;
+ if ((abs(angle(endBA - endAA) - angle(endB - endA)) mod 360) < 1):
+ chosenLine := str lL;
+ fi;
+ endfor;
+ fi;
+ if unknown chosenLine:
+ chosenLine := "";
+ fi;
+ chosenLine
+enddef;
+
+vardef byConstructCompoundLine (expr lineName) =
+ save lineStart, lEnd, newLine, lEndA, lEndB, compoundLineString, i, j, cPointA, cPointB;
+ string lineStart, lEnd, newLine, lEndA, lEndB, compoundLineString, cPointA, cPointB;
+ numeric i, j;
+ j := 0;
+ if (length(lineName) = 2):
+ lineStart := substring (0, 1) of lineName;
+ lEnd := substring (1, 2) of lineName;
+ else:
+ for i := 1 step 1 until length(lineName):
+ cPointA := substring (0, i) of lineName;
+ cPointB := substring (i, length(lineName)) of lineName;
+ if known scantokens(cPointA): % for some reason 'and' doesn't work here
+ if known scantokens(cPointB):
+ j := j + 1;
+ lineStart := cPointA;
+ lEnd := cPointB;
+ fi;
+ fi;
+ endfor;
+ fi;
+ if unknown lineStart:
+ errmessage("Can't find points for line: " & lineName);
+ fi;
+ if j > 1:
+ errmessage("Ambiguous line name: " & lineName);
+ fi;
+ i := 0;
+ forever:
+ i := i + 1;
+ newLine := byFindLinePointedThere(lineStart, scantokens(lEnd));
+ if (newLine = ""):
+ errmessage("There's no line from " & lineStart & " to " & lEnd);
+ fi;
+ appendList (compoundLineString, newLine, 1, false);
+ lEndA := getAttribute("line", "EndAName", newLine);
+ lEndB := getAttribute("line", "EndBName", newLine);
+ if (lEndA = lineStart):
+ lineStart := lEndB;
+ elseif (lEndB = lineStart):
+ lineStart := lEndA;
+ fi;
+ exitif (i > 10);
+ exitif (lEndA = lEnd);
+ exitif (lEndB = lEnd);
+ endfor;
+ compoundLineString
+enddef;
+
+vardef byExpandLines (text linesList) =
+ save lineString, compoundLineString;
+ string lineString, compoundLineString;
+ forsuffixes lN=linesList:
+ if attributeExists("line", "Synonym", str lN):
+ appendList(lineString, str lN, 1, false);
+ else:
+ appendList(lineString, byConstructCompoundLine(str lN), 1, false);
+ fi;
+ endfor;
+ lineString
+enddef;
+
+vardef byNamedCompoundLine (expr cu, pw)(text linesList) =
+ byNamedCompoundLineRender(cu, pw, 0)(scantokens(byExpandLines(linesList)))
+enddef;
+
+vardef byNamedCompoundRay (expr cu, pw)(text linesList) =
+ byNamedCompoundLineRender(cu, pw, 1)(scantokens(byExpandLines(linesList)))
+enddef;
+
+vardef byNamedCompoundIndLine (expr cu, pw)(text linesList) =
+ byNamedCompoundLineRender(cu, pw, 2)(scantokens(byExpandLines(linesList)))
+enddef;
+
+vardef byNamedCompoundLineRender (expr cu, pw, sty)(text linesList) =
+ save correctedLength, currentPosition, a, b, sc, totalLength, pwL, lineNames, endNames, i, j, angleCheck, lineNotStraight, lineNotContinuous, globalRotation, extensionNames, textLabelImage;
+ numeric correctedLength, currentPosition[], sc, totalLength, pwL, i, j, angleCheck[];
+ globalRotation := 0;
+ string lineNames[], endNames[], extensionNames[];
+ pair a, b;
+ picture textLabelImage[];
+ boolean lineNotStraight, lineNotContinuous;
+ i := 0;
+ totalLength := 0;
+ lineNotStraight := false;
+ lineNotContinuous := false;
+ forsuffixes lN=linesList:
+ lineNames[i] := getAttribute("line", "EndAName", str lN);
+ lineNames[i+1] := getAttribute("line", "EndBName", str lN);
+ if (i > 0):
+ if (lineNames[i] <> lineNames[i-2])
+ and (lineNames[i] <> lineNames[i-1])
+ and (lineNames[i+1] <> lineNames[i-2])
+ and (lineNames[i+1] <> lineNames[i-1]):
+ lineNotContinuous := true;
+ fi;
+ fi;
+ i := i + 2;
+ angleCheck[i/2] := abs(cosd(getAttribute("line", "Angle", str lN)));
+ if (abs(angleCheck[i/2] - angleCheck[1]) > 1/100):
+ lineNotStraight := true;
+ fi;
+ totalLength := totalLength
+ + byReturnLineLength(
+ scantokens(getAttribute("line", "EndAName", str lN)),
+ scantokens(getAttribute("line", "EndBName", str lN)));
+ endfor;
+ if (lineNotStraight):
+ message("The line is not straight");
+ fi;
+ if (lineNotContinuous):
+ errmessage("The line is not continuous");
+ fi;
+ if (pw <> 0):
+ sc := cu**(1 - (1/pw));
+ pwL := 1/pw;
+ else:
+ sc := cu/(totalLength*scaleFactor);
+ pwL := 1;
+ fi;
+ currentPosition0 := 0;
+ image(
+ j := 0;
+ forsuffixes lN=linesList:
+ correctedLength := (byReturnLineLength(
+ scantokens(getAttribute("line", "EndAName", str lN)),
+ scantokens(getAttribute("line", "EndBName", str lN))
+ )**pwL)*sc;
+ currentPosition1 := currentPosition0 + correctedLength;
+ a := (currentPosition0, 0);
+ b := (currentPosition1, 0);
+ draw byLineRender(
+ a, b,
+ getAttribute("line", "Color", str lN),
+ getAttribute("line", "Dashed", str lN),
+ getAttribute("line", "Thin", str lN),
+ a, b, 0, 0, 0, scaleFactor);
+ currentPosition0 := currentPosition1;
+ if (i > 2):
+ if (j = 0):
+ extensionNames3 := str lN;
+ if (getAttribute("line", "EndAName", str lN) = lineNames[2])
+ or (getAttribute("line", "EndAName", str lN) = lineNames[3]):
+ endNames[0] := getAttribute("line", "EndBName", str lN);
+ elseif (getAttribute("line", "EndBName", str lN) = lineNames[2])
+ or (getAttribute("line", "EndBName", str lN) = lineNames[3]):
+ endNames[0] := getAttribute("line", "EndAName", str lN);
+ fi;
+ fi;
+ if (j = (i-2)/2):
+ extensionNames2 := str lN;
+ if (getAttribute("line", "EndAName", str lN) = lineNames[i-3])
+ or (getAttribute("line", "EndAName", str lN) = lineNames[i-4]):
+ endNames[1] := getAttribute("line", "EndBName", str lN);
+ elseif (getAttribute("line", "EndBName", str lN) = lineNames[i-3])
+ or (getAttribute("line", "EndBName", str lN) = lineNames[i-4]):
+ endNames[1] := getAttribute("line", "EndAName", str lN);
+ fi;
+ fi;
+ else:
+ endNames[0] := getAttribute("line", "EndAName", str lN);
+ endNames[1] := getAttribute("line", "EndBName", str lN);
+ if (getAttribute("line", "UseLineLabel", str lN)):
+ endNames[2] := str lN;
+ fi;
+ fi;
+ j := j + 1;
+ endfor;
+ extensionNames0 := byFindLinePointedThere(endNames1, 2[scantokens(endNames0), scantokens(endNames1)]);
+ extensionNames1 := byFindLinePointedThere(endNames0, 2[scantokens(endNames1), scantokens(endNames0)]);
+ if extensionNames0 = "":
+ extensionNames0 := "dummyLine";
+ else:
+ extensionNames2 := extensionNames0;
+ fi;
+ if extensionNames1 = "":
+ extensionNames1 := "dummyLine";
+ else:
+ extensionNames3 := extensionNames1;
+ fi;
+ if (sty > 0):
+ draw byLineRender(b, b shifted (rayExtension/scaleFactor, 0),
+ getAttribute("line", "Color", extensionNames0),
+ getAttribute("line", "Dashed", extensionNames0),
+ getAttribute("line", "Thin", extensionNames2),
+ b, b shifted (rayExtension/scaleFactor, 0), 0, 0, 0, scaleFactor);
+ fi;
+ if (sty > 1):
+ draw byLineRender((0, 0), (0, 0) shifted (-rayExtension/scaleFactor, 0),
+ getAttribute("line", "Color", extensionNames1),
+ getAttribute("line", "Dashed", extensionNames1),
+ getAttribute("line", "Thin", extensionNames3),
+ (0, 0), (0, 0) shifted (-rayExtension/scaleFactor, 0), 0, 0, 0, scaleFactor);
+ fi;
+ if (textLabels and autoLabelingMode):
+ if unknown endNames[2]:
+ textLabelImage1 := byTextLabel(pointLabel)(endNames[0], (0, 0), 90, textLabelShift);
+ textLabelImage2 := byTextLabel(pointLabel)(endNames[1], b, 90, textLabelShift);
+ draw textLabelImage1;
+ draw textLabelImage2;
+ % these are only needed to make the image symmetrical in order to have
+ % the line with and without labels at the same level in text.
+ draw (textLabelImage1 yscaled -1) withcolor white;
+ draw (textLabelImage2 yscaled -1) withcolor white;
+ else:
+ textLabelImage1 := byTextLabel(lineLabel)(endNames[2], 1/2[(0, 0), b], 90, textLabelShift);
+ draw textLabelImage1;
+ draw (textLabelImage1 yscaled -1) withcolor white;
+ fi;
+ fi;
+ )
+enddef;
+
+vardef generateLineSynonyms =
+ if string allLinesList:
+ save candidateName, originalName;
+ string candidateName[], originalName;
+ forsuffixes i=scantokens(allLinesList):
+ originalName := str i;
+ candidateName1 := getAttribute("line", "EndAName", originalName)
+ & getAttribute("line", "EndBName", originalName);
+ candidateName2 := getAttribute("line", "EndBName", originalName)
+ & getAttribute("line", "EndAName", originalName);
+ if not string getAttribute("line", "Synonym", candidateName1):
+ setAttribute("line", "Synonym", candidateName1, originalName);
+ fi;
+ if not string getAttribute("line", "Synonym", candidateName2):
+ setAttribute("line", "SynonymPartial", candidateName2, true);
+ setAttribute("line", "Synonym", candidateName2, originalName);
+ setAttribute("line", "EndA", candidateName2, getAttribute("line", "EndB", originalName));
+ setAttribute("line", "EndB", candidateName2, getAttribute("line", "EndA", originalName));
+ setAttribute("line", "EndAType", candidateName2, getAttribute("line", "EndBType", originalName));
+ setAttribute("line", "EndBType", candidateName2, getAttribute("line", "EndAType", originalName));
+ setAttribute("line", "EndAName", candidateName2, getAttribute("line", "EndBName", originalName));
+ setAttribute("line", "EndBName", candidateName2, getAttribute("line", "EndAName", originalName));
+ setAttribute("line", "DirA", candidateName2, getAttribute("line", "DirB", originalName));
+ setAttribute("line", "DirB", candidateName2, getAttribute("line", "DirA", originalName));
+ setAttribute("line", "DirAName", candidateName2, getAttribute("line", "DirBName", originalName));
+ setAttribute("line", "DirBName", candidateName2, getAttribute("line", "DirAName", originalName));
+ setAttribute("line", "Angle", candidateName2, 180 + getAttribute("line", "Angle", originalName));
+ fi;
+ endfor;
+ fi;
+enddef;
+
+%
+% Points
+%
+
+vardef byPointLabelDefine (suffix pointName)(expr t) =
+ setAttribute("point", "Label", str pointName, t);
+enddef;
+
+vardef byPointLabelRemove (text pointsList) =
+ forsuffixes i=pointsList:
+ byPointLabelDefine(i, "");
+ endfor;
+enddef;
+
+vardef byPointMarkDefine (suffix pointName)(expr col, sty) =
+ setAttribute("point", "Color", str pointName, col);
+ setAttribute("point", "Style", str pointName, sty);
+enddef;
+
+vardef byPointXYZDefine@#(expr ox, oy, oz) =
+if str @# = "":
+ errmessage("byPointXYZDefine needs a name (byPointXYZDefine.somename...)");
+else:
+ if mainPictureMode:
+ appendList(allPointsList, str @#, 1, true);
+ fi;
+ setAttribute("point", "XYZ", str @#, (ox, oy, oz));
+ pair @#;
+ color pointXYZ.@#;
+ @# := (ox, oy);
+ pointXYZ.@# := (ox, oy, oz);
+fi;
+enddef;
+
+vardef byPointXYZEmpty (text pointNames) =
+ forsuffixes pN = pointNames:
+ if mainPictureMode:
+ appendList(allPointsList, str pN, 1, true);
+ fi;
+ color pointXYZ.pN;
+ endfor;
+enddef;
+
+vardef byIsPointInSpace (text pointNames) =
+ save pN;
+ (true forsuffixes pN = pointNames:
+ and (typeOf(pointXYZ.pN) = "color")
+ endfor)
+enddef;
+
+% in order to automatically project points they need to be added
+% to allPointsList list.
+vardef byPair (text pointsList) =
+ save i;
+ pair pointsList;
+ forsuffixes i := pointsList:
+ appendList(allPointsList, str i, 1, true);
+ numeric pointXYZ.i;
+ endfor;
+enddef;
+
+% @# here stands for rotation order, e. g. byRotatePoints.XYZ
+
+vardef byRotatePoints@#(expr xa, ya, za, toRotate)(text pointsList) =
+ save oxyz, pointsToProcess;
+ color oxyz;
+ string pointsToProcess;
+ forsuffixes i=pointsList:
+ appendList(pointsToProcess, str i, 1, true);
+ endfor;
+ if (length(pointsToProcess) = 0):
+ pointsToProcess := allPointsList;
+ fi;
+ forsuffixes i=scantokens(pointsToProcess):
+ if (known i) or (known pointXYZ.i):
+ if attributeExists("point", "XYZ", str i):
+ oxyz := getAttribute("point", "XYZ", str i);
+ elseif typeOf(i) = "pair":
+ byPointXYZDefine.i(xpart i, ypart i, 0);
+ oxyz := getAttribute("point", "XYZ", str i);
+ else:
+ errmessage("Point " & str i & " doesn't exist");
+ fi;
+ oxyz := rotateColor@#(oxyz, (xa, ya, za));
+ pair i;
+ i := (redpart(oxyz), greenpart(oxyz));
+ if toRotate:
+ setAttribute("point", "XYZ", str i, oxyz);
+ fi;
+ fi;
+ endfor;
+enddef;
+
+vardef byPointMarkRender (expr p, col, sty) =
+ image(
+ if (sty = 0):
+ fill ((fullcircle scaled pointMarkSize) shifted (p scaled scaleFactor)) withcolor col;
+ elseif (sty = 1):
+ fill ((fullcircle scaled pointMarkSize) shifted (p scaled scaleFactor)) withcolor white;
+ draw ((fullcircle scaled pointMarkSize) shifted (p scaled scaleFactor)) withcolor col withpen pencircle scaled lineWidthHair;
+ fi;
+ )
+enddef;
+
+vardef byNamedPointMark (text pointsList) =
+ image(
+ forsuffixes pN=pointsList:
+ if (attributeExists("point", "Color", str pN)):
+ appendList(pL, str pN, 1, false);
+ draw byPointMarkRender(pN, getAttribute("point", "Color", str pN), getAttribute("point", "Style", str pN)) rotated globalRotation;
+ if (autoLabelingMode and textLabels):
+ draw byTextLabel(pointLabel)(str pN, pN, 90, 1/2pointMarkSize + textLabelShift);
+ fi;
+ fi;
+ endfor;
+ )
+enddef;
+
+vardef byPointMark (suffix pointName)(expr col, sty) =
+ image(
+ byPointMarkDefine(pointName)(col, sty);
+ draw byNamedPointMark(pointName);
+ )
+enddef;
+
+vardef byNamedPointLines (suffix pointName)(expr omitLines) =
+save linesList, lineNames, pointNames, distantEnd, distantEnds, n, no, distL, maxDist, maxDistEndA, maxDistEndB, a, angleL, minAngle, maxAngle, minAngleEndB, maxAngleEndA, maxAngleEndB, safeLine;
+string linesList, lineNames[], pointNames[];
+pair distantEnd, distantEnds[];
+numeric n, no, distL, maxDist, maxDistEndA, maxDistEndB, a[], angleL, minAngle, maxAngle, minAngleEndB, maxAngleEndA, maxAngleEndB, safeLine;
+picture labelImage, linesImage;
+boolean omitLine[];
+if known pointLinesList.pointName:
+ linesList := pointLinesList.pointName;
+ n := 0;
+ no := 0;
+ maxDist := 0;
+ maxAngle := 0;
+ minAngle := 360;
+ forsuffixes i = scantokens(linesList):
+ n := n + 1;
+ lineNames[n] := str i;
+ omitLine[n] := false;
+ if (length(omitLines) > 0):
+ forsuffixes j = scantokens(omitLines):
+ if ((str i) = (str j)):
+ omitLine[n] := true;
+ no := no + 1;
+ fi;
+ endfor;
+ fi;
+ if (not omitLine[n]):
+ safeLine := n;
+ fi;
+ if (getAttribute("line", "EndAName", str i) = str pointName):
+ distantEnds[n] :=
+ scantokens(getAttribute("line", "EndAName", str i))
+ + (unitvector(scantokens(getAttribute("line", "EndBName", str i))
+ - scantokens(getAttribute("line", "EndAName", str i))) scaled (pointLinesSize/scaleFactor)
+ );
+ pointNames[n] := getAttribute("line", "EndBName", str i);
+ else:
+ distantEnds[n] :=
+ scantokens(getAttribute("line", "EndBName", str i))
+ + (unitvector(scantokens(getAttribute("line", "EndAName", str i))
+ - scantokens(getAttribute("line", "EndBName", str i))) scaled (pointLinesSize/scaleFactor)
+ );
+ pointNames[n] := getAttribute("line", "EndAName", str i);
+ fi;
+ endfor;
+ if (n - no > 1):
+ for i := 1 step 1 until n:
+ if (not omitLine[i]):
+ minAngle := 360;
+ for j := 1 step 1 until n:
+ if (not omitLine[j]):
+ distL := abs(distantEnds[i] - distantEnds[j]);
+ if (distL > maxDist):
+ maxDist := distL;
+ maxDistEndA := i;
+ maxDistEndB := j;
+ fi;
+ a1 := angle(distantEnds[i] - pointName);
+ a2 := angle(distantEnds[j] - pointName);
+ angleL := a2 - a1;
+ if (angleL < 0): angleL := angleL + 360; fi;
+ if (minAngle > angleL) and (angleL <> 0):
+ minAngle := angleL;
+ minAngleEndA := j;
+ fi;
+ fi;
+ endfor;
+ if (maxAngle <= minAngle + 1):
+ maxAngle := minAngle;
+ maxAngleEndA := minAngleEndA;
+ maxAngleEndB := i;
+ fi;
+ fi;
+ endfor;
+ linesImage := image(
+ for i := 1 step 1 until n:
+ if (i <> maxDistEndA) and (i <> maxDistEndB) and (not omitLine[i]):
+ draw byLineRender(pointName, distantEnds[i],
+ getAttribute("line", "Color", lineNames[i]), getAttribute("line", "Dashed", lineNames[i]), getAttribute("line", "Thin", lineNames[i]),
+ pointName, distantEnds[i], 0, 0, 0, scaleFactor);
+ fi;
+ endfor;
+ draw byLineRender(pointName, distantEnds[maxDistEndA],
+ getAttribute("line", "Color", lineNames[maxDistEndA]),
+ getAttribute("line", "Dashed", lineNames[maxDistEndA]),
+ getAttribute("line", "Thin", lineNames[maxDistEndA]),
+ distantEnds[maxDistEndB], distantEnds[maxDistEndA], 0, 0, 0, scaleFactor);
+ draw byLineRender(pointName, distantEnds[maxDistEndB],
+ getAttribute("line", "Color", lineNames[maxDistEndB]),
+ getAttribute("line", "Dashed", lineNames[maxDistEndB]),
+ getAttribute("line", "Thin", lineNames[maxDistEndB]),
+ distantEnds[maxDistEndA], distantEnds[maxDistEndB], 0, 0, 0, scaleFactor);
+ );
+ labelImage := image(
+ if (textLabels):
+ draw byLabelsOnPolygon(scantokens(pointNames[maxAngleEndA]),pointName,scantokens(pointNames[maxAngleEndB]))(2, 0);
+ fi;
+ );
+ else:
+ linesImage := image(
+ draw byLineRender(pointName, distantEnds[safeLine],
+ getAttribute("line", "Color", lineNames[safeLine]),
+ getAttribute("line", "Dashed", lineNames[safeLine]),
+ getAttribute("line", "Thin", lineNames[safeLine]),
+ pointName, distantEnds[safeLine], 0, 0, 0, scaleFactor);
+ );
+ labelImage := image(
+ if (textLabels):
+ draw byLabelLineEnd (pointName, distantEnds[safeLine])(0);
+ fi;
+ );
+ fi;
+else:
+ labelImage := image();
+ linesImage := image();
+fi;
+ image(
+ draw labelImage;
+ % this thing is intended to make the overall picture symmetrical
+ % when all the lines are horizontal.
+ draw labelImage rotatedabout(pointName scaled scaleFactor, 180) withcolor white;
+ draw linesImage;
+ )
+enddef;
+
+%
+% Arcs and circles
+%
+
+vardef byCirclePathGenerate (expr sr, pv) =
+ save circPath, xp, xang, yang;
+ path circPath;
+ color pvt;
+ numeric xang, yang;
+ pair xp;
+ circPath := fullcircle;
+ xp := (bluepart(pv), greenpart(pv));
+ xang := angle(xp);
+ pvt := (redpart(pv), ypart(xp rotated -xang), xpart(xp rotated -xang));
+ yang := angle((bluepart(pvt), redpart(pvt)));
+ circPath := spaceRotated(circPath)((-xang, yang, 0)); % plane vector to angles conversion should eventually go somewhere
+ circPath := spaceRotated(circPath)(sr);
+ circPath := spaceRotated(circPath)(projectionAngle);
+ circPath
+enddef;
+
+vardef byArcRender (expr o, b, e, r, sr, pv, col, dp, th, s, et) =
+ save p, q, m, t, currentLineWidth, srCircle;
+ path p[], srCircle;
+ picture q;
+ pair t[];
+ numeric m[];
+ numeric currentLineWidth;
+ save thirdDimension;
+ image(
+ srCircle := byCirclePathGenerate(sr, pv);
+ currentLineWidth := lineThickness(th);
+ p0 := ((subpath (b, e) of srCircle) scaled (r*scaleFactor + lineWidth*s + lineWidth)) shifted (o*scaleFactor);
+ p1 := ((subpath (b, e) of srCircle) scaled (r*scaleFactor)) shifted (o*scaleFactor);
+ p2 := (srCircle scaled (r*scaleFactor + lineWidth*s + lineWidth)) shifted (o*scaleFactor);
+ p3 := ((subpath (b, e) of srCircle) scaled (r*scaleFactor + lineWidth*s)) shifted (o*scaleFactor);
+ p4 := ((subpath (b + sign(b-e)*1/16, b) of srCircle) scaled (r*scaleFactor + lineWidth*s)) shifted (o*scaleFactor);
+ p5 := ((subpath (e, e + sign(e-b)*1/16) of srCircle) scaled (r*scaleFactor + lineWidth*s)) shifted (o*scaleFactor);
+ q := image(
+ draw p3 withpen pencircle scaled currentLineWidth withcolor col if (dp > 0): dashed byDashPattern(arclength(p3), dp) fi;
+ draw p4 withpen pencircle scaled currentLineWidth withcolor col;
+ draw p5 withpen pencircle scaled currentLineWidth withcolor col;
+ );
+ if mainPictureMode and ghostLines:
+ save gP;
+ picture gP;
+ gP := ghostPicture;
+ ghostPicture := image(
+ draw gP;
+ draw p3 withcolor white withpen pencircle scaled lineWidthHair;
+ );
+ fi;
+ if (et = 0):
+ p6 := p0--(o*scaleFactor)--cycle;
+ else:
+ t0 := point 0 of p1;
+ t1 := point 0 of reverse(p1);
+ t2 := 1/2[t0, t1];
+ m0 := xpart (p2 intersectiontimes (t2 -- 2[t2, t0]));
+ m1 := xpart (p2 intersectiontimes (t2 -- 2[t2, t1]));
+ for i := -(8*3) step 8 until (8*3):
+ if (abs(b - m0) > abs(b - (m0 + i))):
+ m0 := m0 + i;
+ fi;
+ if (abs(e - m1) > abs(e - (m1 + i))):
+ m1 := m1 + i;
+ fi;
+ endfor;
+ p6 := (subpath(m0, m1) of p2) -- cycle;
+ fi;
+ clip q to p6;
+ draw q;
+ ) rotated globalRotation
+enddef;
+
+vardef byArcDefineBE@#(suffix o)(expr b, e, r, col, dp, th, s, et) =
+if str @# = "":
+ byArcDefineBE.scantokens(str o)(b, e, r, col, dp, th, s, et);
+else:
+ setAttribute("arc", "Color", str @#, col);
+ setAttribute("arc", "Dashed", str @#, dp);
+ setAttribute("arc", "Thin", str @#, th);
+ setAttribute("arc", "Shift", str @#, s);
+ setAttribute("arc", "Diameter", str @#, 2r);
+ setAttribute("arc", "Center", str @#, o);
+ setAttribute("arc", "CenterName", str @#, str o);
+ setAttribute("arc", "BName", str @#, "");
+ setAttribute("arc", "EName", str @#, "");
+ setAttribute("arc", "Begin", str @#, b);
+ setAttribute("arc", "End", str @#, e);
+ setAttribute("arc", "EndType", str @#, et);
+ setAttribute("arc", "Angle", str @#, angle((point b of fullcircle) - (point e of fullcircle)));
+ setAttribute("arc", "SpaceRotation", str @#, (0,0,0));
+ setAttribute("arc", "PlaneVector", str @#, (0,0,1));
+ setAttribute("arc", "Synonym", str @#, str @#);
+fi;
+enddef;
+
+vardef byArcBE@#(suffix o)(expr b, e, r, col, dp, th, s, et) =
+if str @# = "":
+ byArcBE.scantokens(str o)(o)(b, e, r, col, dp, th, s, et)
+else:
+ byArcDefineBE.@#(o, b, e, r, col, dp, th, s, et);
+ byNamedArcExact(@#)
+fi
+enddef;
+
+vardef byArcDefine@#(suffix o, pb, pe)(expr r, col, dp, th, s, et) =
+if str @# = "":
+ byArcDefine.scantokens(str pb & str o & str pe)(o, pb, pe)(r, col, dp, th, s, et);
+else:
+ save b, e;
+ numeric b, e;
+ b := xpart(((fullcircle scaled 2r) shifted o) intersectiontimes (o -- 2[o, pb]));
+ e := xpart(((fullcircle scaled 2r) shifted o) intersectiontimes (o -- 2[o, pe]));
+ if (b > e):
+ b := b - 8;
+ fi;
+ byArcDefineBE.@#(o, b, e, r, col, dp, th, s, et);
+ setAttribute("arc", "BName", str @#, str pb);
+ setAttribute("arc", "EName", str @#, str pe);
+fi;
+enddef;
+
+vardef byArc@#(suffix o, pb, pe)(expr r, col, dp, th, s, et) =
+if str @# = "":
+ byArc.scantokens(str pb & str o & str pe)(o, pb, pe)(r, col, dp, th, s, et)
+else:
+ byArcDefine.@#(o, pb, pe, r, col, dp, th, s, et);
+ byNamedArcExact(@#)
+fi
+enddef;
+
+vardef byNamedArcExact (text arcslist) =
+ image(
+ forsuffixes aN=arcslist:
+ draw byArcRender(
+ scantokens(getAttribute("arc", "CenterName", str aN)),
+ getAttribute("arc", "Begin", str aN),
+ getAttribute("arc", "End", str aN),
+ getAttribute("arc", "Diameter", str aN),
+ getAttribute("arc", "SpaceRotation", str aN),
+ getAttribute("arc", "PlaneVector", str aN),
+ getAttribute("arc", "Color", str aN),
+ getAttribute("arc", "Dashed", str aN),
+ getAttribute("arc", "Thin", str aN),
+ getAttribute("arc", "Shift", str aN),
+ getAttribute("arc", "EndType", str aN));
+ endfor;
+ if (autoLabelingMode):
+ draw byNamedArcLabel(arcslist);
+ fi;
+ )
+enddef;
+
+vardef byNamedArc (text arcslist) =
+ image(
+ forsuffixes aN=arcslist:
+ draw byArcRender(
+ scantokens(getAttribute("arc", "CenterName", str aN)),
+ getAttribute("arc", "Begin", str aN),
+ getAttribute("arc", "End", str aN),
+ getAttribute("arc", "Diameter", str aN),
+ getAttribute("arc", "SpaceRotation", str aN),
+ getAttribute("arc", "PlaneVector", str aN),
+ getAttribute("arc", "Color", str aN),
+ getAttribute("arc", "Dashed", str aN),
+ getAttribute("arc", "Thin", str aN), 0, 0);
+ endfor;
+ if (autoLabelingMode):
+ draw byNamedArcLabel(arcslist);
+ fi;
+ )
+enddef;
+
+vardef byNamedArcLabel (text arcslist) =
+ save pointsListB, pointsListE, pointsListO, pointsListD, labelPos, labelVec, labelAng, i, j, k, allArcsDefined, beginFree, endFree, pointsListCrv;
+ string pointsListB[], pointsListE[], pointsListO[];
+ numeric i, j, k, pointsListD[], labelAng;
+ boolean allArcsDefined, beginFree, endFree;
+ color labelVec;
+ pair labelPos;
+ path pointsListCrv[];
+ image(
+ if (textLabels):
+ i := -1;
+ allArcsDefined := true;
+ forsuffixes aN=arcslist:
+ i := i + 1;
+ pointsListB[i] := getAttribute("arc", "BName", str aN);
+ pointsListE[i] := getAttribute("arc", "EName", str aN);
+ pointsListO[i] := getAttribute("arc", "CenterName", str aN);
+ pointsListR[i] := getAttribute("arc", "Diameter", str aN);
+ begingroup
+ save thirdDimension;
+ pointsListCrv[i] := subpath
+ (getAttribute("arc", "Begin", str aN), getAttribute("arc", "End", str aN))
+ of byCirclePathGenerate (getAttribute("arc", "SpaceRotation", str aN), getAttribute("arc", "PlaneVector", str aN));
+ endgroup;
+ if (getAttribute("arc", "BName", str aN) = "")
+ or (getAttribute("arc", "EName", str aN) = ""):
+ allArcsDefined := false;
+ fi;
+ endfor;
+ if allArcsDefined:
+ for j := 0 step 1 until i:
+ beginFree := true;
+ endFree := true;
+ for k := 0 step 1 until i:
+ if (j <> k):
+ if (pointsListB[j] = pointsListE[k]):
+ beginFree := false;
+ fi;
+ if (pointsListE[j] = pointsListB[k]):
+ endFree := false;
+ fi;
+ fi;
+ endfor;
+ if beginFree:
+ labelAng := angle(direction 0 of pointsListCrv[j]) + 180;
+ labelPos := ((point 0 of pointsListCrv[j]) * pointsListR[j]) + scantokens(pointsListO[j]);
+ draw byTextLabel(pointLabel)(
+ pointsListB[j],
+ labelPos,
+ labelAng,
+ textLabelShift);
+ fi;
+ if endFree:
+ labelAng := angle(direction 0 of reverse(pointsListCrv[j])) + 180;
+ labelPos := ((point 0 of reverse(pointsListCrv[j])) * pointsListR[j]) + scantokens(pointsListO[j]);
+ draw byTextLabel(pointLabel)(
+ pointsListE[j],
+ labelPos,
+ labelAng,
+ textLabelShift);
+ fi;
+ endfor;
+ fi;
+ fi;
+ )
+enddef;
+
+vardef byCircleDefineFree@#(expr o, r, col, dp, th, s) =
+if str @# = "":
+ byCircleDefineFree.aCircle(o, r, col, dp, th, s);
+else:
+ setAttribute("circle", "Color", str @#, col);
+ setAttribute("circle", "Dashed", str @#, dp);
+ setAttribute("circle", "Thin", str @#, th);
+ setAttribute("circle", "Shift", str @#, s);
+ setAttribute("circle", "Diameter", str @#, 2r);
+ setAttribute("circle", "Center", str @#, o);
+ setAttribute("circle", "CenterName", str @#, "");
+ setAttribute("circle", "AName", str @#, "");
+ setAttribute("circle", "BName", str @#, "");
+ setAttribute("circle", "CName", str @#, "");
+ setAttribute("circle", "SpaceRotation", str @#, (0,0,0));
+ setAttribute("circle", "PlaneVector", str @#, (0,0,1));
+ setAttribute("circle", "Synonym", str @#, str @#);
+fi;
+enddef;
+
+vardef byCircleDefineR@#(suffix o)(expr r, col, dp, th, s) =
+if str @# = "":
+ byCircleDefineR.scantokens(str o)(o)(r, col, dp, th, s)
+else:
+ byCircleDefineFree.@#(o, r, col, dp, th, s);
+ setAttribute("circle", "CenterName", str @#, str o);
+fi;
+enddef;
+
+vardef byCircleR@#(suffix o)(expr r, col, dp, th, s) =
+if str @# = "":
+ byCircleR.scantokens(str o)(o)(r, col, dp, th, s)
+else:
+ byCircleDefineR.@#(o, r, col, dp, th, s);
+ byNamedCircle(@#)
+fi
+enddef;
+
+vardef byCircleDefine@#(suffix o, a)(expr col, dp, th, s) =
+if str @# = "":
+ byCircleDefine.scantokens(str o & str a)(o, a)(col, dp, th, s)
+else:
+ byCircleDefineR.@#(o, abs(a-o), col, dp, th, s);
+ setAttribute("circle", "AName", str @#, str a);
+fi;
+enddef;
+
+vardef byCircle@#(suffix o, a)(expr col, dp, th, s) =
+if str @# = "":
+ byCircle.scantokens(str o & str a)(o, a)(col, dp, th, s)
+else:
+ byCircleDefine.@#(o, a, col, dp, th, s);
+ byNamedCircle(@#)
+fi
+enddef;
+
+vardef byCircleABC@#(suffix a, b, c)(expr col, dp, th, s) =
+if str @# = "":
+ byCircleABC.scantokens(str a & str b & str c)(a, b, c)(col, dp, th, s)
+else:
+ save o, r;
+ pair o;
+ numeric r;
+ o := byFindCircleCenterABC(a, b, c);
+ if byIsPointInSpace(a, b, c):
+ r := absXYZ(pointXYZ.a - byFindCircleCenterABCinSpace(pointXYZ.a, pointXYZ.b, pointXYZ.c));
+ else:
+ r := abs(o - a);
+ fi;
+ byCircleDefineFree.@#(o, r, col, dp, th, s);
+ setAttribute("circle", "AName", str @#, str a);
+ setAttribute("circle", "BName", str @#, str b);
+ setAttribute("circle", "CName", str @#, str c);
+ if byIsPointInSpace(a, b, c):
+ save pv;
+ color pv;
+ pv := unitvectorXYZ((pointXYZ.a - pointXYZ.b) crossproduct (pointXYZ.c - pointXYZ.b));
+ setAttribute("circle", "PlaneVector", str @#, pv);
+ fi;
+ byNamedCircle(@#)
+fi
+enddef;
+
+vardef byFindCircleCenterABC (suffix a, b, c) =
+ save rv;
+ pair rv;
+ if byIsPointInSpace(a, b, c):
+ save rvInSpace;
+ color rvInSpace;
+ rvInSpace := byFindCircleCenterABCinSpace(pointXYZ.a, pointXYZ.b, pointXYZ.c) colorrotated projectionAngle;
+ rv := (redpart(rvInSpace), greenpart(rvInSpace));
+ else:
+ rv = whatever[1/2[a, b], 1/2[a, b] + ((a - b) rotated 90)]
+ = whatever[1/2[b, c], 1/2[b, c] + ((b - c) rotated 90)];
+ fi;
+ rv
+enddef;
+
+vardef byFindCircleCenterABCinSpace (expr a, b, c) =
+ save vec;
+ color vec[];
+ vec0 := ((a - b) crossproduct (c - b));
+ vec1 := byRotateAroundAxis (a - b, (0, 0, 0), 90, vec0);
+ vec2 := byRotateAroundAxis (c - b, (0, 0, 0), 90, vec0);
+ vec3 = whatever[1/2[a, b], 1/2[a, b] + vec1]
+ = whatever[1/2[b, c], 1/2[b, c] + vec2]; % Fails from time to time because of some roundoff errors
+ vec3
+enddef;
+
+vardef byReturnCircleCenter (expr circleName) =
+ if (getAttribute("circle", "CenterName", circleName) <> ""):
+ scantokens(getAttribute("circle", "CenterName", circleName))
+ elseif (getAttribute("circle", "BName", circleName) <> ""):
+ byFindCircleCenterABC(
+ scantokens(getAttribute("circle", "AName", circleName)),
+ scantokens(getAttribute("circle", "BName", circleName)),
+ scantokens(getAttribute("circle", "CName", circleName))
+ )
+ else:
+ getAttribute("circle", "Center", circleName)
+ fi
+enddef;
+
+vardef byNamedCircle (text circlesList) =
+ save circlecenter;
+ pair circlecenter;
+ image(
+ forsuffixes cN=circlesList:
+ circlecenter := byReturnCircleCenter(str cN);
+ draw byArcRender (
+ circlecenter, 0, 8,
+ getAttribute("circle", "Diameter", str cN),
+ getAttribute("circle", "SpaceRotation", str cN),
+ getAttribute("circle", "PlaneVector", str cN),
+ getAttribute("circle", "Color", str cN),
+ getAttribute("circle", "Dashed", str cN),
+ getAttribute("circle", "Thin", str cN),
+ getAttribute("circle", "Shift", str cN), 0);
+ if (textLabels and autoLabelingMode):
+ if (getAttribute("circle", "CenterName", str cN) <> ""):
+ draw byTextLabel(pointLabel)(
+ getAttribute("circle", "CenterName", str cN),
+ scantokens(getAttribute("circle", "CenterName", str cN)),
+ 0, 0);
+ fi;
+ if (getAttribute("circle", "AName", str cN) <> ""):
+ draw byLabelCircle(getAttribute("circle", "AName", str cN), str cN);
+ fi;
+ if (getAttribute("circle", "BName", str cN) <> ""):
+ draw byLabelCircle(getAttribute("circle", "BName", str cN), str cN);
+ fi;
+ if (getAttribute("circle", "CName", str cN) <> ""):
+ draw byLabelCircle(getAttribute("circle", "CName", str cN), str cN);
+ fi;
+ fi;
+ endfor;
+ )
+enddef;
+
+%
+% Arbitraty figures
+%
+
+vardef byArbitraryFigureDefine@#(expr p, col, dp, th) =
+if str @# = "":
+ byArbitraryFigureDefine.anArbitraryFigure(p, col, dp, th);
+else:
+ setAttribute("arbitraryFigure", "Path", str @#, p);
+ setAttribute("arbitraryFigure", "Color", str @#, col);
+ setAttribute("arbitraryFigure", "Dashed", str @#, dp);
+ setAttribute("arbitraryFigure", "Thin", str @#, th);
+ setAttribute("arbitraryFigure", "Synonym", str @#, str @#);
+fi;
+enddef;
+
+vardef byArbitraryFigure@#(expr p, col, dp, th) =
+if str @# = "":
+ byArbitraryFigure.anArbitraryFigure(p, col, dp, th)
+else:
+ byArbitraryFigureDefine@#(p, col, dp, th);
+ byNamedArbitraryFigure(@#)
+fi
+enddef;
+
+vardef byNamedArbitraryFigure (text arbitraryFiguresList) =
+ save p;
+ path p;
+ image(
+ forsuffixes pN=arbitraryFiguresList:
+ p := getAttribute("arbitraryFigure", "Path", str pN);
+ draw byArbitraryFigureRender
+ (p, getAttribute("arbitraryFigure", "Color", str pN),
+ getAttribute("arbitraryFigure", "Dashed", str pN),
+ getAttribute("arbitraryFigure", "Thin", str pN));
+ endfor;
+ ) rotated globalRotation
+enddef;
+
+vardef byArbitraryFigureRender (expr p, col, dp, th) =
+ image(
+ draw (p scaled scaleFactor)
+ withpen pencircle scaled lineThickness(th)
+ withcolor col
+ if (dp > 0):
+ dashed byDashPattern(arclength(p), dp)
+ fi;
+ )
+enddef;
+
+vardef byArbitraryCurveDefine@#(text pointsList)(expr col, dp, th) =
+if str @# = "":
+ byArbitraryCurveDefine.anArbitraryCurve(pointsList)(col, dp, th);
+else:
+ save pL, p;
+ string pL;
+ path p;
+ pL := "";
+ p := byListToPath(pointsList);
+ forsuffixes pN=pointsList:
+ appendList(pL, str pN, 1, false);
+ endfor;
+ setAttribute("arbitraryCurve", "PointsList", str @#, pL);
+ setAttribute("arbitraryCurve", "Path", str @#, p);
+ setAttribute("arbitraryCurve", "Color", str @#, col);
+ setAttribute("arbitraryCurve", "Dashed", str @#, dp);
+ setAttribute("arbitraryCurve", "Thin", str @#, th);
+ setAttribute("arbitraryCurve", "Synonym", str @#, str @#);
+fi;
+enddef;
+
+vardef byNamedArbitraryCurve (text curvesList) =
+ save p;
+ path p;
+ image(
+ forsuffixes cN=curvesList:
+ p := byListToPath(scantokens(getAttribute("arbitraryCurve", "PointsList", str cN)));
+ draw byArbitraryFigureRender
+ (p, getAttribute("arbitraryCurve", "Color", str cN),
+ getAttribute("arbitraryCurve", "Dashed", str cN),
+ getAttribute("arbitraryCurve", "Thin", str cN)) rotated globalRotation;
+ if (autoLabelingMode):
+ if (textLabels):
+ draw byLabelsOnPolygon(scantokens(getAttribute("arbitraryCurve", "PointsList", str cN)), noPoint)(1, 0);
+ fi;
+ fi;
+ endfor;
+ )
+enddef;
+
+vardef byListToPath(text pointsList) =
+ save pathString, rp;
+ string pathString;
+ path rp;
+ pathString := "";
+ forsuffixes pN=pointsList:
+ pathString := pathString & str pN & "..";
+ endfor;
+ rp := scantokens(substring (0, length(pathString) - 2) of pathString);
+ rp
+enddef;
+
+vardef byArbitraryCurve@#(text pointsList)(expr col, dp, th) =
+if str @# = "":
+ byArbitraryCurve.anArbitraryCurve(pointsList)(col, dp, th)
+else:
+ byArbitraryCurveDefine@#(pointsList)(col, dp, th);
+ byNamedArbitraryCurve(@#)
+fi
+enddef;
+
+%
+% Filled figures
+%
+
+vardef byFilledCircleSegment@#(suffix o)(expr r, b, e, col) =
+if str @# = "":
+ byFilledCircleSegment.o(o, r, b, e, col)
+else:
+ setAttribute("filledCircleSegment", "Color", str @#, col);
+ setAttribute("filledCircleSegment", "Diameter", str @#, 2r);
+ setAttribute("filledCircleSegment", "Begin", str @#, b);
+ setAttribute("filledCircleSegment", "End", str @#, e);
+ setAttribute("filledCircleSegment", "CenterName", str @#, str o);
+ setAttribute("filledCircleSegment", "Synonym", str @#, str @#);
+ byNamedFilledCircleSegment(@#)
+fi
+enddef;
+
+vardef byNamedFilledCircleSegment (text filledCircleSegmentList) =
+ save p;
+ path p;
+ image(
+ forsuffixes csN=filledCircleSegmentList:
+ fill (
+ (subpath
+ (getAttribute("filledCircleSegment", "Begin", str csN),
+ getAttribute("filledCircleSegment", "End", str csN))
+ of fullcircle)
+ --cycle)
+ scaled (getAttribute("filledCircleSegment", "Diameter", str csN)*scaleFactor)
+ shifted (scantokens(getAttribute("filledCircleSegment", "CenterName", str csN))*scaleFactor)
+ withcolor getAttribute("filledCircleSegment", "Color", str csN);
+ endfor;
+ ) rotated globalRotation
+enddef;
+
+vardef byFilledCircleSector@#(suffix o)(expr r, b, e, col) =
+if str @# = "":
+ byFilledCircleSector.o(o, r, b, e, col)
+else:
+ setAttribute("filledCircleSector", "Color", str @#, col);
+ setAttribute("filledCircleSector", "Diameter", str @#, 2r);
+ setAttribute("filledCircleSector", "Begin", str @#, b);
+ setAttribute("filledCircleSector", "End", str @#, e);
+ setAttribute("filledCircleSector", "CenterName", str @#, str o);
+ byNamedFilledCircleSector(@#)
+fi
+enddef;
+
+vardef byNamedFilledCircleSector (text filledCircleSectorList) =
+ image(
+ forsuffixes csN=filledCircleSectorList:
+ fill ((subpath
+ (getAttribute("filledCircleSector", "Begin", str csN),
+ getAttribute("filledCircleSector", "End", str csN))
+ of fullcircle) -- (0, 0) -- cycle)
+ scaled (getAttribute("filledCircleSector", "Diameter", str csN)*scaleFactor)
+ shifted (scantokens(getAttribute("filledCircleSector", "CenterName", str csN))*scaleFactor)
+ withcolor getAttribute("filledCircleSector", "Color", str csN);
+ endfor;
+ ) rotated globalRotation
+enddef;
+
+vardef byPolygonDefine@#(text pointsList)(suffix col) =
+if str @# = "":
+ byPolygonDefine.scantokens(byPolygonName(pointsList))(pointsList)(col);
+else:
+ save pL, pLraw, p, tn;
+ path p;
+ string pL, pLraw;
+ numeric tn;
+ pL := "";
+ pLraw := "";
+ p := forsuffixes pN=pointsList: pN -- endfor cycle;
+ tn := turningnumber(p);
+ forsuffixes pN=pointsList:
+ appendList(pL, str pN, -tn, false);
+ appendList(pLraw, str pN, 1, false);
+ endfor;
+ setAttribute("polygon", "Color", str @#, col);
+ setAttribute("polygon", "ColorName", str @#, str col);
+ setAttribute("polygon", "Transparency", str @#, 1);
+ setAttribute("polygon", "PointsList", str @#, pL);
+ setAttribute("polygon", "PointsListRaw", str @#, pLraw);
+ setAttribute("polygon", "Synonym", str @#, str @#);
+fi;
+enddef;
+
+vardef byPolygonPathFromList (expr pointsList) =
+ forsuffixes pN=scantokens(pointsList): pN -- endfor cycle
+enddef;
+
+vardef byPolygon@#(text pointsList)(suffix col) =
+if str @# = "":
+ byPolygon.scantokens(byPolygonName(pointsList))(pointsList)(col)
+else:
+ byPolygonDefine.@#(pointsList)(col);
+ byNamedPolygon(@#)
+fi
+enddef;
+
+vardef byPolygonName(text pointsList) =
+ save polygonName;
+ string polygonName;
+ polygonName := "";
+ forsuffixes pN=pointsList:
+ polygonName := polygonName & str pN;
+ endfor;
+ polygonName
+enddef;
+
+vardef byNamedPolygon (text polygonsList) =
+ save polyPath, polyCol, polyTransp, polyGhost, shadingFunctionExists;
+ path polyPath;
+ numeric polyTransp;
+ picture polyGhost;
+ boolean shadingFunctionExists;
+ image(
+ draw image(
+ forsuffixes pN=polygonsList:
+ polyPath := byPolygonPathFromList(getAttribute("polygon", "PointsList", str pN)) scaled scaleFactor;
+ defineColor.polyCol(getAttribute("polygon", "Color", str pN));
+ polyTransp := getAttribute("polygon", "Transparency", str pN);
+ if known shadingFor.scantokens(getAttribute("polygon", "ColorName", str pN)):
+ shadingFunctionExists := true;
+ else:
+ shadingFunctionExists := false;
+ fi;
+ if (not isWhite(polyCol)):
+ if not shadingFunctionExists:
+ fill polyPath
+ withcolor
+ if polyTransp = 1:
+ polyCol
+ else:
+ transparent(1, polyTransp, polyCol)
+ fi;
+ else:
+ shadingFunction.scantokens(getAttribute("polygon", "ColorName", str pN))
+ (polyPath, polyCol)(scantokens(getAttribute("polygon", "PointsListRaw", str pN)));
+ fi;
+ fi;
+ polyGhost := image(
+ if not shadingFunctionExists:
+ if (not isLight(polyCol)):
+ draw ghostPicture;
+ fi;
+ draw polyPath
+ withcolor polyCol
+ withpen pencircle scaled 2lineWidth;
+ fi;
+ );
+ clip polyGhost to polyPath;
+ draw polyGhost;
+ if (isLight(polyCol)) and not shadingFunctionExists:
+ draw (byPolygonPathFromList(getAttribute("polygon", "PointsList", str pN)) scaled scaleFactor)
+ withcolor selectOutlineColor.scantokens(getAttribute("polygon", "ColorName", str pN))
+ withpen pencircle scaled lineWidthThin;
+ fi;
+ if mainPictureMode and ghostLines:
+ save gP;
+ picture gP;
+ gP := ghostPicture;
+ ghostPicture := image(
+ draw gP;
+ draw polyPath withcolor white withpen pencircle scaled lineWidthHair;
+ );
+ fi;
+ endfor;
+ ) rotated globalRotation;
+ if (autoLabelingMode):
+ draw byLabelPolygon(-1)(polygonsList);
+ fi;
+ )
+enddef;
+
+vardef byMergePolygons (text polygonsList) =
+ save pointsList, preList, postList, mergedList, points, postPoints, i, j, k, l, m, n, o, iteration, beforeJoin, polygonChecked, pointChecked;
+ string pointsList[], preList[], postList[], mergedList, points[], postPoints[];
+ numeric l, m, n, o, iteration;
+ boolean beforeJoin, polygonChecked[], pointChecked[];
+ n := -1;
+ forsuffixes pN=polygonsList:
+ n := n + 1;
+ pointsList[n] := getAttribute("polygon", "PointsList", str pN);
+ polygonChecked[n] := false;
+ endfor;
+ if (n > 0):
+ iteration := -1;
+ m := -1;
+ forever:
+ preList0 := "";
+ postList0 := "";
+ beforeJoin := true;
+ iteration := iteration + 1;
+ l := -1;
+ forsuffixes i = scantokens(pointsList0):
+ l := l + 1;
+ if (l > m):
+ pointChecked[l] := false;
+ fi;
+ if (beforeJoin):
+ preList0 := preList0 & ", " & str i;
+ if (not pointChecked[l]):
+ for j := 1 step 1 until n:
+ if (beforeJoin and not polygonChecked[j]):
+ preList1 := "";
+ postList1 := "";
+ forsuffixes k=scantokens(pointsList[j]):
+ if (beforeJoin):
+ preList1 := preList1 & ", " & str k;
+ if (k = i):
+ beforeJoin := false;
+ polygonChecked[j] := true;
+ pointChecked[l] := true;
+ o := l;
+ fi;
+ else:
+ postList1 := postList1 & ", " & str k;
+ fi;
+ endfor;
+ fi;
+ endfor;
+ fi;
+ else:
+ postList0 := postList0 & ", " & str i;
+ fi;
+ endfor;
+ if (not beforeJoin):
+ mergedList := preList0 & postList1 & preList1 & postList0;
+ mergedList := substring (2, length(mergedList)) of mergedList;
+ pointsList0 := polygonCleanup(scantokens(mergedList));
+ if (length(pointsList0) < length(mergedList)):
+ pointChecked[o] := false;
+ mergedList := pointsList0;
+ fi;
+ m := l;
+ fi;
+ exitif(beforeJoin or (iteration > 100));
+ endfor;
+ else:
+ mergedList := pointsList0;
+ fi;
+ mergedList
+enddef;
+
+vardef polygonCleanup (text pointsList) =
+ save cleanedList, points, m, n, iteration;
+ string cleanedList, points[];
+ numeric m, n, iteration;
+ n := -1;
+ forsuffixes pL = pointsList:
+ n := n + 1;
+ points[n] := str pL;
+ endfor;
+ iteration := -1;
+ forever:
+ iteration := iteration + 1;
+ m := 0;
+ for i := 0 step 1 until n:
+ if (points[cycleval(i-2, n + 1)] = points[i]):
+ m := m + 2;
+ else:
+ points[cycleval(i-m, n + 1)] := points[i];
+ fi;
+ endfor;
+ n := n - m;
+ exitif((m = 0) or (iteration > 100));
+ endfor;
+ for i := 0 step 1 until n:
+ appendList(cleanedList, points[i], 1, false);
+ endfor;
+ cleanedList
+enddef;
+
+%
+% Angles
+%
+
+vardef byAngleDefine@#(suffix a, b, c)(expr col, sty) =
+if str @# = "":
+ byAngleDefine.scantokens(str a & str b & str c)(a, b, c)(col, sty);
+else:
+ if mainPictureMode:
+ appendList(pointAnglesList.b, str @#, 1, true);
+ appendList(anglePointsList, str b, 1, true);
+ fi;
+ save p, q, d, ad, ac, at;
+ path p;
+ picture q;
+ numeric ad, at;
+ boolean ac;
+ if autoRightAngles:
+ if isRightAngle(a, b, c):
+ at := 1;
+ else:
+ at := 0;
+ fi;
+ else:
+ at := 0;
+ fi;
+ p := byConstructAngleArc(a, b, c, at);
+ ad := angle(point (arctime arclength(p)/2 of p) of p);
+ if (ypart(unitvector(a-b) rotated -ad)) > 0:
+ ac := true;
+ else:
+ ac := false;
+ fi;
+ setAttribute("angle", "Arc", str @#, p);
+ setAttribute("angle", "ArcClockwise", str @#, ac);
+ setAttribute("angle", "ArcType", str @#, at);
+ setAttribute("angle", "Val", str @#, 180*arclength(p scaled 2)/pi);
+ setAttribute("angle", "AVal", str @#, angle(a-b));
+ setAttribute("angle", "CVal", str @#, angle(c-b));
+ setAttribute("angle", "Direction", str @#, ad);
+ setAttribute("angle", "Color", str @#, col);
+ setAttribute0("angle", "OptionalColor", str @#, byDefaultAngleOptionalColor);
+ setAttribute("angle", "Style", str @#, sty);
+ setAttribute("angle", "AName", str @#, str a);
+ setAttribute("angle", "BName", str @#, str b);
+ setAttribute("angle", "CName", str @#, str c);
+ setAttribute("angle", "ScaleCorrection", str @#, 1);
+ setAttribute("angle", "Standalone", str @#, 0);
+ setAttribute("angle", "Synonym", str @#, str @#);
+fi;
+enddef;
+
+vardef byConsiderAngleRight(suffix angleName) =
+ setAttribute("angle", "ArcType", str angleName, 1);
+enddef;
+
+vardef byConstructAngleArc (suffix a, b, c)(expr s) =
+ save p, d, cutTime, q;
+ pair d;
+ path p[];
+ color q[];
+ numeric cutTime[];
+ d := 1/2[unitvector(a-b),unitvector(c-b)];
+ if (abs(d) = 0):
+ d := (unitvector(a-c) rotated 90);
+ fi;
+ if (s = 0):
+ p0 := fullcircle;
+ if (attributeExists("point", "XYZ", str a)
+ and attributeExists("point", "XYZ", str b)
+ and attributeExists("point", "XYZ", str c)):
+ p0 := byFullCircleToPlane(
+ getAttribute("point", "XYZ", str a),
+ getAttribute("point", "XYZ", str b),
+ getAttribute("point", "XYZ", str c)
+ );
+ fi;
+ cutTime1 := xpart((p0 scaled angleSize) intersectiontimes ((0, 0)--(unitvector(a - b) scaled 2angleSize)));
+ cutTime2 := xpart((p0 scaled angleSize) intersectiontimes ((0, 0)--(unitvector(c - b) scaled 2angleSize)));
+ p1 := subpath (cutTime1, cutTime2) of p0;
+ p2 := subpath (cutTime1 - length(p0), cutTime2) of p0;
+ p3 := subpath (cutTime1 + length(p0), cutTime2) of p0;
+ if (arclength(p2) > arclength(p3)):
+ p4 := p3;
+ else:
+ p4 := p2;
+ fi;
+ if (arclength(p1) < arclength(p4)):
+ p4 := p1;
+ fi;
+ elseif (s = 1):
+ if (attributeExists("point", "XYZ", str a)
+ and attributeExists("point", "XYZ", str b)
+ and attributeExists("point", "XYZ", str c)):
+ q1 := unitvectorXYZ(pointXYZ.a - pointXYZ.b) colorrotated projectionAngle;
+ q3 := unitvectorXYZ(pointXYZ.c - pointXYZ.b) colorrotated projectionAngle;
+ q2 := q1 + q3;
+ p4 := 1/2(redpart(q1), greenpart(q1))
+ -- 1/2(redpart(q2), greenpart(q2))
+ -- 1/2(redpart(q3), greenpart(q3));
+ else:
+ p4 := 1/2unitvector(a - b)
+ -- 1/2(unitvector(a - b) + unitvector(c - b))
+ -- 1/2unitvector(c - b);
+ fi;
+ fi;
+ p4
+enddef;
+
+vardef byIsArcClockwise (expr p) =
+ save rv;
+ boolean rv;
+ if ypart(direction (1/2length(p)) of (p rotated -angle(point 1/2length(p) of p))) < 0:
+ rv := true;
+ else:
+ rv := false;
+ fi;
+ rv
+enddef;
+
+vardef byFullCircleToPlane (expr colPlaneA, colPlaneB, colPlaneC) =
+ save dvec, fvec, p;
+ color dvec;
+ pair fvec;
+ path p;
+ dvec := unitvectorXYZ((colPlaneA-colPlaneB) crossproduct (colPlaneC-colPlaneB));
+ dvec := dvec colorrotated projectionAngle;
+ fvec := (redpart dvec, greenpart dvec);
+ if (abs(fvec) > 0):
+ p := ((fullcircle rotated -angle(fvec)) xscaled sqrt(1-abs(fvec)**2)) rotated angle(fvec);
+ else:
+ p := fullcircle;
+ fi;
+ p
+enddef;
+
+vardef byAngle@#(suffix a, b, c)(expr col, sty) =
+if str @# = "":
+ byAngle.scantokens(str a & str b & str c)(a, b, c, col, sty)
+else:
+ byAngleDefine@#(a, b, c, col, sty);
+ byNamedAngle(@#)
+fi
+enddef;
+
+vardef byAngleDefineExtended@#(suffix a, b, c)(expr col, sty)(text optionalColors) =
+if str @# = "":
+ byAngleDefineExtended.scantokens(str a & str b & str c)(a, b, c)(col, sty)(optionalColors);
+else:
+ save n;
+ numeric n;
+ n := 0;
+ byAngleDefine.@#(a, b, c, col, sty);
+ forsuffixes oC=optionalColors:
+ setAttribute[n]("angle", "OptionalColor", str @#, oC);
+ n := n + 1;
+ endfor;
+fi;
+enddef;
+
+vardef byAngleExtended@#(suffix a, b, c)(expr col, sty)(text optionalColors) =
+if str @# = "":
+ byAngleExtended.scantokens(str a & str b & str c)(a, b, c)(col, sty)(optionalColors)
+else:
+ byAngleDefineExtended@#(a, b, c)(col, sty)(optionalColors);
+ byNamedAngle(@#)
+fi
+enddef;
+
+vardef byNamedAngle (text anglesList) =
+ save p, q, processedAL;
+ picture q;
+ path p;
+ string processedAL;
+ image(
+ processedAL := byProcessAnglesList(anglesList);
+ forsuffixes aN=scantokens(processedAL):
+ setAttribute("angle", "ScaleCorrection", str aN, angleScale);
+ p := byConstructAngleArc(
+ scantokens(getAttribute("angle", "AName", str aN)),
+ scantokens(getAttribute("angle", "BName", str aN)),
+ scantokens(getAttribute("angle", "CName", str aN)),
+ getAttribute("angle", "ArcType", str aN));
+ q := image(
+ if (getAttribute("angle", "Color", str aN) <> white):
+ if (typeOf(getAttribute("angle", "Style", str aN)) = "numeric"):
+ draw scantokens(byAngleMacroName[getAttribute("angle", "Style", str aN)]) (p, getAttribute("angle", "Color", str aN), angleOptionalColor.scantokens(angleSynonym.aN));
+ elseif (typeOf(getAttribute("angle", "Style", str aN)) = "string"):
+ draw scantokens("byAngleM" & getAttribute("angle", "Style", str aN)) (p, getAttribute("angle", "Color", str aN), angleOptionalColor.scantokens(angleSynonym.aN));
+ fi;
+ else:
+ draw byAngleMWhite(p, 0, 0);
+ fi;
+ if solidAngleMode and (textLabels and autoLabelingMode):
+ draw (p scaled (1/3angleScale*angleSize))--(0,0)--cycle withcolor white;
+ fill (p scaled (1/3angleScale*angleSize))--(0,0)--cycle withcolor white;
+ fi;
+ );
+ draw (q shifted (scantokens(getAttribute("angle", "BName", str aN)) scaled scaleFactor)) rotated globalRotation;
+ endfor;
+ )
+enddef;
+
+vardef byNamedSolidAngle (text anglesList) =
+ save solidAngleMode, processedAL, centerName, rv;
+ boolean solidAngleMode;
+ string processedAL, centerName;
+ processedAL := byProcessAnglesList(anglesList);
+ solidAngleMode := true;
+ image(
+ forsuffixes aN := scantokens(processedAL):
+ centerName := getAttribute("angle", "BName", str aN);
+ endfor;
+ draw byNamedAngle(anglesList);
+ if (textLabels and autoLabelingMode):
+ draw byTextLabel(pointLabel)(centerName, scantokens(centerName), 0, 0);
+ fi;
+ )
+enddef;
+
+vardef byProcessAnglesList@#(text anglesListToProcess)=
+ save processedAnglesList, compoundAngleString, splitAnglePoints;
+ string processedAnglesList, compoundAngleString, splitAnglePoints;
+ processedAnglesList := "";
+ splitAnglePoints := "";
+ forsuffixes aN=anglesListToProcess:
+ if attributeExists("angle", "Synonym", str aN):
+ appendList(processedAnglesList, str aN, 1, false);
+ else:
+ splitAnglePoints := bySplitStringIntoAngles(str aN);
+ if (known aN) and (length(splitAnglePoints) = 0):
+ compoundAngleString := pointAnglesList.aN;
+ else:
+ compoundAngleString := byConstructCompoundAngle(scantokens(splitAnglePoints));
+ fi;
+ if compoundAngleString <> "":
+ appendList(processedAnglesList, compoundAngleString, 1, false);
+ if str @# <> "":
+ appendList(@#, splitAnglePoints, 1, false);
+ fi;
+ else:
+ errmessage("Unknown angle: " & str aN);
+ fi;
+ fi;
+ endfor;
+ processedAnglesList
+enddef;
+
+string byAngleMacroName[];
+byAngleMacroName[-2] := "byAngleMWhite";
+byAngleMacroName[-1] := "byAngleMThinLine";
+byAngleMacroName[0] := "byAngleMSolid";
+byAngleMacroName[1] := "byAngleMLine";
+byAngleMacroName[2] := "byAngleMDashedLine";
+
+vardef byAngleMWhite (expr angleArc, angleColor)(suffix angleOptionalColors) =
+ save p;
+ path p;
+ p := angleArc scaled ((angleScale*angleSize) - lineWidthThin);
+ image(
+ fill ((0, 0)--p--cycle) withcolor white;
+ draw p withpen pencircle scaled lineWidthThin withcolor black;
+ )
+enddef;
+
+vardef byAngleMSolid (expr angleArc, angleColor)(suffix angleOptionalColors) =
+ save p;
+ path p;
+ p := angleArc scaled (angleScale*angleSize);
+ image(
+ fill ((0, 0)--p--cycle) withcolor angleColor;
+ )
+enddef;
+
+vardef byAngleMLine (expr angleArc, angleColor)(suffix angleOptionalColors) =
+ save p, rv;
+ path p[];
+ picture rv;
+ p0 := angleArc scaled ((angleScale*angleSize) - lineWidth);
+ p1 := (0, 0)--p0--cycle;
+ p2 := (0, 0)--(angleArc scaled (angleScale*angleSize))--cycle;
+ rv := image(
+ if (angleOptionalColors[0] <> bytransparent):
+ fill p2 withcolor angleOptionalColors[0];
+ fi;
+ draw p0 withpen pencircle scaled lineWidth withcolor angleColor;
+ );
+ clip rv to p2;
+ rv
+enddef;
+
+vardef byAngleMThinLine (expr angleArc, angleColor)(suffix angleOptionalColors) =
+ save p;
+ path p;
+ p := angleArc scaled ((angleScale*angleSize) - lineWidthThin);
+ image(
+ if (angleOptionalColors[0] <> bytransparent):
+ fill ((0, 0)--p--cycle) withcolor angleOptionalColors[0];
+ fi;
+ draw p withpen pencircle scaled lineWidthThin withcolor angleColor;
+ )
+enddef;
+
+vardef byAngleMDashedLine (expr angleArc, angleColor)(suffix angleOptionalColors) =
+ save p, q;
+ path p;
+ p := angleArc scaled ((angleScale*angleSize) - lineWidth);
+ image(
+ if (angleOptionalColors[0] <> bytransparent):
+ fill (p--(0,0)--cycle) withcolor angleOptionalColors[0];
+ fi;
+ draw p withpen pencircle scaled lineWidth withcolor angleColor dashed byDashPattern(arclength(p), 1);
+ draw (0,0); % draws nothing. for some reason dashing seems to "leak" without this.
+ )
+enddef;
+
+% Following monstrosity draws dummy sides for angles which require them,
+% essentially, it takes a list of angles, checks if they all are constructed
+% on one point; then it browses through all angles, finds their sides
+% and counts them; ones that occur twice it draws as is; ones that occur
+% once it shifts inside an angle; and after that it clips everything
+% to angle outline.
+vardef byNamedAngleSidesFull (text anglesList)(text linesList)=
+ save centerName, uniqueCenter, angleGenArc, angleDir, angleCount, angleType, angleSide, anglePart, angleNum, angleCheck,
+ ac, as, p, n, compoundAnglePath, compoundAngleArc, b, e, outputImage, lineCol, lineTh, lineDash, pointName, scaleToUse,
+ processedAnglesList, processedLinesList,
+ planePoints, threeDMode, projectedCircle, labelVector,
+ enteredAnglePointsList, pointNameToUse;
+ string centerName, pointName[], processedAnglesList, processedLinesList,enteredAnglePointsList, pointNameToUse;
+ pair ac, p[], labelVector;
+ boolean uniqueCenter, angleCheck, doNotLabelCenter, threeDMode;
+ numeric angleDir[], angleCount[], angleType[], angleSide[], angleNum, anglePart[], as[], n[], b, e, lineTh, lineDash, scaleToUse;
+ path angleGenArc, compoundAnglePath, compoundAngleArc, projectedCircle;
+ color planePoints[];
+ picture outputImage;
+ centerName := "";
+ uniqueCenter := true;
+ doNotLabelCenter := false;
+ scaleToUse := -1;
+ enteredAnglePointsList := "";
+ processedAnglesList := byProcessAnglesList.enteredAnglePointsList(anglesList);
+ forsuffixes lN=linesList:
+ appendList(processedLinesList, str lN, 1, false);
+ endfor;
+ threeDMode := false;
+ forsuffixes aN=scantokens(processedAnglesList):
+ ac := scantokens(getAttribute("angle", "BName", str aN));
+ if (centerName = ""):
+ centerName := getAttribute("angle", "BName", str aN);
+ if (attributeExists("point", "XYZ", getAttribute("angle", "AName", str aN))
+ and attributeExists("point", "XYZ", getAttribute("angle", "BName", str aN))
+ and attributeExists("point", "XYZ", getAttribute("angle", "CName", str aN))):
+ threeDMode := true;
+ planePoints1 := getAttribute("point", "XYZ", getAttribute("angle", "AName", str aN));
+ planePoints2 := getAttribute("point", "XYZ", getAttribute("angle", "BName", str aN));
+ planePoints3 := getAttribute("point", "XYZ", getAttribute("angle", "CName", str aN));
+ projectedCircle := byFullCircleToPlane(planePoints1, planePoints2, planePoints3);
+ else:
+ projectedCircle := fullcircle;
+ fi;
+ elseif (centerName <> getAttribute("angle", "BName", str aN)):
+ uniqueCenter := false;
+ elseif threeDMode:
+ if (not isInPlane(getAttribute("point", "XYZ", getAttribute("angle", "AName", str aN)),
+ planePoints1, planePoints2, planePoints3))
+ or (not isInPlane(getAttribute("point", "XYZ", getAttribute("angle", "CName", str aN)),
+ planePoints1, planePoints2, planePoints3)):
+ errmessage("The angles " & processedAnglesList & " are not coplanar");
+ fi;
+ fi;
+ if (getAttribute("angle", "Standalone", str aN) > 1):
+ doNotLabelCenter := true;
+ fi;
+ if (getAttribute("angle", "ScaleCorrection", str aN) <> angleScale)
+ and (getAttribute("angle", "ScaleCorrection", str aN) > scaleToUse):
+ scaleToUse := getAttribute("angle", "ScaleCorrection", str aN);
+ fi;
+ endfor;
+ if (length(processedLinesList) = 0):
+ if (known pointLinesList.scantokens(centerName)):
+ processedLinesList := pointLinesList.scantokens(centerName);
+ fi;
+ fi;
+ if (scaleToUse < 0):
+ scaleToUse := angleScale;
+ fi;
+ outputImage := image(
+ startTempAngleScale(scaleToUse);
+ if (uniqueCenter):
+ angleNum := 0;
+ forsuffixes aN=scantokens(processedAnglesList):
+ angleGenArc := byConstructAngleArc(
+ scantokens(getAttribute("angle", "AName", str aN)),
+ scantokens(getAttribute("angle", "BName", str aN)),
+ scantokens(getAttribute("angle", "CName", str aN)),
+ getAttribute("angle", "ArcType", str aN));
+ anglePart1 := angle(point 0 of angleGenArc);
+ as1 := sign(ypart((direction 0 of angleGenArc) rotated -anglePart1));
+ anglePart2 := angle(point 0 of reverse(angleGenArc));
+ as2 := sign(ypart((direction 0 of reverse(angleGenArc)) rotated -anglePart2));
+ for j=1,2:
+ angleCheck := true;
+ for i := 1 step 1 until angleNum:
+ if ((abs(angleDir[i] - anglePart[j]) mod 360) < 1):
+ angleCount[i] := angleCount[i] + 1;
+ angleCheck := false;
+ if ((getAttribute("angle", "Style", str aN) = 0)
+ or ((getAttribute0("angle", "OptionalColor", str aN) <> white)
+ and (getAttribute0("angle", "OptionalColor", str aN) <> bytransparent)))
+ and (getAttribute("angle", "ArcType", str aN) <> 1):
+ angleType[i] := 0;
+ fi;
+ fi;
+ endfor;
+ if angleCheck:
+ angleNum := angleNum + 1;
+ angleDir[angleNum] := anglePart[j];
+ angleSide[angleNum] := as[j];
+ if ((getAttribute("angle", "Style", str aN) <> 0)
+ and (isWhite(getAttribute0("angle", "OptionalColor", str aN))
+ or (getAttribute0("angle", "OptionalColor", str aN) = bytransparent)))
+ or ((getAttribute("angle", "Style", str aN) = 0)
+ and isWhite(getAttribute("angle", "Color", str aN)))
+ or (getAttribute("angle", "ArcType", str aN) = 1):
+ angleType[angleNum] := 1;
+ else:
+ angleType[angleNum] := 0;
+ fi;
+ if (j = 1):
+ if (getAttribute("angle", "Standalone", str aN) > 0):
+ pointName[angleNum] := "";
+ else:
+ pointName[angleNum] := getAttribute("angle", "AName", str aN);
+ fi;
+ elseif (j = 2):
+ if (getAttribute("angle", "Standalone", str aN) > 0):
+ pointName[angleNum] := "";
+ else:
+ pointName[angleNum] := getAttribute("angle", "CName", str aN);
+ fi;
+ fi;
+ angleCount[angleNum] := 1;
+ fi;
+ endfor;
+ endfor;
+ j := 0;
+ for i := 1 step 1 until angleNum:
+ if (angleCount[i] = 1):
+ j := j + 1;
+ n[j] := i;
+ fi;
+ if (angleType[i] <> 0):
+ p1 := (ac*scaleFactor);
+ p2 := ((dir(angleDir[i]) scaled (1/2angleSize * angleScale))) shifted p1;
+ defineColor.lineCol(black);
+ lineDash := 0;
+ lineTh := 1;
+ forsuffixes lN=scantokens(processedLinesList):
+ if (getAttribute("line", "EndAName", str lN) = centerName):
+ if (abs(angle(
+ scantokens(getAttribute("line", "EndBName", str lN))
+ - scantokens(getAttribute("line", "EndAName", str lN)))
+ - angleDir[i]) < 1):
+ defineColor.lineCol(getAttribute("line", "Color", str lN));
+ lineDash := getAttribute("line", "Dashed", str lN);
+ lineTh := getAttribute("line", "Thin", str lN);
+ fi;
+ elseif (getAttribute("line", "EndBName", str lN) = centerName):
+ if (abs(angle(
+ scantokens(getAttribute("line", "EndAName", str lN))
+ - scantokens(getAttribute("line", "EndBName", str lN)))
+ - angleDir[i]) < 1):
+ defineColor.lineCol(getAttribute("line", "Color", str lN));
+ lineDash := getAttribute("line", "Dashed", str lN);
+ lineTh := getAttribute("line", "Thin", str lN);
+ fi;
+ fi;
+ endfor;
+ if (angleCount[i] > 1):
+ draw byLineRender (p1, p2, lineCol, lineDash, lineTh, p1, p2, t, 0, 0, 1);
+ else:
+ draw byLineRender (p1, p2, lineCol, lineDash, lineTh, p1, p2, 0, 0, -angleSide[i], 1);
+ fi;
+ fi;
+ endfor;
+ if (j = 2):
+ if not threeDMode:
+ b := (angleDir[n[1]]/360)*8;
+ e := (angleDir[n[2]]/360)*8;
+ else:
+ b := xpart(projectedCircle intersectiontimes ((0, 0) -- dir(angleDir[n[1]])*10));
+ e := xpart(projectedCircle intersectiontimes ((0, 0) -- dir(angleDir[n[2]])*10));
+ fi;
+ if (b > e): b := b - length(projectedCircle); fi;
+ if (angleSide[n[1]] > angleSide[n[2]]):
+ compoundAngleArc := ((subpath (b, e) of projectedCircle) scaled (angleScale*angleSize)) shifted (ac*scaleFactor);
+ else:
+ compoundAngleArc := ((subpath (b + 8, e) of projectedCircle) scaled (angleScale*angleSize)) shifted (ac*scaleFactor);
+ fi;
+ compoundAnglePath := compoundAngleArc -- (ac*scaleFactor) -- cycle;
+ elseif (j <> 0):
+ errmessage("There are gaps in a compound angle");
+ fi;
+ else:
+ errmessage("The angles are not concentric");
+ fi;
+ stopTempAngleScale;
+ );
+ if (known compoundAnglePath):
+ clip outputImage to compoundAnglePath;
+ fi;
+ image(
+ startTempAngleScale(scaleToUse);
+ draw outputImage rotated globalRotation;
+ if (textLabels and autoLabelingMode) and (j=2) and (known compoundAnglePath):
+ for i=1,2:
+ if not threeDMode:
+ labelVector := dir(angleDir[n[i]]);
+ else:
+ labelVector := (projectedCircle intersectionpoint ((0, 0) -- dir(angleDir[n[i]])*10)) scaled 2;
+ fi;
+ pointNameToUse := pointName[n[i]];
+ if length(enteredAnglePointsList) > 0:
+ show(enteredAnglePointsList);
+ forsuffixes j = scantokens(enteredAnglePointsList):
+ if (str j <> centerName):
+ if ((abs(
+ angle(scantokens(pointNameToUse) - scantokens(centerName))
+ - angle(j - scantokens(centerName))
+ ) mod 360) < 1):
+ pointNameToUse := str j;
+ fi;
+ fi;
+ endfor;
+ fi;
+ draw byTextLabel(pointLabel)(pointNameToUse,
+ ac + (labelVector*1/2angleSize*angleScale)/scaleFactor, angleDir[n[i]], textLabelShift);
+ endfor;
+ if not doNotLabelCenter:
+ draw byTextLabel(pointLabel)(centerName, ac, angle((point (arctime(1/2arclength(compoundAngleArc)) of compoundAngleArc) of compoundAngleArc) shifted (-ac*scaleFactor)) + 180, textLabelShift);
+ fi;
+ fi;
+ stopTempAngleScale;
+ )
+enddef;
+
+vardef byNamedAngleDummySides(text anglesList)=
+ byNamedAngleSidesFull(anglesList)(noLine)
+enddef;
+
+vardef byNamedAngleSides(text anglesList)(text linesList) =
+ image(
+ draw byNamedAngle(anglesList);
+ draw byNamedAngleSidesFull(anglesList)(linesList);
+ )
+enddef;
+
+vardef byNamedAngleWithDummySides(text anglesList)=
+ image(
+ draw byNamedAngle(anglesList);
+ draw byNamedAngleDummySides(anglesList);
+ )
+enddef;
+
+vardef byNamedAngleResized (text anglesToUse) =
+ save modAnglesList, modAnglesListNew, anglesToDraw, anglesAdded, angleIsAdded, useThisAngle, sc, v, numOfAngles, i, j, k;
+ string modAnglesList, modAnglesListNew, anglesToDraw;
+ numeric anglesAdded, sc, v, numOfAngles;
+ boolean angleIsAdded, useThisAngle;
+ numOfAngles := 0;
+ forsuffixes k=anglesToUse:
+ if (length(str k) > 0):
+ if typeOf(getAttribute("angle", "Synonym", str k)) <> "string":
+ errmessage("Angle " & str k & " is missing");
+ fi;
+ numOfAngles := numOfAngles + 1;
+ fi;
+ endfor;
+ image(
+ forsuffixes i=scantokens(anglePointsList):
+ modAnglesList := pointAnglesList.i;
+ modAnglesListNew := "";
+ forsuffixes j=scantokens(modAnglesList):
+ if (numOfAngles > 0):
+ useThisAngle := false;
+ forsuffixes k=anglesToUse:
+ if (getAttribute("angle", "Synonym", str j) = getAttribute("angle", "Synonym", str k)):
+ useThisAngle := true;
+ fi;
+ endfor;
+ else:
+ useThisAngle := true;
+ fi;
+ if (useThisAngle):
+ if (length(modAnglesListNew) = 0):
+ modAnglesListNew := str j;
+ else:
+ modAnglesListNew := str j & ", " & modAnglesListNew;
+ fi;
+ fi;
+ endfor;
+ modAnglesList := modAnglesListNew;
+ if (length(modAnglesList)>0):
+ forever:
+ anglesToDraw := "";
+ forever:
+ modAnglesListNew := "";
+ anglesAdded := 0;
+ forsuffixes j=scantokens(modAnglesList):
+ if (length(anglesToDraw) = 0):
+ anglesToDraw := str j;
+ else:
+ forsuffixes k=scantokens(anglesToDraw):
+ if ((abs(getAttribute("angle", "AVal", str k) - getAttribute("angle", "AVal", str j)) mod 360) < 1)
+ or ((abs(getAttribute("angle", "CVal", str k) - getAttribute("angle", "AVal", str j)) mod 360) < 1)
+ or ((abs(getAttribute("angle", "AVal", str k) - getAttribute("angle", "CVal", str j)) mod 360) < 1)
+ or ((abs(getAttribute("angle", "CVal", str k) - getAttribute("angle", "CVal", str j)) mod 360) < 1):
+ appendList(anglesToDraw, str j, 1, true);
+ anglesAdded := anglesAdded + 1;
+ fi;
+ endfor;
+ fi;
+ endfor;
+ forsuffixes j=scantokens(modAnglesList):
+ angleIsAdded := false;
+ forsuffixes k=scantokens(anglesToDraw):
+ if ((str j) = (str k)):
+ angleIsAdded := true;
+ fi;
+ endfor;
+ if not angleIsAdded:
+ appendList(modAnglesListNew, str j, 1, false);
+ fi;
+ endfor;
+ modAnglesList := modAnglesListNew;
+ exitif (anglesAdded = 0) or (length(modAnglesList)=0);
+ endfor;
+ v := 0;
+ forsuffixes k=scantokens(anglesToDraw):
+ %v := v + angleVal.k;
+ if (getAttribute("angle", "Val", str k) > v): v := getAttribute("angle", "Val", str k); fi;
+ endfor;
+ sc := angleOpticalScale(v);
+ startTempAngleScale(angleScale*sc);
+ draw byNamedAngle(scantokens(anglesToDraw));
+ stopTempAngleScale;
+ exitif (length(modAnglesList)=0);
+ endfor;
+ fi;
+ endfor;
+ )
+enddef;
+
+vardef generateAngleSynonyms =
+ if string anglePointsList:
+ save n, candidateName, originalName;
+ numeric n;
+ string candidateName[], originalName;
+ forsuffixes i=scantokens(anglePointsList):
+ n := 0;
+ pointAnglesList.i := sortPointAnglesList(pointAnglesList.i);
+ forsuffixes j=scantokens(pointAnglesList.i):
+ if (length(str j) > 0):
+ n := n + 1;
+ originalName := str j;
+ candidateName0 := getAttribute("angle", "BName", originalName);
+ candidateName1 := getAttribute("angle", "AName", originalName)
+ & getAttribute("angle", "BName", originalName)
+ & getAttribute("angle", "CName", originalName);
+ candidateName2 := getAttribute("angle", "CName", originalName)
+ & getAttribute("angle", "BName", originalName)
+ & getAttribute("angle", "AName", originalName);
+ if not string getAttribute("angle", "Synonym", candidateName1):
+ setAttribute("angle", "SynonymPartial", candidateName1, false);
+ setAttribute("angle", "Synonym", candidateName1, originalName);
+ fi;
+ if not string getAttribute("angle", "Synonym", candidateName2):
+ setAttribute("angle", "SynonymPartial", candidateName2, false);
+ setAttribute("angle", "Synonym", candidateName2, originalName);
+ fi;
+ fi;
+ endfor;
+ if (n = 1):
+ if not string getAttribute("angle", "Synonym", candidateName0):
+ setAttribute("angle", "SynonymPartial", candidateName0, false);
+ setAttribute("angle", "Synonym", candidateName0, originalName);
+ fi;
+ fi;
+ endfor;
+ fi;
+enddef;
+
+vardef sortPointAnglesList (expr anglesListToSort) =
+ save preList, postList, nPre, nPost, isSorted, value, firstValue, lastValue, rv;
+ string preList, postList, rv;
+ boolean isSorted;
+ numeric value, firstValue, lastValue, nPre, nPost;
+ lastValue := -360;
+ isSorted := true;
+ preList := "";
+ postList := "";
+ nPre := 0;
+ nPost := 0;
+ forsuffixes i=scantokens(anglesListToSort):
+ value := getAttribute("angle", "Direction", str i);
+ if (unknown firstValue):
+ firstValue := value;
+ appendList(postList, str i, 0, true);
+ fi;
+ if (value < firstValue):
+ appendList(preList, str i, 0, true);
+ nPre := nPre + 1;
+ else:
+ appendList(postList, str i, 0, true);
+ nPost := nPost + 1;
+ fi;
+ if (lastValue > value):
+ isSorted := false;
+ fi;
+ lastValue := value;
+ endfor;
+ if (isSorted):
+ rv := anglesListToSort;
+ else:
+ if (nPre > 1):
+ preList := sortPointAnglesList(preList);
+ fi;
+ if (nPre > 0):
+ preList := preList & ", ";
+ fi;
+ if (nPost > 1):
+ postList := sortPointAnglesList(postList);
+ fi;
+ rv := preList & postList;
+ fi;
+ rv
+enddef;
+
+vardef bySplitStringIntoAngles (expr angleName) =
+ save pointA, pointB, pointC, cPointA, cPointB, cPointC, n;
+ string pointA, pointB, pointC, cPointA, cPointB, cPointC, rv;
+ numeric n;
+ n := 0;
+ for i := 1 step 1 until (length(angleName) - 2):
+ for j := i + 1 step 1 until (length(angleName) - 1):
+ cPointA := substring (0, i) of angleName;
+ cPointB := substring (i, j) of angleName;
+ cPointC := substring (j, length(angleName)) of angleName;
+ if known scantokens(cPointA):
+ if known scantokens(cPointB):
+ if known scantokens(cPointC):
+ n := n + 1;
+ pointA := cPointA;
+ pointB := cPointB;
+ pointC := cPointC;
+ fi;
+ fi;
+ fi;
+ endfor;
+ endfor;
+ if (known scantokens(angleName)) and (n = 0):
+ rv := "";
+ else:
+ if n = 0:
+ errmessage("Can't find points for angle: " & lineName);
+ fi;
+ if n > 1:
+ errmessage("Ambiguous angle name: " & lineName);
+ fi;
+ rv := pointA & ", " & pointB & ", " & pointC;
+ fi;
+ rv
+enddef;
+
+vardef byConstructCompoundAngle (suffix pointA, pointB, pointC) =
+ save angleList, isFirst, isLast, cwA, cwC, cwAName, cwCName, dirA, dirC, rv, threeDMode, notInPlane;
+ string cwAName, cwCName, angleList, rv;
+ boolean isFirst, isLast, threeDMode, notInPlane;
+ pair cwA, cwC, dirA, dirC;
+ angleList := "";
+ dirA := pointA - pointB;
+ dirC := pointC - pointB;
+ threeDMode := false;
+ if byIsPointInSpace(pointA, pointB, pointC):
+ threeDMode := true;
+ fi;
+ isFirst := false;
+ isLast := false;
+ forsuffixes i=scantokens(pointAnglesList.pointB & ", " & pointAnglesList.pointB):
+ if byIsArcClockwise(byConstructAngleArc(
+ scantokens(getAttribute("angle", "AName", str i)),
+ scantokens(getAttribute("angle", "BName", str i)),
+ scantokens(getAttribute("angle", "CName", str i)),
+ getAttribute("angle", "ArcType", str i))):
+ cwAName := getAttribute("angle", "CName", str i);
+ cwCName := getAttribute("angle", "AName", str i);
+ else:
+ cwAName := getAttribute("angle", "AName", str i);
+ cwCName := getAttribute("angle", "CName", str i);
+ fi;
+ cwA := scantokens(cwAName) - scantokens(getAttribute("angle", "BName", str i));
+ cwC := scantokens(cwCName) - scantokens(getAttribute("angle", "BName", str i));
+ notInPlane := false;
+ if threeDMode:
+ if (not isInPlane(pointXYZ.scantokens(cwAName),
+ pointXYZ.pointA,
+ pointXYZ.pointB,
+ pointXYZ.pointC))
+ or (not isInPlane(pointXYZ.scantokens(cwCName),
+ pointXYZ.pointA,
+ pointXYZ.pointB,
+ pointXYZ.pointC)):
+ notInPlane := true;
+ fi;
+ fi;
+ if not notInPlane:
+ if ((abs(angle(dirA) - angle(cwA)) mod 360) < 1) and (not isFirst):
+ isFirst := true;
+ fi;
+ if isFirst and not isLast:
+ appendList(angleList, str i, 1, true)
+ fi;
+ if ((abs(angle(dirC) - angle(cwC)) mod 360) < 1) and isFirst:
+ isLast := true;
+ fi;
+ fi;
+ endfor;
+ if (not isFirst) or (not isLast):
+ errmessage("Can't construct angle: " & str pointA & str pointB & str pointC);
+ fi;
+ rv := angleList;
+ rv
+enddef;
+
+vardef twoRightAngles =
+ save textLabels;
+ boolean textLabels;
+ textLabels := false;
+ image(
+ draw byNamedAngle(rightAngleWN,rightAngleNE);
+ draw byNamedAngleDummySides(rightAngleWN,rightAngleNE);
+ )
+enddef;
+
+vardef rightAngle =
+ save textLabels;
+ boolean textLabels;
+ textLabels := false;
+ image(
+ draw byNamedAngle(rightAngleWN);
+ draw byNamedAngleDummySides(rightAngleWN);
+ )
+enddef;
+
+% Angles we often need
+pair pointN, pointE, pointS, pointW, pointO;
+pointN := (0, 2angleSize*angleScale);
+pointE := (2angleSize*angleScale, 0);
+pointS := (0, -2angleSize*angleScale);
+pointW := (-2angleSize*angleScale, 0);
+pointO := (0, 0);
+
+vardef byDefineGenericRightAngles(expr angleInsteadOfArc) =
+ byAngleDefine.rightAngleNE (pointN, pointO, pointE)(black, 1);
+ byAngleDefine.rightAngleES (pointE, pointO, pointS)(black, 1);
+ byAngleDefine.rightAngleSW (pointS, pointO, pointW)(black, 1);
+ byAngleDefine.rightAngleWN (pointW, pointO, pointN)(black, 1);
+ if (angleInsteadOfArc):
+ byConsiderAngleRight(rightAngleNE);
+ byConsiderAngleRight(rightAngleES);
+ byConsiderAngleRight(rightAngleSW);
+ byConsiderAngleRight(rightAngleWN);
+ fi;
+enddef;
+
+byDefineGenericRightAngles(false);
+
+%
+% Arrows
+%
+
+def commonArrowSettings =
+ save ahlength, ahangle;
+ ahlength := 7pt;
+ ahangle := 30;
+enddef;
+
+vardef byRotationArrowDefine@#(suffix axisA, axisB, pointA) (expr ang, col, sty) =
+if str @# = "":
+ byRotationArrowDefine.scantokens(str axisA & str axisB & str pointA)(axisA, axisB, pointA) (ang, col, sty);
+else:
+ setAttribute("rotationarrow", "AxisA", str @#, axisA);
+ setAttribute("rotationarrow", "AxisB", str @#, axisB);
+ setAttribute("rotationarrow", "Point", str @#, pointA);
+ setAttribute("rotationarrow", "AxisAName", str @#, str axisA);
+ setAttribute("rotationarrow", "AxisBName", str @#, str axisB);
+ setAttribute("rotationarrow", "PointName", str @#, str pointA);
+ setAttribute("rotationarrow", "Angle", str @#, ang);
+ setAttribute("rotationarrow", "Color", str @#, col);
+ setAttribute("rotationarrow", "Style", str @#, sty);
+ setAttribute("rotationarrow", "Synonym", str @#, str @#);
+fi;
+enddef;
+
+vardef byGenerateRotationArrowPath (expr axisA, axisB, pointA, ang) =
+ save arrowPath, spacePoint;
+ path arrowPath;
+ color spacePoint;
+ spacePoint := pointA colorrotated projectionAngle;
+ arrowPath := (redpart(spacePoint), greenpart(spacePoint));
+ for i := 0 step (ang/floor(ang/5)) until ang:
+ spacePoint := byRotateAroundAxis (axisA, axisB, i, pointA) colorrotated projectionAngle;
+ arrowPath := arrowPath -- (redpart(spacePoint), greenpart(spacePoint));
+ endfor;
+ arrowPath
+enddef;
+
+vardef byNamedRotationArrow (text arrowsList) =
+ save arrowPath, arrowPoint, arrowStyle;
+ path arrowPath;
+ color arrowPoint;
+ numeric arrowStyle;
+ commonArrowSettings;
+ image(
+ forsuffixes aN=arrowsList:
+ arrowPath := byGenerateRotationArrowPath(
+ pointXYZ.scantokens(getAttribute("rotationarrow", "AxisAName", str aN)),
+ pointXYZ.scantokens(getAttribute("rotationarrow", "AxisBName", str aN)),
+ pointXYZ.scantokens(getAttribute("rotationarrow", "PointName", str aN)),
+ getAttribute("rotationarrow", "Angle", str aN)
+ ) scaled scaleFactor;
+ arrowStyle := getAttribute("rotationarrow", "Style", str aN);
+ if arrowStyle = 0:
+ arrowPath := subpath (0, (arctime (arclength(arrowPath) - ahlength) of arrowPath)) of arrowPath;
+ drawarrow arrowPath withpen (pencircle scaled lineWidthThin) withcolor getAttribute("rotationarrow", "Color", str aN);
+ else:
+ arrowPath := subpath ((arctime ahlength of arrowPath), (arctime (arclength(arrowPath) - ahlength) of arrowPath)) of arrowPath;
+ drawdblarrow arrowPath withpen (pencircle scaled lineWidthThin) withcolor getAttribute("rotationarrow", "Color", str aN);
+ fi;
+ endfor;
+ ) rotated globalRotation
+enddef;
+
+vardef byFlatArrowDefine@#(suffix pointA, pointB) (expr col, sty, typ) =
+if str @# = "":
+ byFlatArrowDefine.scantokens(str pointA & str pointB)(pointA, pointB) (col, sty, typ);
+else:
+ setAttribute("flatarrow", "PointA", str @#, pointA);
+ setAttribute("flatarrow", "PointB", str @#, pointB);
+ setAttribute("flatarrow", "PointAName", str @#, str pointA);
+ setAttribute("flatarrow", "PointBName", str @#, str pointB);
+ setAttribute("flatarrow", "Type", str @#, typ);
+ setAttribute("flatarrow", "Color", str @#, col);
+ setAttribute("flatarrow", "Style", str @#, sty);
+ setAttribute("flatarrow", "Synonym", str @#, str @#);
+fi;
+enddef;
+
+vardef byNamedFlatArrow (text arrowsList) =
+ save arrowPath, arrowStyle, arrowPoint;
+ path arrowPath;
+ numeric arrowStyle;
+ pair arrowPoint[];
+ commonArrowSettings;
+ image(
+ forsuffixes aN=arrowsList:
+ arrowType := getAttribute("flatarrow", "Type", str aN);
+ arrowStyle := getAttribute("flatarrow", "Style", str aN);
+ arrowPoint1 := scantokens(getAttribute("flatarrow", "PointAName", str aN));
+ arrowPoint2 := scantokens(getAttribute("flatarrow", "PointBName", str aN));
+ if arrowType = 0:
+ arrowPath := arrowPoint1 -- arrowPoint2;
+ elseif arrowType = 1:
+ arrowPath := arrowPoint1
+ .. 1/2[arrowPoint1, arrowPoint2]
+ shifted (((arrowPoint2 - arrowPoint1) scaled 1/8) rotated 90)
+ .. arrowPoint2;
+ fi;
+ arrowPath := arrowPath scaled scaleFactor;
+ if arrowStyle = 0:
+ arrowPath := subpath (
+ 0,
+ arctime (arclength(arrowPath) - ahlength) of arrowPath
+ ) of arrowPath;
+ drawarrow arrowPath withpen (pencircle scaled lineWidthThin) withcolor getAttribute("flatarrow", "Color", str aN);
+ else:
+ arrowPath := subpath (
+ arctime ahlength of arrowPath,
+ arctime (arclength(arrowPath) - ahlength) of arrowPath
+ ) of arrowPath;
+ drawdblarrow arrowPath withpen (pencircle scaled lineWidthThin) withcolor getAttribute("flatarrow", "Color", str aN);
+ fi;
+ endfor;
+ ) rotated globalRotation
+enddef;
+
+%
+% Spheres
+%
+
+%vardef bySphereDefine@#(expr ox, oy, oz, r) =
+%if str @# = "":
+% errmessage("bySphereDefine needs a name (bySphereDefine.somename...)");
+%else:
+% if mainPictureMode:
+% appendList(allSpheresList, str @#, 1, true);
+% fi;
+% setAttribute("sphere", "XYZ", str @#, (ox, oy, oz));
+% setAttribute("sphere", "radius", str @#, r);
+%fi;
+%enddef;
+%
+%vardef byNamedSphere (test spheresList) =
+% image(
+% forsuffixes cN=spheresList:
+% endfor;
+% )
+%enddef;
+%
+%vardef byFindSpheresIntersection (text spheresList) =
+%enddef;
+
+%
+% Magnitudes
+%
+
+% along with 'magnitudesymbol' one symbol long 'magnitude' is also defined at the same time.
+vardef byMagnitudeSymbolDefine@#(expr shp, col, sty) =
+if str @# = "":
+ byMagnitudeSymbolDefine.scantokens(shp)(shp, col, sty);
+else:
+ setAttribute("magnitude", "Color", str @#, col);
+ setAttribute("magnitude", "Shape", str @#, shp);
+ setAttribute("magnitude", "Style", str @#, sty);
+ setAttribute1("magnitude", "Symbol", str @#, str @#);
+ setAttribute1("magnitude", "N", str @#, 1);
+ setAttribute("magnitude", "Alignment", str @#, 0);
+ setAttribute("magnitude", "NumberOfRows", str @#, 1);
+ setAttribute("magnitude", "Horizontal", str @#, false);
+fi;
+enddef;
+
+vardef byNamedMagnitudeSymbol (expr n, hor)(suffix magnitudeSymbolName) =
+ save p, q, i, s, magnitudeSizeCor;
+ path p;
+ pair s[];
+ picture q;
+ numeric magnitudeSizeCor;
+ p := (0, 0);
+ magnitudeSizeCor := 1;
+ if (getAttribute("magnitude", "Shape", str magnitudeSymbolName) = "circle"):
+ p := fullcircle scaled (magnitudeScale*magnitudeSize);
+ magnitudeSizeCor := 8/7;
+ elseif (getAttribute("magnitude", "Shape", str magnitudeSymbolName) = "semicircleUp"):
+ p := ((subpath (0, 4) of fullcircle) -- (-1/2, -1/2) -- (1/2, -1/2) -- cycle) scaled (magnitudeScale*magnitudeSize);
+ elseif (getAttribute("magnitude", "Shape", str magnitudeSymbolName) = "semicircleDown"):
+ p := (((subpath (0, 4) of fullcircle) -- (-1/2, -1/2) -- (1/2, -1/2) -- cycle) yscaled -1) scaled (magnitudeScale*magnitudeSize);
+ elseif (getAttribute("magnitude", "Shape", str magnitudeSymbolName) = "sectorDown"):
+ p := ((subpath (0, 4) of fullcircle) -- (0, -1/2) -- cycle) scaled (magnitudeScale*magnitudeSize);
+ magnitudeSizeCor := 8/7;
+ elseif (getAttribute("magnitude", "Shape", str magnitudeSymbolName) = "sectorUp"):
+ p := ((subpath (0, 4) of fullcircle) -- (0, -1/2) -- cycle) scaled (magnitudeScale*magnitudeSize) yscaled -1;
+ magnitudeSizeCor := 8/7;
+ elseif (getAttribute("magnitude", "Shape", str magnitudeSymbolName) = "wedgeUp"):
+ p := (((1/2, 0) -- (1/2, 1/2) -- (-1/2, 1/2) -- (-1/2, 0) -- (0, -1/2) -- cycle) yscaled -1) scaled (magnitudeScale*magnitudeSize);
+ elseif (getAttribute("magnitude", "Shape", str magnitudeSymbolName) = "wedgeDown"):
+ p := ((1/2, 0) -- (1/2, 1/2) -- (-1/2, 1/2) -- (-1/2, 0) -- (0, -1/2) -- cycle) scaled (magnitudeScale*magnitudeSize);
+ elseif (getAttribute("magnitude", "Shape", str magnitudeSymbolName) = "square"):
+ p := ((1/2, 1/2) -- (-1/2, 1/2) -- (-1/2, -1/2) -- (1/2, -1/2) -- cycle) scaled (magnitudeScale*magnitudeSize);
+ elseif (getAttribute("magnitude", "Shape", str magnitudeSymbolName) = "halfsquare"):
+ p := ((1/2, 1/2) -- (-1/2, 1/2) -- (-1/2, 0) -- (1/2, 0) -- cycle) scaled (magnitudeScale*magnitudeSize);
+ elseif (getAttribute("magnitude", "Shape", str magnitudeSymbolName) = "rhombus"):
+ p := ((0, 1/2) -- (-1/2, 0) -- (0, -1/2) -- (1/2, 0) -- cycle) scaled (magnitudeScale*magnitudeSize);
+ magnitudeSizeCor := 8/7;
+ elseif (getAttribute("magnitude", "Shape", str magnitudeSymbolName) = "halfrhombusUp"):
+ p := ((0, 1/2) -- (-1/2, 0) -- (1/2, 0) -- cycle) scaled (magnitudeScale*magnitudeSize);
+ magnitudeSizeCor := 8/7;
+ elseif (getAttribute("magnitude", "Shape", str magnitudeSymbolName) = "miniTriangleUp"):
+ p := ((-1/4, -1/4) -- (1/4, -1/4) -- (0, 1/4) -- cycle) scaled (magnitudeScale*magnitudeSize);
+ magnitudeSizeCor := 8/7;
+ elseif (getAttribute("magnitude", "Shape", str magnitudeSymbolName) = "miniTriangleDown"):
+ p := ((-1/4, 1/4) -- (1/4, 1/4) -- (0, -1/4) -- cycle) scaled (magnitudeScale*magnitudeSize);
+ magnitudeSizeCor := 8/7;
+ elseif (getAttribute("magnitude", "Shape", str magnitudeSymbolName) = "miniSquare"):
+ p := ((-1/4, -1/4) -- (1/4, -1/4) -- (1/4, 1/4) -- (-1/4, 1/4) -- cycle) scaled (magnitudeScale*magnitudeSize);
+ elseif (getAttribute("magnitude", "Shape", str magnitudeSymbolName) = "miniCircle"):
+ p := fullcircle scaled (1/2magnitudeScale*magnitudeSize);
+ magnitudeSizeCor := 8/7;
+ fi;
+ if (hor):
+ s1 := (0, ypart(urcorner(p)) - ypart(lrcorner(p)));
+ s2 := (0, magnitudeGap);
+ else:
+ s1 := (xpart(urcorner(p)) - xpart(ulcorner(p)), 0);
+ s2 := (magnitudeGap, 0);
+ fi;
+ p := p scaled magnitudeSizeCor;
+ q := image(
+ draw p withpen (pencircle scaled lineWidthThin) withcolor getAttribute("magnitude", "Color", str magnitudeSymbolName);
+ if (getAttribute("magnitude", "Style", str magnitudeSymbolName) = 0):
+ fill p withcolor getAttribute("magnitude", "Color", str magnitudeSymbolName);
+ fi;
+ );
+ image(
+ for i := 1 step 1 until n:
+ draw q shifted (s1 scaled i) shifted (s2 scaled i);
+ endfor;
+ )
+enddef;
+
+vardef byMagnitudeDefine@#(expr al, hor)(text rowsList)(text magnitudeSymbolsList) =
+if str @# = "":
+ errmessage("byMagnitudeDefine needs a name (byMagnitudeDefine.somename...)");
+else:
+ setAttribute("magnitude", "Horizontal", str @#, hor);
+ setAttribute("magnitude", "Alignment", str @#, al);
+ save i;
+ numeric i;
+ i := 0;
+ forsuffixes rN=rowsList:
+ i := i + 1;
+ setAttribute[i]("magnitude", "N", str @#, rN);
+ endfor;
+ setAttribute("magnitude", "NumberOfRows", str @#, i);
+ i := 0;
+ forever:
+ forsuffixes sN=magnitudeSymbolsList:
+ i := i + 1;
+ if (i <= getAttribute("magnitude", "NumberOfRows", str @#)):
+ setAttribute[i]("magnitude", "Symbol", str @#, str sN);
+ fi;
+ endfor;
+ exitif (i >= getAttribute("magnitude", "NumberOfRows", str @#));
+ endfor;
+fi;
+enddef;
+
+vardef byNamedMagnitude (expr excl) (suffix magnitudeName) =
+ save p, s, h, magC;
+ picture p;
+ pair s[];
+ numeric h;
+ h := 0;
+ image(
+ for magC := 1 step 1 until getAttribute("magnitude", "NumberOfRows", str magnitudeName):
+ if (excl = 0) or ((excl < 0) and (magC <> -excl)) or ((excl > 0) and (magC = excl)):
+ p := byNamedMagnitudeSymbol(getAttribute[magC]("magnitude", "N", str magnitudeName), getAttribute("magnitude", "Horizontal", str magnitudeName))(scantokens(getAttribute[magC]("magnitude", "Symbol", str magnitudeName)));
+ if (getAttribute("magnitude", "Horizontal", str magnitudeName)):
+ if (getAttribute("magnitude", "Alignment", str magnitudeName) = 0):
+ s1 := 1/2[urcorner(p),lrcorner(p)];
+ elseif (getAttribute("magnitude", "Alignment", str magnitudeName) = 1):
+ s1 := lrcorner(p);
+ elseif (getAttribute("magnitude", "Alignment", str magnitudeName) = -1):
+ s1 := urcorner(p);
+ fi;
+ s2 := (h, 0);
+ else:
+ if (getAttribute("magnitude", "Alignment", str magnitudeName) = 0):
+ s1 := 1/2[ulcorner(p),urcorner(p)];
+ elseif (getAttribute("magnitude", "Alignment", str magnitudeName) = 1):
+ s1 := urcorner(p);
+ elseif (getAttribute("magnitude", "Alignment", str magnitudeName) = -1):
+ s1 := ulcorner(p);
+ fi;
+ s2 := (0, -h);
+ fi;
+ draw p shifted -s1 shifted s2;
+ if (getAttribute("magnitude", "Horizontal", str magnitudeName)):
+ h := h + (abs(ulcorner(p)-urcorner(p))) + magnitudeGap;
+ else:
+ h := h + (abs(ulcorner(p)-llcorner(p))) + magnitudeGap;
+ fi;
+ fi;
+ endfor;
+ )
+enddef;
+
+%
+% Text labels
+%
+
+% If using metafun, use textext
+
+if known metafunversion:
+ vardef textLabelRender(expr t) =
+ textext("\textsf{" & t & "}") scaled 2/5
+ enddef;
+else:
+ input TEX;
+ TEXPRE("%&latex" & char(10) & "\documentclass{article}\usepackage[utf8]{inputenc}\usepackage[russian]{babel}\begin{document}");
+ TEXPOST("\end{document}");
+ vardef textLabelRender(expr t) =
+ TEX("\textsf{" & t & "}") scaled 2/5
+ enddef;
+fi;
+
+numeric textLabelAvSize;
+textLabelAvSize := abs(ulcorner(textLabelRender("A")) - llcorner(textLabelRender("A")));
+
+vardef byTextLabel(suffix labelType)(expr t, p, a, d) =
+ save labelItself, labelString, bb;
+ path bb;
+ picture labelItself;
+ string labelString;
+ if not string labelType.scantokens(t):
+ string labelType.scantokens(t);
+ labelType.scantokens(t) := t;
+ fi;
+ labelString := str labelType & "." & t;
+ if (not isInList(labelString, uniqueTextLabels)) or (not omitDuplicateTextLabels):
+ appendList(uniqueTextLabels, labelString, 1, false);
+ labelItself := textLabelRender(labelType.scantokens(t));
+ labelItself := labelItself shifted -1/2[ulcorner(labelItself), lrcorner(labelItself)];
+ if (d > 0):
+ bb := ulcorner(labelItself) -- urcorner(labelItself) -- lrcorner(labelItself) -- llcorner(labelItself)--cycle;
+ labelItself := labelItself shifted -(bb intersectionpoint ((0,0)--(dir(a+180+globalRotation)*1cm)));
+ fi;
+ labelItself := image(
+ draw labelItself shifted ((p scaled scaleFactor) rotated globalRotation) shifted (dir(a+globalRotation)*d);
+ );
+ else:
+ labelItself := image();
+ fi;
+ labelItself
+enddef;
+
+vardef byLabelPoint(suffix p)(expr a, d) =
+ image(
+ if (textLabels):
+ draw byTextLabel(pointLabel)(str p, p, a, textLabelShift*d);
+ fi;
+ )
+enddef;
+
+vardef byLabelLine(expr d)(text linesList) =
+ save a;
+ numeric a;
+ if (d = 0):
+ a := 90;
+ else:
+ a := -90;
+ fi;
+ image(
+ if (textLabels):
+ forsuffixes lN=linesList:
+ if (getAttribute("line", "UseLineLabel", str lN)):
+ draw byTextLabel(pointLabel)(getAttribute("line", "Label", str lN),
+ 1/2[scantokens(getAttribute("line", "EndAName", str lN)),
+ scantokens(getAttribute("line", "EndBName", str lN))],
+ getAttribute("line", "Angle", str lN) + a, textLabelShift);
+ else:
+ draw byTextLabel(pointLabel)(
+ getAttribute("line", "EndAName", str lN),
+ scantokens(getAttribute("line", "EndAName", str lN)),
+ getAttribute("line", "Angle", str lN) + a,
+ textLabelShift);
+ draw byTextLabel(pointLabel)(
+ getAttribute("line", "EndBName", str lN),
+ scantokens(getAttribute("line", "EndBName", str lN)),
+ getAttribute("line", "Angle", str lN) + a,
+ textLabelShift);
+ fi;
+ endfor;
+ fi;
+ )
+enddef;
+
+vardef byLabelPolygon(expr d)(text polygonsList) =
+ image(
+ if (textLabels):
+ draw byLabelsOnPolygon(scantokens byMergePolygons(polygonsList))(1, d);
+ fi;
+ )
+enddef;
+
+vardef byLabelCircle(expr l, cn) =
+ save o, d;
+ pair o;
+ numeric d;
+ o := getAttribute("circle", "Center", cn);
+ d := lineThickness(getAttribute("circle", "Thin", cn))*(1/2-1/2getAttribute("circle", "Shift", cn));
+ byTextLabel(pointLabel)(l, scantokens(l), angle(o - scantokens(l)), textLabelShift + d)
+enddef;
+
+vardef byLabelsOnCircle(text pointsList)(suffix cn) =
+ save d, t, s, c;
+ numeric t, s;
+ pair c;
+ if string getAttribute("circle", "CenterName", str cn):
+ t := getAttribute("circle", "Thin", str cn);
+ s := getAttribute("circle", "Shift", str cn);
+ c := byReturnCircleCenter(str cn);
+ elseif string getAttribute("arc", "CenterName", str cn):
+ t := getAttribute("arc", "Thin", str cn);
+ s := getAttribute("arc", "Shift", str cn);
+ c := scantokens(getAttribute("arc", "CenterName", str cn));
+ else:
+ errmessage("There is no circle or arc named " & str cn);
+ fi;
+ d := lineThickness(t)*(1/2+1/2s);
+ image(
+ if (textLabels):
+ forsuffixes pN=pointsList:
+ draw byTextLabel(pointLabel)(str pN, pN, angle(pN - c), textLabelShift + d);
+ endfor;
+ fi;
+ )
+enddef;
+
+vardef byLabelsOnPolygon(text pointsList)(expr sty, shft)=
+ image(
+ if(textLabels):
+ save pointName, pointLoc, i, j, k, l, p, q, stump, sv;
+ numeric i, j, k, l, stump, sv;
+ string pointName[];
+ pair pointLoc[], p[];
+ i := -1;
+ forsuffixes pN=pointsList:
+ boolean pointDrawn.pN;
+ pointDrawn.pN := false;
+ i := i + 1;
+ pointName[i] := str pN;
+ if (pointName[i] <> "noPoint"):
+ pointLoc[i] := pN;
+ fi;
+ if (i > 0):
+ if (pointName[i] = pointName[i-1]):
+ i := i - 1;
+ fi;
+ fi;
+ endfor;
+ if (pointName[i] = pointName[0]):
+ i := i - 1;
+ fi;
+ if (i = 1):
+ i := i + 1;
+ pointName[i] := "noPoint";
+ fi;
+ for j := 0 step 1 until i:
+ k := cycleval(j - 1, i + 1);
+ l := cycleval(j + 1, i + 1);
+ if (pointName[j] <> "noPoint"):
+ p1 := pointLoc[j];
+ stump := 0;
+ if (pointName[k] <> "noPoint") or (pointName[l] <> "noPoint"):
+ if (pointName[k] = "noPoint"):
+ p2 := pointLoc[l];
+ p0 := 2[p2, p1];
+ stump := -1;
+ elseif (pointName[l] = "noPoint"):
+ p0 := pointLoc[k];
+ p2 := 2[p0, p1];
+ stump := +1;
+ else:
+ p0 := pointLoc[k];
+ p2 := pointLoc[l];
+ fi;
+ fi;
+ pair q[];
+ q4 := unitvector(p1-p0) rotated 90;
+ q5 := unitvector(p2-p1) rotated 90;
+ if ((abs(angle(q4) - angle(q5)) mod 180) > 1):
+ q0 := p0 shifted q4;
+ q1 := p1 shifted q4;
+ q2 := p1 shifted q5;
+ q3 := p2 shifted q5;
+ q6 = whatever[q0, q1] = whatever[q2, q3];
+ else:
+ if (sty <> 1) or (stump <> 0):
+ q6 := p1 shifted q4;
+ else:
+ q6 := p1;
+ fi;
+ fi;
+ if (sty = 2) and ((j = 0) or (j = i)):
+ pointDrawn.scantokens(pointName[j]) := true;
+ fi;
+ if (sty = 3) and (j = 0):
+ pointDrawn.scantokens(pointName[j]) := true;
+ fi;
+ if (sty = 4) and (j = i):
+ pointDrawn.scantokens(pointName[j]) := true;
+ fi;
+ if (q6 <> p1) and (not pointDrawn.scantokens(pointName[j])):
+ sv := byLabelAngleCompensate(p0, p1, p2, shft);
+ draw byTextLabel(pointLabel)(pointName[j], pointLoc[j], angle(q6-p1), textLabelShift+sv);
+ pointDrawn.scantokens(pointName[j]):= true;
+ fi;
+ fi;
+ endfor;
+ fi;
+ )
+enddef;
+
+vardef byLabelLineEnd (suffix a, b)(expr d) =
+ image(
+ if (textLabels):
+ draw byTextLabel(pointLabel)(str a, a, angle(a-b), textLabelShift+(d*lineWidth));
+ fi;
+ )
+enddef;
+
+vardef byLabelAngleCompensate (expr a, b, c, s) =
+ save ang, ins;
+ numeric ang, ins;
+ ang := angleValue(a, b, c)/2;
+ if (sind(ang*2)>0):
+ ins := (cosd(ang)/(2*sind(ang)))*textLabelAvSize;
+ else:
+ ins := 0;
+ fi;
+ (((abs(sind(ang)) + abs(cosd(ang)/abs(sind(ang))))*(lineWidth*(1/2+1/2s)))/2) + ins
+enddef;
diff --git a/graphics/metapost/contrib/macros/byrne/byrne.sty b/graphics/metapost/contrib/macros/byrne/byrne.sty
new file mode 100644
index 0000000000..c7c9666f29
--- /dev/null
+++ b/graphics/metapost/contrib/macros/byrne/byrne.sty
@@ -0,0 +1,298 @@
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{byrne}[2022/01/06 Byrne]
+
+\RequirePackage{xparse}
+\RequirePackage{ifmtarg}
+\RequirePackage{luamplib} % version v2.22.0 is required
+\mplibsetformat{metafun}
+
+\mplibglobaltextext{enable}
+\newcount\mpInst
+\mpInst = 0
+
+\def\mpPre{}
+\def\mpPost{}
+
+\newif\ifCreateNewInstanceForPicture
+\CreateNewInstanceForPicturetrue
+
+\def\undefineList{}
+
+\directlua{
+function byFormatImageName(s)
+ local resultingName = s:gsub ("," , "")
+ tex.print("instanceOffspringPicture"..resultingName)
+end
+}
+
+\def\formatImageName#1{\directlua{byFormatImageName("#1")}}
+
+
+\DeclareDocumentCommand{\defineNewPicture}{o o m}{%
+ \IfNoValueTF{#1}%
+ {\global\def\sfA{1/3}}%
+ {\global\def\sfA{#1}}%
+ \IfNoValueTF{#2}%
+ {\global\def\sfB{defaultScaleFactor}}%
+ {\global\def\sfB{#2}}%
+ \undefineList%
+ \def\undefineList{}%
+ \ifCreateNewInstanceForPicture%
+ \global\advance \mpInst by 1%
+ \global\def\currentInstance{byInstance\the\mpInst}%
+ \fi%
+ \setbox0\vbox{%
+ \everymplib[\currentInstance]{beginfig(0);}%
+ \everyendmplib[\currentInstance]{endfig;}%
+ \begin{mplibcode}[\currentInstance]%
+ picture instanceMainPicture;
+ input byrne;
+ \mpPre
+ instanceMainPicture := image(
+ startMainPictureMode;
+ projectionAngle := (0, 0, 0);
+ linecap := butt;
+ scaleFactor := \sfB;
+ #3
+ scaleFactor := \sfA;
+ generateAngleSynonyms;
+ generateLineSynonyms;
+ stopMainPictureMode;
+ );
+ \mpPost
+ \end{mplibcode}%
+ }\global\addToUndefineList{#2}%
+}
+
+\def\drawImageFromCurrentInstance#1{
+ \begin{mplibcode}[\currentInstance]%
+ draw #1;
+ \end{mplibcode}%
+}
+
+% Every time some simple picture is drawn, new macro is defined
+% with \markPictAsReady. If macro is defined, predefined picture is used.
+% Every time new picture is added, instructions to undefine it are added with
+% \addToUndefineList. \undefineList is thus generated command, that, once executed,
+% undefines everything that was appended to it with \addToUndefineList.
+
+\def\unmarkPictAsReady#1{\expandafter\let\csname #1\endcsname\@undefined}
+
+\def\addToUndefineList#1{\expandafter\def\expandafter\undefineList\expandafter{\undefineList \unmarkPictAsReady{#1}}}
+
+\def\undefineList{}
+\addToUndefineList{lastPicture}
+
+% When larger picture is defined, we can visualize its parts with \drawFromCurrentPicture
+% First (optional) argument is for picture's vertical alignment relative to the string
+% Currently only `middle' and anything other (for `top') is working
+% Second (optional) argument is for picture's name for future reuse
+% If picture with the same name exists, it's not defined again.
+% Third argument is MP code for picture itself.
+% To actually define an inline picture \defineFromCurrentPicture is called.
+% The latter can also be called separately, which can be convenient
+% if one wants to define multiple inline pictures in one place.
+% Whenever everything is defined, \drawDefinedPicture macro is called for
+
+\def\defineFromCurrentPicture#1#2#3{%
+ \begin{mplibcode}[\currentInstance]%
+ picture \formatImageName{#2};
+ \formatImageName{#2} = image(
+ startOffspringPictureMode;
+ linecap := butt;
+ #3
+ stopOffspringPictureMode;
+ );
+ \end{mplibcode}%
+\global\def\lastPict{#2}%
+\global\expandafter\edef\csname\lastPict\endcsname{{\noexpand\drawDefinedPicture{\expandafter\lastPict}{\expandafter#1}}}}
+
+\DeclareDocumentCommand{\drawFromCurrentPicture}{o o m}{%
+ \IfNoValueTF{#1}%
+ {\global\def\currentInlinePicturePlacement{middle}}%
+ {\global\def\currentInlinePicturePlacement{#1}}%
+ \IfNoValueTF{#2}%
+ {\defineFromCurrentPicture{\currentInlinePicturePlacement}{lastPicture}{#3}}%
+ {\expandafter\ifx\csname #2\endcsname\relax%
+ \defineFromCurrentPicture{\currentInlinePicturePlacement}{#2}{#3}%
+ \global\addToUndefineList{#2}%
+ \else%
+ \global\def\lastPict{#2}%
+ \fi}%
+ \csname\lastPict\endcsname%
+}
+
+% \drawDefinedPicture draws defined and named picture, aligned as needed and,
+% possibly, with margins modified with \offsetPicture (i. e., if we want picture to act as if it's less tall that it actually is,
+% we put some value as its first argument, if we want picture to be less deep, we use second argument, and place picture
+% itself as third).
+
+\newdimen\pictOffsetTop
+\newdimen\pictOffsetBottom
+
+\pictOffsetTop=0pt
+\pictOffsetBottom=0pt
+
+\def\offsetPicture#1#2#3{{\pictOffsetTop=#1\pictOffsetBottom=#2#3\pictOffsetTop=0pt\pictOffsetBottom=0pt}}
+
+\newdimen\midht
+\newdimen\middp
+\def\drawDefinedPicture#1#2{%
+ \setbox0\vbox{\drawImageFromCurrentInstance{\formatImageName{#1}}}%
+ \ifdim\ht0<\baselineskip\advance\pictOffsetTop by 1pt\advance\pictOffsetBottom by 1pt\fi%
+ \setbox0\vbox{\vskip2pt\vskip-\pictOffsetTop\box0\vskip2pt\vskip-\pictOffsetBottom}%
+ \def\tmpmiddle{middle}%
+ \def\tmpalignment{#2}%
+ \ifx\tmpalignment\tmpmiddle%
+ \middp=0.5\ht0
+ \midht=0.5\ht0
+ \advance\middp by -3pt
+ \advance\midht by 3pt
+ \else%
+ \middp=0pt
+ \midht=\ht0
+ \advance\middp by 3pt
+ \advance\midht by -3pt
+ \fi%
+ \advance\middp by 0.5\pictOffsetTop
+ \advance\midht by -0.5\pictOffsetTop
+ \advance\middp by -0.5\pictOffsetBottom
+ \advance\midht by 0.5\pictOffsetBottom
+ \dp0=\middp
+ \ht0=\midht
+ \nobreak\hskip0pt\nobreak\,\nobreak\box0\,%
+}
+
+% Some convenient shorthand macros for commonly used derivations of definition picture are defined below
+
+\def\drawCurrentPicture{\drawImageFromCurrentInstance{instanceMainPicture}}
+
+
+\DeclareDocumentCommand{\drawUnitLine}{o m}{%
+ \IfNoValueTF{#1}%
+ {\drawFromCurrentPicture[middle][uline#2]{startAutoLabeling;draw byNamedCompoundLine(1cm, 0)(#2);stopAutoLabeling;}}%
+ {\drawFromCurrentPicture[middle][uline#2#1]{startAutoLabeling;draw byNamedCompoundLine(#1, 0)(#2);stopAutoLabeling;}}%
+}
+
+\def\drawProportionalLine#1{\drawFromCurrentPicture[middle][pline#1]{startAutoLabeling;draw byNamedCompoundLine(1cm, 1)(#1);stopAutoLabeling;}}
+
+\DeclareDocumentCommand{\drawSizedLine}{o m}{%
+ \IfNoValueTF{#1}%
+ {\drawFromCurrentPicture[middle][sline#2]{startAutoLabeling;draw byNamedCompoundLine(2cm, 2)(#2);stopAutoLabeling;}}%
+ {\drawFromCurrentPicture[middle][sline#2#1]{startAutoLabeling;draw byNamedCompoundLine(#1, 2)(#2);stopAutoLabeling;}}%
+}
+
+\DeclareDocumentCommand{\drawUnitRay}{o m}{%
+ \IfNoValueTF{#1}%
+ {\drawFromCurrentPicture[middle][uray#2]{startAutoLabeling;draw byNamedCompoundRay(1cm, 0)(#2);stopAutoLabeling;}}%
+ {\drawFromCurrentPicture[middle][uray#2#1]{startAutoLabeling;draw byNamedCompoundRay(#1, 0)(#2);stopAutoLabeling;}}%
+}
+
+\def\drawProportionalRay#1{\drawFromCurrentPicture[middle][pray#1]{startAutoLabeling;draw byNamedCompoundRay(1cm, 1)(#1);stopAutoLabeling;}}
+
+\DeclareDocumentCommand{\drawSizedRay}{o m}{%
+ \IfNoValueTF{#1}%
+ {\drawFromCurrentPicture[middle][sray#2]{startAutoLabeling;draw byNamedCompoundRay(2cm, 2)(#2);stopAutoLabeling;}}%
+ {\drawFromCurrentPicture[middle][sray#2#1]{startAutoLabeling;draw byNamedCompoundRay(#1, 2)(#2);stopAutoLabeling;}}%
+}
+
+\def\drawProportionalIndLine#1{\drawFromCurrentPicture[middle][lineindprop#1]{startAutoLabeling;draw byNamedCompoundIndLine(1cm, 1)(#1);stopAutoLabeling;}}
+
+\DeclareDocumentCommand{\drawUnitIndLine}{o m}{%
+ \IfNoValueTF{#1}%
+ {\drawFromCurrentPicture[middle][lineindsized#2]{startAutoLabeling;draw byNamedCompoundIndLine(2cm, 2)(#2);stopAutoLabeling;}}%
+ {\drawFromCurrentPicture[middle][lineindsized#2#1]{startAutoLabeling;draw byNamedCompoundIndLine(#1, 2)(#2);stopAutoLabeling;}}%
+}
+
+\def\drawRightAngle{%
+\drawFromCurrentPicture[middle][onerightangle]{draw rightAngle;}}
+
+\def\drawTwoRightAngles{%
+\drawFromCurrentPicture[middle][tworightangles]{draw twoRightAngles;}}
+
+\def\drawAngle#1{\drawFromCurrentPicture[middle][angle#1]{startAutoLabeling;draw byNamedAngleWithDummySides(#1);stopAutoLabeling;}}
+
+\def\drawAngleWithSides#1{\drawFromCurrentPicture[middle][anglewithsides#1]{startAutoLabeling;draw byNamedAngleSides(#1)();stopAutoLabeling;}}
+
+\DeclareDocumentCommand{\drawPolygon}{o o m}{%
+ \IfNoValueTF{#1}%
+ {\global\def\plal{middle}}%
+ {\global\def\plal{#1}}%
+ \IfNoValueTF{#2}%
+ {\drawFromCurrentPicture[\plal][polygon#3]{startAutoLabeling;draw byNamedPolygon(#3);stopAutoLabeling;}}%
+ {\drawFromCurrentPicture[\plal][#2]{startAutoLabeling;draw byNamedPolygon(#3);stopAutoLabeling;}}%
+}
+
+\DeclareDocumentCommand{\drawCircle}{o o m}{%
+ \IfNoValueTF{#1}%
+ {\global\def\plal{middle}}%
+ {\global\def\plal{#1}}%
+ \IfNoValueTF{#2}%
+ {\drawFromCurrentPicture[\plal][circle#3]{startAutoLabeling;draw byNamedCircle(#3);stopAutoLabeling;}}%
+ {\drawFromCurrentPicture[\plal][circle#3]{
+ startAutoLabeling;
+ startTempScale(#2);
+ draw byNamedCircle(#3);
+ stopTempScale;
+ stopAutoLabeling;
+ }}%
+}
+
+\DeclareDocumentCommand{\drawArc}{o o m}{%
+ \IfNoValueTF{#1}%
+ {\global\def\plal{middle}}%
+ {\global\def\plal{#1}}%
+ \IfNoValueTF{#2}%
+ {\drawFromCurrentPicture[\plal][arc#3]{startAutoLabeling;draw byNamedArc(#3);stopAutoLabeling;}}%
+ {\drawFromCurrentPicture[\plal][arc#3]{
+ startAutoLabeling;
+ startTempScale(#2);
+ draw byNamedArc(#3);
+ stopTempScale;
+ stopAutoLabeling;
+ }}%
+}
+
+\DeclareDocumentCommand{\drawLine}{o o m}{%
+ \IfNoValueTF{#1}%
+ {\global\def\plal{middle}}%
+ {\global\def\plal{#1}}%
+ \IfNoValueTF{#2}%
+ {\drawFromCurrentPicture[\plal][line#3]{startAutoLabeling;draw byNamedLineSeq(0)(#3);stopAutoLabeling;}}%
+ {\drawFromCurrentPicture[\plal][#2]{startAutoLabeling;draw byNamedLineSeq(0)(#3);stopAutoLabeling;}}%
+}
+
+\def\drawPointM#1{\drawFromCurrentPicture[middle][pointm#1]{startAutoLabeling; draw byNamedPointMark(#1); stopAutoLabeling;}}
+
+\DeclareDocumentCommand{\drawPointL}{o o m}{%
+ \IfNoValueTF{#1}%
+ {\global\def\plal{middle}}%
+ {\global\def\plal{#1}}%
+ \IfNoValueTF{#2}%
+ {\drawFromCurrentPicture[\plal][pointl#3]{startAutoLabeling; draw byNamedPointLines(#3,""); stopAutoLabeling;}}%
+ {\drawFromCurrentPicture[\plal][pointl#3Minus#2]{startAutoLabeling; draw byNamedPointLines(#3,"#2"); stopAutoLabeling;}}%
+}
+
+\DeclareDocumentCommand{\drawPoint}{o o m}{%
+ \IfNoValueTF{#1}%
+ {\global\def\plal{middle}}%
+ {\global\def\plal{#1}}%
+ \IfNoValueTF{#2}%
+ {\drawFromCurrentPicture[\plal][point#3]{
+ startAutoLabeling; draw byNamedPointLines(#3,""); stopAutoLabeling;
+ draw byNamedPointMark(#3);
+ }}%
+ {\drawFromCurrentPicture[\plal][point#3Minus#2]{
+ startAutoLabeling; draw byNamedPointLines(#3,"#2"); stopAutoLabeling;
+ draw byNamedPointMark(#3);
+ }}%
+}
+
+\DeclareDocumentCommand{\drawMagnitude}{o o m}{%
+ \IfNoValueTF{#1}%
+ {\global\def\plal{middle}}%
+ {\global\def\plal{#1}}%
+ \IfNoValueTF{#2}%
+ {\drawFromCurrentPicture[\plal][magnitude#3]{startAutoLabeling;draw byNamedMagnitude(0)(#3);stopAutoLabeling;}}%
+ {\drawFromCurrentPicture[\plal][magnitude#2#3]{startAutoLabeling;draw byNamedMagnitude(#2)(#3);stopAutoLabeling;}}%
+} \ No newline at end of file
diff --git a/graphics/metapost/contrib/macros/fiziko/README b/graphics/metapost/contrib/macros/fiziko/README
index 8eda66ae7e..5b7e9ada0e 100644
--- a/graphics/metapost/contrib/macros/fiziko/README
+++ b/graphics/metapost/contrib/macros/fiziko/README
@@ -1,5 +1,5 @@
Name: fiziko
-Version: 0.1.3
+Version: 0.2.0
License: GNU GPLv3 or later
Author: Sergey Slyusarev
Repository: https://github.com/jemmybutton/fiziko
diff --git a/graphics/metapost/contrib/macros/fiziko/fiziko.mp b/graphics/metapost/contrib/macros/fiziko/fiziko.mp
index cf134b0fed..fc5d6065fc 100644
--- a/graphics/metapost/contrib/macros/fiziko/fiziko.mp
+++ b/graphics/metapost/contrib/macros/fiziko/fiziko.mp
@@ -1,6 +1,6 @@
-% fiziko 0.1.3
+% fiziko 0.2.0
% MetaPost library for physics textbook illustrations
-% Copyright 2019 Sergey Slyusarev
+% Copyright 2022 Sergey Slyusarev
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
@@ -63,7 +63,7 @@ enddef;
primarydef i maskedWith p =
begingroup
- save q, invertedmask, resultimage;
+ save q, invertedmask, resultimage, breakpoint;
pair q[];
path invertedmask;
picture resultimage;
@@ -72,8 +72,8 @@ begingroup
q3 := lrcorner(i) shifted (1, -1);
q2 := (xpart(q3), ypart(q1));
q4 := (xpart(q1), ypart(q3));
- bp := ypart((ulcorner(p)--llcorner(p)) firstIntersectionTimes p);
- invertedmask := (subpath (bp, length(p) + bp) of p) -- q1 -- q2 -- q3 -- q4 -- q1 -- cycle;
+ breakpoint := ypart((ulcorner(p)--llcorner(p)) firstIntersectionTimes p);
+ invertedmask := (subpath (breakpoint, length(p) + breakpoint) of p) -- q1 -- q2 -- q3 -- q4 -- q1 -- cycle;
clip resultimage to invertedmask;
resultimage
endgroup
@@ -128,6 +128,32 @@ begingroup
endgroup
enddef;
+% rotation in radians
+
+primarydef somethingToRotate radRotated radAngle =
+ somethingToRotate rotated ((radAngle/pi)*180)
+enddef;
+
+%
+% some 3D stuff
+%
+
+% this one's from byrne.mp
+
+primarydef colorone dotprodXYZ colortwo =
+begingroup
+ save xp, yp, zp;
+ numeric xp[], yp[], zp[];
+ xp1 := (redpart colorone);
+ yp1 := (greenpart colorone);
+ zp1 := (bluepart colorone);
+ xp2 := (redpart colortwo);
+ yp2 := (greenpart colortwo);
+ zp2 := (bluepart colortwo);
+ xp1*xp2 + yp1*yp2 + zp1*zp2
+endgroup
+enddef;
+
%
% sometimes it's useful to put some arrows along the path. this macro puts them
% in the middles of the segments that have length no less than midArrowLimit;
@@ -188,7 +214,7 @@ def defineMinStrokeWidth (expr msw) =
% We don't want to display strokes that are too thin to print. Default value
% is subject to change when needed.
minStrokeWidth := msw;
- maxShadingStrokeWidth := 2minStrokeWidth;
+ maxShadingStrokeWidth := 3/2minStrokeWidth;
% At some point it's useless to display even dashes
minDashStrokeWidth := 1/3minStrokeWidth;
@@ -201,12 +227,18 @@ def defineMinStrokeWidth (expr msw) =
% all the shading algorithms need to know how close lines should be packed
shadingDensity := 3maxShadingStrokeWidth;
+ stippleSize := 3/2minStrokeWidth;
+ minStippleStep := 1/2stippleSize;
+ stippleShadingDensity := 3minStippleStep;
+ minStippleStrokeWidth := 1/20stippleSize;
+
% here are some pens
- pen thinpen, thickpen, fatpen;
+ pen thinpen, thickpen, fatpen, stipplepen;
thinpen := pencircle scaled minStrokeWidth;
thickpen := pencircle scaled 3minStrokeWidth;
fatpen := pencircle scaled 6minStrokeWidth;
+ stipplepen := pencircle scaled stippleSize;
enddef;
defineMinStrokeWidth(1/5pt);
@@ -214,9 +246,31 @@ defineMinStrokeWidth(1/5pt);
% here we set global light direction
def defineLightDirection (expr ldx, ldy) =
- pair lightDirection, lightDirectionVector;
+ pair lightDirection;
+ color lightDirectionVectorXYZ;
lightDirection := (ldx, ldy);
- lightDirectionVector := (sin(xpart(lightDirection)), sin(ypart(lightDirection)));
+ lightDirectionVectorXYZ := (0, 0, 1);
+ lightDirectionVectorXYZ := rotateXYZaround.x(lightDirectionVectorXYZ, ldy);
+ lightDirectionVectorXYZ := rotateXYZaround.y(lightDirectionVectorXYZ, ldx);
+enddef;
+
+vardef rotateXYZaround@# (expr p, a) =
+ save partProj, rv;
+ pair partProj;
+ color rv;
+ if str @# = "x":
+ partProj := (greenpart(p), bluepart(p)) radRotated -a;
+ rv := (redpart(p), xpart(partProj), ypart(partProj));
+ elseif str @# = "y":
+ partProj := (redpart(p), bluepart(p)) radRotated -a;
+ rv := (xpart(partProj), greenpart(p), ypart(partProj));
+ elseif str @# = "z":
+ partProj := (redpart(p), greenpart(p)) radRotated -a;
+ rv := (xpart(partProj), ypart(partProj), bluepart(p));
+ else:
+ errmessage("What axis is " & str @# & "?");
+ fi;
+ rv
enddef;
defineLightDirection(-1/8pi, 1/8pi);
@@ -373,9 +427,9 @@ enddef;
def brushGenerate (expr p, q, i) =
begingroup
- save w, bp, bt, t;
+ save w, brushPath, bt, t;
numeric w[], t[];
- path bp[], bt;
+ path brushPath[], bt;
bt := q;
w0 := (ypart(urcorner(bt)));
w1 := (ypart(lrcorner(bt)));
@@ -391,9 +445,9 @@ begingroup
elseif (arclength(p) > 0):
if (w0 > 99/100minStrokeWidth)
and (w1 > 99/100minStrokeWidth):
- bp1 := offsetPathGenerate (p, q yscaled 1/2, 0);
- bp2 := offsetPathGenerate (p, q yscaled -1/2, 0);
- fill bp1 -- reverse(bp2) -- cycle;
+ brushPath1 := offsetPathGenerate (p, q yscaled 1/2, 0);
+ brushPath2 := offsetPathGenerate (p, q yscaled -1/2, 0);
+ fill brushPath1 -- reverse(brushPath2) -- cycle;
elseif (w0 < 101/100minStrokeWidth) and (w1 < 101/100minStrokeWidth):
thinBrushGenerate (p, q, 0)
fi;
@@ -405,30 +459,66 @@ enddef;
% macro for thin lines which are actually dashed
%
-def thinBrushGenerate (expr p, q, i) =
+vardef thinBrushGenerate@#(expr p, q, i) =
begingroup
- save w, bp, bt, t, h, linecap;
+ save w, brushPath, bt, t, h, minLength, minWidth, dashPatternImage;
numeric w[], t[];
- path bp[], bt;
+ path brushPath[], bt;
+ picture dashPatternImage;
bt := q;
w0 := (ypart(urcorner(bt)));
w1 := (ypart(lrcorner(bt)));
w2 := floor((1/2(w0 + w1))/dashStrokeWidthStep)*dashStrokeWidthStep;
t := cutPathTime(bt, w2);
- bp1 := subpath (0, t) of p;
- bp2 := subpath (t, length(p)) of p;
+ brushPath1 := subpath (0, t) of p;
+ brushPath2 := subpath (t, length(p)) of p;
+ if (str @# = "") or (str @# = "hatches"):
+ minLength := minDashStrokeLength;
+ minWidth := minDashStrokeWidth;
+ elseif str @# = "stipples":
+ minLength := minStippleStep;
+ minWidth := minStippleStrokeWidth;
+ fi;
if (((w0 - w1) > dashStrokeWidthStep) and (i < 15))
- and ((arclength(bp1) > minDashStrokeLength)
- or (arclength(bp2) > minDashStrokeLength)):
- thinBrushGenerate (bp1, subpath (0, t) of q, i + 1);
- thinBrushGenerate (bp2, subpath (t, length(q)) of q, i + 1);
+ and ((arclength(brushPath1) > minLength)
+ or (arclength(brushPath2) > minLength)):
+ thinBrushGenerate@#(brushPath1, subpath (0, t) of q, i + 1);
+ thinBrushGenerate@#(brushPath2, subpath (t, length(q)) of q, i + 1);
else:
- linecap := butt;
- if (w2 > minStrokeWidth):
- w2 := minStrokeWidth;
- fi;
- if (w2 >= minDashStrokeWidth) and (arclength(p) > 0):
- draw p withpen thinpen dashed thinBrushPattern(w2, arclength(p));
+ if (str @# = "") or (str @# = "hatches"):
+ if (w2 > minStrokeWidth):
+ w2 := minStrokeWidth;
+ fi;
+ if (w2 >= minWidth) and (arclength(p) > 0):
+ draw p withpen thinpen dashed thinBrushPattern(w2, arclength(p));
+ fi;
+ elseif str @# = "stipples":
+ begingroup
+ interim linecap := rounded;
+ save stippleSizeVar;
+ stippleSizeVar := stippleSize;
+ save stippleSize;
+ w2 := 1/3w2;
+ if (w2 >= minWidth) and (arclength(p) > 0):
+ stippleSize := stippleSizeVar * (0.9 + uniformdeviate(0.3));
+ dashPatternImage := stipplesBrushPattern(w2, arclength(p));
+ if urcorner(dashPatternImage) <> (0,0):
+ brushPath1 := offsetPathGenerate (p, (q yscaled 0) shifted (0, 1/3stippleShadingDensity), 0);
+ draw brushPath1 withpen (pencircle scaled stippleSize) dashed dashPatternImage;
+ fi;
+ stippleSize := stippleSizeVar * (0.9 + uniformdeviate(0.3));
+ dashPatternImage := stipplesBrushPattern(w2, arclength(p));
+ if urcorner(dashPatternImage) <> (0,0):
+ brushPath2 := offsetPathGenerate (p, (q yscaled 0) shifted (0, -1/3stippleShadingDensity), 0);
+ draw brushPath2 withpen (pencircle scaled stippleSize) dashed dashPatternImage;
+ fi;
+ stippleSize := stippleSizeVar * (0.9 + uniformdeviate(0.3));
+ dashPatternImage := stipplesBrushPattern(w2, arclength(p));
+ if urcorner(dashPatternImage) <> (0,0):
+ draw p withpen (pencircle scaled stippleSize) dashed dashPatternImage;
+ fi;
+ fi;
+ endgroup
fi;
fi;
endgroup
@@ -443,9 +533,9 @@ vardef shadedEdge (expr p) =
brushGenerate (p,
offsetPathTemplate (p, 0) (
1/2minStrokeWidth + 2*minStrokeWidth
- * angleToLightness(
- sphereAngleToAbsoulteAngle(
- (angleRad(direction offsetPathTime of p), 1/2)
+ * normalVectorToLightness(
+ sphereAnglesToNormalVector(
+ (angleRad(point offsetPathTime of p), arcsin(1/2))
), 0, point offsetPathTime of p
)
), 0);
@@ -482,6 +572,51 @@ vardef thinBrushPattern (expr w, l) =
fi
enddef;
+
+%
+% Stipples are also dashes
+%
+
+vardef stipplesBrushPattern (expr w, l) =
+ save d, n, rn, rv, ss;
+ ss := 1/1000;
+ numeric d[];
+ picture rv;
+ %if w > stippleSize:
+ % d0 := minStippleStep;
+ %else:
+ n := (w*l)/(stippleSize**2);
+ rn := floor(n);
+ if rn > 0:
+ d0 := l/rn;
+ fi;
+ %fi;
+ if rn > 0:
+ d1 := uniformdeviate(d0);
+ d2 := d0-d1;
+ if rn >=3:
+ d3 := uniformdeviate(d0);
+ d4 := d0-d3;
+ %if uniformdeviate(2) > 1:
+ % d5 := uniformdeviate(d0);
+ % d6 := d0-d5;
+ % rv := dashpattern (off d1 on ss off (d2+d5)-ss on ss off (d4+d6)-ss on ss off d3-ss);
+ %else:
+ rv := dashpattern (off d1 on ss off (d2+d3)-ss on ss off d4-ss);
+ %fi;
+ else:
+ rv := dashpattern (off d1 on ss off d2-ss);
+ fi;
+ else:
+ if uniformdeviate(1) < n:
+ rv := dashpattern (off uniformdeviate(l-ss) on ss off l);
+ else:
+ rv := image();
+ fi;
+ fi;
+ rv
+enddef;
+
%
% macro that actually draws line of variable width
%
@@ -493,52 +628,86 @@ vardef brush (expr p) (text offsetFunction) =
enddef;
%
+% same, but only for thin brushes
+%
+
+vardef thinBrush@#(expr p) (text offsetFunction) =
+ image(
+ thinBrushGenerate@#(p, offsetPathTemplate(p, 0)(offsetFunction), 0);
+ )
+enddef;
+
+%
% This macro generates tube between paths p and q, of variable width d
% Tube is subdivided into segments in such a way that within every segment
% we need 2**n lines to generate even fill
%
-def tubeGenerate (expr p, q, d, i) =
-begingroup
- save w, bw, k, t, tubeWidth, sp, currentPath, currentTubePath, currentDepth;
+vardef tubeGenerate@#(expr p, q, d, i) =
+ save w, bw, k, t, tubeWidth, sp, currentPath, currentTubePath, currentDepth, lineDensity;
numeric w[], bw[], t, currentDepth;
path tubeWidth, sp, currentPath, currentTubePath;
tubeWidth := d yscaled 2;
+ if (str @# = "") or (str @# = "hatches"):
+ lineDensity := shadingDensity;
+ elseif (str @# = "stipples"):
+ lineDensity := stippleShadingDensity;
+ fi;
w0 := (ypart(urcorner(tubeWidth))) - 1/1000;
w1 := (ypart(lrcorner(tubeWidth))) + 1/1000;
- w2 := ceiling(log(w0/shadingDensity, 2));
- w3 := ceiling(log(w1/shadingDensity, 2));
+ w2 := ceiling(log(w0/lineDensity, 2));
+ w3 := ceiling(log(w1/lineDensity, 2));
if ((w2 > w3) and (i<20)):
- t := cutPathTime(tubeWidth, shadingDensity*(2**(w2-1)));
- tubeGenerate (subpath (0, t) of p, subpath (0, t) of q, subpath (0, t) of d, i + 1);
- tubeGenerate (subpath (t, length(p)) of p, subpath (t, length(q)) of q, subpath (t, length(d)) of d, i + 1);
+ t := cutPathTime(tubeWidth, lineDensity*(2**(w2-1)));
+ tubeGenerate@#(subpath (0, t) of p, subpath (0, t) of q, subpath (0, t) of d, i + 1);
+ tubeGenerate@#(subpath (t, length(p)) of p, subpath (t, length(q)) of q, subpath (t, length(d)) of d, i + 1);
else:
if (arclength(p) > 0) and (arclength(q) > 0):
bw1 := 2**w2;
currentTubePath := interpath (1/2, q, p);
for k := 0 upto bw1:
currentPath := interpath (k/bw1, q, p);
- angleOnTube := arccos(((k/bw1)*2) - 1);
- currentDepth := -abs((1-sin(angleOnTube))*w0);
+ angleOnTube := arcsin(((k/bw1)*2) - 1);
+ currentDepth := -abs((1-sin(angleOnTube + 1/2pi))*w0);
if shadowsEnabled:
currentPath := shadowCut(currentPath, currentDepth);
fi;
- brushGenerate (currentPath,
- offsetPathTemplate(currentPath, 0)(
- maxShadingStrokeWidth
- if odd (k): * (abs(ypart(point offsetPathTime of tubeWidth)/bw1) - 1/2shadingDensity) fi
- %* orderFade(xpart(unitvector(direction offsetPathTime of tubeWidth yscaled 1/2cos(angleOnTube))), k) % why was it even here?
- * angleToLightness(
- tubeAngleToAbsoulteAngle((
- angleOnTube,
- angleRad(direction offsetPathTime of currentTubePath),
- angleRad(direction offsetPathTime of tubeWidth yscaled 1/2)
- )), currentDepth, point offsetPathTime of currentPath)
- ), 0);
+ if (str @# = "") or (str @# = "hatches"):
+ brushGenerate (currentPath,
+ offsetPathTemplate(currentPath, 0)(
+ maxShadingStrokeWidth
+ if odd (k): * (abs(ypart(point offsetPathTime of tubeWidth)/bw1) - 1/2lineDensity) fi
+ * normalVectorToLightness(
+ tubeAnglesToNormalVector((
+ angleOnTube,
+ angleRad(direction offsetPathTime of currentTubePath),
+ angleRad(direction offsetPathTime of (tubeWidth yscaled 1/2))
+ )), currentDepth, point offsetPathTime of currentPath)
+ ), 0);
+ elseif (str @# = "stipples"):
+ begingroup
+ save stippleShadingDensity;
+ if w2 > 0:
+ stippleShadingDensity := 2w0/(2**w2); % When the distance between the lines changes, wtipples should spread further apart
+ else:
+ stippleShadingDensity := w0;
+ fi;
+ thinBrushGenerate.@#(currentPath,
+ offsetPathTemplate(currentPath, 0)(
+ stippleSize
+ if odd (k): * (abs(ypart(point offsetPathTime of tubeWidth)/bw1) - 1/2lineDensity) fi
+ * normalVectorToLightness(
+ tubeAnglesToNormalVector((
+ angleOnTube,
+ angleRad(direction offsetPathTime of currentTubePath),
+ angleRad(direction offsetPathTime of (tubeWidth yscaled 1/2))
+ )), currentDepth, point offsetPathTime of currentPath)
+ ), 0);
+ endgroup
+ fi;
endfor;
fi;
fi;
-endgroup
enddef;
%
@@ -587,12 +756,12 @@ begingroup
offsetPathTemplate(currentPath, 0)(
maxShadingStrokeWidth
* orderFade(offsetPathLength[1/l1, l2], j)
- * angleToLightness(
- tubeAngleToAbsoulteAngle((
- arccos(pthdir*((offsetPathLength*2)-1)),
- pathAngle,
- tubeAngle)
- ), -2(1/2arclength(currentPath))+sqrt(1 - (2offsetPathLength - 1)**2)*(1/2arclength(currentPath)), point offsetPathTime of currentPath)
+ * normalVectorToLightness(
+ tubeAnglesToNormalVector((
+ arcsin(pthdir*((offsetPathLength*2)-1)),
+ pathAngle,
+ tubeAngle)
+ ), -2(1/2arclength(currentPath))+sqrt(1 - (2offsetPathLength - 1)**2)*(1/2arclength(currentPath)), point offsetPathTime of currentPath)
)
, 0);
endfor;
@@ -604,84 +773,69 @@ enddef;
%
% This macro converts some measurements of point on tube to absolute angle.
% Since there are three such measurements, macro gets them as as a single
-% argument of "color" type, in case it will eventually appear as a result
+% argument of "color" type, in case it would eventually appear as a result
% of some other macro.
%
+% redpart is the angle on the tube's circumference
+% greenpart is the angle of the tube path
+% bluepart is the angle of the tube's outline
+%
-vardef tubeAngleToAbsoulteAngle (expr p) =
- save a;
- numeric a[];
- a1 := bluepart(p) + 1/2pi;
- a2 := arccos(cos(redpart(p))*sin(a1));
- a3 := greenpart(p) + 1/2pi;
- a4 := arccos((cos(a1) * cos(a3) - cos(a2) * sin(a3))*(99/100));
- a5 := arccos((cos(a1) * sin(a3) + cos(a2) * cos(a3))*(99/100));
- (a5, a4)
+vardef tubeAnglesToNormalVector (expr p) =
+ save normalVector;
+ color normalVector;
+ normalVector := (0, 0, 1);
+ normalVector := rotateXYZaround.y(normalVector, -bluepart(p));
+ normalVector := rotateXYZaround.x(normalVector, redpart(p));
+ normalVector := rotateXYZaround.z(normalVector, -greenpart(p));
+ normalVector
enddef;
%
-% frontends to simplify tube drawing. tubeOutline variable changes on every call
-% of any tube frontend function and can be used afterwards.
+% frontend to simplify tube drawing. tubeOutline variable changes on every call
+% of the function and can be used afterwards.
%
path tubeOutline;
boolean drawTubeEnds;
drawTubeEnds := true;
-vardef tube.l (expr p)(text offsetFunction)=
- save q;
+vardef tube@#(expr p)(text offsetFunction)=
+ save q, respic;
path q[];
+ picture respic;
q0 := offsetPathSubdivide(p);
q1 := offsetPathTemplate(q0, 0)(offsetFunction);
q2 := offsetPathGenerate (q0, q1, 0);
q3 := offsetPathGenerate (q0, q1 yscaled -1, 0);
tubeOutline := q3--reverse(q2)--cycle;
- image(
- tubeGenerate (q2, q3, q1, 0);
- if (cycle p) or (not drawTubeEnds):
- draw q2 withpen thinpen;
- draw q3 withpen thinpen;
- else:
- draw q2--reverse(q3)--cycle withpen thinpen;
- fi;
- )
-enddef;
-
-vardef tube.t (expr p)(text offsetFunction)=
- save q;
- path q[];
- q0 := offsetPathSubdivide(p);
- q1 := offsetPathTemplate(q0, 0)(offsetFunction);
- q2 := offsetPathGenerate (q0, q1, 0);
- q3 := offsetPathGenerate (q0, q1 yscaled -1, 0);
- tubeOutline := q3--reverse(q2)--cycle;
- image(
- tubeGenerateAlt (q2, q3, q1);
- if (cycle p) or (not drawTubeEnds):
- draw q2 withpen thinpen;
- draw q3 withpen thinpen;
+ if str @# = "e":
+ if not drawTubeEnds:
+ image(
+ draw q2 withpen thinpen;
+ draw q3 withpen thinpen;
+ )
else:
- draw q2--reverse(q3)--cycle withpen thinpen;
- fi;
- )
-enddef;
-
-vardef tube.e (expr p)(text offsetFunction)=
- save q;
- path q[];
- q0 := offsetPathSubdivide(p);
- q1 := offsetPathTemplate(q0, 0)(offsetFunction);
- q2 := offsetPathGenerate (q0, q1, 0);
- q3 := offsetPathGenerate (q0, q1 yscaled -1, 0);
- tubeOutline := q3--reverse(q2)--cycle;
- if not drawTubeEnds:
- image(
- draw q2 withpen thinpen;
- draw q3 withpen thinpen;
- )
+ tubeOutline
+ fi
else:
- tubeOutline := q3--reverse(q2)--cycle;
- tubeOutline
+ image(
+ if str @# = "l":
+ respic := image(tubeGenerate (q2, q3, q1, 0););
+ elseif str @# = "s":
+ respic := image(tubeGenerate.stipples(q2, q3, q1, 0);)
+ elseif str @# = "t":
+ respic := image(tubeGenerateAlt (q2, q3, q1););
+ fi;
+ if (cycle p) or (not drawTubeEnds):
+ draw q2 withpen thinpen;
+ draw q3 withpen thinpen;
+ else:
+ draw q2--reverse(q3)--cycle withpen thinpen;
+ fi;
+ clip respic to (q2--reverse(q3)--cycle);
+ draw respic;
+ )
fi
enddef;
@@ -689,36 +843,66 @@ enddef;
% Sphere can be used as a cap for a tube, so it has same 2**n lines.
%
-vardef sphere.c (expr d) =
- save currentCircle, origCircle, currentRadius, currentDepth, order, circleThickness;
+vardef sphere@#(expr d) =
+ save currentCircle, origCircle, currentRadius, currentDepth, order, circleThickness, lineDensity, shadingPicture;
path currentCircle, origCircle;
numeric currentRadius, currentDepth, order;
+ picture shadingPicture;
+ if (str @# = "") or (str @# = "c"):
+ lineDensity := shadingDensity;
+ elseif (str @# = "s"):
+ lineDensity := stippleShadingDensity;
+ fi;
origCircle := fullcircle;
- order := 2**ceiling(log((1/2d)/shadingDensity, 2));
+ order := 2**ceiling(log((1/2d)/lineDensity, 2));
image(
draw fullcircle scaled d withpen thinpen;
- for i := 1 upto order:
- currentRadius := i/order;
- currentCircle := origCircle scaled (currentRadius*d) rotated uniformdeviate (1/4pi);
- if odd(i):
- circleThickness := maxShadingStrokeWidth * ((abs(d - (shadingDensity*order)))/order);
- else:
- circleThickness := maxShadingStrokeWidth;
- fi;
- currentDepth:= -(1-sqrt(1-currentRadius**2))*(1/2d);
- if shadowsEnabled:
- currentCircle := shadowCut(currentCircle, currentDepth);
- fi;
- brushGenerate (currentCircle,
- offsetPathTemplate (currentCircle, 0) (
- circleThickness
- * angleToLightness(
- sphereAngleToAbsoulteAngle(
- (angleRad(direction offsetPathTime of currentCircle), currentRadius)
- ), currentDepth, point offsetPathTime of currentCircle
- )
- ), 0);
- endfor;
+ shadingPicture := image(
+ for i := 1 upto order:
+ currentRadius := i/order;
+ currentCircle := origCircle scaled (currentRadius*d) rotated uniformdeviate (1/4pi);
+ if odd(i):
+ circleThickness := maxShadingStrokeWidth * ((abs(d - (lineDensity*order)))/order);
+ else:
+ circleThickness := maxShadingStrokeWidth;
+ fi;
+ currentDepth:= -(1-sqrt(1-currentRadius**2))*(1/2d);
+ if shadowsEnabled:
+ currentCircle := shadowCut(currentCircle, currentDepth);
+ fi;
+ if (str @# = "") or (str @# = "c"):
+ brushGenerate (currentCircle,
+ offsetPathTemplate (currentCircle, 0) (
+ circleThickness
+ * normalVectorToLightness(
+ sphereAnglesToNormalVector(
+ (angleRad(point offsetPathTime of currentCircle), arcsin(currentRadius))
+ ), currentDepth, point offsetPathTime of currentCircle
+ )
+ ), 0);
+ elseif (str @# = "s"):
+ begingroup
+ save stippleShadingDensity;
+ if order > 0:
+ stippleShadingDensity := d/order; % When the distance between the lines changes, wtipples should spread further ap
+ else:
+ stippleShadingDensity := 1/2d;
+ fi;
+ thinBrushGenerate.stipples(currentCircle,
+ offsetPathTemplate (currentCircle, 0) (
+ circleThickness
+ * normalVectorToLightness(
+ sphereAnglesToNormalVector(
+ (angleRad(point offsetPathTime of currentCircle), arcsin(currentRadius))
+ ), currentDepth, point offsetPathTime of currentCircle
+ )
+ ), 0);
+ endgroup
+ fi;
+ endfor;
+ );
+ clip shadingPicture to (fullcircle scaled d);
+ draw shadingPicture;
)
enddef;
@@ -729,7 +913,7 @@ enddef;
% so all we need to do is to fade lines correspondingly
%
-vardef sphere.l (expr d, lat) =
+vardef sphereLat (expr d, lat) =
save p, a, x, y, sphlat, latrad, n, c, currentPath, nline, tlat;
path p[], currentPath, currentArc;
sphlat := 0;
@@ -779,15 +963,15 @@ vardef sphere.l (expr d, lat) =
)**abs(sind(lat))
)**2)
, nline)
- * angleToLightness(
- sphereAngleToAbsoulteAngle((
+ * normalVectorToLightness(
+ sphereAnglesToNormalVector((
(
if (abs(point offsetPathTime of currentPath) > 0):
angleRad(point offsetPathTime of currentPath)
else:
0
fi
- + 1/2pi), 2abs(point offsetPathTime of currentPath)/(d+1))
+ ), arcsin(2abs(point offsetPathTime of currentPath)/(d+1)))
), 0, point offsetPathTime of currentPath)
), 0);
fi;
@@ -815,37 +999,38 @@ vardef orderFade (expr v, n)=
enddef;
%
-% This one converts point location on sphere to absolute angle
+% This one converts point location on sphere to normal vector
%
-vardef sphereAngleToAbsoulteAngle (expr p) =
- save a;
- numeric a[];
- a1 := xpart(p) - 1/2pi;
- a2 := arcsin(ypart(p));
- a3 := arccos(sin(a2)*cos(a1));
- a4 := pi - arccos(sin(a2)*sin(a1));
- (a3, a4)
+vardef sphereAnglesToNormalVector (expr p) =
+ save normalVector;
+ color normalVector;
+ normalVector := (0, 0, 1);
+ normalVector := rotateXYZaround.y(normalVector, ypart(p));
+ normalVector := rotateXYZaround.z(normalVector, -xpart(p));
+ normalVector
enddef;
%
% Once we get two angles at some point of some surface, we can compute light intensity there.
%
-vardef angleToLightness (expr p, d, q) =
+vardef normalVectorToLightness (expr normalVector, d, q) =
save returnValue, shiftedShadowPath;
path shiftedShadowPath;
if shadowsEnabled:
for i := 0 step 1 until numberOfShadows:
- shiftedShadowPath := shadowPath[i] shifted (lightDirectionVector scaled (d-shadowDepth[i]));
+ shiftedShadowPath := shadowPath[i] shifted
+ ((redpart(lightDirectionVectorXYZ), greenpart(lightDirectionVectorXYZ))
+ scaled ((d-shadowDepth[i])*bluepart(lightDirectionVectorXYZ)));
if q isInside shiftedShadowPath:
returnValue := 1;
fi;
endfor;
fi;
if not known returnValue:
- returnValue := (cos(xpart(p) + xpart(lightDirection))++cos(ypart(p) - ypart(lightDirection)));
- returnValue := angleToLightnessPP(returnValue);
+ returnValue := 1 - (normalVector dotprodXYZ lightDirectionVectorXYZ);
+ returnValue := lightnessPP(returnValue);
fi;
if returnValue > 1:
1
@@ -854,8 +1039,8 @@ vardef angleToLightness (expr p, d, q) =
fi
enddef;
-vardef angleToLightnessPP (expr v) =
- v**3
+vardef lightnessPP (expr v) =
+ v
enddef;
% Shadows are global
@@ -874,7 +1059,9 @@ vardef shadowCut (expr pathToCut, currentDepth)=
numeric pathShadowCut;
currentPath := pathToCut;
for j := 0 step 1 until numberOfShadows:
- shiftedShadowPath := shadowPath[j] shifted (lightDirectionVector scaled (currentDepth - shadowDepth[j]));
+ shiftedShadowPath := shadowPath[j] shifted
+ ((redpart(lightDirectionVectorXYZ), greenpart(lightDirectionVectorXYZ))
+ scaled ((currentDepth - shadowDepth[j])*bluepart(lightDirectionVectorXYZ)));
forever:
pathShadowIntersection := shiftedShadowPath firstIntersectionTimes currentPath;
pathShadowCut := ypart(pathShadowIntersection);
@@ -1256,19 +1443,19 @@ vardef globe (expr s, lon, lat) =
picture p[];
path lm;
begingroup
- save angleToLightnessPP;
- vardef angleToLightnessPP (expr v) =
- 1/2(v**3)
+ save lightnessPP;
+ vardef lightnessPP (expr v) =
+ 1/2v
enddef;
- p1 := image(draw sphere.l(2s, lat));
- vardef angleToLightnessPP (expr v) =
+ p1 := image(draw sphereLat(2s, lat));
+ vardef lightnessPP (expr v) =
if (abs(cos(sphlat)) > 7/8 + uniformdeviate (1/20)):
- 1/4(v**2)
+ 1/4v
else:
- 1/3(v**2) + 2/3
+ 1/3v + 2/3
fi
enddef;
- p2 := image(draw sphere.l(2s, lat));
+ p2 := image(draw sphereLat(2s, lat));
endgroup;
image(
draw fullcircle scaled 2s withpen thinpen;
@@ -1280,9 +1467,9 @@ vardef globe (expr s, lon, lat) =
thinBrushGenerate (lm,
offsetPathTemplate (lm, 0) (
2/3minStrokeWidth + 1/3minStrokeWidth
- * angleToLightness(
- sphereAngleToAbsoulteAngle(
- (angleRad(point offsetPathTime of lm) + 1/4pi, abs(point offsetPathTime of lm)/2s)
+ * normalVectorToLightness(
+ sphereAnglesToNormalVector(
+ (angleRad(point offsetPathTime of lm), arcsin(abs(point offsetPathTime of lm)/2s))
), 0, point offsetPathTime of lm
)
), 0);
@@ -1375,7 +1562,7 @@ vardef solidSurface (expr p) =
enddef;
vardef solid (expr p, a, t) =
- save stripes, stripeskind, d, i, j, c;
+ save stripes, stripeskind, d, i, j, c, strokeVariation;
picture stripes, stripeskind;
pair c;
stripes := image(
@@ -1385,18 +1572,19 @@ vardef solid (expr p, a, t) =
c := 1/2[ulcorner(p rotated (90 - a)), lrcorner(p rotated (90 - a))] rotated (a - 90);
for i:= 0 step (3/2shadingDensity)/d1 until 1:
if (t = 1):
+ strokeVariation := uniformdeviate(1)-1/2;
j := round(i*d1/(3/2shadingDensity));
if (j mod 4) = 0:
- stripeskind := dashpattern (on 8shadingDensity off 4shadingDensity);
+ stripeskind := dashpattern (on (8-strokeVariation)*shadingDensity off (4+strokeVariation)*shadingDensity);
fi;
if ((j mod 4) = 1) or ((j mod 4) = 3):
- stripeskind := dashpattern (off 1shadingDensity on 6shadingDensity off 5shadingDensity);
+ stripeskind := dashpattern (off 1shadingDensity on (6-strokeVariation)*shadingDensity off (5+strokeVariation)*shadingDensity);
fi;
if (j mod 4) = 2:
stripeskind := dashpattern (on 0 off 12shadingDensity);
fi;
fi;
- draw ((dir(a) scaled 1/2d2) -- (dir(a + 180) scaled 1/2d2)) shifted c shifted i[dir(a + 90) scaled 1/2d1, dir(a -90) scaled 1/2d1] withpen thinpen
+ draw ((dir(a) scaled 1/2(d2-uniformdeviate(3shadingDensity))) -- (dir(a + 180) scaled 1/2d2)) shifted c shifted i[dir(a + 90) scaled 1/2d1, dir(a -90) scaled 1/2d1] withpen thinpen
dashed stripeskind;
endfor;
);
@@ -1537,14 +1725,6 @@ vardef weight.h (expr h) =
) maskedWith (q3 -- reverse(q2) -- (q2 yscaled 0 shifted (0, -h)) -- (reverse(q3) yscaled 0 shifted (0, -h)) -- cycle)
maskedWith q6;
draw shadedEdge(q6);
- thinBrushGenerate (q5,
- offsetPathTemplate (q5, 0) (
- minDashStrokeWidth + minStrokeWidth
- * angleToLightness(
- (arccos(1 - offsetPathLength*2), 1/2pi)
- , 0, point offsetPathTime of q5
- )
- ), 0);
)
enddef;
@@ -1658,9 +1838,9 @@ vardef pulleyWheel (expr d) =
thinBrushGenerate (fullcircle scaled i,
offsetPathTemplate (fullcircle scaled i, 0) (
2/3minStrokeWidth + minStrokeWidth
- * angleToLightness(
- sphereAngleToAbsoulteAngle(
- (angleRad(direction offsetPathTime of fullcircle), i/4d)
+ * normalVectorToLightness(
+ sphereAnglesToNormalVector(
+ (angleRad(point offsetPathTime of fullcircle), arcsin(i/4d))
), 0, point offsetPathTime of fullcircle scaled i
)
), 0);
@@ -1668,9 +1848,9 @@ vardef pulleyWheel (expr d) =
thinBrushGenerate (fullcircle scaled i,
offsetPathTemplate (fullcircle scaled i, 0) (
1/4minStrokeWidth + minStrokeWidth
- * angleToLightness(
- sphereAngleToAbsoulteAngle(
- (angleRad(direction offsetPathTime of fullcircle) + pi, 1/2)
+ * normalVectorToLightness(
+ sphereAnglesToNormalVector(
+ (angleRad(point offsetPathTime of fullcircle) + pi, arcsin(1/2))
), 0, point offsetPathTime of fullcircle scaled i
)
), 0);
@@ -1709,9 +1889,9 @@ vardef wheel (expr d, a) =
thinBrushGenerate (fullcircle scaled i,
offsetPathTemplate (fullcircle scaled i, 0) (
2/3minStrokeWidth + minStrokeWidth
- * angleToLightness(
- sphereAngleToAbsoulteAngle(
- (angleRad(direction offsetPathTime of fullcircle) + pi, i/4d)
+ * normalVectorToLightness(
+ sphereAnglesToNormalVector(
+ (angleRad(point offsetPathTime of fullcircle) + pi, arcsin(i/4d))
), 0, point offsetPathTime of fullcircle scaled i
)
), 0);
@@ -1740,6 +1920,109 @@ vardef wheel (expr d, a) =
)
enddef;
+
+%
+% This one roughly finds the center of mass for a closed shape
+%
+
+vardef shapeCenterOfMass (expr p) =
+ save i, a, aTotal, q;
+ numeric i, a, aTotal;
+ pair rv, q[];
+ q0 := point 0 of p;
+ aTotal := 0;
+ rv := (0, 0);
+ for i := 1 step 1 until (length(p)-2):
+ q1 := point i of p;
+ q2 := point (i+1) of p;
+ if (xpart(q1-q0) = 0):
+ a := (abs(ypart(q1-q0)/cm)*abs(xpart(q2-q0)/cm))/2;
+ elseif (ypart(q1-q0) = 0):
+ a := (abs(xpart(q1-q0)/cm)*abs(ypart(q2-q0)/cm))/2;
+ elseif (abs(xpart(q1-q0)) > abs(ypart(q1-q0))):
+ begingroup
+ save qA;
+ pair qA;
+ qA = whatever[q0, q0 + (0,1)];
+ qA = whatever[q2, q2 + (q1-q0)];
+ a := (abs(ypart(qA-q0)/cm)*abs(xpart(q1-q0)/cm))/2;
+ endgroup
+ else:
+ begingroup
+ save qA;
+ pair qA;
+ qA = whatever[q0, q0 + (1,0)];
+ qA = whatever[q2, q2 + (q1-q0)];
+ a := (abs(xpart(qA-q0)/cm)*abs(ypart(q1-q0)/cm))/2;
+ endgroup
+ fi;
+ %a := 2;
+ aTotal := aTotal + a;
+ rv := rv + ((q0 + q1 + q2) scaled (a/3));
+ endfor;
+ if (aTotal > 0):
+ rv := rv scaled (1/aTotal);
+ else:
+ rv := (0, 0);
+ fi;
+ rv
+enddef;
+
+%
+% This macro is for drawing shaded flat surfaces
+%
+
+vardef flatSurface@#(expr surfPath, normalVector, hatchAngle) =
+ save p, aHatch, hatchImage, surfLight, totalHeight, totalWidth, lineDensity, distFromEdge, hatchLength;
+ path p, aHatch;
+ picture hatchImage;
+ numeric distFromEdge, hatchLength;
+ surfLight := normalVectorToLightness(normalVector, 0, (0, 0));
+ p := surfPath rotated -hatchAngle;
+ if (str @# = "") or (str @# = "hatches"):
+ lineDensity := shadingDensity;
+ elseif (str @# = "stipples"):
+ lineDensity := stippleShadingDensity;
+ fi;
+ hatchImage := image(
+ totalHeight := abs(ypart(llcorner(p)) - ypart(urcorner(p)));
+ totalWidth := abs(xpart(llcorner(p)) - xpart(urcorner(p)));
+ %fill surfPath withcolor (surfLight, surfLight, surfLight);
+ for i := ypart(llcorner(p)) step (totalHeight/round(totalHeight/lineDensity)) until ypart(urcorner(p)):
+ distFromEdge := abs((i - ypart(llcorner(p)))/(ypart(urcorner(p))-ypart(llcorner(p))));
+ aHatch := (xpart(llcorner(p)),i) -- (xpart(lrcorner(p)), i);
+ aHatch := (point xpart(aHatch firstIntersectionTimes p) of aHatch) --
+ (point xpart(reverse(aHatch) firstIntersectionTimes p) of reverse(aHatch));
+ hatchLength := arclength(aHatch);
+ if arclength(aHatch) > 0:
+ aHatch := aHatch rotated hatchAngle;
+ aHatch := pathSubdivide(aHatch,3+round(uniformdeviate(2)));
+ if (str @# = "") or (str @# = "hatches"):
+ draw brush(aHatch)(
+ (2minStrokeWidth*(1/15+surfLight))*
+ (1-6/7sqrt(
+ sin(offsetPathLength*pi)*(hatchLength/totalWidth)*
+ sin(distFromEdge*pi)
+ ))
+ );
+ elseif (str @# = "stipples"):
+ draw thinBrush.stipples(aHatch)(
+ (stippleSize*(1/15+surfLight))*
+ (1-5/6sqrt(
+ sin(offsetPathLength*pi)*(hatchLength/totalWidth)*
+ sin(distFromEdge*pi)
+ ))
+ );
+ fi;
+ fi;
+ endfor;
+ );
+ clip hatchImage to surfPath;
+ image(
+ draw hatchImage;
+ )
+enddef;
+
%
% These macros are for drawing wood texture. A bunch of wood-related global
% variables are also here.
@@ -1871,7 +2154,6 @@ vardef appendList@#(suffix listName)(expr valueToAdd, whereToAdd, omitDuplicates
save v, valueExists;
string v;
boolean valueExists;
- valueExists := false;
if str @# = "":
if not string listName:
string listName;
@@ -1884,12 +2166,9 @@ vardef appendList@#(suffix listName)(expr valueToAdd, whereToAdd, omitDuplicates
if unknown listName@#:
listName@# := "";
fi;
+ valueExists := false;
if omitDuplicates:
- for i=scantokens(listName@#):
- if (i = valueToAdd):
- valueExists := true;
- fi;
- endfor;
+ valueExists := isInList@#(valueToAdd, listName)
fi;
if not valueExists:
if string valueToAdd:
@@ -1909,6 +2188,38 @@ vardef appendList@#(suffix listName)(expr valueToAdd, whereToAdd, omitDuplicates
fi;
enddef;
+vardef isInList@#(expr valueToLookFor)(suffix listName) =
+ save rv, i;
+ boolean rv;
+ rv := false;
+ if str @# = "":
+ if not string listName:
+ string listName;
+ fi;
+ else:
+ if not string listName0:
+ string listName[];
+ fi;
+ fi;
+ if unknown listName@#:
+ listName@# := "";
+ fi;
+ if string valueToLookFor:
+ forsuffixes i=scantokens(listName@#):
+ if (str i = valueToLookFor):
+ rv := true;
+ fi;
+ endfor;
+ else:
+ for i=scantokens(listName@#):
+ if (i = valueToLookFor):
+ rv := true;
+ fi;
+ endfor;
+ fi;
+ rv
+enddef;
+
vardef sortList (expr listToSort, ascending) =
save nPre, nPost, pivot, isSorted, lastValue, preList, postList, rv;
numeric nPre, nPost, pivot;
diff --git a/graphics/metapost/contrib/macros/fiziko/fiziko.pdf b/graphics/metapost/contrib/macros/fiziko/fiziko.pdf
index aaf3cfff42..32b5300d22 100644
--- a/graphics/metapost/contrib/macros/fiziko/fiziko.pdf
+++ b/graphics/metapost/contrib/macros/fiziko/fiziko.pdf
Binary files differ
diff --git a/graphics/metapost/contrib/macros/fiziko/fiziko.tex b/graphics/metapost/contrib/macros/fiziko/fiziko.tex
index 4848055003..3e164278da 100644
--- a/graphics/metapost/contrib/macros/fiziko/fiziko.tex
+++ b/graphics/metapost/contrib/macros/fiziko/fiziko.tex
@@ -1,10 +1,9 @@
-\documentclass{article}
+\documentclass{ltxdoc}
-\usepackage{luamplib}
+\usepackage{luamplib, listings, bxtexlogo, ccicons}
\everymplib{verbatimtex \leavevmode etex; input fiziko.mp; beginfig(1);}
\everyendmplib{endfig;}
-\usepackage{listings}
\lstset{
language=MetaPost,
numbers=left,
@@ -12,33 +11,31 @@ numberstyle=\tiny,
basicstyle=\scriptsize
}
-\usepackage{cclicenses}
-
\author{Sergey Slyusarev}
-\title{``fiziko'' v. 0.1.3 package for MetaPost}
+\title{``fiziko'' v. 0.2.0 package for \METAPOST}
\begin{document}
\maketitle
\begin{abstract}
-This document describes a bunch of macros provided by ``fiziko'' library for MetaPost.
+This document describes a bunch of macros provided by ``fiziko'' library for \METAPOST.
\end{abstract}
\begin{centering}
This document is distributed under CC-BY-SA 4.0 license
-\cc\bysa
+\ccbysa
https://github.com/jemmybutton/fiziko
\end{centering}
\section{Introduction}
-This MetaPost library was initially written to automate some elements of black and white illustrations for a physics textbook. First and foremost it provides functions to draw things like lines of variable width, shaded spheres and tubes of different kinds, which can be used to produce images of a variety of objects. The library also contains functions to draw some objects constructed from these primitives.
+This \METAPOST\ library was initially written to automate some elements of black and white illustrations for a physics textbook. First and foremost it provides functions to draw things like lines of variable width, shaded spheres and tubes of different kinds, which can be used to produce images of a variety of objects. The library also contains functions to draw some objects constructed from these primitives.
\section{Usage}
-Simply include this in the beginning of your MetaPost document:
+Simply include this in the beginning of your \METAPOST\ document:
\begin{lstlisting}
input fiziko.mp
@@ -113,19 +110,34 @@ This macro returns a \texttt{picture} of a sphere with specified diameter shaded
endfor;
\end{mplibcode}
-\subsection{sphere.l (\emph{diameter, angle})}
+\subsection{sphere.s (\emph{diameter})}
+This macro returns a \texttt{picture} of a sphere with specified diameter shaded with stipples.
+
+\begin{lstlisting}
+ for i := 1 step 1 until 6:
+ draw sphere.s(i*1/4cm) shifted (1/2cm*(i*(i+1))/2, 0);
+ endfor;
+\end{lstlisting}
+
+\begin{mplibcode}
+ for i := 1 step 1 until 6:
+ draw sphere.s(i*1/4cm) shifted (1/2cm*(i*(i+1))/2, 0);
+ endfor;
+\end{mplibcode}
+
+\subsection{sphereLat (\emph{diameter, angle})}
This macro returns a \texttt{picture} of a shaded sphere with specified diameter. Unlike \texttt{sphere.c} macro, this one draws latitudinal strokes around axis rotated at specified \texttt{angle}.
\begin{lstlisting}
for i := 1 step 1 until 6:
- draw sphere.l(i*1/4cm, -90 + i*30)
+ draw sphereLat(i*1/4cm, -90 + i*30)
shifted (1/2cm*(i*(i+1))/2, 0);
endfor;
\end{lstlisting}
\begin{mplibcode}
for i := 1 step 1 until 6:
- draw sphere.l(i*1/4cm, -90 + i*30)
+ draw sphereLat(i*1/4cm, -90 + i*30)
shifted (1/2cm*(i*(i+1))/2, 0);
endfor;
\end{mplibcode}
@@ -160,6 +172,21 @@ This macro returns a \texttt{picture} of a shaded ``tube'' of variable width alo
draw tube.t (p)(1/2cm*sin(offsetPathLength*pi));
\end{mplibcode}
+\subsection{tube.s (\emph{path})(\emph{offset function})}
+This macro returns a \texttt{picture} of a shaded ``tube'' of variable width along given path, which is controlled by some arbitrary function, analogous to \texttt{offsetPath}. ``Tube'' drawn by this macro is shaded with stipples. Once tube is generated, you can call \texttt{tubeOutline} path global variable, if you need one.
+
+\begin{lstlisting}
+ path p;
+ p := (0,0){dir(30)}..(5cm, 0)..{dir(30)}(10cm, 0);
+ draw tube.s (p)(1/2cm*sin(offsetPathLength*pi));
+\end{lstlisting}
+
+\begin{mplibcode}
+ path p;
+ p := (0,0){dir(30)}..(5cm, 0)..{dir(30)}(10cm, 0);
+ draw tube.s (p)(1/2cm*sin(offsetPathLength*pi));
+\end{mplibcode}
+
\subsection{tube.e (\emph{path})(\emph{offset function})}
This macro returns the outline of a tube as a path.
@@ -200,7 +227,7 @@ This macro returns a \texttt{picture} of a pulley with specified \texttt{diamete
endfor;
\end{lstlisting}
-\begin{mplibcode}
+\noindent\begin{mplibcode}
draw (-1/8cm, 0)--(12cm, 0);
for i := 1 step 1 until 6:
r := 1/7cm*i;
@@ -248,7 +275,8 @@ This macro returns a \texttt{picture} of a wheel with specified \texttt{diameter
endfor;
\end{lstlisting}
-\begin{mplibcode}
+
+\noindent\begin{mplibcode}
draw (-1/8cm, 0)--(12cm, 0);
for i := 1 step 1 until 6:
r := 1/7cm*i;
@@ -267,7 +295,7 @@ This macro returns a \texttt{picture} of a weight of a specific \texttt{height}
draw (-1/8cm, 0)--(12cm, 0);
\end{lstlisting}
-\begin{mplibcode}
+\noindent\begin{mplibcode}
for i := 1 step 1 until 6:
draw weight.s(1/4cm + i*1/4cm) shifted (1/2cm*(i*(i+1))/2, 0);
endfor;
@@ -284,7 +312,7 @@ This macro returns a \texttt{picture} of a weight of a specific \texttt{height}
draw (12cm, 0)--(-1/8cm, 0);
\end{lstlisting}
-\begin{mplibcode}
+\noindent\begin{mplibcode}
for i := 1 step 1 until 6:
draw weight.h(1/4cm + i*1/4cm) shifted (1/2cm*(i*(i+1))/2, 0);
endfor;
@@ -333,6 +361,22 @@ This macro returns a \texttt{picture} of a solid surface on the right side of a
\subsection{solid (\emph{path, angle, type})}
Fills given \texttt{path} with strokes of specific type at a given \texttt{angle}. \texttt{type} can be 0 (``solid'' strokes) and 1 (``glass'' strokes).
+\begin{lstlisting}
+ path p[];
+ p1 := unitsquare scaled 2cm;
+ p2 := p1 shifted (4cm, 0);
+ draw solid(p1, 45, 0);
+ draw solid(p2, -45, 1);
+\end{lstlisting}
+
+\begin{mplibcode}
+ path p[];
+ p1 := unitsquare scaled 2cm;
+ p2 := p1 shifted (4cm, 0);
+ draw solid(p1, 45, 0);
+ draw solid(p2, -45, 1);
+\end{mplibcode}
+
\subsection{woodBlock (\emph{width, height})}
Returns a \texttt{picture} of a rectangular block of wood with its bottom-left corner in the origin.
@@ -383,7 +427,7 @@ This macro returns a \texttt{picture} of the globe of specified \texttt{radius}
\end{mplibcode}
\subsection{Knots}
-There are two macros to handle knot drawing: \texttt{addStrandToKnot} and \texttt{knotFromStrands}. Currently the algorithm is not especially stable.
+There are two macros to handle knot drawing: \texttt{addStrandToKnot} and \texttt{knot\-From\-Strands}. Currently the algorithm is not especially stable.
\subsubsection{addStrandToKnot (\emph{knotName}) (\emph{path, ropeWidth, ropeType, intersectionOrder})}
This macro adds a strand to knot named \texttt{knotName} and returns nothing. Strand follows the given \texttt{path} and has a given \texttt{ropeWidth}. \texttt{ropeType} can be \texttt{"l"}, \texttt{"t"} (as in \texttt{tube.l} and \texttt{tube.t}) or \texttt{"e"} (for an unshaded strand). \texttt{intersectionOrder} is a string of comma separated numbers which represent a ``layer'' to which intersections along the strand go.
@@ -401,15 +445,15 @@ This macro returns a picture of a knot with a given \texttt{knotName}.
p3 := (fullcircle scaled 4cm);
addStrandToKnot (theknot) (p1 shifted (4cm, -4cm), 1/5cm, "l",
"-1,1,-1,1,-1,1,-1,1,-1");
- addStrandToKnot (theknot) (p2 shifted (4cm, -4cm), 1/6cm, "l",
+ addStrandToKnot (theknot) (p2 shifted (4cm, -4cm), 1/6cm, "s",
"");
- addStrandToKnot (theknot) (p3 shifted (4cm, -4cm), 1/7cm, "l",
+ addStrandToKnot (theknot) (p3 shifted (4cm, -4cm), 1/7cm, "e",
"-1,1");
draw knotFromStrands (theknot);
\end{lstlisting}
\begin{mplibcode}
- path p[]; path p[];
+ path p[];
p1 := (dir(90)*4/3cm) {dir(0)} .. tension 3/2
.. (dir(90 + 120)*4/3cm){dir(90 + 30)} .. tension 3/2
.. (dir(90 - 120)*4/3cm){dir(-90 - 30)} .. tension 3/2
@@ -418,13 +462,28 @@ This macro returns a picture of a knot with a given \texttt{knotName}.
p3 := (fullcircle scaled 4cm);
addStrandToKnot (theknot) (p1 shifted (4cm, -4cm), 1/5cm, "l",
"-1,1,-1,1,-1,1,-1,1,-1");
- addStrandToKnot (theknot) (p2 shifted (4cm, -4cm), 1/6cm, "l",
+ addStrandToKnot (theknot) (p2 shifted (4cm, -4cm), 1/6cm, "s",
"");
- addStrandToKnot (theknot) (p3 shifted (4cm, -4cm), 1/7cm, "l",
+ addStrandToKnot (theknot) (p3 shifted (4cm, -4cm), 1/7cm, "e",
"-1,1");
draw knotFromStrands (theknot);
\end{mplibcode}
+\subsection{Other 3D contraptions}
+Some macros can be used to shade 3D polygons. Currently only flat surfaces re supported
+
+\subsubsection{flatSurface\emph{\#@}(\emph{surface outline path, normal vector, hatch angle})}
+This macro returns a \texttt{picture} of a flat surface with the specified \texttt{surface outline path} with the given \texttt{normal vector}, illuminated from the direction determined by \texttt{lightDirection} and with hatches aligned at the andle \texttt{hatch angle}. If \texttt{\#@} is \texttt{".hatches"} then the surface is shaded with hatches, if it's \texttt{".stipples"}, then the surface is shaded with stipples.
+
+\begin{mplibcode}
+ path p[];
+ p1 := unitsquare xscaled 1cm yscaled 2cm;
+ p2 := p1 shifted (1cm, 0);
+ draw flatSurface.hatches(p1, (-1,0,1), 45);
+ draw flatSurface.hatches(p2, (1,0,1), 45);
+draw p1; draw p2;
+\end{mplibcode}
+
\section{Other macros}
Some macros that are not directly related to drawing are listed below
@@ -473,10 +532,10 @@ This macro returns a \texttt{path} that represent a section of a lens with given
Some macros that not related to physical problems at all are listed below.
\subsection{\emph{picture} maskedWith \emph{path}}
-This macro masks a part of a \texttt{picture} with closed \texttt{path}. In fact this is inversion of metapost's built-in \texttt{clip} but, in contrast to the latter, it does not modify original image. Note that it requires that counter-clockwise \texttt{path} to work properly.
+This macro masks a part of a \texttt{picture} with closed \texttt{path}. In fact this is inversion of \METAPOST's built-in \texttt{clip} but, in contrast to the latter, it does not modify original image. Note that it requires that counter-clockwise \texttt{path} to work properly.
\subsection{\emph{path} firstIntersectionTimes \emph{path}}
-This macro is similar to metapost's \texttt{intersectiontimes} but it returns intersection times with smallest time on first path.
+This macro is similar to \METAPOST's \texttt{intersectiontimes} but it returns intersection times with smallest time on first path.
\subsection{pathSubdivide \emph{path, n}}
This macro returns original \texttt{path} with \texttt{n}-times more points.
@@ -824,7 +883,7 @@ Line 3 describe initial setup. Line 4 is problem's solution. Lines 8--11 set all
.. (-4/3cm, 0) .. (-1/2cm, -2/3cm) .. (1/2cm, 0)
.. (-1/2cm, 3/2cm) .. cycle;
p2 := p2 scaled 6/5;
- addStrandToKnot (primeTwo) (p2, 1/4cm, "l", "1, -1, 1, -1, 1");
+ addStrandToKnot (primeTwo) (p2, 1/4cm, "s", "1, -1, 1, -1, 1");
draw knotFromStrands (primeTwo) shifted (4cm, -2cm);
p3 := (dir(0)*3/2cm) .. (dir(1*72)*2/3cm)
.. (dir(2*72)*3/2cm) .. (dir(3*72)*2/3cm)
@@ -833,7 +892,7 @@ Line 3 describe initial setup. Line 4 is problem's solution. Lines 8--11 set all
.. (dir(3*72)*3/2cm) .. (dir(4*72)*2/3cm)
.. cycle;
p3 := (p3 rotated (72/4)) scaled 6/5;
- addStrandToKnot (primeThree) (p3, 1/4cm, "l", "-1, 1, -1, 1, -1");
+ addStrandToKnot (primeThree) (p3, 1/4cm, "e", "-1, 1, -1, 1, -1");
draw knotFromStrands (primeThree) shifted (8cm, 0);
\end{mplibcode}
diff --git a/indexing/xindex/CHANGELOG b/indexing/xindex/CHANGELOG
index 8a951d6ba5..70cae1d354 100644
--- a/indexing/xindex/CHANGELOG
+++ b/indexing/xindex/CHANGELOG
@@ -1,3 +1,4 @@
+0.36 2022-02-07 - fix for introduced bug
0.35 2022-01-22 - fix for escape character
- added language spain for folium pages and header
- added config AU for austrian sorting (experimental)
diff --git a/indexing/xindex/doc/xindex-doc.pdf b/indexing/xindex/doc/xindex-doc.pdf
index 63522357bf..882997ed02 100644
--- a/indexing/xindex/doc/xindex-doc.pdf
+++ b/indexing/xindex/doc/xindex-doc.pdf
Binary files differ
diff --git a/indexing/xindex/doc/xindex-doc.tex b/indexing/xindex/doc/xindex-doc.tex
index 4fe8374b3d..683a906425 100644
--- a/indexing/xindex/doc/xindex-doc.tex
+++ b/indexing/xindex/doc/xindex-doc.tex
@@ -81,7 +81,7 @@
\def\setVersion#1{\setVVersion#1!!}
\def\setVVersion#1=#2!!{\def\xIndexVersion{#2}}
-\setVersion{version = 0.35}% can be automatically changed by perl
+\setVersion{version = 0.36}% can be automatically changed by perl
\setkeys{dtk}{cleanup=true,force}
diff --git a/indexing/xindex/lualatex/xindex-danteedition.lua b/indexing/xindex/lualatex/xindex-danteedition.lua
new file mode 100644
index 0000000000..c39f92d652
--- /dev/null
+++ b/indexing/xindex/lualatex/xindex-danteedition.lua
@@ -0,0 +1,93 @@
+-----------------------------------------------------------------------
+-- FILE: xindex-cfg.lua
+-- DESCRIPTION: configuration file for xindex.lua
+-- REQUIREMENTS:
+-- AUTHOR: Herbert Voß
+-- LICENSE: LPPL1.3
+--
+-- $Id: xindex-danteedition.lua 22 2022-02-07 12:18:15Z hvoss $
+-----------------------------------------------------------------------
+
+if not modules then modules = { } end modules ['xindex-cfg'] = {
+ version = 0.36,
+ comment = "configuration file for the DANTE Edition",
+ author = "Herbert Voss",
+ copyright = "Herbert Voss",
+ license = "LPPL 1.3"
+}
+
+itemPageDelimiter = "," -- Hello, 14
+compressPages = true -- something like 12--15, instead of 12,13,14,15. the |( ... |) syntax is still valid
+fCompress = true -- 3f -> page 3, 4 and 3ff -> page 3, 4, 5
+minCompress = 3 -- 14--17 or
+rangeSymbol = "--"
+numericPage = true -- for non numerical pagenumbers, like "VI-17"
+sublabels = {"", "-\\,", "--\\,", "---\\,"} -- for the (sub(sub(sub-items first one is for item
+pageNoPrefixDel = "" -- a delimiter for page numbers like "VI-17" -- not used !!!
+indexOpening = "" -- commands after \begin{theindex}
+idxnewletter = "\\idxnewletter" -- Only valid if -n is not set
+envStart = "\\begin{theindex}"
+envStop = "\\end{theindex}"
+
+--[[
+ Each character's position in this array-like table determines its 'priority'.
+ Several characters in the same slot have the same 'priority'.
+]]
+alphabet_lower = { -- for sorting
+ { ' ' }, -- only for internal tests
+ { 'a', 'á', 'à', 'ä', 'â', 'å', 'æ', },
+ { 'b' },
+ { 'c', 'ç' },
+ { 'd' },
+ { 'e', 'é', 'è', 'ë', 'ê' },
+ { 'f' },
+ { 'g' },
+ { 'h' },
+ { 'i', 'í', 'ì', 'î', 'ï' },
+ { 'j' },
+ { 'k' },
+ { 'l' },
+ { 'm' },
+ { 'n', 'ñ' },
+ { 'o', 'ó', 'ò', 'ö', 'ô', 'ø', 'œ', 'ø'},
+ { 'p' },
+ { 'q' },
+ { 'r' },
+ { 's', 'š', 'ß' },
+ { 't' },
+ { 'u', 'ú', 'ù', 'ü' , 'û'},
+ { 'v' },
+ { 'w' },
+ { 'x' },
+ { 'y', 'ý', 'ÿ' },
+ { 'z', 'ž' }
+}
+alphabet_upper = { -- for sorting
+ { ' ' },
+ { 'A', 'Á', 'À', 'Ä', 'Å', 'Æ', 'Â' },
+ { 'B' },
+ { 'C', 'Ç' },
+ { 'D' },
+ { 'E', 'È', 'É', 'Ë', 'Ê' },
+ { 'F' },
+ { 'G' },
+ { 'H' },
+ { 'I', 'Í', 'Ì', 'Ï', 'Î' },
+ { 'J' },
+ { 'K' },
+ { 'L' },
+ { 'M' },
+ { 'N', 'Ñ' },
+ { 'O', 'Ó', 'Ò', 'Ö', 'Ø','Œ', 'Ø', 'Ô'},
+ { 'P' },
+ { 'Q' },
+ { 'R' },
+ { 'S', 'Š' },
+ { 'T' },
+ { 'U', 'Ú', 'Ù', 'Ü', 'Û' },
+ { 'V' },
+ { 'W' },
+ { 'X' },
+ { 'Y', 'Ý', 'Ÿ' },
+ { 'Z', 'Ž' }
+}
diff --git a/indexing/xindex/scripts/xindex.lua b/indexing/xindex/scripts/xindex.lua
index 73b0e0c805..984187bf38 100755
--- a/indexing/xindex/scripts/xindex.lua
+++ b/indexing/xindex/scripts/xindex.lua
@@ -6,11 +6,11 @@
-- AUTHOR: Herbert Voß
-- LICENSE: LPPL 1.3
--
--- $Id: xindex.lua 20 2022-01-22 10:37:29Z hvoss $
+-- $Id: xindex.lua 21 2022-01-27 17:45:10Z hvoss $
-----------------------------------------------------------------------
xindex = xindex or { }
- local version = 0.35
+ local version = 0.36
xindex.version = version
--xindex.self = "xindex"
@@ -179,9 +179,14 @@ writeLog(2,"Loading common config file ".."xindex-cfg-common\n",1)
Config_File_Common = kpse.find_file("xindex-cfg-common.lua")
cfg_common = require(Config_File_Common)
-local config_file = "xindex-"..args.config..".lua"
-writeLog(2,"Loading local config file "..config_file,0)
-Config_File = kpse.find_file(config_file)
+local user_config_file = "xindex-"..args["config"]..".lua"
+print("Local config file is: "..user_config_file)
+writeLog(2,"Loading local config file "..user_config_file,0)
+if kpse.find_file(user_config_file)
+ then Config_File = kpse.find_file(user_config_file)
+ else print("Cannot find config file with kpse.find_file!!")
+end
+print("\nLocal KPSE config file is: "..Config_File.."\n")
cfg = require(Config_File)
writeLog(2," ... done\n",0)
diff --git a/macros/latex/contrib/codehigh/README b/macros/latex/contrib/codehigh/README.txt
index 302880b5bd..302880b5bd 100644
--- a/macros/latex/contrib/codehigh/README
+++ b/macros/latex/contrib/codehigh/README.txt
diff --git a/macros/latex/contrib/codehigh/codehigh.pdf b/macros/latex/contrib/codehigh/codehigh.pdf
index d1569be86d..354cc68425 100644
--- a/macros/latex/contrib/codehigh/codehigh.pdf
+++ b/macros/latex/contrib/codehigh/codehigh.pdf
Binary files differ
diff --git a/macros/latex/contrib/codehigh/codehigh.sty b/macros/latex/contrib/codehigh/codehigh.sty
index 8399f8d9f6..a075bd1b33 100644
--- a/macros/latex/contrib/codehigh/codehigh.sty
+++ b/macros/latex/contrib/codehigh/codehigh.sty
@@ -6,13 +6,13 @@
%%% License : The LaTeX Project Public License 1.3c
%%% ----------------------------------------------------------------------------
-%~%% -------------------------------------------------------
-%~% \section{Variables and Functions}
-%~%% -------------------------------------------------------
+%%% -------------------------------------------------------
+%%> \section{Variables and Functions}
+%%% -------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
-\ProvidesExplPackage{codehigh}{2021-05-12}{2021C}
+\ProvidesExplPackage{codehigh}{2022-02-07}{2022D}
{Highlight codes and demos with l3regex and lpeg}
%\RequirePackage{xparse}
@@ -25,8 +25,6 @@
\RequirePackage{luatexbase}
\fi
-\ExplSyntaxOn
-
\int_new:N \l__codehigh_a_int
\int_new:N \l__codehigh_b_int
\tl_new:N \l__codehigh_a_tl
@@ -40,7 +38,8 @@
\cs_generate_variant:Nn \str_remove_once:Nn {NV}
\cs_generate_variant:Nn \tl_set_rescan:Nnn {NnV}
-\prg_generate_conditional_variant:Nnn \regex_extract_once:NnN {cVN} {T, TF}
+\prg_generate_conditional_variant:Nnn \str_if_eq:nn {en} {T, TF}
+\prg_generate_conditional_variant:Nnn \regex_extract_once:NnN {NVN, cVN} {T, TF}
\prg_generate_conditional_variant:Nnn \regex_split:NnN {cVN} {T, TF}
\group_begin:
@@ -49,9 +48,9 @@
\tl_gset:Nn \g__codehigh_eol_eol_tl {^^M^^M}
\group_end:
-%~%% -------------------------------------------------------
-%~% \section{Set CodeHign Options}
-%~%% -------------------------------------------------------
+%%% -------------------------------------------------------
+%%> \section{Set CodeHigh Options}
+%%% -------------------------------------------------------
\bool_new:N \l__codehigh_lite_bool
\bool_new:N \l__codehigh_long_bool
@@ -69,9 +68,9 @@
demo .bool_set:N = \l__codehigh_demo_bool,
}
-%~%% -------------------------------------------------------
-%~% \section{CodeHign Environments and Commands}
-%~%% -------------------------------------------------------
+%%% -------------------------------------------------------
+%%> \section{CodeHigh Environments and Commands}
+%%% -------------------------------------------------------
\NewDocumentCommand \NewCodeHighEnv {mm}
{
@@ -136,17 +135,50 @@
\seq_map_inline:Nn \l__codehigh_input_seq
{
\tl_gset:Nn \g__codehigh_code_tl {##1}
- \__codehigh_typeset_code:
- \par
- \medskip
+ \__codehigh_typeset_comment:N \g__codehigh_code_tl
+ \tl_if_blank:VF \g__codehigh_code_tl
+ {
+ \__codehigh_typeset_code:
+ \par
+ \medskip
+ }
+ }
+ }
+
+\regex_const:Nn \l__codehigh_comment_regex { ^ \% \% ( [\%>] ) ( [^\r]+ ) [\r] }
+\tl_new:N \l__codehigh_comment_tl % comment lines that need to be typeset
+\bool_new:N \l__codehigh_comment_bool
+
+%% remove lines starting with %%%, and typeset lines starting with %%>
+\cs_new_protected:Npn \__codehigh_typeset_comment:N #1
+ {
+ \tl_set_eq:NN \l_tmpa_tl #1
+ \tl_put_right:NV \l_tmpa_tl \g__codehigh_eol_tl
+ \tl_clear:N \l__codehigh_comment_tl
+ \bool_set_false:N \l__codehigh_comment_bool
+ \bool_do_until:Nn \l__codehigh_comment_bool
+ {
+ %% Unfortunately we need both \regex_extract_once and \regex_replace_once
+ \regex_extract_once:NVNTF \l__codehigh_comment_regex \l_tmpa_tl \l_tmpa_seq
+ {
+ \regex_replace_once:NnN \l__codehigh_comment_regex {} \l_tmpa_tl
+ \str_if_eq:enT { \seq_item:Nn \l_tmpa_seq {2} } {>}
+ {
+ \tl_put_right:Nx \l__codehigh_comment_tl
+ { \seq_item:Nn \l_tmpa_seq {3} }
+ }
+ }
+ { \bool_set_true:N \l__codehigh_comment_bool }
}
+ \exp_args:NV \scantokens \l__codehigh_comment_tl
+ \tl_gset_eq:NN #1 \l_tmpa_tl
}
\NewCodeHighInput \dochighinput {long}
-%~%% -------------------------------------------------------
-%~% \section{Typeset CodeHign Code}
-%~%% -------------------------------------------------------
+%%% -------------------------------------------------------
+%%> \section{Typeset CodeHigh Code}
+%%% -------------------------------------------------------
\dim_new:N \l__codehigh_main_boxsep_dim
@@ -231,9 +263,9 @@
\group_end:
}
-%~%% -------------------------------------------------------
-%~% \section{Typeset CodeHign Demo}
-%~%% -------------------------------------------------------
+%%% -------------------------------------------------------
+%%> \section{Typeset CodeHigh Demo}
+%%% -------------------------------------------------------
\box_new:N \g__codehigh_demo_box
@@ -302,9 +334,9 @@
}
}
-%~%% -------------------------------------------------------
-%~% \section{Add CodeHign Languages}
-%~%% -------------------------------------------------------
+%%% -------------------------------------------------------
+%%> \section{Add CodeHigh Languages}
+%%% -------------------------------------------------------
\keys_define:nn {codehigh}
{
@@ -372,9 +404,9 @@
\AddCodeHighRule[latex/latex3]{3}{Bracket} {[\[\]]}
\AddCodeHighRule[latex/latex3]{9}{Comment} {\%.*?\r}
-%~%% -------------------------------------------------------
-%~% \section{Add CodeHigh Themes}
-%~%% -------------------------------------------------------
+%%% -------------------------------------------------------
+%%> \section{Add CodeHigh Themes}
+%%% -------------------------------------------------------
\keys_define:nn {codehigh}
{
@@ -411,9 +443,9 @@
\SetCodeHighStyle[default]{8}{purple3}
\SetCodeHighStyle[default]{9}{gray3}
-%~%% -------------------------------------------------------
-%~% \section{Parse and Highlight Code}
-%~%% -------------------------------------------------------
+%%% -------------------------------------------------------
+%%> \section{Parse and Highlight Code}
+%%% -------------------------------------------------------
\int_new:N \l__codehigh_item_count_int
\tl_new:N \l__codehigh_code_to_parse_tl
@@ -517,9 +549,9 @@
}
\cs_generate_variant:Nn \__codehigh_typeset_text:nN { VN, vc }
-%~%% -------------------------------------------------------
-%~% \section{Don't Highlight Code}
-%~%% -------------------------------------------------------
+%%% -------------------------------------------------------
+%%> \section{Don't Highlight Code}
+%%% -------------------------------------------------------
\cs_new_protected:Npn \__codehigh_parse_code_lite:N #1
{
@@ -528,5 +560,3 @@
\tl_use:N #1
}
-\ExplSyntaxOff
-
diff --git a/macros/latex/contrib/codehigh/codehigh.tex b/macros/latex/contrib/codehigh/codehigh.tex
index 950ad653c8..35f648dfe1 100644
--- a/macros/latex/contrib/codehigh/codehigh.tex
+++ b/macros/latex/contrib/codehigh/codehigh.tex
@@ -2,6 +2,13 @@
\documentclass[oneside]{book}
\usepackage[a4paper,margin=2cm]{geometry}
+\newcommand*{\myversion}{2022D}
+\newcommand*{\mydate}{Version \myversion\ (\the\year-\mylpad\month-\mylpad\day)}
+\newcommand*{\mylpad}[1]{\ifnum#1<10 0\the#1\else\the#1\fi}
+
+\setlength{\parindent}{0pt}
+\setlength{\parskip}{4pt plus 1pt minus 1pt}
+
\usepackage{codehigh}
\usepackage{hyperref}
\hypersetup{
@@ -10,10 +17,6 @@
linkcolor=green3,
}
-\newcommand*{\myversion}{2021C}
-\newcommand*{\mydate}{Version \myversion\ (\the\year-\mylpad\month-\mylpad\day)}
-\newcommand*{\mylpad}[1]{\ifnum#1<10 0\the#1\else\the#1\fi}
-
\begin{document}
\title{\textsf{\color{green3}Codehigh: Highlight Codes and Demos with l3RegEx and LPeg}}
@@ -23,7 +26,7 @@
\tableofcontents
-\chapter{Package Interface}
+\chapter{Package Interfaces}
\section{Introduction}
@@ -35,9 +38,9 @@ Therefore in LuaTeX the package provides another way to highlight code: using \v
\footnote{\url{http://www.inf.puc-rio.br/~roberto/lpeg/}}.
\verb!LPeg! is much more powerful and faster than \verb!l3regex!.
-At present, this package is in \underline{\color{red3}\textbf{experimental}} status.
-Don’t use it in important documents, unless you have time
-to update them for the newer versions of \verb!codehigh! package in the future.
+%At present, this package is in \underline{\color{red3}\textbf{experimental}} status.
+%Don’t use it in important documents, unless you have time
+%to update them for the newer versions of \verb!codehigh! package in the future.
\section{Highlighting Code}
@@ -76,7 +79,7 @@ The following example is typeset by \verb!codehigh! environment with option \ver
}
\end{codehigh}
This language is for highlighting LaTeX2 classes and packages.
-Note that private commands and public commands are highlighted with different colors.
+It highlights private commands and public commands with different colors.
The following example is typeset by \verb!codehigh! environment with option \verb!language=latex/latex3!.
\begin{codehigh}[language=latex/latex3]
@@ -91,7 +94,7 @@ The following example is typeset by \verb!codehigh! environment with option \ver
}
\end{codehigh}
This language is for highlighting LaTeX3 classes and packages.
-Note that private commands/variables and public commands/variables are highlighted with different colors.
+It highlights private commands/variables and public commands/variables with different colors.
The following example is typeset by \verb!codehigh! environment with option \verb!language=latex/math!.
\begin{codehigh}[language=latex/math]
@@ -147,6 +150,9 @@ The last chapter of this manual is typeset with the following code line:
\dochighinput[language=latex/latex3]{codehigh.sty}
\end{codehigh}
+In reading an input file, lines starting wtih \verb!%%%! will be omitted,
+and lines starting with \verb!%%>! will be extracted and typeset as normal text.
+
\section{Customization}
The following example changes default background colors with \verb!\CodeHigh! command:
@@ -171,7 +177,7 @@ Note that \verb!codehigh! package will load \verb!ninecolors!%
To modify or add languages and themes, please read the source files
\verb!codehigh.sty! and \verb!codehigh.lua! for reference.
-\chapter{Source Code}
+\chapter{The Source Code}
\dochighinput[language=latex/latex3]{codehigh.sty}
diff --git a/macros/latex/contrib/l3backend/CHANGELOG.md b/macros/latex/contrib/l3backend/CHANGELOG.md
index 6611281878..68a0f8e377 100644
--- a/macros/latex/contrib/l3backend/CHANGELOG.md
+++ b/macros/latex/contrib/l3backend/CHANGELOG.md
@@ -6,6 +6,11 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2022-02-07]
+
+### Fixed
+- Use of color stack int in scope end for `(x)dvipdfmx`
+
## [2022-01-12]
### Changed
@@ -212,7 +217,8 @@ this project uses date-based 'snapshot' version identifiers.
- Include `l3backend` in file names
- Moved backend code to internal for each 'parent' module
-[Unreleased]: https://github.com/latex3/latex3/compare/2022-01-12...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2022-02-07...HEAD
+[2022-02-07]: https://github.com/latex3/latex3/compare/2022-01-12...2022-02-07
[2022-01-12]: https://github.com/latex3/latex3/compare/2021-12-14...2022-01-12
[2021-12-14]: https://github.com/latex3/latex3/compare/2021-10-17...2021-12-14
[2021-10-17]: https://github.com/latex3/latex3/compare/2021-10-12...2021-10-17
diff --git a/macros/latex/contrib/l3backend/README.md b/macros/latex/contrib/l3backend/README.md
index 686bcf7c21..31dccaaa60 100644
--- a/macros/latex/contrib/l3backend/README.md
+++ b/macros/latex/contrib/l3backend/README.md
@@ -1,7 +1,7 @@
LaTeX3 Backend Drivers
======================
-Release 2022-01-12
+Release 2022-02-07
This package forms parts of `expl3`, and contains the code used to interface
with backends (drivers) across the `expl3` codebase. The functions here are
diff --git a/macros/latex/contrib/l3backend/l3backend-basics.dtx b/macros/latex/contrib/l3backend/l3backend-basics.dtx
index cc3ca4c925..d7c3c6e4c3 100644
--- a/macros/latex/contrib/l3backend/l3backend-basics.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-basics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-01-12}
+% \date{Released 2022-02-07}
%
% \maketitle
%
@@ -70,27 +70,27 @@
% \begin{macrocode}
\ProvidesExplFile
%<*dvipdfmx>
- {l3backend-dvipdfmx.def}{2022-01-12}{}
+ {l3backend-dvipdfmx.def}{2022-02-07}{}
{L3 backend support: dvipdfmx}
%</dvipdfmx>
%<*dvips>
- {l3backend-dvips.def}{2022-01-12}{}
+ {l3backend-dvips.def}{2022-02-07}{}
{L3 backend support: dvips}
%</dvips>
%<*dvisvgm>
- {l3backend-dvisvgm.def}{2022-01-12}{}
+ {l3backend-dvisvgm.def}{2022-02-07}{}
{L3 backend support: dvisvgm}
%</dvisvgm>
%<*luatex>
- {l3backend-luatex.def}{2022-01-12}{}
+ {l3backend-luatex.def}{2022-02-07}{}
{L3 backend support: PDF output (LuaTeX)}
%</luatex>
%<*pdftex>
- {l3backend-pdftex.def}{2022-01-12}{}
+ {l3backend-pdftex.def}{2022-02-07}{}
{L3 backend support: PDF output (pdfTeX)}
%</pdftex>
%<*xetex>
- {l3backend-xetex.def}{2022-01-12}{}
+ {l3backend-xetex.def}{2022-02-07}{}
{L3 backend support: XeTeX}
%</xetex>
% \end{macrocode}
diff --git a/macros/latex/contrib/l3backend/l3backend-box.dtx b/macros/latex/contrib/l3backend/l3backend-box.dtx
index 5dcafc8c88..1d3450c78c 100644
--- a/macros/latex/contrib/l3backend/l3backend-box.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-box.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-01-12}
+% \date{Released 2022-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-code.pdf b/macros/latex/contrib/l3backend/l3backend-code.pdf
index 9860b3d626..a3f052df2c 100644
--- a/macros/latex/contrib/l3backend/l3backend-code.pdf
+++ b/macros/latex/contrib/l3backend/l3backend-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3backend/l3backend-color.dtx b/macros/latex/contrib/l3backend/l3backend-color.dtx
index 6bf3a80976..064c55fa60 100644
--- a/macros/latex/contrib/l3backend/l3backend-color.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-color.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-01-12}
+% \date{Released 2022-02-07}
%
% \maketitle
%
@@ -246,8 +246,11 @@
\cs_gset_protected:Npn \__kernel_backend_scope_end:
{
\__kernel_backend_literal:n { x:grestore }
- \__kernel_backend_literal:n
- { pdfcolorstack ~ \g_@@_backend_stack_int current }
+ \__kernel_backend_literal:x
+ {
+ pdfcolorstack ~
+ \int_use:N \g_@@_backend_stack_int \c_space_tl current
+ }
}
}
% \end{macrocode}
diff --git a/macros/latex/contrib/l3backend/l3backend-draw.dtx b/macros/latex/contrib/l3backend/l3backend-draw.dtx
index 41466652e1..43da62e394 100644
--- a/macros/latex/contrib/l3backend/l3backend-draw.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-draw.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-01-12}
+% \date{Released 2022-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-graphics.dtx b/macros/latex/contrib/l3backend/l3backend-graphics.dtx
index 63d01c70f3..37122b9a74 100644
--- a/macros/latex/contrib/l3backend/l3backend-graphics.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-graphics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-01-12}
+% \date{Released 2022-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-header.dtx b/macros/latex/contrib/l3backend/l3backend-header.dtx
index 2e48498792..fe05e97760 100644
--- a/macros/latex/contrib/l3backend/l3backend-header.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-header.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-01-12}
+% \date{Released 2022-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-opacity.dtx b/macros/latex/contrib/l3backend/l3backend-opacity.dtx
index d401e24735..a38736bc5a 100644
--- a/macros/latex/contrib/l3backend/l3backend-opacity.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-opacity.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-01-12}
+% \date{Released 2022-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-pdf.dtx b/macros/latex/contrib/l3backend/l3backend-pdf.dtx
index f9d12695e4..7b642b1a46 100644
--- a/macros/latex/contrib/l3backend/l3backend-pdf.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-pdf.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-01-12}
+% \date{Released 2022-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/mathtools/empheq.pdf b/macros/latex/contrib/mathtools/empheq.pdf
index 234fbb975c..47acd17426 100644
--- a/macros/latex/contrib/mathtools/empheq.pdf
+++ b/macros/latex/contrib/mathtools/empheq.pdf
Binary files differ
diff --git a/macros/latex/contrib/mathtools/mathtools.dtx b/macros/latex/contrib/mathtools/mathtools.dtx
index 15cf76b323..eb20187e89 100644
--- a/macros/latex/contrib/mathtools/mathtools.dtx
+++ b/macros/latex/contrib/mathtools/mathtools.dtx
@@ -133,7 +133,7 @@ and the derived files
%<*driver>
\NeedsTeXFormat{LaTeX2e}
\ProvidesFile{mathtools.drv}%
- [2022/02/02 v1.28 mathematical typesetting tools]
+ [2022/02/07 v1.28a mathematical typesetting tools]
\documentclass{ltxdoc}
\IfFileExists{fourier.sty}{\usepackage{fourier}}{}
@@ -3046,7 +3046,7 @@ colorlinks,
% \begin{macrocode}
%<*package>
\ProvidesPackage{mathtools}%
- [2021/02/02 v1.28 mathematical typesetting tools]
+ [2022/02/07 v1.28a mathematical typesetting tools]
% \end{macrocode}
% \changes{v1.10}{2011/02/12}{Might as well make sure that we need the
% latest version of \texttt{mhsetup}}
diff --git a/macros/latex/contrib/mathtools/mathtools.pdf b/macros/latex/contrib/mathtools/mathtools.pdf
index 9a1ab1198a..67a7e32db0 100644
--- a/macros/latex/contrib/mathtools/mathtools.pdf
+++ b/macros/latex/contrib/mathtools/mathtools.pdf
Binary files differ
diff --git a/macros/latex/contrib/mathtools/mhsetup.pdf b/macros/latex/contrib/mathtools/mhsetup.pdf
index 796893b4b3..14008f4ebd 100644
--- a/macros/latex/contrib/mathtools/mhsetup.pdf
+++ b/macros/latex/contrib/mathtools/mhsetup.pdf
Binary files differ
diff --git a/macros/latex/contrib/proof-at-the-end/README.md b/macros/latex/contrib/proof-at-the-end/README.md
index 5e7a2f9b95..9f27306c59 100644
--- a/macros/latex/contrib/proof-at-the-end/README.md
+++ b/macros/latex/contrib/proof-at-the-end/README.md
@@ -7,17 +7,16 @@ WARNING: this package is definitely usable, but may not be as tested and stable
This package aims to provide a way to easily move proofs in the appendix. You can:
- Move proofs in different places/sections by giving different "categories" to the theorems
-- Create links from theorem to proof, and from proof to theorem
+- Create links from theorem to proof, and from proof to theorem (and configure the text)
- Restate the theorem in appendix (or before)
-- Keep the proof in the main body like normal theorems by just adding with just one keyword
+- Choose what you want to keep in the main text or in appendix (you can put in appendix either everything, just the proof, the theorem and the proof by keeping (or not) a copy in the body of the article...)
- Duplicate the proof in appendix and in the current section, practical to use synctex during the proof writting
-- Add comments that would appear only in the appendix (or in both body and appendix)
-- Move both the theorem and the proof completely in appendix
+- Add text that would appear only in the appendix (or in both body and appendix)
- Easily change the defaults, and create your own styles/environments
- Include sketch of proof in the main text, and full proof in appendix
- Change the text of the link, for example to translate into another language
- Have a nice environment-based commands in order to mimic the usual theorem/proof structure.
-
+- Separate the main article and the body in two documents (some journals may ask for a separate file for the appendix)
NB: This project is hosted on github at [https://github.com/leo-colisson/proof-at-the-end](https://github.com/leo-colisson/proof-at-the-end) . Feel free to contribute, report bugs, or read/copy-paste the documentation/examples from there.
@@ -223,7 +222,7 @@ An older version of the package explicitely loaded `hyperref` with no option, an
### Configuration and how to use and create styles ###
-You can very easily configure this package, and choose how each theorem/proof must be displayed by providing a value in `OPTIONS`. For example, if you would like to keep the proof of a theorem in the main text like any normal theorem, use the `normal` option:
+You can very easily configure this package, and choose how each theorem/proof must be displayed by providing a value in `OPTIONS`. For example, if you would like to keep the proof of a theorem in the main text like any normal theorem, use the `normal` option.
```latex
\begin{theoremEnd}[normal]{thm}[A title]
@@ -234,6 +233,26 @@ You can very easily configure this package, and choose how each theorem/proof mu
\end{proofEnd}
```
+If you loaded the package using `\usepackage[createShortEnv]{proof-at-the-end}` (starting from 2022/01/28), you also have preconfigured shortcuts for multiple environments, namely `proofE` (to replace `proof`), `thmE` (to replace `thm`), `theoremE` (to replace... ok you got the pattern), `lemmaE`, `propositionE`, `propertyE`, `factE` and `corollaryE`. This way, you can simplify the above as:
+```latex
+\begin{thmE}[A title][normal]
+ You can easily turn a theorem back into a normal theorem!
+\end{thmE}
+\begin{proofE}
+ And keep the proof with you!
+\end{proofE}
+```
+
+(You can of course remove the `[...]` containing the options and the title, however if you want to add options without any title, **make sure to use empty brackets for the title**, like `\begin{thmE}[][normal]`.
+
+Since 2022/01/28, you can also create new theorem environment that directly come with a preconfigured style (you may also find `\pratendSetLocal` useful if you want to change the style in a whole section). For instance to create a `thmNormal` environment having the `normal` option and a `thmSpecial` environment having the `all end, category=mySpecial` options, just do:
+```
+\newEndThm[normal]{thmNormal}{thm} % 'thm' is the name of the existing thm environment
+\newEndThm[all end, category=mySpecial]{thmSpecial}{thm}
+```
+
+This way, you can simply use `\begin{thmSpecial}[Special title] ... \end{thmSpecial}` to create a theorem going in the special category (see below). (you also have `\newEndProof[options]{newProofEnv}` to define new proofs, but it is less useful as options are typically given in the theorem).
+
The options are in fact a set of keys/values, thanks to `pgfkeys`. So you can combine them with comma separated list like that (order matters, as the right-most values may overwrite configuration set by left-most values):
```latex
@@ -274,6 +293,11 @@ Note however that for now it is *not* possible to use macros directly inside the
}
```
+or, for short (needs version > 2022/02/04):
+```latex
+\pratendSetGlobal{one big link="blabla"}
+```
+
and for local configuration:
```latex
\pgfkeys{/prAtEnd/local custom defaults/.style={
@@ -282,15 +306,11 @@ and for local configuration:
}
```
-Finally, it can be practical to define custom environments to avoid typing always `theoremEnd` using something like that (`thmE` is the shortcut environment to create, and `thm` is the old one):
-
+for short (needs version > 2022/02/04):
```latex
-\newEndThm[normal]{thmE}{thm}
-\newEndProof{proofE}
+\pratendSetLocal{category=greattheorem}
```
-By default, loading the package using the `createShortEnv` option automatically creates the shortcut environments `proofE` (to replace `proof`), `thmE` (to replace `thm`), `theoremE` (to replace... ok you got the pattern), `lemmaE` and `corollaryE`.
-
Then you can use like that:
```latex
@@ -316,7 +336,7 @@ Then you can use like that:
\end{proofE}
```
-Note also that it is also possible to give options to the `proofEnd` environment, but it is usually useless, as it will automatically pick the parameters from the last `theoremEnd` environment. However, if for some reasons you want to change the options of the proof only, you can do it, but do it as your own risks ;)
+Note also that it is possible to give options to the `proofEnd` environment, but it is usually useless, as it will automatically pick the parameters from the last `theoremEnd` environment. However, if for some reasons you want to change the options of the proof only, you can do it, but do it as your own risks ;)
### Usual styles ###
@@ -326,10 +346,10 @@ We predefined some pretty common styles/options. The full list is at the end of
- `category=yourowncategory`: change the category of the theorem (see next sub-section)
- `end`: put the proof in appendix
- `all end`: put both the theorem and the proof in appendix
-- `debug`: make sure the proof is written in the main text as well. Practical when you write the proof to be able to use synctex (if you use synctex with the proof in appendix, your will be unfortunately moved to a temporary file that this library is using... so **make sure you don't modify the files named like `prattheenddefaultcategory.tex` or all your changes will be lost at the next compilation**!).
+- `debug`: make sure the proof is written in the main text as well. Practical when you write the proof to be able to use synctex (if you use synctex with the proof in appendix, your will be unfortunately moved to a temporary file that this library is using... so **make sure you don't modify the files named like `*prattheenddefaultcategory.tex` or all your changes will be lost at the next compilation**!).
- `one big link`: if you prefer to have a single big link instead of two links (one for the proof, one for the page)
- `one big link translated=Your translation`: to change/translate the text of the link easily
-- `text link section`: put a link looking like "See proof in section XX."
+- `text link section`: put a link looking like "See proof in section XX.". You can use `text link=` to remove this link.
- `text link section full proof`: put a link looking like "See full proof in section XX."
- `text proof translated=Your translation`: to change/translate the text of the proof at the end easily
- `global custom defaults`: empty style that you can modify to change the configuration (globally)
@@ -438,6 +458,27 @@ You can include a sketch of proof in the main text by simply adding a proof in b
\end{proofEnd}
```
+### Split the article in two documents, one for the main body and one for the appendix ###
+
+Since 2022/02/04, it is possible to include the appendix in a separate file. Internally, this library creates a new file having the form `NAME_OF_FILE-pratendNAME_CATEGORY.tex` containing the proofs to include (then, `\printProofs` only input that file). You can input that file from other files if you want to separate the body from the proof, but it won't work if you have restate theorems. You should use the option `external appendix` (starting from version 2022/02/04) to restate appropriately the theorem:
+
+```latex
+\usepackage[createShortEnv,conf={external appendix}]{proof-at-the-end}
+```
+
+Then, compile your main file and create a new file for the appendix, load the theorems environments as for the main file, in the preambule load the `xr` package to properly have references (otherwise you won't have the appropriate number for the theorems) using something like:
+```
+\usepackage{xr}
+\externaldocument{name_of_main_file_without_extension}
+```
+
+and in this new document just add the appendix wherever you want:
+```latex
+\includeExternalAppendix{name_of_main_file_without_extension}
+```
+
+You can see an exemple in the github repository, with the two files `demo_external_appendix.tex` and `demo_external_appendix_part2.tex`. Whenever your proofs change in the main paper, make sure to compile first the main document (so that the auxiliary file gets updated), and then compile the appendix document. Note that you can still use `\printProofs` in the main document if you like (while writting your paper, it is certainly easier to keep the proofs and theorems in the same document).
+
## List of options ##
Here is the list of fundamental options supported. Most options have a `no` version, with `no ` written before. Note that you may prefer to use directly the alias/styles (see next paragraph) as the options listed here are quite fundamental and atomic.
@@ -455,6 +496,7 @@ Here is the list of fundamental options supported. Most options have a `no` vers
- `restate command`: name of a unique macro (without backslash) that will be defined as an alias to restate the theorem wherever you want
- `restated before`: if the theorems has been stated before (with `\theoremProofEndRestateBefore`), then we just need to put the restate command in place of the theorem, and enable this option
- `both`/`no both`: only for `\textInAppendix`, specifies that the text must be present in both the main text and the appendix.
+- `external appendix`: to ensure the appendix can be included in another file (see details above), starting from version 2022/02/04.
Here are all the alias/styles (you can create you own as well), they are practical to quickly define a behaviours, but are made of the basic options listed above:
@@ -473,6 +515,9 @@ Here are all the alias/styles (you can create you own as well), they are practic
- `default text link`: default text for the link to the proof, equivalent of `text link={See \hyperref[proof:prAtEnd\pratendcountercurrent]{proof} on page~\pageref{proof:prAtEnd\pratendcountercurrent}.}`
- `default text proof`: default text for the proof in appendix, equivalent of `text proof={Proof of \string\pratendRef{thm:prAtEnd\pratendcountercurrent}}`
- `text proof translated`: like `default text proof`, but takes one argument and use it instead of `Proof of`. Example: `text proof translated={Preuve du}`
+- `text link external appendix`: style used to configure the text to display when the appendix is in an external file. Defaults to `text link={The proof is in the appendix.}`.
+- `external appendix`: useful when the the proofs are moved in an external file (read more above). In particular, it will ensure that normal theorems are used instead of restate since restate does not work across files. This will also apply `text link external appendix` to change the text accordingly.
+- `only external appendix`: like `external appendix`, but without changing the text.
- `bare defaults`: default style that is loaded before anything else that configure by default a link to the proof, put the proof in appendix, use the category `defaultcategory`. It is an alias of `end, link to proof, no restate,category=defaultcategory, default text link,default text proof,restate command=pratenddummymacro`.
- `configuration options`: style that contains the options used to load the package. It is called right after `bare defaults`. Note that you cannot insert macro in the options, overwrite `global custom defaults` instead
- `global custom defaults`: empty style that you can overwrite to change the global defaults
@@ -528,6 +573,13 @@ In anycase, there exists some workarounds, some of the are for instance give in
## Changelog
+- 2022/02/07:
+ 1. [issue 2](https://github.com/leo-colisson/proof-at-the-end/issues/2) was not really solved in fact... Now, I use a more robust method to detect the current section: I write in an AUX file the label of the proof section. This way, I don't need anymore to use dirty tricks to recover the section label.
+ 2. Change the default text when the appendix is in an external file, and add options like `text link external appendix` to customize the text appearing when the appendix is in an external file. Of course, you can still change it using `text link` directly.
+- 2022/02/04:
+ 1. Add a way to put theorems in different files. (see `external appendix`)
+ 2. Change the path for auxiliary files (should be transparent for the user)
+ 3. Add commands to change local/global configuration easily (see `\pratendSetLocal`,`\pratendSetGlobal`)
- 2022/02/01:
1. Fix a typo when defining the shortcut for lemma
2. Add a shortcut for proposition
diff --git a/macros/latex/contrib/proof-at-the-end/proof-at-the-end.dtx b/macros/latex/contrib/proof-at-the-end/proof-at-the-end.dtx
index d5f6ac4646..8fee5c8ecd 100644
--- a/macros/latex/contrib/proof-at-the-end/proof-at-the-end.dtx
+++ b/macros/latex/contrib/proof-at-the-end/proof-at-the-end.dtx
@@ -1,12 +1,12 @@
%\iffalse
% proof-at-the-end.dtx generated using makedtx version 1.2 (c) Nicola Talbot
% Command line args:
-% -author "Léo Colisson"
+% -doc "../doc/proof-at-the-end_doc.tex"
% -src "proof-at-the-end\.sty=>proof-at-the-end.sty"
+% -author "Léo Colisson"
% -dir "/home/leo/Documents/Informatique/Programmation/LaTeX/proof-at-the-end/"
-% -doc "../doc/proof-at-the-end_doc.tex"
% proof-at-the-end
-% Created on 2022/2/1 17:07
+% Created on 2022/2/7 18:01
%\fi
%\iffalse
%<*package>
@@ -169,20 +169,20 @@
% Move proofs in different places/sections by giving different
% ``categories'' to the theorems
%\item
-% Create links from theorem to proof, and from proof to theorem
+% Create links from theorem to proof, and from proof to theorem (and
+% configure the text)
%\item
% Restate the theorem in appendix (or before)
%\item
-% Keep the proof in the main body like normal theorems by just adding
-% with just one keyword
+% Choose what you want to keep in the main text or in appendix (you can
+% put in appendix either everything, just the proof, the theorem and the
+% proof by keeping (or not) a copy in the body of the article\ldots)
%\item
% Duplicate the proof in appendix and in the current section, practical
% to use synctex during the proof writting
%\item
-% Add comments that would appear only in the appendix (or in both body
-% and appendix)
-%\item
-% Move both the theorem and the proof completely in appendix
+% Add text that would appear only in the appendix (or in both body and
+% appendix)
%\item
% Easily change the defaults, and create your own styles/environments
%\item
@@ -193,6 +193,9 @@
%\item
% Have a nice environment-based commands in order to mimic the usual
% theorem/proof structure.
+%\item
+% Separate the main article and the body in two documents (some journals
+% may ask for a separate file for the appendix)
%\end{itemize}
%
%NB: This project is hosted on github at
@@ -529,7 +532,7 @@
%theorem/proof must be displayed by providing a value in
%\texttt{OPTIONS}. For example, if you would like to keep the proof of a
%theorem in the main text like any normal theorem, use the
-%\texttt{normal} option:
+%\texttt{normal} option.
%
%\begin{Shaded}
%\begin{Highlighting}[]
@@ -542,6 +545,52 @@
%\end{Highlighting}
%\end{Shaded}
%
+%If you loaded the package using
+%\texttt{\textbackslash{}usepackage{[}createShortEnv{]}\{proof-at-the-end\}}
+%(starting from 2022/01/28), you also have preconfigured shortcuts for
+%multiple environments, namely \texttt{proofE} (to replace
+%\texttt{proof}), \texttt{thmE} (to replace \texttt{thm}),
+%\texttt{theoremE} (to replace\ldots{} ok you got the pattern),
+%\texttt{lemmaE}, \texttt{propositionE}, \texttt{propertyE},
+%\texttt{factE} and \texttt{corollaryE}. This way, you can simplify the
+%above as:
+%
+%\begin{Shaded}
+%\begin{Highlighting}[]
+%\KeywordTok{\textbackslash{}begin}\NormalTok{\{}\ExtensionTok{thmE}\NormalTok{\}[A title][normal]}
+%\NormalTok{ You can easily turn a theorem back into a normal theorem!}
+%\KeywordTok{\textbackslash{}end}\NormalTok{\{}\ExtensionTok{thmE}\NormalTok{\}}
+%\KeywordTok{\textbackslash{}begin}\NormalTok{\{}\ExtensionTok{proofE}\NormalTok{\}}
+%\NormalTok{ And keep the proof with you!}
+%\KeywordTok{\textbackslash{}end}\NormalTok{\{}\ExtensionTok{proofE}\NormalTok{\}}
+%\end{Highlighting}
+%\end{Shaded}
+%
+%(You can of course remove the \texttt{{[}...{]}} containing the options
+%and the title, however if you want to add options without any title,
+%\textbf{make sure to use empty brackets for the title}, like
+%\texttt{\textbackslash{}begin\{thmE\}{[}{]}{[}normal{]}}.
+%
+%Since 2022/01/28, you can also create new theorem environment that
+%directly come with a preconfigured style (you may also find
+%\texttt{\textbackslash{}pratendSetLocal} useful if you want to change
+%the style in a whole section). For instance to create a
+%\texttt{thmNormal} environment having the \texttt{normal} option and a
+%\texttt{thmSpecial} environment having the
+%\texttt{all\ end,\ category=mySpecial} options, just do:
+%
+%\begin{verbatim}
+%\newEndThm[normal]{thmNormal}{thm} % 'thm' is the name of the existing thm environment
+%\newEndThm[all end, category=mySpecial]{thmSpecial}{thm}
+%\end{verbatim}
+%
+%This way, you can simply use
+%\texttt{\textbackslash{}begin\{thmSpecial\}{[}Special\ title{]}\ ...\ \textbackslash{}end\{thmSpecial\}}
+%to create a theorem going in the special category (see below). (you also
+%have \texttt{\textbackslash{}newEndProof{[}options{]}\{newProofEnv\}} to
+%define new proofs, but it is less useful as options are typically given
+%in the theorem).
+%
%The options are in fact a set of keys/values, thanks to
%\texttt{pgfkeys}. So you can combine them with comma separated list like
%that (order matters, as the right-most values may overwrite
@@ -600,6 +649,14 @@
%\end{Highlighting}
%\end{Shaded}
%
+%or, for short (needs version \textgreater{} 2022/02/04):
+%
+%\begin{Shaded}
+%\begin{Highlighting}[]
+%\FunctionTok{\textbackslash{}pratendSetGlobal}\NormalTok{\{one big link="blabla"\}}
+%\end{Highlighting}
+%\end{Shaded}
+%
%and for local configuration:
%
%\begin{Shaded}
@@ -611,24 +668,14 @@
%\end{Highlighting}
%\end{Shaded}
%
-%Finally, it can be practical to define custom environments to avoid
-%typing always \texttt{theoremEnd} using something like that
-%(\texttt{thmE} is the shortcut environment to create, and \texttt{thm}
-%is the old one):
+%for short (needs version \textgreater{} 2022/02/04):
%
%\begin{Shaded}
%\begin{Highlighting}[]
-%\FunctionTok{\textbackslash{}newEndThm}\NormalTok{[normal]\{thmE\}\{thm\}}
-%\FunctionTok{\textbackslash{}newEndProof}\NormalTok{\{proofE\}}
+%\FunctionTok{\textbackslash{}pratendSetLocal}\NormalTok{\{category=greattheorem\}}
%\end{Highlighting}
%\end{Shaded}
%
-%By default, loading the package using the \texttt{createShortEnv} option
-%automatically creates the shortcut environments \texttt{proofE} (to
-%replace \texttt{proof}), \texttt{thmE} (to replace \texttt{thm}),
-%\texttt{theoremE} (to replace\ldots{} ok you got the pattern),
-%\texttt{lemmaE} and \texttt{corollaryE}.
-%
%Then you can use like that:
%
%\begin{Shaded}
@@ -656,11 +703,11 @@
%\end{Highlighting}
%\end{Shaded}
%
-%Note also that it is also possible to give options to the
-%\texttt{proofEnd} environment, but it is usually useless, as it will
-%automatically pick the parameters from the last \texttt{theoremEnd}
-%environment. However, if for some reasons you want to change the options
-%of the proof only, you can do it, but do it as your own risks ;)
+%Note also that it is possible to give options to the \texttt{proofEnd}
+%environment, but it is usually useless, as it will automatically pick
+%the parameters from the last \texttt{theoremEnd} environment. However,
+%if for some reasons you want to change the options of the proof only,
+%you can do it, but do it as your own risks ;)
%
%\hypertarget{usual-styles}{%
%\subsection{Usual styles}\label{usual-styles}}
@@ -686,7 +733,7 @@
% you use synctex with the proof in appendix, your will be unfortunately
% moved to a temporary file that this library is using\ldots{} so
% \textbf{make sure you don't modify the files named like
-% \texttt{prattheenddefaultcategory.tex} or all your changes will be
+% \texttt{*prattheenddefaultcategory.tex} or all your changes will be
% lost at the next compilation}!).
%\item
% \texttt{one\ big\ link}: if you prefer to have a single big link
@@ -696,7 +743,7 @@
% change/translate the text of the link easily
%\item
% \texttt{text\ link\ section}: put a link looking like ``See proof in
-% section XX.''
+% section XX.''. You can use \texttt{text\ link=} to remove this link.
%\item
% \texttt{text\ link\ section\ full\ proof}: put a link looking like
% ``See full proof in section XX.''
@@ -863,6 +910,55 @@
%\end{Highlighting}
%\end{Shaded}
%
+%\hypertarget{split-the-article-in-two-documents-one-for-the-main-body-and-one-for-the-appendix}{%
+%\subsection{Split the article in two documents, one for the main body
+%and one for the
+%appendix}\label{split-the-article-in-two-documents-one-for-the-main-body-and-one-for-the-appendix}}
+%
+%Since 2022/02/04, it is possible to include the appendix in a separate
+%file. Internally, this library creates a new file having the form
+%\texttt{NAME\_OF\_FILE-pratendNAME\_CATEGORY.tex} containing the proofs
+%to include (then, \texttt{\textbackslash{}printProofs} only input that
+%file). You can input that file from other files if you want to separate
+%the body from the proof, but it won't work if you have restate theorems.
+%You should use the option \texttt{external\ appendix} (starting from
+%version 2022/02/04) to restate appropriately the theorem:
+%
+%\begin{Shaded}
+%\begin{Highlighting}[]
+%\BuiltInTok{\textbackslash{}usepackage}\NormalTok{[createShortEnv,conf=\{external appendix\}]\{}\ExtensionTok{proof{-}at{-}the{-}end}\NormalTok{\}}
+%\end{Highlighting}
+%\end{Shaded}
+%
+%Then, compile your main file and create a new file for the appendix,
+%load the theorems environments as for the main file, in the preambule
+%load the \texttt{xr} package to properly have references (otherwise you
+%won't have the appropriate number for the theorems) using something
+%like:
+%
+%\begin{verbatim}
+%\usepackage{xr}
+%\externaldocument{name_of_main_file_without_extension}
+%\end{verbatim}
+%
+%and in this new document just add the appendix wherever you want:
+%
+%\begin{Shaded}
+%\begin{Highlighting}[]
+%\FunctionTok{\textbackslash{}includeExternalAppendix}\NormalTok{\{name\_of\_main\_file\_without\_extension\}}
+%\end{Highlighting}
+%\end{Shaded}
+%
+%You can see an exemple in the github repository, with the two files
+%\texttt{demo\_external\_appendix.tex} and
+%\texttt{demo\_external\_appendix\_part2.tex}. Whenever your proofs
+%change in the main paper, make sure to compile first the main document
+%(so that the auxiliary file gets updated), and then compile the appendix
+%document. Note that you can still use
+%\texttt{\textbackslash{}printProofs} in the main document if you like
+%(while writting your paper, it is certainly easier to keep the proofs
+%and theorems in the same document).
+%
%\hypertarget{list-of-options}{%
%\section{List of options}\label{list-of-options}}
%
@@ -911,6 +1007,9 @@
% \texttt{both}/\texttt{no\ both}: only for
% \texttt{\textbackslash{}textInAppendix}, specifies that the text must
% be present in both the main text and the appendix.
+%\item
+% \texttt{external\ appendix}: to ensure the appendix can be included in
+% another file (see details above), starting from version 2022/02/04.
%\end{itemize}
%
%Here are all the alias/styles (you can create you own as well), they are
@@ -986,6 +1085,20 @@
% but takes one argument and use it instead of \texttt{Proof\ of}.
% Example: \texttt{text\ proof\ translated=\{Preuve\ du\}}
%\item
+% \texttt{text\ link\ external\ appendix}: style used to configure the
+% text to display when the appendix is in an external file. Defaults to
+% \texttt{text\ link=\{The\ proof\ is\ in\ the\ appendix.\}}.
+%\item
+% \texttt{external\ appendix}: useful when the the proofs are moved in
+% an external file (read more above). In particular, it will ensure that
+% normal theorems are used instead of restate since restate does not
+% work across files. This will also apply
+% \texttt{text\ link\ external\ appendix} to change the text
+% accordingly.
+%\item
+% \texttt{only\ external\ appendix}: like \texttt{external\ appendix},
+% but without changing the text.
+%\item
% \texttt{bare\ defaults}: default style that is loaded before anything
% else that configure by default a link to the proof, put the proof in
% appendix, use the category \texttt{defaultcategory}. It is an alias of
@@ -1126,6 +1239,41 @@
%\begin{itemize}
%\tightlist
%\item
+% 2022/02/07:
+%
+% \begin{enumerate}
+% \def\labelenumi{\arabic{enumi}.}
+% \tightlist
+% \item
+% \href{https://github.com/leo-colisson/proof-at-the-end/issues/2}{issue
+% 2} was not really solved in fact\ldots{} Now, I use a more robust
+% method to detect the current section: I write in an AUX file the
+% label of the proof section. This way, I don't need anymore to use
+% dirty tricks to recover the section label.
+% \item
+% Change the default text when the appendix is in an external file,
+% and add options like \texttt{text\ link\ external\ appendix} to
+% customize the text appearing when the appendix is in an external
+% file. Of course, you can still change it using \texttt{text\ link}
+% directly.
+% \end{enumerate}
+%\item
+% 2022/02/04:
+%
+% \begin{enumerate}
+% \def\labelenumi{\arabic{enumi}.}
+% \tightlist
+% \item
+% Add a way to put theorems in different files. (see
+% \texttt{external\ appendix})
+% \item
+% Change the path for auxiliary files (should be transparent for the
+% user)
+% \item
+% Add commands to change local/global configuration easily (see
+% \texttt{\textbackslash{}pratendSetLocal},\texttt{\textbackslash{}pratendSetGlobal})
+% \end{enumerate}
+%\item
% 2022/02/01:
%
% \begin{enumerate}
@@ -1208,7 +1356,7 @@
% \end{macrocode}
%\fi
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{proof-at-the-end}[2022/02/01 A package to move proofs in appendix]
+\ProvidesPackage{proof-at-the-end}[2022/02/07 A package to move proofs in appendix]
\RequirePackage{etoolbox}
\RequirePackage{thmtools}
@@ -1281,10 +1429,16 @@
\endgroup
}
+%% Get the prefix of the file, given the jobname.
+\NewDocumentCommand\pratendGeneratePrefixFile{m}{#1-pratend}
+
+\def\prefixPrAtEndFiles{\pratendGeneratePrefixFile{\jobname}}
+
+
%% This functions takes one input: the category (without .tex),
%% If it's the first time we write in this
%% category file, it "blanks" it.
-\def\prefixPrAtEndFiles{pratend}
+
\newcommand*\eraseIfNeeded[1]{%
% A macro 'pratendmacrocat{category}' is created to check
% if it's the first time we write in this category file.
@@ -1301,6 +1455,7 @@
\newif\ifproofhere
\newif\ifproofend
\newif\ifrestatethm
+\newif\ifexternalAppendix% True if the output file should me inputable in another file (using xr for crossref). Useful to remote restate.
\newif\iflinktoproof
\newif\ifboth
\newif\ifallattheend
@@ -1319,6 +1474,15 @@
proof end/.is if=proofend,
no proof end/.style={proof end=false},
%% Restate the theorem when using \printProofs
+ only external appendix/.is if=externalAppendix,
+ text link external appendix/.style={
+ text link={The proof is in the appendix.}
+ },
+ external appendix/.style={
+ only external appendix,
+ text link external appendix,
+ },
+ %% Restate the theorem when using \printProofs
restate/.is if=restatethm,
no restate/.style={restate=false},
%% Put a link to the proof after the theorem
@@ -1500,9 +1664,13 @@
%% Restate the theorem if needed in appendix.
%% As explained in https://github.com/leo-colisson/proof-at-the-end/issues/8
%% No need to restate of there is no proof at the end.
- \ifproofend %
- \ifrestatethm %
- \appendtofile{\prefixPrAtEndFiles\category.tex}{\string\prAtEndRestate\pratendcountercurrent*}%
+ \ifproofend%
+ \ifrestatethm%
+ \ifexternalAppendix% We write the full theorem, useful to compile in a separate file (use xr for references)
+ \appendtofile{\prefixPrAtEndFiles\category.tex}{\string\begingroup\string\renewcommand\string\the\detokenize{#2}{\string\ref{thm:prAtEnd\pratendcountercurrent}}\string\begin{\detokenize{#2}}[#3]\detokenize{#4}\string\end{\detokenize{#2}}\string\endgroup}%
+ \else%
+ \appendtofile{\prefixPrAtEndFiles\category.tex}{\string\prAtEndRestate\pratendcountercurrent*}%
+ \fi%
\fi%
\fi%
\fi%
@@ -1540,13 +1708,41 @@
\fi%
%% Write the proof at the end
\ifproofend%
+ \appendtofile{\prefixPrAtEndFiles\category.tex}{%
%% The label alone adds some space, see e.g.
%% https://tex.stackexchange.com/questions/600118/selectlanguage-in-the-middle-of-text-causes-extra-vertical-space/600142#600142
%% and https://tex.stackexchange.com/questions/600577/adding-a-label-between-two-proofs-adds-unwanted-space
%% The solution is to use \\Hy@SaveLastskip and \Hy@RestoreLastskip from hyperref
%% See also
%% https://tex.stackexchange.com/questions/553394/reliably-add-a-label-to-the-current-section-even-if-the-label-is-not-placed-rig/600847#600847
- \appendtofile{\prefixPrAtEndFiles\category.tex}{\string\makeatletter\string\Hy@SaveLastskip\string\pratendChangeCurrentLabel\string\label{proofsection:prAtEnd\pratendcountercurrent}\string\Hy@RestoreLastskip\string\makeatother\string\begin{proof}[\pratendtextproof]\string\phantomsection\string\label{proof:prAtEnd\pratendcountercurrent}\detokenize{#2}\string\end{proof}}%
+ \string\makeatletter\string\Hy@SaveLastskip%
+ %% This tries to recover the label of the current section... But it is very bad. I keep it only for backward compatibility. I tried to fix it by changing the value of \@counter, but it's not always working
+ %% as cref is not using it apparently, and it turns Appendix A into appendix a after using phantomsection.
+ %% https://github.com/leo-colisson/proof-at-the-end/issues/2
+ \string\label{proofsection:prAtEnd\pratendcountercurrent}% WARNING <-- do not use this label in new documents!
+ % the problem is that setting the \@currentlabel does not work for cref, and turns Appendix A
+ % into section A when a phantomsection lies in between (not sure why):
+ % https://github.com/leo-colisson/proof-at-the-end/issues/2
+ %% Now, we prefer a different method: instead we generate a single label per section, and we generate
+ %% a new macro in the aux file that will save this label, by creating one such macro per theorem.
+ %% This is basically doing something like \pratend@section@for@proofiii{prAtEnd:sectionlike3}
+ %% Note that I need sometimes 3 \string because I write two times: the first time I write in the FILE-pratendCATEGORY.tex
+ %% file, and this file will be in charge of writting into the .aux file.
+ \string\ifdefined\string\pratend@current@sectionlike@label% But before, we check if the section was defined, or the code may fail if no section are defined.
+ \string\immediate\string\write\string\@auxout{%
+ \string\string\string\gdef\string\string\string\pratend@section@for@proof\pratendcountercurrent{\string\pratend@current@sectionlike@label}%
+ }%
+ \string\fi
+ % See above
+ \string\Hy@RestoreLastskip\string\makeatother%
+ % We start the proof
+ \string\begin{proof}[\pratendtextproof]%
+ % We add a label to have a reference to the section
+ \string\phantomsection\string\label{proof:prAtEnd\pratendcountercurrent}%
+ % We add the proof
+ \detokenize{#2}%
+ % We end the proof
+ \string\end{proof}}%
\fi%
}{}
@@ -1594,7 +1790,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% We patch the \section, \subsection and \chapter commands to make sure that
% the text "See proof in Section XX" points to the appropriate section/subsection.
-% We basically maintain a counter counting how many time we saw a section/subsection/... and use it to label
+% We basically maintain a counter counting how many times we saw a section/subsection/... and use it to label
% directly the section afterwards.
\newcounter{pratend@counter@sectionlike}
%% Command to add after a label like "prAtEnd:sectionlike10". Useful to patch \section, \chapter...
@@ -1602,17 +1798,21 @@
%% First, we get the label
%% Cool explaination of expandafter, edef, noexpand:
%%% https://www.tug.org/TUGboat/tb09-1/tb20bechtolsheim.pdf
+ %% The label \pratend@current@sectionlike@label is used later.
\edef\pratend@current@sectionlike@label{prAtEnd:sectionlike\thepratend@counter@sectionlike}%
\expandafter\label{\pratend@current@sectionlike@label}%
- \let\pratend@sectionlike@stored@label\@currentlabel%
+ \stepcounter{pratend@counter@sectionlike}%
}%
-\NewDocumentCommand\pratendSectionlikeCref{}{%
- \pratendRef{proofsection:prAtEnd\pratendcountercurrent}%
-}
-\NewDocumentCommand\pratendChangeCurrentLabel{}{%
- \ifdefined\pratend@sectionlike@stored@label%
- \let\@currentlabel\pratend@sectionlike@stored@label%
+%% Returns the label of the section (in appendix) that contains the proof of the current theorem.
+%% The first time, it will return an empty label.
+\NewDocumentCommand\pratendLabelProofSection{}{%
+ \ifcsname pratend@section@for@proof\pratendcountercurrent\endcsname%
+ \csname pratend@section@for@proof\pratendcountercurrent\endcsname%
\fi%
+}%
+\NewDocumentCommand\pratendSectionlikeCref{}{%
+ % \pratendRef{proofsection:prAtEnd\pratendcountercurrent}% This is not robust enough. Lets change strategy.
+ \expandafter\pratendRef{\pratendLabelProofSection}
}
\ifpratendOptdisablePatchSection%
\else %
@@ -1641,6 +1841,7 @@
\csname \pratendOptcommandRef\endcsname{#1}%
}
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Create automatically wrapper
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1695,8 +1896,37 @@
\newEndThm{theoremE}{theorem}
\newEndThm{corollaryE}{corollary}
\newEndThm{propositionE}{proposition}
+ \newEndThm{propertyE}{proposition}
+ \newEndThm{factE}{proposition}
\fi
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Create functions to easily overwrite defaults
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\NewDocumentCommand\pratendSetGlobal{m}{%
+ \pgfkeys{/prAtEnd/global custom defaults/.style={
+ #1
+ }%
+ }%
+}
+
+\NewDocumentCommand\pratendSetLocal{m}{%
+ \pgfkeys{/prAtEnd/local custom defaults/.style={
+ #1
+ }%
+ }%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Create functions to load the category file in another file (external bibliography)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Takes an optional category, and the job name of the external file.
+\NewDocumentCommand\includeExternalAppendix{O{defaultcategory}m}{%
+ \expandafter\input{\pratendGeneratePrefixFile{#2}#1}
+}
+
\endinput
%\iffalse
% \begin{macrocode}
diff --git a/macros/latex/contrib/proof-at-the-end/proof-at-the-end.ins b/macros/latex/contrib/proof-at-the-end/proof-at-the-end.ins
index 3ebaf4fd46..d3508956ec 100644
--- a/macros/latex/contrib/proof-at-the-end/proof-at-the-end.ins
+++ b/macros/latex/contrib/proof-at-the-end/proof-at-the-end.ins
@@ -1,4 +1,4 @@
-% proof-at-the-end.ins generated using makedtx version 1.2 2022/2/1 17:07
+% proof-at-the-end.ins generated using makedtx version 1.2 2022/2/7 18:01
\input docstrip
\preamble
diff --git a/macros/latex/contrib/proof-at-the-end/proof-at-the-end.pdf b/macros/latex/contrib/proof-at-the-end/proof-at-the-end.pdf
index 7672d46631..2ab8e9e067 100644
--- a/macros/latex/contrib/proof-at-the-end/proof-at-the-end.pdf
+++ b/macros/latex/contrib/proof-at-the-end/proof-at-the-end.pdf
Binary files differ
diff --git a/macros/latex/contrib/proof-at-the-end/proof-at-the-end_demo.pdf b/macros/latex/contrib/proof-at-the-end/proof-at-the-end_demo.pdf
index ac5ddf1d5c..81acbaf753 100644
--- a/macros/latex/contrib/proof-at-the-end/proof-at-the-end_demo.pdf
+++ b/macros/latex/contrib/proof-at-the-end/proof-at-the-end_demo.pdf
Binary files differ
diff --git a/macros/latex/contrib/proof-at-the-end/proof-at-the-end_demo.tex b/macros/latex/contrib/proof-at-the-end/proof-at-the-end_demo.tex
index d4f59616c9..26b087cbea 100644
--- a/macros/latex/contrib/proof-at-the-end/proof-at-the-end_demo.tex
+++ b/macros/latex/contrib/proof-at-the-end/proof-at-the-end_demo.tex
@@ -5,12 +5,15 @@
\usepackage{verbatim}
% Load the package (put the proof-at-the-end.sty file in the working directory)
-\usepackage{proof-at-the-end} % with default options...
-% Or by putting in the 'conf' option the default configuration you want:
-%\usepackage[conf={normal, one big link}]{proof-at-the-end}
-%\usepackage[conf={normal, one big link=Goto proof}]{proof-at-the-end}
-%\usepackage[conf={one big link translated=Aller à la preuve page}]{proof-at-the-end}
-%\usepackage[conf={text link section}]{proof-at-the-end}
+% with default options and shortcuts for thmE/... WARNING: this requires a version above 2022/01/28.
+\usepackage[createShortEnv]{proof-at-the-end}
+% If you use cref, use instead:
+% \usepackage[createShortEnv,commandRef=Cref]{proof-at-the-end}
+% You can change the default options in the 'conf' option:
+%\usepackage[createShortEnv, conf={text link section}]{proof-at-the-end}
+%\usepackage[createShortEnv, conf={normal, one big link}]{proof-at-the-end}
+%\usepackage[createShortEnv, conf={normal, one big link=Goto proof}]{proof-at-the-end}
+%\usepackage[createShortEnv, conf={one big link translated=Aller à la preuve page}]{proof-at-the-end}
%%% If you want to use options with macros, you cannot
% use directly the package options, so just modify
@@ -40,16 +43,18 @@
\newtheorem*{lemma*}{Lemma}
\providecommand*\lemmaautorefname{Lemma}
-%% If you want you can define shortcuts:
+%% If you want you can define shortcuts to create new theorem.
+%% Since 2022/01/28, the option createShortEnv automatically defines
+%% shortcuts for thmE, theoremE, lemmaE...
+%% You can define new shortcuts using something like:
+%% \newEndThm[normal]{thmE}{thm}
+%% This is itself a shortcut for the rather length old way to define new theorem shorcuts, namely:
% And to define new shortcuts, in order to avoid typing:
% \NewDocumentEnvironment{thmE}{O{}O{}+b}{%
% \begin{theoremEnd}[normal,#2]{thm}[#1]%
% #3%
% \end{theoremEnd}%
% }{}
-% you can just type:
-\newEndThm[normal]{thmE}{thm}
-\newEndProof{proofE}
\usepackage{hyperref}
\begin{document}
@@ -132,6 +137,7 @@ You can also put comments that appear only in the appendix.
And also you can put both the theorem and the proof at the end, like for \autoref{thm:mytheoremattheend}!
+
\begin{theoremEnd}[all end]{thm}
\label{thm:mytheoremattheend}
$\delta = b^2-4ac$
diff --git a/macros/latex/contrib/siunitx/CHANGELOG.md b/macros/latex/contrib/siunitx/CHANGELOG.md
index ba5c3de075..836e95a0af 100644
--- a/macros/latex/contrib/siunitx/CHANGELOG.md
+++ b/macros/latex/contrib/siunitx/CHANGELOG.md
@@ -7,6 +7,15 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
## [Unreleased]
+## [v3.0.48] - 2022-02-07
+
+### Added
+- Polish locale
+
+### Fixed
+- Printing blank entries in text mode (see issue
+ [\#5853](https://github.com/josephwright/siunitx/issues/585))
+
## [v3.0.47] - 2022-02-03
### Changed
@@ -1703,7 +1712,8 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
### Added
- First public testing release (as `si`)
-[Unreleased]: https://github.com/josephwright/siunitx/compare/v3.0.47...HEAD
+[Unreleased]: https://github.com/josephwright/siunitx/compare/v3.0.48...HEAD
+[v3.0.48]: https://github.com/josephwright/siunitx/compare/v3.0.47...v3.0.48
[v3.0.47]: https://github.com/josephwright/siunitx/compare/v3.0.46...v3.0.47
[v3.0.46]: https://github.com/josephwright/siunitx/compare/v3.0.45...v3.0.46
[v3.0.45]: https://github.com/josephwright/siunitx/compare/v3.0.44...v3.0.45
diff --git a/macros/latex/contrib/siunitx/siunitx-code.pdf b/macros/latex/contrib/siunitx/siunitx-code.pdf
index d6d131b16c..f427b017c8 100644
--- a/macros/latex/contrib/siunitx/siunitx-code.pdf
+++ b/macros/latex/contrib/siunitx/siunitx-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/siunitx/siunitx-locale.dtx b/macros/latex/contrib/siunitx/siunitx-locale.dtx
index 3bdb5c941e..36c83e034f 100644
--- a/macros/latex/contrib/siunitx/siunitx-locale.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-locale.dtx
@@ -101,6 +101,12 @@
inter-unit-product = \, ,
output-decimal-marker = { , }
} ,
+ locale / PL .meta:n =
+ {
+ exponent-product = \cdot ,
+ inter-unit-product = \cdot ,
+ output-decimal-marker = { , }
+ } ,
locale / FR .meta:n =
{
exponent-product = \times ,
@@ -148,6 +154,7 @@
\DeclareTranslation { English } { to~(numerical~range) } { to }
\DeclareTranslation { French } { to~(numerical~range) } { à }
\DeclareTranslation { German } { to~(numerical~range) } { bis }
+ \DeclareTranslation { Polish } { to~(numerical~range) } { do }
\DeclareTranslation { Slovene } { to~(numerical~range) } { do }
\DeclareTranslation { Spanish } { to~(numerical~range) } { a }
\keys_set:nn { siunitx }
diff --git a/macros/latex/contrib/siunitx/siunitx-print.dtx b/macros/latex/contrib/siunitx/siunitx-print.dtx
index 10a316da89..cb63a0e325 100644
--- a/macros/latex/contrib/siunitx/siunitx-print.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-print.dtx
@@ -842,20 +842,23 @@
{ \@@_text_replace:Nnnnn #1 }
{
\tl_set:Nn \l_@@_tmp_tl {#1}
- \tl_if_empty:NF \l_siunitx_unit_font_tl
- { \exp_after:wN \cs_set_eq:NN \l_siunitx_unit_font_tl \use:n }
- \cs_set:Npn \mathord ##1
- { \@@_text_replace_first:N ##1 }
- \cs_set:Npn \pm { \: \exp_not:N \textpm \: }
- \tl_map_inline:nn
- { \mp \ge \le \gg \ll }
- { \cs_set:Npn ##1 { \exp_not:N \ensuremath { \exp_not:N ##1 } } }
- \cs_set:Npn \cdot { \: \exp_not:N \textperiodcentered \: }
- \cs_set:Npn \times { \: \exp_not:N \texttimes \: }
- \protected@edef \l_@@_tmp_tl
- { \exp_after:wN \@@_text_replace_first:N \l_@@_tmp_tl }
- \@@_text_replace:N \l_@@_tmp_tl
- \@@_text_replace_aux:n { \tl_use:N \l_@@_tmp_tl }
+ \tl_if_empty:NF \l_@@_tmp_tl
+ {
+ \tl_if_empty:NF \l_siunitx_unit_font_tl
+ { \exp_after:wN \cs_set_eq:NN \l_siunitx_unit_font_tl \use:n }
+ \cs_set:Npn \mathord ##1
+ { \@@_text_replace_first:N ##1 }
+ \cs_set:Npn \pm { \: \exp_not:N \textpm \: }
+ \tl_map_inline:nn
+ { \mp \ge \le \gg \ll }
+ { \cs_set:Npn ##1 { \exp_not:N \ensuremath { \exp_not:N ##1 } } }
+ \cs_set:Npn \cdot { \: \exp_not:N \textperiodcentered \: }
+ \cs_set:Npn \times { \: \exp_not:N \texttimes \: }
+ \protected@edef \l_@@_tmp_tl
+ { \exp_after:wN \@@_text_replace_first:N \l_@@_tmp_tl }
+ \@@_text_replace:N \l_@@_tmp_tl
+ \@@_text_replace_aux:n { \tl_use:N \l_@@_tmp_tl }
+ }
}
\group_end:
}
diff --git a/macros/latex/contrib/siunitx/siunitx.dtx b/macros/latex/contrib/siunitx/siunitx.dtx
index d1d4e125ab..61d45f9621 100644
--- a/macros/latex/contrib/siunitx/siunitx.dtx
+++ b/macros/latex/contrib/siunitx/siunitx.dtx
@@ -121,7 +121,7 @@
%
% Identify the package and give the over all version information.
% \begin{macrocode}
-\ProvidesExplPackage {siunitx} {2022-02-03} {3.0.47}
+\ProvidesExplPackage {siunitx} {2022-02-07} {3.0.48}
{A comprehensive (SI) units package}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/siunitx/siunitx.pdf b/macros/latex/contrib/siunitx/siunitx.pdf
index 5563799b59..70e9f7d7ac 100644
--- a/macros/latex/contrib/siunitx/siunitx.pdf
+++ b/macros/latex/contrib/siunitx/siunitx.pdf
Binary files differ
diff --git a/macros/latex/contrib/siunitx/siunitx.tex b/macros/latex/contrib/siunitx/siunitx.tex
index 1c8e8f62ab..62fa382f86 100644
--- a/macros/latex/contrib/siunitx/siunitx.tex
+++ b/macros/latex/contrib/siunitx/siunitx.tex
@@ -79,7 +79,7 @@ for those people who are interested.
}
% For demos
-\usepackage[french,german,spanish,UKenglish]{babel}
+\usepackage[french,german,polish,spanish,UKenglish]{babel}
\AtBeginDocument{\shorthandoff{:<>}}
\usepackage{translations}
\usepackage{cancel}
@@ -2860,7 +2860,7 @@ same value (one of \opt{center}, \opt{right} or \opt{left}).
\pkg{siunitx} allows the user to switch between the typographic conventions of
different (geographical) areas by using locales. Currently, the package is
supplied with configurations for locales \opt{UK}, \opt{US}, \opt{DE}
-(Germany), \opt{FR} (French), \opt{SI} (Slovene) and \opt{ZA} (South Africa).
+(Germany), \opt{PL} (Poland), \opt{FR} (French), \opt{SI} (Slovene) and \opt{ZA} (South Africa).
The \opt{locale}
option is used to switch to a particular locale.
\begin{LaTeXdemo}
@@ -3033,7 +3033,7 @@ options to read:
\end{LaTeXdemo}
If the current language is known to the \pkg{translator} package then the
result will be localised text. The preamble for this manual loads English,
-French, German and Spanish as options, and also loads the \pkg{babel} package:
+French, German, Polish and Spanish as options, and also loads the \pkg{babel} package:
\begin{LaTeXdemo}
% In English by default
\numlist{1;2;3} \\
@@ -3044,6 +3044,9 @@ French, German and Spanish as options, and also loads the \pkg{babel} package:
\selectlanguage{german}%
\numlist{1;2;3} \\
\numrange{1}{10} \\
+ \selectlanguage{polish}%
+ \numlist{1;2;3} \\
+ \numrange{1}{10} \\
\selectlanguage{spanish}%
\numlist{1;2;3} \\
\numrange{1}{10}
diff --git a/macros/latex/contrib/tkz/tkz-base/README.md b/macros/latex/contrib/tkz/tkz-base/README.md
index fee2751ccd..5926278cd1 100644
--- a/macros/latex/contrib/tkz/tkz-base/README.md
+++ b/macros/latex/contrib/tkz/tkz-base/README.md
@@ -1,6 +1,6 @@
# tkz-base — for Cartesian coordinate system
-Release 4.01 b 2022/01/25
+Release 4.05b 2022/02/07
## Description
The package `tkz-base` provides some tools like a Cartesian (rectangular) coordinate system to other packages like `tkz-euclide` or `tkz-fct`.
@@ -60,6 +60,8 @@ Other examples, in French, are on my site.
The new version of `tkz-base` is *not* fully compatible with the version 3 but the differences are minor
## History
+- 4.05b Correction of an option (tkzDrawY).
+ Removing axesmin.tex Move from \newif\iftkz@integer to base.sty
- 4.01b add error message if tkz-base is loaded after tkz-euclide.
Translation of some lines from French to English in the documentation
- 4.00b now `tkz-euclide` is independent of `tkz-base`. Some geometry specific macros have been removed.
diff --git a/macros/latex/contrib/tkz/tkz-base/doc/latex/TKZdoc-base-main.tex b/macros/latex/contrib/tkz/tkz-base/doc/latex/TKZdoc-base-main.tex
index 65a1615c46..f6f74345e2 100644
--- a/macros/latex/contrib/tkz/tkz-base/doc/latex/TKZdoc-base-main.tex
+++ b/macros/latex/contrib/tkz/tkz-base/doc/latex/TKZdoc-base-main.tex
@@ -17,15 +17,15 @@
index = totoc,
twoside,
headings = small,
- cadre
+ %cadre
]{tkz-doc}
%\usepackage{etoc}
\gdef\tkznameofpack{tkz-base}
-\gdef\tkzversionofpack{4.01 b}
-\gdef\tkzdateofpack{2022/01/25}
+\gdef\tkzversionofpack{4.05b}
+\gdef\tkzdateofpack{2022/02/07}
\gdef\tkznameofdoc{doc-tkz-base}
-\gdef\tkzversionofdoc{4.01 b}
-\gdef\tkzdateofdoc{2022/01/25}
+\gdef\tkzversionofdoc{4.05b}
+\gdef\tkzdateofdoc{2022/02/07}
\gdef\tkzauthorofpack{Alain Matthes}
\gdef\tkzadressofauthor{}
\gdef\tkznamecollection{AlterMundus}
diff --git a/macros/latex/contrib/tkz/tkz-base/doc/tkz-base.pdf b/macros/latex/contrib/tkz/tkz-base/doc/tkz-base.pdf
index 08a1d6120b..844c662889 100644
--- a/macros/latex/contrib/tkz/tkz-base/doc/tkz-base.pdf
+++ b/macros/latex/contrib/tkz/tkz-base/doc/tkz-base.pdf
Binary files differ
diff --git a/macros/latex/contrib/tkz/tkz-base/latex/tkz-base.cfg b/macros/latex/contrib/tkz/tkz-base/latex/tkz-base.cfg
index 58082df758..eebdad9e19 100644
--- a/macros/latex/contrib/tkz/tkz-base/latex/tkz-base.cfg
+++ b/macros/latex/contrib/tkz/tkz-base/latex/tkz-base.cfg
@@ -16,9 +16,9 @@
% and save the file in a directory part of your TEXINPUTS environment
% variable.
-\def\fileversion{4.00}
-\def\filedate{2022/01/25 }
-\typeout{2022/01/25 4.01 tkz-base.cfg}
+\def\fileversion{4.05b}
+\def\filedate{2022/01/28 }
+\typeout{2022/01/28 4.05b tkz-base.cfg}
%<------ colors ---------------------------------------–>
%<------ colors ---------------------------------------–>
\def\tkz@backgroundcolor{white}
diff --git a/macros/latex/contrib/tkz/tkz-base/latex/tkz-base.sty b/macros/latex/contrib/tkz/tkz-base/latex/tkz-base.sty
index 2b98fb4735..0d18c9bc83 100644
--- a/macros/latex/contrib/tkz/tkz-base/latex/tkz-base.sty
+++ b/macros/latex/contrib/tkz/tkz-base/latex/tkz-base.sty
@@ -10,12 +10,12 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.00}
-\typeout{2022/01/25 4.01 tkz-base.sty}
+\def\fileversion{4.05 b}
+\typeout{2022/01/28 4.05b tkz-base.sty}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{tkz-base}[2022/01/25 4.01 tkz-base]
+\ProvidesPackage{tkz-base}[2022/01/28 4.05b tkz-base]
\@ifpackageloaded{tkz-euclide}{\typeout{tkz-base and tkz-fct must be loaded before tkz-euclide}
-\PackageError{tkz-euclide}{tkz-base must be loaded before tkz-euclide}{tkz-base must be loaded before tkz-euclide}%
+\PackageError{tkz-base}{tkz-base must be loaded before tkz-euclide}{tkz-base must be loaded before tkz-euclide}%
\endinput}{}
\RequirePackage{tikz}
\usetikzlibrary{%
@@ -83,6 +83,7 @@
\newif\iftkz@np
\newif\iftkz@swap
\newif\iftkz@init@NO
+\newif\iftkz@integer
\newif\iftkz@Rep@orig%--------------------- Rep
\newif\iftkzLengthIncm%--------------------- Math
\newif\iftkz@sop@show%--------------------- marks
diff --git a/macros/latex/contrib/tkz/tkz-base/latex/tkz-lib-marks.tex b/macros/latex/contrib/tkz/tkz-base/latex/tkz-lib-marks.tex
index 39d765c856..51f61ecafa 100644
--- a/macros/latex/contrib/tkz/tkz-base/latex/tkz-lib-marks.tex
+++ b/macros/latex/contrib/tkz/tkz-base/latex/tkz-lib-marks.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.00}
-\def\filedate{2022/01/25 }
-\typeout{2022/01/25 4.01 tkz-lib-marks.tex}
+\def\fileversion{4.05b}
+\def\filedate{2022/01/28 }
+\typeout{2022/01/28 4.05b tkz-lib-marks.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% Création des symboles
diff --git a/macros/latex/contrib/tkz/tkz-base/latex/tkz-lib-shape.tex b/macros/latex/contrib/tkz/tkz-base/latex/tkz-lib-shape.tex
index fc14c3d486..119457a009 100644
--- a/macros/latex/contrib/tkz/tkz-base/latex/tkz-lib-shape.tex
+++ b/macros/latex/contrib/tkz/tkz-base/latex/tkz-lib-shape.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.00}
-\def\filedate{2022/01/25 }
-\typeout{2022/01/25 4.01 tkz-lib-shape.tex}
+\def\fileversion{4.05b}
+\def\filedate{2022/01/28 }
+\typeout{2022/01/28 4.05b tkz-lib-shape.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% Création des symboles
diff --git a/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-axes.tex b/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-axes.tex
index 1f8e33a5c8..050d8a766f 100644
--- a/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-axes.tex
+++ b/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-axes.tex
@@ -10,22 +10,21 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.00}
-\def\filedate{2022/01/25 }
-\typeout{2022/01/25 4.01 tkz-obj-axes}
+\def\fileversion{4.05b}
+\def\filedate{2022/01/28 }
+\typeout{2022/01/28 4.05b tkz-obj-axes}
-\newif\ifinteger
\makeatletter
\def\removedot#1.{#1}
\newcommand\tkzgetinteger[1]{\expandafter\tkz@getinteger#1.\@nil}
\def\tkz@getinteger#1.#2\@nil{%
\ifx\empty#2\empty
- \integertrue
+ \tkz@integertrue
\else
\ifnum\removedot#2=0
- \integertrue
+ \tkz@integertrue
\else
- \integerfalse
+ \tkz@integerfalse
\fi
\fi
}
@@ -34,7 +33,7 @@
%<--------------------------------------------------------------------------–>
\def\tkz@showgrad#1{%
\tkzgetinteger{#1}
-\ifinteger\edef\tkz@result{\fpeval{trunc(#1,0)}}\else\edef\tkz@result{#1}\fi}%
+\iftkz@integer\edef\tkz@result{\fpeval{trunc(#1,0)}}\else\edef\tkz@result{#1}\fi}%
\def\tkz@Xresult{%
\tkz@showgrad{\tkz@xgrad}%
@@ -226,7 +225,7 @@ $\numprint{\tkz@result}$
down space = \tkz@init@downspace,
noticks/.is if = tkz@Y@noticks,
noticks/.default = true,
- noticks = true,
+ noticks = false,
tickwd/.store in = \tkz@Y@tickwd,
ticklt/.store in = \tkz@Y@ticklt,
tickrt/.store in = \tkz@Y@tickrt,
diff --git a/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-axesmin.tex b/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-axesmin.tex
deleted file mode 100644
index ed33ec7aea..0000000000
--- a/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-axesmin.tex
+++ /dev/null
@@ -1,171 +0,0 @@
-% tkz-obj-axesmin
-% Copyright 2022 Alain Matthes
-% This work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
-% of this license or (at your option) any later version.
-% The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
-% version 2005/12/01 or later.
-% This work has the LPPL maintenance status “maintained”.
-% The Current Maintainer of this work is Alain Matthes.
-
-\def\fileversion{4.00}
-\def\filedate{2022/01/25 }
-\typeout{2022/01/25 4.01 tkz-obj-axesmin}
-
-\makeatletter
-\newif\ifinteger
-\def\removedot#1.{#1}
-\newcommand\tkzgetinteger[1]{\expandafter\tkz@getinteger#1.\@nil}
-\def\tkz@getinteger#1.#2\@nil{%
- \ifx\empty#2\empty
- \integertrue
- \else
- \ifnum\removedot#2=0
- \integertrue
- \else
- \integerfalse
- \fi
- \fi
-}
-
-%<--------------------------------------------------------------------------–>
-% Setup axe
-%<--------------------------------------------------------------------------–>
-\pgfkeys{tkzaxis/.cd,
- line width/.code = \xdef\tkz@sua@lw{#1},
- color/.code = \xdef\tkz@sua@color{#1},
- tickwd/.code = \xdef\tkz@sua@tickwd{#1},
- ticka/.code = \xdef\tkz@sua@ticka{#1},
- tickb/.code = \xdef\tkz@sua@tickb{#1},
- line width = \tkz@init@lw,
- color = \tkz@init@color,
- tickwd = \tkz@init@tickwd,
- ticka = \tkz@init@ticka,
- tickb = \tkz@init@tickb
-}
-
-\def\tkzSetUpAxis{\pgfutil@ifnextchar[{\tkz@SetUpAxis}{\tkz@SetUpAxis[]}}
-\def\tkz@SetUpAxis[#1]{%
-\begingroup
-\pgfqkeys{/tkzaxis}{#1}
-\global\let\tkz@init@lw\tkz@sua@lw
-\global\let\tkz@init@gradsize\tkz@sua@gradsize
-\global\let\tkz@init@color\tkz@sua@color
-\global\let\tkz@init@tickwd\tkz@sua@tickwd
-\global\let\tkz@init@ticka\tkz@sua@ticka
-\global\let\tkz@init@tickb\tkz@sua@tickb
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% tkzDrawX todo améliorer les unités
-% sans doute à revoir loop from 0 to i then calcul dans la boucle de la position
-% et de l'affichage
-%<--------------------------------------------------------------------------–>
-\pgfkeys{%
- /tkzdrawX/.cd,
- color/.store in = \tkz@X@color,
- label/.store in = \tkz@X@label,
- right space/.store in = \tkz@axe@rxspace,
- left space/.store in = \tkz@axe@lxspace,
- step/.code = {\edef\tkz@posnext{\fpeval{#1}}},
- color = \tkz@init@color,
- label = \tkz@init@xlabel,
- step = \tkz@init@xstep,
- right space = \tkz@init@rightspace, %???
- left space = \tkz@init@leftspace,
- noticks/.is if = tkz@X@noticks,
- noticks/.default = true,
- noticks = true,
- tickwd/.store in = \tkz@X@tickwd,
- tickup/.store in = \tkz@X@tickup,
- tickdn/.store in = \tkz@X@tickdn,
- tickwd = \tkz@init@tickwd,
- tickup = \tkz@init@ticka,
- tickdn = \tkz@init@tickb,
- /tkzdrawX/.search also={/tikz},
- }
-
-\def\tkzDrawX{\pgfutil@ifnextchar[{\tkz@DrawX}{\tkz@DrawX[]}}
-\def\tkz@DrawX[#1]{
-\begingroup%
-\pgfqkeys{/tkzdrawX}{#1}
-\edef\tkz@posmax{\fpeval{trunc(\tkz@xb,\tkz@init@xdec)}}
-\edef\tkz@posmin{\fpeval{trunc(\tkz@xa,\tkz@init@xdec)}}
-\edef\tkz@xbsup{\fpeval{\tkz@xb+\tkz@axe@rxspace}}
-\edef\tkz@xainf{\fpeval{\tkz@xa-\tkz@axe@lxspace}}
-\path (\tkz@xainf,0)--(\tkz@xbsup,0) node(tkz@xline){};
-\draw[xaxe style,
- color = \tkz@X@color,
- /tkzdrawX/.cd, #1] (\tkz@xainf,0)--(\tkz@xbsup,0)
- node[ xlabel style,
- /tkzdrawX/.cd,
- #1]{\tkz@X@label};
- \iftkz@X@noticks
- \else
- \edef\tkz@posmax{\fpeval{trunc(\tkz@posmax,\tkz@init@xdec)}}
- \edef\tkz@posnext{\fpeval{\tkz@posnext/\tkz@init@xstep+\tkz@posmin}}
- \foreach \pos in {\tkz@posmin,...,\tkz@posmax}{%
- \edef\tkz@pos{\fpeval{\pos*1}}% ???
- \draw[ color = \tkz@X@color, line width = \tkz@X@tickwd,
- shift = {(\tkz@pos,0)}]%
- (0pt,\tkz@X@tickup)--(0pt,-\tkz@X@tickdn);
- }
- \fi
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% tkzDrawY todo améliorer les unités
-%<--------------------------------------------------------------------------–>
-\pgfkeys{%
- /tkzdrawY/.cd,
- color/.store in = \tkz@Y@color,
- label/.store in = \tkz@Y@label,
- up space/.store in = \tkz@axe@uyspace,
- down space/.store in = \tkz@axe@dyspace,
- step/.code = {\edef\tkz@posnext{\fpeval{#1}}},
- color = \tkz@init@color,
- label = \tkz@init@ylabel,
- step = \tkz@init@ystep,
- up space = \tkz@init@upspace,
- down space = \tkz@init@downspace,
- noticks/.is if = tkz@Y@noticks,
- noticks/.default = true,
- noticks = true,
- tickwd/.store in = \tkz@Y@tickwd,
- ticklt/.store in = \tkz@Y@ticklt,
- tickrt/.store in = \tkz@Y@tickrt,
- tickwd = \tkz@init@tickwd,
- ticklt = \tkz@init@tickb,
- tickrt = \tkz@init@ticka,
- /tkzdrawY/.search also={/tikz},
- }
-
-\def\tkzDrawY{\pgfutil@ifnextchar[{\tkz@DrawY}{\tkz@DrawY[]}}
-\def\tkz@DrawY[#1]{%
-\begingroup
-\pgfkeys{/tkzdrawY/.cd,step = \tkz@init@ystep}
-\pgfqkeys{/tkzdrawY}{#1}
-\edef\tkz@posmax{\fpeval{trunc(\tkz@yb,\tkz@init@ydec)}}
-\edef\tkz@posmin{\fpeval{trunc(\tkz@ya,\tkz@init@ydec)}}
-\edef\tkz@ybsup{\fpeval{\tkz@yb+\tkz@axe@uyspace}}
-\edef\tkz@yainf{\fpeval{\tkz@ya-\tkz@axe@dyspace}}
-\path (0,\tkz@yainf)--(0,\tkz@ybsup) node(tkz@yline){};
-\draw[color = \tkz@Y@color,
- yaxe style,/tkzdrawY/.cd,#1] (0,\tkz@yainf)--(0,\tkz@ybsup)
- node[ylabel style,/tkzdrawY/.cd,#1]{\tkz@Y@label};
- \iftkz@Y@noticks
- \else
- \edef\tkz@posmax{\fpeval{trunc(\tkz@posmax,\tkz@init@ydec)}}
- \edef\tkz@posnext{\fpeval{\tkz@posnext/\tkz@init@ystep+\tkz@posmin}}
- \foreach \tkz@pos in {\tkz@posmin,\tkz@posnext,...,\tkz@posmax}{%
- \draw[color = \tkz@Y@color,
- line width = \tkz@Y@tickwd,
- shift = {(0,\tkz@pos)}]%
- (\tkz@Y@tickrt,0pt)--(-\tkz@Y@ticklt,0pt);}
-
- \fi
-\endgroup}
-\makeatother
-\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-grids.tex b/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-grids.tex
index d013b85ff6..c4b5f381b4 100644
--- a/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-grids.tex
+++ b/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-grids.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.00}
-\def\filedate{2022/01/25 }
-\typeout{2022/01/25 4.01 tkz-obj-grids.tex}
+\def\fileversion{4.05b}
+\def\filedate{2022/01/28 }
+\typeout{2022/01/28 4.05b tkz-obj-grids.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% Setup Grid
diff --git a/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-marks.tex b/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-marks.tex
index ba23a6230d..abe6f77459 100644
--- a/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-marks.tex
+++ b/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-marks.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.00}
-\def\filedate{2022/01/25 }
-\typeout{2022/01/25 4.01 tkz-obj-marks.tex}
+\def\fileversion{4.05b}
+\def\filedate{2022/01/28 }
+\typeout{2022/01/28 4.05b tkz-obj-marks.tex}
\makeatletter
%<-------------------------------------------------------------------------–>
% Setup Marks
diff --git a/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-points.tex b/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-points.tex
index 7ec998a282..7645cf523a 100644
--- a/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-points.tex
+++ b/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-points.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.00}
-\def\filedate{2022/01/25 }
-\typeout{2022/01/25 4.01 tkz-obj-eu-points.tex}
+\def\fileversion{4.05b}
+\def\filedate{2022/01/28 }
+\typeout{2022/01/28 4.05b tkz-obj-eu-points.tex}
\makeatletter
%<--------------------------------------------------------------------------->
% init def point
diff --git a/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-rep.tex b/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-rep.tex
index 1891617cc4..fe984ffb62 100644
--- a/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-rep.tex
+++ b/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-rep.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.00}
-\def\filedate{2022/01/25 }
-\typeout{2022/01/25 4.01 tkz-obj-rep.tex}
+\def\fileversion{4.05b}
+\def\filedate{2022/01/28}
+\typeout{2022/01/28 4.05b tkz-obj-rep.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% repère
diff --git a/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-BB.tex b/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-BB.tex
index 27242b0284..b09c8b5608 100644
--- a/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-BB.tex
+++ b/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-BB.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.00}
-\def\filedate{2022/01/25 }
-\typeout{2022/01/25 4.01 tkz-obj-BB.tex}
+\def\fileversion{4.05b}
+\def\filedate{2022/01/28 }
+\typeout{2022/01/28 4.05b tkz-obj-BB.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
\def\tkzShowBB{\pgfutil@ifnextchar[{\tkz@ShowBB}{\tkz@ShowBB[]}}
diff --git a/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-arith.tex b/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-arith.tex
index b2185cb223..84d2336613 100644
--- a/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-arith.tex
+++ b/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-arith.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.00}
-\def\filedate{2022/01/25 }
-\typeout{2022/01/25 4.01 tkz-tools-arith.tex}
+\def\fileversion{4.05b}
+\def\filedate{2022/01/28 }
+\typeout{2022/01/28 4.05b tkz-tools-arith.tex}
% 1.161 test if "isfactor" is already defined
% now with pgf 3.0 gcd isprime isodd iseven are defined
%<--------------------------------------------------------------------------–>
diff --git a/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-base.tex b/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-base.tex
index d7adb3f2cf..207df8e92e 100644
--- a/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-base.tex
+++ b/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-base.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.00}
-\def\filedate{2022/01/25 }
-\typeout{2022/01/25 4.01 tkz-tools-base.tex}
+\def\fileversion{4.05b}
+\def\filedate{2022/01/28 }
+\typeout{2022/01/28 4.05b tkz-tools-base.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
\global\let\tkz@tmp@xa\tkz@init@xmin% modif 2016
diff --git a/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-colors.tex b/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-colors.tex
index 5a27919887..d24a49add8 100644
--- a/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-colors.tex
+++ b/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-colors.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.00}
-\def\filedate{2022/01/25 }
-\typeout{2022/01/25 4.01 tkz-tools-colors}
+\def\fileversion{4.05b}
+\def\filedate{2022/01/28 }
+\typeout{2022/01/28 4.05b tkz-tools-colors}
\makeatletter
%<------ Initialisation of the colors with tkzSetUpColors ----------------->
diff --git a/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-misc.tex b/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-misc.tex
index ac49a52285..580dabf51f 100644
--- a/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-misc.tex
+++ b/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-misc.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.00}
-\def\filedate{2022/01/25 }
-\typeout{2022/01/25 4.01 tkz-tools-misc.tex}
+\def\fileversion{4.05b}
+\def\filedate{2022/01/28 }
+\typeout{2022/01/28 4.05b tkz-tools-misc.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% hline pb avec line
diff --git a/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-modules.tex b/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-modules.tex
index 4e98b39bfc..a6467a428d 100644
--- a/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-modules.tex
+++ b/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-modules.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.00}
-\def\filedate{2022/01/25 }
-\typeout{2022/01/25 4.01 tkz-tools-modules.tex}
+\def\fileversion{4.05b}
+\def\filedate{2022/01/28 }
+\typeout{2022/01/28 4.05b tkz-tools-modules.tex}
\makeatletter
%<------------- % chargement des modules ---------------------------------->
\def\tkz@obj@all{angles,arcs,compass,defcircles,deflines,defpoints,defpointsby,defpointsrnd,defpointswith,polygons,protractor,sectors,show,triangles}%
diff --git a/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-print.tex b/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-print.tex
index 79eac1cf14..a727e2fb39 100644
--- a/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-print.tex
+++ b/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-print.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.00}
-\def\filedate{2022/01/25 }
-\typeout{2022/01/25 4.01 tkz-tools-print}
+\def\fileversion{4.05b}
+\def\filedate{2022/01/28 }
+\typeout{2022/01/28 4.05b tkz-tools-print}
\makeatletter
%<------------- tkzPrintFrac ---------------------------------->
\def\tkzPrintFrac#1#2{%
diff --git a/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-text.tex b/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-text.tex
index 639de47d69..819505a99c 100644
--- a/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-text.tex
+++ b/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-text.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.00}
-\def\filedate{2022/01/25 }
-\typeout{2022/01/25 4.01 tkz-tools-text.tex}
+\def\fileversion{4.05b}
+\def\filedate{2022/01/28 }
+\typeout{2022/01/28 4.05b tkz-tools-text.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% tkzText
diff --git a/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-utilities.tex b/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-utilities.tex
index 992e5da0c7..c304cee394 100644
--- a/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-utilities.tex
+++ b/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-utilities.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.00}
-\def\filedate{2022/01/25 }
-\typeout{2022/01/25 4.01 tkz-tools-utilities.tex}
+\def\fileversion{4.05b}
+\def\filedate{2022/01/28 }
+\typeout{2022/01/28 4.05b tkz-tools-utilities.tex}
\makeatletter
\pgfkeys{/tkzClip/.cd,
space/.store in = {\tkz@CLI@space},
diff --git a/macros/latex/contrib/zref-clever/CHANGELOG.md b/macros/latex/contrib/zref-clever/CHANGELOG.md
index 74fdc04b4e..66d7e69c3d 100644
--- a/macros/latex/contrib/zref-clever/CHANGELOG.md
+++ b/macros/latex/contrib/zref-clever/CHANGELOG.md
@@ -1,6 +1,16 @@
# Changelog
-## [Unreleased](https://github.com/gusbrs/zref-clever/compare/v0.2.0-alpha...HEAD)
+## [Unreleased](https://github.com/gusbrs/zref-clever/compare/v0.2.1-alpha...HEAD)
+
+## [v0.2.1-alpha](https://github.com/gusbrs/zref-clever/compare/v0.2.0-alpha...v0.2.1-alpha) (2022-02-07)
+
+### Added
+- Option `endrange` for typesetting terse ranges.
+- Option `rangetopair` to control behavior of `range` option when a pair
+ results from building a range.
+- Option `vario` to load package `zref-vario`.
+- Reference property `subeq` for the `amsmath` and `breqn` compatibility
+ modules.
## [v0.2.0-alpha](https://github.com/gusbrs/zref-clever/compare/v0.1.2-alpha...v0.2.0-alpha) (2022-01-28)
diff --git a/macros/latex/contrib/zref-clever/MANIFEST.md b/macros/latex/contrib/zref-clever/MANIFEST.md
index 0c7f6e4af5..50b246d870 100644
--- a/macros/latex/contrib/zref-clever/MANIFEST.md
+++ b/macros/latex/contrib/zref-clever/MANIFEST.md
@@ -66,8 +66,10 @@ different engines (pdfTeX, XeTeX, LuaTeX, etc.).
* zc-LanguageSetup01.lvt
* zc-LanguageSetup02.lvt
+* zc-LanguageSetup03.lvt
* zc-RefTypeSetup01.lvt
* zc-RefTypeSetup02.lvt
+* zc-RefTypeSetup03.lvt
* zc-class-article01.lvt
* zc-class-book01.lvt
* zc-class-memoir01.lvt
@@ -98,6 +100,7 @@ different engines (pdfTeX, XeTeX, LuaTeX, etc.).
* zc-howto-newtheorem02.lvt
* zc-howto-newtheorem03.lvt
* zc-howto-newtheorem04.lvt
+* zc-howto-zref-vario01.lvt
* zc-howto-zref-xr01.lvt
* zc-label-options01.lvt
* zc-langfile-dutch01.lvt
@@ -127,12 +130,14 @@ different engines (pdfTeX, XeTeX, LuaTeX, etc.).
* zc-opt-ref01.lvt
* zc-opt-ref02.lvt
* zc-opt-titleref01.lvt
+* zc-opt-vario01.lvt
* zc-precedence-rules01.lvt
* zc-sort01.lvt
* zc-typeset01.lvt
* zc-workaround-breqn01.lvt
* zc-zcref-options01.lvt
* zc-zcref-options02.lvt
+* zc-zcref-options03.lvt
* zc-LanguageSetup01.luatex.tlg
* zc-LanguageSetup01.luatexdev.tlg
* zc-LanguageSetup01.tlg
@@ -143,6 +148,11 @@ different engines (pdfTeX, XeTeX, LuaTeX, etc.).
* zc-LanguageSetup02.tlg
* zc-LanguageSetup02.xetex.tlg
* zc-LanguageSetup02.xetexdev.tlg
+* zc-LanguageSetup03.luatex.tlg
+* zc-LanguageSetup03.luatexdev.tlg
+* zc-LanguageSetup03.tlg
+* zc-LanguageSetup03.xetex.tlg
+* zc-LanguageSetup03.xetexdev.tlg
* zc-RefTypeSetup01.luatex.tlg
* zc-RefTypeSetup01.luatexdev.tlg
* zc-RefTypeSetup01.tlg
@@ -153,6 +163,11 @@ different engines (pdfTeX, XeTeX, LuaTeX, etc.).
* zc-RefTypeSetup02.tlg
* zc-RefTypeSetup02.xetex.tlg
* zc-RefTypeSetup02.xetexdev.tlg
+* zc-RefTypeSetup03.luatex.tlg
+* zc-RefTypeSetup03.luatexdev.tlg
+* zc-RefTypeSetup03.tlg
+* zc-RefTypeSetup03.xetex.tlg
+* zc-RefTypeSetup03.xetexdev.tlg
* zc-class-article01.luatex.tlg
* zc-class-article01.luatexdev.tlg
* zc-class-article01.tlg
@@ -303,6 +318,11 @@ different engines (pdfTeX, XeTeX, LuaTeX, etc.).
* zc-howto-newtheorem04.tlg
* zc-howto-newtheorem04.xetex.tlg
* zc-howto-newtheorem04.xetexdev.tlg
+* zc-howto-zref-vario01.luatex.tlg
+* zc-howto-zref-vario01.luatexdev.tlg
+* zc-howto-zref-vario01.tlg
+* zc-howto-zref-vario01.xetex.tlg
+* zc-howto-zref-vario01.xetexdev.tlg
* zc-howto-zref-xr01.luatex.tlg
* zc-howto-zref-xr01.luatexdev.tlg
* zc-howto-zref-xr01.tlg
@@ -408,6 +428,11 @@ different engines (pdfTeX, XeTeX, LuaTeX, etc.).
* zc-opt-titleref01.tlg
* zc-opt-titleref01.xetex.tlg
* zc-opt-titleref01.xetexdev.tlg
+* zc-opt-vario01.luatex.tlg
+* zc-opt-vario01.luatexdev.tlg
+* zc-opt-vario01.tlg
+* zc-opt-vario01.xetex.tlg
+* zc-opt-vario01.xetexdev.tlg
* zc-precedence-rules01.luatex.tlg
* zc-precedence-rules01.luatexdev.tlg
* zc-precedence-rules01.tlg
@@ -434,6 +459,11 @@ different engines (pdfTeX, XeTeX, LuaTeX, etc.).
* zc-zcref-options02.tlg
* zc-zcref-options02.xetex.tlg
* zc-zcref-options02.xetexdev.tlg
+* zc-zcref-options03.luatex.tlg
+* zc-zcref-options03.luatexdev.tlg
+* zc-zcref-options03.tlg
+* zc-zcref-options03.xetex.tlg
+* zc-zcref-options03.xetexdev.tlg
## TDS manifest
diff --git a/macros/latex/contrib/zref-clever/zref-clever-code.pdf b/macros/latex/contrib/zref-clever/zref-clever-code.pdf
index 033edad2dc..9e8212f083 100644
--- a/macros/latex/contrib/zref-clever/zref-clever-code.pdf
+++ b/macros/latex/contrib/zref-clever/zref-clever-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/zref-clever/zref-clever.dtx b/macros/latex/contrib/zref-clever/zref-clever.dtx
index d850476b4c..e6c175d33f 100644
--- a/macros/latex/contrib/zref-clever/zref-clever.dtx
+++ b/macros/latex/contrib/zref-clever/zref-clever.dtx
@@ -162,7 +162,7 @@
%
% Identify the package.
% \begin{macrocode}
-\ProvidesExplPackage {zref-clever} {2022-01-28} {0.2.0-alpha}
+\ProvidesExplPackage {zref-clever} {2022-02-07} {0.2.1-alpha}
{Clever LaTeX cross-references based on zref}
% \end{macrocode}
%
@@ -607,6 +607,11 @@
Option~'ref=#1'~requested~\msg_line_context:.~
But~the~property~'#1'~is~not~declared,~falling-back~to~'default'.
}
+\msg_new:nnn { zref-clever } { endrange-property-undefined }
+ {
+ Option~'endrange=#1'~requested~\msg_line_context:.~
+ But~the~property~'#1'~is~not~declared,~'endrange'~not~set.
+ }
\msg_new:nnn { zref-clever } { hyperref-preamble-only }
{
Option~'hyperref'~only~available~in~the~preamble~\msg_line_context:.~
@@ -667,7 +672,7 @@
% exactly twice, but no further to retrieve the proper value. In case the
% property is not found, set \meta{tl var} with \meta{default}.
% \begin{syntax}
-% \cs{@@_extract_default:Nnnn} \Arg{tl val}
+% \cs{@@_extract_default:Nnnn} \Arg{tl var}
% ~~\Arg{label} \Arg{prop} \Arg{default}
% \end{syntax}
% \begin{macrocode}
@@ -676,7 +681,7 @@
\exp_args:NNNo \exp_args:NNo \tl_set:Nn #1
{ \zref@extractdefault {#2} {#3} {#4} }
}
-\cs_generate_variant:Nn \@@_extract_default:Nnnn { NVnn }
+\cs_generate_variant:Nn \@@_extract_default:Nnnn { NVnn , Nnvn }
% \end{macrocode}
% \end{macro}
%
@@ -1103,16 +1108,22 @@
% \contributor{Jonathan P.\ Spratte}, aka `Skillmon', and some discussion
% about it, including further insights by \contributor{Phelype Oleinik}, see
% \url{https://tex.stackexchange.com/q/614690} and
-% \url{https://github.com/latex3/latex3/pull/988}. For booleans, the
-% situation is different, since they cannot meaningfully receive an empty
-% value and the ``key with no value'' is a handy and expected shorthand for
+% \url{https://github.com/latex3/latex3/pull/988}. However, Joseph Wright
+% seems to particularly dislike this use and the general idea of a ``key with
+% no value'' being somehow meaningful for \pkg{l3keys} (e.g. his comments on
+% the previous question, and
+% \url{https://tex.stackexchange.com/q/632157/#comment1576404_632157}), which
+% does make it somewhat risky to rely on this. For booleans, the situation is
+% different, since they cannot meaningfully receive an empty value and the
+% ``key with no value'' is a handy and expected shorthand for
% \texttt{key=true}. Therefore, for reference format option booleans, we use
-% a third value ``\texttt{unset}'' for this purpose. In the language files
-% the ``unsetting'' behavior is less meaningful, since they only change any
-% variable if it is unset to start with, so that unsetting an unset variable
-% would be redundant. However, for UI symmetry also in the language files
-% keys with no value should not be considered ``empty'' and boolean
-% \texttt{unset} values should exist. They are just no-op.
+% a third value ``\texttt{unset}'' for this purpose. And similarly for
+% ``choice'' options. In the language files the ``unsetting'' behavior is
+% less meaningful, since they only change any variable if it is unset to start
+% with, so that unsetting an unset variable would be redundant. However, for
+% UI symmetry also in the language files keys with no value should not be
+% considered ``empty'' and boolean \texttt{unset} values should exist. They
+% are just no-op.
%
%
% \begin{macro}
@@ -1191,6 +1202,7 @@
{
cap ,
abbrev ,
+ rangetopair ,
}
% \end{macrocode}
% Only ``type names'' are ``necessarily type-specific'', which makes them
@@ -1880,6 +1892,225 @@
} ,
}
}
+\keys_define:nn { zref-clever/langfile }
+ {
+ endrange .code:n =
+ {
+ \str_case:nnF {#1}
+ {
+ { ref }
+ {
+ \tl_if_empty:NTF \l_@@_setup_type_tl
+ {
+ \@@_opt_tl_gset_if_new:cn
+ {
+ \@@_opt_varname_lang_default:enn
+ { \l_@@_setup_language_tl }
+ { endrangefunc } { tl }
+ }
+ { }
+ \@@_opt_tl_gset_if_new:cn
+ {
+ \@@_opt_varname_lang_default:enn
+ { \l_@@_setup_language_tl }
+ { endrangeprop } { tl }
+ }
+ { }
+ }
+ {
+ \@@_opt_tl_gset_if_new:cn
+ {
+ \@@_opt_varname_lang_type:eenn
+ { \l_@@_setup_language_tl }
+ { \l_@@_setup_type_tl }
+ { endrangefunc } { tl }
+ }
+ { }
+ \@@_opt_tl_gset_if_new:cn
+ {
+ \@@_opt_varname_lang_type:eenn
+ { \l_@@_setup_language_tl }
+ { \l_@@_setup_type_tl }
+ { endrangeprop } { tl }
+ }
+ { }
+ }
+ }
+
+ { stripprefix }
+ {
+ \tl_if_empty:NTF \l_@@_setup_type_tl
+ {
+ \@@_opt_tl_gset_if_new:cn
+ {
+ \@@_opt_varname_lang_default:enn
+ { \l_@@_setup_language_tl }
+ { endrangefunc } { tl }
+ }
+ { @@_get_endrange_stripprefix }
+ \@@_opt_tl_gset_if_new:cn
+ {
+ \@@_opt_varname_lang_default:enn
+ { \l_@@_setup_language_tl }
+ { endrangeprop } { tl }
+ }
+ { }
+ }
+ {
+ \@@_opt_tl_gset_if_new:cn
+ {
+ \@@_opt_varname_lang_type:eenn
+ { \l_@@_setup_language_tl }
+ { \l_@@_setup_type_tl }
+ { endrangefunc } { tl }
+ }
+ { @@_get_endrange_stripprefix }
+ \@@_opt_tl_gset_if_new:cn
+ {
+ \@@_opt_varname_lang_type:eenn
+ { \l_@@_setup_language_tl }
+ { \l_@@_setup_type_tl }
+ { endrangeprop } { tl }
+ }
+ { }
+ }
+ }
+
+ { pagecomp }
+ {
+ \tl_if_empty:NTF \l_@@_setup_type_tl
+ {
+ \@@_opt_tl_gset_if_new:cn
+ {
+ \@@_opt_varname_lang_default:enn
+ { \l_@@_setup_language_tl }
+ { endrangefunc } { tl }
+ }
+ { @@_get_endrange_pagecomp }
+ \@@_opt_tl_gset_if_new:cn
+ {
+ \@@_opt_varname_lang_default:enn
+ { \l_@@_setup_language_tl }
+ { endrangeprop } { tl }
+ }
+ { }
+ }
+ {
+ \@@_opt_tl_gset_if_new:cn
+ {
+ \@@_opt_varname_lang_type:eenn
+ { \l_@@_setup_language_tl }
+ { \l_@@_setup_type_tl }
+ { endrangefunc } { tl }
+ }
+ { @@_get_endrange_pagecomp }
+ \@@_opt_tl_gset_if_new:cn
+ {
+ \@@_opt_varname_lang_type:eenn
+ { \l_@@_setup_language_tl }
+ { \l_@@_setup_type_tl }
+ { endrangeprop } { tl }
+ }
+ { }
+ }
+ }
+
+ { pagecomp2 }
+ {
+ \tl_if_empty:NTF \l_@@_setup_type_tl
+ {
+ \@@_opt_tl_gset_if_new:cn
+ {
+ \@@_opt_varname_lang_default:enn
+ { \l_@@_setup_language_tl }
+ { endrangefunc } { tl }
+ }
+ { @@_get_endrange_pagecomptwo }
+ \@@_opt_tl_gset_if_new:cn
+ {
+ \@@_opt_varname_lang_default:enn
+ { \l_@@_setup_language_tl }
+ { endrangeprop } { tl }
+ }
+ { }
+ }
+ {
+ \@@_opt_tl_gset_if_new:cn
+ {
+ \@@_opt_varname_lang_type:eenn
+ { \l_@@_setup_language_tl }
+ { \l_@@_setup_type_tl }
+ { endrangefunc } { tl }
+ }
+ { @@_get_endrange_pagecomptwo }
+ \@@_opt_tl_gset_if_new:cn
+ {
+ \@@_opt_varname_lang_type:eenn
+ { \l_@@_setup_language_tl }
+ { \l_@@_setup_type_tl }
+ { endrangeprop } { tl }
+ }
+ { }
+ }
+ }
+
+ { unset }
+ { }
+ }
+ {
+ \tl_if_empty:nTF {#1}
+ {
+ \msg_info:nnn { zref-clever }
+ { endrange-property-undefined } {#1}
+ }
+ {
+ \zref@ifpropundefined {#1}
+ {
+ \msg_info:nnn { zref-clever }
+ { endrange-property-undefined } {#1}
+ }
+ {
+ \tl_if_empty:NTF \l_@@_setup_type_tl
+ {
+ \@@_opt_tl_gset_if_new:cn
+ {
+ \@@_opt_varname_lang_default:enn
+ { \l_@@_setup_language_tl }
+ { endrangefunc } { tl }
+ }
+ { @@_get_endrange_property }
+ \@@_opt_tl_gset_if_new:cn
+ {
+ \@@_opt_varname_lang_default:enn
+ { \l_@@_setup_language_tl }
+ { endrangeprop } { tl }
+ }
+ {#1}
+ }
+ {
+ \@@_opt_tl_gset_if_new:cn
+ {
+ \@@_opt_varname_lang_type:eenn
+ { \l_@@_setup_language_tl }
+ { \l_@@_setup_type_tl }
+ { endrangefunc } { tl }
+ }
+ { @@_get_endrange_property }
+ \@@_opt_tl_gset_if_new:cn
+ {
+ \@@_opt_varname_lang_type:eenn
+ { \l_@@_setup_language_tl }
+ { \l_@@_setup_type_tl }
+ { endrangeprop } { tl }
+ }
+ {#1}
+ }
+ }
+ }
+ }
+ } ,
+ endrange .value_required:n = true ,
+ }
\seq_map_inline:Nn
\c_@@_rf_opts_tl_type_names_seq
{
@@ -2167,7 +2398,9 @@
% branch if it is not (insightful comments by \contributor{Ulrike Fischer} at
% \url{https://github.com/ho-tex/zref/issues/13}). Therefore, before adding
% anything to \cs{l_@@_ref_property_tl}, check if first here with
-% \cs{zref@ifpropundefined}: close it at the door.
+% \cs{zref@ifpropundefined}: close it at the door. We must also control for
+% an empty value, since ``empty'' passes both \cs{zref@ifpropundefined} and
+% \cs{zref@ifrefcontainsprop}.
%
%
% \begin{macrocode}
@@ -2176,12 +2409,21 @@
{
ref .code:n =
{
- \zref@ifpropundefined {#1}
+ \tl_if_empty:nTF {#1}
{
- \msg_warning:nnn { zref-clever } { zref-property-undefined } {#1}
+ \msg_warning:nnn { zref-clever }
+ { zref-property-undefined } {#1}
\tl_set:Nn \l_@@_ref_property_tl { default }
}
- { \tl_set:Nn \l_@@_ref_property_tl {#1} }
+ {
+ \zref@ifpropundefined {#1}
+ {
+ \msg_warning:nnn { zref-clever }
+ { zref-property-undefined } {#1}
+ \tl_set:Nn \l_@@_ref_property_tl { default }
+ }
+ { \tl_set:Nn \l_@@_ref_property_tl {#1} }
+ }
} ,
ref .initial:n = default ,
ref .value_required:n = true ,
@@ -2286,7 +2528,443 @@
%
%
%
-% \subsubsection*{\opt{range} option}
+% \subsubsection*{\opt{endrange} option}
+%
+% The working of \opt{endrange} option depends on two underlying option values
+% / variables: \texttt{endrangefunc} and \texttt{endrangeprop}.
+% \texttt{endrangefunc} is the more general one, and \texttt{endrangeprop} is
+% used when the first is set to \cs{@@_get_endrange_property:VVN}, which is
+% the case when the user is setting \opt{endrange} to an arbitrary \pkg{zref}
+% property, instead of one of the \cs{str_case:nn} matches.
+%
+% \texttt{endrangefunc} \emph{must} receive three arguments and, more
+% specifically, its signature \emph{must} be \texttt{VVN}. For this reason,
+% \texttt{endrangefunc} should be stored without the signature, which is
+% added, and hard-coded, at the calling place. The first argument is
+% \meta{beg range label}, the second \meta{end range label}, and the last
+% \meta{tl var to set}. Of course, \meta{tl var to set} must be set to a
+% proper value, and that's the main task of the function.
+% \texttt{endrangefunc} must also handle the case where
+% \cs{zref@ifrefcontainsprop} is false, since \cs{@@_get_ref_endrange:nnN}
+% cannot take care of that. For this purpose, it may set \meta{tl var to set}
+% to the special value \texttt{zc@missingproperty}, to signal a missing
+% property for \cs{@@_get_ref_endrange:nnN}.
+%
+% An empty \texttt{endrangefunc} signals that no processing is to be made to
+% the end range reference, that is, that it should be treated like any other
+% one, as defined by the \opt{ref} option. This may happen either because
+% \opt{endrange} was never set for the reference type, and empty is the value
+% ``returned'' by \cs{@@_get_rf_opt_tl:nnnN} for options not set, or because
+% \opt{endrange} was set to \texttt{ref} at some scope which happens to get
+% precedence.
+%
+% One thing I was divided about in this functionality was whether to
+% (x-)expand the references before processing them, when such processing is
+% required. At first sight, it makes sense to do so, since we are aiming at
+% ``removing common parts'' as close as possible to the printed representation
+% of the references (\pkg{cleveref} does expand them in \cs{crefstripprefix}).
+% On the other hand, this brings some new challenges: if a fragile command
+% gets there, we are in trouble; also, if a protected one gets there, though
+% things won't break as badly, we may ``strip'' the macro and stay with
+% different arguments, which will then end up in the input stream. I think
+% \pkg{biblatex} is a good reference here, and it offers \cs{NumCheckSetup},
+% \cs{NumsCheckSetup}, and \cs{PagesCheckSetup} aimed at locally redefining
+% some commands which may interfere with the processing. This is a good idea,
+% thus we offer a similar hook for the same purpose: \texttt{endrange-setup}.
+%
+% \begin{macrocode}
+\NewHook { zref-clever/endrange-setup }
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
+\keys_define:nn { zref-clever/reference }
+ {
+ endrange .code:n =
+ {
+ \str_case:nnF {#1}
+ {
+ { ref }
+ {
+ \tl_clear:c
+ {
+ \@@_opt_varname_general:nn
+ { endrangefunc } { tl }
+ }
+ \tl_clear:c
+ {
+ \@@_opt_varname_general:nn
+ { endrangeprop } { tl }
+ }
+ }
+
+ { stripprefix }
+ {
+ \tl_set:cn
+ {
+ \@@_opt_varname_general:nn
+ { endrangefunc } { tl }
+ }
+ { @@_get_endrange_stripprefix }
+ \tl_clear:c
+ {
+ \@@_opt_varname_general:nn
+ { endrangeprop } { tl }
+ }
+ }
+
+ { pagecomp }
+ {
+ \tl_set:cn
+ {
+ \@@_opt_varname_general:nn
+ { endrangefunc } { tl }
+ }
+ { @@_get_endrange_pagecomp }
+ \tl_clear:c
+ {
+ \@@_opt_varname_general:nn
+ { endrangeprop } { tl }
+ }
+ }
+
+ { pagecomp2 }
+ {
+ \tl_set:cn
+ {
+ \@@_opt_varname_general:nn
+ { endrangefunc } { tl }
+ }
+ { @@_get_endrange_pagecomptwo }
+ \tl_clear:c
+ {
+ \@@_opt_varname_general:nn
+ { endrangeprop } { tl }
+ }
+ }
+
+ { unset }
+ {
+ \@@_opt_tl_unset:c
+ {
+ \@@_opt_varname_general:nn
+ { endrangefunc } { tl }
+ }
+ \@@_opt_tl_unset:c
+ {
+ \@@_opt_varname_general:nn
+ { endrangeprop } { tl }
+ }
+ }
+ }
+ {
+ \tl_if_empty:nTF {#1}
+ {
+ \msg_warning:nnn { zref-clever }
+ { endrange-property-undefined } {#1}
+ }
+ {
+ \zref@ifpropundefined {#1}
+ {
+ \msg_warning:nnn { zref-clever }
+ { endrange-property-undefined } {#1}
+ }
+ {
+ \tl_set:cn
+ {
+ \@@_opt_varname_general:nn
+ { endrangefunc } { tl }
+ }
+ { @@_get_endrange_property }
+ \tl_set:cn
+ {
+ \@@_opt_varname_general:nn
+ { endrangeprop } { tl }
+ }
+ {#1}
+ }
+ }
+ }
+ } ,
+ endrange .value_required:n = true ,
+ }
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_get_endrange_property:nnN #1#2#3
+ {
+ \tl_if_empty:NTF \l_@@_endrangeprop_tl
+ {
+ \zref@ifrefcontainsprop {#2} { \l_@@_ref_property_tl }
+ {
+ \@@_extract_default:Nnvn #3
+ {#2} { l_@@_ref_property_tl } { }
+ }
+ { \tl_set:Nn #3 { zc@missingproperty } }
+ }
+ {
+ \zref@ifrefcontainsprop {#2} { \l_@@_endrangeprop_tl }
+ {
+% \end{macrocode}
+% If the range came about by normal compression, we already know the beginning
+% and the end references share the same ``form'' and ``prefix'' (this is
+% ensured at \cs{@@_labels_in_sequence:nn}), but the same is not true if the
+% \opt{range} option is being used, in which case, we have to check the
+% replacement \cs{l_@@_ref_property_tl} by \cs{l_@@_endrangeprop_tl} is really
+% granted.
+% \begin{macrocode}
+ \bool_if:NTF \l_@@_typeset_range_bool
+ {
+ \group_begin:
+ \bool_set_false:N \l_tmpa_bool
+ \exp_args:Nxx \tl_if_eq:nnT
+ {
+ \@@_extract_unexp:nnn
+ {#1} { externaldocument } { }
+ }
+ {
+ \@@_extract_unexp:nnn
+ {#2} { externaldocument } { }
+ }
+ {
+ \tl_if_eq:NnTF \l_@@_ref_property_tl { page }
+ {
+ \exp_args:Nxx \tl_if_eq:nnT
+ {
+ \@@_extract_unexp:nnn
+ {#1} { zc@pgfmt } { }
+ }
+ {
+ \@@_extract_unexp:nnn
+ {#2} { zc@pgfmt } { }
+ }
+ { \bool_set_true:N \l_tmpa_bool }
+ }
+ {
+ \exp_args:Nxx \tl_if_eq:nnT
+ {
+ \@@_extract_unexp:nnn
+ {#1} { zc@counter } { }
+ }
+ {
+ \@@_extract_unexp:nnn
+ {#2} { zc@counter } { }
+ }
+ {
+ \exp_args:Nxx \tl_if_eq:nnT
+ {
+ \@@_extract_unexp:nnn
+ {#1} { zc@enclval } { }
+ }
+ {
+ \@@_extract_unexp:nnn
+ {#2} { zc@enclval } { }
+ }
+ { \bool_set_true:N \l_tmpa_bool }
+ }
+ }
+ }
+ \bool_if:NTF \l_tmpa_bool
+ {
+ \@@_extract_default:Nnvn \l_tmpb_tl
+ {#2} { l_@@_endrangeprop_tl } { }
+ }
+ {
+ \zref@ifrefcontainsprop
+ {#2} { \l_@@_ref_property_tl }
+ {
+ \@@_extract_default:Nnvn \l_tmpb_tl
+ {#2} { l_@@_ref_property_tl } { }
+ }
+ { \tl_set:Nn \l_tmpb_tl { zc@missingproperty } }
+ }
+ \exp_args:NNNV
+ \group_end:
+ \tl_set:Nn #3 \l_tmpb_tl
+ }
+ {
+ \@@_extract_default:Nnvn #3
+ {#2} { l_@@_endrangeprop_tl } { }
+ }
+ }
+ {
+ \zref@ifrefcontainsprop {#2} { \l_@@_ref_property_tl }
+ {
+ \@@_extract_default:Nnvn #3
+ {#2} { l_@@_ref_property_tl } { }
+ }
+ { \tl_set:Nn #3 { zc@missingproperty } }
+ }
+ }
+ }
+\cs_generate_variant:Nn \@@_get_endrange_property:nnN { VVN }
+% \end{macrocode}
+%
+%
+%
+% For the technique for smuggling the assignment out of the group, see
+% \contributor{Enrico Gregorio}'s answer at
+% \url{https://tex.stackexchange.com/a/56314}.
+%
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_get_endrange_stripprefix:nnN #1#2#3
+ {
+ \zref@ifrefcontainsprop {#2} { \l_@@_ref_property_tl }
+ {
+ \group_begin:
+ \UseHook { zref-clever/endrange-setup }
+ \tl_set:Nx \l_tmpa_tl
+ {
+ \@@_extract:nnn
+ {#1} { \l_@@_ref_property_tl } { }
+ }
+ \tl_set:Nx \l_tmpb_tl
+ {
+ \@@_extract:nnn
+ {#2} { \l_@@_ref_property_tl } { }
+ }
+ \bool_set_false:N \l_tmpa_bool
+ \bool_until_do:Nn \l_tmpa_bool
+ {
+ \exp_args:Nxx \tl_if_eq:nnTF
+ { \tl_head:V \l_tmpa_tl } { \tl_head:V \l_tmpb_tl }
+ {
+ \tl_set:Nx \l_tmpa_tl { \tl_tail:V \l_tmpa_tl }
+ \tl_set:Nx \l_tmpb_tl { \tl_tail:V \l_tmpb_tl }
+ \tl_if_empty:NT \l_tmpb_tl
+ { \bool_set_true:N \l_tmpa_bool }
+ }
+ { \bool_set_true:N \l_tmpa_bool }
+ }
+ \exp_args:NNNV
+ \group_end:
+ \tl_set:Nn #3 \l_tmpb_tl
+ }
+ { \tl_set:Nn #3 { zc@missingproperty } }
+ }
+\cs_generate_variant:Nn \@@_get_endrange_stripprefix:nnN { VVN }
+% \end{macrocode}
+%
+%
+% \begin{macro}{\@@_is_integer_rgx:n}
+% Test if argument is composed only of digits (adapted from
+% \url{https://tex.stackexchange.com/a/427559}).
+% \begin{macrocode}
+\prg_new_protected_conditional:Npnn
+ \@@_is_integer_rgx:n #1 { F , TF }
+ {
+ \regex_match:nnTF { \A\d+\Z } {#1}
+ { \prg_return_true: }
+ { \prg_return_false: }
+ }
+\prg_generate_conditional_variant:Nnn
+ \@@_is_integer_rgx:n { V } { F , TF }
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_get_endrange_pagecomp:nnN #1#2#3
+ {
+ \zref@ifrefcontainsprop {#2} { \l_@@_ref_property_tl }
+ {
+ \group_begin:
+ \UseHook { zref-clever/endrange-setup }
+ \tl_set:Nx \l_tmpa_tl
+ {
+ \@@_extract:nnn
+ {#1} { \l_@@_ref_property_tl } { }
+ }
+ \tl_set:Nx \l_tmpb_tl
+ {
+ \@@_extract:nnn
+ {#2} { \l_@@_ref_property_tl } { }
+ }
+ \bool_set_false:N \l_tmpa_bool
+ \@@_is_integer_rgx:VTF \l_tmpa_tl
+ {
+ \@@_is_integer_rgx:VF \l_tmpb_tl
+ { \bool_set_true:N \l_tmpa_bool }
+ }
+ { \bool_set_true:N \l_tmpa_bool }
+ \bool_until_do:Nn \l_tmpa_bool
+ {
+ \exp_args:Nxx \tl_if_eq:nnTF
+ { \tl_head:V \l_tmpa_tl } { \tl_head:V \l_tmpb_tl }
+ {
+ \tl_set:Nx \l_tmpa_tl { \tl_tail:V \l_tmpa_tl }
+ \tl_set:Nx \l_tmpb_tl { \tl_tail:V \l_tmpb_tl }
+ \tl_if_empty:NT \l_tmpb_tl
+ { \bool_set_true:N \l_tmpa_bool }
+ }
+ { \bool_set_true:N \l_tmpa_bool }
+ }
+ \exp_args:NNNV
+ \group_end:
+ \tl_set:Nn #3 \l_tmpb_tl
+ }
+ { \tl_set:Nn #3 { zc@missingproperty } }
+ }
+\cs_generate_variant:Nn \@@_get_endrange_pagecomp:nnN { VVN }
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_get_endrange_pagecomptwo:nnN #1#2#3
+ {
+ \zref@ifrefcontainsprop {#2} { \l_@@_ref_property_tl }
+ {
+ \group_begin:
+ \UseHook { zref-clever/endrange-setup }
+ \tl_set:Nx \l_tmpa_tl
+ {
+ \@@_extract:nnn
+ {#1} { \l_@@_ref_property_tl } { }
+ }
+ \tl_set:Nx \l_tmpb_tl
+ {
+ \@@_extract:nnn
+ {#2} { \l_@@_ref_property_tl } { }
+ }
+ \bool_set_false:N \l_tmpa_bool
+ \@@_is_integer_rgx:VTF \l_tmpa_tl
+ {
+ \@@_is_integer_rgx:VF \l_tmpb_tl
+ { \bool_set_true:N \l_tmpa_bool }
+ }
+ { \bool_set_true:N \l_tmpa_bool }
+ \bool_until_do:Nn \l_tmpa_bool
+ {
+ \exp_args:Nxx \tl_if_eq:nnTF
+ { \tl_head:V \l_tmpa_tl } { \tl_head:V \l_tmpb_tl }
+ {
+ \bool_lazy_or:nnTF
+ { \int_compare_p:nNn { \l_tmpb_tl } > { 99 } }
+ { \int_compare_p:nNn { \tl_head:V \l_tmpb_tl } = { 0 } }
+ {
+ \tl_set:Nx \l_tmpa_tl { \tl_tail:V \l_tmpa_tl }
+ \tl_set:Nx \l_tmpb_tl { \tl_tail:V \l_tmpb_tl }
+ }
+ { \bool_set_true:N \l_tmpa_bool }
+ }
+ { \bool_set_true:N \l_tmpa_bool }
+ }
+ \exp_args:NNNV
+ \group_end:
+ \tl_set:Nn #3 \l_tmpb_tl
+ }
+ { \tl_set:Nn #3 { zc@missingproperty } }
+ }
+\cs_generate_variant:Nn \@@_get_endrange_pagecomptwo:nnN { VVN }
+% \end{macrocode}
+%
+%
+%
+% \subsubsection*{\opt{range} and \opt{rangetopair} options}
+%
+% The \opt{rangetopair} option is being handled with other reference format
+% option booleans at \cs{c_@@_rf_opts_bool_maybe_type_specific_seq}.
%
% \begin{macrocode}
\bool_new:N \l_@@_typeset_range_bool
@@ -2753,6 +3431,28 @@
% \end{macrocode}
%
%
+% \subsubsection*{\opt{vario} option}
+%
+% \begin{macrocode}
+\keys_define:nn { zref-clever/reference }
+ {
+ vario .code:n = { \RequirePackage { zref-vario } } ,
+ vario .value_forbidden:n = true ,
+ }
+\AddToHook { begindocument }
+ {
+ \keys_define:nn { zref-clever/reference }
+ {
+ vario .code:n =
+ {
+ \msg_warning:nnn { zref-clever }
+ { option-preamble-only } { vario }
+ }
+ }
+ }
+% \end{macrocode}
+%
+%
% \subsubsection*{\opt{note} option}
%
% \begin{macrocode}
@@ -3244,6 +3944,7 @@
{
\tl_set:Nn \l_@@_setup_type_tl {#1}
\keys_set:nn { zref-clever/typesetup } {#2}
+ \tl_clear:N \l_@@_setup_type_tl
}
% \end{macrocode}
% \end{macro}
@@ -3292,6 +3993,118 @@
}
\keys_define:nn { zref-clever/typesetup }
{
+ endrange .code:n =
+ {
+ \str_case:nnF {#1}
+ {
+ { ref }
+ {
+ \tl_clear:c
+ {
+ \@@_opt_varname_type:enn
+ { \l_@@_setup_type_tl } { endrangefunc } { tl }
+ }
+ \tl_clear:c
+ {
+ \@@_opt_varname_type:enn
+ { \l_@@_setup_type_tl } { endrangeprop } { tl }
+ }
+ }
+
+ { stripprefix }
+ {
+ \tl_set:cn
+ {
+ \@@_opt_varname_type:enn
+ { \l_@@_setup_type_tl } { endrangefunc } { tl }
+ }
+ { @@_get_endrange_stripprefix }
+ \tl_clear:c
+ {
+ \@@_opt_varname_type:enn
+ { \l_@@_setup_type_tl } { endrangeprop } { tl }
+ }
+ }
+
+ { pagecomp }
+ {
+ \tl_set:cn
+ {
+ \@@_opt_varname_type:enn
+ { \l_@@_setup_type_tl } { endrangefunc } { tl }
+ }
+ { @@_get_endrange_pagecomp }
+ \tl_clear:c
+ {
+ \@@_opt_varname_type:enn
+ { \l_@@_setup_type_tl } { endrangeprop } { tl }
+ }
+ }
+
+ { pagecomp2 }
+ {
+ \tl_set:cn
+ {
+ \@@_opt_varname_type:enn
+ { \l_@@_setup_type_tl } { endrangefunc } { tl }
+ }
+ { @@_get_endrange_pagecomptwo }
+ \tl_clear:c
+ {
+ \@@_opt_varname_type:enn
+ { \l_@@_setup_type_tl } { endrangeprop } { tl }
+ }
+ }
+
+ { unset }
+ {
+ \@@_opt_tl_unset:c
+ {
+ \@@_opt_varname_type:enn
+ { \l_@@_setup_type_tl } { endrangefunc } { tl }
+ }
+ \@@_opt_tl_unset:c
+ {
+ \@@_opt_varname_type:enn
+ { \l_@@_setup_type_tl } { endrangeprop } { tl }
+ }
+ }
+ }
+ {
+ \tl_if_empty:nTF {#1}
+ {
+ \msg_warning:nnn { zref-clever }
+ { endrange-property-undefined } {#1}
+ }
+ {
+ \zref@ifpropundefined {#1}
+ {
+ \msg_warning:nnn { zref-clever }
+ { endrange-property-undefined } {#1}
+ }
+ {
+ \tl_set:cn
+ {
+ \@@_opt_varname_type:enn
+ { \l_@@_setup_type_tl }
+ { endrangefunc } { tl }
+ }
+ { @@_get_endrange_property }
+ \tl_set:cn
+ {
+ \@@_opt_varname_type:enn
+ { \l_@@_setup_type_tl }
+ { endrangeprop } { tl }
+ }
+ {#1}
+ }
+ }
+ }
+ } ,
+ endrange .value_required:n = true ,
+ }
+\keys_define:nn { zref-clever/typesetup }
+ {
refpre .code:n =
{
% NOTE Option deprecated in 2022-01-10 for v0.1.2-alpha.
@@ -3627,6 +4440,247 @@
}
\keys_define:nn { zref-clever/langsetup }
{
+ endrange .code:n =
+ {
+ \str_case:nnF {#1}
+ {
+ { ref }
+ {
+ \tl_if_empty:NTF \l_@@_setup_type_tl
+ {
+ \tl_gclear:c
+ {
+ \@@_opt_varname_lang_default:enn
+ { \l_@@_setup_language_tl }
+ { endrangefunc } { tl }
+ }
+ \tl_gclear:c
+ {
+ \@@_opt_varname_lang_default:enn
+ { \l_@@_setup_language_tl }
+ { endrangeprop } { tl }
+ }
+ }
+ {
+ \tl_gclear:c
+ {
+ \@@_opt_varname_lang_type:eenn
+ { \l_@@_setup_language_tl }
+ { \l_@@_setup_type_tl }
+ { endrangefunc } { tl }
+ }
+ \tl_gclear:c
+ {
+ \@@_opt_varname_lang_type:eenn
+ { \l_@@_setup_language_tl }
+ { \l_@@_setup_type_tl }
+ { endrangeprop } { tl }
+ }
+ }
+ }
+
+ { stripprefix }
+ {
+ \tl_if_empty:NTF \l_@@_setup_type_tl
+ {
+ \tl_gset:cn
+ {
+ \@@_opt_varname_lang_default:enn
+ { \l_@@_setup_language_tl }
+ { endrangefunc } { tl }
+ }
+ { @@_get_endrange_stripprefix }
+ \tl_gclear:c
+ {
+ \@@_opt_varname_lang_default:enn
+ { \l_@@_setup_language_tl }
+ { endrangeprop } { tl }
+ }
+ }
+ {
+ \tl_gset:cn
+ {
+ \@@_opt_varname_lang_type:eenn
+ { \l_@@_setup_language_tl }
+ { \l_@@_setup_type_tl }
+ { endrangefunc } { tl }
+ }
+ { @@_get_endrange_stripprefix }
+ \tl_gclear:c
+ {
+ \@@_opt_varname_lang_type:eenn
+ { \l_@@_setup_language_tl }
+ { \l_@@_setup_type_tl }
+ { endrangeprop } { tl }
+ }
+ }
+ }
+
+ { pagecomp }
+ {
+ \tl_if_empty:NTF \l_@@_setup_type_tl
+ {
+ \tl_gset:cn
+ {
+ \@@_opt_varname_lang_default:enn
+ { \l_@@_setup_language_tl }
+ { endrangefunc } { tl }
+ }
+ { @@_get_endrange_pagecomp }
+ \tl_gclear:c
+ {
+ \@@_opt_varname_lang_default:enn
+ { \l_@@_setup_language_tl }
+ { endrangeprop } { tl }
+ }
+ }
+ {
+ \tl_gset:cn
+ {
+ \@@_opt_varname_lang_type:eenn
+ { \l_@@_setup_language_tl }
+ { \l_@@_setup_type_tl }
+ { endrangefunc } { tl }
+ }
+ { @@_get_endrange_pagecomp }
+ \tl_gclear:c
+ {
+ \@@_opt_varname_lang_type:eenn
+ { \l_@@_setup_language_tl }
+ { \l_@@_setup_type_tl }
+ { endrangeprop } { tl }
+ }
+ }
+ }
+
+ { pagecomp2 }
+ {
+ \tl_if_empty:NTF \l_@@_setup_type_tl
+ {
+ \tl_gset:cn
+ {
+ \@@_opt_varname_lang_default:enn
+ { \l_@@_setup_language_tl }
+ { endrangefunc } { tl }
+ }
+ { @@_get_endrange_pagecomptwo }
+ \tl_gclear:c
+ {
+ \@@_opt_varname_lang_default:enn
+ { \l_@@_setup_language_tl }
+ { endrangeprop } { tl }
+ }
+ }
+ {
+ \tl_gset:cn
+ {
+ \@@_opt_varname_lang_type:eenn
+ { \l_@@_setup_language_tl }
+ { \l_@@_setup_type_tl }
+ { endrangefunc } { tl }
+ }
+ { @@_get_endrange_pagecomptwo }
+ \tl_gclear:c
+ {
+ \@@_opt_varname_lang_type:eenn
+ { \l_@@_setup_language_tl }
+ { \l_@@_setup_type_tl }
+ { endrangeprop } { tl }
+ }
+ }
+ }
+
+ { unset }
+ {
+ \tl_if_empty:NTF \l_@@_setup_type_tl
+ {
+ \@@_opt_tl_gunset:c
+ {
+ \@@_opt_varname_lang_default:enn
+ { \l_@@_setup_language_tl }
+ { endrangefunc } { tl }
+ }
+ \@@_opt_tl_gunset:c
+ {
+ \@@_opt_varname_lang_default:enn
+ { \l_@@_setup_language_tl }
+ { endrangeprop } { tl }
+ }
+ }
+ {
+ \@@_opt_tl_gunset:c
+ {
+ \@@_opt_varname_lang_type:eenn
+ { \l_@@_setup_language_tl }
+ { \l_@@_setup_type_tl }
+ { endrangefunc } { tl }
+ }
+ \@@_opt_tl_gunset:c
+ {
+ \@@_opt_varname_lang_type:eenn
+ { \l_@@_setup_language_tl }
+ { \l_@@_setup_type_tl }
+ { endrangeprop } { tl }
+ }
+ }
+ }
+ }
+ {
+ \tl_if_empty:nTF {#1}
+ {
+ \msg_warning:nnn { zref-clever }
+ { endrange-property-undefined } {#1}
+ }
+ {
+ \zref@ifpropundefined {#1}
+ {
+ \msg_warning:nnn { zref-clever }
+ { endrange-property-undefined } {#1}
+ }
+ {
+ \tl_if_empty:NTF \l_@@_setup_type_tl
+ {
+ \tl_gset:cn
+ {
+ \@@_opt_varname_lang_default:enn
+ { \l_@@_setup_language_tl }
+ { endrangefunc } { tl }
+ }
+ { @@_get_endrange_property }
+ \tl_gset:cn
+ {
+ \@@_opt_varname_lang_default:enn
+ { \l_@@_setup_language_tl }
+ { endrangeprop } { tl }
+ }
+ {#1}
+ }
+ {
+ \tl_gset:cn
+ {
+ \@@_opt_varname_lang_type:eenn
+ { \l_@@_setup_language_tl }
+ { \l_@@_setup_type_tl }
+ { endrangefunc } { tl }
+ }
+ { @@_get_endrange_property }
+ \tl_gset:cn
+ {
+ \@@_opt_varname_lang_type:eenn
+ { \l_@@_setup_language_tl }
+ { \l_@@_setup_type_tl }
+ { endrangeprop } { tl }
+ }
+ {#1}
+ }
+ }
+ }
+ }
+ } ,
+ endrange .value_required:n = true ,
+ }
+\keys_define:nn { zref-clever/langsetup }
+ {
refpre .code:n =
{
% NOTE Option deprecated in 2022-01-10 for v0.1.2-alpha.
@@ -4207,7 +5261,7 @@
\bool_set_false:N \l_@@_sort_decided_bool
% First we check if there's any "external document" difference (coming
- % from 'zref-xr') and, if so, sort based on that.
+ % from `zref-xr') and, if so, sort based on that.
\tl_if_eq:NNF
\l_@@_label_extdoc_a_tl
\l_@@_label_extdoc_b_tl
@@ -4589,6 +5643,8 @@
% \l_@@_range_count_int ,
% \l_@@_range_same_count_int ,
% \l_@@_range_beg_label_tl ,
+% \l_@@_range_beg_is_first_bool ,
+% \l_@@_range_end_ref_tl ,
% \l_@@_next_maybe_range_bool ,
% \l_@@_next_is_same_bool ,
% }
@@ -4597,6 +5653,8 @@
\int_new:N \l_@@_range_count_int
\int_new:N \l_@@_range_same_count_int
\tl_new:N \l_@@_range_beg_label_tl
+\bool_new:N \l_@@_range_beg_is_first_bool
+\tl_new:N \l_@@_range_end_ref_tl
\bool_new:N \l_@@_next_maybe_range_bool
\bool_new:N \l_@@_next_is_same_bool
% \end{macrocode}
@@ -4614,8 +5672,11 @@
% \l_@@_rangesep_tl ,
% \l_@@_namefont_tl ,
% \l_@@_reffont_tl ,
+% \l_@@_endrangefunc_tl ,
+% \l_@@_endrangeprop_tl ,
% \l_@@_cap_bool ,
% \l_@@_abbrev_bool ,
+% \l_@@_rangetopair_bool ,
% }
% Auxiliary variables for \cs{@@_typeset_refs:} separators, and font and
% other options.
@@ -4630,8 +5691,11 @@
\tl_new:N \l_@@_rangesep_tl
\tl_new:N \l_@@_namefont_tl
\tl_new:N \l_@@_reffont_tl
+\tl_new:N \l_@@_endrangefunc_tl
+\tl_new:N \l_@@_endrangeprop_tl
\bool_new:N \l_@@_cap_bool
\bool_new:N \l_@@_abbrev_bool
+\bool_new:N \l_@@_rangetopair_bool
% \end{macrocode}
% \end{macro}
%
@@ -4692,11 +5756,13 @@
\tl_clear:N \l_@@_type_first_label_tl
\tl_clear:N \l_@@_type_first_label_type_tl
\tl_clear:N \l_@@_range_beg_label_tl
+ \tl_clear:N \l_@@_range_end_ref_tl
\int_zero:N \l_@@_label_count_int
\int_zero:N \l_@@_type_count_int
\int_zero:N \l_@@_ref_count_int
\int_zero:N \l_@@_range_count_int
\int_zero:N \l_@@_range_same_count_int
+ \bool_set_false:N \l_@@_range_beg_is_first_bool
\bool_set_false:N \l_@@_type_first_refbounds_set_bool
% Get type block options (not type-specific).
@@ -4771,9 +5837,9 @@
}
% Handle warnings in case of reference or type undefined.
- % Test: 'zc-typeset01.lvt': "Typeset refs: warn ref undefined"
+ % Test: `zc-typeset01.lvt': "Typeset refs: warn ref undefined"
\zref@refused { \l_@@_label_a_tl }
- % Test: 'zc-typeset01.lvt': "Typeset refs: warn missing type"
+ % Test: `zc-typeset01.lvt': "Typeset refs: warn missing type"
\zref@ifrefundefined { \l_@@_label_a_tl }
{}
{
@@ -4825,6 +5891,14 @@
{ \l_@@_label_type_a_tl }
{ \l_@@_ref_language_tl }
\l_@@_reffont_tl
+ \@@_get_rf_opt_tl:nxxN { endrangefunc }
+ { \l_@@_label_type_a_tl }
+ { \l_@@_ref_language_tl }
+ \l_@@_endrangefunc_tl
+ \@@_get_rf_opt_tl:nxxN { endrangeprop }
+ { \l_@@_label_type_a_tl }
+ { \l_@@_ref_language_tl }
+ \l_@@_endrangeprop_tl
\@@_get_rf_opt_bool:nnxxN { cap } { false }
{ \l_@@_label_type_a_tl }
{ \l_@@_ref_language_tl }
@@ -4833,6 +5907,10 @@
{ \l_@@_label_type_a_tl }
{ \l_@@_ref_language_tl }
\l_@@_abbrev_bool
+ \@@_get_rf_opt_bool:nnxxN { rangetopair } { true }
+ { \l_@@_label_type_a_tl }
+ { \l_@@_ref_language_tl }
+ \l_@@_rangetopair_bool
\@@_get_rf_opt_seq:nxxN { refbounds-first }
{ \l_@@_label_type_a_tl }
{ \l_@@_ref_language_tl }
@@ -4910,7 +5988,7 @@
{
% It is the last label of its type, but also the first one, and that's
% what matters here: just store it.
- % Test: 'zc-typeset01.lvt': "Last of type: single"
+ % Test: `zc-typeset01.lvt': "Last of type: single"
{ 0 }
{
\tl_set:NV \l_@@_type_first_label_tl
@@ -4923,7 +6001,7 @@
}
% The last is the second: we have a pair (if not repeated).
- % Test: 'zc-typeset01.lvt': "Last of type: pair"
+ % Test: `zc-typeset01.lvt': "Last of type: pair"
{ 1 }
{
\int_compare:nNnTF { \l_@@_range_same_count_int } = { 1 }
@@ -4951,7 +6029,7 @@
\int_case:nnF { \l_@@_range_count_int }
{
% There was no range going on.
- % Test: 'zc-typeset01.lvt': "Last of type: not range"
+ % Test: `zc-typeset01.lvt': "Last of type: not range"
{ 0 }
{
\int_compare:nNnTF { \l_@@_ref_count_int } < { 2 }
@@ -4973,15 +6051,15 @@
}
}
% Last in the range is also the second in it.
- % Test: 'zc-typeset01.lvt': "Last of type: pair in sequence"
+ % Test: `zc-typeset01.lvt': "Last of type: pair in sequence"
{ 1 }
{
\int_compare:nNnTF
{ \l_@@_range_same_count_int } = { 1 }
{
- % We know `range_beg_label' is not empty, since this is the
- % second element in the range, but the third or more in the
- % type list.
+ % We know `range_beg_is_first_bool' is false, since this is
+ % the second element in the range, but the third or more in
+ % the type list.
\tl_put_right:Nx \l_@@_typeset_queue_curr_tl
{
\exp_not:V \l_@@_pairsep_tl
@@ -5017,13 +6095,13 @@
}
{
% Repetition, not a range.
- % Test: 'zc-typeset01.lvt': "Last of type: range to one"
+ % Test: `zc-typeset01.lvt': "Last of type: range to one"
{ 0 }
{
- % If `range_beg_label' is empty, it means it was also the
- % first of the type, and hence its typesetting was already
- % handled, and we just have to set refbounds.
- \tl_if_empty:VTF \l_@@_range_beg_label_tl
+ % If `range_beg_is_first_bool' is true, it means it was also
+ % the first of the type, and hence its typesetting was
+ % already handled, and we just have to set refbounds.
+ \bool_if:NTF \l_@@_range_beg_is_first_bool
{
\seq_set_eq:NN \l_@@_type_first_refbounds_seq
\l_@@_refbounds_first_sg_seq
@@ -5055,11 +6133,11 @@
}
% A `range', but with no skipped value, treat as pair if range
% started with first of type, otherwise as list.
- % Test: 'zc-typeset01.lvt': "Last of type: range to pair"
+ % Test: `zc-typeset01.lvt': "Last of type: range to pair"
{ 1 }
{
% Ditto.
- \tl_if_empty:VTF \l_@@_range_beg_label_tl
+ \bool_if:NTF \l_@@_range_beg_is_first_bool
{
\seq_set_eq:NN \l_@@_type_first_refbounds_seq
\l_@@_refbounds_first_pb_seq
@@ -5091,9 +6169,9 @@
}
{
% An actual range.
- % Test: 'zc-typeset01.lvt': "Last of type: range"
+ % Test: `zc-typeset01.lvt': "Last of type: range"
% Ditto.
- \tl_if_empty:VTF \l_@@_range_beg_label_tl
+ \bool_if:NTF \l_@@_range_beg_is_first_bool
{
\seq_set_eq:NN \l_@@_type_first_refbounds_seq
\l_@@_refbounds_first_rb_seq
@@ -5127,11 +6205,30 @@
}
}
}
- \tl_put_right:Nx \l_@@_typeset_queue_curr_tl
+ \bool_lazy_and:nnTF
+ { ! \tl_if_empty_p:N \l_@@_endrangefunc_tl }
+ { \cs_if_exist_p:c { \l_@@_endrangefunc_tl :VVN } }
{
- \exp_not:V \l_@@_rangesep_tl
- \@@_get_ref:VN \l_@@_label_a_tl
- \l_@@_refbounds_last_re_seq
+ \use:c { \l_@@_endrangefunc_tl :VVN }
+ \l_@@_range_beg_label_tl
+ \l_@@_label_a_tl
+ \l_@@_range_end_ref_tl
+ \tl_put_right:Nx \l_@@_typeset_queue_curr_tl
+ {
+ \exp_not:V \l_@@_rangesep_tl
+ \@@_get_ref_endrange:VVN
+ \l_@@_label_a_tl
+ \l_@@_range_end_ref_tl
+ \l_@@_refbounds_last_re_seq
+ }
+ }
+ {
+ \tl_put_right:Nx \l_@@_typeset_queue_curr_tl
+ {
+ \exp_not:V \l_@@_rangesep_tl
+ \@@_get_ref:VN \l_@@_label_a_tl
+ \l_@@_refbounds_last_re_seq
+ }
}
}
}
@@ -5154,15 +6251,18 @@
}
{
\bool_set_false:N \l_@@_next_maybe_range_bool
- \zref@ifrefundefined { \l_@@_type_first_label_tl }
- { }
+ \bool_if:NT \l_@@_rangetopair_bool
{
- \@@_labels_in_sequence:nn
- { \l_@@_type_first_label_tl }
- { \l_@@_label_a_tl }
+ \zref@ifrefundefined { \l_@@_type_first_label_tl }
+ { }
+ {
+ \@@_labels_in_sequence:nn
+ { \l_@@_type_first_label_tl }
+ { \l_@@_label_a_tl }
+ }
}
- % Test: 'zc-typeset01.lvt': "Last of type: option range"
- % Test: 'zc-typeset01.lvt': "Last of type: option range to pair"
+ % Test: `zc-typeset01.lvt': "Last of type: option range"
+ % Test: `zc-typeset01.lvt': "Last of type: option range to pair"
\bool_if:NTF \l_@@_next_maybe_range_bool
{
\tl_set:Nx \l_@@_typeset_queue_curr_tl
@@ -5176,11 +6276,34 @@
\bool_set_true:N \l_@@_type_first_refbounds_set_bool
}
{
- \tl_set:Nx \l_@@_typeset_queue_curr_tl
+ \bool_lazy_and:nnTF
+ { ! \tl_if_empty_p:N \l_@@_endrangefunc_tl }
+ { \cs_if_exist_p:c { \l_@@_endrangefunc_tl :VVN } }
{
- \exp_not:V \l_@@_rangesep_tl
- \@@_get_ref:VN \l_@@_label_a_tl
- \l_@@_refbounds_last_re_seq
+ % We must get `type_first_label_tl' instead of
+ % `range_beg_label_tl' here, since it is not necessary
+ % that the first of type was actually starting a range for
+ % the `range' option to be used.
+ \use:c { \l_@@_endrangefunc_tl :VVN }
+ \l_@@_type_first_label_tl
+ \l_@@_label_a_tl
+ \l_@@_range_end_ref_tl
+ \tl_set:Nx \l_@@_typeset_queue_curr_tl
+ {
+ \exp_not:V \l_@@_rangesep_tl
+ \@@_get_ref_endrange:VVN
+ \l_@@_label_a_tl
+ \l_@@_range_end_ref_tl
+ \l_@@_refbounds_last_re_seq
+ }
+ }
+ {
+ \tl_set:Nx \l_@@_typeset_queue_curr_tl
+ {
+ \exp_not:V \l_@@_rangesep_tl
+ \@@_get_ref:VN \l_@@_label_a_tl
+ \l_@@_refbounds_last_re_seq
+ }
}
\seq_set_eq:NN \l_@@_type_first_refbounds_seq
\l_@@_refbounds_first_rb_seq
@@ -5210,7 +6333,7 @@
{
\bool_if:NTF \l_@@_typeset_ref_bool
{
- % Test: 'zc-typeset01.lvt': "Last of type: option typeset ref"
+ % Test: `zc-typeset01.lvt': "Last of type: option typeset ref"
\tl_put_left:Nx \l_@@_typeset_queue_curr_tl
{
\@@_get_ref:VN \l_@@_type_first_label_tl
@@ -5220,14 +6343,14 @@
{
\bool_if:NTF \l_@@_typeset_name_bool
{
- % Test: 'zc-typeset01.lvt': "Last of type: option typeset name"
+ % Test: `zc-typeset01.lvt': "Last of type: option typeset name"
\tl_set:Nx \l_@@_typeset_queue_curr_tl
{
\bool_if:NTF \l_@@_name_in_link_bool
{
\exp_not:N \group_begin:
\exp_not:V \l_@@_namefont_tl
- % It's two '@s', but escaped for DocStrip.
+ % It's two `@s', but escaped for DocStrip.
\exp_not:N \hyper@@@@link
{
\@@_extract_url_unexp:V
@@ -5254,7 +6377,7 @@
% it should not occur, given that the options are set up to
% typeset either "ref" or "name". Still, leave here a
% sensible fallback, equal to the behavior of "both".
- % Test: 'zc-typeset01.lvt': "Last of type: option typeset none"
+ % Test: `zc-typeset01.lvt': "Last of type: option typeset none"
\tl_put_left:Nx \l_@@_typeset_queue_curr_tl
{ \@@_get_ref_first: }
}
@@ -5280,11 +6403,11 @@
\int_case:nnF { \l_@@_type_count_int }
{
% Single type.
- % Test: 'zc-typeset01.lvt': "Last of type: single type"
+ % Test: `zc-typeset01.lvt': "Last of type: single type"
{ 0 }
{ \l_@@_typeset_queue_curr_tl }
% Pair of types.
- % Test: 'zc-typeset01.lvt': "Last of type: pair of types"
+ % Test: `zc-typeset01.lvt': "Last of type: pair of types"
{ 1 }
{
\l_@@_tpairsep_tl
@@ -5293,7 +6416,7 @@
}
{
% Last in list of types.
- % Test: 'zc-typeset01.lvt': "Last of type: list of types"
+ % Test: `zc-typeset01.lvt': "Last of type: list of types"
\l_@@_tlastsep_tl
\l_@@_typeset_queue_curr_tl
}
@@ -5314,11 +6437,13 @@
\tl_clear:N \l_@@_type_first_label_tl
\tl_clear:N \l_@@_type_first_label_type_tl
\tl_clear:N \l_@@_range_beg_label_tl
+ \tl_clear:N \l_@@_range_end_ref_tl
\int_zero:N \l_@@_label_count_int
\int_zero:N \l_@@_ref_count_int
\int_incr:N \l_@@_type_count_int
\int_zero:N \l_@@_range_count_int
\int_zero:N \l_@@_range_same_count_int
+ \bool_set_false:N \l_@@_range_beg_is_first_bool
\bool_set_false:N \l_@@_type_first_refbounds_set_bool
}
}
@@ -5356,13 +6481,16 @@
\l_@@_label_type_a_tl
\int_incr:N \l_@@_ref_count_int
- % If the next label may be part of a range, we set `range_beg_label'
- % to "empty" (we deal with it as the "first", and must do it there, to
- % handle hyperlinking), but also step the range counters.
- % Test: 'zc-typeset01.lvt': "Not last of type: first is range"
+ % If the next label may be part of a range, signal it (we deal with it
+ % as the "first", and must do it there, to handle hyperlinking), but
+ % also step the range counters.
+ % Test: `zc-typeset01.lvt': "Not last of type: first is range"
\bool_if:NT \l_@@_next_maybe_range_bool
{
- \tl_clear:N \l_@@_range_beg_label_tl
+ \bool_set_true:N \l_@@_range_beg_is_first_bool
+ \tl_set:NV \l_@@_range_beg_label_tl
+ \l_@@_label_a_tl
+ \tl_clear:N \l_@@_range_end_ref_tl
\int_incr:N \l_@@_range_count_int
\bool_if:NT \l_@@_next_is_same_bool
{ \int_incr:N \l_@@_range_same_count_int }
@@ -5379,6 +6507,7 @@
% There was no range going, we are starting one.
\tl_set:NV \l_@@_range_beg_label_tl
\l_@@_label_a_tl
+ \tl_clear:N \l_@@_range_end_ref_tl
\int_incr:N \l_@@_range_count_int
\bool_if:NT \l_@@_next_is_same_bool
{ \int_incr:N \l_@@_range_same_count_int }
@@ -5396,7 +6525,7 @@
\int_case:nnF { \l_@@_range_count_int }
{
% There was no range going on.
- % Test: 'zc-typeset01.lvt': "Not last of type: no range"
+ % Test: `zc-typeset01.lvt': "Not last of type: no range"
{ 0 }
{
\int_incr:N \l_@@_ref_count_int
@@ -5410,11 +6539,11 @@
% Last is second in the range: if `range_same_count' is also
% `1', it's a repetition (drop it), otherwise, it's a "pair
% within a list", treat as list.
- % Test: 'zc-typeset01.lvt': "Not last of type: range pair to one"
- % Test: 'zc-typeset01.lvt': "Not last of type: range pair"
+ % Test: `zc-typeset01.lvt': "Not last of type: range pair to one"
+ % Test: `zc-typeset01.lvt': "Not last of type: range pair"
{ 1 }
{
- \tl_if_empty:VTF \l_@@_range_beg_label_tl
+ \bool_if:NTF \l_@@_range_beg_is_first_bool
{
\seq_set_eq:NN \l_@@_type_first_refbounds_seq
\l_@@_refbounds_first_seq
@@ -5456,10 +6585,10 @@
\l_@@_range_same_count_int
}
{
- % Test: 'zc-typeset01.lvt': "Not last of type: range to one"
+ % Test: `zc-typeset01.lvt': "Not last of type: range to one"
{ 0 }
{
- \tl_if_empty:VTF \l_@@_range_beg_label_tl
+ \bool_if:NTF \l_@@_range_beg_is_first_bool
{
\seq_set_eq:NN
\l_@@_type_first_refbounds_seq
@@ -5478,10 +6607,10 @@
}
}
}
- % Test: 'zc-typeset01.lvt': "Not last of type: range to pair"
+ % Test: `zc-typeset01.lvt': "Not last of type: range to pair"
{ 1 }
{
- \tl_if_empty:VTF \l_@@_range_beg_label_tl
+ \bool_if:NTF \l_@@_range_beg_is_first_bool
{
\seq_set_eq:NN
\l_@@_type_first_refbounds_seq
@@ -5509,8 +6638,8 @@
}
}
{
- % Test: 'zc-typeset01.lvt': "Not last of type: range"
- \tl_if_empty:VTF \l_@@_range_beg_label_tl
+ % Test: `zc-typeset01.lvt': "Not last of type: range"
+ \bool_if:NTF \l_@@_range_beg_is_first_bool
{
\seq_set_eq:NN
\l_@@_type_first_refbounds_seq
@@ -5529,15 +6658,34 @@
}
}
% For the purposes of the serial comma, and thus for the
- % distinction of 'lastsep' and 'pairsep', a "range" counts
- % as one. Since 'range_beg' has already been counted
+ % distinction of `lastsep' and `pairsep', a "range" counts
+ % as one. Since `range_beg' has already been counted
% (here or with the first of type), we refrain from
- % incrementing 'ref_count_int'.
- \tl_put_right:Nx \l_@@_typeset_queue_curr_tl
+ % incrementing `ref_count_int'.
+ \bool_lazy_and:nnTF
+ { ! \tl_if_empty_p:N \l_@@_endrangefunc_tl }
+ { \cs_if_exist_p:c { \l_@@_endrangefunc_tl :VVN } }
{
- \exp_not:V \l_@@_rangesep_tl
- \@@_get_ref:VN \l_@@_label_a_tl
- \l_@@_refbounds_mid_re_seq
+ \use:c { \l_@@_endrangefunc_tl :VVN }
+ \l_@@_range_beg_label_tl
+ \l_@@_label_a_tl
+ \l_@@_range_end_ref_tl
+ \tl_put_right:Nx \l_@@_typeset_queue_curr_tl
+ {
+ \exp_not:V \l_@@_rangesep_tl
+ \@@_get_ref_endrange:VVN
+ \l_@@_label_a_tl
+ \l_@@_range_end_ref_tl
+ \l_@@_refbounds_mid_re_seq
+ }
+ }
+ {
+ \tl_put_right:Nx \l_@@_typeset_queue_curr_tl
+ {
+ \exp_not:V \l_@@_rangesep_tl
+ \@@_get_ref:VN \l_@@_label_a_tl
+ \l_@@_refbounds_mid_re_seq
+ }
}
}
}
@@ -5599,7 +6747,8 @@
% \begin{macro}{\@@_get_ref:nN}
% Handles a complete reference block to be accumulated in the ``queue'',
% including refbounds, and hyperlinking. For use with all labels, except
-% the first of its type, which is done by \cs{@@_get_ref_first:}.
+% the first of its type, which is done by \cs{@@_get_ref_first:}, and the
+% last of a range, which is done by \cs{@@_get_ref_endrange:nnN}.
% \begin{syntax}
% \cs{@@_get_ref:nN} \Arg{label} \Arg{refbounds}
% \end{syntax}
@@ -5648,6 +6797,53 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\@@_get_ref_endrange:nnN}
+% \begin{syntax}
+% \cs{@@_get_ref_endrange:nnN} \Arg{label} \Arg{reference} \Arg{refbounds}
+% \end{syntax}
+% \begin{macrocode}
+\cs_new:Npn \@@_get_ref_endrange:nnN #1#2#3
+ {
+ \str_if_eq:nnTF {#2} { zc@missingproperty }
+ { \@@_ref_default: }
+ {
+ \bool_if:nTF
+ {
+ \l_@@_hyperlink_bool &&
+ ! \l_@@_link_star_bool
+ }
+ {
+ \exp_not:N \group_begin:
+ \exp_not:V \l_@@_reffont_tl
+ \seq_item:Nn #3 { 1 }
+ % It's two `@s', but escaped for DocStrip.
+ \exp_not:N \hyper@@@@link
+ { \@@_extract_url_unexp:n {#1} }
+ { \@@_extract_unexp:nnn {#1} { anchor } { } }
+ {
+ \seq_item:Nn #3 { 2 }
+ \exp_not:n {#2}
+ \seq_item:Nn #3 { 3 }
+ }
+ \seq_item:Nn #3 { 4 }
+ \exp_not:N \group_end:
+ }
+ {
+ \exp_not:N \group_begin:
+ \exp_not:V \l_@@_reffont_tl
+ \seq_item:Nn #3 { 1 }
+ \seq_item:Nn #3 { 2 }
+ \exp_not:n {#2}
+ \seq_item:Nn #3 { 3 }
+ \seq_item:Nn #3 { 4 }
+ \exp_not:N \group_end:
+ }
+ }
+ }
+\cs_generate_variant:Nn \@@_get_ref_endrange:nnN { VVN }
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\@@_get_ref_first:}
% Handles a complete reference block for the first label of its type to be
% accumulated in the ``queue'', including ``pre'' and ``pos'' elements,
@@ -5738,7 +6934,7 @@
\exp_not:V \l_@@_reffont_tl
\seq_item:Nn
\l_@@_type_first_refbounds_seq { 1 }
- % It's two '@s', but escaped for DocStrip.
+ % It's two `@s', but escaped for DocStrip.
\exp_not:N \hyper@@@@link
{
\@@_extract_url_unexp:V
@@ -6071,14 +7267,9 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_labels_in_sequence:nn #1#2
{
- \@@_extract_default:Nnnn \l_@@_label_extdoc_a_tl
- {#1} { externaldocument } { }
- \@@_extract_default:Nnnn \l_@@_label_extdoc_b_tl
- {#2} { externaldocument } { }
-
- \tl_if_eq:NNT
- \l_@@_label_extdoc_a_tl
- \l_@@_label_extdoc_b_tl
+ \exp_args:Nxx \tl_if_eq:nnT
+ { \@@_extract_unexp:nnn {#1} { externaldocument } { } }
+ { \@@_extract_unexp:nnn {#2} { externaldocument } { } }
{
\tl_if_eq:NnTF \l_@@_ref_property_tl { page }
{
@@ -6123,8 +7314,14 @@
=
{ \@@_extract:nnn {#2} { zc@cntval } { -1 } }
{
- \bool_set_true:N
- \l_@@_next_maybe_range_bool
+% \end{macrocode}
+% If \texttt{zc@counter}s are equal, \texttt{zc@enclval}s are equal, and
+% \texttt{zc@enclval}s are equal, but the references themselves are different,
+% this means that \cs{@currentlabel} has somehow been set manually (e.g. by an
+% \pkg{amsmath}'s \cs{tag}), in which case we have no idea what's in there,
+% and we should not even consider this is still a range. If they are equal,
+% though, of course it is a range, and it is the same.
+% \begin{macrocode}
\exp_args:Nxx \tl_if_eq:nnT
{
\@@_extract_unexp:nvn {#1}
@@ -6136,6 +7333,8 @@
}
{
\bool_set_true:N
+ \l_@@_next_maybe_range_bool
+ \bool_set_true:N
\l_@@_next_is_same_bool
}
}
@@ -6720,9 +7919,10 @@
% and subsequent discussion. So, for \env{subequations}, we really must
% specify manually \opt{currentcounter} and the resetting. Note that, for
% \env{subequations}, \cs{zlabel} works just fine (that is, if given
-% immediately after \texttt{\\begin\{subequations\}}, to refer to the
-% parent equation).
+% immediately after \texttt{\textbackslash{}begin\{subequations\}}, to refer
+% to the parent equation).
% \begin{macrocode}
+ \bool_new:N \l_@@_amsmath_subequations_bool
\AddToHook { env / subequations / begin }
{
\@@_zcsetup:x
@@ -6736,6 +7936,7 @@
currentcounter = parentequation ,
countertype = { parentequation = equation } ,
}
+ \bool_set_true:N \l_@@_amsmath_subequations_bool
}
% \end{macrocode}
% \pkg{amsmath} does use \cs{refstepcounter} for the \texttt{equation} counter
@@ -6750,8 +7951,12 @@
% environments ``must appear within an enclosing math environment''. Same
% logic applies to other environments defined or redefined by the package,
% like \env{array}, \env{matrix} and variations. Finally, \env{split} too can
-% only be used as part of another environment.
+% only be used as part of another environment. We also arrange, at this
+% point, for the provision of the \texttt{subeq} property, for the convenience
+% of referring to them directly or to build terse ranges with the
+% \opt{endrange} option.
% \begin{macrocode}
+ \zref@newprop { subeq } { \alph { equation } }
\clist_map_inline:nn
{
equation ,
@@ -6771,7 +7976,11 @@
}
{
\AddToHook { env / #1 / begin }
- { \@@_zcsetup:n { currentcounter = equation } }
+ {
+ \@@_zcsetup:n { currentcounter = equation }
+ \bool_if:NT \l_@@_amsmath_subequations_bool
+ { \zref@localaddprop \ZREF@mainlist { subeq } }
+ }
}
% \end{macrocode}
% And a last touch of care for \pkg{amsmath}'s refinements: make the equation
@@ -6867,6 +8076,7 @@
% for incrementing the equation counters (see
% \url{https://tex.stackexchange.com/a/241150}).
% \begin{macrocode}
+ \bool_new:N \l_@@_breqn_dgroup_bool
\AddToHook { env / dgroup / begin }
{
\@@_zcsetup:x
@@ -6880,7 +8090,11 @@
currentcounter = parentequation ,
countertype = { parentequation = equation } ,
}
+ \bool_set_true:N \l_@@_breqn_dgroup_bool
}
+ \zref@ifpropundefined { subeq }
+ { \zref@newprop { subeq } { \alph { equation } } }
+ { }
\clist_map_inline:nn
{
dmath ,
@@ -6889,7 +8103,11 @@
}
{
\AddToHook { env / #1 / begin }
- { \@@_zcsetup:n { currentcounter = equation } }
+ {
+ \@@_zcsetup:n { currentcounter = equation }
+ \bool_if:NT \l_@@_breqn_dgroup_bool
+ { \zref@localaddprop \ZREF@mainlist { subeq } }
+ }
}
\msg_info:nnn { zref-clever } { compat-package } { breqn }
}
@@ -7154,6 +8372,7 @@ type = page ,
Name-pl = Pages ,
name-pl = pages ,
rangesep = {\textendash} ,
+ rangetopair = false ,
type = line ,
Name-sg = Line ,
@@ -7436,6 +8655,7 @@ type = page ,
Name-sg = Seite ,
Name-pl = Seiten ,
rangesep = {\textendash} ,
+ rangetopair = false ,
type = line ,
gender = f ,
@@ -7853,6 +9073,7 @@ type = page ,
Name-pl = Pages ,
name-pl = pages ,
rangesep = {-} ,
+ rangetopair = false ,
type = line ,
gender = f ,
@@ -8094,6 +9315,7 @@ type = page ,
Name-pl = Páginas ,
name-pl = páginas ,
rangesep = {\textendash} ,
+ rangetopair = false ,
type = line ,
gender = f ,
@@ -8333,6 +9555,7 @@ type = page ,
Name-pl = Páginas ,
name-pl = páginas ,
rangesep = {\textendash} ,
+ rangetopair = false ,
type = line ,
gender = f ,
@@ -8566,6 +9789,7 @@ type = page ,
Name-pl = Pagina's ,
name-pl = pagina's ,
rangesep = {\textendash} ,
+ rangetopair = false ,
type = line ,
gender = m ,
diff --git a/macros/latex/contrib/zref-clever/zref-clever.pdf b/macros/latex/contrib/zref-clever/zref-clever.pdf
index 99292b0570..f623839df6 100644
--- a/macros/latex/contrib/zref-clever/zref-clever.pdf
+++ b/macros/latex/contrib/zref-clever/zref-clever.pdf
Binary files differ
diff --git a/macros/latex/contrib/zref-clever/zref-clever.tex b/macros/latex/contrib/zref-clever/zref-clever.tex
index 64d5028f62..3079e6384a 100644
--- a/macros/latex/contrib/zref-clever/zref-clever.tex
+++ b/macros/latex/contrib/zref-clever/zref-clever.tex
@@ -105,6 +105,11 @@
zcLanguageSetup,
zcRefTypeSetup,
zcheck,
+ zvref,
+ zvpageref,
+ zvrefrange,
+ zvpagerefrange,
+ zfullref,
}
}
\lstset{
@@ -266,14 +271,14 @@ as the main entrance for reference making, whose behavior can be modulated by
local options.
Considering that \pkg{zref} itself offers the \pkg{zref-titleref} module, and
-that the integration with \pkg{zref-check} allows \pkg{zref-clever} to make
-context sensitive references, a significant part of the most prominent
-automation features available to the standard referencing system is thus
-brought to \pkg{zref}, working under a single consistent underlying
-infrastructure and user interface. There are some limitations, of course (see
-\zcref{sec:limitations}), and it may be your cup of tea or not. Still, all in
-all, hopefully \pkg{zref-clever} can make \pkg{zref} more accessible, and
-interesting, to the average user.
+that \pkg{zref-vario} offers integration of \pkg{zref-clever} with
+\pkg{varioref}, a significant part of the most prominent automation features
+available to the standard referencing system is thus brought to \pkg{zref},
+working under a single consistent underlying infrastructure and user
+interface. Alas, there are some limitations (see \zcref{sec:limitations}),
+and it may be your cup of tea or not. Still, all in all, hopefully
+\pkg{zref-clever} can make \pkg{zref} more accessible to the average user, and
+more interesting to users in general.
\section{Warning}
@@ -501,7 +506,43 @@ and defaults to \texttt{true}. The \opt{nocomp} option is a convenience alias
for \texttt{comp=false}. Of course, for better compression results the
\opt{sort} is recommended, but the two options are technically independent.
+\DescribeOption{endrange} %
+The \opt{endrange} option provides additional control over how the end
+reference of a range is typeset, so as to achieve terse ranges. The option
+can operate in two technically different ways. It may receive one of a number
+of predefined values, which can process the end reference of the range,
+comparing it with the beginning reference, to achieve a given end
+result.\footnote{For the \TeX{}nically inclined: those values that perform
+ some processing -- namely \texttt{stripprefix}, \texttt{pagecomp}, and
+ \texttt{pagecomp2} -- fully expand the references (\texttt{x}-type
+ expansion) before comparing them, since it makes sense to perform this task
+ as close as possible to the printed representation of the references. I
+ don't expect this to be a problem in normal use cases, but it does represent
+ a limitation on what the references can contain. In case some control over
+ this is needed, check the \texttt{zref-clever/endrange-setup} hook in the
+ code documentation.} Or, it can specify a label property to be used
+directly, without any processing. The available predefined values are:
+\texttt{ref}, \texttt{stripprefix}, \texttt{pagecomp}, and \texttt{pagecomp2}.
+\texttt{ref} corresponds to the default behavior, and instructs \cs{zcref} to
+use whatever property was set at the \opt{ref} option for the end of range
+reference. \texttt{stripprefix} strips the common part at the start of each
+reference from the end one. \texttt{pagecomp} is the equivalent of
+\texttt{stripprefix} for page numbers, it does the same thing, but only if the
+references are comprised exclusively of Arabic numerals. \texttt{pagecomp2}
+is a variant of \texttt{pagecomp} that leaves at least two digits at the end
+reference (except for a leading zero). If values other than the predefined
+ones are given to \opt{endrange} they are considered as label properties, as
+long as they are declared. This property is used to typeset the end of range
+reference if the label contains it, and if both references would be
+``compressible'' according to the \opt{comp} option, otherwise the property
+specified by the \opt{ref} option is used. This is useful for things like
+sub-elements for which we can build a proper abbreviated sub-reference and
+populate the label with it (some compatibility modules already provide a
+number of such properties, but other ones can be built with \pkg{zref}, as
+needed).
+
\DescribeOption{range} %
+\DescribeOption{rangetopair} %
By default (that is, when the \opt{range} option is not given), \cs{zcref}
typesets a complete list of references according to the \meta{labels} it
received as argument, and only compresses some of them into ranges if the
@@ -510,12 +551,14 @@ immediate sequence. The \opt{range} option makes \cs{zcref} behave
differently. Sorting is implied by this option (the \opt{sort} option is
disregarded) and, for each reference type group in \meta{labels}, \cs{zcref}
builds a range from the first to the last reference in it, even if references
-in between do not occur in immediate sequence. \cs{zcref} is smart enough,
-though, to recognize when the first and last references of a type do happen to
-be contiguous, in which case it typesets a ``pair'', instead of a ``range''.
-It is a boolean option, and the package's default is \texttt{range=false}.
-The option given without a value is equivalent to \texttt{range=true} (in the
-\pkg{l3keys}' jargon, the \emph{option}'s default is \texttt{true}).
+in between do not occur in immediate sequence. It is a boolean option, and
+the package's default is \texttt{range=false}. The option given without a
+value is equivalent to \texttt{range=true} (in the \pkg{l3keys}' jargon, the
+\emph{option}'s default is \texttt{true}). \cs{zcref} is smart enough to
+recognize when the first and last references of a type do happen to be
+contiguous, in which case it typesets a ``pair'', instead of a ``range''. But
+this behavior can be disabled by setting the \opt{rangetopair} option to
+\texttt{false}.
\DescribeOption{cap} %
\DescribeOption{nocap} %
@@ -666,8 +709,14 @@ means this option \emph{can't} be set at load time, as a package option. If
you want to set it globally, use \cs{zcsetup} instead.
\DescribeOption{titleref} %
+\DescribeOption{vario} %
The \opt{titleref} option receives no value and, when given, loads
-\pkg{zref}'s \pkg{zref-titleref} module. This is a preamble only option.
+\pkg{zref}'s \pkg{zref-titleref} module. Similarly, the \opt{vario} option
+loads the \pkg{zref-vario} package. These are a preamble only options. Note
+that \pkg{zref-vario} loads \pkg{varioref}, which has known load order
+interaction with other packages, prominently with \pkg{hyperref}. Hence,
+depending on your document, you may wish to load \pkg{zref-vario} separately,
+instead of through the option.
\DescribeOption{note} %
The \opt{note} option receives as value some text to be typeset at the end of
@@ -847,7 +896,7 @@ the \cs{appendix}.
One more observation about ``reference types'' is due here. A \emph{type} is
not really ``defined'' in the sense a variable or a function is. It is more
-of a ``string'' which \pkg{zref-clever} uses to look for a whole set of
+of a ``name'' which \pkg{zref-clever} uses to look for a whole set of
type-specific reference format options (see \zcref{sec:reference-format}).
Each of these options individually may be ``set'' or not, ``defined'' or not.
And, depending on the setup and the relevant precedence rules for this, some
@@ -908,42 +957,44 @@ more detail soon, and lists the scopes in which each is available.
\centering
\begin{tabular}{l>{\ttfamily}lcccc}
\toprule
- & & General & Type & \multicolumn{2}{c}{Language} \\
- \cmidrule(lr){5-6}
- & & & & Type & Default \\
- & & (i) & (ii) & (iii) & (iv) \\
+ & & General & Type & \multicolumn{2}{c}{Language} \\
+ \cmidrule(lr){5-6}
+ & & & & Type & Default \\
+ & & (i) & (ii) & (iii) & (iv) \\
\midrule
- Typesetting & tpairsep & $\bullet$ & & & $\bullet$ \\
- (necessarily not & tlistsep & $\bullet$ & & & $\bullet$ \\
- type-specific) & tlastsep & $\bullet$ & & & $\bullet$ \\
- & notesep & $\bullet$ & & & $\bullet$ \\
+ Typesetting & tpairsep & $\bullet$ & & & $\bullet$ \\
+ (necessarily not & tlistsep & $\bullet$ & & & $\bullet$ \\
+ type-specific) & tlastsep & $\bullet$ & & & $\bullet$ \\
+ & notesep & $\bullet$ & & & $\bullet$ \\
\addlinespace
- Typesetting & namesep & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ \\
- (possibly & pairsep & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ \\
- type-specific) & listsep & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ \\
- & lastsep & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ \\
- & rangesep & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ \\
- & refbounds & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ \\
+ Typesetting & namesep & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ \\
+ (possibly & pairsep & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ \\
+ type-specific) & listsep & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ \\
+ & lastsep & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ \\
+ & rangesep & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ \\
+ & refbounds & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ \\
\addlinespace
- Typesetting & Name-sg & & $\bullet$ & $\bullet$ & \\
- (necessarily & name-sg & & $\bullet$ & $\bullet$ & \\
- type-specific) & Name-pl & & $\bullet$ & $\bullet$ & \\
- & name-pl & & $\bullet$ & $\bullet$ & \\
- & Name-sg-ab & & $\bullet$ & $\bullet$ & \\
- & name-sg-ab & & $\bullet$ & $\bullet$ & \\
- & Name-pl-ab & & $\bullet$ & $\bullet$ & \\
- & name-pl-ab & & $\bullet$ & $\bullet$ & \\
+ Typesetting & Name-sg & & $\bullet$ & $\bullet$ & \\
+ (necessarily & name-sg & & $\bullet$ & $\bullet$ & \\
+ type-specific) & Name-pl & & $\bullet$ & $\bullet$ & \\
+ & name-pl & & $\bullet$ & $\bullet$ & \\
+ & Name-sg-ab & & $\bullet$ & $\bullet$ & \\
+ & name-sg-ab & & $\bullet$ & $\bullet$ & \\
+ & Name-pl-ab & & $\bullet$ & $\bullet$ & \\
+ & name-pl-ab & & $\bullet$ & $\bullet$ & \\
\addlinespace
- Font & namefont & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ \\
- & reffont & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ \\
+ Font & namefont & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ \\
+ & reffont & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ \\
\addlinespace
- Other & cap & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ \\
- & abbrev & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ \\
+ Other & cap & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ \\
+ & abbrev & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ \\
+ & endrange & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ \\
+ & rangetopair & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ \\
\bottomrule
\end{tabular}
\caption{Reference format options and their scopes}
@@ -1490,71 +1541,40 @@ set around a cross-reference ``task'' we'd like to perform with
\pkg{zref-clever}.
-\subsection{Context sensitive page references}
+\subsection{Extended page references (\pkg{varioref})}
\zctask{Make cross-references to pages which are sensitive to the relative
- position between the reference and the label being referred to.}
-
-It is frequently useful to make a reference to both a document element and its
-page. For example:
-\begin{zcexample}
-\zcref{fig:1} on \zcpageref{fig:1}
-\end{zcexample}
-
-However, while this works well when the object and the reference are somewhat
-distant, we may want to adjust this to something different when the label and
-the reference are close to each other. If both are on the same page, we may
-want to drop the \cs{zcpageref}, or replace it with ``above'' or ``below''.
-And, if both are on contiguous pages, then something like ``on the following
-page'' or ``on the preceding page'' may be preferred. Since we don't usually
-know the relative position of the reference to the label, particularly for
-floats, making these kinds of adjustments manually is an uphill battle, and
-error prone, in the absence of some support for it.
-
-\pkg{zref-clever}'s integration with \pkg{zref-check} offers some assistance
-in making these kinds of references, by providing checks for the relation
-between the reference and the label. For example, you may use:
-\begin{zcexample}
-\zcref[check=nextpage,note={on the following page}]{fig:1}
-\end{zcexample}
-and if \texttt{fig:1} is not on the next page relative to the reference, a
-compilation warning can be issued by \pkg{zref-check} (according to the
-package's options), so that the problem can be easily identified and
-corrected. Evidently, this does not fully automate the typeset results, but
-it does automate the checking that the reference context is the intended one.
-
-And to make use of this feature, one does not need to rely on compiling the
-document, make the reference according to the current state of things, and
-then adjusting it over and over, as the document gets edited. This feature is
-best used within a certain workflow, which starts by making a standard
-reference with a page reference, but adding the \texttt{pagegap} check to it:
-\begin{zcexample}
-\zcref{fig:1} on \zcpageref[check=pagegap]{fig:1}
-\end{zcexample}
+ position between the reference and the label being referred to using
+ \pkg{varioref}.}
-During the initial editing of the document, this reference will be formally
-correct, even if less than ideal in certain cases. At a certain point, when
-you choose to give finishing touches to your document, then you can cater for
-\pkg{zref-check}'s warnings (the package has options to control them, for
-example, enabling warnings only when the \opt{draft} option is not in use).
-The \texttt{pagegap} check will pass if there's one or more pages between the
-reference and the label, in which case, that reference is already what we
-want. However, if the referenced object lies in the previous page, the same
-page, or the next page, the \texttt{pagegap} check will issue a warning. Thus
-telling us if there's an opportunity, or need, to adjust the context
-information of the reference. Then we can go with one of the below, according
-to the situation:
-\begin{zcexample}
-\zcref[check=thispage]{fig:1}
-\zcref[check=above,note={above}]{fig:1}
-\zcref[check=below,note={below}]{fig:1}
-\zcref[check=nextpage,note={on the following page}]{fig:1}
-\zcref[check=prevpage,note={on the preceding page}]{fig:1}
-\zcref[check=facing,note={on the facing page}]{fig:1}
-\end{zcexample}
+\pkg{zref-vario}, which can be enabled with package option \opt{vario}, offers
+a layer of compatibility with \pkg{varioref} and provides
+\texttt{\textbackslash{}z}\dots{} counterparts for the latter's main reference
+commands.
-See \pkg{zref-check}'s documentation for details, and further available
-checks.
+\begin{zchowto}[caption={\pkg{zref-vario}}]
+\documentclass{article}
+\usepackage[vario]{zref-clever}
+\begin{document}
+\section{Section 1}
+\zlabel{sec:section-1}
+\begin{figure}
+ A figure.
+ \caption{Figure 1}
+ \zlabel{fig:figure-1}
+\end{figure}
+\begin{figure}
+ Another figure.
+ \caption{Figure 2}
+ \zlabel{fig:figure-2}
+\end{figure}
+\zvref[S]{sec:section-1}
+\zvpageref{fig:figure-1}
+\zvrefrange{fig:figure-1}{fig:figure-2}
+\zvpagerefrange{fig:figure-1}{fig:figure-2}
+\zfullref{fig:figure-1}
+\end{document}
+\end{zchowto}
\subsection{\cs{newtheorem}}
@@ -2087,16 +2107,20 @@ refer to the main equation number, that is, right after
usage example. The module also ensures proper \opt{currentcounter} values are
in place for the display math environments, for which it uses environment
hooks, and sets the font of equation references to \cs{upshape}, following
-\pkg{amsmath}'s \cs{eqref}. Note, however, that \pkg{zref-clever} is not the
-only package to redefine \cs{ltx@label}, and compatibility problems may arise
-if this module is used with such packages or with document classes that do the
-same. In case of trouble, you can load \pkg{zref-clever} with option
-\texttt{nocompat=amsmath} and either use the standard referencing system's
-facilities to refer to \pkg{amsmath}'s equations or check the code
-documentation for the technique used for this (which is pretty standard) and
-adapt it to your case. Given that any trouble that may arise here is one of
-the proper ``timing'' of the redefinition, it should not be particularly
-complicated to make such adjustments.
+\pkg{amsmath}'s \cs{eqref}. Finally, the module also provides a
+\texttt{subeq} property, for display math environments used inside the
+\env{subequations} environment, which can be used to refer to them directly
+with the \opt{ref} option, or to build terse ranges with the \opt{endrange}
+option. Note that \pkg{zref-clever} is not the only package to redefine
+\cs{ltx@label}, and compatibility problems may arise if this module is used
+with such packages or with document classes that do the same. In case of
+trouble, you can load \pkg{zref-clever} with option \texttt{nocompat=amsmath}
+and either use the standard referencing system's facilities to refer to
+\pkg{amsmath}'s equations or check the code documentation for the technique
+used for this (which is pretty standard) and adapt it to your case. Given
+that any trouble that may arise here is one of the proper ``timing'' of the
+redefinition, it should not be particularly complicated to make such
+adjustments.
\DescribeOption{mathtools} %
\pkg{mathtools} has a feature to show the numbers only for those equations
diff --git a/macros/luatex/generic/luatexja/COPYING b/macros/luatex/generic/luatexja/COPYING
index 3049f8374b..39c166b6fa 100644
--- a/macros/luatex/generic/luatexja/COPYING
+++ b/macros/luatex/generic/luatexja/COPYING
@@ -1,4 +1,4 @@
-Copyright (c) 2011--2016 The LuaTeX-ja project, All rights reserved.
+Copyright (c) 2011--2022 The LuaTeX-ja project, All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/macros/luatex/generic/luatexja/README b/macros/luatex/generic/luatexja/README
index 6d7fe60543..eb5320238d 100644
--- a/macros/luatex/generic/luatexja/README
+++ b/macros/luatex/generic/luatexja/README
@@ -1,6 +1,6 @@
-The LuaTeX-ja Package 20220103.0
+The LuaTeX-ja Package 20220207.0
--------------------------------
-Copyright (c) 2011--2021 The LuaTeX-ja project
+Copyright (c) 2011--2022 The LuaTeX-ja project
License: modified BSD (see COPYING)
LuaTeX-ja is a macro package for typesetting Japanese documents with LuaTeX.
@@ -42,9 +42,9 @@ Installation
2. If you must/want to install manually:
a. Download the source archive from CTAN,
- or tagged as 20220103.0 in the Git repository by
+ or tagged as 20220207.0 in the Git repository by
<http://git.osdn.jp/view?p=luatex-ja/luatexja.git
- ;a=snapshot;h=refs/tags/20220103.0;sf=tgz>
+ ;a=snapshot;h=refs/tags/20220207.0;sf=tgz>
b. Extract the archive and process following three files by LuaLaTeX
to generate classes for Japanese typesetting:
@@ -93,4 +93,4 @@ Notes
This file and ltj-kinsoku.lua are not used anymore.
(Do not remove ltj-kinsoku.tex.)
-Last commit date: Mon Jan 3 12:19:51 2022 +0900
+Last commit date: Mon Feb 7 13:14:19 2022 +0900
diff --git a/macros/luatex/generic/luatexja/doc/luatexja-en.pdf b/macros/luatex/generic/luatexja/doc/luatexja-en.pdf
index dcb0a086ee..c97ff3a934 100644
--- a/macros/luatex/generic/luatexja/doc/luatexja-en.pdf
+++ b/macros/luatex/generic/luatexja/doc/luatexja-en.pdf
Binary files differ
diff --git a/macros/luatex/generic/luatexja/doc/luatexja-ja.pdf b/macros/luatex/generic/luatexja/doc/luatexja-ja.pdf
index f91aac1df4..32da85ec15 100644
--- a/macros/luatex/generic/luatexja/doc/luatexja-ja.pdf
+++ b/macros/luatex/generic/luatexja/doc/luatexja-ja.pdf
Binary files differ
diff --git a/macros/luatex/generic/luatexja/doc/luatexja.dtx b/macros/luatex/generic/luatexja/doc/luatexja.dtx
index 4d553f38ec..24c31e1932 100644
--- a/macros/luatex/generic/luatexja/doc/luatexja.dtx
+++ b/macros/luatex/generic/luatexja/doc/luatexja.dtx
@@ -7837,6 +7837,21 @@ stretch_priority={kanjiskip=-35,xkanjiskip=-25,others=50}
負数を指定すると,その絶対値が指定されたかのように扱われる.
初期値は1(つまり\cs{lineskip}(の自然長))である.
\end{cslist}
+
+さらに,バージョン20220207.0以降では次の命令が提供される:
+\begin{cslist}
+ \item[\cs{ltjghostjachar}]
+ \LuaTeX-ja本体が提供している\cs{ltjfakeparbegin}, \cs{ltjfakeboxbdd}と類似の命令である.
+ 実行された箇所が(限定・非限定を問わず)水平モードであった場合に,実行された箇所は
+ 「文字クラス0の\textbf{JAchar}」の直前かつ直後であると,\LuaTeX-jaの和文処理グルー挿入処理に認識させる.
+
+ 主な仕様用途は和文ゴーストでの使用である.\Pkg{BXghost}パッケージ(\cite{bxghost})などでは
+ 伝統的に全角空白(\texttt{U+3000})と\verb+\kern-1\zw+を組み合わせた方法が使われてきたが,
+ \LuaTeX-jaでは全角空白を使っただけではうまくいかない可能性があるため,新たに命令が用意された.
+
+ なお,本命令は将来的に\LuaTeX-ja本体に組み込む可能性もある.
+\end{cslist}
+
%</ja>
\subsection{\Pkg{luatexja-ruby}}
@@ -11922,6 +11937,7 @@ ISO 32000-1:2008, \textit{Document management -- Portable document format -- Par
\url{http://www.iso.org/iso/iso\_catalogue/catalogue_tc/catalogue\_detail.htm?csnumber=51502}
\bibitem{tc18ltja} 北川弘典.「\LuaTeX-jaの近況」,\TeX Conf~2018.
\url{https://osdn.net/projects/luatex-ja/wiki/Documentation/attach/tc18ltja.pdf}
+\bibitem{bxghost} Takuto ASAKURA. \newblock The \textsf{BXghost} Package. \url{https://github.com/wtsnjp/BXghost}
\end{thebibliography}
\end{document}
diff --git a/macros/luatex/generic/luatexja/src/addons/luatexja-adjust.sty b/macros/luatex/generic/luatexja/src/addons/luatexja-adjust.sty
index d325df7dc6..5d37eb6258 100644
--- a/macros/luatex/generic/luatexja/src/addons/luatexja-adjust.sty
+++ b/macros/luatex/generic/luatexja/src/addons/luatexja-adjust.sty
@@ -64,7 +64,7 @@
\expandafter\let\csname ifltj@in@latex\expandafter\endcsname
\csname iftrue\endcsname
\NeedsTeXFormat{LaTeX2e}
- \ProvidesPackage{luatexja-adjust}[2022-01-03]
+ \ProvidesPackage{luatexja-adjust}[2022-02-07]
\fi %</LaTeX>
% Load core module if not yet.
@@ -137,6 +137,14 @@
\define@key[ltj]{japaram}{profile_hgap_factor}{%
\directlua{luatexja.adjust.profile_hgap_factor = math.abs(#1)}\relax}
+\newluafunction\ltj@@ghost@jachar@inner
+\typeout{\the\ltj@@ghost@jachar@inner.}
+\directlua{
+ local t = lua.get_functions_table(); local cgj = luatexja.adjust.create_ghost_jachar_node;
+ t[\the\ltj@@ghost@jachar@inner] = function() cgj(0) end
+}%
+\protected\def\ltjghostjachar{\ifhmode\relax\luafunction\ltj@@ghost@jachar@inner\fi}
+
%%------------------ all done
\ltj@adjust@AtEnd
diff --git a/macros/luatex/generic/luatexja/src/ltj-adjust.lua b/macros/luatex/generic/luatexja/src/ltj-adjust.lua
index 76a1a68ec4..87c85dd07a 100644
--- a/macros/luatex/generic/luatexja/src/ltj-adjust.lua
+++ b/macros/luatex/generic/luatexja/src/ltj-adjust.lua
@@ -551,4 +551,40 @@ do
end
end
-
+do
+ local ltja = luatexja.adjust
+ local sid_user = node.subtype 'user_defined'
+ local node_remove = node.direct.remove
+ local node_write = node.direct.write
+ local GHOST_JACHAR = luatexbase.newuserwhatsitid('ghost of a jachar', 'luatexja')
+ luatexja.userid_table.GHOST_JACHAR = GHOST_JACHAR
+ function ltja.create_ghost_jachar_node(cl)
+ local tn = node_new(id_whatsit, sid_user)
+ setfield(tn, 'user_id', GHOST_JACHAR)
+ setfield(tn, 'type', 100)
+ setfield(tn, 'value', cl)
+ node_write(tn)
+ end
+ local function whatsit_callback(Np, lp, Nq)
+ if Np and Np.nuc then return Np
+ elseif Np and getfield(lp, 'user_id') == GHOST_JACHAR then
+ Np.first = lp; Np.nuc = lp; Np.last = lp; Np.class = getfield(lp,'value')
+ if Nq then Np.met = Nq.met; Np.pre = 0; Np.post = 0; Np.xspc = 3 end
+ Np.auto_kspc, Np.auto_xspc = (has_attr(lp, attr_autospc)==1), (has_attr(lp, attr_autoxspc)==1)
+ return Np
+ else return Np end
+ end
+ local function whatsit_after_callback(s, Nq, Np, head)
+ if not s and getfield(Nq.nuc, 'user_id') == GHOST_JACHAR then
+ local x, y = node_prev(Nq.nuc), Nq.nuc
+ Nq.first, Nq.nuc, Nq.last = x, x, x
+ if Np then Nq.met = Np.met end
+ s = node_remove(head, y); node_free(y)
+ end
+ return s
+ end
+ luatexbase.add_to_callback("luatexja.jfmglue.whatsit_getinfo", whatsit_callback,
+ "ghost of a JACHAR", 1)
+ luatexbase.add_to_callback("luatexja.jfmglue.whatsit_after", whatsit_after_callback,
+ "ghost of a JACHAR", 1)
+end
diff --git a/macros/luatex/generic/luatexja/src/ltj-direction.lua b/macros/luatex/generic/luatexja/src/ltj-direction.lua
index d7cdbd9364..db320509d1 100644
--- a/macros/luatex/generic/luatexja/src/ltj-direction.lua
+++ b/macros/luatex/generic/luatexja/src/ltj-direction.lua
@@ -924,6 +924,11 @@ end
-- adjust
do
local id_adjust = node.id 'adjust'
+ local scan_keyword = token.scan_keyword
+ function luatexja.direction.adjust_begin()
+ if scan_keyword 'pre' then tex.sprint(cat_lp, '\\ltj@@vadjust@pre')
+ else tex.sprint(cat_lp, '\\ltj@@vadjust@post') end
+ end
function luatexja.direction.check_adjust_direction()
start_time_measure 'box_primitive_hook'
local list_dir = get_adjust_dir_count()
diff --git a/macros/luatex/generic/luatexja/src/ltj-jfmglue.lua b/macros/luatex/generic/luatexja/src/ltj-jfmglue.lua
index a2bede6442..7ada76335b 100644
--- a/macros/luatex/generic/luatexja/src/ltj-jfmglue.lua
+++ b/macros/luatex/generic/luatexja/src/ltj-jfmglue.lua
@@ -3,7 +3,7 @@
--
luatexbase.provides_module({
name = 'luatexja.jfmglue',
- date = '2022-01-02',
+ date = '2022-02-03',
description = 'Insertion process of JFM glues, [x]kanjiskip and others',
})
luatexja.jfmglue = luatexja.jfmglue or {}
@@ -1104,7 +1104,9 @@ do
luatexbase.call_callback("luatexja.jfmglue.special_jaglue_after", Nq.nuc)
end,
[id_pbox_w]= function()
- luatexbase.call_callback("luatexja.jfmglue.whatsit_after", false, Nq, Np)
+ local hh = luatexbase.call_callback("luatexja.jfmglue.whatsit_after", false, Nq, Np, head)
+ -- hh: new head of false (nott processed)
+ if hh then head = hh end
end,
}
@@ -1323,7 +1325,7 @@ do
end
end
- local function whatsit_after_callback(s, Nq, Np)
+ local function whatsit_after_callback(s, Nq, Np, head)
if not s and getfield(Nq.nuc, 'user_id') == BPAR then
local x, y = node_prev(Nq.nuc), Nq.nuc
Nq.first, Nq.nuc, Nq.last = x, x, x
@@ -1334,7 +1336,7 @@ do
Nq.met = Np.met; Nq.pre = 0; Nq.post = 0; Nq.xspc = 0
Nq.auto_xspc, Nq.auto_kspc = 0, 0
end
- head = node_remove(head, y)
+ s = node_remove(head, y)
node_free(y)
elseif not s and getfield(Nq.nuc, 'user_id') == BOXB then
local x, y = node_prev(Nq.nuc), Nq.nuc
@@ -1346,7 +1348,7 @@ do
Nq.met = Np.met; Nq.pre = 0; Nq.post = 0; Nq.xspc = 0
Nq.auto_xspc, Nq.auto_kspc = 0, 0
end
- head = node_remove(head, y)
+ s = node_remove(head, y)
node_free(y)
end
return s
diff --git a/macros/luatex/generic/luatexja/src/ltj-plain.sty b/macros/luatex/generic/luatexja/src/ltj-plain.sty
index c6f976767f..5268cc1dcd 100644
--- a/macros/luatex/generic/luatexja/src/ltj-plain.sty
+++ b/macros/luatex/generic/luatexja/src/ltj-plain.sty
@@ -88,14 +88,14 @@
\ltjdefcharrange{4}{%
"500-"10FF, "1200-"1DFF, "2440-"245F, "27C0-"28FF, "2A00-"2AFF,
"2C00-"2E7F, "4DC0-"4DFF, "A4D0-"A95F, "A980-"ABFF, "E000-"F8FF,
- "FB00-"FE0F, "FE20-"FE2F, "FE70-"FEFF, "10000-"1AFFF, "1B170-"1F0FF,
+ "FB00-"FE0F, "FE20-"FE2F, "FE70-"FEFF, "10000-"1AFEF, "1B170-"1F0FF,
"1F300-"1FFFF, "2000-"206F
} % non-Japanese
\ltjdefcharrange{5}{"D800-"DFFF, "E0000-"E00FF, "E01F0-"10FFFF}
\ltjdefcharrange{6}{%
"2460-"24FF, "2E80-"2EFF, "3000-"30FF, "3190-"319F, "31F0-"4DBF,
"4E00-"9FFF, "F900-"FAFF, "FE10-"FE1F, "FE30-"FE6F, "FF00-"FFEF,
- "1B000-"1B16F, "1F100-"1F2FF, "20000-"3FFFF, "E0100-"E01EF
+ "1AFF0-"1B16F, "1F100-"1F2FF, "20000-"3FFFF, "E0100-"E01EF
}
\ltjdefcharrange{7}{%
"1100-"11FF, "2F00-"2FFF, "3100-"318F, "31A0-"31EF, "A000-"A4CF,
diff --git a/macros/luatex/generic/luatexja/src/ltj-ruby.lua b/macros/luatex/generic/luatexja/src/ltj-ruby.lua
index d5bc393963..320b7307f0 100644
--- a/macros/luatex/generic/luatexja/src/ltj-ruby.lua
+++ b/macros/luatex/generic/luatexja/src/ltj-ruby.lua
@@ -3,7 +3,7 @@
--
luatexbase.provides_module({
name = 'luatexja.ruby',
- date = '2021-05-04',
+ date = '2022-02-03',
description = 'Ruby annotation',
})
luatexja.ruby = {}
@@ -764,7 +764,7 @@ do
end
local RIPOST = luatexja.stack_table_index.RIPOST
local abs = math.abs
- local function whatsit_after_callback(s, Nq, Np)
+ local function whatsit_after_callback(s, Nq, Np, head)
if not s and getfield(Nq.nuc, 'user_id') == RUBY_PRE then
if Np then
local last_glue = node_new(id_glue)
@@ -802,7 +802,7 @@ do
rst.post = 0
end
end
- return true
+ return head
else
return s
end
diff --git a/macros/luatex/generic/luatexja/src/luatexja-core.sty b/macros/luatex/generic/luatexja/src/luatexja-core.sty
index fb58eaf31d..cc49fbd479 100644
--- a/macros/luatex/generic/luatexja/src/luatexja-core.sty
+++ b/macros/luatex/generic/luatexja/src/luatexja-core.sty
@@ -65,7 +65,7 @@
\expandafter\let\csname ifltj@in@latex\expandafter\endcsname
\csname iftrue\endcsname
\NeedsTeXFormat{LaTeX2e}
- \ProvidesPackage{luatexja-core}[2021-05-21 Core of LuaTeX-ja]
+ \ProvidesPackage{luatexja-core}[2022-01-12 Core of LuaTeX-ja]
\fi %</LaTeX>
%% Load prerequisite packages.
@@ -623,19 +623,22 @@
%%%% vadjust
\let\ltj@@orig@vadjust\vadjust
+\newluafunction\ltj@@vadjust@begin@inner
\newluafunction\ltj@@vadjust@dirhook@inner
\newluafunction\ltj@@vadjust@check@dir@inner
\directlua{
local t = lua.get_functions_table()
+ t[\the\ltj@@vadjust@begin@inner] = luatexja.direction.adjust_begin
t[\the\ltj@@vadjust@dirhook@inner]
= function () luatexja.direction.set_list_direction_hook('adj') end
- t[\the\ltj@@vadjust@check@dir@inner]
- = luatexja.direction.check_adjust_direction
+ t[\the\ltj@@vadjust@check@dir@inner] = luatexja.direction.check_adjust_direction
}
+\protected\luadef\ltj@@vadjust\ltj@@vadjust@begin@inner
\luadef\ltj@@vadjust@dirhook\ltj@@vadjust@dirhook@inner
\protected\luadef\ltj@@vadjust@check@dir\ltj@@vadjust@check@dir@inner
-\protected\def\ltj@@vadjust{%
- \ltj@@orig@vadjust\bgroup\ltj@@vadjust@dirhook
+\def\ltj@@vadjust@pre{\ltj@@orig@vadjust pre\bgroup\ltj@@vadjust@dirhook
+ \aftergroup\ltj@@vadjust@check@dir\let\ltj@@next}
+\def\ltj@@vadjust@post{\ltj@@orig@vadjust\bgroup\ltj@@vadjust@dirhook
\aftergroup\ltj@@vadjust@check@dir\let\ltj@@next}
\let\vadjust\ltj@@vadjust %% PRIMITIVE
diff --git a/macros/luatex/generic/luatexja/src/luatexja.sty b/macros/luatex/generic/luatexja/src/luatexja.sty
index 48db2624ec..ae389af99b 100644
--- a/macros/luatex/generic/luatexja/src/luatexja.sty
+++ b/macros/luatex/generic/luatexja/src/luatexja.sty
@@ -27,7 +27,7 @@
\newif\ifltj@disablejfam
%%%% VERSION
-\def\LuaTeXjaversion{20220103.0}
+\def\LuaTeXjaversion{20220207.0}
%% Check if LaTeX is used.
\begingroup\expandafter\expandafter\expandafter\endgroup
diff --git a/macros/luatex/generic/luatexja/src/patches/lltjcore.sty b/macros/luatex/generic/luatexja/src/patches/lltjcore.sty
index 19b365ad48..086771a200 100644
--- a/macros/luatex/generic/luatexja/src/patches/lltjcore.sty
+++ b/macros/luatex/generic/luatexja/src/patches/lltjcore.sty
@@ -3,7 +3,7 @@
%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{lltjcore}[2021-03-25 Patch to LaTeX2e Kernel for LuaTeX-ja]
+\ProvidesPackage{lltjcore}[2022-01-17 Patch to LaTeX2e Kernel for LuaTeX-ja]
\RequirePackage{etoolbox}
%%% expl3
@@ -208,7 +208,7 @@
\else\hbox{\yoko \@textsuperscript{\normalfont\@thefnmark}}\fi}
\begingroup
\@ifpackageloaded{hyperref}
- {\def\ltj@setrefprefix{real}}
+ {\ifdefined\real@setref\def\ltj@setrefprefix{real}\else\def\ltj@setrefprefix{}\fi}
{\def\ltj@setrefprefix{}}
\expandafter\gdef\csname \ltj@setrefprefix @setref\endcsname#1#2#3{%
\ifx#1\relax
diff --git a/macros/luatex/generic/luatexja/src/patches/lltjdefs.sty b/macros/luatex/generic/luatexja/src/patches/lltjdefs.sty
index b76a3957a0..c330c0ea57 100644
--- a/macros/luatex/generic/luatexja/src/patches/lltjdefs.sty
+++ b/macros/luatex/generic/luatexja/src/patches/lltjdefs.sty
@@ -3,7 +3,7 @@
%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{lltjdefs}[2021-04-29 Default font settings of LuaTeX-ja]
+\ProvidesPackage{lltjdefs}[2022-01-23 Default font settings of LuaTeX-ja]
\ifdefined\ltj@stdmcfont\else\def\ltj@stdmcfont{file:HaranoAjiMincho-Regular.otf}\fi
\ifdefined\ltj@stdgtfont\else\def\ltj@stdgtfont{file:HaranoAjiGothic-Medium.otf}\fi
@@ -151,14 +151,14 @@
\ltjdefcharrange{4}{%
"500-"10FF, "1200-"1DFF, "2440-"245F, "27C0-"28FF, "2A00-"2AFF,
"2C00-"2E7F, "4DC0-"4DFF, "A4D0-"A95F, "A980-"ABFF, "E000-"F8FF,
- "FB00-"FE0F, "FE20-"FE2F, "FE70-"FEFF, "10000-"1AFFF, "1B170-"1F0FF,
+ "FB00-"FE0F, "FE20-"FE2F, "FE70-"FEFF, "10000-"1AFEF, "1B170-"1F0FF,
"1F300-"1FFFF, "2000-"206F
} % non-Japanese
\ltjdefcharrange{5}{"D800-"DFFF, "E0000-"E00FF, "E01F0-"10FFFF}
\ltjdefcharrange{6}{%
"2460-"24FF, "2E80-"2EFF, "3000-"30FF, "3190-"319F, "31F0-"4DBF,
"4E00-"9FFF, "F900-"FAFF, "FE10-"FE1F, "FE30-"FE6F, "FF00-"FFEF,
- "1B000-"1B16F, "1F100-"1F2FF, "20000-"3FFFF, "E0100-"E01EF
+ "1AFF0-"1B16F, "1F100-"1F2FF, "20000-"3FFFF, "E0100-"E01EF
}
\ltjdefcharrange{7}{%
"1100-"11FF, "2F00-"2FFF, "3100-"318F, "31A0-"31EF, "A000-"A4CF,
diff --git a/support/TeX4ht/source/ChangeLog b/support/TeX4ht/source/ChangeLog
index ef58933f0c..d311b5455e 100644
--- a/support/TeX4ht/source/ChangeLog
+++ b/support/TeX4ht/source/ChangeLog
@@ -1,3 +1,19 @@
+2022-02-06 Michal Hoftich <michal.h21@gmail.com>
+
+ * tex4ht-fonts-noncjk.tex (
+ .tex4ht.dir/texmf/tex4ht/ht-fonts/win/1251/cm/sauter/wnti.htf
+ .tex4ht.dir/texmf/tex4ht/ht-fonts/iso8859/5/cm/sauter/wnti.htf
+ ): Fixed font tables for the italics Cyrillic Wn font
+ https://puszcza.gnu.org.ua/bugs/?549
+
+ * tex4ht-ooffice.tex (ooffice.4ht): fixed links for the \cite
+ command.
+ https://puszcza.gnu.org.ua/bugs/?547
+
+ * tex4ht-html4.tex (html4.4ht): declare table properties necessary
+ for correct rule support in Longtable.
+ https://tug.org/pipermail/tex4ht/2022q1/003137.html
+
2022-02-04 Michal Hoftich <michal.h21@gmail.com>
* tex4ht-html4.tex (html4.4ht): use CSS grid for Enumitem lists.
diff --git a/support/TeX4ht/source/mktex4ht-cnf.tex b/support/TeX4ht/source/mktex4ht-cnf.tex
index 86616aa9f8..5696ebd3e9 100644
--- a/support/TeX4ht/source/mktex4ht-cnf.tex
+++ b/support/TeX4ht/source/mktex4ht-cnf.tex
@@ -1,4 +1,4 @@
-% $Id: mktex4ht-cnf.tex 1038 2021-12-25 19:26:07Z michal_h21 $
+% $Id: mktex4ht-cnf.tex 1069 2022-02-02 14:31:53Z michal_h21 $
% Manually-maintained file, listing *.4ht files created by tex4ht-4ht.tex.
% Read by tex4ht-cond4ht.
%
@@ -265,6 +265,7 @@
\AddFile{9}{paralist}
\AddFile{9}{pifont}
\AddFile{9}{listings}
+\AddFile{9}{tasks}
\AddFile{9}{alphanum}
\AddFile{9}{lineno}
\AddFile{9}{errata}
diff --git a/support/TeX4ht/source/tex4ht-html4.tex b/support/TeX4ht/source/tex4ht-html4.tex
index 5df537074c..ede8404fff 100644
--- a/support/TeX4ht/source/tex4ht-html4.tex
+++ b/support/TeX4ht/source/tex4ht-html4.tex
@@ -1,4 +1,4 @@
-% $Id: tex4ht-html4.tex 1072 2022-02-04 14:15:32Z michal_h21 $
+% $Id: tex4ht-html4.tex 1073 2022-02-06 19:29:41Z michal_h21 $
% Compile 4 times: latex tex4ht-html4
% Copy html4.4ht into the work directory before all but the last compilation.
%
@@ -8129,6 +8129,7 @@ and the same for pic tabular. Why?
}<>\HAlign}
\Css{table[rules] {border-left:solid black 0.4pt;
border-right:solid black 0.4pt; }}
+\Css{table.longtable{border-collapse: collapse; border-spacing: 0;}}
\Configure{longtable}
{\IgnorePar\EndP
\HCode{|<show input line no|><div class="longtable">}%
diff --git a/support/TeX4ht/source/tex4ht-ooffice.tex b/support/TeX4ht/source/tex4ht-ooffice.tex
index 29e849348f..0395dadac0 100644
--- a/support/TeX4ht/source/tex4ht-ooffice.tex
+++ b/support/TeX4ht/source/tex4ht-ooffice.tex
@@ -1,4 +1,4 @@
-% $Id: tex4ht-ooffice.tex 1059 2022-01-19 14:11:34Z michal_h21 $
+% $Id: tex4ht-ooffice.tex 1074 2022-02-06 19:43:26Z michal_h21 $
% compile 3 times: latex tex4ht-ooffice
% htlatex tex4ht-ooffice "xhtml,4,sections+"
%
@@ -2864,8 +2864,25 @@ change the configuration slightly. We modify directly the
\subsection{cite}
%%%%%%%%%%%%%%%%%%%
+This version of Cite produces links, but not speciall bibliography
+field in the ODT file. I don't know if it is important, I think
+functional link is better.
+
\<configure ooffice latex\><<<
\Configure{cite}
+ {}
+ {}
+ {\Link} {\EndLink}
+\let\lat:cite\@cite
+\def\@cite#1#2{{#1\if@tempswa , #2\fi}}
+>>>
+
+This version of cite is post-processed by Xtpipes, which
+removes links from citation to the bibliography, and
+introduce extra square brackets. I don't understand why.
+
+\<\><<<
+\Configure{cite}
{\HCode{<text:bibliography-mark
text:bibliography-type="custom1">}}
{\HCode{</text:bibliography-mark>}}
diff --git a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
index ce4ff585f8..6140eeb800 100644
--- a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
+++ b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
@@ -4,7 +4,6 @@ $mirrors = {
'https://mirror.marwan.ma/ctan/' => 1,
},
'South Africa' => {
- 'http://ftp.leg.uct.ac.za/pub/packages/ctan/' => 1,
'http://ftp.sun.ac.za/ftp/CTAN/' => 1,
'https://mirror.ufs.ac.za/ctan/' => 1,
},
@@ -14,6 +13,7 @@ $mirrors = {
'https://mirror.bjtu.edu.cn/CTAN/' => 1,
'https://mirrors.aliyun.com/CTAN/' => 1,
'https://mirrors.bfsu.edu.cn/CTAN/' => 1,
+ 'https://mirrors.cloud.tencent.com/CTAN/' => 1,
'https://mirrors.dgut.edu.cn/CTAN/' => 1,
'https://mirrors.hit.edu.cn/CTAN/' => 1,
'https://mirrors.nju.edu.cn/CTAN/' => 1,
@@ -40,7 +40,6 @@ $mirrors = {
},
'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,
},
@@ -160,7 +159,6 @@ $mirrors = {
'https://ctan.ijs.si/tex-archive/' => 1,
},
'Spain' => {
- 'https://ctan.javinator9889.com/' => 1,
'https://osl.ugr.es/CTAN/' => 1,
},
'Sweden' => {
@@ -181,6 +179,7 @@ $mirrors = {
'https://ctan.mirror.globo.tech/' => 1,
'https://ctan.mirror.rafal.ca/' => 1,
'https://mirror.csclub.uwaterloo.ca/CTAN/' => 1,
+ 'https://mirror.its.dal.ca/ctan/' => 1,
'https://muug.ca/mirror/ctan/' => 1,
},
'Costa Rica' => {
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb b/systems/texlive/tlnet/tlpkg/texlive.tlpdb
index 4224665820..eebc82c8d8 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb
@@ -26,11 +26,11 @@ depend container_split_src_files/1
depend frozen/0
depend minrelease/2016
depend release/2021
-depend revision/61907
+depend revision/61924
name 00texlive.image
category TLCore
-revision 61890
+revision 61918
shortdesc TeX Live files only in the source repository
longdesc The files here are not copied by the installer and containers
longdesc are not built for them; they exist only in the source
@@ -2414,6 +2414,7 @@ runfiles size=12502
tlpkg/tlpsrc/latex-doc-ptr.tlpsrc
tlpkg/tlpsrc/latex-firstaid-dev.tlpsrc
tlpkg/tlpsrc/latex-fonts.tlpsrc
+ tlpkg/tlpsrc/latex-for-undergraduates.tlpsrc
tlpkg/tlpsrc/latex-git-log.tlpsrc
tlpkg/tlpsrc/latex-graphics-companion.tlpsrc
tlpkg/tlpsrc/latex-graphics-dev.tlpsrc
@@ -3111,6 +3112,7 @@ runfiles size=12502
tlpkg/tlpsrc/pb-diagram.tlpsrc
tlpkg/tlpsrc/pbalance.tlpsrc
tlpkg/tlpsrc/pbibtex-base.tlpsrc
+ tlpkg/tlpsrc/pbibtex-manual.tlpsrc
tlpkg/tlpsrc/pbox.tlpsrc
tlpkg/tlpsrc/pbsheet.tlpsrc
tlpkg/tlpsrc/pdf-trans.tlpsrc
@@ -4526,7 +4528,7 @@ depend setting_available_architectures:aarch64-linux amd64-freebsd amd64-netbsd
name 00texlive.installer
category TLCore
-revision 61889
+revision 61909
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
@@ -8628,16 +8630,16 @@ catalogue-version 3.13c
name acmart
category Package
-revision 61233
+revision 61919
shortdesc Class for typesetting publications of ACM
relocated 1
longdesc This package provides a class for typesetting publications of
longdesc the Association for Computing Machinery (ACM).
-containersize 38832
-containerchecksum 1054235daaac6026efb3592fc08ac68095b61ea21bc884ee9af4142bde1e7527864eb64325c21a3bab404bea320ce5fe35e9aefc21bded7360ec43e83bb33f73
-doccontainersize 3563900
-doccontainerchecksum f98d64df2f1cb7c82fb1cd4b99d3e8f1ca102f2ab6dd55ff8da92c42b889ea62dd0269b0f584d251ad5c639cf11ce24114c9409dfa65551b267d1140af0b4b31
-docfiles size=2686
+containersize 38944
+containerchecksum 5b182bbf9743c0149b4e36e1ed0b739b17ddaa9eaf0f7a5769f92a7d6b247b1b3eb1b84b6471275eb2c693b113cb9d0b896ab900b7f40d764503276ee403e7b1
+doccontainersize 3561068
+doccontainerchecksum 63dc88f29df51404ba08adc9462d14ead37adb37faeff44cd6c5d29063aa361fcfca7c38b069fbf71bd2e4e5683f27b65bdc17e9fe3414a6bff6da829ff883ce
+docfiles size=2685
RELOC/doc/latex/acmart/README details="Readme"
RELOC/doc/latex/acmart/acmart.bib
RELOC/doc/latex/acmart/acmart.pdf details="Documentation"
@@ -8669,8 +8671,8 @@ docfiles size=2686
RELOC/doc/latex/acmart/samples/samples.dtx
RELOC/doc/latex/acmart/samples/samples.ins
RELOC/doc/latex/acmart/samples/sampleteaser.pdf
-srccontainersize 54768
-srccontainerchecksum 8373736287dbbbf0919169c0b4c4e9a256eea82d9f54d821f1cfbddeae7433ece647e931374538a4d1545d626e08c2db6f3c6510f9abbc94189be651ede1bc1f
+srccontainersize 55016
+srccontainerchecksum 8c3a99e0dba09ba2a14f531fb552211c4693e015e051ab63aa67635d5ad42858596135ff21a745b3053cc7361294f61f0b267f552c0135d99d2d95ba63bce33c
srcfiles size=64
RELOC/source/latex/acmart/Makefile
RELOC/source/latex/acmart/acmart.dtx
@@ -8687,7 +8689,7 @@ catalogue-contact-repository https://github.com/borisveytsman/acmart/
catalogue-ctan /macros/latex/contrib/acmart
catalogue-license lppl1.3
catalogue-topics class comp-sci comp-theory engineering journalpub
-catalogue-version 1.81
+catalogue-version 1.82
name acmconf
category Package
@@ -39142,16 +39144,16 @@ catalogue-version 2.0.0
name biblatex-unified
category Package
-revision 55290
+revision 61920
shortdesc BibLaTeX implementation of the unified stylesheet for linguistics journals
relocated 1
longdesc BibLaTeX-unified is an opinionated BibLaTeX implementation of
longdesc the Unified Stylesheet for Linguistics Journals
-containersize 7704
-containerchecksum 930867328f0f818d03fd5d8cacad6113214609500f43e06b77b711c00939a3a3c99e8e3bba8a093721e719b8449abfc29be50c9b5482b65f3c47f4b7b3a344ad
-doccontainersize 434816
-doccontainerchecksum 7196a1c293864f8cbe9e1421ee074cf249bac49c9d9a8cdd811a0252d4a0700f1874bc7d8f3cf22f3ecfc50ac214ce17d30ba8e7f84ae92428578e540ce66429
-docfiles size=131
+containersize 7184
+containerchecksum 0c4789b1372cf56675a9db1b93fda299ec62fa5d579f1e7d38e41da53752e1937c31ead9742d283ca67c56e4cd0b90814b31a9b502fafed4451f2b968148e787
+doccontainersize 442364
+doccontainerchecksum 8b0a5ae0e37380e45059a95e2247cb240521734bc160b381d6c4c4a09c9dd65a2f55a82f49b8f51c6a39d4cd8c88172484d5bf78682d4be66f11a7c40c1a3068
+docfiles size=135
RELOC/doc/latex/biblatex-unified/JournalUnifiedStyleSheet2007.pdf
RELOC/doc/latex/biblatex-unified/LICENSE
RELOC/doc/latex/biblatex-unified/README.md details="Readme"
@@ -39169,7 +39171,7 @@ catalogue-contact-repository https://github.com/semprag/biblatex-sp-unified
catalogue-ctan /macros/latex/contrib/biblatex-contrib/biblatex-unified
catalogue-license lppl1.3c
catalogue-topics biblatex
-catalogue-version 1.00
+catalogue-version 1.10
name biblatex-vancouver
category Package
@@ -48010,7 +48012,7 @@ catalogue-version 0.2.7h
name causets
category Package
-revision 57139
+revision 61916
shortdesc Draw causal set (Hasse) diagrams
relocated 1
longdesc This LaTeX package uses TikZ to generate (Hasse) diagrams for
@@ -48018,11 +48020,11 @@ longdesc causal sets (causets) to be used inline with text or in
longdesc mathematical expressions. The macros can also be used in the
longdesc tikzpicture environment to annotate or modify a diagram, as
longdesc shown with some examples in the documentation.
-containersize 3672
-containerchecksum 3dbe4a3c2e5985dbb4a36134a3739adb97636086ad2c1d3f510e4607fb6a6d0d01cbd2d4e135835a9eb88d63128e3b9a4408bce3b910c406b47dad0d0b5c19b6
-doccontainersize 424340
-doccontainerchecksum 77f5ec1d8c16bb6d3772a78913825a1652c5130327e7851ddd16d5a5b0da9315e09dc113c880659b03d4263558781c36e1ed9ac546fabb9df88cfd4b4a3fb84b
-docfiles size=123
+containersize 4292
+containerchecksum 48663667984e3a54effeebe59cc819815fe3e2b0a98efc40b28fd6812dc30fea796b70675b7404514efdf33b703a13a37a283e874a81483cebec5d60c568ae9b
+doccontainersize 446248
+doccontainerchecksum 4e67ccd6777d5142412545afa30daa438a39f564420c4c5e76f3219b126caec5162cb93b1987c7c666957a604ce52b41e4757986e9118828e88f3703ce22f99b
+docfiles size=130
RELOC/doc/latex/causets/README.md details="Readme"
RELOC/doc/latex/causets/causet_tikz_example1.pdf
RELOC/doc/latex/causets/causet_tikz_example1.tex
@@ -48030,14 +48032,14 @@ docfiles size=123
RELOC/doc/latex/causets/causet_tikz_example2.tex
RELOC/doc/latex/causets/causets.pdf details="Package documentation"
RELOC/doc/latex/causets/causets.tex
-runfiles size=4
+runfiles size=5
RELOC/tex/latex/causets/causets.sty
catalogue-contact-bugs https://github.com/c-minz/LaTeX-causets/issues
catalogue-contact-repository https://github.com/c-minz/LaTeX-causets
catalogue-ctan /graphics/pgf/contrib/causets
catalogue-license lppl1.3
catalogue-topics graphics pgf-tikz diagram-maths maths
-catalogue-version 1.1
+catalogue-version 1.2
name cbcoptic
category Package
@@ -67433,7 +67435,7 @@ containerchecksum 3fdcf41fafd94373254281f3f7ee9f2a2e136cfa1adc1dd38e4b5cd6f90d03
name collection-langchinese
category Collection
-revision 61886
+revision 61913
shortdesc Chinese
relocated 1
longdesc Support for Chinese; additional packages in collection-langcjk.
@@ -67462,7 +67464,6 @@ depend texlive-zh-cn
depend texproposal
depend tlmgr-intro-zh-cn
depend upzhkinsoku
-depend xecjk
depend xpinyin
depend xtuthesis
depend zhlineskip
@@ -67471,12 +67472,12 @@ depend zhmetrics
depend zhmetrics-uptex
depend zhnumber
depend zhspacing
-containersize 548
-containerchecksum 29549292fa3e3ecd65b79bfbd1f2df2c7e53f9c1be00301f8d3d802b3ea02ba9710040c31c5fd4f0447d1a78de80e157a653f3141e8353631ae1c1f8671d20de
+containersize 544
+containerchecksum 3df5cd6944b02a2760836149ff9c80e8fcbceee26607974ff9c3100c5ab0b8be35a9df9a5bcbba8ff3c502471c5191d01403bc358d03a7eb589b4c1495a338ae
name collection-langcjk
category Collection
-revision 60595
+revision 61912
shortdesc Chinese/Japanese/Korean (base)
relocated 1
longdesc Packages supporting a combination of Chinese, Japanese, Korean,
@@ -67498,10 +67499,11 @@ depend jfmutil
depend norasi-c90
depend pxtatescale
depend xcjk2uni
+depend xecjk
depend zitie
depend zxjafont
-containersize 576
-containerchecksum c8ac36a28cf38e9cab5069a396777821a07ad58bb9b00eeebd8520971933ae57a53ddac267805196687993ac0403f68d1236ffe6de9321c2c0a3c659a1659ffa
+containersize 580
+containerchecksum 6b00955359e063df2a7c02f2d44f88e6190d65834b8e5c77e9c67e44b8c9de9cee612cd298e79fe3cd598fd58996ace0829d3a5463cdc25b543e7565b1455e31
name collection-langcyrillic
category Collection
@@ -67587,7 +67589,7 @@ containerchecksum 719c321173ca12660891080dae509080934f72d13a9417b2c40a22add963c7
name collection-langenglish
category Collection
-revision 60687
+revision 61918
shortdesc US and UK English
relocated 1
longdesc Support for, and documentation in, English.
@@ -67618,6 +67620,7 @@ depend l2tabu-english
depend latex-brochure
depend latex-course
depend latex-doc-ptr
+depend latex-for-undergraduates
depend latex-graphics-companion
depend latex-refsheet
depend latex-veryshortguide
@@ -67658,8 +67661,8 @@ depend undergradmath
depend visualfaq
depend webguide
depend xetexref
-containersize 844
-containerchecksum b5d9f13c65fb79f647204e5dadb7cbf9c72cfa8408a92fec25423400ec238e823a851b7a83f24c2482cfcd58e81ff92c9bd6f352c2a09b65181c6e85135fe52a
+containersize 852
+containerchecksum 76729fb377e1c0a79795f84270cc6044599a6a452b37545ff24cc5e38e8d4ade3294f4d671146ad07ebf140998054f85f0d25e8b48574289d16aa7f441653f46
name collection-langeuropean
category Collection
@@ -67909,7 +67912,7 @@ containerchecksum 6ec5e8a62e3c1ed8e3c23542381091d38c77af507af7088a55e44f1e34b85d
name collection-langjapanese
category Collection
-revision 61636
+revision 61915
shortdesc Japanese
relocated 1
longdesc Support for Japanese; additional packages are in
@@ -67947,6 +67950,7 @@ depend luatexja
depend mendex-doc
depend morisawa
depend pbibtex-base
+depend pbibtex-manual
depend platex
depend platex-tools
depend platexcheat
@@ -67972,8 +67976,8 @@ depend uptex-fonts
depend wadalab
depend zxjafbfont
depend zxjatype
-containersize 628
-containerchecksum 59acd09a81f05ee07db4630326fcbcd1f22bea28e4a7d493f8c62b325e1961e52bac037975372581bc7dac4aeade6272d2f03921e651d11f33949cde4bdfa0d2
+containersize 632
+containerchecksum 27aefe1a9c73548d9496cf141d18e75cf6a36488b8c59f786db7551e32b85c80a478ad2c7a0c5cd866177478a8790c74cf17777c7b4456a7dbe19957ad87957f
name collection-langkorean
category Collection
@@ -143173,7 +143177,7 @@ catalogue-topics font font-mf font-symbol
name iftex
category Package
-revision 56594
+revision 61910
shortdesc Am I running under pdfTeX, XeTeX or LuaTeX?
relocated 1
longdesc The package, which works both for Plain TeX and for LaTeX,
@@ -143182,11 +143186,11 @@ longdesc testing which engine is being used for typesetting. The package
longdesc also provides the \RequirePDFTeX, \RequireXeTeX, and
longdesc \RequireLuaTeX commands which throw an error if pdfTeX, XeTeX
longdesc or LuaTeX (respectively) is not the engine in use.
-containersize 3008
-containerchecksum 07e15945295e3d5c2f6a6e4087d16f1f5ca6014f2ae98bfd25a18d32efd07c4da4542676fa164ecdbe326d478b1370337577638ed2031cdb9f0b2b1961b86855
-doccontainersize 218576
-doccontainerchecksum a0497c07ddc2087b8291c9f017101950bb774ae387db082497b859491e38d4fe22d7f69ee9bc093ee9d70d7b67796fdbe643b76322f5fa3577aba5733c7aa105
-docfiles size=56
+containersize 3132
+containerchecksum ac7958c10c0cd5ee3a82273632445423c347bc9c5fc2015b97fdb7018d7a07b7e1316761698973b325314e945fba6c86be0dd49e058ecf74a55ccf2b9df8774f
+doccontainersize 228940
+doccontainerchecksum d51b452532fcffce4b1078ab26396bc4f8739e2c3025917b4ce88af2e5aecfbe0a54e481f1683afe2d25259c6f73e27be8f257beb1b599f9817dc37df427fd70
+docfiles size=60
RELOC/doc/generic/iftex/README.md details="Readme"
RELOC/doc/generic/iftex/iftex.pdf details="Package documentation"
RELOC/doc/generic/iftex/iftex.tex
@@ -143203,7 +143207,7 @@ catalogue-contact-repository https://github.com/latex3/iftex
catalogue-ctan /macros/generic/iftex
catalogue-license lppl1.3c
catalogue-topics env-query macro-gen
-catalogue-version 1.0d
+catalogue-version 1.0f
name ifthenx
category Package
@@ -167214,6 +167218,39 @@ catalogue-ctan /fonts/latex
catalogue-license lppl
catalogue-topics font font-symbol font-mf
+name latex-for-undergraduates
+category Package
+revision 61918
+shortdesc A tutorial aimed at introducing undergraduate students to LaTeX
+relocated 1
+longdesc A tutorial aimed at introducing undergraduate students to
+longdesc LaTeX, including an introduction to LaTeX Workshop in Visual
+longdesc Studio Code and an example package of user-defined LaTeX
+longdesc commands.
+containersize 452
+containerchecksum 5baed28c7d52c585972b716f844c677fb83134213fbcdb6ee3df35e785e072f923e9188d864491971514c39b4379d931db1edeb6ac29d95ecb67e1e4dcb1300d
+doccontainersize 2010712
+doccontainerchecksum ff1011460877122f77412aceef73e76a80c43ffed084b39fd3439a77fae1888aadf65348ce05cd00533d0261b8f4692e2165bccedd091f65a6b6a45fd0bee97e
+docfiles size=829
+ RELOC/doc/latex/latex-for-undergraduates/LaTeX_for_Undergraduates.pdf details="The tutorial itself"
+ RELOC/doc/latex/latex-for-undergraduates/LaTeX_for_Undergraduates.tex
+ RELOC/doc/latex/latex-for-undergraduates/README.md details="Readme"
+ RELOC/doc/latex/latex-for-undergraduates/alounsburymacros-doc.pdf details="Documentation of personal macro package"
+ RELOC/doc/latex/latex-for-undergraduates/alounsburymacros-doc.tex
+ RELOC/doc/latex/latex-for-undergraduates/alounsburymacros.sty
+ RELOC/doc/latex/latex-for-undergraduates/images/M33_figure.jpeg
+ RELOC/doc/latex/latex-for-undergraduates/images/compiling.png
+ RELOC/doc/latex/latex-for-undergraduates/images/creatingDocument.png
+ RELOC/doc/latex/latex-for-undergraduates/images/directories.png
+ RELOC/doc/latex/latex-for-undergraduates/images/marketplace.png
+ RELOC/doc/latex/latex-for-undergraduates/images/perl1.png
+ RELOC/doc/latex/latex-for-undergraduates/images/perl2crop.png
+ RELOC/doc/latex/latex-for-undergraduates/images/whiteboard.jpeg
+catalogue-ctan /info/latex-for-undergraduates
+catalogue-license pd
+catalogue-topics tut-latex maths-doc
+catalogue-version 1.0
+
name latex-git-log
category Package
revision 54010
@@ -234403,32 +234440,25 @@ catalogue-version 1.1.1
name pbibtex-base
category Package
-revision 40986
+revision 61914
shortdesc Bibliography styles and miscellaneous files for pBibTeX
relocated 1
longdesc These are miscellaneous files, including bibliography styles
longdesc (.bst), for pBibTeX, which is a Japanese extended version of
longdesc BibTeX contained in TeX Live. The bundle is a redistribution
longdesc derived from the ptex-texmf distribution by ASCII MEDIA WORKS.
-containersize 14712
-containerchecksum 4c807466ddae93f7b12a62fb32b4a8a8dcdf16eb8935548aaeeccaa90de15484e396f307f229cab8a2980212aa7627e80047502a067847114ca7ff6a9ae22c3b
-doccontainersize 846572
-doccontainerchecksum a87c2feac2b0a115ccec0ced7ed9b5215c8b7501020a4ca14fea9a5062bc0994fa31c892c1a738c582118b73ff4df5aba371abaef76d3c15a00d5268bef85031
-docfiles size=256
+containersize 14700
+containerchecksum dcef21019daca2ec8a2a649f58f3e648cc580c6d46fdb1c7a315fd66fe6e9075dfac8d12dfe901be0487272419cb10257007b8e34a0a6d11d93f6b5f67b5f988
+doccontainersize 27920
+doccontainerchecksum 897d18ba8ed56a44541dab0d07c0f1fff059e08ae02165b1205e439bb3b0b61484a2008a8a463690f9fbc628fbd462d271643957715a32a712e35cb9dda3bfd4
+docfiles size=31
RELOC/doc/ptex/pbibtex/LICENSE
RELOC/doc/ptex/pbibtex/README.md details="Readme"
- RELOC/doc/ptex/pbibtex/README_original
RELOC/doc/ptex/pbibtex/cpp.awk
RELOC/doc/ptex/pbibtex/generate.sh
RELOC/doc/ptex/pbibtex/jbibtex.bib
- RELOC/doc/ptex/pbibtex/jbibtex.pdf
- RELOC/doc/ptex/pbibtex/jbibtex.tex
RELOC/doc/ptex/pbibtex/jbtxbst.doc
RELOC/doc/ptex/pbibtex/jbtxdoc.bib
- RELOC/doc/ptex/pbibtex/jbtxdoc.pdf
- RELOC/doc/ptex/pbibtex/jbtxdoc.tex
- RELOC/doc/ptex/pbibtex/jbtxhak.pdf
- RELOC/doc/ptex/pbibtex/jbtxhak.tex
runfiles size=61
RELOC/pbibtex/bib/jxampl.bib
RELOC/pbibtex/bst/jabbrv.bst
@@ -234440,11 +234470,41 @@ runfiles size=61
RELOC/pbibtex/bst/junsrt.bst
RELOC/pbibtex/bst/tieice.bst
RELOC/pbibtex/bst/tipsj.bst
+catalogue-also pbibtex-manual
catalogue-contact-repository https://github.com/texjporg/pbibtex-base
-catalogue-ctan /biblio/pbibtex/base
+catalogue-ctan /biblio/pbibtex/pbibtex-base
catalogue-license bsd3
catalogue-topics biblio japanese
+name pbibtex-manual
+category Package
+revision 61915
+shortdesc Documentation files for (u)pBibTeX
+relocated 1
+longdesc The bundle contains documentation files for Japanese pBibTeX
+longdesc and upBibTeX. For historical reasons, this also contains old
+longdesc documentation files for JBibTeX.
+containersize 460
+containerchecksum 6e5f1058a6e8c1ad0ca88638b91fe9dd1263f733c0e1da4d04edf345f584419ef4809126a583fb99abc308bdf1bd21c85934961ca9658267f3c5b3092279fb99
+doccontainersize 943344
+doccontainerchecksum 3b574a4d681a91a89d45cfd89f614a44505ff450fce32432508abee13469cf6f4a8e8a1962685eb5e610fd5a14e24e38ad555ecf86f446d7a6d4d6964ab40fb8
+docfiles size=262
+ RELOC/doc/latex/pbibtex-manual/LICENSE
+ RELOC/doc/latex/pbibtex-manual/README.md details="Readme"
+ RELOC/doc/latex/pbibtex-manual/jbibtex.pdf
+ RELOC/doc/latex/pbibtex-manual/jbibtex.tex
+ RELOC/doc/latex/pbibtex-manual/jbtxdoc.pdf
+ RELOC/doc/latex/pbibtex-manual/jbtxdoc.tex
+ RELOC/doc/latex/pbibtex-manual/jbtxhak.pdf
+ RELOC/doc/latex/pbibtex-manual/jbtxhak.tex
+ RELOC/doc/latex/pbibtex-manual/pbibtex-manual.pdf details="The manual itself"
+ RELOC/doc/latex/pbibtex-manual/pbibtex-manual.tex
+catalogue-also pbibtex-base
+catalogue-contact-repository https://github.com/texjporg/pbibtex-manual
+catalogue-ctan /biblio/pbibtex/pbibtex-manual
+catalogue-license bsd3
+catalogue-topics biblio japanese japanese-doc
+
name pbox
category Package
revision 24807
@@ -251879,7 +251939,7 @@ catalogue-version 0.15
name pst-optexp
category Package
-revision 57977
+revision 61917
shortdesc Drawing optical experimental setups
relocated 1
longdesc The package is a collection of optical components that
@@ -251889,18 +251949,18 @@ longdesc and fibre components is provided, the alignment, positioning
longdesc and labelling of which can be achieved in very simple and
longdesc flexible ways. The components may be connected with fibers or
longdesc beams, and realistic raytraced beam paths are also possible.
-containersize 37788
-containerchecksum 92302c9c3c4a5a0e7a82fbdb6c72f08aae2ea6a5286f6d8916b19021ace0bdbfd1e935ec4aaac8a18c938c6bb0fa66520f3d98631de419111c43605ad2dc0fbb
-doccontainersize 3192500
-doccontainerchecksum dd920f80c8f271737d8dd8077f06fc851034812233b4f7c30e0ccbe4fc57fc08b430efa9b4eb737744acbe0a0c2e898797efa939bf37468f90e6241e1c28667e
-docfiles size=1619
+containersize 37764
+containerchecksum e38087805258cc4daaba9944f5b7893f9e5ee4c0c7370b447bd35a5bd5990eaaadbf1d1c2df41cf06b8a1b170d56a692e0061590c78df94b7acd6c2dd6ac17de
+doccontainersize 3194704
+doccontainerchecksum 256c88d611f26c1944b163ecc29e23bb77fa04a3317e01d2f287c52334eb9d08437d8d279d7e4c3452b340b90980d4343c458af46005211fbaf367bf5b7317da
+docfiles size=1627
RELOC/doc/latex/pst-optexp/Changes
RELOC/doc/latex/pst-optexp/README details="Readme"
RELOC/doc/latex/pst-optexp/pst-optexp-DE.pdf details="Package manual (German)" language="de"
RELOC/doc/latex/pst-optexp/pst-optexp-quickref.pdf details="Quick reference (cheat-sheet)"
RELOC/doc/latex/pst-optexp/pst-optexp.pdf details="Package manual (English)" language="en"
-srccontainersize 155296
-srccontainerchecksum ccdb1330d6ae5835927ce28c5a38162ab632a0b113d74854d2bb8cabb3d0da7d29e39f74a6245be9e30c03a765c383830cb76a9b6bc8d39aece5b0a05be3824f
+srccontainersize 155324
+srccontainerchecksum 065ab372fecab825dda1584da4fdacde88f388887df959d7c6f52c2974c67daa970a2d7679b65f24f8876ecde0497a13368ed757cc16e01cdae6f83ed7d9dc0c
srcfiles size=207
RELOC/source/latex/pst-optexp/Makefile
RELOC/source/latex/pst-optexp/pst-optexp.dtx
@@ -251913,7 +251973,7 @@ catalogue-contact-repository https://github.com/cbersch/pst-optexp
catalogue-ctan /graphics/pstricks/contrib/pst-optexp
catalogue-license lppl1.3
catalogue-topics optics diagram-lab pstricks
-catalogue-version 6.0
+catalogue-version 6.1
name pst-optic
category Package
@@ -255723,7 +255783,7 @@ catalogue-version 1.0.1
name pwebmac
category Package
-revision 60979
+revision 61922
shortdesc Consolidated WEB macros for DVI and PDF output
relocated 1
longdesc The original WEB system by Donald Knuth has the macros
@@ -255745,11 +255805,11 @@ longdesc in the WEB sources. WEB programmers who want to use pwebmac.tex
longdesc instead of the default webmac.tex in their programs have to
longdesc change the first line in the TeX file created by weave. From
longdesc there, all depends on the "TeX engine" you use.
-containersize 8212
-containerchecksum 0d0c14f1e623aac1258894a06f9e92eee51c209afe9e230f4e3b9cb69049221b9f3955504127386ff4ec03ed458556250a0a9b03ec0edb59c157c32a42fac094
-doccontainersize 10728
-doccontainerchecksum c4f73e463dc63c556d02462a63de51beb1b4128b19eb3e98ed6fa006fbe7bd1460ee95097d5359b67916f69145b1480f797bc2740bd7e4280498dc25f0b65af8
-docfiles size=11
+containersize 8644
+containerchecksum 3dea02607cc864180fd14cc19dd18cf3fc4338742dcf6f6a843b316188656f9d576ae050ae04ce702790d59a450bd8f20a280cc99e452455b41bd9c0be72c174
+doccontainersize 11076
+doccontainerchecksum 4d45d5f9ca292ef249ebcb0fe20fbc0dce6c365267922ed4186d3c714e9cacf3ca742132031f6e5325c9a75778addd94390e6f6aa6e8742fc173d5e858bda069
+docfiles size=12
RELOC/doc/plain/pwebmac/README.md details="Readme"
RELOC/doc/plain/pwebmac/Xerrorlog.tex
RELOC/doc/plain/pwebmac/index.md
@@ -255763,7 +255823,7 @@ catalogue-contact-support https://lists.tug.org/tex-k
catalogue-ctan /web/pwebmac
catalogue-license pd
catalogue-topics litprog
-catalogue-version 4.6.4
+catalogue-version 4.7
name pxbase
category Package
@@ -268774,29 +268834,27 @@ catalogue-version 0.41
name scratch3
category Package
-revision 56258
+revision 61921
shortdesc Draw programs like "scratch"
relocated 1
longdesc This package permits to draw program charts in the style of the
longdesc scatch project (scratch.mit.edu). It depends on the other LaTeX
longdesc packages TikZ and simplekv.
-containersize 8748
-containerchecksum 40d781fcb2ba3628e6e7825d48873917c6a138b46ec2b5c5be894639c1ada93eb3632e17e5be6dbb9974d092f3b75c891dccb33cd93fbdb61dc3261400065d2e
-doccontainersize 518596
-doccontainerchecksum 93fecddc8a36f4ed1c302939678e314b178b600b5983754a9bf7b2b343a8e61174dd7c9aa7926c9c93714045e3e8b9fecc77889562f2f407fe2494283265d69e
-docfiles size=134
+containersize 8832
+containerchecksum f33f18d725253b11097443116e6c0cf4930b7718a5f8678b0d8fd97d8e4854efb31bd016a40a7dec2701a99bf2b5ac6136a856798ead314a8c21cf38013bb513
+doccontainersize 528692
+doccontainerchecksum 97a8e684ff98c9aca2ab57cf93be2cf8bb4c0464fa772828c033622860e46d8c61bf563e346aeff1123665c878bf3fc68c58727ec2c1579e815c7a8ece078ff5
+docfiles size=138
RELOC/doc/latex/scratch3/README details="Readme"
RELOC/doc/latex/scratch3/scratch3-fr.pdf details="Package documentation (French)" language="fr"
RELOC/doc/latex/scratch3/scratch3-fr.tex
runfiles size=12
RELOC/tex/latex/scratch3/scratch3.sty
catalogue-also tikzcodeblocks
-catalogue-contact-bugs https://framagit.org/unbonpetit/scratch3/issues
-catalogue-contact-repository https://framagit.org/unbonpetit/scratch3/tree/master
catalogue-ctan /macros/latex/contrib/scratch3
catalogue-license lppl1.3c
catalogue-topics games pgf-tikz
-catalogue-version 0.18
+catalogue-version 0.19
name scratchx
category Package
@@ -288994,7 +289052,7 @@ binfiles arch=x86_64-solaris size=1
name tex4ht
category Package
-revision 61883
+revision 61924
shortdesc Convert (La)TeX to HTML/XML
longdesc A converter from TeX and LaTeX to SGML-based formats such as
longdesc (X)HTML, MathML, OpenDocument, and Docbook, providing a
@@ -289015,10 +289073,10 @@ longdesc files from them is nontrivial, and generally done with the
longdesc Makefile in development, from which the TeX4ht package in TeX
longdesc Live is updated.
depend tex4ht.ARCH
-containersize 924548
-containerchecksum f09f7323115cae64804c692d76dfd0499172e0419ed2dadd1a74885435dd3c809cf7528e680a65fba4255c05bfacca37885ecdfaa3cf5d14308c449ab24dbd6c
+containersize 927184
+containerchecksum 842c469754f145802582976dc29e6d26f93359d83147f0b219abd115cdc75a769ff647ff997194cb3c6773cc2b08797db57467bb61369c0ef4459dce5ac6e8cf
doccontainersize 136384
-doccontainerchecksum 58d70c3cc3732362363a9c94d2ae370b022f63a231fe7e034cc82e26988da866ab575957879158009df2ce6256ebae4715ca1e515822788cee00f6607fc9b566
+doccontainerchecksum 7e42606b945c5e6b9f134e26bfd1acc1987fb97411fc2a585a8e167c06ebfa6e8f54bd0c47f31b27175e4cb409237c4702aec30503edb90f80a199517e28ab6b
docfiles size=260
texmf-dist/doc/generic/tex4ht/Makefile
texmf-dist/doc/generic/tex4ht/README details="Readme"
@@ -289090,8 +289148,8 @@ docfiles size=260
texmf-dist/doc/generic/tex4ht/mn56.html
texmf-dist/doc/generic/tex4ht/mn5x.png
texmf-dist/doc/generic/tex4ht/mn6x.png
-srccontainersize 1238568
-srccontainerchecksum 5a07efde6c7f24b0b9a213cde2470bef8208edba31e11989f872f6e826944f217b240778b67be618990fbf3400ae98ad0fb05d3d3e39b57f5e9b92540eb47fdf
+srccontainersize 1238584
+srccontainerchecksum 1c9a7dcaf50043d4d01ffc95f121057c937c288ae62929880737848a2329524e7c4a38b766a52d74778d984c370e99f964c6d96304e9405b067d6ef8ad54da50
srcfiles size=3755
texmf-dist/source/generic/tex4ht/ChangeLog
texmf-dist/source/generic/tex4ht/Makefile
@@ -299012,7 +299070,7 @@ docfiles size=376
name texlive-scripts
category TLCore
-revision 61885
+revision 61909
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.
@@ -299020,10 +299078,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 108380
-containerchecksum 530d1f46c526c7ce85048e84c9e3230a63fc5e7d0682b6851fc55ab505acee7f09962d5de9b30720c4c80cca219f77522391848b18be8e00ee6566868b93bb6b
-doccontainersize 403148
-doccontainerchecksum d388f167f4a99110f9bf9d7e3d710c6964682c31f59af32735c4dedaf6589a39dce54cf8275e5a208bdb0b3d55426dd54edc7692d64666e7f8d87ede9d3de546
+containersize 108364
+containerchecksum ee5335203c5163171943e48dbf43bea3bac600691f975050f8ddd453ed8f68eb8cada35ce947da0e36aa8a7ea9d3769e0cf01760aae6e9c7c773d35796ad1294
+doccontainersize 403204
+doccontainerchecksum 8f1bc186434defc2263a2886b30153668cb6fb96e445538a89e23bb05c5f64cf10da6f98d86fede3d71f948d71a57463d4fa39c90447b6713ce0771847d41e88
docfiles size=501
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 60035ca3d1..b82aa42b1d 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
@@ -1 +1 @@
-eb7ed550fb5df3de3d53b7bca8e39c95 texlive.tlpdb
+031bbfd638ad3ed2213745a410e3da84 texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
index 73e4fc5c69..95cd1f9d28 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
@@ -1 +1 @@
-42d4b493008ad4475e44fcd7bbfa35fb6ff9426cee007ff08e55bd17cca156579c9c47d28d8ab12689b6e2c1dcf23e7ef6885c63dc9b5ab792e732ca841ab858 texlive.tlpdb
+4294367c54de2d3558b594d1a88f86771861c4ad596f2865f9ff836f09da72baf459c823c2004ca255905c38e16f62f33d5218ae5e985dfdbedd773f916053e7 texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
index 85887c0225..362d3a169a 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
@@ -1,10 +1,10 @@
-----BEGIN PGP SIGNATURE-----
-iQEcBAEBCgAGBQJh/xwGAAoJEEzhh34ZQ4xwTxEIAKtbxv78wKc6PYkuiGi27NKe
-6jkslW0lpWpXRD/IO6Ub7uSu18BPKD+m9Kk1QsFEQiDURF1m8VeGG9up+wx4z2ah
-neHvJuZfFdko3bVnf3UcCVcEYxJd86/fG1ZbBf1BNlwSX11jCLEciN2xD1OKDuKF
-LogyPQ+kT0x11AsdXSVvK0mwsF12hwH+TmNPZvwYeGYsr0+ErCQSsXndXuW4U9xP
-mKgrHp9mGl4Z0lqKAqiG3UgbZfeiG7FqNvOKDSVu7xEW0w5Y0oGgIQz7ImCSt7zm
-sLC7+KFGHw/pynrr1mrTudGuI1PAT4bgac1su5Hd31nyqJ5aIND/Gg+mL8geGmc=
-=EFVZ
+iQEcBAEBCgAGBQJiAG3mAAoJEEzhh34ZQ4xwIhoH/1oORPVg/bQK2Gk20zSIiwgz
+YgMjyUZte2MdJDjYPOOqw1vSHOaf3A1bEYN2/RRxRRNkk1H+/lkFU3Xq+54QHzqp
+xfhdVroVx6ByyM62dw2qDppho4q3tDytZOc+n4IAFcAUNGsVaYr/MfGoFwUsa3sG
+erufh5NuZNkWTjTMuf+UOjx9B7siU95Ws8Gcg4PTtWNPFDjpsXaLBKtNWTNyxAHS
+nCgMVJN6T3XxX1UVbL+jsMFLeW+2aNPlCaEef1AnaQDJ38ZF1FBVXQBsnP/jvc9Y
+R1oqM5M+6yMc6ftrfvlAvseIxggk0haFbIvna0MOkXrzZmJ9WRe2ZqbYX6LZYaM=
+=p3hs
-----END PGP SIGNATURE-----
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
index 6ba7b83530..772dfd09c1 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
Binary files differ
diff --git a/systems/win32/miktex/tm/packages/files.csv.lzma b/systems/win32/miktex/tm/packages/files.csv.lzma
index b93170fdae..c7f33bf9a6 100644
--- a/systems/win32/miktex/tm/packages/files.csv.lzma
+++ b/systems/win32/miktex/tm/packages/files.csv.lzma
Binary files differ
diff --git a/systems/win32/miktex/tm/packages/next/files.csv.lzma b/systems/win32/miktex/tm/packages/next/files.csv.lzma
index 067bc450b9..1fac0bd8e6 100644
--- a/systems/win32/miktex/tm/packages/next/files.csv.lzma
+++ b/systems/win32/miktex/tm/packages/next/files.csv.lzma
Binary files differ
diff --git a/systems/win32/miktex/tm/packages/next/pr.ini b/systems/win32/miktex/tm/packages/next/pr.ini
index c06a3f999f..93a1c9e335 100644
--- a/systems/win32/miktex/tm/packages/next/pr.ini
+++ b/systems/win32/miktex/tm/packages/next/pr.ini
@@ -1,13 +1,13 @@
[repository]
-date=1644182239
+date=1644268765
lastupd=miktex-arctrl-bin-2.9 miktex-arctrl-bin-x64-2.9 miktex-asymptote-bin-2.9 miktex-asymptote-bin-x64-2.9 miktex-autosp-bin-2.9 miktex-autosp-bin-x64-2.9 miktex-axohelp-bin-2.9 miktex-axohelp-bin-x64-2.9 miktex-bibarts-bin-2.9 miktex-bibarts-bin-x64-2.9 miktex-bibtex-bin-2.9 miktex-bibtex-bin-x64-2.9 miktex-bibtex8bit-bin-2.9 miktex-bibtex8bit-bin-x64-2.9 miktex-bzip2-bin-2.9 miktex-bzip2-bin-x64-2.9 miktex-cairo-bin-2.9 miktex-cairo-bin-x64-2.9 miktex-chktex-bin-2.9 miktex-chktex-bin-x64-2.9
-lstdigest=f26acc75e7aabac4f0988374f96ed843
-numpkg=5283
+lstdigest=3ee8f4cdcb327b273bef0833efd5bcfa
+numpkg=5340
relstate=next
-version=8072
+version=8073
;;;;This configuration file is signed by a MiKTeX maintainer. The signature follows.
;;;;-----BEGIN MIKTEX SIGNATURE-----
-;;;; signature/miktex: V1ISuK4HdoVg2W8IxvtfMxBaMW63EdDEKwL8ieEprwy5uLAHq/pzp+UiHLqCdMWznF9/P3NcnPHTSPgpcNcV6uLL/I3i9HDJTXjmhvms5GJwVZ7OHcJrTCkhxHCbOHK+RCQvJLFP2/r+CNd9j3GOk3qI9WxtW/OIT2CZ7B5pmG6oXbuDB4Vp32ycXwyIXI4x6TLCzFCzGzKSPB/zLC3MZ7jO9AzAYx9kJBJa8kJkhmF07w6lzeD5pE5X7r9cU8UGtb5F+2VZVuDRXtvmoq319Np5FIVvSZOdrcj/hUkqik7kusiWLppiONhjffUhLLzS6MY9lWQLETDaluV5P8tYxw==
+;;;; signature/miktex: eaZrcmvlqM7USW+5YsjV1Otq2Bw8cgPobwIC6aSpm8PSzEpqPJJH8QOZelsM5uI9uzotKhnlEU3lBfDMNQdQT3kf6zjgPSOpsZeMEHCj25FMR4VDP2HG/wa1H4QGeZhkn5f0uTyNAOYmfKLqlkwNRK9EpKCXNWBc9PkLxKRrHN+vDRzw6/ez0wKzo50cyBlLFO11Pu5tpfKg3J3XVfqAsAZIJyIduhg8s6xLVFLDCKmZY07n/RBF9JsKsMxh9lhoUD0hWsnwCvq3jOZB2CkAy9v1aw6qlLZnVVl5thWRKGUHyHJUbylj/XD+t7fAGzGUS/Wbw28SufYRqr23KmYtuA==
;;;;-----END MIKTEX SIGNATURE-----
diff --git a/systems/win32/miktex/tm/packages/pr.ini b/systems/win32/miktex/tm/packages/pr.ini
index c09a06bde5..4ca08d7ad0 100644
--- a/systems/win32/miktex/tm/packages/pr.ini
+++ b/systems/win32/miktex/tm/packages/pr.ini
@@ -1,13 +1,13 @@
[repository]
-date=1644181903
-lastupd=miktex-mo-bin-2.9 miktex-mo-bin-x64-2.9 miktex-runtime-bin-2.9 miktex-runtime-bin-x64-2.9 miktex-arctrl-bin-2.9 miktex-arctrl-bin-x64-2.9 miktex-asymptote-bin-2.9 miktex-asymptote-bin-x64-2.9 miktex-autosp-bin-2.9 miktex-autosp-bin-x64-2.9 miktex-axohelp-bin-2.9 miktex-axohelp-bin-x64-2.9 miktex-bibarts-bin-2.9 miktex-bibarts-bin-x64-2.9 miktex-bibtex-bin-2.9 miktex-bibtex-bin-x64-2.9 miktex-bibtex8bit-bin-2.9 miktex-bibtex8bit-bin-x64-2.9 miktex-bzip2-bin-2.9 miktex-bzip2-bin-x64-2.9
-lstdigest=e46ccc2262643aff37fa7ad90d208f9f
-numpkg=5283
+date=1644268294
+lastupd=sapthesis sapthesis__doc sapthesis__source sillypage sillypage__doc acmart acmart__doc acmart__source acro acro__doc acro__source altsubsup altsubsup__doc altsubsup__source animate animate__doc animate__source autopuncitems autopuncitems__doc autopuncitems__source
+lstdigest=28d1ac2938b22b427004a683b50cc6b0
+numpkg=5340
relstate=stable
-version=8072
+version=8073
;;;;This configuration file is signed by a MiKTeX maintainer. The signature follows.
;;;;-----BEGIN MIKTEX SIGNATURE-----
-;;;; signature/miktex: RlTY9TKauXxWguC9fOIcTDvB/3p9B2DQq0aar1w0XgDPeK8aSAJR2w7W+GJpy1p1M+4cLLwy6LU34D4jw0//TvFELEIeFEy8zEnQrZs1HbpXj+t+ZUh8ytCOINP5u2EvcljqMI25jY/w3U4wB107eb/egkbp0SXexToGgAG8joHxKZvCeGBXFeDDZ99TmCpeFYyrkOvaavo023EwykKwS9vtPWww8iKMUHmchU/r1xE+fjjpFRwHfFon6GyE2lv/Rz8Qy0kp/IvgNCDBTkkxe4Yt9hKsFLYR/KLIlXqJclpRQIdUthrUZUIvYHeLJ3CxDr+Gjbje9i5ijn4eLoqT7Q==
+;;;; signature/miktex: Bw4X9l5V72lBarSnNuZrKHKG86U0lH6Aq1CbofiFrcHpCytfIxWpfEWov8kU3eBK4lWMPuWYGE2HPFoz6sKFlQFRaE8IeBEg+HifaAywuOfktIYxEg9eRX+fcsa4BeYUtxCDjD8gmO1zbfFT6+qhe4oXuGclfert8vj9ZFsLfODGGwmwSJ0vGpb3oJn+fFkum8n3bbMd+QmewYC+KTaDhb/vvTR/pcDRt9g8zeQwPzFybrvuM/CH4+Oh55rP6t/0nvC5Bs45ajUcgHAN5GzYAjsmLN5a96+57G3xbWPnEcYgq7tFZz2HNdhONDgUBmJw9HwX8PuiNiUTEqHgkHcevw==
;;;;-----END MIKTEX SIGNATURE-----
diff --git a/timestamp b/timestamp
index d4ad50fcf5..1aa89b4e0a 100644
--- a/timestamp
+++ b/timestamp
@@ -2,4 +2,4 @@
# The source CTAN of this site's material:
dante.ctan.org
# The year-month-day-hour-minute of this site's material:
-2022-02-07-02-02
+2022-02-08-02-02