summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FILES.byname238
-rw-r--r--FILES.byname.gzbin2529707 -> 2529659 bytes
-rw-r--r--FILES.last07days326
-rw-r--r--biblio/ctan-bibdata/ctan.bib14
-rw-r--r--biblio/ctan-bibdata/ctan.pdfbin3666004 -> 3666520 bytes
-rw-r--r--graphics/pgf/contrib/tikz-nfold/README.md2
-rw-r--r--graphics/pgf/contrib/tikz-nfold/pgflibrarybezieroffset.code.tex291
-rw-r--r--graphics/pgf/contrib/tikz-nfold/tikz-nfold-doc.pdfbin302366 -> 302747 bytes
-rw-r--r--graphics/pgf/contrib/tikz-nfold/tikz-nfold-doc.tex30
-rw-r--r--graphics/pgf/contrib/tikz-nfold/tikzlibrarynfold.code.tex1040
-rw-r--r--macros/latex/contrib/biblatex-contrib/windycity/CHANGES.md41
-rw-r--r--macros/latex/contrib/biblatex-contrib/windycity/american-windycity.lbx4
-rw-r--r--macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.bib36
-rw-r--r--macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.pdfbin507249 -> 512581 bytes
-rw-r--r--macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.sty26
-rw-r--r--macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.tex221
-rw-r--r--macros/latex/contrib/biblatex-contrib/windycity/windycity.bbx542
-rw-r--r--macros/latex/contrib/biblatex-contrib/windycity/windycity.cbx24
-rw-r--r--macros/latex/contrib/biblatex-contrib/windycity/windycity.dbx8
-rw-r--r--macros/latex/contrib/colorwav/README9
-rw-r--r--macros/latex/contrib/colorwav/colorwav.dtx6
-rw-r--r--macros/latex/contrib/colorwav/colorwav.ins8
-rw-r--r--macros/latex/contrib/cool/README11
-rw-r--r--macros/latex/contrib/cool/cool.dtx4
-rw-r--r--macros/latex/contrib/cool/cool.ins8
-rw-r--r--macros/latex/contrib/coollist/coollist.dtx4
-rw-r--r--macros/latex/contrib/coollist/coollist.ins8
-rw-r--r--macros/latex/contrib/coolstr/README11
-rw-r--r--macros/latex/contrib/coolstr/coolstr.dtx6
-rw-r--r--macros/latex/contrib/coolstr/coolstr.ins8
-rw-r--r--macros/latex/contrib/dyntree/README48
-rw-r--r--macros/latex/contrib/dyntree/dyntree.dtx2280
-rw-r--r--macros/latex/contrib/dyntree/dyntree.ins80
-rw-r--r--macros/latex/contrib/forloop/README61
-rw-r--r--macros/latex/contrib/forloop/forloop.dtx290
-rw-r--r--macros/latex/contrib/forloop/forloop.ins80
-rw-r--r--macros/latex/contrib/thmtools/doc/changes.txt7
-rw-r--r--macros/latex/contrib/thmtools/doc/thmtools-manual.pdfbin251351 -> 251757 bytes
-rw-r--r--macros/latex/contrib/thmtools/source/VERSION.tex2
-rw-r--r--macros/latex/contrib/thmtools/source/thm-kv.dtx6
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb170
-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.xzbin2447464 -> 2446760 bytes
-rw-r--r--timestamp2
46 files changed, 3292 insertions, 2678 deletions
diff --git a/FILES.byname b/FILES.byname
index 5d22cda777..98d8601333 100644
--- a/FILES.byname
+++ b/FILES.byname
@@ -2056,12 +2056,12 @@
2023/04/13 | 1675 | biblio/citation-style-language/README.md
2023/04/13 | 11957 | biblio/citation-style-language/vancouver.csl
2023/04/13 | 4516625 | biblio/citation-style-language.zip
-2023/05/03 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
+2023/05/04 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
2022/10/08 | 127 | biblio/ctan-bibdata/biblatex-ctan/ctan.cbx
-2023/05/03 | 2780799 | biblio/ctan-bibdata/ctan.bib
-2023/05/03 | 3666089 | biblio/ctan-bibdata/ctan.pdf
+2023/05/04 | 2780800 | biblio/ctan-bibdata/ctan.bib
+2023/05/04 | 3666004 | biblio/ctan-bibdata/ctan.pdf
2023/01/16 | 1489 | biblio/ctan-bibdata/README
-2023/05/03 | 4063378 | biblio/ctan-bibdata.zip
+2023/05/04 | 4063625 | biblio/ctan-bibdata.zip
2023/02/23 | 3126 | biblio/pbibtex/pbibtex-base/cpp.awk
2023/02/23 | 1009 | biblio/pbibtex/pbibtex-base/generate.sh
2023/02/23 | 22362 | biblio/pbibtex/pbibtex-base/jabbrv.bst
@@ -5417,7 +5417,7 @@
1990/10/02 | 5440 | dviware/vutex/vaxvms.hlp
1990/10/02 | 812 | dviware/vutex/vaxvms.ins
1990/10/02 | 127576 | dviware/vutex/vutex.web
-2023/05/03 | 62560 | FILES.last07days
+2023/05/04 | 65944 | 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
@@ -160788,12 +160788,12 @@
2019/08/15 | 53372 | graphics/pgf/contrib/tikz-network/tikz-network.sty
2019/08/15 | 145240 | graphics/pgf/contrib/tikz-network/tikz-network.tex
2019/08/15 | 1017759 | graphics/pgf/contrib/tikz-network.zip
-2023/04/23 | 16016 | graphics/pgf/contrib/tikz-nfold/pgflibrarybezieroffset.code.tex
-2023/04/23 | 706 | graphics/pgf/contrib/tikz-nfold/README.md
-2023/04/24 | 47614 | graphics/pgf/contrib/tikz-nfold/tikzlibrarynfold.code.tex
-2023/04/24 | 302366 | graphics/pgf/contrib/tikz-nfold/tikz-nfold-doc.pdf
-2023/04/24 | 31568 | graphics/pgf/contrib/tikz-nfold/tikz-nfold-doc.tex
-2023/04/24 | 292443 | graphics/pgf/contrib/tikz-nfold.zip
+2023/05/01 | 18440 | graphics/pgf/contrib/tikz-nfold/pgflibrarybezieroffset.code.tex
+2023/05/04 | 706 | graphics/pgf/contrib/tikz-nfold/README.md
+2023/05/04 | 52882 | graphics/pgf/contrib/tikz-nfold/tikzlibrarynfold.code.tex
+2023/05/04 | 302747 | graphics/pgf/contrib/tikz-nfold/tikz-nfold-doc.pdf
+2023/05/04 | 31829 | graphics/pgf/contrib/tikz-nfold/tikz-nfold-doc.tex
+2023/05/04 | 294766 | graphics/pgf/contrib/tikz-nfold.zip
2014/01/23 | 19106 | graphics/pgf/contrib/tikz-opm/LICENSE
2014/01/23 | 215 | graphics/pgf/contrib/tikz-opm/README
2014/01/23 | 74999 | graphics/pgf/contrib/tikz-opm/tikz-opm.pdf
@@ -214867,18 +214867,18 @@
2013/08/10 | 82924 | macros/latex/contrib/biblatex-contrib/uni-wtal-lin/uni-wtal-lin.pdf
2013/08/10 | 15521 | macros/latex/contrib/biblatex-contrib/uni-wtal-lin/uni-wtal-lin.tex
2013/08/10 | 97430 | macros/latex/contrib/biblatex-contrib/uni-wtal-lin.zip
-2021/12/04 | 14348 | macros/latex/contrib/biblatex-contrib/windycity/american-windycity.lbx
-2021/12/04 | 24903 | macros/latex/contrib/biblatex-contrib/windycity/CHANGES.md
-2021/12/04 | 84371 | macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.bib
-2021/12/04 | 507249 | macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.pdf
-2021/12/04 | 9051 | macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.sty
-2021/12/04 | 147119 | macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.tex
-2021/12/04 | 19106 | macros/latex/contrib/biblatex-contrib/windycity/LICENCE
-2021/12/04 | 3863 | macros/latex/contrib/biblatex-contrib/windycity/README.md
-2021/12/04 | 83379 | macros/latex/contrib/biblatex-contrib/windycity/windycity.bbx
-2021/12/04 | 20000 | macros/latex/contrib/biblatex-contrib/windycity/windycity.cbx
-2021/12/04 | 788 | macros/latex/contrib/biblatex-contrib/windycity/windycity.dbx
-2021/12/04 | 602815 | macros/latex/contrib/biblatex-contrib/windycity.zip
+2023/05/04 | 14348 | macros/latex/contrib/biblatex-contrib/windycity/american-windycity.lbx
+2023/05/04 | 26870 | macros/latex/contrib/biblatex-contrib/windycity/CHANGES.md
+2023/05/04 | 85114 | macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.bib
+2023/05/04 | 512581 | macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.pdf
+2023/05/04 | 9332 | macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.sty
+2023/05/04 | 151504 | macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.tex
+2023/05/04 | 19106 | macros/latex/contrib/biblatex-contrib/windycity/LICENCE
+2023/05/04 | 3863 | macros/latex/contrib/biblatex-contrib/windycity/README.md
+2023/05/04 | 95973 | macros/latex/contrib/biblatex-contrib/windycity/windycity.bbx
+2023/05/04 | 20090 | macros/latex/contrib/biblatex-contrib/windycity/windycity.cbx
+2023/05/04 | 788 | macros/latex/contrib/biblatex-contrib/windycity/windycity.dbx
+2023/05/04 | 610524 | macros/latex/contrib/biblatex-contrib/windycity.zip
2023/03/05 | 1641916 | macros/latex/contrib/biblatex/doc/biblatex.pdf
2023/03/05 | 1062631 | macros/latex/contrib/biblatex/doc/biblatex.tex
2023/03/05 | 167962 | macros/latex/contrib/biblatex/doc/examples/01-introduction-biber.pdf
@@ -217422,11 +217422,11 @@
2022/07/30 | 296824 | macros/latex/contrib/colortbl/colortbl.pdf
2022/07/30 | 295 | macros/latex/contrib/colortbl/README.txt
2022/07/31 | 640665 | macros/latex/contrib/colortbl.zip
-2007/04/13 | 21955 | macros/latex/contrib/colorwav/colorwav.dtx
-2007/04/13 | 1171 | macros/latex/contrib/colorwav/colorwav.ins
+2023/05/04 | 22074 | macros/latex/contrib/colorwav/colorwav.dtx
+2023/05/04 | 1183 | macros/latex/contrib/colorwav/colorwav.ins
2007/04/13 | 115189 | macros/latex/contrib/colorwav/colorwav.pdf
-2007/04/13 | 935 | macros/latex/contrib/colorwav/README
-2007/04/14 | 104689 | macros/latex/contrib/colorwav.zip
+2023/05/04 | 967 | macros/latex/contrib/colorwav/README
+2023/05/04 | 104792 | macros/latex/contrib/colorwav.zip
2013/08/20 | 81299 | macros/latex/contrib/colorweb/colorweb.dtx
2013/08/20 | 799372 | macros/latex/contrib/colorweb/colorwebfull.pdf
2013/08/20 | 1672 | macros/latex/contrib/colorweb/colorweb.ins
@@ -217735,26 +217735,26 @@
2009/10/12 | 2027 | macros/latex/contrib/cookybooky/README
2009/10/13 | 1055701 | macros/latex/contrib/cookybooky.zip
2006/10/08 | 161424 | macros/latex/contrib/cool/Content_LaTeX_Package_Demo.pdf
-2006/09/24 | 91277 | macros/latex/contrib/cool/Content_LaTeX_Package_Demo.tex
-2006/12/30 | 184152 | macros/latex/contrib/cool/cool.dtx
-2006/09/24 | 1164 | macros/latex/contrib/cool/cool.ins
+2006/09/25 | 91277 | macros/latex/contrib/cool/Content_LaTeX_Package_Demo.tex
+2023/05/04 | 184270 | macros/latex/contrib/cool/cool.dtx
+2023/05/04 | 1177 | macros/latex/contrib/cool/cool.ins
2006/12/30 | 319582 | macros/latex/contrib/cool/cool.pdf
2023/02/27 | 52355 | macros/latex/contrib/coolfn/coolfndocumentation.pdf
2023/02/27 | 7618 | macros/latex/contrib/coolfn/coolfndocumentation.tex
2023/02/27 | 3051 | macros/latex/contrib/coolfn/coolfn.sty
2023/02/27 | 522 | macros/latex/contrib/coolfn/README
2023/02/27 | 55631 | macros/latex/contrib/coolfn.zip
-2022/06/09 | 32259 | macros/latex/contrib/coollist/coollist.dtx
-2006/08/14 | 1171 | macros/latex/contrib/coollist/coollist.ins
-2009/09/20 | 127965 | macros/latex/contrib/coollist/coollist.pdf
-2022/06/09 | 560 | macros/latex/contrib/coollist/README
-2022/06/09 | 119365 | macros/latex/contrib/coollist.zip
-2006/09/24 | 1281 | macros/latex/contrib/cool/README
-2009/09/09 | 33268 | macros/latex/contrib/coolstr/coolstr.dtx
-2007/01/10 | 1168 | macros/latex/contrib/coolstr/coolstr.ins
+2023/05/04 | 32259 | macros/latex/contrib/coollist/coollist.dtx
+2023/05/04 | 1183 | macros/latex/contrib/coollist/coollist.ins
+2009/09/21 | 127965 | macros/latex/contrib/coollist/coollist.pdf
+2022/06/10 | 560 | macros/latex/contrib/coollist/README
+2023/05/04 | 119381 | macros/latex/contrib/coollist.zip
+2023/05/04 | 1313 | macros/latex/contrib/cool/README
+2023/05/04 | 33387 | macros/latex/contrib/coolstr/coolstr.dtx
+2023/05/04 | 1180 | macros/latex/contrib/coolstr/coolstr.ins
2009/09/09 | 137217 | macros/latex/contrib/coolstr/coolstr.pdf
-2007/01/10 | 1081 | macros/latex/contrib/coolstr/README
-2009/09/09 | 124835 | macros/latex/contrib/coolstr.zip
+2023/05/04 | 1113 | macros/latex/contrib/coolstr/README
+2023/05/04 | 124951 | macros/latex/contrib/coolstr.zip
2013/02/04 | 30406 | macros/latex/contrib/coolthms/coolthms.dtx
2013/02/04 | 101 | macros/latex/contrib/coolthms/coolthms.ins
2013/02/04 | 110457 | macros/latex/contrib/coolthms/coolthms.pdf
@@ -217767,7 +217767,7 @@
2021/08/08 | 35248 | macros/latex/contrib/cooltooltips/example.png
2021/08/08 | 1782 | macros/latex/contrib/cooltooltips/README
2021/08/09 | 234548 | macros/latex/contrib/cooltooltips.zip
-2006/12/30 | 446356 | macros/latex/contrib/cool.zip
+2023/05/04 | 446445 | macros/latex/contrib/cool.zip
2022/01/13 | 63516 | macros/latex/contrib/coop-writing/coop-writing.dtx
2022/01/13 | 1367 | macros/latex/contrib/coop-writing/coop-writing.ins
2022/01/13 | 484394 | macros/latex/contrib/coop-writing/coop-writing.pdf
@@ -219575,11 +219575,11 @@
2021/04/01 | 141825 | macros/latex/contrib/dynbrackets/dynbrackets.pdf
2021/04/01 | 662 | macros/latex/contrib/dynbrackets/README.md
2021/04/01 | 137049 | macros/latex/contrib/dynbrackets.zip
-2006/08/18 | 43958 | macros/latex/contrib/dyntree/dyntree.dtx
-2006/08/18 | 1213 | macros/latex/contrib/dyntree/dyntree.ins
+2023/05/04 | 42939 | macros/latex/contrib/dyntree/dyntree.dtx
+2023/05/04 | 1180 | macros/latex/contrib/dyntree/dyntree.ins
2006/08/18 | 149074 | macros/latex/contrib/dyntree/dyntree.pdf
-2006/08/18 | 1354 | macros/latex/contrib/dyntree/README
-2006/08/20 | 138576 | macros/latex/contrib/dyntree.zip
+2023/05/04 | 1366 | macros/latex/contrib/dyntree/README
+2023/05/04 | 138606 | macros/latex/contrib/dyntree.zip
2021/01/24 | 311973 | macros/latex/contrib/ean13isbn/ean13isbn.pdf
2021/01/24 | 3399 | macros/latex/contrib/ean13isbn/ean13isbn.sty
2021/01/24 | 7901 | macros/latex/contrib/ean13isbn/ean13isbn.tex
@@ -222457,11 +222457,11 @@
2012/09/25 | 99375 | macros/latex/contrib/foreign/foreign.pdf
2012/09/25 | 749 | macros/latex/contrib/foreign/README
2012/09/26 | 89526 | macros/latex/contrib/foreign.zip
-2006/09/19 | 5180 | macros/latex/contrib/forloop/forloop.dtx
-2006/09/17 | 1207 | macros/latex/contrib/forloop/forloop.ins
+2023/05/04 | 5156 | macros/latex/contrib/forloop/forloop.dtx
+2023/05/04 | 1180 | macros/latex/contrib/forloop/forloop.ins
2006/09/19 | 82547 | macros/latex/contrib/forloop/forloop.pdf
-2006/09/17 | 861 | macros/latex/contrib/forloop/README
-2006/09/19 | 74144 | macros/latex/contrib/forloop.zip
+2023/05/04 | 864 | macros/latex/contrib/forloop/README
+2023/05/04 | 74217 | macros/latex/contrib/forloop.zip
2022/02/09 | 18906 | macros/latex/contrib/formal-grammar/formal-grammar.dtx
2022/02/09 | 1446 | macros/latex/contrib/formal-grammar/formal-grammar.ins
2022/02/09 | 235309 | macros/latex/contrib/formal-grammar/formal-grammar.pdf
@@ -238686,30 +238686,30 @@
2005/04/24 | 228 | macros/latex/contrib/thmbox/thmbox.ins
2005/04/25 | 117069 | macros/latex/contrib/thmbox/thmbox.pdf
2005/04/25 | 103692 | macros/latex/contrib/thmbox.zip
-2023/02/17 | 1841 | macros/latex/contrib/thmtools/doc/changes.txt
-2023/02/17 | 19106 | macros/latex/contrib/thmtools/doc/COPYING
-2023/02/17 | 251351 | macros/latex/contrib/thmtools/doc/thmtools-manual.pdf
-2023/02/17 | 44577 | macros/latex/contrib/thmtools/doc/thmtools-manual.tex
-2023/02/17 | 736 | macros/latex/contrib/thmtools/README.md
-2023/02/17 | 4454 | macros/latex/contrib/thmtools/source/aliasctr.dtx
-2023/02/17 | 2046 | macros/latex/contrib/thmtools/source/parseargs.dtx
-2023/02/17 | 4679 | macros/latex/contrib/thmtools/source/thm-amsthm.dtx
-2023/02/17 | 3240 | macros/latex/contrib/thmtools/source/thm-autoref.dtx
-2023/02/17 | 1531 | macros/latex/contrib/thmtools/source/thm-beamer.dtx
-2023/02/17 | 950 | macros/latex/contrib/thmtools/source/thmdef-mdframed.dtx
-2023/02/17 | 4534 | macros/latex/contrib/thmtools/source/thmdef-shaded.dtx
-2023/02/17 | 1732 | macros/latex/contrib/thmtools/source/thmdef-thmbox.dtx
-2023/02/17 | 16451 | macros/latex/contrib/thmtools/source/thm-kv.dtx
-2023/02/17 | 7911 | macros/latex/contrib/thmtools/source/thm-listof.dtx
-2023/02/17 | 2779 | macros/latex/contrib/thmtools/source/thm-llncs.dtx
-2023/02/17 | 3526 | macros/latex/contrib/thmtools/source/thm-ntheorem.dtx
-2023/02/17 | 8580 | macros/latex/contrib/thmtools/source/thm-patch.dtx
-2023/02/17 | 12064 | macros/latex/contrib/thmtools/source/thm-restate.dtx
-2023/02/17 | 2117 | macros/latex/contrib/thmtools/source/thmtools.dtx
-2023/02/17 | 2500 | macros/latex/contrib/thmtools/source/thmtools.ins
-2023/02/17 | 5639 | macros/latex/contrib/thmtools/source/unique.dtx
-2023/02/17 | 31 | macros/latex/contrib/thmtools/source/VERSION.tex
-2023/02/17 | 297598 | macros/latex/contrib/thmtools.zip
+2023/05/04 | 2116 | macros/latex/contrib/thmtools/doc/changes.txt
+2023/05/04 | 19106 | macros/latex/contrib/thmtools/doc/COPYING
+2023/05/04 | 251757 | macros/latex/contrib/thmtools/doc/thmtools-manual.pdf
+2023/05/04 | 44577 | macros/latex/contrib/thmtools/doc/thmtools-manual.tex
+2023/05/04 | 736 | macros/latex/contrib/thmtools/README.md
+2023/05/04 | 4454 | macros/latex/contrib/thmtools/source/aliasctr.dtx
+2023/05/04 | 2046 | macros/latex/contrib/thmtools/source/parseargs.dtx
+2023/05/04 | 4679 | macros/latex/contrib/thmtools/source/thm-amsthm.dtx
+2023/05/04 | 3240 | macros/latex/contrib/thmtools/source/thm-autoref.dtx
+2023/05/04 | 1531 | macros/latex/contrib/thmtools/source/thm-beamer.dtx
+2023/05/04 | 950 | macros/latex/contrib/thmtools/source/thmdef-mdframed.dtx
+2023/05/04 | 4534 | macros/latex/contrib/thmtools/source/thmdef-shaded.dtx
+2023/05/04 | 1732 | macros/latex/contrib/thmtools/source/thmdef-thmbox.dtx
+2023/05/04 | 16466 | macros/latex/contrib/thmtools/source/thm-kv.dtx
+2023/05/04 | 7911 | macros/latex/contrib/thmtools/source/thm-listof.dtx
+2023/05/04 | 2779 | macros/latex/contrib/thmtools/source/thm-llncs.dtx
+2023/05/04 | 3526 | macros/latex/contrib/thmtools/source/thm-ntheorem.dtx
+2023/05/04 | 8580 | macros/latex/contrib/thmtools/source/thm-patch.dtx
+2023/05/04 | 12064 | macros/latex/contrib/thmtools/source/thm-restate.dtx
+2023/05/04 | 2117 | macros/latex/contrib/thmtools/source/thmtools.dtx
+2023/05/04 | 2500 | macros/latex/contrib/thmtools/source/thmtools.ins
+2023/05/04 | 5639 | macros/latex/contrib/thmtools/source/unique.dtx
+2023/05/04 | 31 | macros/latex/contrib/thmtools/source/VERSION.tex
+2023/05/04 | 297619 | macros/latex/contrib/thmtools.zip
2020/01/17 | 8120 | macros/latex/contrib/thorshammer/action-sequences.zip
2020/01/13 | 49921 | macros/latex/contrib/thorshammer/container.pdf
2021/06/26 | 487300 | macros/latex/contrib/thorshammer/docs/install-action-seq.pdf
@@ -285074,7 +285074,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
-2023/05/02 | 222574 | support/TeX4ht/source/ChangeLog
+2023/05/03 | 222733 | 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
@@ -285086,7 +285086,7 @@
2021/05/03 | 1121 | support/TeX4ht/source/README
2021/05/03 | 1744 | support/TeX4ht/source/t1fontmake.lua
2021/05/03 | 297 | support/TeX4ht/source/t1fontsample.tex
-2023/05/02 | 1161380 | support/TeX4ht/source/tex4ht-4ht.tex
+2023/05/03 | 1161612 | support/TeX4ht/source/tex4ht-4ht.tex
2021/05/03 | 7127 | support/TeX4ht/source/tex4ht-auto-script.tex
2021/05/16 | 1539 | support/TeX4ht/source/tex4ht-bibtex2.tex
2022/06/05 | 21307 | support/TeX4ht/source/tex4ht-cond4ht.tex
@@ -290122,8 +290122,8 @@
2021/07/26 | 1568 | systems/texlive/tlnet/archive/beamertheme-simpledarkblue.r60061.tar.xz
2022/10/22 | 37024 | systems/texlive/tlnet/archive/beamertheme-simpleplus.doc.r64770.tar.xz
2022/10/22 | 1904 | systems/texlive/tlnet/archive/beamertheme-simpleplus.r64770.tar.xz
-2022/09/15 | 170224 | systems/texlive/tlnet/archive/beamertheme-tcolorbox.doc.r64387.tar.xz
-2022/09/15 | 2356 | systems/texlive/tlnet/archive/beamertheme-tcolorbox.r64387.tar.xz
+2023/05/04 | 170588 | systems/texlive/tlnet/archive/beamertheme-tcolorbox.doc.r67000.tar.xz
+2023/05/04 | 2396 | systems/texlive/tlnet/archive/beamertheme-tcolorbox.r67000.tar.xz
2023/02/20 | 585252 | systems/texlive/tlnet/archive/beamertheme-trigon.doc.r65985.tar.xz
2023/02/20 | 6096 | systems/texlive/tlnet/archive/beamertheme-trigon.r65985.tar.xz
2023/02/20 | 15168 | systems/texlive/tlnet/archive/beamertheme-trigon.source.r65985.tar.xz
@@ -293173,9 +293173,9 @@
2019/02/28 | 17252 | systems/texlive/tlnet/archive/eskdx.r29235.tar.xz
2019/02/28 | 3928 | systems/texlive/tlnet/archive/esk.r18115.tar.xz
2019/02/28 | 15476 | systems/texlive/tlnet/archive/esk.source.r18115.tar.xz
-2023/03/24 | 290156 | systems/texlive/tlnet/archive/eso-pic.doc.r66655.tar.xz
-2023/03/24 | 3840 | systems/texlive/tlnet/archive/eso-pic.r66655.tar.xz
-2023/03/24 | 6492 | systems/texlive/tlnet/archive/eso-pic.source.r66655.tar.xz
+2023/05/04 | 290476 | systems/texlive/tlnet/archive/eso-pic.doc.r67001.tar.xz
+2023/05/04 | 3840 | systems/texlive/tlnet/archive/eso-pic.r67001.tar.xz
+2023/05/04 | 6528 | systems/texlive/tlnet/archive/eso-pic.source.r67001.tar.xz
2019/02/28 | 158904 | systems/texlive/tlnet/archive/esrelation.doc.r37236.tar.xz
2019/02/28 | 33064 | systems/texlive/tlnet/archive/esrelation.r37236.tar.xz
2019/02/28 | 6484 | systems/texlive/tlnet/archive/esrelation.source.r37236.tar.xz
@@ -296232,9 +296232,9 @@
2023/05/03 | 2036544 | systems/texlive/tlnet/archive/luahbtex.i386-netbsd.r66987.tar.xz
2023/03/10 | 2108732 | systems/texlive/tlnet/archive/luahbtex.i386-solaris.r66509.tar.xz
2023/02/27 | 460 | systems/texlive/tlnet/archive/luahbtex.r66186.tar.xz
-2023/03/11 | 3681308 | systems/texlive/tlnet/archive/luahbtex.universal-darwin.r66529.tar.xz
+2023/05/04 | 3680412 | systems/texlive/tlnet/archive/luahbtex.universal-darwin.r67006.tar.xz
2023/05/03 | 1916608 | systems/texlive/tlnet/archive/luahbtex.windows.r66994.tar.xz
-2023/03/11 | 2099556 | systems/texlive/tlnet/archive/luahbtex.x86_64-cygwin.r66544.tar.xz
+2023/05/04 | 2110468 | systems/texlive/tlnet/archive/luahbtex.x86_64-cygwin.r66997.tar.xz
2023/03/10 | 1927100 | systems/texlive/tlnet/archive/luahbtex.x86_64-darwinlegacy.r66509.tar.xz
2023/03/10 | 2445908 | systems/texlive/tlnet/archive/luahbtex.x86_64-linuxmusl.r66511.tar.xz
2023/05/03 | 2204852 | systems/texlive/tlnet/archive/luahbtex.x86_64-linux.r66986.tar.xz
@@ -296260,9 +296260,9 @@
2023/03/10 | 3836024 | systems/texlive/tlnet/archive/luajittex.i386-linux.r66511.tar.xz
2023/05/03 | 3591804 | systems/texlive/tlnet/archive/luajittex.i386-netbsd.r66987.tar.xz
2023/02/27 | 484 | systems/texlive/tlnet/archive/luajittex.r66186.tar.xz
-2023/03/11 | 6663692 | systems/texlive/tlnet/archive/luajittex.universal-darwin.r66529.tar.xz
+2023/05/04 | 6664880 | systems/texlive/tlnet/archive/luajittex.universal-darwin.r67006.tar.xz
2023/05/03 | 3877948 | systems/texlive/tlnet/archive/luajittex.windows.r66994.tar.xz
-2023/03/11 | 2553560 | systems/texlive/tlnet/archive/luajittex.x86_64-cygwin.r66544.tar.xz
+2023/05/04 | 2564004 | systems/texlive/tlnet/archive/luajittex.x86_64-cygwin.r66997.tar.xz
2023/03/10 | 2289348 | systems/texlive/tlnet/archive/luajittex.x86_64-darwinlegacy.r66509.tar.xz
2023/03/10 | 4031752 | systems/texlive/tlnet/archive/luajittex.x86_64-linuxmusl.r66511.tar.xz
2023/05/03 | 4032308 | systems/texlive/tlnet/archive/luajittex.x86_64-linux.r66986.tar.xz
@@ -296348,18 +296348,18 @@
2023/03/10 | 1856468 | systems/texlive/tlnet/archive/luatex.i386-linux.r66511.tar.xz
2023/05/03 | 1457072 | systems/texlive/tlnet/archive/luatex.i386-netbsd.r66987.tar.xz
2023/03/10 | 1616716 | systems/texlive/tlnet/archive/luatex.i386-solaris.r66509.tar.xz
-2023/04/10 | 3249732 | systems/texlive/tlnet/archive/luatexja.doc.r66814.tar.xz
-2023/04/10 | 193088 | systems/texlive/tlnet/archive/luatexja.r66814.tar.xz
-2023/04/10 | 83904 | systems/texlive/tlnet/archive/luatexja.source.r66814.tar.xz
+2023/05/04 | 3244724 | systems/texlive/tlnet/archive/luatexja.doc.r67003.tar.xz
+2023/05/04 | 193016 | systems/texlive/tlnet/archive/luatexja.r67003.tar.xz
+2023/05/04 | 83900 | systems/texlive/tlnet/archive/luatexja.source.r67003.tar.xz
2022/11/02 | 350116 | systems/texlive/tlnet/archive/luatexko.doc.r64893.tar.xz
2022/11/02 | 23448 | systems/texlive/tlnet/archive/luatexko.r64893.tar.xz
2023/04/30 | 13712 | systems/texlive/tlnet/archive/luatex.r66967.tar.xz
2019/02/28 | 317312 | systems/texlive/tlnet/archive/luatextra.doc.r20747.tar.xz
2019/02/28 | 1056 | systems/texlive/tlnet/archive/luatextra.r20747.tar.xz
2019/02/28 | 3492 | systems/texlive/tlnet/archive/luatextra.source.r20747.tar.xz
-2023/03/11 | 3039380 | systems/texlive/tlnet/archive/luatex.universal-darwin.r66529.tar.xz
+2023/05/04 | 3035812 | systems/texlive/tlnet/archive/luatex.universal-darwin.r67006.tar.xz
2023/05/03 | 2092324 | systems/texlive/tlnet/archive/luatex.windows.r66994.tar.xz
-2023/03/11 | 1746204 | systems/texlive/tlnet/archive/luatex.x86_64-cygwin.r66544.tar.xz
+2023/05/04 | 1746216 | systems/texlive/tlnet/archive/luatex.x86_64-cygwin.r66997.tar.xz
2023/03/10 | 1599084 | systems/texlive/tlnet/archive/luatex.x86_64-darwinlegacy.r66509.tar.xz
2023/03/10 | 1917108 | systems/texlive/tlnet/archive/luatex.x86_64-linuxmusl.r66511.tar.xz
2023/05/03 | 1618088 | systems/texlive/tlnet/archive/luatex.x86_64-linux.r66986.tar.xz
@@ -297509,9 +297509,9 @@
2022/03/06 | 210180 | systems/texlive/tlnet/archive/njustthesis.doc.r62451.tar.xz
2022/03/06 | 4484 | systems/texlive/tlnet/archive/njustthesis.r62451.tar.xz
2022/03/06 | 4832 | systems/texlive/tlnet/archive/njustthesis.source.r62451.tar.xz
-2023/05/03 | 1209552 | systems/texlive/tlnet/archive/njuthesis.doc.r66991.tar.xz
-2023/05/03 | 20312 | systems/texlive/tlnet/archive/njuthesis.r66991.tar.xz
-2023/05/03 | 66440 | systems/texlive/tlnet/archive/njuthesis.source.r66991.tar.xz
+2023/05/04 | 1211600 | systems/texlive/tlnet/archive/njuthesis.doc.r67004.tar.xz
+2023/05/04 | 20512 | systems/texlive/tlnet/archive/njuthesis.r67004.tar.xz
+2023/05/04 | 66548 | systems/texlive/tlnet/archive/njuthesis.source.r67004.tar.xz
2022/12/14 | 666060 | systems/texlive/tlnet/archive/njuvisual.doc.r65261.tar.xz
2022/12/14 | 211156 | systems/texlive/tlnet/archive/njuvisual.r65261.tar.xz
2022/12/14 | 219728 | systems/texlive/tlnet/archive/njuvisual.source.r65261.tar.xz
@@ -298506,8 +298506,8 @@
2023/02/25 | 352 | systems/texlive/tlnet/archive/platex.x86_64-solaris.r66126.tar.xz
2022/08/08 | 137636 | systems/texlive/tlnet/archive/plautopatch.doc.r64072.tar.xz
2022/08/08 | 7076 | systems/texlive/tlnet/archive/plautopatch.r64072.tar.xz
-2023/04/30 | 447360 | systems/texlive/tlnet/archive/playcards.doc.r66968.tar.xz
-2023/04/30 | 2076 | systems/texlive/tlnet/archive/playcards.r66968.tar.xz
+2023/05/04 | 423848 | systems/texlive/tlnet/archive/playcards.doc.r66999.tar.xz
+2023/05/04 | 2180 | systems/texlive/tlnet/archive/playcards.r66999.tar.xz
2019/02/28 | 552 | systems/texlive/tlnet/archive/play.doc.r15878.tar.xz
2022/10/30 | 251116 | systems/texlive/tlnet/archive/playfair.doc.r64857.tar.xz
2022/10/30 | 1679528 | systems/texlive/tlnet/archive/playfair.r64857.tar.xz
@@ -298682,8 +298682,8 @@
2023/05/03 | 1274524 | systems/texlive/tlnet/archive/profcollege.r66990.tar.xz
2022/04/27 | 134096 | systems/texlive/tlnet/archive/proflabo.doc.r63147.tar.xz
2022/04/27 | 2748 | systems/texlive/tlnet/archive/proflabo.r63147.tar.xz
-2023/04/29 | 1829180 | systems/texlive/tlnet/archive/proflycee.doc.r66962.tar.xz
-2023/04/29 | 33924 | systems/texlive/tlnet/archive/proflycee.r66962.tar.xz
+2023/05/04 | 1830792 | systems/texlive/tlnet/archive/proflycee.doc.r67002.tar.xz
+2023/05/04 | 34008 | systems/texlive/tlnet/archive/proflycee.r67002.tar.xz
2019/02/28 | 49880 | systems/texlive/tlnet/archive/program.doc.r44214.tar.xz
2019/02/28 | 11780 | systems/texlive/tlnet/archive/program.r44214.tar.xz
2019/02/28 | 86236 | systems/texlive/tlnet/archive/progressbar.doc.r33822.tar.xz
@@ -299389,8 +299389,8 @@
2019/02/28 | 4116 | systems/texlive/tlnet/archive/reotex.r34924.tar.xz
2019/02/28 | 1216 | systems/texlive/tlnet/archive/repeatindex.doc.r24305.tar.xz
2019/02/28 | 1904 | systems/texlive/tlnet/archive/repeatindex.r24305.tar.xz
-2023/05/03 | 703428 | systems/texlive/tlnet/archive/repere.doc.r66988.tar.xz
-2023/05/03 | 28336 | systems/texlive/tlnet/archive/repere.r66988.tar.xz
+2023/05/04 | 703336 | systems/texlive/tlnet/archive/repere.doc.r66998.tar.xz
+2023/05/04 | 28380 | systems/texlive/tlnet/archive/repere.r66998.tar.xz
2020/09/26 | 426068 | systems/texlive/tlnet/archive/repltext.doc.r56433.tar.xz
2020/09/26 | 1412 | systems/texlive/tlnet/archive/repltext.r56433.tar.xz
2020/09/26 | 7104 | systems/texlive/tlnet/archive/repltext.source.r56433.tar.xz
@@ -300560,13 +300560,13 @@
2022/02/27 | 108804 | systems/texlive/tlnet/archive/tex4ht.amd64-freebsd.r62206.tar.xz
2023/02/20 | 87356 | systems/texlive/tlnet/archive/tex4ht.amd64-netbsd.r65923.tar.xz
2022/04/21 | 69948 | systems/texlive/tlnet/archive/tex4ht.armhf-linux.r63092.tar.xz
-2023/05/03 | 136384 | systems/texlive/tlnet/archive/tex4ht.doc.r66993.tar.xz
+2023/05/04 | 136384 | systems/texlive/tlnet/archive/tex4ht.doc.r67005.tar.xz
2022/02/27 | 93760 | systems/texlive/tlnet/archive/tex4ht.i386-freebsd.r62206.tar.xz
2022/02/27 | 91280 | systems/texlive/tlnet/archive/tex4ht.i386-linux.r62210.tar.xz
2023/02/20 | 76164 | systems/texlive/tlnet/archive/tex4ht.i386-netbsd.r65923.tar.xz
2022/02/27 | 83964 | systems/texlive/tlnet/archive/tex4ht.i386-solaris.r62206.tar.xz
-2023/05/03 | 1135208 | systems/texlive/tlnet/archive/tex4ht.r66993.tar.xz
-2023/05/03 | 1451672 | systems/texlive/tlnet/archive/tex4ht.source.r66993.tar.xz
+2023/05/04 | 1135272 | systems/texlive/tlnet/archive/tex4ht.r67005.tar.xz
+2023/05/04 | 1449372 | systems/texlive/tlnet/archive/tex4ht.source.r67005.tar.xz
2023/02/20 | 184636 | systems/texlive/tlnet/archive/tex4ht.universal-darwin.r65895.tar.xz
2023/02/20 | 62196 | systems/texlive/tlnet/archive/tex4ht.windows.r65891.tar.xz
2023/03/11 | 58016 | systems/texlive/tlnet/archive/tex4ht.x86_64-cygwin.r66544.tar.xz
@@ -300826,7 +300826,7 @@
2022/09/13 | 600 | systems/texlive/tlnet/archive/texlive-scripts.amd64-freebsd.r64356.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.amd64-netbsd.r64356.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.armhf-linux.r64356.tar.xz
-2023/05/03 | 426540 | systems/texlive/tlnet/archive/texlive-scripts.doc.r66983.tar.xz
+2023/05/04 | 426520 | systems/texlive/tlnet/archive/texlive-scripts.doc.r66996.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
@@ -300848,7 +300848,7 @@
2022/09/13 | 592 | systems/texlive/tlnet/archive/texlive-scripts.i386-linux.r64356.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.i386-netbsd.r64356.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.i386-solaris.r64356.tar.xz
-2023/05/03 | 114076 | systems/texlive/tlnet/archive/texlive-scripts.r66983.tar.xz
+2023/05/04 | 114092 | systems/texlive/tlnet/archive/texlive-scripts.r66996.tar.xz
2022/09/13 | 580 | systems/texlive/tlnet/archive/texlive-scripts.universal-darwin.r64356.tar.xz
2023/03/08 | 60300 | systems/texlive/tlnet/archive/texlive-scripts.windows.r66427.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.x86_64-cygwin.r64356.tar.xz
@@ -302706,16 +302706,16 @@
2020/07/18 | 47816 | systems/texlive/tlnet/archive/zztex.doc.r55862.tar.xz
2020/07/18 | 101724 | systems/texlive/tlnet/archive/zztex.r55862.tar.xz
2023/03/12 | 125532 | systems/texlive/tlnet/install-tl
-2023/05/03 | 5735774 | systems/texlive/tlnet/install-tl-unx.tar.gz
-2023/05/03 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
-2023/05/03 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2023/05/04 | 5735799 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2023/05/04 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2023/05/04 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
2023/02/19 | 5098 | systems/texlive/tlnet/install-tl-windows.bat
-2023/05/03 | 21036462 | systems/texlive/tlnet/install-tl-windows.exe
-2023/05/03 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
-2023/05/03 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2023/05/03 | 26025728 | systems/texlive/tlnet/install-tl.zip
-2023/05/03 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
-2023/05/03 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2023/05/04 | 21036966 | systems/texlive/tlnet/install-tl-windows.exe
+2023/05/04 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2023/05/04 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2023/05/04 | 26025746 | systems/texlive/tlnet/install-tl.zip
+2023/05/04 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2023/05/04 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
2023/03/19 | 1229 | systems/texlive/tlnet/README.md
2023/03/19 | 0 | systems/texlive/tlnet/TEXLIVE_2023
2023/01/17 | 8401 | systems/texlive/tlnet/tlpkg/gpg/pubring.gpg
@@ -302725,7 +302725,7 @@
2023/01/17 | 1280 | systems/texlive/tlnet/tlpkg/gpg/trustdb.gpg
2023/01/17 | 49938 | systems/texlive/tlnet/tlpkg/installer/config.guess
2010/11/11 | 11651 | systems/texlive/tlnet/tlpkg/installer/COPYING.MinGW-runtime.txt
-2023/05/02 | 7478 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
+2023/05/03 | 7577 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2023/01/11 | 216583 | systems/texlive/tlnet/tlpkg/installer/curl/curl-ca-bundle.crt
2020/04/15 | 2606592 | systems/texlive/tlnet/tlpkg/installer/curl/curl.exe
2017/04/16 | 2629 | systems/texlive/tlnet/tlpkg/installer/installer-options.txt
@@ -302767,12 +302767,12 @@
2023/02/21 | 20371 | systems/texlive/tlnet/tlpkg/TeXLive/TLCrypto.pm
2021/12/21 | 5429 | systems/texlive/tlnet/tlpkg/TeXLive/TLDownload.pm
2023/04/08 | 28167 | systems/texlive/tlnet/tlpkg/TeXLive/TLPaper.pm
-2023/05/03 | 18092396 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
-2023/05/03 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2023/05/04 | 18092398 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2023/05/04 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
2023/02/20 | 86803 | systems/texlive/tlnet/tlpkg/TeXLive/TLPDB.pm
-2023/05/03 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
-2023/05/03 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2023/05/03 | 2448244 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2023/05/04 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2023/05/04 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2023/05/04 | 2447464 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
2023/02/20 | 58928 | systems/texlive/tlnet/tlpkg/TeXLive/TLPOBJ.pm
2023/02/26 | 42350 | systems/texlive/tlnet/tlpkg/TeXLive/TLPSRC.pm
2023/02/21 | 16138 | systems/texlive/tlnet/tlpkg/TeXLive/TLTREE.pm
@@ -313216,7 +313216,7 @@
2014/07/05 | 611 | systems/win32/yandy/README
2014/07/05 | 1004628 | systems/win32/yandy/yandy-src.tar.xz
2014/07/05 | 1012416 | systems/win32/yandy.zip
-2023/05/04 | 186 | timestamp
+2023/05/05 | 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 549f48c9d2..3c55377e25 100644
--- a/FILES.byname.gz
+++ b/FILES.byname.gz
Binary files differ
diff --git a/FILES.last07days b/FILES.last07days
index 4b01a23dec..ccfa9168ea 100644
--- a/FILES.last07days
+++ b/FILES.last07days
@@ -1,3 +1,113 @@
+2023/05/04 | 967 | macros/latex/contrib/colorwav/README
+2023/05/04 | 95973 | macros/latex/contrib/biblatex-contrib/windycity/windycity.bbx
+2023/05/04 | 950 | macros/latex/contrib/thmtools/source/thmdef-mdframed.dtx
+2023/05/04 | 9332 | macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.sty
+2023/05/04 | 864 | macros/latex/contrib/forloop/README
+2023/05/04 | 8580 | macros/latex/contrib/thmtools/source/thm-patch.dtx
+2023/05/04 | 85114 | macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.bib
+2023/05/04 | 83900 | systems/texlive/tlnet/archive/luatexja.source.r67003.tar.xz
+2023/05/04 | 7911 | macros/latex/contrib/thmtools/source/thm-listof.dtx
+2023/05/04 | 788 | macros/latex/contrib/biblatex-contrib/windycity/windycity.dbx
+2023/05/04 | 74217 | macros/latex/contrib/forloop.zip
+2023/05/04 | 736 | macros/latex/contrib/thmtools/README.md
+2023/05/04 | 706 | graphics/pgf/contrib/tikz-nfold/README.md
+2023/05/04 | 703336 | systems/texlive/tlnet/archive/repere.doc.r66998.tar.xz
+2023/05/04 | 6664880 | systems/texlive/tlnet/archive/luajittex.universal-darwin.r67006.tar.xz
+2023/05/04 | 66548 | systems/texlive/tlnet/archive/njuthesis.source.r67004.tar.xz
+2023/05/04 | 6528 | systems/texlive/tlnet/archive/eso-pic.source.r67001.tar.xz
+2023/05/04 | 610524 | macros/latex/contrib/biblatex-contrib/windycity.zip
+2023/05/04 | 5735799 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2023/05/04 | 5639 | macros/latex/contrib/thmtools/source/unique.dtx
+2023/05/04 | 52882 | graphics/pgf/contrib/tikz-nfold/tikzlibrarynfold.code.tex
+2023/05/04 | 5156 | macros/latex/contrib/forloop/forloop.dtx
+2023/05/04 | 512581 | macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.pdf
+2023/05/04 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2023/05/04 | 4679 | macros/latex/contrib/thmtools/source/thm-amsthm.dtx
+2023/05/04 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2023/05/04 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2023/05/04 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2023/05/04 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2023/05/04 | 4534 | macros/latex/contrib/thmtools/source/thmdef-shaded.dtx
+2023/05/04 | 446445 | macros/latex/contrib/cool.zip
+2023/05/04 | 44577 | macros/latex/contrib/thmtools/doc/thmtools-manual.tex
+2023/05/04 | 4454 | macros/latex/contrib/thmtools/source/aliasctr.dtx
+2023/05/04 | 42939 | macros/latex/contrib/dyntree/dyntree.dtx
+2023/05/04 | 426520 | systems/texlive/tlnet/archive/texlive-scripts.doc.r66996.tar.xz
+2023/05/04 | 423848 | systems/texlive/tlnet/archive/playcards.doc.r66999.tar.xz
+2023/05/04 | 4063625 | biblio/ctan-bibdata.zip
+2023/05/04 | 3863 | macros/latex/contrib/biblatex-contrib/windycity/README.md
+2023/05/04 | 3840 | systems/texlive/tlnet/archive/eso-pic.r67001.tar.xz
+2023/05/04 | 3680412 | systems/texlive/tlnet/archive/luahbtex.universal-darwin.r67006.tar.xz
+2023/05/04 | 3666004 | biblio/ctan-bibdata/ctan.pdf
+2023/05/04 | 3526 | macros/latex/contrib/thmtools/source/thm-ntheorem.dtx
+2023/05/04 | 34008 | systems/texlive/tlnet/archive/proflycee.r67002.tar.xz
+2023/05/04 | 33387 | macros/latex/contrib/coolstr/coolstr.dtx
+2023/05/04 | 3244724 | systems/texlive/tlnet/archive/luatexja.doc.r67003.tar.xz
+2023/05/04 | 3240 | macros/latex/contrib/thmtools/source/thm-autoref.dtx
+2023/05/04 | 32259 | macros/latex/contrib/coollist/coollist.dtx
+2023/05/04 | 31 | macros/latex/contrib/thmtools/source/VERSION.tex
+2023/05/04 | 31829 | graphics/pgf/contrib/tikz-nfold/tikz-nfold-doc.tex
+2023/05/04 | 3035812 | systems/texlive/tlnet/archive/luatex.universal-darwin.r67006.tar.xz
+2023/05/04 | 302747 | graphics/pgf/contrib/tikz-nfold/tikz-nfold-doc.pdf
+2023/05/04 | 297619 | macros/latex/contrib/thmtools.zip
+2023/05/04 | 294766 | graphics/pgf/contrib/tikz-nfold.zip
+2023/05/04 | 290476 | systems/texlive/tlnet/archive/eso-pic.doc.r67001.tar.xz
+2023/05/04 | 28380 | systems/texlive/tlnet/archive/repere.r66998.tar.xz
+2023/05/04 | 2780800 | biblio/ctan-bibdata/ctan.bib
+2023/05/04 | 2779 | macros/latex/contrib/thmtools/source/thm-llncs.dtx
+2023/05/04 | 26870 | macros/latex/contrib/biblatex-contrib/windycity/CHANGES.md
+2023/05/04 | 26025746 | systems/texlive/tlnet/install-tl.zip
+2023/05/04 | 2564004 | systems/texlive/tlnet/archive/luajittex.x86_64-cygwin.r66997.tar.xz
+2023/05/04 | 251757 | macros/latex/contrib/thmtools/doc/thmtools-manual.pdf
+2023/05/04 | 2500 | macros/latex/contrib/thmtools/source/thmtools.ins
+2023/05/04 | 2447464 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2023/05/04 | 2396 | systems/texlive/tlnet/archive/beamertheme-tcolorbox.r67000.tar.xz
+2023/05/04 | 22074 | macros/latex/contrib/colorwav/colorwav.dtx
+2023/05/04 | 2180 | systems/texlive/tlnet/archive/playcards.r66999.tar.xz
+2023/05/04 | 2117 | macros/latex/contrib/thmtools/source/thmtools.dtx
+2023/05/04 | 2116 | macros/latex/contrib/thmtools/doc/changes.txt
+2023/05/04 | 2110468 | systems/texlive/tlnet/archive/luahbtex.x86_64-cygwin.r66997.tar.xz
+2023/05/04 | 21036966 | systems/texlive/tlnet/install-tl-windows.exe
+2023/05/04 | 20512 | systems/texlive/tlnet/archive/njuthesis.r67004.tar.xz
+2023/05/04 | 2046 | macros/latex/contrib/thmtools/source/parseargs.dtx
+2023/05/04 | 20090 | macros/latex/contrib/biblatex-contrib/windycity/windycity.cbx
+2023/05/04 | 193016 | systems/texlive/tlnet/archive/luatexja.r67003.tar.xz
+2023/05/04 | 19106 | macros/latex/contrib/thmtools/doc/COPYING
+2023/05/04 | 19106 | macros/latex/contrib/biblatex-contrib/windycity/LICENCE
+2023/05/04 | 184270 | macros/latex/contrib/cool/cool.dtx
+2023/05/04 | 1830792 | systems/texlive/tlnet/archive/proflycee.doc.r67002.tar.xz
+2023/05/04 | 18092398 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2023/05/04 | 1746216 | systems/texlive/tlnet/archive/luatex.x86_64-cygwin.r66997.tar.xz
+2023/05/04 | 1732 | macros/latex/contrib/thmtools/source/thmdef-thmbox.dtx
+2023/05/04 | 170588 | systems/texlive/tlnet/archive/beamertheme-tcolorbox.doc.r67000.tar.xz
+2023/05/04 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
+2023/05/04 | 16466 | macros/latex/contrib/thmtools/source/thm-kv.dtx
+2023/05/04 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2023/05/04 | 1531 | macros/latex/contrib/thmtools/source/thm-beamer.dtx
+2023/05/04 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2023/05/04 | 151504 | macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.tex
+2023/05/04 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2023/05/04 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2023/05/04 | 1449372 | systems/texlive/tlnet/archive/tex4ht.source.r67005.tar.xz
+2023/05/04 | 14348 | macros/latex/contrib/biblatex-contrib/windycity/american-windycity.lbx
+2023/05/04 | 138606 | macros/latex/contrib/dyntree.zip
+2023/05/04 | 1366 | macros/latex/contrib/dyntree/README
+2023/05/04 | 136384 | systems/texlive/tlnet/archive/tex4ht.doc.r67005.tar.xz
+2023/05/04 | 1313 | macros/latex/contrib/cool/README
+2023/05/04 | 124951 | macros/latex/contrib/coolstr.zip
+2023/05/04 | 1211600 | systems/texlive/tlnet/archive/njuthesis.doc.r67004.tar.xz
+2023/05/04 | 12064 | macros/latex/contrib/thmtools/source/thm-restate.dtx
+2023/05/04 | 119381 | macros/latex/contrib/coollist.zip
+2023/05/04 | 1183 | macros/latex/contrib/coollist/coollist.ins
+2023/05/04 | 1183 | macros/latex/contrib/colorwav/colorwav.ins
+2023/05/04 | 1180 | macros/latex/contrib/forloop/forloop.ins
+2023/05/04 | 1180 | macros/latex/contrib/dyntree/dyntree.ins
+2023/05/04 | 1180 | macros/latex/contrib/coolstr/coolstr.ins
+2023/05/04 | 1177 | macros/latex/contrib/cool/cool.ins
+2023/05/04 | 114092 | systems/texlive/tlnet/archive/texlive-scripts.r66996.tar.xz
+2023/05/04 | 1135272 | systems/texlive/tlnet/archive/tex4ht.r67005.tar.xz
+2023/05/04 | 1113 | macros/latex/contrib/coolstr/README
+2023/05/04 | 104792 | macros/latex/contrib/colorwav.zip
2023/05/03 | 945 | macros/luatex/generic/luatexja/tool/table_ivd_aj1.lua
2023/05/03 | 945 | macros/luatex/generic/luatexja/doc/jfm-testf.lua
2023/05/03 | 933 | macros/luatex/latex/piton/README.md
@@ -25,6 +135,7 @@
2023/05/03 | 761838 | systems/win32/miktex/tm/packages/files.csv.lzma
2023/05/03 | 761786 | systems/win32/miktex/tm/packages/next/files.csv.lzma
2023/05/03 | 76102 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
+2023/05/03 | 7577 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2023/05/03 | 7546 | macros/luatex/generic/luatexja/src/ltj-math.lua
2023/05/03 | 74633 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
2023/05/03 | 7365 | macros/latex/contrib/beamer-contrib/themes/beamertheme-tcolorbox/beamerinnerthemetcolorbox.sty
@@ -32,7 +143,6 @@
2023/05/03 | 73300 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
2023/05/03 | 72776 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
2023/05/03 | 706037 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
-2023/05/03 | 703428 | systems/texlive/tlnet/archive/repere.doc.r66988.tar.xz
2023/05/03 | 702456 | macros/luatex/generic/luatexja/doc/luatexja-en.pdf
2023/05/03 | 697040 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
2023/05/03 | 69681 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
@@ -40,7 +150,6 @@
2023/05/03 | 6922 | macros/luatex/generic/luatexja/src/addons/luatexja-otf.sty
2023/05/03 | 69217 | macros/luatex/generic/luatexja/doc/ltjltxdoc.pdf
2023/05/03 | 67292 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
-2023/05/03 | 66440 | systems/texlive/tlnet/archive/njuthesis.source.r66991.tar.xz
2023/05/03 | 6571 | macros/luatex/generic/luatexja/src/ltj-latex.sty
2023/05/03 | 6529 | macros/luatex/generic/luatexja/src/patches/lltjdefs.sty
2023/05/03 | 64624 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma
@@ -61,7 +170,6 @@
2023/05/03 | 58452 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
2023/05/03 | 58140 | macros/luatex/generic/luatexja/doc/luatexja-ruby.tex
2023/05/03 | 580 | macros/luatex/generic/luatexja/tool/blocks2defcharrange.rb
-2023/05/03 | 5735774 | systems/texlive/tlnet/install-tl-unx.tar.gz
2023/05/03 | 55999 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
2023/05/03 | 556 | graphics/metapost/contrib/macros/repere/README.md
2023/05/03 | 55401 | macros/luatex/generic/luatexja/src/ltj-jfmglue.lua
@@ -78,7 +186,6 @@
2023/05/03 | 50152 | macros/luatex/generic/luatexja/src/patches/lltjfont.sty
2023/05/03 | 501166 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin-x64.tar.lzma
2023/05/03 | 49691 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
-2023/05/03 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
2023/05/03 | 48961 | macros/luatex/generic/luatexja/src/ltj-jfont.lua
2023/05/03 | 48106 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
2023/05/03 | 4808 | macros/luatex/generic/luatexja/src/jfm-tmin.lua
@@ -86,10 +193,6 @@
2023/05/03 | 47058 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
2023/05/03 | 46043 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
2023/05/03 | 460413 | macros/luatex/generic/luatexja/doc/ltjsclasses.pdf
-2023/05/03 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2023/05/03 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
-2023/05/03 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2023/05/03 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
2023/05/03 | 4521 | macros/luatex/generic/luatexja/src/ltj-stack.lua
2023/05/03 | 4480 | macros/luatex/generic/luatexja/src/ltj-plain.sty
2023/05/03 | 4452 | macros/luatex/generic/luatexja/doc/jfm-ujisc33.lua
@@ -99,12 +202,10 @@
2023/05/03 | 4308 | macros/luatex/generic/luatexja/src/patches/lltjp-atbegshi.sty
2023/05/03 | 43072 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
2023/05/03 | 42723 | macros/latex/contrib/proflycee/tex/proflycee-tools-trigo.tex
-2023/05/03 | 426540 | systems/texlive/tlnet/archive/texlive-scripts.doc.r66983.tar.xz
2023/05/03 | 4262 | macros/luatex/generic/luatexja/tool/kyoikukanji.txt
2023/05/03 | 425 | macros/luatex/generic/luatexja/src/patches/lltjp-everyshi.sty
2023/05/03 | 4215 | macros/luatex/generic/luatexja/src/ltj-charrange.lua
2023/05/03 | 4126 | macros/luatex/generic/luatexja/src/patches/lltjp-siunitx.sty
-2023/05/03 | 4063378 | biblio/ctan-bibdata.zip
2023/05/03 | 40540 | macros/luatex/generic/luatexja/src/ltj-direction.lua
2023/05/03 | 403681 | macros/luatex/generic/luatexja/doc/ltjclasses.pdf
2023/05/03 | 4032308 | systems/texlive/tlnet/archive/luajittex.x86_64-linux.r66986.tar.xz
@@ -121,7 +222,6 @@
2023/05/03 | 3796 | macros/luatex/generic/luatexja/README
2023/05/03 | 37615 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
2023/05/03 | 3756 | macros/luatex/generic/luatexja/src/ltj-compat.lua
-2023/05/03 | 3666089 | biblio/ctan-bibdata/ctan.pdf
2023/05/03 | 36595 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
2023/05/03 | 36558 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
2023/05/03 | 3650 | macros/luatex/generic/luatexja/src/ltj-inputbuf.lua
@@ -160,13 +260,10 @@
2023/05/03 | 290172 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
2023/05/03 | 28943 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
2023/05/03 | 288298 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
-2023/05/03 | 28336 | systems/texlive/tlnet/archive/repere.r66988.tar.xz
2023/05/03 | 2831601 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
-2023/05/03 | 2780799 | biblio/ctan-bibdata/ctan.bib
2023/05/03 | 27628 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
2023/05/03 | 272054 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
2023/05/03 | 27058 | macros/luatex/generic/luatexja/src/lltjext.sty
-2023/05/03 | 26025728 | systems/texlive/tlnet/install-tl.zip
2023/05/03 | 2599 | macros/luatex/generic/luatexja/src/jfm-banjiao.lua
2023/05/03 | 2582 | macros/luatex/generic/luatexja/src/jfm-kaiming.lua
2023/05/03 | 2573 | macros/luatex/generic/luatexja/src/jfm-quanjiao.lua
@@ -175,7 +272,6 @@
2023/05/03 | 25385 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
2023/05/03 | 249693 | systems/win32/miktex/tm/packages/next/miktex-hitex-bin-x64.tar.lzma
2023/05/03 | 246250 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
-2023/05/03 | 2448244 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
2023/05/03 | 24133 | macros/latex/contrib/eso-pic/eso-pic.dtx
2023/05/03 | 24028 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
2023/05/03 | 2374 | macros/luatex/generic/luatexja/src/patches/lltjp-unicode-math.sty
@@ -183,6 +279,7 @@
2023/05/03 | 2340 | macros/luatex/generic/luatexja/src/jfm-jis.lua
2023/05/03 | 231408 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
2023/05/03 | 22714 | macros/luatex/generic/luatexja/src/luatexja.lua
+2023/05/03 | 222733 | support/TeX4ht/source/ChangeLog
2023/05/03 | 22125 | macros/luatex/generic/luatexja/src/ltj-adjust.lua
2023/05/03 | 221194 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
2023/05/03 | 2204852 | systems/texlive/tlnet/archive/luahbtex.x86_64-linux.r66986.tar.xz
@@ -191,13 +288,11 @@
2023/05/03 | 2193 | macros/luatex/generic/luatexja/src/addons/luatexja-zhfonts.sty
2023/05/03 | 217647 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
2023/05/03 | 216856 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
-2023/05/03 | 21036462 | systems/texlive/tlnet/install-tl-windows.exe
2023/05/03 | 2092324 | systems/texlive/tlnet/archive/luatex.windows.r66994.tar.xz
2023/05/03 | 2057 | macros/luatex/generic/luatexja/src/patches/lltjp-microtype.sty
2023/05/03 | 2042 | macros/luatex/generic/luatexja/src/luatexja.sty
2023/05/03 | 2036544 | systems/texlive/tlnet/archive/luahbtex.i386-netbsd.r66987.tar.xz
2023/05/03 | 203639 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
-2023/05/03 | 20312 | systems/texlive/tlnet/archive/njuthesis.r66991.tar.xz
2023/05/03 | 2017432 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
2023/05/03 | 200 | macros/luatex/generic/luatexja/src/jfm-prop.lua
2023/05/03 | 2002856 | macros/latex/contrib/proflycee.zip
@@ -217,13 +312,11 @@
2023/05/03 | 18493 | CTAN.sites
2023/05/03 | 182877 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
2023/05/03 | 182000 | macros/luatex/latex/piton/piton.dtx
-2023/05/03 | 18092396 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
2023/05/03 | 178115 | macros/luatex/generic/luatexja/src/ltjclasses.dtx
2023/05/03 | 177469 | macros/latex/contrib/beamer-contrib/themes/beamertheme-tcolorbox/beamertheme-tcolorbox-doc.pdf
2023/05/03 | 174364 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
2023/05/03 | 1740 | macros/luatex/generic/luatexja/tool/test_exist_nodelib.tex
2023/05/03 | 171942 | macros/latex/contrib/beamer-contrib/themes/beamertheme-tcolorbox.zip
-2023/05/03 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
2023/05/03 | 166557 | macros/luatex/generic/luatexja/doc/lltjp-geometry.pdf
2023/05/03 | 1661102 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
2023/05/03 | 1660808 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
@@ -236,15 +329,10 @@
2023/05/03 | 157495 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
2023/05/03 | 154928 | macros/luatex/generic/luatexja/src/ltj-ivd_aj1.lua
2023/05/03 | 15429 | macros/luatex/generic/luatexja/src/ltj-rmlgbm.lua
-2023/05/03 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
2023/05/03 | 1536 | macros/luatex/generic/luatexja/COPYING
2023/05/03 | 1530043 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
-2023/05/03 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
2023/05/03 | 14914 | macros/luatex/generic/luatexja/src/patches/lltjp-listings.sty
-2023/05/03 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
2023/05/03 | 1457072 | systems/texlive/tlnet/archive/luatex.i386-netbsd.r66987.tar.xz
-2023/05/03 | 1451672 | systems/texlive/tlnet/archive/tex4ht.source.r66993.tar.xz
-2023/05/03 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
2023/05/03 | 14471 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
2023/05/03 | 1427708 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
2023/05/03 | 141978 | graphics/metapost/contrib/macros/repere/repere.mp
@@ -253,7 +341,6 @@
2023/05/03 | 13895 | macros/luatex/generic/luatexja/src/jfm-ujis.lua
2023/05/03 | 137693 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
2023/05/03 | 13726 | macros/luatex/generic/luatexja/doc/lltjp-geometry.tex
-2023/05/03 | 136384 | systems/texlive/tlnet/archive/tex4ht.doc.r66993.tar.xz
2023/05/03 | 1339002 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
2023/05/03 | 13316 | macros/luatex/generic/luatexja/src/ltj-setwidth.lua
2023/05/03 | 13279 | macros/luatex/generic/luatexja/src/patches/lltjcore.sty
@@ -264,14 +351,12 @@
2023/05/03 | 12463 | macros/luatex/generic/luatexja/src/ltj-base.lua
2023/05/03 | 1224 | macros/luatex/generic/luatexja/tool/chars2defcharrange.rb
2023/05/03 | 1222131 | macros/unicodetex/latex/njuthesis/njuthesis.pdf
-2023/05/03 | 1209552 | systems/texlive/tlnet/archive/njuthesis.doc.r66991.tar.xz
2023/05/03 | 117191 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
2023/05/03 | 1167423 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
+2023/05/03 | 1161612 | support/TeX4ht/source/tex4ht-4ht.tex
2023/05/03 | 1150 | systems/win32/miktex/tm/packages/next/pr.ini
2023/05/03 | 11506 | macros/luatex/generic/luatexja/src/jfm-ujisv.lua
2023/05/03 | 1143943 | macros/luatex/generic/luatexja/doc/luatexja-ja.pdf
-2023/05/03 | 114076 | systems/texlive/tlnet/archive/texlive-scripts.r66983.tar.xz
-2023/05/03 | 1135208 | systems/texlive/tlnet/archive/tex4ht.r66993.tar.xz
2023/05/03 | 11335 | macros/luatex/generic/luatexja/tool/unicodeBlocks.tex
2023/05/03 | 1130 | macros/luatex/generic/luatexja/tool/function_uax50.lua
2023/05/03 | 111993 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
@@ -289,7 +374,6 @@
2023/05/02 | 9684 | graphics/pgf/contrib/tikz3d-fr/tex/tikz3d-fr.sty
2023/05/02 | 940440 | systems/texlive/tlnet/archive/etoc.doc.r66978.tar.xz
2023/05/02 | 816004 | systems/texlive/tlnet/archive/install-latex-guide-zh-cn.doc.r66976.tar.xz
-2023/05/02 | 7478 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2023/05/02 | 73384 | systems/texlive/tlnet/archive/latexindent.r66981.tar.xz
2023/05/02 | 6086 | graphics/pgf/contrib/playcards/playcards-fr.tex
2023/05/02 | 603790 | graphics/pgf/contrib/tikz3d-fr/doc/tikz3d-fr-doc.pdf
@@ -311,13 +395,11 @@
2023/05/02 | 275684 | graphics/pgf/contrib/playcards/playcards-en.pdf
2023/05/02 | 25799 | graphics/pgf/contrib/tikz3d-fr/doc/tikz3d-fr-doc.tex
2023/05/02 | 25172 | systems/texlive/tlnet/archive/bithesis.r66980.tar.xz
-2023/05/02 | 222574 | support/TeX4ht/source/ChangeLog
2023/05/02 | 151976 | systems/texlive/tlnet/archive/srdp-mathematik.doc.r66979.tar.xz
2023/05/02 | 145508 | systems/texlive/tlnet/archive/biblatex-manuscripts-philology.doc.r66977.tar.xz
2023/05/02 | 13628 | systems/texlive/tlnet/archive/etoc.r66978.tar.xz
2023/05/02 | 1321324 | systems/texlive/tlnet/archive/latexindent.doc.r66981.tar.xz
2023/05/02 | 119324 | systems/texlive/tlnet/archive/etoc.source.r66978.tar.xz
-2023/05/02 | 1161380 | support/TeX4ht/source/tex4ht-4ht.tex
2023/05/02 | 1159184 | systems/texlive/tlnet/archive/bithesis.doc.r66980.tar.xz
2023/05/02 | 111786 | graphics/metapost/contrib/macros/repere/repere-doc.tex
2023/05/01 | 9951 | macros/latex/contrib/profcollege/latex/PfCTriominos.tex
@@ -467,6 +549,7 @@
2023/05/01 | 192273 | macros/latex/contrib/srdp-mathematik.zip
2023/05/01 | 1862 | macros/latex/contrib/profcollege/latex/PfCMotsEmpiles.tex
2023/05/01 | 18522 | support/latexindent/LatexIndent/ModifyLineBreaks.pm
+2023/05/01 | 18440 | graphics/pgf/contrib/tikz-nfold/pgflibrarybezieroffset.code.tex
2023/05/01 | 1841 | macros/latex/contrib/biblatex-contrib/biblatex-manuscripts-philology/french-manuscripts.lbx
2023/05/01 | 1839 | macros/latex/contrib/biblatex-contrib/biblatex-manuscripts-philology/italian-manuscripts.lbx
2023/05/01 | 181160 | macros/latex/contrib/srdp-mathematik/srdp-mathematik.pdf
@@ -528,12 +611,10 @@
2023/04/30 | 8188311 | graphics/pstricks/base.zip
2023/04/30 | 592 | systems/texlive/tlnet/archive/collection-games.r66968.tar.xz
2023/04/30 | 490382 | macros/latex/contrib/etoc/etoc.dtx
-2023/04/30 | 447360 | systems/texlive/tlnet/archive/playcards.doc.r66968.tar.xz
2023/04/30 | 3734 | macros/latex/contrib/etoc/README.md
2023/04/30 | 284504 | systems/texlive/tlnet/archive/lua-typo.doc.r66969.tar.xz
2023/04/30 | 27688 | systems/texlive/tlnet/archive/lua-typo.source.r66969.tar.xz
2023/04/30 | 2123736 | systems/doc/luatex.zip
-2023/04/30 | 2076 | systems/texlive/tlnet/archive/playcards.r66968.tar.xz
2023/04/30 | 1948096 | systems/texlive/tlnet/archive/luatex.doc.r66967.tar.xz
2023/04/30 | 13712 | systems/texlive/tlnet/archive/luatex.r66967.tar.xz
2023/04/30 | 11972 | systems/texlive/tlnet/archive/lua-typo.r66969.tar.xz
@@ -551,7 +632,6 @@
2023/04/29 | 3796 | systems/win32/miktex/tm/packages/pas-tableur.tar.lzma
2023/04/29 | 3720 | macros/unicodetex/latex/bithesis/bithesis.ins
2023/04/29 | 36463 | systems/doc/luatex/luatex-lua.tex
-2023/04/29 | 33924 | systems/texlive/tlnet/archive/proflycee.r66962.tar.xz
2023/04/29 | 337424 | macros/luatex/latex/lua-typo.zip
2023/04/29 | 3362 | graphics/pstricks/base/generic/pstricks-tex.def
2023/04/29 | 3352 | macros/luatex/latex/lua-typo/README.md
@@ -567,7 +647,6 @@
2023/04/29 | 208526 | macros/luatex/latex/lua-typo/doc/lua-typo.pdf
2023/04/29 | 2020324 | systems/texlive/tlnet/archive/simpleicons.doc.r66960.tar.xz
2023/04/29 | 1946 | macros/unicodetex/latex/bithesis/README.md
-2023/04/29 | 1829180 | systems/texlive/tlnet/archive/proflycee.doc.r66962.tar.xz
2023/04/29 | 1780325 | systems/doc/luatex/luatex.pdf
2023/04/29 | 16859 | macros/luatex/latex/lua-typo/doc/lua-typo-demo.pdf
2023/04/29 | 125682 | graphics/pstricks/base/generic/pstricks.tex
@@ -626,180 +705,3 @@
2023/04/28 | 115224 | systems/texlive/tlnet/archive/context-collating-marks.doc.r66956.tar.xz
2023/04/28 | 112900 | systems/texlive/tlnet/archive/markdown.source.r66954.tar.xz
2023/04/28 | 1119 | fonts/simpleicons/map/simpleicons.map
-2023/04/27 | 972032 | systems/win32/miktex/tm/packages/biblatex-gost__doc.tar.lzma
-2023/04/27 | 947905 | macros/generic/markdown/markdown.html
-2023/04/27 | 9451 | systems/win32/miktex/tm/packages/algpseudocodex.tar.lzma
-2023/04/27 | 94328 | systems/win32/miktex/tm/packages/biblatex-gb7714-2015__source.tar.lzma
-2023/04/27 | 9380 | systems/win32/miktex/tm/packages/pgfornament-han__source.tar.lzma
-2023/04/27 | 9334 | systems/win32/miktex/tm/packages/se2thesis.tar.lzma
-2023/04/27 | 9283 | systems/win32/miktex/tm/packages/libertinus-otf__source.tar.lzma
-2023/04/27 | 92235 | graphics/pgf/contrib/pgf-spectra/pgf-spectra.sty
-2023/04/27 | 91350 | systems/win32/miktex/tm/packages/hyperref.tar.lzma
-2023/04/27 | 899266 | systems/win32/miktex/tm/packages/babel__doc.tar.lzma
-2023/04/27 | 890480 | systems/win32/miktex/tm/packages/l3backend__doc.tar.lzma
-2023/04/27 | 890185 | systems/win32/miktex/tm/packages/koma-script__source.tar.lzma
-2023/04/27 | 88806 | systems/win32/miktex/tm/packages/pgfornament-han.tar.lzma
-2023/04/27 | 8642919 | systems/win32/miktex/tm/packages/profcollege__doc.tar.lzma
-2023/04/27 | 855795 | systems/win32/miktex/tm/packages/pgf-spectra__source.tar.lzma
-2023/04/27 | 837125 | systems/win32/miktex/tm/packages/nwafuthesis__source.tar.lzma
-2023/04/27 | 823196 | macros/generic/markdown/markdown.dtx
-2023/04/27 | 8192 | systems/win32/miktex/tm/packages/pixelarttikz__source.tar.lzma
-2023/04/27 | 80946 | systems/win32/miktex/tm/packages/l3experimental__source.tar.lzma
-2023/04/27 | 807643 | systems/win32/miktex/tm/packages/lyluatex__doc.tar.lzma
-2023/04/27 | 795791 | systems/win32/miktex/tm/packages/ibarra.tar.lzma
-2023/04/27 | 777020 | systems/win32/miktex/tm/packages/babel__source.tar.lzma
-2023/04/27 | 774803 | systems/win32/miktex/tm/packages/pixelarttikz__doc.tar.lzma
-2023/04/27 | 7692 | systems/win32/miktex/tm/packages/prettytok__source.tar.lzma
-2023/04/27 | 760032 | systems/texlive/tlnet/archive/evangelion-jfm.doc.r66945.tar.xz
-2023/04/27 | 75 | macros/generic/markdown/examples/scientists.csv
-2023/04/27 | 744869 | systems/win32/miktex/tm/packages/evangelion-jfm__doc.tar.lzma
-2023/04/27 | 726472 | systems/win32/miktex/tm/packages/polyglossia__doc.tar.lzma
-2023/04/27 | 7080 | systems/win32/miktex/tm/packages/oststud.tar.lzma
-2023/04/27 | 6443772 | systems/win32/miktex/tm/packages/koma-script__doc.tar.lzma
-2023/04/27 | 622074 | systems/win32/miktex/tm/packages/cleveref-usedon__doc.tar.lzma
-2023/04/27 | 622017 | systems/win32/miktex/tm/packages/libertinus-otf__doc.tar.lzma
-2023/04/27 | 620 | systems/texlive/tlnet/archive/collection-context.r66949.tar.xz
-2023/04/27 | 603292 | systems/win32/miktex/tm/packages/l3kernel__source.tar.lzma
-2023/04/27 | 602105 | systems/win32/miktex/tm/packages/scrwfile__doc.tar.lzma
-2023/04/27 | 5817 | graphics/pgf/contrib/pgf-spectra/README
-2023/04/27 | 569589 | systems/win32/miktex/tm/packages/quantikz__doc.tar.lzma
-2023/04/27 | 5676166 | systems/win32/miktex/tm/packages/bib2gls__doc.tar.lzma
-2023/04/27 | 56415 | systems/win32/miktex/tm/packages/emo__source.tar.lzma
-2023/04/27 | 5501 | systems/win32/miktex/tm/packages/lettrine.tar.lzma
-2023/04/27 | 53601 | systems/win32/miktex/tm/packages/pst-eucl.tar.lzma
-2023/04/27 | 5321 | systems/win32/miktex/tm/packages/quickreaction__source.tar.lzma
-2023/04/27 | 52086 | systems/win32/miktex/tm/packages/biblatex-gb7714-2015.tar.lzma
-2023/04/27 | 5093 | systems/win32/miktex/tm/packages/luapstricks__source.tar.lzma
-2023/04/27 | 50740 | systems/win32/miktex/tm/packages/textcsc__doc.tar.lzma
-2023/04/27 | 4995608 | systems/win32/miktex/tm/packages/arara__doc.tar.lzma
-2023/04/27 | 4940 | systems/win32/miktex/tm/packages/hitex-def.tar.lzma
-2023/04/27 | 49256 | systems/win32/miktex/tm/packages/bithesis__source.tar.lzma
-2023/04/27 | 4906 | systems/win32/miktex/tm/packages/pdfcrop__doc.tar.lzma
-2023/04/27 | 489732 | systems/win32/miktex/tm/packages/prettytok__doc.tar.lzma
-2023/04/27 | 4860 | systems/win32/miktex/tm/packages/algpseudocodex__source.tar.lzma
-2023/04/27 | 4681 | macros/generic/markdown/markdown.css
-2023/04/27 | 465399 | systems/win32/miktex/tm/packages/pagecolor__doc.tar.lzma
-2023/04/27 | 459417 | systems/win32/miktex/tm/packages/pstricks-add__source.tar.lzma
-2023/04/27 | 4423 | systems/win32/miktex/tm/packages/prettytok.tar.lzma
-2023/04/27 | 44167 | systems/win32/miktex/tm/packages/tuda-ci.tar.lzma
-2023/04/27 | 4377 | macros/generic/markdown/docstrip.cfg
-2023/04/27 | 4183 | systems/win32/miktex/tm/packages/cleveref-usedon.tar.lzma
-2023/04/27 | 416401 | systems/win32/miktex/tm/packages/hyperref__source.tar.lzma
-2023/04/27 | 41253 | systems/win32/miktex/tm/packages/pst-eucl__source.tar.lzma
-2023/04/27 | 4075 | systems/win32/miktex/tm/packages/libertinus-otf.tar.lzma
-2023/04/27 | 403 | graphics/metapost/contrib/macros/mptrees/README.md
-2023/04/27 | 398171 | systems/win32/miktex/tm/packages/lettrine__doc.tar.lzma
-2023/04/27 | 3967 | macros/generic/markdown/examples/example.md
-2023/04/27 | 39587 | systems/win32/miktex/tm/packages/nicematrix.tar.lzma
-2023/04/27 | 3682595 | systems/win32/miktex/tm/packages/hyperref__doc.tar.lzma
-2023/04/27 | 36744 | systems/win32/miktex/tm/packages/evangelion-jfm__source.tar.lzma
-2023/04/27 | 35824 | systems/win32/miktex/tm/packages/biblatex-gost__source.tar.lzma
-2023/04/27 | 354922 | systems/win32/miktex/tm/packages/oststud__doc.tar.lzma
-2023/04/27 | 3532052 | graphics/pgf/contrib/pgf-spectra.zip
-2023/04/27 | 350664 | systems/win32/miktex/tm/packages/algpseudocodex__doc.tar.lzma
-2023/04/27 | 35044 | systems/win32/miktex/tm/packages/tagpdf.tar.lzma
-2023/04/27 | 3499543 | systems/win32/miktex/tm/packages/l3experimental__doc.tar.lzma
-2023/04/27 | 34437 | systems/win32/miktex/tm/packages/l3backend__source.tar.lzma
-2023/04/27 | 34228 | graphics/metapost/contrib/macros/mptrees/mptrees-doc.tex
-2023/04/27 | 3393 | systems/win32/miktex/tm/packages/evangelion-jfm.tar.lzma
-2023/04/27 | 33395 | systems/win32/miktex/tm/packages/proflycee.tar.lzma
-2023/04/27 | 33355 | macros/generic/markdown/CHANGES.md
-2023/04/27 | 3278 | systems/win32/miktex/tm/packages/pagecolor.tar.lzma
-2023/04/27 | 32252 | systems/win32/miktex/tm/packages/photobook.tar.lzma
-2023/04/27 | 31 | macros/generic/markdown/VERSION
-2023/04/27 | 3196 | systems/texlive/tlnet/archive/evangelion-jfm.r66945.tar.xz
-2023/04/27 | 3082 | systems/win32/miktex/tm/packages/scrwfile.tar.lzma
-2023/04/27 | 30398 | systems/win32/miktex/tm/packages/mpchess__source.tar.lzma
-2023/04/27 | 2989 | systems/win32/miktex/tm/packages/textcsc__source.tar.lzma
-2023/04/27 | 29340 | systems/texlive/tlnet/archive/mpchess.r66943.tar.xz
-2023/04/27 | 291168 | systems/texlive/tlnet/archive/emo.doc.r66944.tar.xz
-2023/04/27 | 28407 | systems/win32/miktex/tm/packages/lyluatex__source.tar.lzma
-2023/04/27 | 27860 | graphics/metapost/contrib/macros/mptrees/mptrees.mp
-2023/04/27 | 27817 | systems/win32/miktex/tm/packages/luapstricks.tar.lzma
-2023/04/27 | 27700 | systems/win32/miktex/tm/packages/bithesis.tar.lzma
-2023/04/27 | 26826 | systems/win32/miktex/tm/packages/nwafuthesis.tar.lzma
-2023/04/27 | 263777 | systems/win32/miktex/tm/packages/tikz-nfold__doc.tar.lzma
-2023/04/27 | 25976 | graphics/pgf/contrib/pgf-spectra/pgf-spectraManual_defs.tex
-2023/04/27 | 248212 | systems/win32/miktex/tm/packages/quickreaction__doc.tar.lzma
-2023/04/27 | 24296 | systems/win32/miktex/tm/packages/se2thesis__source.tar.lzma
-2023/04/27 | 240719 | macros/context/contrib/context-pocketdiary.zip
-2023/04/27 | 240518 | systems/win32/miktex/tm/packages/emo__doc.tar.lzma
-2023/04/27 | 23973 | systems/win32/miktex/tm/packages/l3experimental.tar.lzma
-2023/04/27 | 2384961 | graphics/pgf/contrib/pgf-spectra/pgf-spectraManual.pdf
-2023/04/27 | 232788 | systems/win32/miktex/tm/packages/tagpdf__source.tar.lzma
-2023/04/27 | 230393 | systems/win32/miktex/tm/packages/ibarra__doc.tar.lzma
-2023/04/27 | 22796 | macros/generic/markdown/libraries/markdown-tinyyaml.lua
-2023/04/27 | 22348 | systems/win32/miktex/tm/packages/lettrine__source.tar.lzma
-2023/04/27 | 22257 | systems/win32/miktex/tm/packages/pstricks-add.tar.lzma
-2023/04/27 | 2181683 | systems/win32/miktex/tm/packages/profcollege__source.tar.lzma
-2023/04/27 | 21573 | systems/win32/miktex/tm/packages/biblatex-gost.tar.lzma
-2023/04/27 | 212366 | systems/win32/miktex/tm/packages/babel.tar.lzma
-2023/04/27 | 2097 | systems/win32/miktex/tm/packages/pixelarttikz.tar.lzma
-2023/04/27 | 2064111 | systems/win32/miktex/tm/packages/nwafuthesis__doc.tar.lzma
-2023/04/27 | 20136 | systems/win32/miktex/tm/packages/quantikz.tar.lzma
-2023/04/27 | 20084 | systems/win32/miktex/tm/packages/mpchess.tar.lzma
-2023/04/27 | 198619 | systems/win32/miktex/tm/packages/proflycee__source.tar.lzma
-2023/04/27 | 1974 | macros/generic/markdown/examples/context-mkiv.tex
-2023/04/27 | 193703 | macros/latex/contrib/photobook.zip
-2023/04/27 | 1914 | systems/win32/miktex/tm/packages/quickreaction.tar.lzma
-2023/04/27 | 1904 | systems/texlive/tlnet/archive/context-calendar-examples.doc.r66947.tar.xz
-2023/04/27 | 1901840 | systems/win32/miktex/tm/packages/tagpdf__doc.tar.lzma
-2023/04/27 | 1900864 | systems/win32/miktex/tm/packages/bib2gls.tar.lzma
-2023/04/27 | 18970 | macros/generic/markdown/README.md
-2023/04/27 | 1877799 | systems/win32/miktex/tm/packages/nicematrix__doc.tar.lzma
-2023/04/27 | 185201 | systems/win32/miktex/tm/packages/glossaries-extra__source.tar.lzma
-2023/04/27 | 18349 | systems/win32/miktex/tm/packages/quantikz__source.tar.lzma
-2023/04/27 | 1794338 | systems/win32/miktex/tm/packages/bib2gls__source.tar.lzma
-2023/04/27 | 1781 | macros/generic/markdown/examples/latex-pdftex.tex
-2023/04/27 | 17608520 | systems/win32/miktex/tm/packages/glossaries-extra__doc.tar.lzma
-2023/04/27 | 175721 | systems/win32/miktex/tm/packages/l3kernel.tar.lzma
-2023/04/27 | 1713 | systems/win32/miktex/tm/packages/luapstricks__doc.tar.lzma
-2023/04/27 | 165847 | systems/win32/miktex/tm/packages/polyglossia__source.tar.lzma
-2023/04/27 | 16433 | systems/win32/miktex/tm/packages/l3backend.tar.lzma
-2023/04/27 | 16388 | systems/texlive/tlnet/archive/evangelion-jfm.source.r66945.tar.xz
-2023/04/27 | 163528 | systems/win32/miktex/tm/packages/nicematrix__source.tar.lzma
-2023/04/27 | 1626173 | systems/win32/miktex/tm/packages/pgf-spectra__doc.tar.lzma
-2023/04/27 | 1584292 | systems/win32/miktex/tm/packages/pst-eucl__doc.tar.lzma
-2023/04/27 | 157634 | graphics/metapost/contrib/macros/mptrees.zip
-2023/04/27 | 1543953 | systems/win32/miktex/tm/packages/proflycee__doc.tar.lzma
-2023/04/27 | 15359 | systems/win32/miktex/tm/packages/oststud__source.tar.lzma
-2023/04/27 | 15279 | systems/win32/miktex/tm/packages/lyluatex.tar.lzma
-2023/04/27 | 14713 | systems/win32/miktex/tm/packages/tikz-nfold.tar.lzma
-2023/04/27 | 147046 | graphics/pgf/contrib/pgf-spectra/pgf-spectraManual.tex
-2023/04/27 | 146573 | graphics/metapost/contrib/macros/mptrees/mptrees-doc.pdf
-2023/04/27 | 1463990 | systems/win32/miktex/tm/packages/se2thesis__doc.tar.lzma
-2023/04/27 | 14637 | systems/win32/miktex/tm/packages/scrwfile__source.tar.lzma
-2023/04/27 | 1452921 | install/macros/generic/markdown.tds.zip
-2023/04/27 | 14440 | systems/texlive/tlnet/archive/emo.source.r66944.tar.xz
-2023/04/27 | 14421 | systems/win32/miktex/tm/packages/photobook__source.tar.lzma
-2023/04/27 | 141375 | systems/win32/miktex/tm/packages/photobook__doc.tar.lzma
-2023/04/27 | 140951 | macros/generic/markdown/markdown.png
-2023/04/27 | 139621 | systems/win32/miktex/tm/packages/koma-script.tar.lzma
-2023/04/27 | 1376621 | macros/generic/markdown.zip
-2023/04/27 | 1364 | macros/generic/markdown/examples/latex-luatex.tex
-2023/04/27 | 1333 | macros/generic/markdown/markdown.ins
-2023/04/27 | 1318424 | systems/win32/miktex/tm/packages/biblatex-gb7714-2015__doc.tar.lzma
-2023/04/27 | 1298 | systems/win32/miktex/tm/packages/textcsc.tar.lzma
-2023/04/27 | 129300 | systems/win32/miktex/tm/packages/emo.tar.lzma
-2023/04/27 | 1290899 | systems/win32/miktex/tm/packages/profcollege.tar.lzma
-2023/04/27 | 125785 | systems/win32/miktex/tm/packages/polyglossia.tar.lzma
-2023/04/27 | 12520 | systems/win32/miktex/tm/packages/pagecolor__source.tar.lzma
-2023/04/27 | 12145330 | systems/win32/miktex/tm/packages/arara.tar.lzma
-2023/04/27 | 121408 | macros/context/contrib/context-collatingmarks.zip
-2023/04/27 | 1207832 | systems/texlive/tlnet/archive/mpchess.doc.r66943.tar.xz
-2023/04/27 | 1207629 | systems/win32/miktex/tm/packages/pgfornament-han__doc.tar.lzma
-2023/04/27 | 11965806 | systems/win32/miktex/tm/packages/l3kernel__doc.tar.lzma
-2023/04/27 | 119612 | systems/texlive/tlnet/archive/emo.r66944.tar.xz
-2023/04/27 | 1187343 | systems/win32/miktex/tm/packages/mpchess__doc.tar.lzma
-2023/04/27 | 115997 | systems/win32/miktex/tm/packages/arara__source.tar.lzma
-2023/04/27 | 1155803 | systems/win32/miktex/tm/packages/bithesis__doc.tar.lzma
-2023/04/27 | 11493 | systems/win32/miktex/tm/packages/cleveref-usedon__source.tar.lzma
-2023/04/27 | 114269325 | macros/context/latest/cont-tmf.zip
-2023/04/27 | 1140974 | systems/win32/miktex/tm/packages/tuda-ci__doc.tar.lzma
-2023/04/27 | 11244 | systems/win32/miktex/tm/packages/pdfcrop.tar.lzma
-2023/04/27 | 10924 | systems/win32/miktex/tm/packages/pgf-spectra.tar.lzma
-2023/04/27 | 103001 | systems/win32/miktex/tm/packages/glossaries-extra.tar.lzma
-2023/04/27 | 10253 | systems/win32/miktex/tm/packages/tikz-nfold__source.tar.lzma
-2023/04/27 | 10208781 | systems/win32/miktex/tm/packages/pstricks-add__doc.tar.lzma
-2023/04/27 | 1011455 | macros/generic/markdown/markdown.pdf
-2023/04/27 | 10056 | systems/texlive/tlnet/archive/context-calendar-examples.r66947.tar.xz
diff --git a/biblio/ctan-bibdata/ctan.bib b/biblio/ctan-bibdata/ctan.bib
index f9cdfcbd7e..2ba5ead625 100644
--- a/biblio/ctan-bibdata/ctan.bib
+++ b/biblio/ctan-bibdata/ctan.bib
@@ -1,7 +1,7 @@
%% bib file of all CTAN packages
%% (C) Herbert Voß
%%
-%% created at 04-05-2023, 02:02:40
+%% created at 05-05-2023, 02:01:17
%%
%% This file is provided under the terms of the LPPL v1.3 or
@@ -15255,7 +15255,7 @@
title = {The \texttt{coollist} package},
subtitle = {Manipulate COntent Oriented \LaTeX{} Lists},
author = {Nick Setzer},
- date = {2022-06-12},
+ date = {2023-05-04},
version = {1.4},
license = {lgpl},
mirror = {https://mirror.ctan.org/macros/latex/contrib/coollist},
@@ -68481,8 +68481,8 @@
title = {The \texttt{thmtools} package},
subtitle = {Extensions to theorem environments},
author = {Ulrich M. Schwarz and Yukai Chou},
- date = {2023-02-17},
- version = {75},
+ date = {2023-05-04},
+ version = {76},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/thmtools},
url = {https://ctan.org/pkg/thmtools},
@@ -69062,8 +69062,8 @@
title = {The \texttt{tikz-nfold} package},
subtitle = {Triple, quadruple, and n-fold paths with TikZ},
author = {Jonathan Schulz},
- date = {2023-04-24},
- version = {0.1.0},
+ date = {2023-05-04},
+ version = {0.1.1},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/graphics/pgf/contrib/tikz-nfold},
url = {https://ctan.org/pkg/tikz-nfold},
@@ -75218,7 +75218,7 @@
title = {The \texttt{windycity} package},
subtitle = {A Chicago style for BibLaTeX},
author = {Brian Chase},
- date = {2021-12-04},
+ date = {2023-05-04},
version = {},
license = {lppl1.3},
mirror = {https://mirror.ctan.org/macros/latex/contrib/biblatex-contrib/windycity},
diff --git a/biblio/ctan-bibdata/ctan.pdf b/biblio/ctan-bibdata/ctan.pdf
index fed11436d3..446d7eb5d7 100644
--- a/biblio/ctan-bibdata/ctan.pdf
+++ b/biblio/ctan-bibdata/ctan.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/tikz-nfold/README.md b/graphics/pgf/contrib/tikz-nfold/README.md
index 97d6549f60..bb89176466 100644
--- a/graphics/pgf/contrib/tikz-nfold/README.md
+++ b/graphics/pgf/contrib/tikz-nfold/README.md
@@ -1,5 +1,5 @@
# tikz-nfold
-## Version 0.1.0
+## Version 0.1.1
This library adds higher-order paths to [TikZ](https://ctan.org/pkg/pgf) and also fixes some graphical issues with TikZ' `double` paths, used e.g. in wide arrows. It is also compatible with [tikz-cd](https://ctan.org/pkg/tikz-cd), adding support for triple and higher arrows. See the [documentation](tikz-nfold-doc.pdf) for full details.
diff --git a/graphics/pgf/contrib/tikz-nfold/pgflibrarybezieroffset.code.tex b/graphics/pgf/contrib/tikz-nfold/pgflibrarybezieroffset.code.tex
index 7d9a86312f..275fa0fdf3 100644
--- a/graphics/pgf/contrib/tikz-nfold/pgflibrarybezieroffset.code.tex
+++ b/graphics/pgf/contrib/tikz-nfold/pgflibrarybezieroffset.code.tex
@@ -16,60 +16,102 @@
% This work consists of the files pgflibrarybezieroffset.code.tex,
% tikzlibrarynfold.code.tex, tikz-nfold-doc.tex, and tikz-nfold-doc.pdf.
+
+% Don't delete this code in case we need it in the future
+%
% Split a Bezier curve (de Casteljau's algorithm)
% #1 = time (between 0 and 1)
% #2-#5: control points
% Outputs the first part into \pgf@splitbezier@i@i, ... , \pgf@splitbezier@i@iv,
% and the second part into \pgf@splitbezier@ii@i, ... , \pgf@splitbezier@ii@iv.
+%\def\pgf@splitbezier#1#2#3#4#5{%
+% % based on pgfcorepoints.code.tex, \pgfpointcurveattime
+% \edef\pgf@time@s{#1}%
+% \pgf@x=-\pgf@time@s pt%
+% \advance\pgf@x by 1pt%
+% \edef\pgf@time@t{\pgf@sys@tonumber{\pgf@x}}%
+% % P^0_3
+% \pgfextract@process\pgf@splitbezier@ii@iv{#5}%
+% \pgf@xc=\pgf@x%
+% \pgf@yc=\pgf@y%
+% % P^0_2
+% \pgf@process{#4}%
+% \pgf@xb=\pgf@x%
+% \pgf@yb=\pgf@y%
+% % P^0_1
+% \pgf@process{#3}%
+% \pgf@xa=\pgf@x%
+% \pgf@ya=\pgf@y%
+% % P^0_0
+% \pgfextract@process\pgf@splitbezier@i@i{#2}%
+% % First iteration:
+% % P^1_0
+% \pgf@x=\pgf@time@t\pgf@x\advance\pgf@x by\pgf@time@s\pgf@xa%
+% \pgf@y=\pgf@time@t\pgf@y\advance\pgf@y by\pgf@time@s\pgf@ya%
+% \pgfextract@process\pgf@splitbezier@i@ii{}%
+% % P^1_1
+% \pgf@xa=\pgf@time@t\pgf@xa\advance\pgf@xa by\pgf@time@s\pgf@xb%
+% \pgf@ya=\pgf@time@t\pgf@ya\advance\pgf@ya by\pgf@time@s\pgf@yb%
+% % P^1_2
+% \pgf@xb=\pgf@time@t\pgf@xb\advance\pgf@xb by\pgf@time@s\pgf@xc%
+% \pgf@yb=\pgf@time@t\pgf@yb\advance\pgf@yb by\pgf@time@s\pgf@yc%
+% \edef\pgf@splitbezier@ii@iii{\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}%
+% % P^2_0
+% \pgf@x=\pgf@time@t\pgf@x\advance\pgf@x by\pgf@time@s\pgf@xa%
+% \pgf@y=\pgf@time@t\pgf@y\advance\pgf@y by\pgf@time@s\pgf@ya%
+% \pgfextract@process\pgf@splitbezier@i@iii{}%
+% % P^2_1
+% \pgf@xa=\pgf@time@t\pgf@xa\advance\pgf@xa by\pgf@time@s\pgf@xb%
+% \pgf@ya=\pgf@time@t\pgf@ya\advance\pgf@ya by\pgf@time@s\pgf@yb%
+% \edef\pgf@splitbezier@ii@ii{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
+% % P^3_0
+% \pgf@x=\pgf@time@t\pgf@x\advance\pgf@x by\pgf@time@s\pgf@xa%
+% \pgf@y=\pgf@time@t\pgf@y\advance\pgf@y by\pgf@time@s\pgf@ya%
+% \pgfextract@process\pgf@splitbezier@i@iv{}%
+% \let\pgf@splitbezier@ii@i\pgf@splitbezier@i@iv
+%}
-% TODO this code can be simplified to splitting at 0.5 only;
-% this is partially implemented in some pgf file, possibly decorations or basic paths.
-% But maybe I will need the general case in the future, maybe with some advanced fully simple detection.
-% Leave it in for now
-\def\pgf@splitbezier#1#2#3#4#5{%
+% Split the Bezier curve defined by #1-#4 at t=0.5 using de Casteljau's algorithm
+\def\pgf@halfsplitbezier#1#2#3#4{%
% based on pgfcorepoints.code.tex, \pgfpointcurveattime
- \pgfmathsetmacro\pgf@time@s{#1}%
- \pgf@x=-\pgf@time@s pt%
- \advance\pgf@x by 1pt%
- \edef\pgf@time@t{\pgf@sys@tonumber{\pgf@x}}%
% P^0_3
- \pgfextract@process\pgf@splitbezier@ii@iv{#5}%
+ \pgfextract@process\pgf@splitbezier@ii@iv{#4}%
\pgf@xc=\pgf@x%
\pgf@yc=\pgf@y%
% P^0_2
- \pgf@process{#4}%
+ \pgf@process{#3}% removing these does not yield a significant speedup
\pgf@xb=\pgf@x%
\pgf@yb=\pgf@y%
% P^0_1
- \pgf@process{#3}%
+ \pgf@process{#2}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
% P^0_0
- \pgfextract@process\pgf@splitbezier@i@i{#2}%
+ \pgfextract@process\pgf@splitbezier@i@i{#1}%
% First iteration:
% P^1_0
- \pgf@x=\pgf@time@t\pgf@x\advance\pgf@x by\pgf@time@s\pgf@xa%
- \pgf@y=\pgf@time@t\pgf@y\advance\pgf@y by\pgf@time@s\pgf@ya%
- \pgfextract@process\pgf@splitbezier@i@ii{}%
+ \pgf@x=.5\pgf@x\advance\pgf@x by.5\pgf@xa%
+ \pgf@y=.5\pgf@y\advance\pgf@y by.5\pgf@ya%
+ \edef\pgf@splitbezier@i@ii{\pgf@x\the\pgf@x\pgf@y\the\pgf@y}%
% P^1_1
- \pgf@xa=\pgf@time@t\pgf@xa\advance\pgf@xa by\pgf@time@s\pgf@xb%
- \pgf@ya=\pgf@time@t\pgf@ya\advance\pgf@ya by\pgf@time@s\pgf@yb%
+ \pgf@xa=.5\pgf@xa\advance\pgf@xa by.5\pgf@xb%
+ \pgf@ya=.5\pgf@ya\advance\pgf@ya by.5\pgf@yb%
% P^1_2
- \pgf@xb=\pgf@time@t\pgf@xb\advance\pgf@xb by\pgf@time@s\pgf@xc%
- \pgf@yb=\pgf@time@t\pgf@yb\advance\pgf@yb by\pgf@time@s\pgf@yc%
- \edef\pgf@splitbezier@ii@iii{\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}%
+ \pgf@xb=.5\pgf@xb\advance\pgf@xb by.5\pgf@xc%
+ \pgf@yb=.5\pgf@yb\advance\pgf@yb by.5\pgf@yc%
+ \edef\pgf@splitbezier@ii@iii{\pgf@x\the\pgf@xb\pgf@y\the\pgf@yb}%
% P^2_0
- \pgf@x=\pgf@time@t\pgf@x\advance\pgf@x by\pgf@time@s\pgf@xa%
- \pgf@y=\pgf@time@t\pgf@y\advance\pgf@y by\pgf@time@s\pgf@ya%
- \pgfextract@process\pgf@splitbezier@i@iii{}%
+ \pgf@x=.5\pgf@x\advance\pgf@x by.5\pgf@xa%
+ \pgf@y=.5\pgf@y\advance\pgf@y by.5\pgf@ya%
+ \edef\pgf@splitbezier@i@iii{\pgf@x\the\pgf@x\pgf@y\the\pgf@y}%
% P^2_1
- \pgf@xa=\pgf@time@t\pgf@xa\advance\pgf@xa by\pgf@time@s\pgf@xb%
- \pgf@ya=\pgf@time@t\pgf@ya\advance\pgf@ya by\pgf@time@s\pgf@yb%
- \edef\pgf@splitbezier@ii@ii{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
+ \pgf@xa=.5\pgf@xa\advance\pgf@xa by.5\pgf@xb%
+ \pgf@ya=.5\pgf@ya\advance\pgf@ya by.5\pgf@yb%
+ \edef\pgf@splitbezier@ii@ii{\pgf@x\the\pgf@xa\pgf@y\the\pgf@ya}%
% P^3_0
- \pgf@x=\pgf@time@t\pgf@x\advance\pgf@x by\pgf@time@s\pgf@xa%
- \pgf@y=\pgf@time@t\pgf@y\advance\pgf@y by\pgf@time@s\pgf@ya%
- \pgfextract@process\pgf@splitbezier@i@iv{}%
+ \pgf@x=.5\pgf@x\advance\pgf@x by.5\pgf@xa%
+ \pgf@y=.5\pgf@y\advance\pgf@y by.5\pgf@ya%
+ \edef\pgf@splitbezier@i@iv{\pgf@x\the\pgf@x\pgf@y\the\pgf@y}%
\let\pgf@splitbezier@ii@i\pgf@splitbezier@i@iv
}
@@ -130,6 +172,7 @@
\advance#1 by \pgf@y
\fi
}
+
% Computes the normalised tangents of a given Bezier curve and stores them in \pgf@tmp@tang@i and \pgf@tmp@tang@ii.
% Also computes the angles and stores them in \pgf@tmp@angle@i and \pgf@tmp@angle@ii.
% All degenerate cases are covered. For a triple degenerate curve (all points equal), the vector (1,0) is returned.
@@ -173,6 +216,11 @@
% normalise tangents and normals; this avoids overflow issues later, and we need
% the normal vector to be of length 1 anyway
\pgf@offset@compute@tangents{#1}{#2}{#3}{#4}%
+ \pgf@offset@bezier@segment@{#1}{#2}{#3}{#4}{#5}%
+}
+
+% this version assumes that the tangents have been precomputed in \pgf@tmp@tang@i and @ii
+\def\pgf@offset@bezier@segment@#1#2#3#4#5{%
% offset A1
% compute the normal
\pgf@tmp@tang@i
@@ -272,13 +320,6 @@
% #1-#4: control points of the whole Bezier curve
% #5: offset
-% \def\pgfoffsetcurve#1#2#3#4#5{%
-% \pgf@subdivideandoffsetcurve{#1}{#2}{#3}{#4}{#5}{\pgf@offset@max@recursion}{0}{\pgf@nfold@callback@move}%
-% }
-% \def\pgfoffsetcurvenomove#1#2#3#4#5{%
-% \pgf@subdivideandoffsetcurve{#1}{#2}{#3}{#4}{#5}{\pgf@offset@max@recursion}{0}{\pgf@nfold@callback@nomove}%
-% }
-
\def\pgfoffsetcurve#1#2#3#4#5{%
\pgfoffsetcurvecallback{#1}{#2}{#3}{#4}{#5}{\pgf@nfold@callback@move}%
}
@@ -291,95 +332,122 @@
% #5: =0 if this is the first segment of the curve, =1 otherwise
% (checking for #5=0 allows us to draw the curve without interruptions)
\def\pgf@nfold@callback@move#1#2#3#4#5{%
- \ifnum#5=0\relax\pgfpathmoveto{#1}\fi%
+ \if#50\pgfpathmoveto{#1}\fi%
\pgfpathcurveto{#2}{#3}{#4}%
}
% this version never does a moveto at the start. Useful for drawing a path consisting of
% multiple Bezier curves.
\def\pgf@nfold@callback@nomove#1#2#3#4#5{\pgfpathcurveto{#2}{#3}{#4}}
-% Like the previous macro, but with a custom callback macro for each segment instead of
-% executing \drawsegment as defined above. See \drawsegment for the arguments.
+% This macro subdivides and offsets a curve and executes a given callback on every offset simple segment.
+% #1-#4: control points of the segment
+% #5: =0 if this is the first segment of the curve, =1 otherwise
+% #6: callback (see \pgf@nfold@callback@move) for the parameters
\def\pgfoffsetcurvecallback#1#2#3#4#5#6{%
- \pgf@subdivideandoffsetcurve{#1}{#2}{#3}{#4}{#5}{\pgf@offset@max@recursion}{0}{#6}%
+ \edef\pgf@offset@tmp@callback##1##2##3##4##5{%
+ \noexpand\pgf@offset@bezier@segment{##1}{##2}{##3}{##4}{#5}%
+ \noexpand#6{\noexpand\pgf@bezier@offset@i}{\noexpand\pgf@bezier@offset@ii}{\noexpand\pgf@bezier@offset@iii}{\noexpand\pgf@bezier@offset@iv}{##5}%
+ }
+ \pgf@subdividecurve{#1}{#2}{#3}{#4}{\pgf@offset@max@recursion}{0}{\pgf@offset@tmp@callback}%
}
-% 6 parameters:
+% This macro subdivides (but does not offset) a curve and executes a callback on every simple segment.
% #1-#4: control points
-% #5: offset
-% #6: recursion limit (decreases on every recursive call)
-% #7: =0 if this is the start of the curve, =1 otherwise;
-% #8: callback for output (see above)
+% #5: recursion limit (decreases on every recursive call)
+% #6: =0 if this is the start of the curve, =1 otherwise
+% #7: callback for output (see above)
\newif\ifpgf@offset@subdivide
-\def\pgf@subdivideandoffsetcurve#1#2#3#4#5#6#7#8{%
- % we need a group to avoid overwriting variables in recursive calls
+\def\pgf@subdividecurve#1#2#3#4#5#6#7{%
\begingroup%
- \pgf@offset@subdividefalse%
- \c@pgf@counta=#6\relax
- \advance\c@pgf@counta by -1
\pgfextract@process\pgf@ctrl@i{#1}%
\pgfextract@process\pgf@ctrl@ii{#2}%
\pgfextract@process\pgf@ctrl@iii{#3}%
\pgfextract@process\pgf@ctrl@iv{#4}%
- % Use the non-degenerate tangents for the simplicity check
\pgf@offset@compute@tangents{\pgf@ctrl@i}{\pgf@ctrl@ii}{\pgf@ctrl@iii}{\pgf@ctrl@iv}%
- \pgfextract@process\pgf@itoiv{\pgfpointdiff{\pgf@ctrl@i}{\pgf@ctrl@iv}}%
- \pgfmathcrossproduct{\pgf@itoiv}{\pgf@tmp@tang@i}%
- \let\firstcross\pgfmathresult
- \pgfmathcrossproduct{\pgf@itoiv}{\pgf@tmp@tang@ii}%
- % First simplicity check: Are A2 and A3 on the same side of the A1-A4 line?
- % -> compute the sign of the cross products, use the sign function to avoid overflows
- % just give it a pass if one of them is zero, hence 2 and 3 at the end
- \ifnum
- \ifdim \firstcross pt<0pt -1\else\ifdim \firstcross pt>0pt 1\else 2\fi\fi
- =\ifdim\pgfmathresult pt<0pt -1\else\ifdim\pgfmathresult pt>0pt 1\else 3\fi\fi
- \relax % the \relax is important!
+ \pgf@subdividecurve@{#5}{#6}{#7}%
+ \endgroup%
+}
+
+% This macro assumes that the curve is defined in \pgf@ctrl@i-\pgf@ctrl@iv
+% and that its tangents have already been computed.
+\def\pgf@subdividecurve@#1#2#3{%
+ \pgf@offset@subdividefalse%
+ \c@pgf@counta=#1\relax
+ \advance\c@pgf@counta by -1
+ % Use the non-degenerate tangents for the simplicity check
+ \pgfextract@process\pgf@itoiv{\pgfpointdiff{\pgf@ctrl@i}{\pgf@ctrl@iv}}%
+ \pgfmathcrossproduct{\pgf@itoiv}{\pgf@tmp@tang@i}%
+ \let\firstcross\pgfmathresult
+ \pgfmathcrossproduct{\pgf@itoiv}{\pgf@tmp@tang@ii}%
+ % First simplicity check: Are A2 and A3 on the same side of the A1-A4 line?
+ % -> compute the sign of the cross products, use the sign function to avoid overflows
+ % just give it a pass if one of them is zero, hence 2 and 3 at the end
+ \ifnum
+ \ifdim \firstcross pt<0pt -1\else\ifdim \firstcross pt>0pt 1\else 2\fi\fi
+ =\ifdim\pgfmathresult pt<0pt -1\else\ifdim\pgfmathresult pt>0pt 1\else 3\fi\fi
+ \relax % the \relax is important!
+ \pgf@offset@subdividetrue%
+ \else%
+ % Second simplicity check: How large is the angle between the tangents in A1 and A4?
+ \pgfmathdotproduct{\pgf@tmp@tang@i}{\pgf@tmp@tang@ii}%
+ \ifdim\pgfmathresult pt<.5pt\relax%
\pgf@offset@subdividetrue%
- \else%
- % Second simplicity check: How large is the angle between the tangents in A1 and A4?
- \pgfmathdotproduct{\pgf@tmp@tang@i}{\pgf@tmp@tang@ii}%
- \ifdim\pgfmathresult pt<.5pt\relax%
- \pgf@offset@subdividetrue%
- \else
- % Third simplicity check: Put a limit on the lengths of the i-ii and iii-iv vectors combined
- \pgf@itoiv
- \pgfmathveclen@{\pgf@sys@tonumber\pgf@x}{\pgf@sys@tonumber\pgf@y}%
- \pgf@xa=\pgfmathresult pt
- \pgf@process{\pgfpointdiff{\pgf@ctrl@i}{\pgf@ctrl@ii}}%
- \pgfmathveclen@{\pgf@sys@tonumber\pgf@x}{\pgf@sys@tonumber\pgf@y}%
- \pgf@xb=\pgfmathresult pt
- \pgf@process{\pgfpointdiff{\pgf@ctrl@iii}{\pgf@ctrl@iv}}%
- \pgfmathveclen@{\pgf@sys@tonumber\pgf@x}{\pgf@sys@tonumber\pgf@y}%
- \advance\pgf@xb by \pgfmathresult pt
- % \veclen(itoiv) < veclen(ii-i) + veclen(iv-iii)
- \ifdim\pgf@xa<\pgf@xb
- \pgf@offset@subdividetrue
- \fi
- \fi%
+ \else
+ % Third simplicity check: Put a limit on the lengths of the i-ii and iii-iv vectors combined
+ \pgf@itoiv
+ \pgfmathveclen@{\pgf@sys@tonumber\pgf@x}{\pgf@sys@tonumber\pgf@y}%
+ \pgf@xa=\pgfmathresult pt
+ \pgf@process{\pgfpointdiff{\pgf@ctrl@i}{\pgf@ctrl@ii}}%
+ \pgfmathveclen@{\pgf@sys@tonumber\pgf@x}{\pgf@sys@tonumber\pgf@y}%
+ \pgf@xb=\pgfmathresult pt
+ \pgf@process{\pgfpointdiff{\pgf@ctrl@iii}{\pgf@ctrl@iv}}%
+ \pgfmathveclen@{\pgf@sys@tonumber\pgf@x}{\pgf@sys@tonumber\pgf@y}%
+ \advance\pgf@xb by \pgfmathresult pt
+ % veclen(iv-i) < veclen(ii-i) + veclen(iv-iii)
+ \ifdim\pgf@xa<\pgf@xb
+ \pgf@offset@subdividetrue
+ \fi
\fi%
- \ifpgf@offset@subdivide%
- \ifnum\c@pgf@counta<0%
- % We hit the recursion limit but the segment is not simple
- \pgfutil@packagewarning{tikz-nfold}{Recursion limit reached, glitches may occur. %
- Consider increasing \string\pgf@offset@max@recursion}%
- % Try to offset the curve anyway. The result will not be precise,
- % but the code is sufficiently robust to not crash
- \pgf@offset@bezier@segment{\pgf@ctrl@i}{\pgf@ctrl@ii}{\pgf@ctrl@iii}{\pgf@ctrl@iv}{#5}%
- #8{\pgf@bezier@offset@i}{\pgf@bezier@offset@ii}{\pgf@bezier@offset@iii}{\pgf@bezier@offset@iv}{#7}%
- \else
- % split the non-simple segment and execute recursive calls
- \pgf@splitbezier{.5}{\pgf@ctrl@i}{\pgf@ctrl@ii}{\pgf@ctrl@iii}{\pgf@ctrl@iv}%
+ \fi%
+ \ifpgf@offset@subdivide%
+ \ifnum\c@pgf@counta<0%
+ % We hit the recursion limit but the segment is not simple
+ \pgfutil@packagewarning{tikz-nfold}{Recursion limit reached, glitches may occur. %
+ Consider increasing \string\pgf@offset@max@recursion}%
+ % Try to offset the curve anyway. The result will not be precise,
+ % but the code is sufficiently robust to not crash
+ #3{\pgf@ctrl@i}{\pgf@ctrl@ii}{\pgf@ctrl@iii}{\pgf@ctrl@iv}{#2}%
+ \else
+ % split the non-simple segment and execute recursive calls
+ \pgf@halfsplitbezier{\pgf@ctrl@i}{\pgf@ctrl@ii}{\pgf@ctrl@iii}{\pgf@ctrl@iv}%
+ % compute the tangent at the spitting point; this vector is only zero if the curve
+ % is degenerate to a point, in which case we can't compute the tangent anyway
+ \pgfextract@process\pgf@middletangent{%
+ \pgfpointnormalised{\pgfpointdiff{\pgf@splitbezier@i@iii}{\pgf@splitbezier@i@iv}}}%
+ \begingroup%
+ % we need a group to avoid overwriting variables in recursive calls
+ \let\pgf@tmp@tang@ii\pgf@middletangent%
+ \let\pgf@ctrl@i\pgf@splitbezier@i@i%
+ \let\pgf@ctrl@ii\pgf@splitbezier@i@ii%
+ \let\pgf@ctrl@iii\pgf@splitbezier@i@iii%
+ \let\pgf@ctrl@iv\pgf@splitbezier@i@iv%
% pass on the "start of the curve flag" only to the first term
- \pgf@subdivideandoffsetcurve{\pgf@splitbezier@i@i}{\pgf@splitbezier@i@ii}{\pgf@splitbezier@i@iii}{\pgf@splitbezier@i@iv}{#5}{\c@pgf@counta}{#7}{#8}%
- \pgf@subdivideandoffsetcurve{\pgf@splitbezier@ii@i}{\pgf@splitbezier@ii@ii}{\pgf@splitbezier@ii@iii}{\pgf@splitbezier@ii@iv}{#5}{\c@pgf@counta}{1}{#8}%
- \fi%
- \else%
- % curve is simple
- \pgf@offset@bezier@segment{\pgf@ctrl@i}{\pgf@ctrl@ii}{\pgf@ctrl@iii}{\pgf@ctrl@iv}{#5}%
- #8{\pgf@bezier@offset@i}{\pgf@bezier@offset@ii}{\pgf@bezier@offset@iii}{\pgf@bezier@offset@iv}{#7}%
+ \pgf@subdividecurve@{\c@pgf@counta}{#2}{#3}%
+ \endgroup%
+ \begingroup%
+ \let\pgf@tmp@tang@i\pgf@middletangent%
+ \let\pgf@ctrl@i\pgf@splitbezier@ii@i%
+ \let\pgf@ctrl@ii\pgf@splitbezier@ii@ii%
+ \let\pgf@ctrl@iii\pgf@splitbezier@ii@iii%
+ \let\pgf@ctrl@iv\pgf@splitbezier@ii@iv%
+ \pgf@subdividecurve@{\c@pgf@counta}{1}{#3}%
+ \endgroup%
\fi%
- \endgroup%
+ \else%
+ % curve is simple
+ #3{\pgf@ctrl@i}{\pgf@ctrl@ii}{\pgf@ctrl@iii}{\pgf@ctrl@iv}{#2}%
+ \fi%
}
@@ -391,14 +459,25 @@
% similar to the macros for curves.
%
\def\pgfoffsetline#1#2#3{%
- \pgfpointscale{#3}{\pgfpointnormalised{\pgfpointdiff{#1}{#2}}}%
+ \pgfmathparse{#3}%
+ \pgfoffsetline@{#1}{#2}{\pgfmathresult}{\pgfpointnormalised{\pgfpointdiff{#1}{#2}}}%
+}
+
+% a quicker version in case we already know the tangent and #3 is a number without unit
+\def\pgfoffsetline@#1#2#3#4{%
+ \pgfqpointscale{#3}{#4}%
\pgf@xc=-\pgf@y
\pgf@yc=\pgf@x
\pgfpathmoveto{\pgfpointadd{#1}{\pgfqpoint{\pgf@xc}{\pgf@yc}}}%
\pgfpathlineto{\pgfpointadd{#2}{\pgfqpoint{\pgf@xc}{\pgf@yc}}}%
}
+
\def\pgfoffsetlinenomove#1#2#3{%
- \pgfpointscale{#3}{\pgfpointnormalised{\pgfpointdiff{#1}{#2}}}%
+ \pgfoffsetlinenomove@{#1}{#2}{#3}{\pgfpointnormalised{\pgfpointdiff{#1}{#2}}}%
+}
+
+\def\pgfoffsetlinenomove@#1#2#3#4{%
+ \pgfqpointscale{#3}{#4}%
\pgf@xc=-\pgf@y
\pgf@yc=\pgf@x
\pgfpathlineto{\pgfpointadd{#2}{\pgfqpoint{\pgf@xc}{\pgf@yc}}}%
diff --git a/graphics/pgf/contrib/tikz-nfold/tikz-nfold-doc.pdf b/graphics/pgf/contrib/tikz-nfold/tikz-nfold-doc.pdf
index 706890046b..a02b30a571 100644
--- a/graphics/pgf/contrib/tikz-nfold/tikz-nfold-doc.pdf
+++ b/graphics/pgf/contrib/tikz-nfold/tikz-nfold-doc.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/tikz-nfold/tikz-nfold-doc.tex b/graphics/pgf/contrib/tikz-nfold/tikz-nfold-doc.tex
index 45cdf906c7..60b1d03202 100644
--- a/graphics/pgf/contrib/tikz-nfold/tikz-nfold-doc.tex
+++ b/graphics/pgf/contrib/tikz-nfold/tikz-nfold-doc.tex
@@ -44,8 +44,8 @@
\newcommand{\tikznfold}{\texttt{/tikz/nfold}}
\pgfkeys{/tkzexample/every tkzexample/.style={
- code=violet!15, graphic=orange!20, very small,above skip={\vskip1em},below skip={\vskip1em}
- }
+ code=violet!15, graphic=orange!20, very small,above skip={\vskip1em},below skip={\vskip1em}
+ }
}
\newcommand{\tv}{\vec{t}}
@@ -203,8 +203,8 @@ This package is by no means perfect, and even if it were, there would still be s
\subsection{Fixable / wish list}
\begin{itemize}
\item \nfold{} is significantly slower than \tikzdouble. Part of the reason is that the construction is far more complex, but the code is also far from fully optimised.
- \item Closing paths (i.e.\ using \texttt{-- cycle}) is not yet fully supported: The output will not be correct if the angle between the first and last segment differs from zero.
\item Some rare cases of curves are not offset correctly. The reasons for that are discussed below in \cref{subsec:subdivisionUsed}. Usually, slightly changing the control points or values of the curve will fix the problem. If you find any, please open an issue.
+ \item Closed paths can glitch slightly when the final segment is very short and has non-zero angles on both ends.
\end{itemize}
\subsection{Impossible or very hard to fix}
@@ -240,17 +240,17 @@ This package is by no means perfect, and even if it were, there would still be s
\end{tikzpicture}
\end{tkzexample}
This cannot be fixed without extensive use of the \texttt{intersections} library, hurting the performance, and the result might still not look great for orders $\geq 3$.
- \item Very short \emph{curves} with large angles at the ends result in a glitched output:
+ \item Very short \emph{curves} with large angles at the ends result in a glitched output:\nopagebreak
\begin{tkzexample}[latex=3.75cm,pre=\disablewarnings]
-\begin{tikzpicture}
+\begin{tikzpicture}[line join=round]
\draw[black] (1,0) -- (3,0) -- (1.5,1.2) -- (3.8,0.85);
- \draw[red, line width=1pt, double distance=.6cm, nfold]
+ \draw[red, line width=1pt, double distance=.7cm, nfold]
(1,0) -- (3,0) -- (1.5, 1.2) -- (3.8,0.85);
- \draw[blue, double distance=.6cm, nfold] (1,0) -- (3,0)
+ \draw[blue, double distance=.7cm, nfold] (1,0) -- (3,0)
to[relative, out=1, in=179] (1.5, 1.2) -- (3.8,0.85);
\end{tikzpicture}
\end{tkzexample}
- This issue has been fixed for \emph{straight lines} in version \texttt{0.1.0} (note how the red line is offset correctly), but it is much harder to fix for curves.
+ This issue has been fixed for \emph{straight} lines in version \texttt{0.1.0} (note how the red line is offset correctly), but it is much harder to fix for curves.
\item Changing joins in \verb|\pgfsys@beginscope| without an accompanying \TeX{} group may cause inconsistent behaviour in the joins:
\begin{tkzexample}[latex=2cm]
\makeatletter
@@ -329,6 +329,12 @@ Here we see how the commands can be used to customise $n$-fold paths:
\section{Version history}
\begin{itemize}
+ \item \textbf{v0.1.1}: Closing paths and structural changes
+ \begin{itemize}
+ \item Support for closed paths (\texttt{cycle} and \verb|\pgfpathclose|)
+ \item Significant performance improvements due to structural changes
+ \item Minor bug fixes and optimisations
+\end{itemize}
\item \textbf{v0.1.0}: Major overhaul
\begin{itemize}
\item Support for arbitrary arrow tips
@@ -395,17 +401,17 @@ In this library we instead take a recursive approach:
\begin{verbatim}
def makeSimple(A, level):
if isSimple(A):
- segments += [A]
+ segments.append(A)
else:
if level < 0:
Display a warning
- segments += [A]
+ segments.append(A)
else:
first, second = split(A, t=0.5)
makeSimple(first, level-1)
makeSimple(second, level-1)
\end{verbatim}
-The default maximum depth is 5, so the curve is split into at most $2^5 = 32$ segments. This has the downside that some simple but not fully simple curves may remain undetected and be offset slightly incorrectly. If you encounter examples of such curves with bad outputs or if you have any ideas for additional constraints to add to \cref{def:simpleCurve} that can be checked with reasonable computational effort, please be in touch.
+The default maximum depth is 5, so the curve is split into at most $2^5 = 32$ segments. This has the downside that some simple but not fully simple curves may remain undetected and be offset slightly incorrectly. If you encounter examples of such curves with bad outputs, or if you have any ideas for additional constraints to add to \cref{def:simpleCurve} that can be checked with reasonable computational effort, please be in touch.
\subsection{Offsetting simple Bézier curves}
@@ -414,7 +420,7 @@ Disregarding edge cases (which will be discussed later), offsetting the curve wo
\begin{enumerate}
\item Construct lines orthogonal to the tangent in $A_1$ and $A_4$ and find their intersection. This point is called the \emph{origin} of the curve, denoted by $O$.
\item The new control points $A'_1$ and $A'_4$ are given by $A_1$ and $A_4$ offset orthogonally to the tangent.
- \item Construct a ray from $A'_1$ parallel to the tangent in $A_1$, and construct another ray from the origin through $A_2$. Now $A'_2$ is given by the intersection of those rays.
+ \item Construct a ray from $A'_1$ parallel to the tangent in $A_1$, and construct another ray from $O$ through $A_2$. Now $A'_2$ is defined to be the intersection of those rays.
\item $A'_3$ can be constructed similarly.
\end{enumerate}
The construction is shown in the following picture:
diff --git a/graphics/pgf/contrib/tikz-nfold/tikzlibrarynfold.code.tex b/graphics/pgf/contrib/tikz-nfold/tikzlibrarynfold.code.tex
index 75c3cdc0d3..4cc014355b 100644
--- a/graphics/pgf/contrib/tikz-nfold/tikzlibrarynfold.code.tex
+++ b/graphics/pgf/contrib/tikz-nfold/tikzlibrarynfold.code.tex
@@ -21,6 +21,20 @@
%
+% General idea
+% ============
+%
+% In order to offset a path, we must first analyse and slightly modify it. For example,
+% the start and end points of segments need to be relocated slightly in order to make room
+% for the joins, and most curves must be subdivided for the offsetting algorithm. To avoid
+% redundant computations in n-fold paths, we pre-compute as much data as possible and store
+% all this information in a "parsed path" macro. The structure of the parsed path resembles
+% the structure of a pgf softpath, but it consists of different tokens.
+%
+
+
+
+%
% Intercepting join settings
% --------------------------
%
@@ -57,23 +71,6 @@
\let\pgf@cached@linejoin=r%
}
-%
-% Various helper commands
-% -----------------------
-
-% check if a segment is visible, i.e. not moveto or last
-\newif\ifpgf@nfold@segm@visible
-\def\checkpgfsegmentvisible#1{%
- \pgf@nfold@segm@visiblefalse%
- \ifx#1\pgf@nfold@inputsegmentlineto%
- \pgf@nfold@segm@visibletrue%
- \else\ifx#1\pgf@nfold@inputsegmentcurveto%
- \pgf@nfold@segm@visibletrue
- \else\ifx#1\pgf@nfold@inputsegmentclosepath%
- \pgf@nfold@segm@visibletrue
- \fi\fi\fi
-}
-
%
% Joining offset lines
@@ -87,13 +84,12 @@
\def\pgf@nfold@miterjoin{
% The tip of the miter join is computed starting from the original (unshifted) centre of the join;
% we then move orthorgonal to the average of the old and new angle
- \pgfpointadd%
- {\pgf@nfold@inputsegment@first}%
- {\pgfpointpolar%
- {\pgf@nfold@previous@endangle+.5*\pgf@nfold@deltaphi@start+90}% do not change
- {\pgf@nfold@shiftamount/cos(.5*\pgf@nfold@deltaphi@start)}%
+ \pgfpathlineto{
+ \pgfpointadd{\pgf@nfold@join@centre}{%
+ \pgfpointpolar{\pgf@nfold@firstang+.5*\pgf@nfold@deltaphi+90}% do not change
+ {\pgf@nfold@shiftamount/cos(.5*\pgf@nfold@deltaphi)}%
}%
- \pgfpathlineto{}%
+ }%
}
\def\pgf@nfold@beveljoin{
@@ -110,17 +106,17 @@
% dead on if the outermost offset line were centered on the _edge_ of the wide line, but we want to draw
% the outside line _fully inside_ the wide line. The factor of tan(deltaphi/4) can be derived, but is not obvious.
\pgfmathsetlengthmacro{\bevelouterprotrusion}%
- {\pgf@nfold@shortenstartjoin - .5*\pgflinewidth*abs(tan(.25*\pgf@nfold@deltaphi@start))}
+ {\pgf@nfold@shortenstartjoin pt - .5*\pgflinewidth*abs(tan(.25*\pgf@nfold@deltaphi))}
% The following applies to middle lines only: We compute by how much they need to be shortened so the distance
% between the lines in the join is correct.
- \pgfmathsetmacro{\bevelshorten}{2*\insidepercentage*abs(tan(.25*\pgf@nfold@deltaphi@start))}
+ \pgfmathsetmacro{\bevelshorten}{2*\insidepercentage*abs(tan(.25*\pgf@nfold@deltaphi))}
% This threshold decides if the inside line has a bevel or a miter join
- \pgfmathparse{\bevelshorten < abs(sin(.5*\pgf@nfold@deltaphi@start))}
+ \pgfmathparse{\bevelshorten < abs(sin(.5*\pgf@nfold@deltaphi))}
\ifnum\pgfmathresult=1\relax
\pgfmathsetlengthmacro{\bevelextension}{\bevelouterprotrusion-\bevelshorten*\pgf@nfold@hwidth}
- \pgfpointadd{\pgf@nfold@join@start}{\pgfpointpolar{\pgf@nfold@previous@endangle}{\bevelextension}}
+ \pgfpointadd{\pgf@nfold@join@start}{\pgfpointpolar{\pgf@nfold@firstang}{\bevelextension}}
\pgfpathlineto{}
- \pgfpointadd{\pgf@nfold@join@end}{\pgfpointpolar{\pgf@nfold@cur@startangle}{-\bevelextension}}
+ \pgfpointadd{\pgf@nfold@join@end}{\pgfpointpolar{\pgf@nfold@secondang}{-\bevelextension}}
\pgfpathlineto{}
\else
\pgf@nfold@miterjoin
@@ -130,94 +126,140 @@
\def\pgf@nfold@roundjoin{
% The outer half of the lines get arcs, the others get miters
\ifdim\insidepercentage pt<.5pt\relax
- \pgfpointadd{\pgf@nfold@join@start}{\pgfpointpolar{\pgf@nfold@previous@endangle}{\pgf@nfold@shortenstartjoin}}
+ \pgfpointadd{\pgf@nfold@join@start}{\pgfpointpolar{\pgf@nfold@firstang}{\pgf@nfold@shortenstartjoin}}
\pgfpathlineto{}
- % Check if the angles are in the correct range; under some conditions we must add or subtract 360
- \pgfmathparse{\turnindicator*(\pgf@nfold@cur@startangle-\pgf@nfold@previous@endangle)}
- \ifdim\pgfmathresult pt>0pt\relax
- \pgfmathsetmacro{\targetang}{\pgf@nfold@cur@startangle-\turnindicator*360}
- \else
- \let\targetang\pgf@nfold@cur@startangle
- \fi
+ % TODO needs unit tests for all cases left, right, across the 360 gap etc.
+ \pgfmathsetmacro\pgf@tmp@firstang{\pgf@nfold@firstang+90*\turnindicator}
\pgfpatharc%
- {\pgf@nfold@previous@endangle+90*\turnindicator}%
- {\targetang+90*\turnindicator}%
+ {\pgf@tmp@firstang}%
+ {\pgf@tmp@firstang+\pgf@nfold@deltaphi}%
{abs(\pgf@nfold@shift@fraction)*\pgf@nfold@hwidth}%
\else
\pgf@nfold@miterjoin
\fi
}
-\def\pgf@nfold@make@join{
+% The handler that will be added to the parsed path
+% #1: The centre of the join
+% #2: The end point of the first segment
+% #3: The starting point of the second segment
+% #4: The angle of the first segment
+% #5: The angle of the second segment
+% #6: deltaphi in the range [-180, 180]
+% #7: the distance between #1 and #2
+% #8: the join + finish macro
+\def\pgf@nfold@token@join#1#2#3#4#5#6#7#8{%
+ \def\pgf@nfold@join@centre{#1}%
+ \def\pgf@nfold@join@prevend{#2}%
+ \def\pgf@nfold@join@nextstart{#3}%
+ \def\pgf@nfold@firstang{#4}%
+ \def\pgf@nfold@secondang{#5}%
% Offset the start and end of this join
\pgfextract@process\pgf@nfold@join@start{%
- \pgfpointadd{\pgf@nfold@previous@joinend}
- {\pgfpointpolar{\pgf@nfold@previous@endangle+90}{\pgf@nfold@shiftamount}}}%
+ \pgfpointadd{#2}{\pgfpointpolar{\pgf@nfold@firstang+90}{\pgf@nfold@shiftamount}}}%
\pgfextract@process\pgf@nfold@join@end{%
- \pgfpointadd{\pgf@nfold@segment@start}
- {\pgfpointpolar{\pgf@nfold@cur@startangle+90}{\pgf@nfold@shiftamount}}}%
+ \pgfpointadd{#3}{\pgfpointpolar{\pgf@nfold@secondang+90}{\pgf@nfold@shiftamount}}}%
\pgf@process{\pgfpointdiff{\pgf@nfold@join@start}{\pgf@nfold@join@end}}
% Check if the start of this segment is very close to the end of the previous segment.
% In that case we don't need a join at all
- \pgfpointtaxicabnorm\pgf@xa
- \ifdim\pgf@xa>0.1pt\relax
+ \pgfpointtaxicabnorm\pgfutil@tempdima
+ \ifdim\pgfutil@tempdima>0.1pt\relax
+ \def\pgf@nfold@deltaphi{#6}%
+ \def\pgf@nfold@shortenstartjoin{#7}%
% First step: Check if left or right turn (-1=left, 1=right)
- \ifdim\pgf@nfold@deltaphi@start pt<0pt
+ \ifdim\pgf@nfold@deltaphi pt<0pt
\def\turnindicator{1}
\else
\def\turnindicator{-1}
\fi
% \insidepercentage: between 0.0 and 1.0;
% 0=no distance to cover in the join, 1=maximum distance to cover
- \pgf@xa=\pgf@nfold@shift@fraction pt\relax
- \pgf@xa=\turnindicator\pgf@xa
- \advance\pgf@xa by-1pt\relax
- \pgf@xa=-.5\pgf@xa
+ \pgfutil@tempdima=\pgf@nfold@shift@fraction pt\relax
+ \pgfutil@tempdima=\turnindicator\pgfutil@tempdima
+ \advance\pgfutil@tempdima by-1pt\relax
+ \pgfutil@tempdima=-.5\pgfutil@tempdima
% \insidepercentage = .5 * (1 - \turnindicator*\pgf@nfold@shift@fraction)
- \edef\insidepercentage{\pgf@sys@tonumber\pgf@xa}
- \if m\pgf@cached@linejoin% \ifx is not needed because both are only one character
+ \edef\insidepercentage{\pgf@sys@tonumber\pgfutil@tempdima}%
+ #8%
+ \fi
+}
+
+
+%
+% Parser: Join handler
+%
+\def\pgf@nfold@parser@handlejoin{%
+ % \pgf@xa := abs(deltaphi@start)
+ \pgf@xa=\pgf@nfold@deltaphi@start pt\relax
+ \ifdim\pgf@xa<0pt\relax
+ \pgf@xa=-\pgf@xa
+ \fi
+ % Skip the entire join if abs(deltaphi) is too small
+ \ifdim\pgf@xa>1pt\relax
+ \edef\pgf@nfold@jointype{\pgf@cached@linejoin}
+ \if\pgf@cached@linejoin m% \ifx is not needed because both are only one character
% miter join
% First we implement the miter limit: If the angle is too sharp, the miter join is replaced
% by a bevel join. This is controlled by /tikz/miter limit=..., initially 10.
- \pgf@xa=\pgf@nfold@deltaphi@start pt\relax
\pgf@xa=.5\pgf@xa
\pgfmathcos@{\pgf@sys@tonumber\pgf@xa}
\pgf@xa=\pgfmathresult pt\relax
\pgf@xa=\pgf@nfold@cached@miterlimit\pgf@xa
- % Check if miterlimit*cos(.5*deltaphi) > 1;
- % cos(.5*deltaphi) >= 0 because -180 <= deltaphi <= 180
+ % Switch to bevel if miterlimit*cos(.5*abs(deltaphi)) <= 1
\ifdim\pgf@xa>1pt\relax
- \pgf@nfold@miterjoin
+ \def\pgf@nfold@tmp@joinmacro{\pgf@nfold@miterjoin}
\else
- \pgf@nfold@beveljoin
+ \def\pgf@nfold@tmp@joinmacro{\pgf@nfold@beveljoin}
\fi
\else
\if b\pgf@cached@linejoin\relax
- \pgf@nfold@beveljoin
+ \def\pgf@nfold@tmp@joinmacro{\pgf@nfold@beveljoin}
\else
- \if r\pgf@cached@linejoin
- % round join
- \pgf@nfold@roundjoin
- \fi
+ \def\pgf@nfold@tmp@joinmacro{\pgf@nfold@roundjoin}
\fi
\fi
- % All non-trivial joins connect to the end of the join, which is the starting point of the current segment.
- % Note that this entire macro is skipped by if the start and end of the join coincide, so we never create a zero length segment here.
- %
- % There is one edge case here: If two subsequent joins are so close that \pgf@nfold@segment@end
- % and \pgf@nfold@segment@start exchange places *and* we are on the outside of the join
- % (implying that we are on the inside of the next join), \pgf@nfold@join@end will be located behind the next join.
- % In this case we instead connect to the offset of \pgf@nfold@segment@end (which comes *before* \pgf@nfold@segment@start).
- \pgf@nfold@join@end% default point to connect to
- \ifpgf@nfold@closejoinsedgecase%
- \ifdim\insidepercentage pt<.5pt\relax%
- \pgf@process{\pgfpointadd%
- {\pgf@nfold@segment@end}%
- {\pgfpointpolar{\pgf@nfold@cur@startangle+90}{\pgf@nfold@shiftamount}}}
- \fi%
- \fi
- \pgfpathlineto{}
- \fi
+ % The last parameter is a macro to be called when this segment of the join is non-trivial.
+ % It consists of
+ % - the macro to actually draw the join,
+ % - either finish@normal or finish@edgecase.
+ \edef\pgf@nfold@macrotoadd{%
+ \noexpand\pgf@nfold@token@join{\pgf@nfold@cur@first}{\pgf@nfold@prev@segment@end}
+ {\pgf@nfold@cur@movedfirst}{\pgf@nfold@prev@angle@ii}{\pgf@nfold@cur@angle@i}%
+ {\pgf@nfold@deltaphi@start}{\pgf@nfold@shortenstartjoin}{%
+ \expandafter\noexpand\pgf@nfold@tmp@joinmacro%
+ \expandafter\noexpand\ifpgf@nfold@closejoinsedgecase%
+ \pgf@nfold@token@finish@edgecase{\pgf@nfold@cur@movedlast}%
+ \else%
+ \pgf@nfold@token@finish@normal%
+ \fi%
+ }%
+ }%
+ \pgf@nfold@addmacro\pgf@parsed@cur@conn@seg%
+ \fi% end if abs(deltaphi) > 1
+}
+
+
+% All non-trivial joins connect to the end of the join, which is the starting point of the next segment.
+% Note that this entire macro is skipped by if the start and end of the join coincide, so we never create a zero length segment here.
+%
+% There is one edge case here: If two subsequent joins are so close that \pgf@nfold@cur@movedlast
+% and \pgf@nfold@cur@movedfirst exchange places *and* we are on the outside of the first join
+% (implying that we are on the inside of the second join), the first join must not connect all the way to
+% to \pgf@nfold@cur@movedfirst, because that would overshoot the second join. Instead we connect to
+% \pgf@nfold@cur@movedlast (which is *closer* to the first join than \pgf@nfold@cur@movedfirst in this edge case).
+% To accomodate for the vertical offset we connect to \pgf@nfold@join@end which is the vertical
+% offset of \pgf@nfold@cur@movedlast by definition.
+\def\pgf@nfold@token@finish@normal{%
+ \pgfpathlineto{\pgf@nfold@join@end}%
+}
+
+% parameter #1: @movedlast of the next segment
+\def\pgf@nfold@token@finish@edgecase#1{%
+ \pgf@nfold@join@end%
+ \ifdim\insidepercentage pt<.5pt\relax%
+ \pgf@process{\pgfpointadd{#1}{\pgfpointpolar{\pgf@nfold@secondang+90}{\pgf@nfold@shiftamount}}}
+ \fi%
+ \pgfpathlineto{}%
}
@@ -236,74 +278,101 @@
\newif\ifpgf@nfold@intersectionsnotloaded
-\def\pgf@nfold@handlesegment{%
- %%% Step 0: Preparation
- % Set some default values; they might get overwritten later
- \let\pgf@nfold@segment@start\pgf@nfold@inputsegment@first
- \let\pgf@nfold@segment@end\pgf@nfold@inputsegment@last
- % Set a default value for \ifpgf@nfold@continuesegment.
- % It may be overwritten by \pgf@nfold@extendtotip
- \ifx\pgf@nfold@previousinputsegment\pgf@nfold@inputsegmentmoveto
- \pgf@nfold@continuesegmentfalse
- \else
- \pgf@nfold@continuesegmenttrue
- \fi
- %%% Step 1: Make space for joins if necessary
- % In order to make space for the join, it may be necessary to shorten the current segment
- % at the start and/or the end. In here we store by how much the segment needs to be shortened.
- \def\pgf@nfold@shortenstartjoin{0pt}
- \def\pgf@nfold@shortenendjoin{0pt}
- \pgf@nfold@closejoinsedgecasefalse
- \pgf@nfold@angletoosharpfalse
- % Make a join only if two adjacent segments are both visible
- \checkpgfsegmentvisible\pgf@nfold@currentinputsegment
- \ifpgf@nfold@segm@visible%
- % Step 1.1: Make space for the join at the start if needed
- \ifx\pgf@nfold@previousinputsegment\pgf@nfold@inputsegmentmoveto\else
+\def\pgf@nfold@parser@handlesegment{%
+ \if\pgf@nfold@cur@visible 0
+ % first, last and moveto are invisible
+ \if\pgf@nfold@cur@type m
+ % We don't need to do anything for a moveto: If a visible segment follows, it will move to
+ % its starting location by itself. However, we might need to draw the arrow tip extension
+ % at the start (if present).
+ \if\pgf@nfold@start@arrowcode1
+ \if\pgf@nfold@prev@type f
+ \if\pgf@nfold@next@visible1
+ \edef\pgf@nfold@macrotoadd{%
+ \noexpand\pgf@nfold@extendtotip{s}{\pgf@nfold@cur@last}{\pgf@nfold@next@angle@i}
+ }%
+ \pgf@nfold@addmacro\pgf@parsed@cur@conn@seg%
+ % hack: We make the next segment believe that this segment was a lineto
+ % so the path does not get interrupted
+ \let\pgf@nfold@cur@type l
+ \let\pgf@nfold@cur@visible 1
+ \let\pgf@nfold@cur@angle@ii\pgf@nfold@next@angle@i
+ \let\pgf@nfold@cur@tang@ii\pgf@nfold@next@tang@i
+ \fi
+ \fi%
+ \fi
+ \fi%
+ \else%
+ \let\pgf@nfold@cur@movedfirst\pgf@nfold@cur@first
+ \let\pgf@nfold@cur@movedlast\pgf@nfold@cur@last
+ %%% Step 1: Make room for joins if necessary
+ % In order to make room for the join, it may be necessary to shorten the current segment
+ % at the start and/or the end. In here we store by how much the segment needs to be shortened.
+ \def\pgf@nfold@shortenstartjoin{0}
+ \def\pgf@nfold@shortenendjoin{0}
+ \pgf@nfold@closejoinsedgecasefalse
+ \pgf@nfold@angletoosharpfalse
+ % Step 1.1: Make room for the join at the start if needed
+ \if\pgf@nfold@prev@visible1
+ \pgf@nfold@continuesegmenttrue
+ % TODO can we just use deltaphi@end from the previous round?
+ % Compute the angle difference at the start (between -180 and +180 degrees)
+ % using \pgfmathsubtract@ is more readable and no less efficient than computing this manually
+ \pgfmathsubtract@{\pgf@nfold@cur@angle@i}{\pgf@nfold@prev@angle@ii}
+ \pgf@nfold@clampangle
+ \edef\pgf@nfold@deltaphi@start{\pgfmathresult}
\pgf@xb=\pgf@nfold@deltaphi@start pt\relax
\ifdim\pgf@xb<0pt\relax
\pgf@xb=-\pgf@xb
\fi
\ifdim\pgf@xb>178pt\relax
% we go full backwards, don't relocate the start and disable the join to avoid division by zero
- \pgfutil@packagewarning{tikz-nfold}{Angle too sharp, expect visual errors}
+ % don't need an error message here, it has already been displayed in the previous segment
\pgf@nfold@angletoosharptrue
\else
\ifdim\pgf@xb>0.5pt\relax
- % make space for the start join if the angle is nonzero
+ % make room for the start join if the angle is nonzero;
+ % shortenstartjoin := hwidth*tan(.5*abs(deltaphi@start))
\pgf@yb=.5\pgf@xb
\pgfmathtan@{\pgf@sys@tonumber\pgf@yb}
\pgf@yb=\pgf@nfold@hwidth\relax
\pgf@yb=\pgfmathresult\pgf@yb
- % shortenstartjoin = hwidth*tan(.5*abs(deltaphi@start))
- \edef\pgf@nfold@shortenstartjoin{\the\pgf@yb}
- \pgfextract@process\pgf@nfold@segment@start{%
- \pgfpointadd{\pgf@nfold@inputsegment@first}%
- {\pgfqpointpolar{\pgf@nfold@cur@startangle}{\pgf@yb}}}%
- \ifx\pgf@nfold@currentinputsegment\pgf@nfold@inputsegmentcurveto
- % For a curve we need to relocate the @supporta point as well, as otherwise the @first point
- % might overtake it
- \pgf@process{\pgfpointdiff{\pgf@nfold@inputsegment@first}{\pgf@nfold@inputsegment@supporta}}
+ \edef\pgf@nfold@shortenstartjoin{\pgf@sys@tonumber\pgf@yb}
+ \pgfextract@process\pgf@nfold@cur@movedfirst{%
+ \pgfpointadd{\pgf@nfold@cur@first}%
+ {\pgfqpointscale{\pgf@nfold@shortenstartjoin}{\pgf@nfold@cur@tang@i}}}%
+ % If the current segment is a curve, we need to relocate @supporta point as well,
+ % as otherwise the @first point could overtake it
+ \if\pgf@nfold@cur@type c
+ \pgf@process{\pgfpointdiff{\pgf@nfold@cur@first}{\pgf@nfold@cur@supporta}}
\pgfmathveclen@{\pgf@sys@tonumber\pgf@x}{\pgf@sys@tonumber\pgf@y}
\ifdim\pgfmathresult pt>0.1pt\relax
% regular curves (supporta != first):
% Increase dist(first, supporta) to sqrt(a^2 + b^2) where a=dist(first, supporta) and b=shortenstart. This way, the order of first and supporta is guaranteed to be preserved, and the change to supporta is as small as reasonably possible.
\pgfmathveclen@{\pgfmathresult}{\pgf@sys@tonumber\pgf@yb}
- \pgfextract@process\pgf@nfold@inputsegment@supporta{\pgfpointadd%
- {\pgf@nfold@inputsegment@first}%
- {\pgfqpointpolar{\pgf@nfold@cur@startangle}{\pgfmathresult pt}}}%
+ \pgfextract@process\pgf@nfold@cur@supporta{\pgfpointadd%
+ {\pgf@nfold@cur@first}%
+ % TODO migrate to tangent
+ {\pgfqpointpolar{\pgf@nfold@cur@angle@i}{\pgfmathresult pt}}}%
\else
% special treatment for singular curves (supporta = first) to avoid rounding error glitches.
- % In this special case, a slight corner at the end of the join is unavoidable
- \let\pgf@nfold@inputsegment@supporta\pgf@nfold@segment@start
+ % In this special case, a slight corner at the end of the join is unavoidable unless we
+ % also relocate @supportb, which may have unintended side effects
+ \let\pgf@nfold@cur@supporta\pgf@nfold@cur@movedfirst
\fi
\fi
\fi
\fi
+ \else
+ \pgf@nfold@continuesegmentfalse
\fi
- % Step 1.2: Make space for the join at the end if needed
- \checkpgfsegmentvisible\pgf@nfold@next@segmenttype
- \ifpgf@nfold@segm@visible%
+ % Step 1.2: Make room for the join at the end if needed
+ \if\pgf@nfold@next@visible1
+ % Compute the angle difference at the start (between -180 and +180 degrees)
+ % using \pgfmathsubtract@ is more readable and no less efficient than computing this manually
+ \pgfmathsubtract@{\pgf@nfold@next@angle@i}{\pgf@nfold@cur@angle@ii}
+ \pgf@nfold@clampangle
+ \edef\pgf@nfold@deltaphi@end{\pgfmathresult}
\pgf@xb=\pgf@nfold@deltaphi@end pt\relax
\ifdim\pgf@xb<0pt\relax
\pgf@xb=-\pgf@xb
@@ -313,29 +382,34 @@
\pgf@nfold@angletoosharptrue
\else
\ifdim\pgf@xb>0.5pt\relax
- % make space for the start join if the angle is nonzero
+ % make room for the start join if the angle is nonzero
+ % shortenendjoin := hwidth*tan(.5*abs(deltaphi@end))
\pgf@yb=.5\pgf@xb
\pgfmathtan@{\pgf@sys@tonumber\pgf@yb}
\pgf@yb=\pgf@nfold@hwidth\relax
\pgf@yb=\pgfmathresult\pgf@yb
- % shortenendjoin = hwidth*tan(.5*abs(deltaphi@end))
- \edef\pgf@nfold@shortenendjoin{\the\pgf@yb}
+ \edef\pgf@nfold@shortenendjoin{\pgf@sys@tonumber\pgf@yb}
\pgf@yb=-\pgf@yb
- \pgfextract@process\pgf@nfold@segment@end{%
- \pgfpointadd{\pgf@nfold@inputsegment@last}%
- {\pgfqpointpolar{\pgf@nfold@cur@endangle}{\pgf@yb}}}%
- \ifx\pgf@nfold@currentinputsegment\pgf@nfold@inputsegmentcurveto
+ \pgfextract@process\pgf@nfold@cur@movedlast{%
+ % the use of the minus sign is fine here because \pgf@nfold@shortenendjoin >= 0.0
+ \pgfpointadd{\pgf@nfold@cur@last}%
+ {\pgfqpointscale{-\pgf@nfold@shortenendjoin}{\pgf@nfold@cur@tang@ii}}}%
+ \pgfextract@process\pgf@nfold@cur@movedlast{%
+ \pgfpointadd{\pgf@nfold@cur@last}%
+ {\pgfqpointpolar{\pgf@nfold@cur@angle@ii}{\pgf@yb}}}%
+ \if\pgf@nfold@cur@type c
% Same procedure as above: relocate supportb if we have a curve
- \pgf@process{\pgfpointdiff{\pgf@nfold@inputsegment@supportb}{\pgf@nfold@inputsegment@last}}
+ \pgf@process{\pgfpointdiff{\pgf@nfold@cur@supportb}{\pgf@nfold@cur@last}}
\pgfmathveclen@{\pgf@sys@tonumber\pgf@x}{\pgf@sys@tonumber\pgf@y}
\ifdim\pgfmathresult pt>0.1pt\relax
\pgfmathveclen@{\pgfmathresult}{\pgf@sys@tonumber\pgf@yb}
% can use qpoint and minus because \pgfmathresult is guaranteed to be positive
- \pgfextract@process\pgf@nfold@inputsegment@supportb{\pgfpointadd%
- {\pgf@nfold@inputsegment@last}%
- {\pgfqpointpolar{\pgf@nfold@cur@endangle}{-\pgfmathresult pt}}}%
+ \pgfextract@process\pgf@nfold@cur@supportb{\pgfpointadd%
+ {\pgf@nfold@cur@last}%
+ % TODO migrate to tangent
+ {\pgfqpointpolar{\pgf@nfold@cur@angle@ii}{-\pgfmathresult pt}}}%
\else
- \let\pgf@nfold@inputsegment@supportb\pgf@nfold@segment@end
+ \let\pgf@nfold@cur@supportb\pgf@nfold@cur@movedlast
\fi
\fi
\fi
@@ -347,13 +421,13 @@
% a correct output (i.e. one join is immediately followed by the next without a segment in between).
%
% This edge case can appear for curves as well, but they are much harder to deal with.
- \ifx\pgf@nfold@currentinputsegment\pgf@nfold@inputsegmentlineto
+ \if\pgf@nfold@cur@type l
% No need to check for \pgf@nfold@inputsegmentclosepath as it should not be followed by any further segments
% Now: Check if the total amount of shortening is larger than the length of the segment
- \pgfpointdiff{\pgf@nfold@inputsegment@first}{\pgf@nfold@inputsegment@last}
+ \pgf@process{\pgfpointdiff{\pgf@nfold@cur@first}{\pgf@nfold@cur@last}}
\pgfmathveclen@{\pgf@sys@tonumber\pgf@x}{\pgf@sys@tonumber\pgf@y}
- \pgf@xa=\pgf@nfold@shortenstartjoin\relax
- \advance\pgf@xa by\pgf@nfold@shortenendjoin\relax
+ \pgf@xa=\pgf@nfold@shortenstartjoin pt\relax
+ \advance\pgf@xa by\pgf@nfold@shortenendjoin pt\relax
\ifdim\pgf@xa>\pgfmathresult pt\relax
\pgf@nfold@closejoinsedgecasetrue
\fi
@@ -362,75 +436,96 @@
%
% Step 2.1: Draw the join at the start if applicable
%
- \ifx\pgf@nfold@previousinputsegment\pgf@nfold@inputsegmentmoveto
+ \if\pgf@nfold@prev@visible0%
\ifpgf@nfold@closejoinsedgecase
% If the previous segment is a moveto and the current segment is a "close joins" edge case,
% nothing needs to be drawn here (the relevant draw call will be made at the join of the subsequent
% segment). We must therefore make sure that we move to the correct end point of this segment.
- % Counterintuitively, this is given by the offset of \pgf@nfold@segment@start since the start and end
+ % Counterintuitively, this is given by the offset of \pgf@nfold@cur@movedfirst since the start and end
% are reversed in the edge case.
- \pgfpointadd%
- {\pgf@nfold@segment@start}%
- {\pgfpointpolar{\pgf@nfold@cur@startangle+90}{\pgf@nfold@shiftamount}}
- \pgfpathmoveto{}
- \fi
+ \edef\pgf@nfold@macrotoadd{%
+ \noexpand\pgf@nfold@token@edgecase@movetostart{\pgf@nfold@cur@movedfirst}{\pgf@nfold@cur@angle@i}%
+ }%
+ \pgf@nfold@addmacro\pgf@parsed@cur@conn@seg%
+ \fi
\else
% If we draw the join when the start angle is close to 180 degrees, we get a division by zero
\ifpgf@nfold@angletoosharp\else
- \pgf@nfold@make@join
+ \pgf@nfold@parser@handlejoin
\fi
\fi
- \fi% end if current segment visible
- % Step 2.2: Store where the current (non-offset) end point was relocated
- % in order to make space for the end join. This may be used if the next
- % segment begins with a join
- \let\pgf@nfold@previous@joinend\pgf@nfold@segment@end
- %
- % Step 3: Draw the new segment.
- %
- % The value of \ifpgf@nfold@continuesegment decides whether we start with a moveto.
- \ifx\pgf@nfold@currentinputsegment\pgf@nfold@inputsegmentlineto
- \ifpgf@nfold@closejoinsedgecase\else
+ % Step 2.2: Store where the current (non-offset) end point was relocated
+ % in order to make space for the end join. This may be used if the next
+ % segment begins with a join
+ \let\pgf@nfold@prev@segment@end\pgf@nfold@cur@movedlast
+ %
+ % Step 3: Draw the new segment.
+ %
+ % The value of \ifpgf@nfold@continuesegment decides whether we start with a moveto.
+ % curveto
+ \if\pgf@nfold@cur@type l
+ % In the edge case, one join is followed immediately by the next. The line segment
+ % thus has a negative length and will be skipped.
+ \ifpgf@nfold@closejoinsedgecase\else
+ \edef\pgf@nfold@macrotoadd{%
+ \expandafter\noexpand\ifpgf@nfold@continuesegment%
+ \pgf@nfold@token@lineto@continue%
+ \else%
+ \pgf@nfold@token@lineto%
+ \fi{\pgf@nfold@cur@movedfirst}{\pgf@nfold@cur@movedlast}{\pgf@nfold@cur@tang@i}%
+ }%
+ \pgf@nfold@addmacro\pgf@parsed@cur@conn@seg%
+ \fi
+ \fi
+ \if\pgf@nfold@cur@type o
+ \def\pgf@nfold@macrotoadd{\pgf@nfold@token@closepath}%
+ \pgf@nfold@addmacro\pgf@parsed@cur@conn@seg%
+ \fi
+ \if\pgf@nfold@cur@type c
\ifpgf@nfold@continuesegment
- \pgfoffsetlinenomove{\pgf@nfold@segment@start}{\pgf@nfold@segment@end}{\pgf@nfold@shiftamount}
+ \pgf@subdividecurve{\pgf@nfold@cur@movedfirst}{\pgf@nfold@cur@supporta}{\pgf@nfold@cur@supportb}{\pgf@nfold@cur@movedlast}{\pgf@offset@max@recursion}{0}{\pgf@nfold@addcurvesegment@callback@continue}
\else
- \pgfoffsetline{\pgf@nfold@segment@start}{\pgf@nfold@segment@end}{\pgf@nfold@shiftamount}
+ \pgf@subdividecurve{\pgf@nfold@cur@movedfirst}{\pgf@nfold@cur@supporta}{\pgf@nfold@cur@supportb}{\pgf@nfold@cur@movedlast}{\pgf@offset@max@recursion}{0}{\pgf@nfold@addcurvesegment@callback}%
\fi
\fi
- \fi
- \ifx\pgf@nfold@currentinputsegment\pgf@nfold@inputsegmentclosepath
- % Incomplete: proper join is missing
- % Idea: when parsing the path, add a detection if there is a closepath at the current segment,
- % then cache the data of the last segment.
- % We could then insert a "fake previous segment" into the path at the right place
- \pgfutil@packagewarning{tikz-nfold}{The option `cycle' is not yet properly supported}
- \pgfpathclose
- \fi
- \ifx\pgf@nfold@currentinputsegment\pgf@nfold@inputsegmentcurveto
- \ifpgf@nfold@continuesegment
- \pgfoffsetcurvenomove{\pgf@nfold@segment@start}{\pgf@nfold@inputsegment@supporta}{\pgf@nfold@inputsegment@supportb}{\pgf@nfold@segment@end}{\pgf@nfold@shiftamount}
- \else
- \pgfoffsetcurve{\pgf@nfold@segment@start}{\pgf@nfold@inputsegment@supporta}{\pgf@nfold@inputsegment@supportb}{\pgf@nfold@segment@end}{\pgf@nfold@shiftamount}
+ \if\pgf@nfold@cur@type i
+ \edef\pgf@nfold@macrotoadd{%
+ \noexpand\pgf@nfold@token@invisibleline{\pgf@nfold@cur@movedfirst}{\pgf@nfold@cur@movedlast}{\pgf@nfold@cur@tang@i}%
+ }%
+ \pgf@nfold@addmacro\pgf@parsed@cur@conn@seg%
\fi
- \fi
- \ifx\pgf@nfold@currentinputsegment\pgf@nfold@inputsegmentmoveto
- % Every moveto is executed in the offsetting of the subsequent draw command,
- % therefore we do not need a \pgfpathmoveto call here
- \ifx\pgf@nfold@previousinputsegment\pgf@nfold@inputsegmentfirst
- % Draw the tip extension at the start (if present)
- \ifnum\pgf@nfold@start@arrowcode=1
- \pgf@nfold@extendtotip{s}%
+ % Step 4: Extend into the arrow tip at the end (if present)
+ \if\pgf@nfold@next@type t%
+ \ifnum\pgf@nfold@end@arrowcode=1
+ \edef\pgf@nfold@macrotoadd{%
+ \noexpand\pgf@nfold@extendtotip{e}{\pgf@nfold@cur@last}{\pgf@nfold@cur@angle@ii}}%
+ \pgf@nfold@addmacro\pgf@parsed@cur@conn@seg%
\fi%
- \fi
- \fi
- % Step 4: Extend into the arrow tip at the end (if present)
- \ifx\pgf@nfold@next@segmenttype\pgf@nfold@inputsegmentlast%
- \ifnum\pgf@nfold@end@arrowcode=1
- \pgf@nfold@extendtotip{e}%
\fi%
+ \fi% end if current visible
+}
+
+
+\def\pgf@nfold@addcurvesegment@callback#1#2#3#4#5{%
+ \if#50%
+ \edef\pgf@nfold@macrotoadd{%
+ % The subdivision algorithm has already computed the tangents
+ \noexpand\pgf@nfold@token@curveto{#1}{#2}{#3}{#4}{\pgf@tmp@tang@i}{\pgf@tmp@tang@ii}%
+ }%
+ \pgf@nfold@addmacro\pgf@parsed@cur@conn@seg%
+ \else%
+ \pgf@nfold@addcurvesegment@callback@continue{#1}{#2}{#3}{#4}{#5}%
\fi%
}
+\def\pgf@nfold@addcurvesegment@callback@continue#1#2#3#4#5{%
+ % The subdivision algorithm has already computed the tangents
+ \edef\pgf@nfold@macrotoadd{%
+ \noexpand\pgf@nfold@token@curveto@continue{#1}{#2}{#3}{#4}{\pgf@tmp@tang@i}{\pgf@tmp@tang@ii}%
+ }%
+ \pgf@nfold@addmacro\pgf@parsed@cur@conn@seg%
+}
+
% Rendering arrow tips
% --------------------
@@ -452,42 +547,54 @@
\def\pgf@nfold@intersec@numcached{5}
% This macro extends the arrow body to the tips
-% parameter: s=start, e=end
-\def\pgf@nfold@extendtotip#1{
+% #1: s=start, e=end
+% #2: start/end point of the path
+% #3: angle
+\newif\ifpgf@nfold@ontheedge
+\def\pgf@nfold@extendtotip#1#2#3{
\ifpgf@nfold@intersectionsnotloaded
\pgfutil@packageerror{tikz-nfold}{%
If `nfold' is larger than \pgf@nfold@intersec@numcached\space and you use
an `Implies' arrow tip you need to say \string\usetikzlibrary{intersections}}{}
\else
- % Do not extend the arrow for index=1 and index=order, it already ends in the right place
- \ifnum\pgf@nfold@index>1\relax\ifnum\pgf@nfold@index<\pgf@nfold@order\relax%
- % Step 1: Find the intersection of the arrow's path with the head
- \ifcsname pgf@nfold@intersec@cache@\the\pgf@nfold@index @\the\pgf@nfold@order\endcsname
- \pgfextract@process\pgf@nfold@arrowintersect
- {\csname pgf@nfold@intersec@cache@\the\pgf@nfold@index @\the\pgf@nfold@order\endcsname}%
+ \pgf@nfold@ontheedgetrue
+ % Do not extend the arrow for index=1 and index=order, it already ends in the right place
+ \ifnum\pgf@nfold@index>1\relax\ifnum\pgf@nfold@index<\pgf@nfold@order\relax%
+ \pgf@nfold@ontheedgefalse
+ \fi\fi
+ \ifpgf@nfold@ontheedge%
+ % the extension at the start needs a moveto to the correct starting point
+ \if#1s
+ \pgfpathmoveto{\pgfpointadd{#2}{\pgfpointpolar{#3+90}{\pgf@nfold@shiftamount}}}%
+ \fi
+ \else
+ % Step 1: Find the intersection of the arrow's path with the head
+ \ifcsname pgf@nfold@intersec@cache@\the\pgf@nfold@index @\the\pgf@nfold@order\endcsname
+ \pgfextract@process\pgf@nfold@arrowintersect
+ {\csname pgf@nfold@intersec@cache@\the\pgf@nfold@index @\the\pgf@nfold@order\endcsname}%
+ \else
+ % the intersection has not been precomputed, thus compute on the fly here
+ \pgfintersectionofpaths{
+ % specify the tip
+ \pgfpathmoveto{\pgfqpoint{-1.4pt}{2.65pt}}
+ \pgfpathcurveto{\pgfqpoint{-0.75pt}{1.25pt}}{\pgfqpoint{1pt}{0.05pt}}{\pgfqpoint{2pt}{0pt}}
+ \pgfpathcurveto{\pgfqpoint{1pt}{-0.05pt}}{\pgfqpoint{-0.75pt}{-1.25pt}}{\pgfqpoint{-1.4pt}{-2.65pt}}
+ }{
+ % extend the body to intersect the tip
+ \pgfpathmoveto{\pgfqpoint{-3pt}{\pgf@nfold@shift@fraction pt}}
+ \pgfpathlineto{\pgfqpoint{3pt}{\pgf@nfold@shift@fraction pt}}
+ }
+ \ifnum\pgfintersectionsolutions>0
+ \pgfextract@process\pgf@nfold@arrowintersect{\pgfpointintersectionsolution{1}}%
+ \immediate\write17{tikz-nfold: computed intersection cache@\the\pgf@nfold@index @\the\pgf@nfold@order: \string\pgfqpoint{\the\pgf@x}{\the\pgf@y}^^J}
+ % add the new intersection to the cache
+ \expandafter\xdef\csname pgf@nfold@intersec@cache@\the\pgf@nfold@index @\the\pgf@nfold@order\endcsname{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}
\else
- % the intersection has not been precomputed, thus compute on the fly here
- \pgfintersectionofpaths{
- % specify the tip
- \pgfpathmoveto{\pgfqpoint{-1.4pt}{2.65pt}}
- \pgfpathcurveto{\pgfqpoint{-0.75pt}{1.25pt}}{\pgfqpoint{1pt}{0.05pt}}{\pgfqpoint{2pt}{0pt}}
- \pgfpathcurveto{\pgfqpoint{1pt}{-0.05pt}}{\pgfqpoint{-0.75pt}{-1.25pt}}{\pgfqpoint{-1.4pt}{-2.65pt}}
- }{
- % extend the body to intersect the tip
- \pgfpathmoveto{\pgfqpoint{-3pt}{\pgf@nfold@shift@fraction pt}}
- \pgfpathlineto{\pgfqpoint{3pt}{\pgf@nfold@shift@fraction pt}}
- }
- \ifnum\pgfintersectionsolutions>0
- \pgfextract@process\pgf@nfold@arrowintersect{\pgfpointintersectionsolution{1}}%
- \immediate\write17{tikz-nfold: computed intersection cache@\the\pgf@nfold@index @\the\pgf@nfold@order: \string\pgfqpoint{\the\pgf@x}{\the\pgf@y}^^J}
- % add the new intersection to the cache
- \expandafter\xdef\csname pgf@nfold@intersec@cache@\the\pgf@nfold@index @\the\pgf@nfold@order\endcsname{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}
- \else
- % this is a failsafe and should never be reached
- \pgfutil@packagewarning{tikz-nfold}{did not find intersection}
- \pgfextract@process\pgf@nfold@arrowintersect{\pgfqpoint{0pt}{\pgf@nfold@shift@fraction pt}}%
- \fi
- \fi% if precomputed
+ % this is a failsafe and should never be reached
+ \pgfutil@packagewarning{tikz-nfold}{did not find intersection}
+ \pgfextract@process\pgf@nfold@arrowintersect{\pgfqpoint{0pt}{\pgf@nfold@shift@fraction pt}}%
+ \fi
+ \fi% if precomputed
% Step 2: Extend the arrow body to the intersection point.
% If the tip is at the beginning of the path, we have to move to the intersection
% and then draw a line to the "regular" starting point. The subsequent segment then
@@ -496,13 +603,10 @@
% the current path to the intersection point.
\begingroup
\pgftransformreset
+ \pgftransformshift{#2}
+ \pgftransformrotate{#3}
\if#1s
- \pgftransformshift{\pgf@nfold@segment@start}
- \pgftransformrotate{\pgf@nfold@next@startangle}
\pgftransformxscale{-1}
- \else
- \pgftransformshift{\pgf@nfold@segment@end}
- \pgftransformrotate{\pgf@nfold@cur@endangle}
\fi
% we don't want to undo the shift by .42\pgflinewidth after the scaling
\pgfutil@tempdima=\pgf@nfold@hwidth
@@ -520,17 +624,13 @@
\pgfpathmoveto{\pgf@nfold@arrowintersect}
% This is precisely the start of the body, shifted vertically
\pgfpathlineto{\pgf@nfold@startofextension}
- % hack: We make the next segment believe that this segment was a lineto
- % so the path does not get interrupted
- \let\pgf@nfold@currentinputsegment\pgf@nfold@inputsegmentlineto
- \let\pgf@nfold@cur@endangle\pgf@nfold@next@startangle
\else\if#1e
\pgfpathlineto{\pgf@nfold@arrowintersect}
\else
\pgfutil@packageerror{tikz-nfold}{Invalid argument to \string\pgf@nfold@extendtotip: \meaning#1}{}
\fi\fi
\pgftransformreset
- \fi\fi% if 1 < i < nArrows
+ \fi% if 1 < i < nArrows
\fi% if intersections is needed and not loaded
}
@@ -630,7 +730,7 @@
% Hack the rendering pipeline: There is a \pgfsyssoftpath@invokecurrentpath call following
% which we do not want if nfold is active. We therefore clear the current path here
% and then perform the nfold drawing in our modification of \pgf@stroke@inner@line
- \pgfsyssoftpath@getcurrentpath\cachedpath%
+ \pgfsyssoftpath@getcurrentpath\pgf@nfold@cachedpath%
\pgfsyssoftpath@setcurrentpath\pgfutil@empty%
\else
\pgfutil@packageerror{tikz-nfold}{Must set \string\pgfinnerlinewidth\space to use nfold, e.g. by setting /tikz/double distance}{}
@@ -675,220 +775,275 @@
%
%
+
+%
+% In order to correctly implement \pgfpathclose we already need to know about
+% the \pgfpathclose (and the penultimate point) at the beginning of this
+% connected segment as these data affect the first/last join.
+% We therefore parse one connected segment of the softpath and store it in a modified
+% form in \pgf@cur@conn@segment. When reaching the end of the connected segment we call
+% the proper parser to turn \pgf@cur@conn@segment into a parsed path. We do this for
+% all connected segments and concatenate all the parsed paths.
+%
+
+
\def\pgf@nfold@parsesoftpath#1#2{%
- \def\pgf@nfold@inputsegmentobjectsmacro{#2}%
- \let\pgf@nfold@inputsegmentobjects\pgfutil@empty%
- \pgfutil@tempdima0pt\relax%
- \edef\pgfpoint@nfold@lastparsed{\pgf@x\the\pgf@path@lastx\pgf@y\the\pgf@path@lasty}%
- \let\pgfpoint@nfold@lastnonmovetoparsed\pgfpoint@origin%
- \let\pgf@nfold@queueinputsegmentobject\pgfutil@empty%
- \let\pgfpoint@nfoldd@firstparsed\pgfutil@empty%
- \expandafter\pgf@nfold@@parsesoftpath#1\pgf@stop%
+ \let\pgf@cur@conn@segment\pgfutil@empty%
+ \let\pgf@all@parsed@segments\pgfutil@empty%
+ \edef\pgf@nfold@parser@last@moveto{{\the\pgf@path@lastx}{\the\pgf@path@lasty}}%
+ \let\pgf@nfold@last@closepath@from\pgfutil@empty%
+ \pgf@nfold@parse@setupfirst%
+ \expandafter\pgf@nfold@@parsesoftpath#1\pgf@stop{}{}%
+ \let#2\pgf@all@parsed@segments%
}%
-\def\pgf@nfold@@parsesoftpath#1{%
+\def\pgf@nfold@@parsesoftpath#1#2#3{%
+ \let\pgf@next\pgf@nfold@@parsesoftpath%
\ifx#1\pgf@stop%
- \let\pgf@nfold@queueinputsegmentobject\pgfutil@empty% <- removes final moveto (may not be desirable).
- \pgf@nfold@addtoinputsegmentobjects{\pgf@nfold@inputsegmentobject@endofinputsegments}%
- % probably so that the last segment also has a well-defined next segment
- \pgf@nfold@addtoinputsegmentobjects{\pgf@nfold@inputsegmentobject@endofinputsegments}%
- \expandafter\let\pgf@nfold@inputsegmentobjectsmacro\pgf@nfold@inputsegmentobjects%
+ \def\pgf@nfold@macrotoadd{\pgf@nfold@parselast}%
+ \pgf@nfold@addmacro\pgf@cur@conn@segment%
+ \pgf@nfold@process@conn@segment%
\let\pgf@next\relax%
\else%
\ifx#1\pgfsyssoftpath@movetotoken%
- \let\pgf@next\pgf@nfold@parsemoveto%
+ \def\pgf@nfold@macrotoadd{\pgf@nfold@parsemoveto{#2}{#3}}%
+ \pgf@nfold@addmacro\pgf@cur@conn@segment%
+ % A moveto marks the beginning/end of one connected segment
+ \pgf@nfold@process@conn@segment%
+ \let\pgf@nfold@last@closepath@from\pgfutil@empty%
+ \let\pgf@cur@conn@segment\pgfutil@empty%
+ \def\pgf@nfold@parser@last@moveto{{#2}{#3}}%
\else%
\ifx#1\pgfsyssoftpath@linetotoken%
- \let\pgf@next\pgf@nfold@parselineto%
+ \def\pgf@nfold@macrotoadd{\pgf@nfold@parselineto{#2}{#3}}%
+ \pgf@nfold@addmacro\pgf@cur@conn@segment%
\else%
\ifx#1\pgfsyssoftpath@curvetosupportatoken%
- \let\pgf@next\pgf@nfold@parsecurveto%
+ \def\pgf@nfold@parse@supporta{{#2}{#3}}%
\else%
- \ifx#1\pgfsyssoftpath@closepathtoken%
- \let\pgf@next\pgf@nfold@parseclosepath%
+ \ifx#1\pgfsyssoftpath@curvetosupportbtoken%
+ \def\pgf@nfold@parse@supportb{{#2}{#3}}%
\else%
- \ifx#1\pgfsyssoftpath@rectcornertoken%
- \let\pgf@next\pgf@nfold@parserect%
+ \ifx#1\pgfsyssoftpath@curvetotoken%
+ \edef\pgf@nfold@macrotoadd{\noexpand\pgf@nfold@parsecurveto\pgf@nfold@parse@supporta\pgf@nfold@parse@supportb{#2}{#3}}%
+ \pgf@nfold@addmacro\pgf@cur@conn@segment%
\else%
- \pgfutil@packageerror{tikz-nfold}{Unrecognised soft path token `#1'}{}%
+ \ifx#1\pgfsyssoftpath@closepathtoken%
+ \let\pgf@nfold@last@closepath@from\pgf@nfold@parser@previous@pt%
+ \def\pgf@nfold@macrotoadd{\pgf@nfold@parseclosepath{#2}{#3}}%
+ \pgf@nfold@addmacro\pgf@cur@conn@segment%
+ \else%
+ \ifx#1\pgfsyssoftpath@rectcornertoken%
+ \def\pgf@nfold@parse@rectcorner{{#2}{#3}}%
+ \else%
+ \ifx#1\pgfsyssoftpath@rectsizetoken%
+ \edef\pgf@nfold@macrotoadd{\noexpand\pgf@nfold@parserect\pgf@nfold@parse@rectcorner{#2}{#3}}%
+ \pgf@nfold@addmacro\pgf@cur@conn@segment%
+ \else%
+ \pgfutil@packageerror{tikz-nfold}{Unrecognised soft path token `#1'}{}%
+ \fi%
+ \fi%
+ \fi%
\fi%
\fi%
\fi%
\fi%
\fi%
\fi%
+ \def\pgf@nfold@parser@previous@pt{{#2}{#3}}%
\pgf@next}%
-\def\pgf@nfold@parsemoveto#1#2{%
- \def\pgf@nfold@queueinputsegmentobject{\pgf@nfold@inputsegmentobject@moveto{\pgf@x#1\pgf@y#2}}%
- \def\pgfpoint@nfold@lastparsed{\pgf@x#1\pgf@y#2}%
- \pgf@nfold@@parsesoftpath%
-}%
+\def\pgf@nfold@process@conn@segment{%
+ \let\pgf@parsed@cur@conn@seg\pgfutil@empty%
+ \ifx\pgf@nfold@last@closepath@from\pgfutil@empty%
+ \expandafter\pgf@nfold@parsemoveto\pgf@nfold@parser@last@moveto%
+ \else%
+ % This connected segment ends on a closepath. In order to get
+ % the join right, we prepend the current segment with an invisible line
+ % identical to the line of the \pgfpathclose. This way,
+ \expandafter\pgf@nfold@parsemoveto\pgf@nfold@last@closepath@from%
+ \expandafter\pgf@nfold@parseinvisibleline\pgf@nfold@parser@last@moveto%
+ \fi%
+ \pgf@cur@conn@segment%
+ \let\pgf@nfold@macrotoadd\pgf@parsed@cur@conn@seg%
+ \pgf@nfold@addmacro\pgf@all@parsed@segments%
+}
-% Convert \pgfsyssoftpath@linetotoken{<X>}{<Y>} into the following
-% representation:
%
-% \pgf@nfold@inputsegmentobject@lineto{<length>}{\pgf@x <Last X> \pgf@y <Last Y>}{\pgf@x <X> \pgf@y <Y>}
+% Values for \pgf@nfold@next@type:
+% f=first, m=moveto, c=curveto, l=lineto, r=rect, o=closepath, t=last, i=invisibleline
%
+
+\def\pgf@nfold@parsemoveto#1#2{%
+ \pgf@nfold@parser@moveup%
+ \let\pgf@nfold@next@type=m%
+ \let\pgf@nfold@next@visible=0%
+ \edef\pgf@nfold@next@last{\pgf@x#1\pgf@y#2}%
+ \pgf@nfold@parser@handlesegment%
+}%
+
+
+% Common code for parselineto and parseclosepath
+\def\pgf@nfold@parse@line@common#1#2#3{%
+ \pgf@nfold@parser@moveup%
+ \pgfextract@process\pgf@tmp@tang@i{\pgfpointnormalised{}\global\let\pgf@nfold@tmp\pgf@tmp}
+ \let\pgf@nfold@next@type=#3%
+ \let\pgf@nfold@next@visible=1%
+ \let\pgf@nfold@next@tang@i\pgf@tmp@tang@i
+ \let\pgf@nfold@next@tang@ii\pgf@tmp@tang@i
+ \let\pgf@nfold@next@angle@i\pgf@nfold@tmp
+ \let\pgf@nfold@next@angle@ii\pgf@nfold@tmp
+ \let\pgf@nfold@next@first\pgf@nfold@cur@last
+ \def\pgf@nfold@next@last{\pgf@x#1\pgf@y#2}%
+ \pgf@nfold@parser@handlesegment%
+}
+
\def\pgf@nfold@parselineto#1#2{%
+ % the current end is still stored in next@last because parser@moveup has not been called yet
+ \pgf@process{\pgfpointdiff{\pgf@nfold@next@last}{\pgf@x#1\pgf@y#2}}%
+ \pgfpointtaxicabnorm\pgf@xa%
% remove degenerate line segments (reduces glitches)
- \pgf@process{\pgfpointdiff{\pgfpoint@nfold@lastparsed}{\pgf@x#1\pgf@y#2}}
- \pgfpointtaxicabnorm\pgf@xa
- \ifdim\pgf@xa>.1pt\relax
- \edef\pgf@nfold@temp{%
- \noexpand\pgf@nfold@inputsegmentobject@lineto{\pgfpoint@nfold@lastparsed}{\pgf@x#1\pgf@y#2}%
- }%
- \edef\pgfpoint@nfold@lastparsed{\pgf@x#1\pgf@y#2}%
- \let\pgfpoint@nfold@lastnonmovetoparsed\pgfpoint@nfold@lastparsed%
- \expandafter\pgf@nfold@addtoinputsegmentobjects\expandafter{\pgf@nfold@temp}%
- \fi
- \pgf@nfold@@parsesoftpath%
+ \ifdim\pgf@xa>.1pt\relax%
+ \pgf@nfold@parse@line@common{#1}{#2}{l}%
+ \fi%
}%
-\def\pgf@nfold@parsecurveto#1#2\pgfsyssoftpath@curvetosupportbtoken#3#4\pgfsyssoftpath@curvetotoken#5#6{%
- \edef\pgf@nfold@temp{%
- \noexpand\pgf@nfold@inputsegmentobject@curveto{\pgfpoint@nfold@lastparsed}%
- {\pgf@x#1\pgf@y#2}{\pgf@x#3\pgf@y#4}{\pgf@x#5\pgf@y#6}%
- }%
- \expandafter\pgf@nfold@addtoinputsegmentobjects\expandafter{\pgf@nfold@temp}%
- \edef\pgfpoint@nfold@lastparsed{\pgf@x#5\pgf@y#6}%
- \let\pgfpoint@nfold@lastnonmovetoparsed\pgfpoint@nfold@lastparsed%
- \pgf@nfold@@parsesoftpath%
+\def\pgf@nfold@parsecurveto#1#2#3#4#5#6{%
+ \pgf@nfold@parser@moveup%
+ \pgf@offset@compute@tangents{\pgf@nfold@cur@last}{\pgf@x#1\pgf@y#2}{\pgf@x#3\pgf@y#4}{\pgf@x#5\pgf@y#6}%
+ \let\pgf@nfold@next@type=c%
+ \let\pgf@nfold@next@visible=1%
+ % the following only need to be set if visible=1
+ \let\pgf@nfold@next@tang@i=\pgf@tmp@tang@i
+ \let\pgf@nfold@next@tang@ii=\pgf@tmp@tang@ii
+ \let\pgf@nfold@next@angle@i\pgf@tmp@angle@i
+ \let\pgf@nfold@next@angle@ii\pgf@tmp@angle@ii
+ \let\pgf@nfold@next@first\pgf@nfold@cur@last
+ \def\pgf@nfold@next@supporta{\pgf@x#1\pgf@y#2}
+ \def\pgf@nfold@next@supportb{\pgf@x#3\pgf@y#4}
+ \def\pgf@nfold@next@last{\pgf@x#5\pgf@y#6}
+ \pgf@nfold@parser@handlesegment%
}%
\def\pgf@nfold@parseclosepath#1#2{%
- \edef\pgf@nfold@temp{%
- \noexpand\pgf@nfold@inputsegmentobject@closepath{\pgfpoint@nfold@lastparsed}{\pgf@x#1\pgf@y#2}%
- }%
- \let\pgfpoint@nfold@lastnonmovetoparsed\pgfpoint@nfold@lastparsed%
- \expandafter\pgf@nfold@addtoinputsegmentobjects\expandafter{\pgf@nfold@temp}%
- \pgf@nfold@@parsesoftpath%
+ \pgf@process{\pgfpointdiff{\pgf@nfold@next@last}{\pgf@x#1\pgf@y#2}}%
+ % closepath segments should always be processed even if they have zero length
+ \pgf@nfold@parse@line@common{#1}{#2}{o}%
+}%
+
+\def\pgf@nfold@parseinvisibleline#1#2{%
+ \pgf@process{\pgfpointdiff{\pgf@nfold@next@last}{\pgf@x#1\pgf@y#2}}%
+ % invisibleline segments should always be processed even if they have zero length.
+ % Counterintuitively, an "invisibleline" segment has next@visible=1 because
+ % we want its end join to be rendered.
+ \pgf@nfold@parse@line@common{#1}{#2}{i}%
}%
+\def\pgf@nfold@parselast{%
+ \pgf@nfold@parser@moveup%
+ \let\pgf@nfold@next@type=t%
+ \let\pgf@nfold@next@visible=0%
+ \pgf@nfold@parser@handlesegment%
+}
+
% Mostly for the sake of completeness; using TikZ' "\path (0,0) rectangle (1,1);" does not call this code
-\def\pgf@nfold@parserect#1#2\pgfsyssoftpath@rectsizetoken#3#4{%
- \let\pgf@nfold@orig@@parsesoftpath\pgf@nfold@@parsesoftpath%
- \let\pgf@nfold@@parsesoftpath\relax%
+\def\pgf@nfold@parserect#1#2#3#4{%
\pgf@nfold@parsemoveto{#1}{#2}%
- \pgf@xb=#1\relax
- \pgf@yb=#2\relax
- \pgf@xc=#3\relax
- \pgf@yc=#4\relax
- \advance\pgf@yb\pgf@yc%
- \edef\pgf@temp{{\the\pgf@xb}{\the\pgf@yb}}%
- \expandafter\pgf@nfold@parselineto\pgf@temp%
- \advance\pgf@xb\pgf@xc%
- \edef\pgf@temp{{\the\pgf@xb}{\the\pgf@yb}}%
- \expandafter\pgf@nfold@parselineto\pgf@temp%
- \advance\pgf@yb-\pgf@yc%
- \edef\pgf@temp{{\the\pgf@xb}{\the\pgf@yb}}%
- \expandafter\pgf@nfold@parselineto\pgf@temp%
- \advance\pgf@xb-\pgf@xc%
- \edef\pgf@temp{{\the\pgf@xb}{\the\pgf@yb}}%
- \expandafter\pgf@nfold@parselineto\pgf@temp%
- \let\pgf@nfold@@parsesoftpath\pgf@nfold@orig@@parsesoftpath%
- \edef\pgf@marshal{\noexpand\pgf@nfold@parsemoveto{\the\pgf@xb}{\the\pgf@yb}}%
+ \pgf@xc=#1\relax
+ \pgf@yc=#2\relax
+ \pgf@xd=#3\relax
+ \pgf@yd=#4\relax
+ \advance\pgf@yc\pgf@yd%
+ \edef\pgf@temp{{\the\pgf@xc}{\the\pgf@yc}}%
+ \expandafter\pgf@nfold@parselineto\pgf@temp%
+ \advance\pgf@xc\pgf@xd%
+ \edef\pgf@temp{{\the\pgf@xc}{\the\pgf@yc}}%
+ \expandafter\pgf@nfold@parselineto\pgf@temp%
+ \advance\pgf@yc-\pgf@yd%
+ \edef\pgf@temp{{\the\pgf@xc}{\the\pgf@yc}}%
+ \expandafter\pgf@nfold@parselineto\pgf@temp%
+ \advance\pgf@xc-\pgf@xd%
+ \edef\pgf@temp{{\the\pgf@xc}{\the\pgf@yc}}%
+ \expandafter\pgf@nfold@parselineto\pgf@temp%
+ \edef\pgf@marshal{\noexpand\pgf@nfold@parsemoveto{\the\pgf@xc}{\the\pgf@yc}}%
\pgf@marshal%
}
-\def\pgf@nfold@addtoinputsegmentobjects#1{%
- %
- % If there is an input segment object waiting (i.e. a moveto), insert it here.
- %
- \ifx\pgf@nfold@queueinputsegmentobject\pgfutil@empty%
- \else%
- \let\pgf@nfold@temp\pgf@nfold@queueinputsegmentobject%
- \let\pgf@nfold@queueinputsegmentobject\pgfutil@empty%
- \expandafter\pgf@nfold@addtoinputsegmentobjects\expandafter{\pgf@nfold@temp}%
- \fi%
- \ifx\pgfpoint@nfold@firstparsed\pgfutil@empty%
- #1%
- \let\pgfpoint@nfold@firstparsed\pgf@nfold@inputsegment@first%
- \fi%
- \expandafter\def\expandafter\pgf@nfold@inputsegmentobjects\expandafter%
- {\pgf@nfold@inputsegmentobjects{#1}}%
-}%
-
-
-\def\pgf@nfold@inputsegmentfirst{first}%
-\def\pgf@nfold@inputsegmentmoveto{moveto}%
-\def\pgf@nfold@inputsegmentlineto{lineto}%
-\def\pgf@nfold@inputsegmentcurveto{curveto}%
-\def\pgf@nfold@inputsegmentclosepath{closepath}%
-\def\pgf@nfold@inputsegmentlast{last}%
-
+% adds the contents of \pgf@nfold@macrotoadd to #1
+\def\pgf@nfold@addmacro#1{%
+ % need a \gdef because we have nested groups in the subdivision
+ \expandafter\expandafter\expandafter\gdef%
+ \expandafter\expandafter\expandafter#1%
+ \expandafter\expandafter\expandafter{%
+ \expandafter#1\pgf@nfold@macrotoadd}%
+}
-\def\pgf@nfold@inputsegmentobject@moveto#1{%
- \def\pgf@nfold@inputsegment@first{#1}%
- \def\pgf@nfold@inputsegment@supporta{#1}%
- \def\pgf@nfold@inputsegment@supportb{#1}%
- \def\pgf@nfold@inputsegment@last{#1}%
- \edef\pgf@nfold@lastmoveto{#1}%
- \let\pgf@nfold@currentinputsegment\pgf@nfold@inputsegmentmoveto%
-}%
-\def\pgf@nfold@inputsegmentobject@lineto#1#2{%
- \def\pgf@nfold@inputsegment@first{#1}%
- \def\pgf@nfold@inputsegment@last{#2}%
- \let\pgf@nfold@currentinputsegment\pgf@nfold@inputsegmentlineto%
-}%
+%
+% Tokens for the parsed path
+%
-\def\pgf@nfold@inputsegmentobject@curveto#1#2#3#4{%
- \def\pgf@nfold@inputsegment@first{#1}%
- \def\pgf@nfold@inputsegment@supporta{#2}%
- \def\pgf@nfold@inputsegment@supportb{#3}%
- \def\pgf@nfold@inputsegment@last{#4}%
- \let\pgf@nfold@currentinputsegment\pgf@nfold@inputsegmentcurveto%
-}%
+%#3: cached normalised tangent (for efficiency)
+\def\pgf@nfold@token@lineto#1#2#3{%
+ \pgfoffsetline@{#1}{#2}{\pgf@nfold@shiftamount}{#3}%
+}
-\def\pgf@nfold@inputsegmentobject@closepath#1#2{%
- \def\pgf@nfold@inputsegment@first{#1}%
- \def\pgf@nfold@inputsegment@last{#2}%
- \let\pgf@nfold@currentinputsegment\pgf@nfold@inputsegmentclosepath%
-}%
+\def\pgf@nfold@token@lineto@continue#1#2#3{%
+ \pgfoffsetlinenomove@{#1}{#2}{\pgf@nfold@shiftamount}{#3}%
+}
-\def\pgf@nfold@inputsegmentobject@endofinputsegments{%
- \let\pgf@nfold@currentinputsegment\pgf@nfold@inputsegmentlast%
-}%
+\def\pgf@nfold@token@invisibleline#1#2#3{%
+ % An invisible line should execute a moveto to the end point of the line
+ \pgfqpointscale{\pgf@nfold@shiftamount}{#3}%
+ \pgf@xc=-\pgf@y%
+ \pgf@y=\pgf@x%
+ \pgf@x=\pgf@xc%
+ \pgfpathmoveto{\pgfpointadd{}{#2}}%
+}
+% #5, #6: cached normalised tangents at start and end (for efficiency)
+\def\pgf@nfold@token@curveto#1#2#3#4#5#6{%
+ \def\pgf@tmp@tang@i{#5}%
+ \def\pgf@tmp@tang@ii{#6}%
+ \pgf@offset@bezier@segment@{#1}{#2}{#3}{#4}{\pgf@nfold@shiftamount}%
+ \pgfpathmoveto{\pgf@bezier@offset@i}%
+ \pgfpathcurveto{\pgf@bezier@offset@ii}{\pgf@bezier@offset@iii}{\pgf@bezier@offset@iv}%
+}
-\def\pgf@nfold@traversepath{%
- % Transformations are already baked into the path; without this call, they would be applied twice
- \pgftransformreset
- % could likely also use \let\pgf@nfold@currentinputsegmentobjects\parsedsoftpath here
- \let\pgf@nfold@currentinputsegmentobjects\pgf@nfold@inputsegmentobjects%
-% \let\pgf@nfold@transformtoinputsegment\pgfutil@empty% we may need this one for closepath
- \pgf@nfold@getnextinputsegmentobject\pgf@nfold@nextinputsegmentobject%
- \let\pgf@nfold@currentinputsegment\pgf@nfold@inputsegmentfirst%
- \def\pgf@nfold@cur@endangle{0.0}% put in some default value so \pgf@nfold@previous@endangle is not undefined
- \pgf@nfold@traversepath@
+\def\pgf@nfold@token@curveto@continue#1#2#3#4#5#6{%
+ \def\pgf@tmp@tang@i{#5}%
+ \def\pgf@tmp@tang@ii{#6}%
+ \pgf@offset@bezier@segment@{#1}{#2}{#3}{#4}{\pgf@nfold@shiftamount}%
+ \pgfpathcurveto{\pgf@bezier@offset@ii}{\pgf@bezier@offset@iii}{\pgf@bezier@offset@iv}%
}
+\def\pgf@nfold@token@closepath{%
+ \pgfpathclose%
+}
-\def\pgf@nfold@traversepath@{
- \pgf@nfold@processnextinputsegmentobject%
- \ifx\pgf@nfold@currentinputsegment\pgf@nfold@inputsegmentlast\else
- \pgf@nfold@handlesegment%
- \fi%
- \ifx\pgf@nfold@currentinputsegmentobjects\pgfutil@empty%
- \let\pgf@next\relax%
- \else%
- \let\pgf@next\pgf@nfold@traversepath@%
- \fi%
- \pgf@next%
+% This is needed for some edge case explained above.
+% #1: segment@start, which is actually the end point of the current segment in the edge case
+% #2: the angle of the current segment (start or end does not matter for straight lines)
+\def\pgf@nfold@token@edgecase@movetostart#1#2{%
+ \pgfpathmoveto{\pgfpointadd%
+ {#1}{\pgfpointpolar{#2+90}{\pgf@nfold@shiftamount}}}%
}
-\def\pgf@nfold@computeangles{
- \ifx\pgf@nfold@currentinputsegment\pgf@nfold@inputsegmentcurveto%
- \pgf@offset@compute@tangents{\pgf@nfold@inputsegment@first}{\pgf@nfold@inputsegment@supporta}{\pgf@nfold@inputsegment@supportb}{\pgf@nfold@inputsegment@last}
- \let\pgf@nfold@cur@startangle\pgf@tmp@angle@i
- \let\pgf@nfold@cur@endangle\pgf@tmp@angle@ii
- \else%
- \pgfmathanglebetweenpoints{\pgf@nfold@inputsegment@first}{\pgf@nfold@inputsegment@last}%
- \edef\pgf@nfold@cur@startangle{\pgfmathresult}
- \edef\pgf@nfold@cur@endangle{\pgfmathresult}
- \fi%
+\def\pgf@nfold@parse@setupfirst{%
+ \let\pgf@nfold@next@type=f%
+ % technically, @visible can be derived from @type, but I think this is more efficient
+ \let\pgf@nfold@next@visible=0%
+ \edef\pgf@nfold@next@last{\pgf@x\the\pgf@path@lastx\pgf@y\the\pgf@path@lasty}%
+ % the following only need to be set if visible=1
+ \let\pgf@nfold@next@tang@i=\pgfpointorigin%
+ \let\pgf@nfold@next@tang@ii=\pgfpointorigin%
+ \def\pgf@nfold@next@angle@i{0}%
+ \def\pgf@nfold@next@angle@ii{0}%
+ \let\pgf@nfold@next@first\pgfpointorigin%
+ % the following only need to be set if type=c
+ \let\pgf@nfold@next@supporta\pgfpointorigin%
+ \let\pgf@nfold@next@supportb\pgfpointorigin%
}
\def\pgf@nfold@clampangle{
@@ -905,47 +1060,31 @@
\fi\fi
}
-\def\pgf@nfold@getnextinputsegmentobject#1{%
- \ifx\pgf@nfold@currentinputsegmentobjects\pgfutil@empty%
- \let\pgf@next\relax%
- \else%
- \def\pgf@nfold@temp{#1}%
- \let\pgf@next\pgf@nfold@@getnextinputsegmentobject%
- \fi%
- \pgf@next%
-}%
-\def\pgf@nfold@@getnextinputsegmentobject{%
- \expandafter\pgf@nfold@@@getnextinputsegmentobject\pgf@nfold@currentinputsegmentobjects\pgf@stop}%
-\def\pgf@nfold@@@getnextinputsegmentobject#1#2\pgf@stop{%
- \expandafter\def\pgf@nfold@temp{#1}%
- \def\pgf@nfold@currentinputsegmentobjects{#2}}%
-
-\def\pgf@nfold@processnextinputsegmentobject{%
- \let\pgf@nfold@previousinputsegment\pgf@nfold@currentinputsegment%
- \let\pgf@nfold@previous@endangle\pgf@nfold@cur@endangle%
- \let\pgf@nfold@currentinputsegmentobject\pgf@nfold@nextinputsegmentobject%
- \pgf@nfold@getnextinputsegmentobject\pgf@nfold@nextinputsegmentobject%
- \pgf@nfold@nextinputsegmentobject% parse the *next* input segment so we can compute its angles
- \pgf@nfold@computeangles%
- \let\pgf@nfold@next@first\pgf@nfold@inputsegment@first%
- \let\pgf@nfold@next@supporta\pgf@nfold@inputsegment@supporta%
- \let\pgf@nfold@next@supportb\pgf@nfold@inputsegment@supportb%
- \let\pgf@nfold@next@last\pgf@nfold@inputsegment@last%
- \let\pgf@nfold@next@segmenttype\pgf@nfold@currentinputsegment%
- \let\pgf@nfold@next@startangle\pgf@nfold@cur@startangle%
- \pgf@nfold@currentinputsegmentobject% get the current segment into \pgf@nfold@inputsegment@first etc.
- \pgf@nfold@computeangles%
- % Compute the angle differences at the start and end (between -180 and +180 degrees)
- % using \pgfmathsubtract@ is more readable and no less efficient than computing this manually
- \pgfmathsubtract@{\pgf@nfold@cur@startangle}{\pgf@nfold@previous@endangle}
- \pgf@nfold@clampangle
- \edef\pgf@nfold@deltaphi@start{\pgfmathresult}
- \pgfmathsubtract@{\pgf@nfold@next@startangle}{\pgf@nfold@cur@endangle}
- \pgf@nfold@clampangle
- \edef\pgf@nfold@deltaphi@end{\pgfmathresult}
-}
+\def\pgf@nfold@parser@moveup{%
+ \let\pgf@nfold@prev@type\pgf@nfold@cur@type%
+ \let\pgf@nfold@prev@visible\pgf@nfold@cur@visible%
+ \let\pgf@nfold@prev@tang@i\pgf@nfold@cur@tang@i%
+ \let\pgf@nfold@prev@tang@ii\pgf@nfold@cur@tang@ii%
+ \let\pgf@nfold@prev@angle@i\pgf@nfold@cur@angle@i%
+ \let\pgf@nfold@prev@angle@ii\pgf@nfold@cur@angle@ii%
+ \let\pgf@nfold@prev@first\pgf@nfold@cur@first%
+ \let\pgf@nfold@prev@supporta\pgf@nfold@cur@supporta%
+ \let\pgf@nfold@prev@supportb\pgf@nfold@cur@supportb%
+ \let\pgf@nfold@prev@last\pgf@nfold@cur@last%
+ \let\pgf@nfold@cur@type\pgf@nfold@next@type%
+ \let\pgf@nfold@cur@visible\pgf@nfold@next@visible%
+ \let\pgf@nfold@cur@tang@i\pgf@nfold@next@tang@i%
+ \let\pgf@nfold@cur@tang@ii\pgf@nfold@next@tang@ii%
+ \let\pgf@nfold@cur@angle@i\pgf@nfold@next@angle@i%
+ \let\pgf@nfold@cur@angle@ii\pgf@nfold@next@angle@ii
+ \let\pgf@nfold@cur@first\pgf@nfold@next@first%
+ \let\pgf@nfold@cur@supporta\pgf@nfold@next@supporta%
+ \let\pgf@nfold@cur@supportb\pgf@nfold@next@supportb%
+ \let\pgf@nfold@cur@last\pgf@nfold@next@last%
+}
+
%
% Iterating over the parsed soft path
% -----------------------------------
@@ -967,9 +1106,12 @@
\def\pgf@nfold@loop@inner{%
\pgfmathsetmacro{\pgf@nfold@shift@fraction}%
- {-1+2*(\pgf@nfold@index-1)/(\pgf@nfold@order-1)}
- \pgfmathsetlengthmacro{\pgf@nfold@shiftamount}{\pgf@nfold@hwidth*\pgf@nfold@shift@fraction}
- \pgf@nfold@traversepath%
+ {-1+2*(\pgf@nfold@index-1)/(\pgf@nfold@order-1)}%
+ % Do not store shiftamount as a length (i.e. with pt) because we want to use it in \pgfqpointscale{}{}
+ \pgfmathsetmacro{\pgf@nfold@shiftamount}{\pgf@nfold@hwidth*\pgf@nfold@shift@fraction}
+ % Transformations are already baked into the path; without this call, they would be applied twice
+ \pgftransformreset%
+ \parsedpath%
\pgfsyssoftpath@flushcurrentpath%
\pgf@up@action%
}
@@ -988,15 +1130,15 @@
\def\pgf@nfold@render@cached@softpath{%
\pgfscope% must use a scope, otherwise we break the arrow tips
- \pgfprocessround{\cachedpath}{\cachedpath}% remove tokens from the soft path
- \pgf@nfold@parsesoftpath{\cachedpath}{\parsedsoftpath}
- \pgf@nfold@parsearrows
% Compute the full and constituent part line widths
\pgf@nfold@compute@widths@from@double%
\pgfsetlinewidth\pgf@x%
- \edef\pgf@nfold@hwidth{\the\pgf@y}
- \pgf@nfold@run@loop
- \endpgfscope
+ \edef\pgf@nfold@hwidth{\the\pgf@y}%
+ \pgfprocessround{\pgf@nfold@cachedpath}{\pgf@nfold@cachedpath}% remove tokens from the soft path
+ \pgf@nfold@parsearrows%
+ \pgf@nfold@parsesoftpath{\pgf@nfold@cachedpath}{\parsedpath}%
+ \pgf@nfold@run@loop%
+ \endpgfscope%
}
@@ -1008,17 +1150,17 @@
% Outputs a provided soft path in #1 offset by a distance provided in #2.
\def\pgfoffsetpath#1#2{%
\begingroup
- \pgfmathsetlengthmacro\pgf@nfold@hwidth{#2}
+ \pgfmathsetlengthmacro\pgf@nfold@parsed@hwidth{#2}
% \pgf@nfold@hwidth must always be positive
- \pgf@x=\pgf@nfold@hwidth\relax
+ \pgf@x=\pgf@nfold@parsed@hwidth\relax
\ifdim\pgf@x<0pt\relax
\pgf@x=-\pgf@x
\def\pgf@nfold@shift@fraction{-1}
\else
\def\pgf@nfold@shift@fraction{1}
\fi
- \edef\pgf@nfold@hwidth{\the\pgf@x}
- \pgfoffsetpathqfraction{#1}{\pgf@nfold@hwidth}{\pgf@nfold@shift@fraction}
+ \edef\pgf@nfold@parsed@hwidth{\the\pgf@x}
+ \pgfoffsetpathqfraction{#1}{\pgf@nfold@parsed@hwidth}{\pgf@nfold@shift@fraction}
\endgroup
}
@@ -1029,9 +1171,9 @@
%
\def\pgfoffsetpathfraction#1#2#3{%
\begingroup
- \pgfmathsetlengthmacro\pgf@nfold@hwidth{#2}
+ \pgfmathsetlengthmacro\pgf@nfold@parsed@hwidth{#2}
\pgfmathsetmacro\pgf@nfold@shift@fraction{#3}
- \pgfoffsetpathqfraction{#1}{\pgf@nfold@hwidth}{\pgf@nfold@shift@fraction}
+ \pgfoffsetpathqfraction{#1}{\pgf@nfold@parsed@hwidth}{\pgf@nfold@shift@fraction}
\endgroup
}
@@ -1046,14 +1188,16 @@
% A quick version that skips processing the input values
\def\pgfoffsetpathqfraction#1#2#3{%
\begingroup
- \pgfprocessround{#1}{\cachedpath}% remove tokens from the soft path
- \pgf@nfold@parsesoftpath{\cachedpath}{\parsedsoftpath}
\pgf@x=#2\relax
\edef\pgf@nfold@hwidth{\the\pgf@x}
\edef\pgf@nfold@shift@fraction{#3}
\pgf@x=\pgf@nfold@shift@fraction\pgf@x\relax
- \edef\pgf@nfold@shiftamount{\the\pgf@x}
- \pgf@nfold@traversepath%
+ \edef\pgf@nfold@shiftamount{\pgf@sys@tonumber\pgf@x}
+ \pgfprocessround{#1}{\pgf@nfold@cachedpath}% remove tokens from the soft path
+ \pgf@nfold@parsesoftpath{\pgf@nfold@cachedpath}{\parsedpath}%
+ % Transformations are already baked into the path; without this call, they would be applied twice
+ \pgftransformreset%
+ \parsedpath%
\endgroup
}
diff --git a/macros/latex/contrib/biblatex-contrib/windycity/CHANGES.md b/macros/latex/contrib/biblatex-contrib/windycity/CHANGES.md
index 2b166c9f5c..61b08926c1 100644
--- a/macros/latex/contrib/biblatex-contrib/windycity/CHANGES.md
+++ b/macros/latex/contrib/biblatex-contrib/windycity/CHANGES.md
@@ -8,6 +8,47 @@ indicate updates to Windy City's [repository on
GitHub](https://github.com/brianchase/windycity "GitHub:
brianchase/windycity").
+## 2023-05-03
+
+* added preamble option `sentencecase` to put titles in
+ sentence-style capitalization (see *CMOS* 8.158)
+* added entry options to override, per entry, the default formats of
+ titles:
+
+ - Supported fields: `title`, `blogtitle`, `bookbooktitle`,
+ `booktitle`, `issuetitle`, `journal`, `journaltitle`,
+ `maintitle`, `origtitle`, `shortbooktitle`, `shorthand`,
+ `shorttitle`, and `shortmaintitle`
+ - For italics: `emph:<field>` (`emph` is short for `emph:title`)
+ - For quotes: `quotes:<field>` (`quotes` is short for
+ `quotes:title`)
+ - For sentence-style capitalization: `sentencecase:<field>`
+ (`sentencecase` is short for `sentencecase:title`)
+ - To remove formatting: `noformat:<field>` (`noformat` is short for
+ `noformat:title`)
+ - Uppercase the first letter when `\ifcapital` is true:
+ `ifcapital:<field>` (`ifcapital` is short for `ifcapital:title`)
+ - You can use some of the options above at the same time, such as
+ putting a title in both italics and sentence case. Exceptions: You
+ can't use the `emph` and `quotes` options together (the `emph`
+ options prevail), you can't use either with the `noformat` options
+ (the `noformat` options prevail), and you can't use the
+ `setencecase` and `ifcapital` options together (the `sentencecase`
+ options prevail).
+ - Setting an option for a title sets the related option for its
+ short title (e.g. `sentencecase:maintitle` implies
+ `sentencecase:shortmaintitle`).
+
+* added support for the `yeardivision` field (support for `season`
+ remains for backward compatibility)
+* fixed the `year` field of `@standard` entries printing when
+ `pubstate` supersedes it
+* fixed a missing field format for `shortmaintitle`
+* fixed a setting that caused `@reference` and `@inreference` works to
+ format incorrectly if (1) `organization` was supposed to occupy the
+ author's position *and* (2) their bibliography database entries had
+ an `options` field
+
## 2021-12-04
* improved the handling of `labeldate` for `@inbook` and `@bookinbook`
diff --git a/macros/latex/contrib/biblatex-contrib/windycity/american-windycity.lbx b/macros/latex/contrib/biblatex-contrib/windycity/american-windycity.lbx
index f584258e78..95a214aaaf 100644
--- a/macros/latex/contrib/biblatex-contrib/windycity/american-windycity.lbx
+++ b/macros/latex/contrib/biblatex-contrib/windycity/american-windycity.lbx
@@ -1,4 +1,4 @@
-% Last modified: Sat 04 Dec 2021 12:44:02 PM CST
+% Last modified: Wed 03 May 2023 06:54:19 PM CDT
% Permission is granted to copy, distribute and/or modify this
% software under the terms of the LaTeX Project Public License (LPPL),
@@ -11,7 +11,7 @@
% implied warranties of merchantability and fitness for a particular
% purpose.
-\ProvidesFile{american-windycity.lbx}[2021/12/04 Windy City
+\ProvidesFile{american-windycity.lbx}[2023/05/03 Windy City
localization module for biblatex]
\InheritBibliographyExtras{american}
\InheritBibliographyStrings{american}
diff --git a/macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.bib b/macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.bib
index 9fc940a868..5eaf6ffeef 100644
--- a/macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.bib
+++ b/macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.bib
@@ -1,10 +1,11 @@
@STRING{ucp = "University of Chicago Press"}
@Book{chicago2017,
+ options = {emph:shorthand},
author = {{University of Chicago Press}},
title = {The Chicago Manual of Style},
- shorthand = {\emph{CMOS}},
- shorthandintro = {\addperiod\space Hereafter, \printfield{shorthand}},
+ shorthand = {CMOS},
+ shorthandintro = {\addperiod\space Hereafter, \printfield[emph]{shorthand}},
edition = {17},
address = {Chicago},
publisher = ucp,
@@ -433,10 +434,10 @@
% 14.59 Abbreviations for frequently cited works
@Collection{shurtleff1853,
- options = {listvols},
+ options = {emph:shorthand,listvols},
editor = {Shurtleff, Nathaniel B.},
title = {Records of the Governor and Company of the Massachusetts Bay in New England (1628–86)},
- shorthand = {\emph{Mass. Records}},
+ shorthand = {Mass. Records},
volumes = {5},
address = {Boston},
year = {1853–54}
@@ -882,10 +883,11 @@
year = {1977}
}
@Book{furet1999,% see also 14.59
+ options = {emph:shorthand},
author = {Furet, François},
title = {The Passing of an Illusion},
-% shorthand = {\emph{PI}},
- shorthandintro = {\mkbibparens{hereafter cited in text as \printfield{shorthand}}},
+% shorthand = {PI},
+ shorthandintro = {\mkbibparens{hereafter cited in text as \printfield[emph]{shorthand}}},
translator = {Furet, Deborah},
address = {Chicago},
publisher = ucp,
@@ -2353,6 +2355,26 @@
url = {https://www.facebook.com/junotdiaz.writer/posts/972495572815454?comment_id=972558569475821}
}
+% 14.210 Electronic mailing lists and forums
+
+@Online{powell1998,
+ author = {Powell, John},
+ title = {Pattern matching},
+ note = {Grapevine digest mailing list archives},
+ organization = {Electric Editors},
+ date = {1998-04-23},
+ url = {http://www.electriceditors.net/grapevine/archives.php}
+}
+@Online{braun2016,
+ keywords = {notinref},% not for reference lists (see 15.52)
+ options = {noformat,ifcapital},
+ author = {Braun, Caroline},
+ title = {reply to \mkbibquote{How did the `cool kids' from high school turn out?}},
+ organization = {Quora},
+ date = {2016-08-09},
+ url = {https://www.quora.com/How-did-the-cool-kids-from-high-school-turn-out/}
+}
+
% 14.215 Theses and dissertations
@Thesis{vedrashko2006,
@@ -2679,7 +2701,7 @@
title = {Bull's Head},
date = {1942-21},
type = {bicycle saddle and handlebars},
- typeaddon = {, 33.5\addthinspace ×\addthinspace 43.5 ×\addthinspace 19\,cm},
+ typeaddon = {, 33.5\addthinspace ×\addthinspace 43.5\addthinspace ×\addthinspace 19\,cm},
institution = {Musée Picasso Paris}
}
diff --git a/macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.pdf b/macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.pdf
index f944776846..16deb0a936 100644
--- a/macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.pdf
+++ b/macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.sty b/macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.sty
index c001e45902..07653b99c9 100644
--- a/macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.sty
+++ b/macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.sty
@@ -1,4 +1,4 @@
-% Last modified: Tue 13 Apr 2021 05:25:58 PM CDT
+% Last modified: Sun 13 Feb 2022 10:28:05 AM CST
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{windycity}
\RequirePackage{ifxetex}
@@ -105,6 +105,13 @@
{\end{enumerate}
\printbibliography[env=bib,heading=none,segment=\therefsegment]
\endrefsegment}%
+\newenvironment{citenobib}
+ {\begin{enumerate}[%
+ before=\RaggedRight\citereset\newrefsegment\small,
+ itemindent=2.2em,
+ labelsep=0.2em,
+ leftmargin=1.1em]}%
+ {\end{enumerate}}%
\newenvironment{citeref}
{\begin{itemize}[label=,labelsep=0.2em,leftmargin=1.1em]
\item\begin{enumerate*}[%
@@ -116,13 +123,16 @@
\end{itemize}
\printbibliography[env=ref,heading=none,segment=\therefsegment]
\endrefsegment}%
-\newenvironment{citeonly}
- {\begin{enumerate}[%
- before=\RaggedRight\citereset\newrefsegment\small,
- itemindent=2.2em,
- labelsep=0.2em,
- leftmargin=1.1em]}%
- {\end{enumerate}}%
+\newenvironment{citenoref}
+ {\begin{itemize}[label=,labelsep=0.2em,leftmargin=1.1em]
+ \item\begin{enumerate*}[%
+ afterlabel=,
+ before=\citereset\newrefsegment\small\noindent,
+ itemjoin={{, }},
+ label=]}%
+ {\end{enumerate*}
+ \end{itemize}
+ \endrefsegment}%
\newenvironment{bibonly}
{\citereset\newrefsegment\small}%
{\printbibliography[env=bib,heading=none,segment=\therefsegment]
diff --git a/macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.tex b/macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.tex
index a4bc14d059..d81be4bee3 100644
--- a/macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.tex
+++ b/macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.tex
@@ -1,4 +1,4 @@
-% Last modified: Sat 04 Dec 2021 01:43:53 PM CST
+% Last modified: Wed 03 May 2023 07:02:51 PM CDT
\documentclass[11pt,letterpaper,oneside]{article}
\usepackage{windycity}
@@ -8,7 +8,7 @@
\author{Brian Chase}
\email{brianmichaelchase@gmail.com}
\website{https://github.com/brianchase/windycity}
-\version{2021-12-04}
+\version{2023-05-03}
\maketitle
\begingroup
\hypersetup{linkcolor=black}
@@ -17,7 +17,7 @@
\section{Introduction}
-\nfootnote{Copyright \textcopyright\ 2014--2021 Brian Chase. Under the
+\nfootnote{Copyright \textcopyright\ 2014--2023 Brian Chase. Under the
terms of the \LaTeX\ Project Public License, version 1.3, permission
is granted to copy, distribute, or modify this software. See
\url{http://www.ctan.org/tex-archive/macros/latex/base/lppl.txt} or
@@ -136,14 +136,14 @@ style is meant to handle.
For a first set of examples, consider this passage from \textit{CMOS}
\ref{14.30}:
-\begin{citeonly}
+\begin{citenobib}
\item \cite[24--25]{morley1995}
\item \cite{schwartz1992}
\item \cite{kaiser1964}
\item \cite[43]{morley1995}
\item \cite[138]{schwartz1992}
\item \cite[189--90]{kaiser1964}
-\end{citeonly}
+\end{citenobib}
A work's first citation is similar to its entry in the bibliography.
It includes all or most of its bibliographic information. Subsequent
@@ -217,7 +217,7 @@ offers several preamble options and other means for producing them.
Let's start with another passage of default output:
-\begin{citeonly}
+\begin{citenobib}
\item \cite[3]{morrison2004a}
\item \cite[18]{morrison2004a}
\item \cite[18]{morrison2004a}
@@ -230,7 +230,7 @@ Let's start with another passage of default output:
\item \cite[201-2]{diaz2007}
\item \cites[240]{morrison2004b}[32]{morrison2004a}
\item \cite[33]{morrison2004a}
-\end{citeonly}
+\end{citenobib}
A shorter form of this passage appears in \textit{CMOS}
\ref{14.34}:\footnote{Switching forms within a document isn't a
@@ -240,7 +240,7 @@ possible.}
% Preamble option 'short' sets 'short' and 'shortfirst' toggles to
% true. Set them to true to simulate the 'short' preamble option.
-\begin{citeonly}
+\begin{citenobib}
\AtNextCitekey{\toggletrue{short}\toggletrue{shortfirst}}
\item \cite[3]{morrison2004a}
\AtNextCitekey{\toggletrue{short}}
@@ -265,7 +265,7 @@ possible.}
\item \cites[240]{morrison2004b}[32]{morrison2004a}
\AtNextCitekey{\toggletrue{short}}
\item \cite[33]{morrison2004a}
-\end{citeonly}
+\end{citenobib}
In this version, a work's first citation gives short names and titles
and omits all other publication information. Consecutive citations of
@@ -287,7 +287,7 @@ break here may affect the output.}
% toggles to true. Set all those toggles to true to simulate the
% 'short' and 'ibid' preamble options.
-\begin{citeonly}
+\begin{citenobib}
\AtNextCitekey{\toggletrue{short}\toggletrue{shortfirst}}
\item \cite[3]{morrison2004a}
\AtNextCitekey{\toggletrue{short}\toggletrue{ibid}}
@@ -312,7 +312,7 @@ break here may affect the output.}
\item \cites[240]{morrison2004b}[32]{morrison2004a}
\AtNextCitekey{\toggletrue{short}}
\item \cite[33]{morrison2004a}
-\end{citeonly}
+\end{citenobib}
For a compromise between standard and short forms, try the preamble
option \opt{shortfirst}. It swaps long first citations for short ones
@@ -495,6 +495,17 @@ reference list is to pass \opt{env=reflist} to
\cmd{printbibliography}. See section \ref{overview} for more
information.
+\optitem[false]{sentencecase}{\opt{true}, \opt{false}}
+
+\noindent This option puts titles in sentence-style capitalization,
+also called sentence case (see \textit{CMOS} 8.158), whereby the first
+letter is uppercase and subsequent letters are lowercase. Affected
+fields: \bibfield{title}, \bibfield{blogtitle},
+\bibfield{bookbooktitle}, \bibfield{booktitle}, \bibfield{issuetitle},
+\bibfield{journal}, \bibfield{journaltitle}, \bibfield{maintitle},
+\bibfield{origtitle}, \bibfield{shortbooktitle}, \bibfield{shorthand},
+\bibfield{shorttitle}, and \bibfield{shortmaintitle}.
+
\optitem[false]{short}{\opt{true}, \opt{false}}
\noindent As shown in section \ref{short}, this option prints short
@@ -524,7 +535,7 @@ in \textit{CMOS} \ref{14.34}:
% 'shortafter' doesn't. Hence, to display the output of 'shortafter'
% below, you need only toggle true 'short'.
-\begin{citeonly}
+\begin{citenobib}
\AtNextCitekey{\toggletrue{short}}
\item \cite[3]{morrison2004a}
\AtNextCitekey{\toggletrue{short}}
@@ -549,7 +560,7 @@ in \textit{CMOS} \ref{14.34}:
\item \cites[240]{morrison2004b}[32]{morrison2004a}
\AtNextCitekey{\toggletrue{short}}
\item \cite[33]{morrison2004a}
-\end{citeonly}
+\end{citenobib}
\optitem[false]{shortfirst}{\opt{true}, \opt{false}}
@@ -573,18 +584,18 @@ the author's name, \textit{ibid.}, or a shorthand. For comparison, the
blue text below shows default links:
\hypersetup{citecolor=blue}
-\begin{citeonly}
+\begin{citenobib}
\item \cite[24--25]{morley1995}
\item \cite{schwartz1992}
\item \cite{kaiser1964}
\item \cite[43]{morley1995}
\item \cite[138]{schwartz1992}
\item \cite[189--90]{kaiser1964}
-\end{citeonly}
+\end{citenobib}
\noindent And here they are with \opt{shortlinks}:
-\begin{citeonly}
+\begin{citenobib}
\AtNextCitekey{\toggletrue{shortlinks}}
\item \cite[24--25]{morley1995}
\AtNextCitekey{\toggletrue{shortlinks}}
@@ -597,7 +608,7 @@ blue text below shows default links:
\item \cite[138]{schwartz1992}
\AtNextCitekey{\toggletrue{shortlinks}}
\item \cite[189--90]{kaiser1964}
-\end{citeonly}
+\end{citenobib}
\hypersetup{citecolor=}
\optitem[false]{swapvol}{\opt{true}, \opt{false}}
@@ -654,12 +665,60 @@ the value of \cmd{bibitemsep}.
\noindent Set \opt{false} to prevent the \bibfield{doi} field from
printing.
+\optitem[false]{emph}{\opt{true}, \opt{false}}
+
+\noindent Short for \opt{emph:title}.
+
+\optitem[false]{emph:<field>}{\opt{true}, \opt{false}}
+
+\noindent This option puts titles in italics. Supported values of
+\bibfield{<field>}: \bibfield{title}, \bibfield{blogtitle},
+\bibfield{bookbooktitle}, \bibfield{booktitle}, \bibfield{issuetitle},
+\bibfield{journal}, \bibfield{journaltitle}, \bibfield{maintitle},
+\bibfield{origtitle}, \bibfield{shortbooktitle}, \bibfield{shorthand},
+\bibfield{shorttitle}, and \bibfield{shortmaintitle}.
+
\optitem[true]{eprint}{\opt{true}, \opt{false}}
\noindent Set \opt{false} to prevent the \bibfield{eprint} field from
printing. For more information about eprints, see section
\ref{datafields}.
+\optitem[false]{ifcapital}{\opt{true}, \opt{false}}
+
+\noindent Short for \opt{ifcapital:title}.
+
+\optitem[false]{ifcapital:<field>}{\opt{true}, \opt{false}}
+
+\noindent This option uppercases the first letter of titles when
+\cmd{ifcapital} is true. Supported values of \bibfield{<field>}:
+\bibfield{title}, \bibfield{blogtitle}, \bibfield{bookbooktitle},
+\bibfield{booktitle}, \bibfield{issuetitle}, \bibfield{journal},
+\bibfield{journaltitle}, \bibfield{maintitle}, \bibfield{origtitle},
+\bibfield{shortbooktitle}, \bibfield{shorthand},
+\bibfield{shorttitle}, and \bibfield{shortmaintitle}.
+
+In combination with \opt{noformat:<field>}, this option allows you to
+work with complex titles, where different parts need different formats
+in different contexts. From \textit{CMOS} \ref{14.210}:
+
+\begin{verbatim}
+ @Online{braun2016,
+ options = {noformat,ifcapital},
+ author = {Braun, Caroline},
+ title = {reply to \mkbibquote{How did the `cool kids' from high
+ school turn out?}},
+ organization = {Quora},
+ date = {2016-08-09},
+ url = {https://www.quora.com/How-did-the-cool-kids-from-high
+ -school-turn-out/}
+ }
+\end{verbatim}
+
+\begin{citebib}
+\item \cite{braun2016}
+\end{citebib}
+
\optitem[false]{isbn}{\opt{true}, \opt{false}}
\noindent Use this option to print the ISBN of a particular work in a
@@ -712,6 +771,19 @@ such as \cmd{cite*}, \cmd{footcite*}, and \cmd{parencite*}.
citations and bibliography entries of specific works. To disable
truncation in all works, use the \opt{noetal} preamble option.
+\optitem[false]{noformat}{\opt{true}, \opt{false}}
+
+\noindent Short for \opt{noformat:title}.
+
+\optitem[false]{noformat:<field>}{\opt{true}, \opt{false}}
+
+\noindent This option removes formatting from titles. Supported values
+of \bibfield{<field>}: \bibfield{title}, \bibfield{blogtitle},
+\bibfield{bookbooktitle}, \bibfield{booktitle}, \bibfield{issuetitle},
+\bibfield{journal}, \bibfield{journaltitle}, \bibfield{maintitle},
+\bibfield{origtitle}, \bibfield{shortbooktitle}, \bibfield{shorthand},
+\bibfield{shorttitle}, and \bibfield{shortmaintitle}.
+
\optitem[false]{noplace}{\opt{true}, \opt{false}}
\noindent In contexts where Windy City expects to print a publisher's
@@ -719,10 +791,10 @@ location, but no location is specified in the bibliography database,
you can tell it to print \textit{n.p.} (for \textit{no place}) with
this option. From \textit{CMOS} \ref{14.132}:
-\begin{citeonly}
+\begin{citenobib}
%\begin{itemize}[before=\small,itemindent=0ex]
\item[] \cite{windsor1910}
-\end{citeonly}
+\end{citenobib}
%\end{itemize}
\optitem[false]{noreprint}{\opt{true}, \opt{false}}
@@ -745,6 +817,34 @@ the author-year format):
\nocite{darwin1964}
\end{refonly}
+\optitem[false]{quotes}{\opt{true}, \opt{false}}
+
+\noindent Short for \opt{quotes:title}.
+
+\optitem[false]{quotes:<field>}{\opt{true}, \opt{false}}
+
+\noindent This option puts titles in quotes. Supported values of
+\bibfield{<field>}: \bibfield{title}, \bibfield{blogtitle},
+\bibfield{bookbooktitle}, \bibfield{booktitle}, \bibfield{issuetitle},
+\bibfield{journal}, \bibfield{journaltitle}, \bibfield{maintitle},
+\bibfield{origtitle}, \bibfield{shortbooktitle}, \bibfield{shorthand},
+\bibfield{shorttitle}, and \bibfield{shortmaintitle}.
+
+\optitem[false]{sentencecase}{\opt{true}, \opt{false}}
+
+\noindent Short for \opt{sentencecase:title}.
+
+\optitem[false]{sentencecase:<field>}{\opt{true}, \opt{false}}
+
+\noindent This option puts titles in sentence-style capitalization,
+also called sentence case (see \textit{CMOS} 8.158), whereby the first
+letter is uppercase and subsequent letters are lowercase. Supported
+values of \bibfield{<field>}: \bibfield{title}, \bibfield{blogtitle},
+\bibfield{bookbooktitle}, \bibfield{booktitle}, \bibfield{issuetitle},
+\bibfield{journal}, \bibfield{journaltitle}, \bibfield{maintitle},
+\bibfield{origtitle}, \bibfield{shortbooktitle}, \bibfield{shorthand},
+\bibfield{shorttitle}, and \bibfield{shortmaintitle}.
+
\optitem[false]{skipdate}{\opt{true}, \opt{false}}
\noindent On rare occasions, you may need an entry in a reference list
@@ -1007,9 +1107,9 @@ respectively, to elucidate the strategy in ``indirection''---do we
begin to get a sense of both the extent and the specificity of
Whitman's forms.\footnotemark[1] \end{quote}
-\begin{citeonly}
+\begin{citenobib}
\item \idemcites{sutton1959,fussell1962,coffman1954,coffman1955,rountree1958}[and][]{lovell1960}
-\end{citeonly}
+\end{citenobib}
Without commands like \cmd{idemcite}, there's often no easy way to
tell Windy City to shorten names. The preamble option
@@ -1139,9 +1239,9 @@ entry types. You may cross-reference \bibtype{inreference} entries to
\bibtype{reference} entries, but they're otherwise equivalent. Take an
example from \textit{CMOS} \ref{14.232}:
-\begin{citeonly}
+\begin{citenobib}
\item \cite{salvation1980}
-\end{citeonly}
+\end{citenobib}
\noindent One way to get that output is to cross-reference an
\bibtype{inreference} entry (for the article) to a \bibtype{reference}
@@ -2162,19 +2262,19 @@ short citations), the one with priority determines which one
identifies the work. By default, as you can see in the second note
below, the volume has priority:
-\begin{citeonly}
+\begin{citenobib}
\item \cite{armstrong2014}
\item \cite[45]{armstrong2014}
-\end{citeonly}
+\end{citenobib}
\noindent Whereas with \opt{swapvol}:
-\begin{citeonly}
+\begin{citenobib}
\AtNextCitekey{\toggletrue{swapvol}}
\item \cite{armstrong2014}
\AtNextCitekey{\toggletrue{swapvol}}
\item \cite[45]{armstrong2014}
-\end{citeonly}
+\end{citenobib}
Notice the volume number in the second note above, separated from the
page by a colon. When the collection has priority, the volume number
@@ -2426,9 +2526,9 @@ without regard to the \bibfield{postnote}, use the entry option
\opt{listvols}. Windy City uses it to match some examples in
\textit{CMOS}, such as in \ref{14.59}:
-\begin{citeonly}
+\begin{citenobib}
\item \cite[1:126]{shurtleff1853}
-\end{citeonly}
+\end{citenobib}
\subsection{Collections as Single Works}
\label{multivolume}
@@ -2440,12 +2540,12 @@ illustrate the distinction between a collection that counts as a
single work and one that doesn't, \textit{CMOS} gives the following
examples in \ref{14.118}:
-\begin{citeonly}
+\begin{citenobib}
\item \cite[4:243]{byrne1981}
\item \cite*[32--33]{james1963.5}
\item \cite[4:245]{byrne1981}
\item \cite*[34]{james1963.5}
-\end{citeonly}
+\end{citenobib}
In citations of \textit{The Lisle Letters}, volume numbers and pages
are separated by a colon. With \textit{The Complete Tales of Henry
@@ -2501,10 +2601,10 @@ Subsequent entries indicate the collection in whatever short form
corresponds to the preamble options. The following shows the default
output for two such citations of the collection:
-\begin{citeonly}
+\begin{citenobib}
\item \cite{byrne1981}
\item \cite{byrne1981}
-\end{citeonly}
+\end{citenobib}
For collections like \textit{The Complete Tales of Henry James}, which
don't count as single works, every volume needs to have its own entry
@@ -2545,11 +2645,11 @@ editor's name, long before the \bibfield{postnote}. The second prints
it just before the \bibfield{postnote}, separated from the page by a
colon:
-\begin{citeonly}
+\begin{citenobib}
\item[2.] \cite*[32--33]{james1963.5}
\item[\ldots]
\item[4.] \cite*[34]{james1963.5}
-\end{citeonly}
+\end{citenobib}
Neither type of collection uses cross-referencing in the bibliography
database. For \textit{The Lisle Letters}, cross-referencing would
@@ -2685,7 +2785,7 @@ To help with cross-checking, subsection numbers and headings are from
On short citations and the \opt{short} and \opt{ibid} preamble
options, see sections \ref{short} and \ref{preamble}.
-\begin{citeonly}
+\begin{citenobib}
\AtNextCitekey{\toggletrue{short}\toggletrue{shortfirst}}
\item \cite[3]{morrison2004a}
\AtNextCitekey{\toggletrue{short}}
@@ -2709,11 +2809,11 @@ options, see sections \ref{short} and \ref{preamble}.
\AtNextMultiCite{\toggletrue{short}}
\item \cites[240]{morrison2004b}[32]{morrison2004a}
\AtNextCitekey{\toggletrue{short}} \item \cite[33]{morrison2004a}
-\end{citeonly}
+\end{citenobib}
\noindent With options \opt{short} and \opt{ibid}:
-\begin{citeonly}
+\begin{citenobib}
\AtNextCitekey{\toggletrue{short}\toggletrue{shortfirst}}
\item \cite[3]{morrison2004a}
\AtNextCitekey{\toggletrue{short}\toggletrue{ibid}}
@@ -2738,7 +2838,7 @@ options, see sections \ref{short} and \ref{preamble}.
\item \cites[240]{morrison2004b}[32]{morrison2004a}
\AtNextCitekey{\toggletrue{short}}
\item \cite[33]{morrison2004a}
-\end{citeonly}
+\end{citenobib}
\setcounter{subsubsection}{53}
\subsubsection{Source notes for previously published material}
@@ -2768,9 +2868,9 @@ respectively, to elucidate the strategy in ``indirection''---do we
begin to get a sense of both the extent and the specificity of
Whitman's forms.\footnotemark[1] \end{quote}
-\begin{citeonly}
+\begin{citenobib}
\item \idemcites{sutton1959,fussell1962,coffman1954,coffman1955,rountree1958}[and][]{lovell1960}
-\end{citeonly}
+\end{citenobib}
\setcounter{subsubsection}{58}
\subsubsection{Abbreviations for frequently cited works}
@@ -3343,11 +3443,11 @@ field for the second example below contains \textit{vol. 6}.
To insert \textit{n.p.} (for \textit{no place}), you need to use the
entry option \opt{noplace}. See section \ref{entry}.
-\begin{citeonly}
+\begin{citenobib}
%\begin{itemize}[before=\small,itemindent=0ex]
\item[] \cite{windsor1910}
\item[] \cite{vliet1890}
-\end{citeonly}
+\end{citenobib}
%\end{itemize}
\setcounter{subsubsection}{136}
@@ -3729,6 +3829,15 @@ correct.
\item \cite{licis2016}
\end{citebib}
+\subsubsection{Electronic mailing lists and forums}
+% 14.210 Electronic mailing lists and forums
+\label{14.210}
+
+\begin{citebib}
+\item \cite{powell1998}
+\item \cite{braun2016}
+\end{citebib}
+
\setcounter{subsection}{7}
\subsection{Papers, Contracts, and Reports}
\setcounter{subsection}{14}
@@ -3800,7 +3909,7 @@ correct.
% 14.229 Examples of note forms for manuscript collections
\label{14.229}
-\begin{citeonly}
+\begin{citenobib}
\item \cite[Burton to Merriam, telegram, 26 January 1923, box 26, folder
17,][]{merriam}
\item \cite[Minutes of the Committee for Improving the Condition of the Free
@@ -3811,7 +3920,7 @@ Blacks, Pennsylvania Abolition Society, 1790--1803,][]{pasociety}
(Scotland), Document 1359, fol. 1r,][MS-12-84]{morris}
\item \cite[Daily Expenses, July 1787, images 7--8,][]{washington}
\item \cite[Minutes, 15 April 1795,][]{pasociety}
-\end{citeonly}
+\end{citenobib}
\setcounter{subsubsection}{229}
\subsubsection{Examples of bibliography entries for manuscript collections}
@@ -3866,12 +3975,12 @@ type. As odd as it may seem, but consistent with \textit{CMOS}, they,
too, aren't included in bibliographies. See section \ref{entrytypes}
for more information.
-\begin{citeonly}
+\begin{citenobib}
\item \cite{toscanini2016}
\item \cite{cairns2016}
\item \cite{wikipedia2016}
\item \cite{merriam2016}
-\end{citeonly}
+\end{citenobib}
\subsubsection{Citing individual reference entries by author}
% 14.234 Citing individual reference entries by author
@@ -4006,9 +4115,9 @@ after the year, not before.
\subsubsection{Additional material in text citations}
% 15.24 Additional material in text citations
-\begin{citeref}
+\begin{citenoref}
\item \parencite[; t-tests are used here]{mandolan2017}
-\end{citeref}
+\end{citenoref}
\subsubsection{Text citations in relation to surrounding text and punctuation}
% 15.25 Text citations in relation to surrounding text and punctuation
@@ -4024,7 +4133,7 @@ blue states and between churchgoers and secular voters. \end{quote}
\subsubsection{Several references to the same source}
% 15.27 Several references to the same source
-\begin{citeref}% 'even\-tanned' prevents even--[break]tanned
+\begin{citenoref}% 'even\-tanned' prevents even--[break]tanned
\item Complexion figures prominently in Morgan's descriptions. When
Jasper compliments his mother's choice of car (a twelve-cylinder
Mediterranean roadster with leather and wood-grained interior), ``his
@@ -4034,26 +4143,26 @@ never changes, her ``even\-tanned good looks''
\parencite[56]{chaston2000}, ``burnished visage''
\parencite[101]{chaston2000}, and ``air-brushed confidence''
\parencite[211]{chaston2000} providing the foil to the drama in her
-midst. \end{citeref}
+midst. \end{citenoref}
\setcounter{subsubsection}{28}
\subsubsection{Text citations of works with more than three authors}
% 15.29 Text citations of works with more than three authors
-\begin{citeref}
+\begin{citenoref}
\item \parencite{schonen2017a}
\item \parencite{schonen2017b}
-\end{citeref}
+\end{citenoref}
\subsubsection{Multiple text references}
% 15.30 Multiple text references
-\begin{citeref}
+\begin{citenoref}
\item \parencite{armstrong1989,beigl1989,pickett1985}
\item \parencites{whittaker1967,whittaker1975,wiens1989a,wiens1989b}
\item \parencites[328]{wong1999}[475]{wong2000}[67]{garcia1998}
\item \parencites{guest2006}[see also][]{stalle2008}{rahn2009}
-\end{citeref}
+\end{citenoref}
\setcounter{subsection}{2}
\subsection{Author-Date References: Special Cases}
@@ -4198,7 +4307,7 @@ with \ref{14.208} and \ref{15.42}.
\begin{citeref}
\item \parencite{diaz2016}
-\item \parencite{obrien2015}
+\item \parencite{brien2015}
\item \parencite{chicago2015}
\end{citeref}
diff --git a/macros/latex/contrib/biblatex-contrib/windycity/windycity.bbx b/macros/latex/contrib/biblatex-contrib/windycity/windycity.bbx
index f0ebc54803..7ec01ff0a4 100644
--- a/macros/latex/contrib/biblatex-contrib/windycity/windycity.bbx
+++ b/macros/latex/contrib/biblatex-contrib/windycity/windycity.bbx
@@ -1,4 +1,4 @@
-% Last modified: Sat 04 Dec 2021 01:25:10 PM CST
+% Last modified: Wed 03 May 2023 06:54:57 PM CDT
% Permission is granted to copy, distribute and/or modify this
% software under the terms of the LaTeX Project Public License (LPPL),
@@ -11,7 +11,7 @@
% implied warranties of merchantability and fitness for a particular
% purpose.
-\ProvidesFile{windycity.bbx}[2021/12/04 Windy City bibliography style
+\ProvidesFile{windycity.bbx}[2023/05/03 Windy City bibliography style
for biblatex]
\@ifpackagelater{biblatex}{2019/08/17}
{}
@@ -142,20 +142,20 @@
\settoggle{swapauth}{#1}}%
\providetoggle{swaptrans}
-\providetoggle{swaptrans:booktitle}
\providetoggle{swaptrans:bookbooktitle}
+\providetoggle{swaptrans:booktitle}
\providetoggle{swaptrans:issuetitle}
\providetoggle{swaptrans:maintitle}
\providetoggle{swaptrans:series}
\providetoggle{swaptrans:title}
\DeclareBiblatexOption{entry}[boolean]{swaptrans}[true]{%
\settoggle{swaptrans:title}{#1}%
- \settoggle{swaptrans:booktitle}{#1}%
- \settoggle{swaptrans:bookbooktitle}{#1}}%
-\DeclareBiblatexOption{entry}[boolean]{swaptrans:booktitle}[true]{%
+ \settoggle{swaptrans:bookbooktitle}{#1}%
\settoggle{swaptrans:booktitle}{#1}}%
\DeclareBiblatexOption{entry}[boolean]{swaptrans:bookbooktitle}[true]{%
\settoggle{swaptrans:bookbooktitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{swaptrans:booktitle}[true]{%
+ \settoggle{swaptrans:booktitle}{#1}}%
\DeclareBiblatexOption{entry}[boolean]{swaptrans:issuetitle}[true]{%
\settoggle{swaptrans:issuetitle}{#1}}%
\DeclareBiblatexOption{entry}[boolean]{swaptrans:maintitle}[true]{%
@@ -187,6 +187,250 @@
\DeclareBiblatexOption{entry,global}[boolean]{url}[true]{%
\settoggle{url}{#1}}%
+% Options for formatting titles and other fields:
+
+\providetoggle{emph:blogtitle}
+\providetoggle{emph:booktitle}
+\providetoggle{emph:bookbooktitle}
+\providetoggle{emph:issuetitle}
+\providetoggle{emph:journaltitle}
+\providetoggle{emph:labeltitle}
+\providetoggle{emph:maintitle}
+\providetoggle{emph:origtitle}
+\providetoggle{emph:shortbooktitle}
+\providetoggle{emph:shorthand}
+\providetoggle{emph:shortmaintitle}
+\providetoggle{emph:title}
+\providetoggle{emph}
+\DeclareBiblatexOption{entry}[boolean]{emph:blogtitle}[true]{%
+ \settoggle{emph:blogtitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{emph:bookbooktitle}[true]{%
+ \settoggle{emph:bookbooktitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{emph:booktitle}[true]{%
+ \settoggle{emph:booktitle}{#1}%
+ \settoggle{emph:shortbooktitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{emph:issuetitle}[true]{%
+ \settoggle{emph:issuetitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{emph:journal}[true]{%
+ \settoggle{emph:journaltitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{emph:journaltitle}[true]{%
+ \settoggle{emph:journaltitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{emph:maintitle}[true]{%
+ \settoggle{emph:maintitle}{#1}%
+ \settoggle{emph:shortmaintitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{emph:origtitle}[true]{%
+ \settoggle{emph:origtitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{emph:shortbooktitle}[true]{%
+ \settoggle{emph:shortbooktitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{emph:shorthand}[true]{%
+ \settoggle{emph:shorthand}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{emph:shortmaintitle}[true]{%
+ \settoggle{emph:shortmaintitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{emph:shorttitle}[true]{%
+ \settoggle{emph:labeltitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{emph:title}[true]{%
+ \settoggle{emph:title}{#1}%
+ \settoggle{emph:labeltitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{emph}[true]{%
+ \settoggle{emph:title}{#1}%
+ \settoggle{emph:labeltitle}{#1}}%
+
+\providetoggle{ifcapital:blogtitle}
+\providetoggle{ifcapital:booktitle}
+\providetoggle{ifcapital:bookbooktitle}
+\providetoggle{ifcapital:issuetitle}
+\providetoggle{ifcapital:journaltitle}
+\providetoggle{ifcapital:labeltitle}
+\providetoggle{ifcapital:maintitle}
+\providetoggle{ifcapital:origtitle}
+\providetoggle{ifcapital:shortbooktitle}
+\providetoggle{ifcapital:shorthand}
+\providetoggle{ifcapital:shortmaintitle}
+\providetoggle{ifcapital:title}
+\providetoggle{ifcapital}
+\DeclareBiblatexOption{entry}[boolean]{ifcapital:blogtitle}[true]{%
+ \settoggle{ifcapital:blogtitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{ifcapital:bookbooktitle}[true]{%
+ \settoggle{ifcapital:bookbooktitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{ifcapital:booktitle}[true]{%
+ \settoggle{ifcapital:booktitle}{#1}%
+ \settoggle{ifcapital:shortbooktitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{ifcapital:issuetitle}[true]{%
+ \settoggle{ifcapital:issuetitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{ifcapital:journal}[true]{%
+ \settoggle{ifcapital:journaltitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{ifcapital:journaltitle}[true]{%
+ \settoggle{ifcapital:journaltitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{ifcapital:maintitle}[true]{%
+ \settoggle{ifcapital:maintitle}{#1}%
+ \settoggle{ifcapital:shortmaintitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{ifcapital:origtitle}[true]{%
+ \settoggle{ifcapital:origtitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{ifcapital:shortbooktitle}[true]{%
+ \settoggle{ifcapital:shortbooktitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{ifcapital:shorthand}[true]{%
+ \settoggle{ifcapital:shorthand}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{ifcapital:shortmaintitle}[true]{%
+ \settoggle{ifcapital:shortmaintitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{ifcapital:shorttitle}[true]{%
+ \settoggle{ifcapital:labeltitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{ifcapital:title}[true]{%
+ \settoggle{ifcapital:title}{#1}%
+ \settoggle{ifcapital:labeltitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{ifcapital}[true]{%
+ \settoggle{ifcapital:title}{#1}%
+ \settoggle{ifcapital:labeltitle}{#1}}%
+
+\providetoggle{noformat:blogtitle}
+\providetoggle{noformat:booktitle}
+\providetoggle{noformat:bookbooktitle}
+\providetoggle{noformat:issuetitle}
+\providetoggle{noformat:journaltitle}
+\providetoggle{noformat:labeltitle}
+\providetoggle{noformat:maintitle}
+\providetoggle{noformat:origtitle}
+\providetoggle{noformat:shortbooktitle}
+\providetoggle{noformat:shorthand}
+\providetoggle{noformat:shortmaintitle}
+\providetoggle{noformat:title}
+\providetoggle{noformat}
+\DeclareBiblatexOption{entry}[boolean]{noformat:blogtitle}[true]{%
+ \settoggle{noformat:blogtitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{noformat:bookbooktitle}[true]{%
+ \settoggle{noformat:bookbooktitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{noformat:booktitle}[true]{%
+ \settoggle{noformat:booktitle}{#1}%
+ \settoggle{noformat:shortbooktitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{noformat:issuetitle}[true]{%
+ \settoggle{noformat:issuetitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{noformat:journal}[true]{%
+ \settoggle{noformat:journaltitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{noformat:journaltitle}[true]{%
+ \settoggle{noformat:journaltitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{noformat:maintitle}[true]{%
+ \settoggle{noformat:maintitle}{#1}%
+ \settoggle{noformat:shortmaintitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{noformat:origtitle}[true]{%
+ \settoggle{noformat:orig}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{noformat:shortbooktitle}[true]{%
+ \settoggle{noformat:shortbooktitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{noformat:shorthand}[true]{%
+ \settoggle{noformat:shorthand}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{noformat:shortmaintitle}[true]{%
+ \settoggle{noformat:shortmaintitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{noformat:shorttitle}[true]{%
+ \settoggle{noformat:labeltitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{noformat:title}[true]{%
+ \settoggle{noformat:labeltitle}{#1}%
+ \settoggle{noformat:title}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{noformat}[true]{%
+ \settoggle{noformat:labeltitle}{#1}%
+ \settoggle{noformat:title}{#1}}%
+
+\providetoggle{quotes:blogtitle}
+\providetoggle{quotes:booktitle}
+\providetoggle{quotes:bookbooktitle}
+\providetoggle{quotes:issuetitle}
+\providetoggle{quotes:journaltitle}
+\providetoggle{quotes:labeltitle}
+\providetoggle{quotes:maintitle}
+\providetoggle{quotes:origtitle}
+\providetoggle{quotes:shortbooktitle}
+\providetoggle{quotes:shorthand}
+\providetoggle{quotes:shortmaintitle}
+\providetoggle{quotes:title}
+\providetoggle{quotes}
+\DeclareBiblatexOption{entry}[boolean]{quotes:blogtitle}[true]{%
+ \settoggle{quotes:blogtitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{quotes:bookbooktitle}[true]{%
+ \settoggle{quotes:bookbooktitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{quotes:booktitle}[true]{%
+ \settoggle{quotes:booktitle}{#1}%
+ \settoggle{quotes:shortbooktitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{quotes:issuetitle}[true]{%
+ \settoggle{quotes:issuetitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{quotes:journal}[true]{%
+ \settoggle{quotes:journaltitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{quotes:journaltitle}[true]{%
+ \settoggle{quotes:journaltitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{quotes:maintitle}[true]{%
+ \settoggle{quotes:maintitle}{#1}%
+ \settoggle{quotes:shortmaintitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{quotes:origtitle}[true]{%
+ \settoggle{quotes:origtitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{quotes:shortbooktitle}[true]{%
+ \settoggle{quotes:shortbooktitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{quotes:shorthand}[true]{%
+ \settoggle{quotes:shorthand}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{quotes:shortmaintitle}[true]{%
+ \settoggle{quotes:shortmaintitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{quotes:shorttitle}[true]{%
+ \settoggle{quotes:labeltitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{quotes:title}[true]{%
+ \settoggle{quotes:labeltitle}{#1}%
+ \settoggle{quotes:title}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{quotes}[true]{%
+ \settoggle{quotes:labeltitle}{#1}%
+ \settoggle{quotes:title}{#1}}%
+
+\providetoggle{sentencecase:blogtitle}
+\providetoggle{sentencecase:booktitle}
+\providetoggle{sentencecase:bookbooktitle}
+\providetoggle{sentencecase:issuetitle}
+\providetoggle{sentencecase:journaltitle}
+\providetoggle{sentencecase:labeltitle}
+\providetoggle{sentencecase:maintitle}
+\providetoggle{sentencecase:origtitle}
+\providetoggle{sentencecase:shortbooktitle}
+\providetoggle{sentencecase:shorthand}
+\providetoggle{sentencecase:shortmaintitle}
+\providetoggle{sentencecase:title}
+\providetoggle{sentencecase}
+\DeclareBiblatexOption{entry}[boolean]{sentencecase:blogtitle}[true]{%
+ \settoggle{sentencecase:blogtitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{sentencecase:bookbooktitle}[true]{%
+ \settoggle{sentencecase:bookbooktitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{sentencecase:booktitle}[true]{%
+ \settoggle{sentencecase:booktitle}{#1}%
+ \settoggle{sentencecase:shortbooktitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{sentencecase:issuetitle}[true]{%
+ \settoggle{sentencecase:issuetitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{sentencecase:journal}[true]{%
+ \settoggle{sentencecase:journaltitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{sentencecase:journaltitle}[true]{%
+ \settoggle{sentencecase:journaltitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{sentencecase:maintitle}[true]{%
+ \settoggle{sentencecase:maintitle}{#1}%
+ \settoggle{sentencecase:shortmaintitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{sentencecase:origtitle}[true]{%
+ \settoggle{sentencecase:origtitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{sentencecase:shortbooktitle}[true]{%
+ \settoggle{sentencecase:shortbooktitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{sentencecase:shorthand}[true]{%
+ \settoggle{sentencecase:shorthand}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{sentencecase:shortmaintitle}[true]{%
+ \settoggle{sentencecase:shortmaintitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{sentencecase:shorttitle}[true]{%
+ \settoggle{sentencecase:labeltitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{sentencecase:title}[true]{%
+ \settoggle{sentencecase:title}{#1}%
+ \settoggle{sentencecase:labeltitle}{#1}}%
+\DeclareBiblatexOption{entry}[boolean]{sentencecase}[true]{%
+ \settoggle{sentencecase:title}{#1}%
+ \settoggle{sentencecase:labeltitle}{#1}}%
+\DeclareBiblatexOption{global}[boolean]{sentencecase}[true]{%
+ \settoggle{sentencecase:blogtitle}{#1}%
+ \settoggle{sentencecase:booktitle}{#1}%
+ \settoggle{sentencecase:bookbooktitle}{#1}%
+ \settoggle{sentencecase:issuetitle}{#1}%
+ \settoggle{sentencecase:journaltitle}{#1}%
+ \settoggle{sentencecase:labeltitle}{#1}%
+ \settoggle{sentencecase:maintitle}{#1}%
+ \settoggle{sentencecase:origtitle}{#1}%
+ \settoggle{sentencecase:shortbooktitle}{#1}%
+ \settoggle{sentencecase:shortmaintitle}{#1}%
+ \settoggle{sentencecase:title}{#1}}%
+
% For setting 'minbibnames' and such, see CMOS, 17th ed., 14.76 and
% 15.29. For 'citetracker' and 'loccittracker', 'constrict' is too
% strict but seems to work well for 'ibidtracker'.
@@ -386,7 +630,7 @@
}
\DeclareStyleSourcemap{
\maps[datatype=bibtex]{
- \map[overwrite=false]{
+ \map[overwrite]{
\pertype{inreference}
\pertype{reference}
\step[notfield=author, final]
@@ -554,6 +798,7 @@
\let\anona\empty
\let\anonb\empty
\let\crossreflist\empty
+\let\title@format\empty
\let\pluga\empty
\let\plugb\empty
\let\xtitle\empty
@@ -623,9 +868,22 @@
{\indexnames{labelname}}%
{}}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Field Formats for Names %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%
+%% Field Formats %%
+%%%%%%%%%%%%%%%%%%%%%
+
+% Generic formats:
+
+\DeclareFieldFormat{brackets}{\mkbibbrackets{#1}}
+\DeclareFieldFormat{capital}{\MakeCapital{#1}}
+\DeclareFieldFormat{emph}{\mkbibemph{#1}}
+\DeclareFieldFormat{ifcapital}{\ifcapital{\MakeCapital{#1}}{#1}}
+\DeclareFieldFormat{noformat}{#1}
+\DeclareFieldFormat{parens}{\mkbibparens{#1}}
+\DeclareFieldFormat{quotes}{\mkbibquote{#1}}
+\DeclareFieldFormat{sentencecase}{\MakeSentenceCase{#1}}
+
+% Name formats (defaults set in biblatex.def):
\DeclareNameAlias{author}{sortname}
\DeclareNameAlias{afterword}{sortname}
@@ -712,33 +970,32 @@
\ifdefvoid{#3}{}{ #3}%
\ifdefvoid{#4}{}{, #4}}}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Field Formats for Titles %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Title formats:
-\DeclareFieldFormat{blogtitle}{\mkbibemph{#1}}
-\DeclareFieldFormat{bookbooktitle}{\mkbibemph{#1}}
-\DeclareFieldFormat{booktitle}{\mkbibemph{#1}}
-\DeclareFieldFormat{journaltitle}{\mkbibemph{#1}}
-\DeclareFieldFormat{labeltitle}{\mkbibemph{#1}}
-\DeclareFieldFormat{maintitle}{\mkbibemph{#1}}
-\DeclareFieldFormat{shortbooktitle}{\mkbibemph{#1}}
-\DeclareFieldFormat{title}{\mkbibemph{#1}}
+\DeclareFieldAlias{blogtitle}{emph}
+\DeclareFieldAlias{bookbooktitle}{emph}
+\DeclareFieldAlias{booktitle}{emph}
+\DeclareFieldAlias{journaltitle}{emph}
+\DeclareFieldAlias{labeltitle}{emph}
+\DeclareFieldAlias{maintitle}{emph}
+\DeclareFieldAlias{shortbooktitle}{emph}
+\DeclareFieldAlias{shortmaintitle}{emph}
+\DeclareFieldAlias{title}{emph}
\DeclareIndexFieldFormat{indextitle}{%
\usebibmacro{index:title}{\index}{\mkbibemph{#1}}}
\renewbibmacro*{index:title}[2]{%
\usebibmacro{index:field}{#1}{\thefield{indexsorttitle}}{#2}}%
-\DeclareFieldFormat{blogtitleaddon}{\mkbibparens{#1}}
-\DeclareFieldFormat{journaltitleaddon}{\mkbibbrackets{#1}}
-\DeclareFieldFormat{titleaddon}{\mkbibbrackets{#1}}
+\DeclareFieldAlias{blogtitleaddon}{parens}
+\DeclareFieldAlias{journaltitleaddon}{brackets}
+\DeclareFieldAlias{titleaddon}{brackets}
\DeclareFieldFormat[article,incollection,online,reference,review,thesis]
{title}{\mkbibquote{#1}}
\DeclareFieldFormat[article,incollection,online,reference,review,thesis]
{labeltitle}{\mkbibquote{#1}}
-\DeclareIndexFieldFormat[article,incollection,online,reference,review,thesis]
+\DeclareIndexFieldFormat[article,incollection,reference,review,thesis]
{indextitle}{\usebibmacro{index:title}{\index}{\mkbibquote{#1}}}
\DeclareFieldFormat[letter,misc,patent]{title}{#1}
@@ -746,13 +1003,13 @@
\DeclareIndexFieldFormat[letter,misc,patent]
{indextitle}{\usebibmacro{index:title}{\index}{#1}}
-\DeclareFieldAlias[inbook]{title}{title}
-\DeclareFieldAlias[inbook]{labeltitle}{labeltitle}
+\DeclareFieldAlias[inbook]{title}{emph}
+\DeclareFieldAlias[inbook]{labeltitle}{emph}
\DeclareIndexFieldAlias[inbook]{indextitle}{indextitle}
-\DeclareFieldAlias[book]{origtitle}{title}
+\DeclareFieldAlias[book]{origtitle}{emph}
\DeclareFieldFormat{chapter}{\bibstring{chapter}\space #1}
-\DeclareFieldFormat{issuetitle}{\ifcapital{\MakeCapital{#1}}{#1}}
+\DeclareFieldAlias{issuetitle}{noformat}
\DeclareFieldFormat[unpublished]
{title}{\usebibmacro{unpublished:format}{#1}}
@@ -766,20 +1023,18 @@
{\mkbibquote{#1}}%
{#1}}%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Other Field Formats %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Other field formats:
-\DeclareFieldFormat{addendum}{\ifcapital{\MakeCapital{#1}}{#1}}%
+\DeclareFieldAlias{addendum}{ifcapital}
\DeclareFieldFormat{annotation}{\\[\bibitemsep] #1}
\DeclareFieldAlias{doi}{url}
\DeclareFieldFormat{edition}{%
\ifinteger{#1}
{\mkbibordedition{#1}~\bibstring{edition}}%
{\ifcapital{\MakeCapital{#1}}{#1}}}
-\DeclareFieldFormat{endmonth}{\mkbibmonth{#1}}%
-\DeclareFieldFormat{howpublished}{\ifcapital{\MakeCapital{#1}}{#1}}%
-\DeclareFieldFormat{issue}{\MakeCapital{#1}}% always capitalize
+\DeclareFieldAlias{endmonth}{month}
+\DeclareFieldAlias{howpublished}{ifcapital}
+\DeclareFieldAlias{issue}{capital}
\DeclareFieldFormat{journum}{%
\ifnumeral{#1}
{no\adddotspace\printfield{number}}%
@@ -789,28 +1044,58 @@
and test {\iffieldundef{bookyear}}}
{\biblcstring{#1}}%
{\ifbibstring{#1}{\bibstring{#1}}{\stripzeros{#1}}}}
-\DeclareListFormat{location}{#1}%
+\DeclareListFormat{location}{#1}
\DeclareFieldFormat{month}{\mkbibmonth{#1}}%
-\DeclareFieldFormat{note}{\ifcapital{\MakeCapital{#1}}{#1}}%
-\DeclareFieldFormat{pages}{#1}
+\DeclareFieldAlias{note}{ifcapital}
+\DeclareFieldAlias{pages}{noformat}
\DeclareFieldFormat{part}{\bibstring{part}\space#1}
-\DeclareFieldFormat{postnote}{#1}
+\DeclareFieldAlias{postnote}{noformat}
\DeclareListFormat{publisher}{#1}
-\DeclareFieldFormat{pubstate}{\ifcapital{\MakeCapital{#1}}{#1}}%
-\DeclareFieldFormat{season}{\MakeCapital{#1}}% always capitalize
-\DeclareFieldFormat{series}{\ifcapital{\MakeCapital{#1}}{#1}}
+\DeclareFieldAlias{pubstate}{ifcapital}
+\DeclareFieldAlias{season}{capital}% deprecated
+\DeclareFieldAlias{series}{ifcapital}
+\DeclareFieldAlias{yeardivision}{capital}
% A shorthand should be italicized if the title that it abbreviates is
% also italicized. See CMOS, 17th ed., 14.60. Set italics for it in
% the bibliography database with '\emph{}' or '\mkbibemph{}'.
-\DeclareFieldFormat{shorthand}{#1}
-\DeclareFieldFormat{shorthandintro}{\ifcapital{\MakeCapital{#1}}{#1}}%
-\DeclareFieldFormat{shorthandwidth}{#1}
-\DeclareFieldFormat{type}{\ifcapital{\MakeCapital{#1}}{#1}}%
+\DeclareFieldAlias{shorthand}{noformat}
+\DeclareFieldFormat[article,incollection,online,reference,review,thesis]
+ {shorthand}{\mkbibquote{#1}}
+\DeclareFieldAlias{shorthandintro}{ifcapital}
+\DeclareFieldAlias{type}{ifcapital}
\DeclareFieldFormat{url}{\url{#1}}
\DeclareFieldFormat{urldate}{\bibstring{urlseen}\space#1}
+\newbibmacro*{test:format}[2]{%
+ \iftoggle{noformat:#1}
+ {\iftoggle{ifcapital:#1}
+ {\usebibmacro{print:#2}{#1}{noformat}{ifcapital}}%
+ {\iftoggle{sentencecase:#1}
+ {\usebibmacro{print:#2}{#1}{noformat}{sentencecase}}%
+ {\usebibmacro{print:#2}{#1}{noformat}{noformat}}}}
+ {\iftoggle{sentencecase:#1}
+ {\iftoggle{emph:#1}
+ {\usebibmacro{print:#2}{#1}{emph}{sentencecase}}%
+ {\iftoggle{quotes:#1}
+ {\usebibmacro{print:#2}{#1}{quotes}{sentencecase}}%
+ {\usebibmacro{print:#2}{#1}{#1}{sentencecase}}}}
+ {\iftoggle{emph:#1}
+ {\iftoggle{ifcapital:#1}
+ {\usebibmacro{print:#2}{#1}{emph}{ifcapital}}%
+ {\usebibmacro{print:#2}{#1}{emph}{noformat}}}
+ {\iftoggle{quotes:#1}
+ {\iftoggle{ifcapital:#1}
+ {\usebibmacro{print:#2}{#1}{quotes}{ifcapital}}%
+ {\usebibmacro{print:#2}{#1}{quotes}{noformat}}}
+ {\iftoggle{ifcapital:#1}
+ {\usebibmacro{print:#2}{#1}{#1}{ifcapital}}%
+ {\usebibmacro{print:#2}{#1}{#1}{noformat}}}}}}}
+
+\newbibmacro*{print:field}[3]{%
+ \printtext[#2]{\printfield[#3]{#1}}}
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Bibliography Aliases %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1464,20 +1749,23 @@
\iffieldundef{#1title}
{}
{\renewcommand*{\xtitle}{#1}%
- \iftoggle{shortlinks}
- {\printtext[bibhyperref]{%
- \usebibmacro{title+subtitle}{#1}}}
- {\usebibmacro{title+subtitle}{#1}}%
+ \usebibmacro{title+shortlinks}{#1}%
\usebibmacro{titleaddon}{#1}%
\clearfield{#1title}}}
-\newbibmacro*{title+subtitle}[1]{%
- \printtext[#1title]{%
- \printfield[noformat]{#1title}%
- \iffieldundef{#1subtitle}
+\newbibmacro*{title+shortlinks}[1]{%
+ \iftoggle{shortlinks}
+ {\printtext[bibhyperref]{%
+ \usebibmacro{test:format}{#1title}{title}}}
+ {\usebibmacro{test:format}{#1title}{title}}}
+
+\newbibmacro*{print:title}[3]{%
+ \printtext[#2]{%
+ \printfield[#3]{#1}%
+ \iffieldundef{\xtitle subtitle}
{}
{\subtitlepunct
- \printfield[noformat]{#1subtitle}}%
+ \printfield[#3]{\xtitle subtitle}}%
\isdot}}%
\newbibmacro*{titleaddon}[1]{%
@@ -1486,11 +1774,6 @@
{\addspace% '\space' has issues with quotation marks
\printfield{#1titleaddon}}}
-\newbibmacro*{shorttitle+shortlinks}{%
- \iftoggle{shortlinks}
- {\printtext[bibhyperref]{\usebibmacro{shorttitle+crossref}{}}}
- {\usebibmacro{shorttitle+crossref}{}}}
-
\newbibmacro*{shorttitle+crossref}[1]{%
\ifboolexpr{ togl {collection:#1bk}
and togl {swapvol}}
@@ -1501,11 +1784,13 @@
{\usebibmacro{shorttitle}{label}}}}
\newbibmacro*{shorttitle}[1]{%
+ \renewcommand*{\xtitle}{#1}%
+ \clearfield{#1subtitle}%
\ifstrequal{#1}{label}
- {\printfield[\thefield{entrytype}]{labeltitle}\isdot}%
+ {\usebibmacro{title+shortlinks}{label}}%
{\iffieldundef{short#1title}
- {\printfield[#1title]{#1title}\isdot}%
- {\printfield[#1title]{short#1title}\isdot}}}
+ {\usebibmacro{title+shortlinks}{#1}}%
+ {\usebibmacro{title+shortlinks}{short#1}}}}
\renewbibmacro*{booktitle}{%
\iffieldundef{booktitle}
@@ -1648,28 +1933,25 @@
\newbibmacro*{issue+month+etc}[1]{%
\iffieldundef{year}
- {\setunit{\space}%
- \iffieldundef{month}
- {\usebibmacro{pubstate}{parens}}%
- {\printtext[parens]{\printdate}}}
+ {\ifstrequal{#1}{parens}
+ {\setunit{\space}}%
+ {\setunit{\addcomma\space}}%
+ \usebibmacro{pubstate}{#1}}%
{\ifboolexpr{ test {\iffieldundef{volume}}
and test {\iffieldundef{number}}}
- {\iffieldundef{journal}
- {}
- {\setunit{\addcomma\space}}%
- \iffieldundef{month}
+ {\iffieldundef{month}
{\usebibmacro{issue+season+year}}%
{\usebibmacro{reflist+year+day}%
\printdate}}%
{\iffieldundef{month}
- {\usebibmacro{reflist+issue+season}}%
- {\ifstrequal{#1}{noparens}
- {\usebibmacro{reflist+year+day}%
- \newunit
- \usebibmacro{pubstate}{date}}%
- {\usebibmacro{reflist+year+day}%
- \setunit{\space}%
- \printtext[parens]{\printdate}}}}}}
+ {\setunit{\space}%
+ \usebibmacro{reflist+issue+season}}%
+ {\usebibmacro{reflist+year+day}%
+ \ifstrequal{#1}{parens}
+ {\setunit{\space}%
+ \printtext[parens]{\printdate}}%
+ {\newunit
+ \usebibmacro{pubstate}{date}}}}}}
\newbibmacro*{pubstate}[1]{%
\iftoggle{authposition}
@@ -1694,21 +1976,27 @@
\setunit{\addcomma\space}}%
{\ifstrequal{#1}{parens}
{\printtext[parens]{\printfield{pubstate}}}
- {\printfield{pubstate}}}}}% needs '%'
- \clearfield{pubstate}}}}
+ {\printfield{pubstate}}}}}}}}
\newbibmacro*{labeldate+date}[1]{%
\ifstrequal{#1}{label}
{\printlabeldate}%
{\ifstrequal{#1}{date}
- {\printdate}%
+ {\ifboolexpr{ test {\iffieldundef{year}}
+ and test {\iffieldundef{month}}}
+ {\iffieldundef{yeardivision}
+ {\printfield{season}}% deprecated
+ {\printfield{yeardivision}}}
+ {\printdate}}%
{}}}
\newbibmacro*{reflist+year+day}{%
\ifboolexpr{ togl {bibliography}
and togl {reflist}
- and test {\iffieldundef{day}}}
- {\iffieldundef{endyear}
+ and test {\iffieldundef{day}}
+ and test {\iffieldundef{season}}% deprecated
+ and test {\iffieldundef{yeardivision}}}
+ {\iffieldundef{endyear}
{\clearfield{year}}%
{\iffieldsequal{year}{endyear}
{\clearfield{year}%
@@ -1716,32 +2004,28 @@
{}}}
{}}
-% Treat 'season' as an alternative for 'issue'.
+% Treat 'yeardivision' and 'season' as alternatives for 'issue'.
+
+\newbibmacro*{issue+season+year}{%
+ \iffieldundef{issue}
+ {\usebibmacro{labeldate+date}{date}}%
+ {\ifboolexpr{ test {\iffieldundef{season}}% deprecated
+ and test {\iffieldundef{yeardivision}}}
+ {\printfield{issue}%
+ \setunit{\addspace}% not '\addspace'
+ \printfield{year}}%
+ {\usebibmacro{labeldate+date}{date}}}}
\newbibmacro*{reflist+issue+season}{%
\ifboolexpr{ togl {bibliography}
and togl {reflist}}
{\ifboolexpr{ test {\iffieldundef{issue}}
- and test {\iffieldundef{season}}}
+ and test {\iffieldundef{season}}% deprecated
+ and test {\iffieldundef{yeardivision}}}
{}
- {\setunit{\space}%
- \iffieldundef{issue}
- {\printtext[parens]{\printfield{season}}}
- {\printtext[parens]{\printfield{issue}}}}}
- {\setunit{\space}%
- \printtext[parens]{\usebibmacro{issue+season+year}}}}
-
-\newbibmacro*{issue+season+year}{%
- \ifboolexpr{ test {\iffieldundef{issue}}
- and test {\iffieldundef{season}}}
- {\printfield{year}}%
- {\iffieldundef{issue}
- {\printfield{season}%
- \space
- \printfield{year}}%
- {\printfield{issue}%
- \space
- \printfield{year}}}}
+ {\clearfield{year}%
+ \printtext[parens]{\usebibmacro{issue+season+year}}}}
+ {\printtext[parens]{\usebibmacro{issue+season+year}}}}
% Per CMOS, 17th ed., 14.119, print the publication year of the
% last-mentioned title.
@@ -1784,23 +2068,14 @@
{}
{\textendash\printfield{#1endyear}}}
-\newbibmacro*{month+season+year}{%
- \ifboolexpr{ togl {reflist}
+\newbibmacro*{year+month+day}[1]{%
+ \ifboolexpr{ togl {bibliography}
+ and togl {reflist}
and test {\iffieldundef{month}}
- and test {\iffieldundef{season}}}
+ and test {\iffieldundef{season}}% deprecated
+ and test {\iffieldundef{yeardivision}}}
{}
- {\iffieldundef{year}
- {\printlabeldate}% for 'n.d.'
- {\printdate
- \clearfield{year}}}}
-
-\newbibmacro*{year+month+day}{%
- \iffieldundef{year}
- {}
- {\iffieldundef{month}
- {\usebibmacro{reflist+year+day}%
- \printdate}%
- {\printdate}}}
+ {\usebibmacro{labeldate+date}{#1}}}
% For reference lists.
@@ -1936,12 +2211,12 @@
{\newunit}%
{\setunit{\addcomma\space}}%
\iffieldequalstr{type}{newsmag}
- {\usebibmacro{issue+month+etc}{noparens}%
+ {\usebibmacro{issue+month+etc}{}%
\usebibmacro{periodical:number}}%
{\usebibmacro{periodical:number}%
\iffieldequalstr{pubstate}{prepub}
- {\usebibmacro{issue+month+etc}{noparens}}%
- {\usebibmacro{issue+month+etc}{}}}% needs '%'
+ {\usebibmacro{issue+month+etc}{}}%
+ {\usebibmacro{issue+month+etc}{parens}}}% needs '%'
\toggletrue{edshift}%
\usebibmacro{edition}{noformat}}%
@@ -1957,7 +2232,8 @@
{\ifboolexpr{test {\iffieldundef{number}}
and test {\iffieldundef{month}}
and test {\iffieldundef{issue}}
- and test {\iffieldundef{season}}}
+ and test {\iffieldundef{season}}% deprecated
+ and test {\iffieldundef{yeardivision}}}
{\setunit{\addcolon}%
\printfield{pages}}%
{\setunit{\addcolon\space}%
@@ -1975,7 +2251,7 @@
\usebibmacro{author+bookauthor+etc}%
\usebibmacro{title+titleaddon}{}%
\newunit
- \usebibmacro{month+season+year}%
+ \usebibmacro{year+month+day}{date}%
\usebibmacro{type+typeaddon}%
\usebibmacro{note}%
\newunit
@@ -2108,7 +2384,7 @@
\usebibmacro{institution+venue}%
\printlist{location}%
\setunit*{\addcomma\space}%
- \usebibmacro{year+month+day}}%
+ \usebibmacro{year+month+day}{date}}%
\newbibmacro*{type+typeaddon}{%
\iffieldundef{type}
@@ -2141,7 +2417,7 @@
\usebibmacro{title+titleaddon}{}%
\usebibmacro{type+typeaddon}%
\setunit{\addcomma\space}%
- \usebibmacro{month+season+year}%
+ \usebibmacro{year+month+day}{label}%
\iffieldundef{type}
{\newunit
\usebibmacro{unpublished:collection}}%
@@ -2199,7 +2475,8 @@
{\ifboolexpr{ togl {bibliography}
and togl {reflist}
and test {\iffieldundef{issue}}
- and test {\iffieldundef{season}}
+ and test {\iffieldundef{season}}% deprecated
+ and test {\iffieldundef{yeardivision}}
and test {\iffieldundef{month}}
and not test {\iffieldundef{volume}}}
{\setunit{\space}%
@@ -2431,10 +2708,9 @@
\newbibmacro*{loc+pub+year}{%
\usebibmacro{loc+pub+etc}{}%
- \setunit{\addcomma\space}%
- \usebibmacro{month+season+year}%
- \setunit{\addcomma\space}%
- \usebibmacro{pubstate}{}}%
+ \iffieldundef{pubstate}
+ {\usebibmacro{year+month+day}{date}}%
+ {\usebibmacro{pubstate}{}}}
% Thanks to David Fussner's biblatex-chicago for pointing me to this
% command by Philipp Lehman. Source:
@@ -2679,7 +2955,7 @@
\usebibmacro{author+title+etc}%
\newunit
\usebibmacro{websites}%
- \usebibmacro{issue+month+etc}{}%
+ \usebibmacro{issue+month+etc}{parens}%
\usebibmacro{doi+finentry+etc}}%
\DeclareBibliographyDriver{patent}{%
diff --git a/macros/latex/contrib/biblatex-contrib/windycity/windycity.cbx b/macros/latex/contrib/biblatex-contrib/windycity/windycity.cbx
index 155407ad63..28d29a3265 100644
--- a/macros/latex/contrib/biblatex-contrib/windycity/windycity.cbx
+++ b/macros/latex/contrib/biblatex-contrib/windycity/windycity.cbx
@@ -1,4 +1,4 @@
-% Last modified: Sat 04 Dec 2021 12:44:00 PM CST
+% Last modified: Wed 03 May 2023 06:54:38 PM CDT
% Permission is granted to copy, distribute and/or modify this
% software under the terms of the LaTeX Project Public License (LPPL),
@@ -11,7 +11,7 @@
% implied warranties of merchantability and fitness for a particular
% purpose.
-\ProvidesFile{windycity.cbx}[2021/12/04 Windy City citation style for
+\ProvidesFile{windycity.cbx}[2023/05/03 Windy City citation style for
biblatex]
\@ifpackagelater{biblatex}{2019/08/17}
{}
@@ -242,7 +242,7 @@
\newbibmacro*{parencite:new}{%
\iffieldundef{shorthand}
{\usebibmacro{parencite:auth+title}}%
- {\printfield{shorthand}}%
+ {\usebibmacro{test:format}{shorthand}{field}}%
\setunit{\addspace}% not '\setunit{\space}'
\usebibmacro{parencite:date}}%
@@ -289,9 +289,9 @@
{\usebibmacro{cite:short}}}
{\iftoggle{shortlinks}
{\printtext[bibhyperref]{%
- \printfield{shorthand}%
+ \usebibmacro{test:format}{shorthand}{field}%
\usebibmacro{cite:volume}}}
- {\printfield{shorthand}%
+ {\usebibmacro{test:format}{shorthand}{field}%
\usebibmacro{cite:volume}}}}
\newbibmacro*{test:loccit}{%
@@ -322,14 +322,14 @@
\ifnameundef{author}
{\bibcpstring{reviewnoauth}%
\space
- \usebibmacro{shorttitle+shortlinks}}%
+ \usebibmacro{shorttitle+crossref}{}}%
{\usebibmacro{author+bookauthor+etc}}%
\usebibmacro{cite:volume}}%
\newbibmacro*{cite:author+title+etc}{%
\usebibmacro{author+bookauthor+etc}%
\iftoggle{noauth}
- {\usebibmacro{shorttitle+shortlinks}}%
+ {\usebibmacro{shorttitle+crossref}{}}%
{}% needs '%'
\usebibmacro{cite:volume}}%
@@ -339,7 +339,7 @@
\ifentrytype{review}
{\usebibmacro{short:review}}%
{\usebibmacro{collection+author+etc}%
- \usebibmacro{shorttitle+shortlinks}%
+ \usebibmacro{shorttitle+crossref}{}%
\ifboolexpr{ togl {ibidpage}
and test \ifloccit
and not test \iffirstonpage}
@@ -360,14 +360,14 @@
\setunit{\space}%
\usebibmacro{shorttitle}{book}}%
{\ifnameundef{author}
- {\usebibmacro{shorttitle+shortlinks}}%
+ {\usebibmacro{shorttitle+crossref}{}}%
{\iffieldundef{title}
{\usebibmacro{author+bookauthor+etc}%
\bibstring{review}%
\setunit{\space}%
\usebibmacro{shorttitle}{book}}%
{\usebibmacro{author+bookauthor+etc}%
- \usebibmacro{shorttitle+shortlinks}}}}}
+ \usebibmacro{shorttitle+crossref}{}}}}}
\newbibmacro*{collection+author+etc}{%
\ifboolexpr{ test {\ifentrytype{unpublished}}
@@ -540,7 +540,7 @@
{\setunit{\addspace}%
\printtext[parens]{%
\bibstring{citedas}\space
- \printfield{shorthand}}}
+ \usebibmacro{test:format}{shorthand}{field}}}
{\setunit{\addspace}%
\printfield{shorthandintro}}}}
@@ -599,7 +599,7 @@
\usebibmacro{author+title+etc}%
\setunit*{\newunitpunct}% needs '*'
\usebibmacro{websites}%
- \usebibmacro{issue+month+etc}{}%
+ \usebibmacro{issue+month+etc}{parens}%
\newunit}%
\DeclareBibliographyDriver{cite:patent}{%
diff --git a/macros/latex/contrib/biblatex-contrib/windycity/windycity.dbx b/macros/latex/contrib/biblatex-contrib/windycity/windycity.dbx
index 165a90319c..a67ea7dfa9 100644
--- a/macros/latex/contrib/biblatex-contrib/windycity/windycity.dbx
+++ b/macros/latex/contrib/biblatex-contrib/windycity/windycity.dbx
@@ -1,7 +1,7 @@
-\ProvidesFile{windycity.dbx}[2021/12/04 Windy City data model file for biblatex]
+\ProvidesFile{windycity.dbx}[2025/05/03 Windy City data model file for biblatex]
\DeclareDatamodelFields[type=field,datatype=key]{%
- booktitlekey,
bookbooktitlekey,
+ booktitlekey,
titlekey,
translatortype,
translatoratype,
@@ -11,11 +11,11 @@
blogtitle,
blogtitleaddon,
bookauthortype,
- bookbooktitle,
bookbooksubtitle,
+ bookbooktitle,
bookbooktitleaddon,
- bookvolume,
bookbookvolume,
+ bookvolume,
bookyear,
collection,
editoraddon,
diff --git a/macros/latex/contrib/colorwav/README b/macros/latex/contrib/colorwav/README
index 1c6a28051c..138b59d0f5 100644
--- a/macros/latex/contrib/colorwav/README
+++ b/macros/latex/contrib/colorwav/README
@@ -20,11 +20,12 @@ License
-------
This package is released under the GNU Lesser General Public License. See
-http://www.gnu.org/licenses/licenses.html#LGPL for more details.
+https://www.gnu.org/licenses/licenses.html#LGPL for more details.
Contact
-------
-Any bugs may be reported to the author by sending an email to the address with
-the first part being nsetzer, then an at sign, the next part is umd, and
-finally it ends in dot edu. \ No newline at end of file
+Any bugs may be reported to the author by sending an email to the
+address with the first part being "latex", a dash, then "inquiries",
+then an at sign, the next part is nsetzer, and finally it ends in dot com.
+
diff --git a/macros/latex/contrib/colorwav/colorwav.dtx b/macros/latex/contrib/colorwav/colorwav.dtx
index 1128b0a28e..6d1caa37c5 100644
--- a/macros/latex/contrib/colorwav/colorwav.dtx
+++ b/macros/latex/contrib/colorwav/colorwav.dtx
@@ -2,10 +2,12 @@
%
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\ProvidesPackage{colorwav}
-%<package> [2007/04/12 v1.0 specify wavelength for color]
+%<package> [2023/05/03 v1.0 specify wavelength for color]
%<package>\RequirePackage{ifthen}
%<package>\RequirePackage{fp}
%
+% Update on 2023/05/03 purely to clarify the license; no code changes.
+% This package is released under the GNU LGPL.
%
%<*driver>
\documentclass{ltxdoc}
@@ -530,4 +532,4 @@
%
%
% \Finale
-\endinput \ No newline at end of file
+\endinput
diff --git a/macros/latex/contrib/colorwav/colorwav.ins b/macros/latex/contrib/colorwav/colorwav.ins
index 4cce8df576..847f6b9b24 100644
--- a/macros/latex/contrib/colorwav/colorwav.ins
+++ b/macros/latex/contrib/colorwav/colorwav.ins
@@ -1,8 +1,8 @@
%%
-%% Copyright (C) 2007 by nsetzer
+%% Copyright (C) 2007-2023 by nsetzer
%%
%% This file may be distributed and/or modified under the
-%% conditions of the Limited General Product License
+%% conditions of the GNU Lesser General Public License.
%%
\input docstrip.tex
@@ -16,7 +16,7 @@
This is a generated file
This file may be distributed and/or modified under the
-conditions of the Limited General Product License
+conditions of the GNU Lesser General Public License.
\endpreamble
@@ -37,4 +37,4 @@ conditions of the Limited General Product License
\Msg{* *}
\Msg{****************************************************}
-\endbatchfile \ No newline at end of file
+\endbatchfile
diff --git a/macros/latex/contrib/cool/README b/macros/latex/contrib/cool/README
index d2b3cc6b7d..5ead37b059 100644
--- a/macros/latex/contrib/cool/README
+++ b/macros/latex/contrib/cool/README
@@ -32,12 +32,13 @@ by using MikTeX Options
License
-------
-This pacakge is released under the Lesser GNU General Public License. See
-http://www.gnu.org/licenses/licenses.html#LGPL for more details.
+This package is released under the GNU Lesser General Public License. See
+https://www.gnu.org/licenses/licenses.html#LGPL for more details.
Contact
-------
-Any bugs may be reported to the author by sending an email to the address with
-the first part being nsetzer, then an at sign, the next part is umd, and
-finally it ends in dot edu. \ No newline at end of file
+Any bugs may be reported to the author by sending an email to the
+address with the first part being "latex", a dash, then "inquiries",
+then an at sign, the next part is nsetzer, and finally it ends in dot com.
+
diff --git a/macros/latex/contrib/cool/cool.dtx b/macros/latex/contrib/cool/cool.dtx
index 55094a69c1..ce15efab44 100644
--- a/macros/latex/contrib/cool/cool.dtx
+++ b/macros/latex/contrib/cool/cool.dtx
@@ -2,7 +2,7 @@
%
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\ProvidesPackage{cool}
-%<package> [2006/12/29 v1.35 COntent Oriented LaTeX]
+%<package> [2023/05/03 v1.35 COntent Oriented LaTeX]
%<package>\RequirePackage{ifthen}
%<package>\RequirePackage{coollist}
%<package>\RequirePackage{coolstr}
@@ -11,6 +11,8 @@
%<package>\RequirePackage{amssymb}
%<package>\RequirePackage{bbm}
%
+% Update on 2023/05/03 purely to clarify the license; no code changes.
+% This package is released under the GNU LGPL.
%
%<*driver>
\documentclass{ltxdoc}
diff --git a/macros/latex/contrib/cool/cool.ins b/macros/latex/contrib/cool/cool.ins
index cf0c9ee534..e1f99554b6 100644
--- a/macros/latex/contrib/cool/cool.ins
+++ b/macros/latex/contrib/cool/cool.ins
@@ -1,8 +1,8 @@
%%
-%% Copyright (C) 2005 by nsetzer
+%% Copyright (C) 2005-2023 by nsetzer
%%
%% This file may be distributed and/or modified under the
-%% conditions of the Lesser General Product License
+%% conditions of the GNU Lesser General Public License.
%%
\input docstrip.tex
@@ -16,7 +16,7 @@
This is a generated file
This file may be distributed and/or modified under the
-conditions of the Limited General Product License
+conditions of the GNU Lesser General Public License.
\endpreamble
@@ -37,4 +37,4 @@ conditions of the Limited General Product License
\Msg{* *}
\Msg{****************************************************}
-\endbatchfile \ No newline at end of file
+\endbatchfile
diff --git a/macros/latex/contrib/coollist/coollist.dtx b/macros/latex/contrib/coollist/coollist.dtx
index 9fa4ea70a8..7b611234a2 100644
--- a/macros/latex/contrib/coollist/coollist.dtx
+++ b/macros/latex/contrib/coollist/coollist.dtx
@@ -2,14 +2,14 @@
%
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\ProvidesPackage{coollist}
-%<package> [2022/06/09 v1.4 COntent Oriented LaTeX Lists]
+%<package> [2023/05/03 v1.4 COntent Oriented LaTeX Lists]
%<package>\RequirePackage{ifthen}
%<package>\RequirePackage{amsmath}
%<package>\RequirePackage{amssymb}
%<package>\RequirePackage{coolstr}
%<package>\RequirePackage{forloop}
%
-% Update on 2022/06/09 purely to clarify the license; no code changes.
+% Update on 2023/05/03 purely to clarify the license; no code changes.
% This package is released under the GNU LGPL.
%
%<*driver>
diff --git a/macros/latex/contrib/coollist/coollist.ins b/macros/latex/contrib/coollist/coollist.ins
index cede022fdb..48f12ae1d3 100644
--- a/macros/latex/contrib/coollist/coollist.ins
+++ b/macros/latex/contrib/coollist/coollist.ins
@@ -1,8 +1,8 @@
%%
-%% Copyright (C) 2005 by nsetzer
+%% Copyright (C) 2005-2023 by nsetzer
%%
%% This file may be distributed and/or modified under the
-%% conditions of the Limited General Product License
+%% conditions of the GNU Lesser General Public License.
%%
\input docstrip.tex
@@ -16,7 +16,7 @@
This is a generated file
This file may be distributed and/or modified under the
-conditions of the Limited General Product License
+conditions of the GNU Lesser General Public License.
\endpreamble
@@ -37,4 +37,4 @@ conditions of the Limited General Product License
\Msg{* *}
\Msg{****************************************************}
-\endbatchfile \ No newline at end of file
+\endbatchfile
diff --git a/macros/latex/contrib/coolstr/README b/macros/latex/contrib/coolstr/README
index 6c52e8a6a0..21615479fc 100644
--- a/macros/latex/contrib/coolstr/README
+++ b/macros/latex/contrib/coolstr/README
@@ -23,12 +23,13 @@ by using MikTeX Options
License
-------
-This pacakge is released under the GNU Lesser General Public License. See
-http://www.gnu.org/licenses/licenses.html#LGPL for more details.
+This package is released under the GNU Lesser General Public License. See
+https://www.gnu.org/licenses/licenses.html#LGPL for more details.
Contact
-------
-Any bugs may be reported to the author by sending an email to the address with
-the first part being nsetzer, then an at sign, the next part is umd, and
-finally it ends in dot edu. \ No newline at end of file
+Any bugs may be reported to the author by sending an email to the
+address with the first part being "latex", a dash, then "inquiries",
+then an at sign, the next part is nsetzer, and finally it ends in dot com.
+
diff --git a/macros/latex/contrib/coolstr/coolstr.dtx b/macros/latex/contrib/coolstr/coolstr.dtx
index 7014f0d7f5..6c0513a813 100644
--- a/macros/latex/contrib/coolstr/coolstr.dtx
+++ b/macros/latex/contrib/coolstr/coolstr.dtx
@@ -2,11 +2,13 @@
%
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\ProvidesPackage{coolstr}
-%<package> [2009/09/09 v2.2 COntent Oriented LaTeX Strings]
+%<package> [2023/05/03 v2.2 COntent Oriented LaTeX Strings]
%<package>\RequirePackage{ifthen}
%<package>\RequirePackage{amsmath}
%<package>\RequirePackage{amssymb}
%
+% Update on 2023/05/03 purely to clarify the license; no code changes.
+% This package is released under the GNU LGPL.
%
%<*driver>
\documentclass{ltxdoc}
@@ -823,4 +825,4 @@
%
%
% \Finale
-\endinput \ No newline at end of file
+\endinput
diff --git a/macros/latex/contrib/coolstr/coolstr.ins b/macros/latex/contrib/coolstr/coolstr.ins
index 5ee160edfd..b4ff26524d 100644
--- a/macros/latex/contrib/coolstr/coolstr.ins
+++ b/macros/latex/contrib/coolstr/coolstr.ins
@@ -1,8 +1,8 @@
%%
-%% Copyright (C) 2005 by nsetzer
+%% Copyright (C) 2005-2023 by nsetzer
%%
%% This file may be distributed and/or modified under the
-%% conditions of the Limited General Product License
+%% conditions of the GNU Lesser General Public License.
%%
\input docstrip.tex
@@ -16,7 +16,7 @@
This is a generated file
This file may be distributed and/or modified under the
-conditions of the Limited General Product License
+conditions of the GNU Lesser General Public License.
\endpreamble
@@ -37,4 +37,4 @@ conditions of the Limited General Product License
\Msg{* *}
\Msg{****************************************************}
-\endbatchfile \ No newline at end of file
+\endbatchfile
diff --git a/macros/latex/contrib/dyntree/README b/macros/latex/contrib/dyntree/README
index 4e4b87814a..b1a99643a2 100644
--- a/macros/latex/contrib/dyntree/README
+++ b/macros/latex/contrib/dyntree/README
@@ -1,22 +1,26 @@
-Description
------------
-
-The dyntree package is intended for users needing to typeset a dykin tree---a group theoretical construct consisting of cartan coefficients in boxes connected by a series of lines. Such a diagram is a tool for working out the states and their weights in terms of the fundamental weights and the simple roots.
-
-This package concerns itself with making it easy for the user to generate these objects by allowing the user to specify only the cartan coefficients and the roots to which they connect below---rather than concern themselves with the placement of boxes and lines (which can be quite tedious for even simple Dynkin Tree Diagrams, let alone more complex ones).
-
-Installation
-------------
-
-To install this package, run dyntree.ins through LaTeX. This will generate a file called dyntree.sty. Put this file somewhere where LaTeX will find it---for instance localtexmf/tex/latex/dyntree/ (note that you will need to create the folder dyntree).
-
-
-License
--------
-
-This pacakge is released under the GNU Lesser General Public License. See http://www.gnu.org/licenses/licenses.html#LGPL for more details.
-
-Contact
--------
-
-Any bugs may be reported to the author by sending an email to the address with the first part being nsetzer, then an at sign, the next part is umd, and finally it ends in dot edu. \ No newline at end of file
+Description
+-----------
+
+The dyntree package is intended for users needing to typeset a dykin tree---a group theoretical construct consisting of cartan coefficients in boxes connected by a series of lines. Such a diagram is a tool for working out the states and their weights in terms of the fundamental weights and the simple roots.
+
+This package concerns itself with making it easy for the user to generate these objects by allowing the user to specify only the cartan coefficients and the roots to which they connect below---rather than concern themselves with the placement of boxes and lines (which can be quite tedious for even simple Dynkin Tree Diagrams, let alone more complex ones).
+
+Installation
+------------
+
+To install this package, run dyntree.ins through LaTeX. This will generate a file called dyntree.sty. Put this file somewhere where LaTeX will find it---for instance localtexmf/tex/latex/dyntree/ (note that you will need to create the folder dyntree).
+
+
+License
+-------
+
+This package is released under the GNU Lesser General Public License.
+See https://www.gnu.org/licenses/licenses.html#LGPL for more details.
+
+Contact
+-------
+
+Any bugs may be reported to the author by sending an email to the
+address with the first part being "latex", a dash, then "inquiries",
+then an at sign, the next part is nsetzer, and finally it ends in dot com.
+
diff --git a/macros/latex/contrib/dyntree/dyntree.dtx b/macros/latex/contrib/dyntree/dyntree.dtx
index c5e4997146..ef7ec35d81 100644
--- a/macros/latex/contrib/dyntree/dyntree.dtx
+++ b/macros/latex/contrib/dyntree/dyntree.dtx
@@ -1,1139 +1,1141 @@
-% \iffalse
-%
-%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
-%<package>\ProvidesPackage{dyntree}
-%<package> [2006/08/14 v1 Dynkin Tree Typsetting]
-%<package>\RequirePackage{coollist}
-%<package>\RequirePackage{calc}
-%<package>\RequirePackage{epic}
-%<package>\RequirePackage{eepic}
-%<package>\RequirePackage{amsmath}
-%<package>\RequirePackage{amssymb}
-%
-%
-%<*driver>
-\documentclass{ltxdoc}
-\usepackage{dyntree}
-\EnableCrossrefs
-\CodelineIndex
-\RecordChanges
-\begin{document}
-\DocInput{dyntree.dtx}
-\end{document}
-%</driver>
-% \fi
-%
-% \iffalse meta-comment
-% remove this comment to get a checksum
-% \CheckSum{0}
-% \fi
-%
-%% \CharacterTable
-%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-%% Digits \0\1\2\3\4\5\6\7\8\9
-%% Exclamation \! Double quote \" Hash (number) \#
-%% Dollar \$ Percent \% Ampersand \&
-%% Acute accent \' Left paren \( Right paren \)
-%% Asterisk \* Plus \+ Comma \,
-%% Minus \- Point \. Solidus \/
-%% Colon \: Semicolon \; Less than \<
-%% Equals \= Greater than \> Question mark \?
-%% Commercial at \@ Left bracket \[ Backslash \\
-%% Right bracket \] Circumflex \^ Underscore \_
-%% Grave accent \` Left brace \{ Vertical bar \|
-%% Right brace \} Tilde \~}
-%
-% \changes{v1.0}{2006/08/14}{Initial Release}
-%
-% \GetFileInfo{dyntree.sty}
-%
-% \DoNotIndex{\#,\$,\%,\&,\@,\\,\{,\},\^,\_,\~,\ ,\!,\(,\),\,}
-% \DoNotIndex{\@ne,\expandafter}
-% \DoNotIndex{\advance,\begingroup,\catcode,\closein,\errmessage}
-% \DoNotIndex{\newcommand,\renewcommand,\providecommand}
-% \DoNotIndex{\closeout,\day,\def,\edef,\xdef,\gdef,\let,\empty,\endgroup}
-% \DoNotIndex{\newcounter,\providecounter,\addtocounter,\setcounter,\stepcounter,\value,\arabic,\the}
-% \DoNotIndex{\if,\fi,\ifthenelse,\else,\setboolean,\boolean,\newboolean,\provideboolean,\equal,\AND,\OR,\NOT,\whiledo}
-% \DoNotIndex{\ifcase,\ifcat,\or,\else}
-% \DoNotIndex{\par,\parbox,\mbox,\hbox,\begin,\end,\nabla,\partial}
-% \DoNotIndex{\overline,\bar,\small,\tiny,\mathchoice,\scriptsize,\textrm,\texttt}
-% \DoNotIndex{\alpha,\beta,\gamma,\epsilon,\varepsilon,\delta,\zeta,\eta,\theta,\vartheta,\iota,\kappa,\lambda,\mu,\nu}
-% \DoNotIndex{\xi,\omicron,\pi,\varpi,\rho,\varrho,\sigma,\tau,\upsilon,\phi,\varphi,\chi,\psi,\omega}
-% \DoNotIndex{\Delta,\Gamma,\Theta,\Lambda,\Xi,\Pi,\Sigma,\Phi,\Psi,\Omega}
-% \DoNotIndex{\digamma,\lceil,\rceil,\lfloor,\rfloor,\left,\right,\inp,\inb,\inbr,\inap,\nop}
-% \DoNotIndex{\sum,\prod,\int,\log,\ln,\exp,\sin,\cos,\tan,\csc,\sec,\cot,\arcsin,\arccos,\arctan,\det}
-% \DoNotIndex{\sinh,\cosh,\tanh,\csch,\sech,\coth,\arcsinh,\arccosh,\arctanh}
-% \DoNotIndex{\mod,\max,\min,\gcd,\lcm,\wp,\arg,\dots,\infty,}
-% \DoNotIndex{\frac,\binom,\braket,\@@atop}
-% \DoNotIndex{\cdot,\ldots,\tilde,\times,\dagger,\relax}
-% \DoNotIndex{\mathbb,\roman,\bf,\mathord,\cal,\DeclareMathOperator,\PackageError,\PackageWarning}
-% \DoNotIndex{\csname,\endcsname,\ifx,\ifnum}
-% \DoNotIndex{\makeatother,\makeatletter}
-% \DoNotIndex{\copy,\setbox,\usebox,\newbox}
-% \DoNotIndex{\addtolength,\setlength,\newlength,\unitlength,\settoheight,\settodepth,\settowidth,\lengthtest}
-% \DoNotIndex{\drawline,\line,\put}
-% \DoNotIndex{
-% \DYNTREE@temparray,\DYNTREE@templen,\DYNTREE@tempboxnum,\DYNTREE@tempxCoord,
-% \DYNTREE@tempinsert,\DYNTREE@temproot,\DYNTREE@tempswap,\DYNTREE@temprootX}
-%
-% \title{The \textsf{dyntree} package\thanks{This document
-% corresponds to \textsf{dyntree}~\fileversion,
-% dated~\filedate.}}
-% \author{nsetzer}
-%
-% \maketitle
-%
-% \setcounter{IndexColumns}{2}
-% \StopEventually{\PrintChanges\PrintIndex}
-%
-% The \textsf{dyntree} package is intended for users needing to typeset a dykin tree---a group theoretical construct
-% consisting of cartan coefficients in boxes connected by a series of lines.
-% This package makes it easy for the user to generate these objects by allowing the user to specify only the
-% cartan coefficients and the root number(s) that they connect to below.
-%
-% This package requires the \textsf{coollist} package, which is not a standard \LaTeX package but is available at CTAN.
-%
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%\section{Basics}
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% To create a Dynkin Tree Diagram, the syntax is as follows \DescribeEnv{dyntree} \DescribeMacro{\dynbox}:
-%
-% |\start{dyntree}|\marg{num\_roots}
-%
-% |\dynbox|\marg{cartan\_coefficients}\marg{cvs\_descendant\_root\_list} |\lend|
-%
-% $\vdots$
-%
-% |\finish{dyntree}|
-%
-% where
-%
-% \meta{num\_roots} is an integer indicating the number of simple roots
-%
-% \meta{cartan\_coefficients} is an \emph{ampersand} (\&) delimited list of cartan coefficients
-% (the number of which \emph{must} be equal to \meta{num\_roots}
-%
-% \meta{cvs\_descendant\_root\_list} is a comma delimited list of integers indicating which simple root can be lowered
-% from this box. The simple roots are numbered from left to right starting at $1$ and ending at \meta{num\_roots}
-%
-%
-% Thus, if the group of interest had $3$ simple roots, each |\dynbox| would have a \meta{cartan\_coefficients} with three entries; that is, it would be a list with three integers as in
-%
-% \begin{center}
-% |1 & 0 & 0|
-% \end{center}
-%
-% and the list \meta{cvs\_descendant\_root\_list} would have at most three entries (but it need not have exactly three entries) with the entries being between $1$ and $3$. The entry $1$ would correspond to the first (left-most) simple root being lowered, the entry $2$ the second simple root, and $3$ the third:
-%
-% \DeleteShortVerb{\|}
-% \begin{center}
-% \begin{picture}(200,70)
-% \put(20,40){simple root:}
-% \put(80,40){$\begin{array}{ccc} 1 & 2 & 3 \end{array}$}
-% \put(80,30){$\begin{array}{|ccc|} \hline 1 & 0 & 0 \\ \hline \end{array}$}
-% \end{picture}
-% \end{center}
-% \MakeShortVerb{\|}
-%
-% So, finally, an entry such as
-%
-% \begin{center}
-% |\dynbox{-1 & 0 & 0}{1,3}|
-% \end{center}
-%
-% would specify that the program should draw two lines below the box \DeleteShortVerb{\|} $\begin{array}{|ccc|} \hline 1 & 0 & 0 \\ \hline \end{array}$ \MakeShortVerb{\|}; one for the first simple root, and another for the third simple root. The resulting portion of the diagram would look like
-%
-% \begin{center}
-% \start{dyntree}{3}
-% \dynbox{-1 & 0 & 0}{1,3} \lend
-% \finish{dyntree}
-% \end{center}
-%
-% \makeatletter
-% \vspace{\DYNTREE@levelsep}
-% \makeatother
-%
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
-%\subsection{Quirks}
-% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% There are two quirks with this package, and they are
-% \begin{itemize}
-% \item{if there are multiple Dynkin Tree Diagrams required for your document, you \emph{must} enclose each tree in braces}
-% \item{The lowest state (bottom-most dynbox) must have a non-empty entry in \meta{cvs\_descendant\_root\_list} even though no lines are to be drawn from it. To meet both criteria, place a zero in this spot.}
-% \end{itemize}
-%
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
-%\subsection{Examples}
-% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% \newcounter{examples}
-% \setcounter{examples}{1}
-%
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %
-%\subsubsection{Example \theexamples} \stepcounter{examples}
-% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% \begin{verbatim}
-% {
-% \start{dyntree}{2}
-% \dynbox{3 & 0}{1} \lend
-% \dynbox{1 & 1}{1,2} \lend
-% \dynbox{2 & -1}{1}
-% \dynbox{-1 & 2}{1,2} \lend
-% \dynbox{0 & 0}{1,2}
-% \dynbox{-3 & 3}{0,2} \lend
-% \dynbox{1 & -2}{1}
-% \dynbox{-2 & 1}{0,2} \lend
-% \dynbox{-1 & -1}{0,2} \lend
-% \dynbox{0 & -3}{0} \lend
-% \finish{dyntree}
-% }
-% \end{verbatim}
-%
-% {
-% \start{dyntree}{2}
-% \dynbox{3 & 0}{1} \lend
-% \dynbox{1 & 1}{1,2} \lend
-% \dynbox{2 & -1}{1}
-% \dynbox{-1 & 2}{1,2} \lend
-% \dynbox{0 & 0}{1,2}
-% \dynbox{-3 & 3}{0,2} \lend
-% \dynbox{1 & -2}{1}
-% \dynbox{-2 & 1}{0,2} \lend
-% \dynbox{-1 & -1}{0,2} \lend
-% \dynbox{0 & -3}{0} \lend
-% \finish{dyntree}
-% }
-%
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %
-%\subsubsection{Example \theexamples} \stepcounter{examples}
-% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% \begin{verbatim}
-% \begin{center}
-% {
-% \start{dyntree}{3}
-% \dynbox{2 & 0 & 0}{1} \lend
-% \dynbox{0 & 1 & 0}{1,2} \lend
-% \dynbox{1 & -1 & 1}{1,3}
-% \dynbox{-2 & 2 & 0}{2} \lend
-% \dynbox{1 & 1 & -1}{1,2}
-% \dynbox{-1 & 0 & 1}{2,3} \lend
-% \dynbox{2 & -1 & 0}{1}
-% \dynbox{-1 & 2 & -1}{2}
-% \dynbox{0 & -2 & 2}{3} \lend
-% \dynbox{0 & 0 & 0}{0} \lend
-% \finish{dyntree}
-% }
-% \end{center}
-% \end{verbatim}
-%
-% \begin{center}
-% {
-% \start{dyntree}{3}
-% \dynbox{2 & 0 & 0}{1} \lend
-% \dynbox{0 & 1 & 0}{1,2} \lend
-% \dynbox{1 & -1 & 1}{1,3}
-% \dynbox{-2 & 2 & 0}{2} \lend
-% \dynbox{1 & 1 & -1}{1,2}
-% \dynbox{-1 & 0 & 1}{2,3} \lend
-% \dynbox{2 & -1 & 0}{1}
-% \dynbox{-1 & 2 & -1}{2}
-% \dynbox{0 & -2 & 2}{3} \lend
-% \dynbox{0 & 0 & 0}{0} \lend
-% \finish{dyntree}
-% }
-% \end{center}
-%
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %
-%\subsubsection{Example \theexamples} \stepcounter{examples}
-% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% \begin{verbatim}
-% This is a $15$ of $SU(5)$
-%
-% \begin{center}
-% {
-% \start{dyntree}{4}
-% \dynbox{2 & 0 & 0 & 0}{1} \lend
-% \dynbox{0 & 1 & 0 & 0}{1,2} \lend
-% \dynbox{1 & -1 & 1 & 0}{1,3}
-% \dynbox{-2 & 2 & 0 & 0}{2} \lend
-% \dynbox{1 & 0 & -1 & 0}{1,4}
-% \dynbox{-1 & 0 & 1 & 0}{2,3} \lend
-% \dynbox{1 & 0 & 0 &-1}{1}
-% \dynbox{-1 & 1 & -1 & 1}{2,4}
-% \dynbox{0 & -2 & 2 & 0}{3} \lend
-% \dynbox{-1 & 1 & 0 & -1}{2}
-% \dynbox{0 & -1 & 0 & 1}{3,4} \lend
-% \dynbox{0 & -1 & 1 & -1}{3}
-% \dynbox{0 & 0 & -2 & 2}{4} \lend
-% \dynbox{0 & 0 & -1 & 0}{4} \lend
-% \dynbox{0 & 0 & 0 & -2}{0} \lend
-% \finish{dyntree}
-% }
-% \end{center}
-% \end{verbatim}
-%
-% This is a $15$ of $SU(5)$
-%
-% \begin{center}
-% {
-% \start{dyntree}{4}
-% \dynbox{2 & 0 & 0 & 0}{1} \lend
-% \dynbox{0 & 1 & 0 & 0}{1,2} \lend
-% \dynbox{1 & -1 & 1 & 0}{1,3}
-% \dynbox{-2 & 2 & 0 & 0}{2} \lend
-% \dynbox{1 & 0 & -1 & 0}{1,4}
-% \dynbox{-1 & 0 & 1 & 0}{2,3} \lend
-% \dynbox{1 & 0 & 0 &-1}{1}
-% \dynbox{-1 & 1 & -1 & 1}{2,4}
-% \dynbox{0 & -2 & 2 & 0}{3} \lend
-% \dynbox{-1 & 1 & 0 & -1}{2}
-% \dynbox{0 & -1 & 0 & 1}{3,4} \lend
-% \dynbox{0 & -1 & 1 & -1}{3}
-% \dynbox{0 & 0 & -2 & 2}{4} \lend
-% \dynbox{0 & 0 & -1 & 0}{4} \lend
-% \dynbox{0 & 0 & 0 & -2}{0} \lend
-% \finish{dyntree}
-% }
-% \end{center}
-%
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %
-%\subsubsection{Example \theexamples} \stepcounter{examples}
-% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% \begin{verbatim}
-% \begin{center}
-% {
-% \start{dyntree}{2}
-% \dynbox{0 & 2}{2} \lend
-% \dynbox{1 & 0}{1,2} \lend
-% \dynbox{2 & -2}{1}
-% \dynbox{-1 & 1}{2} \lend
-% \dynbox{0 & -1}{1} \lend
-% \dynbox{-2 & 0}{0} \lend
-% \finish{dyntree}
-% }
-% \end{center}
-% \end{verbatim}
-%
-% \begin{center}
-% {
-% \start{dyntree}{2}
-% \dynbox{0 & 2}{2} \lend
-% \dynbox{1 & 0}{1,2} \lend
-% \dynbox{2 & -2}{1}
-% \dynbox{-1 & 1}{2} \lend
-% \dynbox{0 & -1}{1} \lend
-% \dynbox{-2 & 0}{0} \lend
-% \finish{dyntree}
-% }
-% \end{center}
-%
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%\section{Implementation}
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
-%\subsection{Variables and Constants}
-% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% The \textsf{dyntree} package utilizes a picture environment to create the tree. To do this it requires several
-% constant length values, as well as calculated length values and counters. These are define below.
-%
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %
-%\subsubsection{Cartan Coefficients Box Variables}
-% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% The first thing to do is declare the length variables associated with a cartan coefficients box---dynbox for short.
-% These variables are
-%
-% \begin{tabular}{lp{.5\textwidth}}
-% |\DYNTREE@widechar| & the width of a $-1$ \\
-% |\DYNTREE@thinchar| & the width of a $1$ \\
-% |\DYNTREE@cartancoefwidth| & the width of a cartan coefficient (a combination of $-1$ and $1$) \\
-% |\DYNTREE@marginwidth| & the width of the margin of the cartan coefficients box \\
-% |\DYNTREE@colsepwidth| & the width between columns of the cartan coefficients box \\
-% |\DYNTREE@dynboxheight| & the height (baseline to top) of the cartan coefficients box \\
-% |\DYNTREE@dynboxdepth| & the depth (baseline to bottom) of the cartan coefficients box \\
-% |\DYNTREE@dynboxvlen| & the full vertical height of a cartan coefficients box \\
-% |\DYNTREE@dynboxwidth| & the width of a dynbox (calculated based on numroots) \\
-% \end{tabular}
-%
-% \begin{macrocode}
-\newlength{\DYNTREE@widechar}%
-\newlength{\DYNTREE@thinchar}%
-\newlength{\DYNTREE@cartancoefwidth}%
-\newlength{\DYNTREE@marginwidth}%
-\newlength{\DYNTREE@colsepwidth}%
-\newlength{\DYNTREE@dynboxheight}%
-\newlength{\DYNTREE@dynboxdepth}%
-\newlength{\DYNTREE@dynboxvlen}%
-\newlength{\DYNTREE@dynboxwidth}%
-% \end{macrocode}
-%
-% Now that they are declared, initialize the ``exterior" ones
-%
-% \begin{macrocode}
-\settowidth{\DYNTREE@widechar}{$-1$}%
-\settowidth{\DYNTREE@thinchar}{$1$}%
-\setlength{\DYNTREE@cartancoefwidth}%
- {\DYNTREE@widechar*1/2 + \DYNTREE@thinchar*1/2}%
-\settowidth{\DYNTREE@marginwidth}%
- {$\begin{array}{|c|}\hline 1 \\ \hline \end{array}$}%
- \addtolength{\DYNTREE@marginwidth}{-\DYNTREE@thinchar}%
-\settowidth{\DYNTREE@colsepwidth}%
- {$\begin{array}{|cc|}\hline 1 & 1 \\ \hline \end{array}$}%
- \addtolength{\DYNTREE@colsepwidth}{-\DYNTREE@marginwidth - \DYNTREE@thinchar*2}%
-\settoheight{\DYNTREE@dynboxheight}%
- {$\begin{array}{|c|}\hline 1 \\ \hline \end{array}$}%
-\settodepth{\DYNTREE@dynboxdepth}%
- {$\begin{array}{|c|}\hline 1 \\ \hline \end{array}$}%
-\setlength{\DYNTREE@dynboxvlen}{\DYNTREE@dynboxheight + \DYNTREE@dynboxdepth}%
-% \end{macrocode}
-%
-% and now for convenience and error testing, print them out
-%
-% \makeatletter
-% \begin{tabular}{rl}
-% widechar: & \the\DYNTREE@widechar \\
-% thinchar: & \the\DYNTREE@thinchar \\
-% cartancoefwidth: & \the\DYNTREE@cartancoefwidth \\
-% marginwidth: & \the\DYNTREE@marginwidth \\
-% colsepwidth: & \the\DYNTREE@colsepwidth \\
-% dynboxheight & \the\DYNTREE@dynboxheight \\
-% dynboxdepth & \the\DYNTREE@dynboxdepth \\
-% dynboxvlen & \the\DYNTREE@dynboxvlen \\
-% \end{tabular}
-% \makeatother
-%
-%
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %
-%\subsubsection{Dynkin Tree Variables}
-% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% These variables are specific to the actual creation of the tree structure.
-%
-% \begin{tabular}{lp{0.55\textwidth}}
-% {\bf \Large counters} \\
-% |DYNTREE@numlevel| & the number of levels in the tree \\
-% |DYNTREE@nextlevel| & the number of the next level \\
-% |DYNTREE@numboxes| & counter for counting number of boxes in a row \\
-% |DYNTREE@nextnumboxes| & counter for counting number of boxes in the next row \\
-% |DYNTREE@target| & used to record the `targeted' array element when sorting \\
-% |DYNTREE@listlen| & the length of the list of descendents \\
-% |DYNTREE@xCoord| & the x coordinate in scaled points \\
-% |DYNTREE@yCoord| & the y coordinate in scaled points \\
-% |DYNTREE@xPos| & the x coordinate in scaled points \\
-% |DYNTREE@yPos| & the y coordinate in scaled points \\
-% |DYNTREE@xComp| & the x coordinate in scaled points \\
-% |DYNTREE@yComp| & the y coordinate in scaled points \\
-% |DYNTREE@leftX| & the left most x coordinate in scaled points \\
-% |DYNTREE@ct| & generic counter \\
-% |DYNTREE@counter| & generic counter \\
-% |DYNTREE@index| & generic counter \\
-% |DYNTREE@root| & the root number \\
-% \end{tabular}
-%
-% \begin{tabular}{lp{0.55\textwidth}}
-% {\bf \Large lengths} \\
-% |\DYNTREE@dynboxsep| & the distance between dynkin boxes \\
-% |\DYNTREE@levelsep| & the distances between each level (from dynkin box bottom to top of next layer's dynbox)
-% \\
-% |\DYNTREE@leftmostX| & the left most x value \\
-% |\DYNTREE@rightmostX| & the right most x value \\
-% |\DYNTREE@unitlen| & the unit length value before altering (to allow it to be restored) \\
-% |\DYNTREE@templen| & temporary length storage \\
-% |\DYNTREE@holdlen| & temporary length storage \\
-% \end{tabular}
-%
-% \begin{tabular}{lp{0.55\textwidth}}
-% {\bf \Large commands} \\
-% |\DYNTREE@treestop| & indicates the point where the gobbler stops reading (to allow \LaTeX to properly
-% read all the data. Its value is |\&\&\&| \\
-% |\DYNTREE@treeend| & indicates the end of the tree. It is in the definition of the gobbler.
-% It has a value of |\%\%\%| \\
-% \end{tabular}
-%
-%
-% \begin{macro}{\lend}
-% \begin{macro}{\dynbox}
-%
-% And there are two external commands:
-%
-% \begin{tabular}{lp{0.75\textwidth}}
-% |\lend| & indicates the end of one tree level. The value is never used: this token is used as
-% a delimiter by the user and the code. Its value, which should never be typed,
-% is |\&\%\&\%| \\
-% |\dynbox| & indicates the start of a dynbox. The value is never used: this token is purely for
-% delimiting the start of the dynbox by the user; it is only defined to satisfy the
-% |\ifthenelse| statement \\
-% \end{tabular}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macrocode}
-\newcounter{DYNTREE@numlevel}%
-\newcounter{DYNTREE@nextlevel}%
-\newcounter{DYNTREE@numboxes}%
-\newcounter{DYNTREE@nextnumboxes}%
-\newcounter{DYNTREE@target}%
-\newcounter{DYNTREE@listlen}%
-\newcounter{DYNTREE@xCoord}%
-\newcounter{DYNTREE@yCoord}%
-\newcounter{DYNTREE@xPos}%
-\newcounter{DYNTREE@yPos}%
-\newcounter{DYNTREE@xComp}%
-\newcounter{DYNTREE@yComp}%
-\newcounter{DYNTREE@leftX}%
-\newcounter{DYNTREE@ct}%
-\newcounter{DYNTREE@counter}%
-\newcounter{DYNTREE@index}%
-\newcounter{DYNTREE@root}%
-\newlength{\DYNTREE@dynboxsep}%
-\newlength{\DYNTREE@levelsep}%
-\newlength{\DYNTREE@leftmostX}%
-\newlength{\DYNTREE@rightmostX}%
-\newlength{\DYNTREE@unitlen}%
-\newlength{\DYNTREE@templen}%
-\newlength{\DYNTREE@holdlen}%
-\newcommand{\DYNTREE@treestop}{\&\&\&}%
-\newcommand{\DYNTREE@treeend}{\%\%\%}%
-\newcommand{\lend}{\&\%\&\%}%
-\newcommand{\dynbox}{}%
-% \end{macrocode}
-%
-% Now that they are declared, initialize the ``exterior" ones
-%
-% \begin{macrocode}
-\setlength{\DYNTREE@dynboxsep}{\DYNTREE@colsepwidth}%
-\setlength{\DYNTREE@levelsep}{1cm}%
-% \end{macrocode}
-%
-%
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
-%\subsection{The Tree Eater}
-% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% While the dynkin tree structure resembles that of an environment, it actually consists of a \LaTeX command that
-% consumes the data, sorts it, and displays the proper items. The basis of this consumption are several
-% ``gobblers"---the first of which eats the tree one level at a time
-%
-%
-% \begin{macrocode}
-\def\DYNTREE@gobbletree#1\lend#2\DYNTREE@treeend{%
-% \end{macrocode}
-% Before the level can be processed, several things must be adjusted. First, since a new level is beginning
-% the counter must be incremented by one
-% \begin{macrocode}
-\addtocounter{DYNTREE@numlevel}{1}%
-% \end{macrocode}
-% initialize the number of boxes for this level
-% \begin{macrocode}
-\setcounter{DYNTREE@numboxes}{0}%
-% \end{macrocode}
-% initialize the number of boxes for the next level
-% \begin{macrocode}
-\setcounter{DYNTREE@nextnumboxes}{0}%
-% \end{macrocode}
-% Process the level:
-% \begin{macrocode}
-\DYNTREE@gobbledynboxes#1\lend%
-% \end{macrocode}
-% \iffalse
-% \makeatletter
-% \begin{tabular}{lp{.55\textwidth}}
-% \multicolumn{2}{l}{{\bf ERROR CHECK}} \\
-% level: & \arabic{DYNTREE@numlevel} \\
-% boxes: & \arabic{DYNTREE@numboxes} \\
-% \end{tabular}
-% \makeatother
-% \fi
-% Record the number of boxes for this level
-% \begin{macrocode}
-\expandafter\xdef%
- \csname DYNTREE@level@\roman{DYNTREE@numlevel}@numbox\endcsname%
- {\arabic{DYNTREE@numboxes}}%
-% \end{macrocode}
-% Now check for the signal to stop processing
-% \begin{macrocode}
-\ifthenelse{ \equal{#2}{\DYNTREE@treestop} }%
- {%
-% \end{macrocode}
-% The End---just do nothing
-% \begin{macrocode}
- }%
-% Else
- {%
-% \end{macrocode}
-% continue processing levels until the end of the tree
-% \begin{macrocode}
- \DYNTREE@gobbletree#2\DYNTREE@treeend%
- }%
-}%
-% \end{macrocode}
-%
-%
-%
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
-%\subsection{The Box Eater}
-% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% The second ``gobbler" eats the boxes one by one:
-%
-% \begin{macrocode}
-\def\DYNTREE@gobbledynboxes#1\dynbox#2#3#4{%
-% \end{macrocode}
-% increment the number of boxes
-% \begin{macrocode}
-\addtocounter{DYNTREE@numboxes}{1}%
-% \end{macrocode}
-% \iffalse
-%! boxnum: \arabic{DYNTREE@numboxes}
-% \fi
-% Store the boxes for this level in registers
-% \begin{macrocode}
-\expandafter\newbox%
- \csname DYNTREE@box@\roman{DYNTREE@numlevel}@\roman{DYNTREE@numboxes}\endcsname%
-\expandafter\setbox%
- \csname DYNTREE@box@\roman{DYNTREE@numlevel}@\roman{DYNTREE@numboxes}\endcsname=%
- \hbox{$\begin{array}{|*{\DYNTREE@numroots}{c}|}\hline #2 \\ \hline \end{array}$}%
-% \end{macrocode}
-% Calculate the X value for each descendent and place in sorted list
-%
-% * Get the length of the list
-% \begin{macrocode}
-\listlenstore{DYNTREE@listlen}{#3}%
-\expandafter\xdef
- \csname DYNTREE@childline@\roman{DYNTREE@numlevel}@\roman{DYNTREE@numboxes}@boxnum\endcsname%
- {\arabic{DYNTREE@listlen}}%
-\ifthenelse{\value{DYNTREE@listlen} > \DYNTREE@numroots}%
- {%
- \PackageError{dyntree}%
- {%
- Length of descendant of \arabic{DYNTREE@numboxes}%
- on level \arabic{DYNTREE@numlevel} exceeds number of roots%
- (\DYNTREE@numroots)%
- }%
- }%
-% Else
- {}%
-% \end{macrocode}
-% * store the list in a temp variable for convenience in typing, store it more permanently for use later on.
-% \begin{macrocode}
-\liststore{#3}{DYNTREE@templist@}%
-\liststore{#3}%
- {DYNTREE@childlist@\roman{DYNTREE@numlevel}@\roman{DYNTREE@numboxes}@}%
-% \end{macrocode}
-% * go through the list and generate the sorted 'array' |DYNTREE@level@|\meta{level}|@|\meta{boxnum}|@X|
-% \begin{macrocode}
-\setcounter{DYNTREE@ct}{1}%
-\whiledo{ \NOT \(\value{DYNTREE@ct} > \value{DYNTREE@listlen}\) \AND
- \NOT\(\value{DYNTREE@ct} > \DYNTREE@numroots\) }%
- {%
-% \end{macrocode}
- % need to store the `root' value in a counter to retrieve the data
-% \begin{macrocode}
- \setcounter{DYNTREE@counter}{\csname DYNTREE@templist@\roman{DYNTREE@ct}\endcsname}%
-% \end{macrocode}
- % check that the number submitted is within the allowed range
-% \begin{macrocode}
- \ifthenelse{ \(\value{DYNTREE@counter} > \DYNTREE@numroots\) \OR
- \(\value{DYNTREE@counter} < 1\) }%
- {%
- \ifthenelse{\value{DYNTREE@counter} = 0}%
- {%
-% \end{macrocode}
- % Do nothing - this is the last level
-% \begin{macrocode}
- }%
- % Else
- {%
- \PackageError{dyntree}%
- {%
- Descendant root of \arabic{DYNTREE@numboxes} on level%
- \arabic{DYNTREE@numlevel} out of bounds%
- (\arabic{DYNTREE@counter} > \DYNTREE@numroots)%
- }%
- }%
- }%
- % Else
- {%
-% \end{macrocode}
- % temporarily store the length
-% \begin{macrocode}
- \setlength{\DYNTREE@templen}%
- {\csname DYNTREE@level@\roman{DYNTREE@numlevel}@\roman{DYNTREE@numboxes}@X\endcsname}%
- \addtolength{\DYNTREE@templen}%
- {\csname DYNTREE@rootX@\roman{DYNTREE@counter}\endcsname*(-1)}%
-% \end{macrocode}
- % adjust the left most length
-% \begin{macrocode}
- \ifthenelse{\DYNTREE@templen < \DYNTREE@leftmostX}%
- {%
- \setlength{\DYNTREE@leftmostX}{\DYNTREE@templen}%
- }%
- % Else
- {}%
-% \end{macrocode}
- % adjust right most length
-% \begin{macrocode}
- \setlength{\DYNTREE@holdlen}{\DYNTREE@templen}%
- \addtolength{\DYNTREE@holdlen}{\DYNTREE@dynboxwidth}%
- \ifthenelse{ \DYNTREE@holdlen > \DYNTREE@rightmostX }%
- {%
- \setlength{\DYNTREE@rightmostX}{\DYNTREE@holdlen}%
- }%
- % Else
- {}%
-% \end{macrocode}
- % now store the x value for the line
-% \begin{macrocode}
- \setlength{\DYNTREE@holdlen}%
- {\expandafter\csname DYNTREE@dynboxX@\roman{DYNTREE@counter}\endcsname}%
- \addtolength{\DYNTREE@holdlen}{\DYNTREE@templen}%
- \setcounter{DYNTREE@xPos}{\DYNTREE@holdlen}%
-% \end{macrocode}
- % \iffalse
- %! \begin{tabular}{cc}
- %! rootX.\roman{DYNTREE@counter} & \csname DYNTREE@rootX@\roman{DYNTREE@counter}\endcsname \\
- %! DYNTREE@numlevel: & \arabic{DYNTREE@numlevel} \\
- %! numboxes: & \arabic{DYNTREE@numboxes} \\
- %! templen: & \the\DYNTREE@templen \\
- %! \end{tabular}
- %!
- % \fi
- % |counter| has served its purpose and may be used in another context
- %
- % add the length to the sorted 'array'
- %
- % * initialize the counter to the END of the array
-% \begin{macrocode}
- \setcounter{DYNTREE@counter}{\value{DYNTREE@nextnumboxes}}%
-% \end{macrocode}
- % * get the value of the next level
-% \begin{macrocode}
- \setcounter{DYNTREE@nextlevel}{\value{DYNTREE@numlevel} + 1}%
-% \end{macrocode}
- % * Check for array elements
-% \begin{macrocode}
- \ifthenelse{\value{DYNTREE@counter} = 0}%
- {%
-% \end{macrocode}
- % set the first element as the length
-% \begin{macrocode}
- \expandafter\xdef%
- \csname DYNTREE@level@\roman{DYNTREE@nextlevel}@i@X\endcsname%
- {\the\DYNTREE@templen}%
-% \end{macrocode}
- % increment the number of elements
-% \begin{macrocode}
- \addtocounter{DYNTREE@nextnumboxes}{1}%
- }%
- % Else
- {%
-% \end{macrocode}
- % there is at least one element
-% \begin{macrocode}
- \edef\DYNTREE@temparray%
- {\csname DYNTREE@level@\roman{DYNTREE@nextlevel}@\roman{DYNTREE@counter}@X\endcsname}%
- \edef\DYNTREE@tempinsert{\the\DYNTREE@templen}%
-% \end{macrocode}
- % \iffalse
- %! \begin{tabular}{cc}
- %! nextnumboxes: & \arabic{DYNTREE@nextnumboxes} \\
- %! nextlevel: & \arabic{DYNTREE@nextlevel} \\
- %! counter: & \arabic{DYNTREE@counter} \\
- %! temparray: & \DYNTREE@temparray \\
- %! level\&\roman{DYNTREE@nextlevel}\&\roman{DYNTREE@counter}\&X
- %! &
- %! \csname DYNTREE@level@\roman{DYNTREE@nextlevel}@\roman{DYNTREE@counter}@X\endcsname
- %! \\
- %! tempinsert: & \DYNTREE@tempinsert \\
- %! \end{tabular}
- % \fi
- % find where element should be inserted
-% \begin{macrocode}
- \whiledo{ \(\value{DYNTREE@counter} > 0\) \AND
- \lengthtest{\DYNTREE@tempinsert < \DYNTREE@temparray} }%
- {%
- \edef\DYNTREE@temparray%
- {\csname DYNTREE@level@\roman{DYNTREE@nextlevel}@\roman{DYNTREE@counter}@X\endcsname}%
- \addtocounter{DYNTREE@counter}{-1}%
- }%
-% \end{macrocode}
- % the thing needs to be inserted at \value{DYNTREE@counter} + 1
-% \begin{macrocode}
- \setcounter{DYNTREE@target}{\value{DYNTREE@counter} + 1}%
-% \end{macrocode}
- % \iffalse
- %! \begin{tabular}{cc}
- %! target: \arabic{DYNTREE@target} \\
- %! temparray: & \DYNTREE@temparray \\
- %! tempinsert: & \DYNTREE@tempinsert \\
- %! \end{tabular}
- %!
- %!
- % \fi
- % if they aren't equal, move from target to nextnumboxes up to target+1 to nextnumboxes+1
-% \begin{macrocode}
- \ifthenelse{ \NOT \lengthtest{\DYNTREE@tempinsert = \DYNTREE@temparray} }%
- {%
- \setcounter{DYNTREE@counter}{\value{DYNTREE@nextnumboxes} + 1}%
- \whiledo{ \value{DYNTREE@counter} > \value{DYNTREE@target} }%
- {%
-% \end{macrocode}
- % get the value in the array spot one before
-% \begin{macrocode}
- \addtocounter{DYNTREE@counter}{-1}%
- \edef\DYNTREE@tempswap%
- {%
- \csname DYNTREE@level@\roman{DYNTREE@nextlevel}@\roman{DYNTREE@counter}@X\endcsname%
- }%
-% \end{macrocode}
- % store this value in the next array spot
-% \begin{macrocode}
- \addtocounter{DYNTREE@counter}{1}%
- \expandafter\xdef%
- \csname DYNTREE@level@\roman{DYNTREE@nextlevel}@\roman{DYNTREE@counter}@X\endcsname%
- {\DYNTREE@tempswap}%
- \addtocounter{DYNTREE@counter}{-1}%
- }%
-% \end{macrocode}
- % insert the original
-% \begin{macrocode}
- \expandafter\xdef%
- \csname DYNTREE@level@\roman{DYNTREE@nextlevel}@\roman{DYNTREE@target}@X\endcsname%
- {\DYNTREE@tempinsert}%
-% \end{macrocode}
- % increment the number of boxes in the next level
-% \begin{macrocode}
- \addtocounter{DYNTREE@nextnumboxes}{1}%
- }%
- % Else
- {%
-% \end{macrocode}
- % Do nothing
-% \begin{macrocode}
- }%
- }%
- }%
- \addtocounter{DYNTREE@ct}{1}%
- }%
-\ifthenelse{\equal{#4}{\lend}}%
- {%
- }%
-% Else
- {%
-% \end{macrocode}
-% % Eat the boxes until there are no more
-% \begin{macrocode}
- \DYNTREE@gobbledynboxes#4%
- }%
-}%
-% \end{macrocode}
-%
-%
-%
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
-%\subsection{The Dyntree Environment}
-% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% Dynkin Tree Environment
-%
-%
-% \begin{macrocode}
-\def\start#1#2#3\finish#4%
-{%
-\ifthenelse{\equal{#1}{#4} \AND \equal{#4}{dyntree}}%
- {%
- \providecommand{\DYNTREE@numroots}{#2}%
-% \end{macrocode}
- % \iffalse
- %! \DYNTREE@numroots
- % \fi
- % Initialize Interior Dynkin Box Variables
-% \begin{macrocode}
- \setlength{\DYNTREE@dynboxwidth}
- {%
- \DYNTREE@marginwidth +
- \DYNTREE@cartancoefwidth*\DYNTREE@numroots +
- \DYNTREE@colsepwidth*(\DYNTREE@numroots-1)
- }%
-% \end{macrocode}
- % Initialize Interior Dynkin Tree Variables
-% \begin{macrocode}
- \setlength{\DYNTREE@leftmostX}{0pt}%
- \setlength{\DYNTREE@rightmostX}{\DYNTREE@dynboxwidth}%
-% \end{macrocode}
- % the highest left starts at zero, so initialize this value
-% \begin{macrocode}
- \expandafter\gdef\csname DYNTREE@level@i@i@X\endcsname{0pt}%
-% \end{macrocode}
- % There are no levels, so initialize |numlevel| to zero
-% \begin{macrocode}
- \setcounter{DYNTREE@numlevel}{0}%
-% \end{macrocode}
- % Determine the root lines and dynkin box offsets
-% \begin{macrocode}
- \setcounter{DYNTREE@ct}{1}%
- \whiledo{\NOT \(\value{DYNTREE@ct}>\DYNTREE@numroots\)}%
- {%
-% \end{macrocode}
- % Calculate the length and store it in a temporary length
-% \begin{macrocode}
- \setlength{\DYNTREE@templen}%
- {%
- (\DYNTREE@dynboxwidth + \DYNTREE@dynboxsep)*\value{DYNTREE@ct}%
- -(\DYNTREE@dynboxwidth + \DYNTREE@dynboxsep)*1/2%
- -(\DYNTREE@dynboxwidth + \DYNTREE@dynboxsep)*\DYNTREE@numroots/2%
- }%
-% \end{macrocode}
- % \iffalse
- %! ct: \arabic{DYNTREE@ct}
- %! templen: \the\DYNTREE@templen
- % \fi
- % store the actual length in a command
-% \begin{macrocode}
- \expandafter\xdef\csname DYNTREE@rootX@\roman{DYNTREE@ct}\endcsname%
- {\the\DYNTREE@templen}%
-% \end{macrocode}
- % Calculate the dynkin box x offset and store it in a temporary length
-% \begin{macrocode}
- \setlength{\DYNTREE@templen}%
- {%
- \DYNTREE@dynboxwidth/2/\DYNTREE@numroots +
- \DYNTREE@dynboxwidth*(\value{DYNTREE@ct}-1)/\DYNTREE@numroots
- }%
-% \end{macrocode}
- % store the actual length in a command
-% \begin{macrocode}
- \expandafter\xdef\csname DYNTREE@dynboxX@\roman{DYNTREE@ct}\endcsname%
- {\the\DYNTREE@templen}%
-% \end{macrocode}
- % \iffalse
- % Print the Lengths
- %! DYNTREE@rootX@\roman{DYNTREE@ct}: \expandafter\csname DYNTREE@rootX@\roman{DYNTREE@ct}\endcsname
- %!
- %! DYNTREE@dynboxX@\roman{DYNTREE@ct}: \expandafter\csname DYNTREE@dynboxX@\roman{DYNTREE@ct}\endcsname
- % \fi
-% \begin{macrocode}
- \addtocounter{DYNTREE@ct}{1}%
- }%
-% \end{macrocode}
- % \iffalse
- % dynboxwidth: \the\DYNTREE@dynboxwidth
- % \fi
- % Eat the tree
-% \begin{macrocode}
- \DYNTREE@gobbletree#3\DYNTREE@treestop\DYNTREE@treeend%
-% \end{macrocode}
- % \iffalse
- %! numlevels: \arabic{DYNTREE@numlevel}
- % \fi
- % Now the data has been stored, Draw The Tree:
- %
- % store the current unit length to restore when finished
-% \begin{macrocode}
- \setlength{\DYNTREE@unitlen}{\unitlength}%
- \setlength{\unitlength}{1sp}%
-% \end{macrocode}
- % get the width of the picture
-% \begin{macrocode}
- \setcounter{DYNTREE@xCoord}{\DYNTREE@rightmostX - \DYNTREE@leftmostX}%
-% \end{macrocode}
- % store the leftmost point as a counter
-% \begin{macrocode}
- \setcounter{DYNTREE@leftX}{\DYNTREE@leftmostX}%
-% \end{macrocode}
- % get the height of the picture
-% \begin{macrocode}
- \setcounter{DYNTREE@yCoord}%
- {%
- \DYNTREE@dynboxvlen*\value{DYNTREE@numlevel} +
- \DYNTREE@levelsep*(\value{DYNTREE@numlevel} - 1)
- }%
- \begin{picture}%
- (\arabic{DYNTREE@xCoord},\arabic{DYNTREE@yCoord})%
- (\value{DYNTREE@leftX},0)%
- \setcounter{DYNTREE@ct}{1}%
- \whiledo{\NOT \(\value{DYNTREE@ct} > \value{DYNTREE@numlevel}\)}%
- {%
- \setcounter{DYNTREE@counter}{1}%
-% \end{macrocode}
- % get the y coordinate as a length
-% \begin{macrocode}
- \setlength{\DYNTREE@templen}%
- {%
- \DYNTREE@dynboxvlen*\value{DYNTREE@numlevel}
- - \DYNTREE@dynboxvlen*\value{DYNTREE@ct}
- + \DYNTREE@levelsep*\value{DYNTREE@numlevel}
- - \DYNTREE@levelsep*\value{DYNTREE@ct}
- + \DYNTREE@dynboxdepth
- }%
-% \end{macrocode}
- % convert the length to an integer in scaled points (sp)
-% \begin{macrocode}
- \setcounter{DYNTREE@yCoord}{\DYNTREE@templen}%
- \def\DYNTREE@tempboxnum{\csname DYNTREE@level@\roman{DYNTREE@ct}@numbox\endcsname}%
- \whiledo{\NOT \( \value{DYNTREE@counter} > \DYNTREE@tempboxnum \)}%
- {%
-% \end{macrocode}
- % grab the value of the x coordinate (it's a length but not stored as one)
-% \begin{macrocode}
- \xdef\DYNTREE@tempxCoord%
- {%
- \expandafter%
- \csname DYNTREE@level@\roman{DYNTREE@ct}@\roman{DYNTREE@counter}@X\endcsname%
- }%
-% \end{macrocode}
- % convert x coordinate to a length
-% \begin{macrocode}
- \setlength{\DYNTREE@holdlen}{\DYNTREE@tempxCoord}%
-% \end{macrocode}
- % convert length to an integer in scaled points (sp)
-% \begin{macrocode}
- \setcounter{DYNTREE@xCoord}{\DYNTREE@holdlen}%
-% \end{macrocode}
- % place each dynkin box
-% \begin{macrocode}
- \put(\arabic{DYNTREE@xCoord},\arabic{DYNTREE@yCoord})%
- {%
- \expandafter%
- \copy\csname DYNTREE@box@\roman{DYNTREE@ct}@\roman{DYNTREE@counter}\endcsname%
- }%
-% \end{macrocode}
- % go through the descendants and place the lines
-% \begin{macrocode}
- \setcounter{DYNTREE@listlen}%
- {%
- \expandafter%
- \csname DYNTREE@childline@\roman{DYNTREE@ct}@\roman{DYNTREE@counter}@boxnum\endcsname%
- }%
- \setcounter{DYNTREE@index}{1}%
- \whiledo{\NOT \(\value{DYNTREE@index} > \value{DYNTREE@listlen}\)}%
- {%
- \xdef\DYNTREE@childroot%
- {%
- \expandafter%
- \csname DYNTREE@childlist@\roman{DYNTREE@ct}@\roman{DYNTREE@counter}@\roman{DYNTREE@index}\endcsname%
- }%
- \ifthenelse{\NOT \DYNTREE@childroot = 0 }%
- {%
- \setcounter{DYNTREE@root}{\DYNTREE@childroot}%
- \setcounter{DYNTREE@xPos}{\value{DYNTREE@xCoord}}%
- \setcounter{DYNTREE@xComp}{\value{DYNTREE@xCoord}}%
- \setcounter{DYNTREE@yPos}{\value{DYNTREE@yCoord}}%
- \setcounter{DYNTREE@yComp}{\value{DYNTREE@yCoord}}%
- \xdef\DYNTREE@temprootX%
- {\expandafter\csname DYNTREE@rootX@\roman{DYNTREE@root}\endcsname}%
- \setlength{\DYNTREE@templen}{\DYNTREE@temprootX}%
- \addtocounter{DYNTREE@xPos}{\DYNTREE@templen*(-1)}%
- \xdef\DYNTREE@dynoffset%
- {\expandafter\csname DYNTREE@dynboxX@\roman{DYNTREE@root}\endcsname}%
- \setlength{\DYNTREE@templen}{\DYNTREE@dynoffset}%
- \addtocounter{DYNTREE@xPos}{\DYNTREE@templen}%
- \addtocounter{DYNTREE@xComp}{\DYNTREE@templen}%
- \setlength{\DYNTREE@templen}{1pt}% for frame thickness
- \addtocounter{DYNTREE@yPos}%
- {\DYNTREE@levelsep*(-1) - \DYNTREE@dynboxdepth - \DYNTREE@templen}%
- \addtocounter{DYNTREE@yComp}{\DYNTREE@dynboxdepth*(-1) - \DYNTREE@templen}%
- \put(0,0)%
- {%
- \drawline%
- (\arabic{DYNTREE@xComp},\arabic{DYNTREE@yComp})%
- (\arabic{DYNTREE@xPos},\arabic{DYNTREE@yPos})%
- }%
- }%
- % Else
- {%
- }%
- \addtocounter{DYNTREE@index}{1}%
- }%
- \addtocounter{DYNTREE@counter}{1}%
- }%
- \addtocounter{DYNTREE@ct}{1}%
- }%
- \end{picture}%
-% \end{macrocode}
- % restore the unit length to original value
-% \begin{macrocode}
- \setlength{\unitlength}{\DYNTREE@unitlen}%
-% \end{macrocode}
-% \iffalse
- %!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Error Check BEGIN
- %! \setcounter{DYNTREE@ct}{1}
- %! \whiledo{\NOT \(\value{DYNTREE@ct} > \value{DYNTREE@numlevel}\)}%
- %! {%
- %! \setcounter{act}{1}%
- %! \def\DYNTREE@tempboxnum{\csname DYNTREE@level@\roman{DYNTREE@ct}@numbox\endcsname}
- %! \whiledo{\NOT \( \value{act} > \DYNTREE@tempboxnum \)}%
- %! {%
- %! level.\roman{DYNTREE@ct}.\roman{act}.x: \csname DYNTREE@level@\roman{DYNTREE@ct}@\roman{act}@X\endcsname;
- %!
- %! \addtocounter{act}{1}
- %! }
- %! \addtocounter{DYNTREE@ct}{1}%
- %! }%
- %!
- %!
- %! \setcounter{DYNTREE@ct}{1}%
- %! \whiledo{\NOT \(\value{DYNTREE@ct}>\value{DYNTREE@numlevel}\)}%
- %! {%
- %! \setcounter{act}{1}%
- %! \def\DYNTREE@tempboxnum{\csname DYNTREE@level@\roman{DYNTREE@ct}@numbox\endcsname}%
- %! \whiledo{\NOT \(\value{act}>\DYNTREE@tempboxnum\)}%
- %! {%
- %! level: \arabic{DYNTREE@ct}, box: \arabic{act};
- %! \expandafter\copy\csname DYNTREE@box@\roman{DYNTREE@ct}@\roman{act}\endcsname
- %!
- %! \addtocounter{act}{1}%
- %! }%
- %! \addtocounter{DYNTREE@ct}{1}%
- %! }%
- %!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Error Check END
-% \fi
-% \begin{macrocode}
- }%
-% Else
- {%
- \PackageError{dyntree}{Invalid start(#1)/finish(#4) call}%
- }%
-}%
-% \end{macrocode}
-%
-%
-% \Finale
-\endinput \ No newline at end of file
+% \iffalse
+%
+%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<package>\ProvidesPackage{dyntree}
+%<package> [2023/05/03 v1 Dynkin Tree Typsetting]
+%<package>\RequirePackage{coollist}
+%<package>\RequirePackage{calc}
+%<package>\RequirePackage{epic}
+%<package>\RequirePackage{eepic}
+%<package>\RequirePackage{amsmath}
+%<package>\RequirePackage{amssymb}
+%
+% Update on 2023/05/03 purely to clarify the license; no code changes.
+% This package is released under the GNU LGPL.
+%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{dyntree}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\begin{document}
+\DocInput{dyntree.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \iffalse meta-comment
+% remove this comment to get a checksum
+% \CheckSum{0}
+% \fi
+%
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%
+% \changes{v1.0}{2006/08/14}{Initial Release}
+%
+% \GetFileInfo{dyntree.sty}
+%
+% \DoNotIndex{\#,\$,\%,\&,\@,\\,\{,\},\^,\_,\~,\ ,\!,\(,\),\,}
+% \DoNotIndex{\@ne,\expandafter}
+% \DoNotIndex{\advance,\begingroup,\catcode,\closein,\errmessage}
+% \DoNotIndex{\newcommand,\renewcommand,\providecommand}
+% \DoNotIndex{\closeout,\day,\def,\edef,\xdef,\gdef,\let,\empty,\endgroup}
+% \DoNotIndex{\newcounter,\providecounter,\addtocounter,\setcounter,\stepcounter,\value,\arabic,\the}
+% \DoNotIndex{\if,\fi,\ifthenelse,\else,\setboolean,\boolean,\newboolean,\provideboolean,\equal,\AND,\OR,\NOT,\whiledo}
+% \DoNotIndex{\ifcase,\ifcat,\or,\else}
+% \DoNotIndex{\par,\parbox,\mbox,\hbox,\begin,\end,\nabla,\partial}
+% \DoNotIndex{\overline,\bar,\small,\tiny,\mathchoice,\scriptsize,\textrm,\texttt}
+% \DoNotIndex{\alpha,\beta,\gamma,\epsilon,\varepsilon,\delta,\zeta,\eta,\theta,\vartheta,\iota,\kappa,\lambda,\mu,\nu}
+% \DoNotIndex{\xi,\omicron,\pi,\varpi,\rho,\varrho,\sigma,\tau,\upsilon,\phi,\varphi,\chi,\psi,\omega}
+% \DoNotIndex{\Delta,\Gamma,\Theta,\Lambda,\Xi,\Pi,\Sigma,\Phi,\Psi,\Omega}
+% \DoNotIndex{\digamma,\lceil,\rceil,\lfloor,\rfloor,\left,\right,\inp,\inb,\inbr,\inap,\nop}
+% \DoNotIndex{\sum,\prod,\int,\log,\ln,\exp,\sin,\cos,\tan,\csc,\sec,\cot,\arcsin,\arccos,\arctan,\det}
+% \DoNotIndex{\sinh,\cosh,\tanh,\csch,\sech,\coth,\arcsinh,\arccosh,\arctanh}
+% \DoNotIndex{\mod,\max,\min,\gcd,\lcm,\wp,\arg,\dots,\infty,}
+% \DoNotIndex{\frac,\binom,\braket,\@@atop}
+% \DoNotIndex{\cdot,\ldots,\tilde,\times,\dagger,\relax}
+% \DoNotIndex{\mathbb,\roman,\bf,\mathord,\cal,\DeclareMathOperator,\PackageError,\PackageWarning}
+% \DoNotIndex{\csname,\endcsname,\ifx,\ifnum}
+% \DoNotIndex{\makeatother,\makeatletter}
+% \DoNotIndex{\copy,\setbox,\usebox,\newbox}
+% \DoNotIndex{\addtolength,\setlength,\newlength,\unitlength,\settoheight,\settodepth,\settowidth,\lengthtest}
+% \DoNotIndex{\drawline,\line,\put}
+% \DoNotIndex{
+% \DYNTREE@temparray,\DYNTREE@templen,\DYNTREE@tempboxnum,\DYNTREE@tempxCoord,
+% \DYNTREE@tempinsert,\DYNTREE@temproot,\DYNTREE@tempswap,\DYNTREE@temprootX}
+%
+% \title{The \textsf{dyntree} package\thanks{This document
+% corresponds to \textsf{dyntree}~\fileversion,
+% dated~\filedate.}}
+% \author{nsetzer}
+%
+% \maketitle
+%
+% \setcounter{IndexColumns}{2}
+% \StopEventually{\PrintChanges\PrintIndex}
+%
+% The \textsf{dyntree} package is intended for users needing to typeset a dykin tree---a group theoretical construct
+% consisting of cartan coefficients in boxes connected by a series of lines.
+% This package makes it easy for the user to generate these objects by allowing the user to specify only the
+% cartan coefficients and the root number(s) that they connect to below.
+%
+% This package requires the \textsf{coollist} package, which is not a standard \LaTeX package but is available at CTAN.
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%\section{Basics}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% To create a Dynkin Tree Diagram, the syntax is as follows \DescribeEnv{dyntree} \DescribeMacro{\dynbox}:
+%
+% |\start{dyntree}|\marg{num\_roots}
+%
+% |\dynbox|\marg{cartan\_coefficients}\marg{cvs\_descendant\_root\_list} |\lend|
+%
+% $\vdots$
+%
+% |\finish{dyntree}|
+%
+% where
+%
+% \meta{num\_roots} is an integer indicating the number of simple roots
+%
+% \meta{cartan\_coefficients} is an \emph{ampersand} (\&) delimited list of cartan coefficients
+% (the number of which \emph{must} be equal to \meta{num\_roots}
+%
+% \meta{cvs\_descendant\_root\_list} is a comma delimited list of integers indicating which simple root can be lowered
+% from this box. The simple roots are numbered from left to right starting at $1$ and ending at \meta{num\_roots}
+%
+%
+% Thus, if the group of interest had $3$ simple roots, each |\dynbox| would have a \meta{cartan\_coefficients} with three entries; that is, it would be a list with three integers as in
+%
+% \begin{center}
+% |1 & 0 & 0|
+% \end{center}
+%
+% and the list \meta{cvs\_descendant\_root\_list} would have at most three entries (but it need not have exactly three entries) with the entries being between $1$ and $3$. The entry $1$ would correspond to the first (left-most) simple root being lowered, the entry $2$ the second simple root, and $3$ the third:
+%
+% \DeleteShortVerb{\|}
+% \begin{center}
+% \begin{picture}(200,70)
+% \put(20,40){simple root:}
+% \put(80,40){$\begin{array}{ccc} 1 & 2 & 3 \end{array}$}
+% \put(80,30){$\begin{array}{|ccc|} \hline 1 & 0 & 0 \\ \hline \end{array}$}
+% \end{picture}
+% \end{center}
+% \MakeShortVerb{\|}
+%
+% So, finally, an entry such as
+%
+% \begin{center}
+% |\dynbox{-1 & 0 & 0}{1,3}|
+% \end{center}
+%
+% would specify that the program should draw two lines below the box \DeleteShortVerb{\|} $\begin{array}{|ccc|} \hline 1 & 0 & 0 \\ \hline \end{array}$ \MakeShortVerb{\|}; one for the first simple root, and another for the third simple root. The resulting portion of the diagram would look like
+%
+% \begin{center}
+% \start{dyntree}{3}
+% \dynbox{-1 & 0 & 0}{1,3} \lend
+% \finish{dyntree}
+% \end{center}
+%
+% \makeatletter
+% \vspace{\DYNTREE@levelsep}
+% \makeatother
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
+%\subsection{Quirks}
+% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% There are two quirks with this package, and they are
+% \begin{itemize}
+% \item{if there are multiple Dynkin Tree Diagrams required for your document, you \emph{must} enclose each tree in braces}
+% \item{The lowest state (bottom-most dynbox) must have a non-empty entry in \meta{cvs\_descendant\_root\_list} even though no lines are to be drawn from it. To meet both criteria, place a zero in this spot.}
+% \end{itemize}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
+%\subsection{Examples}
+% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \newcounter{examples}
+% \setcounter{examples}{1}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %
+%\subsubsection{Example \theexamples} \stepcounter{examples}
+% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \begin{verbatim}
+% {
+% \start{dyntree}{2}
+% \dynbox{3 & 0}{1} \lend
+% \dynbox{1 & 1}{1,2} \lend
+% \dynbox{2 & -1}{1}
+% \dynbox{-1 & 2}{1,2} \lend
+% \dynbox{0 & 0}{1,2}
+% \dynbox{-3 & 3}{0,2} \lend
+% \dynbox{1 & -2}{1}
+% \dynbox{-2 & 1}{0,2} \lend
+% \dynbox{-1 & -1}{0,2} \lend
+% \dynbox{0 & -3}{0} \lend
+% \finish{dyntree}
+% }
+% \end{verbatim}
+%
+% {
+% \start{dyntree}{2}
+% \dynbox{3 & 0}{1} \lend
+% \dynbox{1 & 1}{1,2} \lend
+% \dynbox{2 & -1}{1}
+% \dynbox{-1 & 2}{1,2} \lend
+% \dynbox{0 & 0}{1,2}
+% \dynbox{-3 & 3}{0,2} \lend
+% \dynbox{1 & -2}{1}
+% \dynbox{-2 & 1}{0,2} \lend
+% \dynbox{-1 & -1}{0,2} \lend
+% \dynbox{0 & -3}{0} \lend
+% \finish{dyntree}
+% }
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %
+%\subsubsection{Example \theexamples} \stepcounter{examples}
+% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \begin{verbatim}
+% \begin{center}
+% {
+% \start{dyntree}{3}
+% \dynbox{2 & 0 & 0}{1} \lend
+% \dynbox{0 & 1 & 0}{1,2} \lend
+% \dynbox{1 & -1 & 1}{1,3}
+% \dynbox{-2 & 2 & 0}{2} \lend
+% \dynbox{1 & 1 & -1}{1,2}
+% \dynbox{-1 & 0 & 1}{2,3} \lend
+% \dynbox{2 & -1 & 0}{1}
+% \dynbox{-1 & 2 & -1}{2}
+% \dynbox{0 & -2 & 2}{3} \lend
+% \dynbox{0 & 0 & 0}{0} \lend
+% \finish{dyntree}
+% }
+% \end{center}
+% \end{verbatim}
+%
+% \begin{center}
+% {
+% \start{dyntree}{3}
+% \dynbox{2 & 0 & 0}{1} \lend
+% \dynbox{0 & 1 & 0}{1,2} \lend
+% \dynbox{1 & -1 & 1}{1,3}
+% \dynbox{-2 & 2 & 0}{2} \lend
+% \dynbox{1 & 1 & -1}{1,2}
+% \dynbox{-1 & 0 & 1}{2,3} \lend
+% \dynbox{2 & -1 & 0}{1}
+% \dynbox{-1 & 2 & -1}{2}
+% \dynbox{0 & -2 & 2}{3} \lend
+% \dynbox{0 & 0 & 0}{0} \lend
+% \finish{dyntree}
+% }
+% \end{center}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %
+%\subsubsection{Example \theexamples} \stepcounter{examples}
+% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \begin{verbatim}
+% This is a $15$ of $SU(5)$
+%
+% \begin{center}
+% {
+% \start{dyntree}{4}
+% \dynbox{2 & 0 & 0 & 0}{1} \lend
+% \dynbox{0 & 1 & 0 & 0}{1,2} \lend
+% \dynbox{1 & -1 & 1 & 0}{1,3}
+% \dynbox{-2 & 2 & 0 & 0}{2} \lend
+% \dynbox{1 & 0 & -1 & 0}{1,4}
+% \dynbox{-1 & 0 & 1 & 0}{2,3} \lend
+% \dynbox{1 & 0 & 0 &-1}{1}
+% \dynbox{-1 & 1 & -1 & 1}{2,4}
+% \dynbox{0 & -2 & 2 & 0}{3} \lend
+% \dynbox{-1 & 1 & 0 & -1}{2}
+% \dynbox{0 & -1 & 0 & 1}{3,4} \lend
+% \dynbox{0 & -1 & 1 & -1}{3}
+% \dynbox{0 & 0 & -2 & 2}{4} \lend
+% \dynbox{0 & 0 & -1 & 0}{4} \lend
+% \dynbox{0 & 0 & 0 & -2}{0} \lend
+% \finish{dyntree}
+% }
+% \end{center}
+% \end{verbatim}
+%
+% This is a $15$ of $SU(5)$
+%
+% \begin{center}
+% {
+% \start{dyntree}{4}
+% \dynbox{2 & 0 & 0 & 0}{1} \lend
+% \dynbox{0 & 1 & 0 & 0}{1,2} \lend
+% \dynbox{1 & -1 & 1 & 0}{1,3}
+% \dynbox{-2 & 2 & 0 & 0}{2} \lend
+% \dynbox{1 & 0 & -1 & 0}{1,4}
+% \dynbox{-1 & 0 & 1 & 0}{2,3} \lend
+% \dynbox{1 & 0 & 0 &-1}{1}
+% \dynbox{-1 & 1 & -1 & 1}{2,4}
+% \dynbox{0 & -2 & 2 & 0}{3} \lend
+% \dynbox{-1 & 1 & 0 & -1}{2}
+% \dynbox{0 & -1 & 0 & 1}{3,4} \lend
+% \dynbox{0 & -1 & 1 & -1}{3}
+% \dynbox{0 & 0 & -2 & 2}{4} \lend
+% \dynbox{0 & 0 & -1 & 0}{4} \lend
+% \dynbox{0 & 0 & 0 & -2}{0} \lend
+% \finish{dyntree}
+% }
+% \end{center}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %
+%\subsubsection{Example \theexamples} \stepcounter{examples}
+% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \begin{verbatim}
+% \begin{center}
+% {
+% \start{dyntree}{2}
+% \dynbox{0 & 2}{2} \lend
+% \dynbox{1 & 0}{1,2} \lend
+% \dynbox{2 & -2}{1}
+% \dynbox{-1 & 1}{2} \lend
+% \dynbox{0 & -1}{1} \lend
+% \dynbox{-2 & 0}{0} \lend
+% \finish{dyntree}
+% }
+% \end{center}
+% \end{verbatim}
+%
+% \begin{center}
+% {
+% \start{dyntree}{2}
+% \dynbox{0 & 2}{2} \lend
+% \dynbox{1 & 0}{1,2} \lend
+% \dynbox{2 & -2}{1}
+% \dynbox{-1 & 1}{2} \lend
+% \dynbox{0 & -1}{1} \lend
+% \dynbox{-2 & 0}{0} \lend
+% \finish{dyntree}
+% }
+% \end{center}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%\section{Implementation}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
+%\subsection{Variables and Constants}
+% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% The \textsf{dyntree} package utilizes a picture environment to create the tree. To do this it requires several
+% constant length values, as well as calculated length values and counters. These are define below.
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %
+%\subsubsection{Cartan Coefficients Box Variables}
+% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% The first thing to do is declare the length variables associated with a cartan coefficients box---dynbox for short.
+% These variables are
+%
+% \begin{tabular}{lp{.5\textwidth}}
+% |\DYNTREE@widechar| & the width of a $-1$ \\
+% |\DYNTREE@thinchar| & the width of a $1$ \\
+% |\DYNTREE@cartancoefwidth| & the width of a cartan coefficient (a combination of $-1$ and $1$) \\
+% |\DYNTREE@marginwidth| & the width of the margin of the cartan coefficients box \\
+% |\DYNTREE@colsepwidth| & the width between columns of the cartan coefficients box \\
+% |\DYNTREE@dynboxheight| & the height (baseline to top) of the cartan coefficients box \\
+% |\DYNTREE@dynboxdepth| & the depth (baseline to bottom) of the cartan coefficients box \\
+% |\DYNTREE@dynboxvlen| & the full vertical height of a cartan coefficients box \\
+% |\DYNTREE@dynboxwidth| & the width of a dynbox (calculated based on numroots) \\
+% \end{tabular}
+%
+% \begin{macrocode}
+\newlength{\DYNTREE@widechar}%
+\newlength{\DYNTREE@thinchar}%
+\newlength{\DYNTREE@cartancoefwidth}%
+\newlength{\DYNTREE@marginwidth}%
+\newlength{\DYNTREE@colsepwidth}%
+\newlength{\DYNTREE@dynboxheight}%
+\newlength{\DYNTREE@dynboxdepth}%
+\newlength{\DYNTREE@dynboxvlen}%
+\newlength{\DYNTREE@dynboxwidth}%
+% \end{macrocode}
+%
+% Now that they are declared, initialize the ``exterior" ones
+%
+% \begin{macrocode}
+\settowidth{\DYNTREE@widechar}{$-1$}%
+\settowidth{\DYNTREE@thinchar}{$1$}%
+\setlength{\DYNTREE@cartancoefwidth}%
+ {\DYNTREE@widechar*1/2 + \DYNTREE@thinchar*1/2}%
+\settowidth{\DYNTREE@marginwidth}%
+ {$\begin{array}{|c|}\hline 1 \\ \hline \end{array}$}%
+ \addtolength{\DYNTREE@marginwidth}{-\DYNTREE@thinchar}%
+\settowidth{\DYNTREE@colsepwidth}%
+ {$\begin{array}{|cc|}\hline 1 & 1 \\ \hline \end{array}$}%
+ \addtolength{\DYNTREE@colsepwidth}{-\DYNTREE@marginwidth - \DYNTREE@thinchar*2}%
+\settoheight{\DYNTREE@dynboxheight}%
+ {$\begin{array}{|c|}\hline 1 \\ \hline \end{array}$}%
+\settodepth{\DYNTREE@dynboxdepth}%
+ {$\begin{array}{|c|}\hline 1 \\ \hline \end{array}$}%
+\setlength{\DYNTREE@dynboxvlen}{\DYNTREE@dynboxheight + \DYNTREE@dynboxdepth}%
+% \end{macrocode}
+%
+% and now for convenience and error testing, print them out
+%
+% \makeatletter
+% \begin{tabular}{rl}
+% widechar: & \the\DYNTREE@widechar \\
+% thinchar: & \the\DYNTREE@thinchar \\
+% cartancoefwidth: & \the\DYNTREE@cartancoefwidth \\
+% marginwidth: & \the\DYNTREE@marginwidth \\
+% colsepwidth: & \the\DYNTREE@colsepwidth \\
+% dynboxheight & \the\DYNTREE@dynboxheight \\
+% dynboxdepth & \the\DYNTREE@dynboxdepth \\
+% dynboxvlen & \the\DYNTREE@dynboxvlen \\
+% \end{tabular}
+% \makeatother
+%
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %
+%\subsubsection{Dynkin Tree Variables}
+% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% These variables are specific to the actual creation of the tree structure.
+%
+% \begin{tabular}{lp{0.55\textwidth}}
+% {\bf \Large counters} \\
+% |DYNTREE@numlevel| & the number of levels in the tree \\
+% |DYNTREE@nextlevel| & the number of the next level \\
+% |DYNTREE@numboxes| & counter for counting number of boxes in a row \\
+% |DYNTREE@nextnumboxes| & counter for counting number of boxes in the next row \\
+% |DYNTREE@target| & used to record the `targeted' array element when sorting \\
+% |DYNTREE@listlen| & the length of the list of descendents \\
+% |DYNTREE@xCoord| & the x coordinate in scaled points \\
+% |DYNTREE@yCoord| & the y coordinate in scaled points \\
+% |DYNTREE@xPos| & the x coordinate in scaled points \\
+% |DYNTREE@yPos| & the y coordinate in scaled points \\
+% |DYNTREE@xComp| & the x coordinate in scaled points \\
+% |DYNTREE@yComp| & the y coordinate in scaled points \\
+% |DYNTREE@leftX| & the left most x coordinate in scaled points \\
+% |DYNTREE@ct| & generic counter \\
+% |DYNTREE@counter| & generic counter \\
+% |DYNTREE@index| & generic counter \\
+% |DYNTREE@root| & the root number \\
+% \end{tabular}
+%
+% \begin{tabular}{lp{0.55\textwidth}}
+% {\bf \Large lengths} \\
+% |\DYNTREE@dynboxsep| & the distance between dynkin boxes \\
+% |\DYNTREE@levelsep| & the distances between each level (from dynkin box bottom to top of next layer's dynbox)
+% \\
+% |\DYNTREE@leftmostX| & the left most x value \\
+% |\DYNTREE@rightmostX| & the right most x value \\
+% |\DYNTREE@unitlen| & the unit length value before altering (to allow it to be restored) \\
+% |\DYNTREE@templen| & temporary length storage \\
+% |\DYNTREE@holdlen| & temporary length storage \\
+% \end{tabular}
+%
+% \begin{tabular}{lp{0.55\textwidth}}
+% {\bf \Large commands} \\
+% |\DYNTREE@treestop| & indicates the point where the gobbler stops reading (to allow \LaTeX to properly
+% read all the data. Its value is |\&\&\&| \\
+% |\DYNTREE@treeend| & indicates the end of the tree. It is in the definition of the gobbler.
+% It has a value of |\%\%\%| \\
+% \end{tabular}
+%
+%
+% \begin{macro}{\lend}
+% \begin{macro}{\dynbox}
+%
+% And there are two external commands:
+%
+% \begin{tabular}{lp{0.75\textwidth}}
+% |\lend| & indicates the end of one tree level. The value is never used: this token is used as
+% a delimiter by the user and the code. Its value, which should never be typed,
+% is |\&\%\&\%| \\
+% |\dynbox| & indicates the start of a dynbox. The value is never used: this token is purely for
+% delimiting the start of the dynbox by the user; it is only defined to satisfy the
+% |\ifthenelse| statement \\
+% \end{tabular}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macrocode}
+\newcounter{DYNTREE@numlevel}%
+\newcounter{DYNTREE@nextlevel}%
+\newcounter{DYNTREE@numboxes}%
+\newcounter{DYNTREE@nextnumboxes}%
+\newcounter{DYNTREE@target}%
+\newcounter{DYNTREE@listlen}%
+\newcounter{DYNTREE@xCoord}%
+\newcounter{DYNTREE@yCoord}%
+\newcounter{DYNTREE@xPos}%
+\newcounter{DYNTREE@yPos}%
+\newcounter{DYNTREE@xComp}%
+\newcounter{DYNTREE@yComp}%
+\newcounter{DYNTREE@leftX}%
+\newcounter{DYNTREE@ct}%
+\newcounter{DYNTREE@counter}%
+\newcounter{DYNTREE@index}%
+\newcounter{DYNTREE@root}%
+\newlength{\DYNTREE@dynboxsep}%
+\newlength{\DYNTREE@levelsep}%
+\newlength{\DYNTREE@leftmostX}%
+\newlength{\DYNTREE@rightmostX}%
+\newlength{\DYNTREE@unitlen}%
+\newlength{\DYNTREE@templen}%
+\newlength{\DYNTREE@holdlen}%
+\newcommand{\DYNTREE@treestop}{\&\&\&}%
+\newcommand{\DYNTREE@treeend}{\%\%\%}%
+\newcommand{\lend}{\&\%\&\%}%
+\newcommand{\dynbox}{}%
+% \end{macrocode}
+%
+% Now that they are declared, initialize the ``exterior" ones
+%
+% \begin{macrocode}
+\setlength{\DYNTREE@dynboxsep}{\DYNTREE@colsepwidth}%
+\setlength{\DYNTREE@levelsep}{1cm}%
+% \end{macrocode}
+%
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
+%\subsection{The Tree Eater}
+% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% While the dynkin tree structure resembles that of an environment, it actually consists of a \LaTeX command that
+% consumes the data, sorts it, and displays the proper items. The basis of this consumption are several
+% ``gobblers"---the first of which eats the tree one level at a time
+%
+%
+% \begin{macrocode}
+\def\DYNTREE@gobbletree#1\lend#2\DYNTREE@treeend{%
+% \end{macrocode}
+% Before the level can be processed, several things must be adjusted. First, since a new level is beginning
+% the counter must be incremented by one
+% \begin{macrocode}
+\addtocounter{DYNTREE@numlevel}{1}%
+% \end{macrocode}
+% initialize the number of boxes for this level
+% \begin{macrocode}
+\setcounter{DYNTREE@numboxes}{0}%
+% \end{macrocode}
+% initialize the number of boxes for the next level
+% \begin{macrocode}
+\setcounter{DYNTREE@nextnumboxes}{0}%
+% \end{macrocode}
+% Process the level:
+% \begin{macrocode}
+\DYNTREE@gobbledynboxes#1\lend%
+% \end{macrocode}
+% \iffalse
+% \makeatletter
+% \begin{tabular}{lp{.55\textwidth}}
+% \multicolumn{2}{l}{{\bf ERROR CHECK}} \\
+% level: & \arabic{DYNTREE@numlevel} \\
+% boxes: & \arabic{DYNTREE@numboxes} \\
+% \end{tabular}
+% \makeatother
+% \fi
+% Record the number of boxes for this level
+% \begin{macrocode}
+\expandafter\xdef%
+ \csname DYNTREE@level@\roman{DYNTREE@numlevel}@numbox\endcsname%
+ {\arabic{DYNTREE@numboxes}}%
+% \end{macrocode}
+% Now check for the signal to stop processing
+% \begin{macrocode}
+\ifthenelse{ \equal{#2}{\DYNTREE@treestop} }%
+ {%
+% \end{macrocode}
+% The End---just do nothing
+% \begin{macrocode}
+ }%
+% Else
+ {%
+% \end{macrocode}
+% continue processing levels until the end of the tree
+% \begin{macrocode}
+ \DYNTREE@gobbletree#2\DYNTREE@treeend%
+ }%
+}%
+% \end{macrocode}
+%
+%
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
+%\subsection{The Box Eater}
+% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% The second ``gobbler" eats the boxes one by one:
+%
+% \begin{macrocode}
+\def\DYNTREE@gobbledynboxes#1\dynbox#2#3#4{%
+% \end{macrocode}
+% increment the number of boxes
+% \begin{macrocode}
+\addtocounter{DYNTREE@numboxes}{1}%
+% \end{macrocode}
+% \iffalse
+%! boxnum: \arabic{DYNTREE@numboxes}
+% \fi
+% Store the boxes for this level in registers
+% \begin{macrocode}
+\expandafter\newbox%
+ \csname DYNTREE@box@\roman{DYNTREE@numlevel}@\roman{DYNTREE@numboxes}\endcsname%
+\expandafter\setbox%
+ \csname DYNTREE@box@\roman{DYNTREE@numlevel}@\roman{DYNTREE@numboxes}\endcsname=%
+ \hbox{$\begin{array}{|*{\DYNTREE@numroots}{c}|}\hline #2 \\ \hline \end{array}$}%
+% \end{macrocode}
+% Calculate the X value for each descendent and place in sorted list
+%
+% * Get the length of the list
+% \begin{macrocode}
+\listlenstore{DYNTREE@listlen}{#3}%
+\expandafter\xdef
+ \csname DYNTREE@childline@\roman{DYNTREE@numlevel}@\roman{DYNTREE@numboxes}@boxnum\endcsname%
+ {\arabic{DYNTREE@listlen}}%
+\ifthenelse{\value{DYNTREE@listlen} > \DYNTREE@numroots}%
+ {%
+ \PackageError{dyntree}%
+ {%
+ Length of descendant of \arabic{DYNTREE@numboxes}%
+ on level \arabic{DYNTREE@numlevel} exceeds number of roots%
+ (\DYNTREE@numroots)%
+ }%
+ }%
+% Else
+ {}%
+% \end{macrocode}
+% * store the list in a temp variable for convenience in typing, store it more permanently for use later on.
+% \begin{macrocode}
+\liststore{#3}{DYNTREE@templist@}%
+\liststore{#3}%
+ {DYNTREE@childlist@\roman{DYNTREE@numlevel}@\roman{DYNTREE@numboxes}@}%
+% \end{macrocode}
+% * go through the list and generate the sorted 'array' |DYNTREE@level@|\meta{level}|@|\meta{boxnum}|@X|
+% \begin{macrocode}
+\setcounter{DYNTREE@ct}{1}%
+\whiledo{ \NOT \(\value{DYNTREE@ct} > \value{DYNTREE@listlen}\) \AND
+ \NOT\(\value{DYNTREE@ct} > \DYNTREE@numroots\) }%
+ {%
+% \end{macrocode}
+ % need to store the `root' value in a counter to retrieve the data
+% \begin{macrocode}
+ \setcounter{DYNTREE@counter}{\csname DYNTREE@templist@\roman{DYNTREE@ct}\endcsname}%
+% \end{macrocode}
+ % check that the number submitted is within the allowed range
+% \begin{macrocode}
+ \ifthenelse{ \(\value{DYNTREE@counter} > \DYNTREE@numroots\) \OR
+ \(\value{DYNTREE@counter} < 1\) }%
+ {%
+ \ifthenelse{\value{DYNTREE@counter} = 0}%
+ {%
+% \end{macrocode}
+ % Do nothing - this is the last level
+% \begin{macrocode}
+ }%
+ % Else
+ {%
+ \PackageError{dyntree}%
+ {%
+ Descendant root of \arabic{DYNTREE@numboxes} on level%
+ \arabic{DYNTREE@numlevel} out of bounds%
+ (\arabic{DYNTREE@counter} > \DYNTREE@numroots)%
+ }%
+ }%
+ }%
+ % Else
+ {%
+% \end{macrocode}
+ % temporarily store the length
+% \begin{macrocode}
+ \setlength{\DYNTREE@templen}%
+ {\csname DYNTREE@level@\roman{DYNTREE@numlevel}@\roman{DYNTREE@numboxes}@X\endcsname}%
+ \addtolength{\DYNTREE@templen}%
+ {\csname DYNTREE@rootX@\roman{DYNTREE@counter}\endcsname*(-1)}%
+% \end{macrocode}
+ % adjust the left most length
+% \begin{macrocode}
+ \ifthenelse{\DYNTREE@templen < \DYNTREE@leftmostX}%
+ {%
+ \setlength{\DYNTREE@leftmostX}{\DYNTREE@templen}%
+ }%
+ % Else
+ {}%
+% \end{macrocode}
+ % adjust right most length
+% \begin{macrocode}
+ \setlength{\DYNTREE@holdlen}{\DYNTREE@templen}%
+ \addtolength{\DYNTREE@holdlen}{\DYNTREE@dynboxwidth}%
+ \ifthenelse{ \DYNTREE@holdlen > \DYNTREE@rightmostX }%
+ {%
+ \setlength{\DYNTREE@rightmostX}{\DYNTREE@holdlen}%
+ }%
+ % Else
+ {}%
+% \end{macrocode}
+ % now store the x value for the line
+% \begin{macrocode}
+ \setlength{\DYNTREE@holdlen}%
+ {\expandafter\csname DYNTREE@dynboxX@\roman{DYNTREE@counter}\endcsname}%
+ \addtolength{\DYNTREE@holdlen}{\DYNTREE@templen}%
+ \setcounter{DYNTREE@xPos}{\DYNTREE@holdlen}%
+% \end{macrocode}
+ % \iffalse
+ %! \begin{tabular}{cc}
+ %! rootX.\roman{DYNTREE@counter} & \csname DYNTREE@rootX@\roman{DYNTREE@counter}\endcsname \\
+ %! DYNTREE@numlevel: & \arabic{DYNTREE@numlevel} \\
+ %! numboxes: & \arabic{DYNTREE@numboxes} \\
+ %! templen: & \the\DYNTREE@templen \\
+ %! \end{tabular}
+ %!
+ % \fi
+ % |counter| has served its purpose and may be used in another context
+ %
+ % add the length to the sorted 'array'
+ %
+ % * initialize the counter to the END of the array
+% \begin{macrocode}
+ \setcounter{DYNTREE@counter}{\value{DYNTREE@nextnumboxes}}%
+% \end{macrocode}
+ % * get the value of the next level
+% \begin{macrocode}
+ \setcounter{DYNTREE@nextlevel}{\value{DYNTREE@numlevel} + 1}%
+% \end{macrocode}
+ % * Check for array elements
+% \begin{macrocode}
+ \ifthenelse{\value{DYNTREE@counter} = 0}%
+ {%
+% \end{macrocode}
+ % set the first element as the length
+% \begin{macrocode}
+ \expandafter\xdef%
+ \csname DYNTREE@level@\roman{DYNTREE@nextlevel}@i@X\endcsname%
+ {\the\DYNTREE@templen}%
+% \end{macrocode}
+ % increment the number of elements
+% \begin{macrocode}
+ \addtocounter{DYNTREE@nextnumboxes}{1}%
+ }%
+ % Else
+ {%
+% \end{macrocode}
+ % there is at least one element
+% \begin{macrocode}
+ \edef\DYNTREE@temparray%
+ {\csname DYNTREE@level@\roman{DYNTREE@nextlevel}@\roman{DYNTREE@counter}@X\endcsname}%
+ \edef\DYNTREE@tempinsert{\the\DYNTREE@templen}%
+% \end{macrocode}
+ % \iffalse
+ %! \begin{tabular}{cc}
+ %! nextnumboxes: & \arabic{DYNTREE@nextnumboxes} \\
+ %! nextlevel: & \arabic{DYNTREE@nextlevel} \\
+ %! counter: & \arabic{DYNTREE@counter} \\
+ %! temparray: & \DYNTREE@temparray \\
+ %! level\&\roman{DYNTREE@nextlevel}\&\roman{DYNTREE@counter}\&X
+ %! &
+ %! \csname DYNTREE@level@\roman{DYNTREE@nextlevel}@\roman{DYNTREE@counter}@X\endcsname
+ %! \\
+ %! tempinsert: & \DYNTREE@tempinsert \\
+ %! \end{tabular}
+ % \fi
+ % find where element should be inserted
+% \begin{macrocode}
+ \whiledo{ \(\value{DYNTREE@counter} > 0\) \AND
+ \lengthtest{\DYNTREE@tempinsert < \DYNTREE@temparray} }%
+ {%
+ \edef\DYNTREE@temparray%
+ {\csname DYNTREE@level@\roman{DYNTREE@nextlevel}@\roman{DYNTREE@counter}@X\endcsname}%
+ \addtocounter{DYNTREE@counter}{-1}%
+ }%
+% \end{macrocode}
+ % the thing needs to be inserted at \value{DYNTREE@counter} + 1
+% \begin{macrocode}
+ \setcounter{DYNTREE@target}{\value{DYNTREE@counter} + 1}%
+% \end{macrocode}
+ % \iffalse
+ %! \begin{tabular}{cc}
+ %! target: \arabic{DYNTREE@target} \\
+ %! temparray: & \DYNTREE@temparray \\
+ %! tempinsert: & \DYNTREE@tempinsert \\
+ %! \end{tabular}
+ %!
+ %!
+ % \fi
+ % if they aren't equal, move from target to nextnumboxes up to target+1 to nextnumboxes+1
+% \begin{macrocode}
+ \ifthenelse{ \NOT \lengthtest{\DYNTREE@tempinsert = \DYNTREE@temparray} }%
+ {%
+ \setcounter{DYNTREE@counter}{\value{DYNTREE@nextnumboxes} + 1}%
+ \whiledo{ \value{DYNTREE@counter} > \value{DYNTREE@target} }%
+ {%
+% \end{macrocode}
+ % get the value in the array spot one before
+% \begin{macrocode}
+ \addtocounter{DYNTREE@counter}{-1}%
+ \edef\DYNTREE@tempswap%
+ {%
+ \csname DYNTREE@level@\roman{DYNTREE@nextlevel}@\roman{DYNTREE@counter}@X\endcsname%
+ }%
+% \end{macrocode}
+ % store this value in the next array spot
+% \begin{macrocode}
+ \addtocounter{DYNTREE@counter}{1}%
+ \expandafter\xdef%
+ \csname DYNTREE@level@\roman{DYNTREE@nextlevel}@\roman{DYNTREE@counter}@X\endcsname%
+ {\DYNTREE@tempswap}%
+ \addtocounter{DYNTREE@counter}{-1}%
+ }%
+% \end{macrocode}
+ % insert the original
+% \begin{macrocode}
+ \expandafter\xdef%
+ \csname DYNTREE@level@\roman{DYNTREE@nextlevel}@\roman{DYNTREE@target}@X\endcsname%
+ {\DYNTREE@tempinsert}%
+% \end{macrocode}
+ % increment the number of boxes in the next level
+% \begin{macrocode}
+ \addtocounter{DYNTREE@nextnumboxes}{1}%
+ }%
+ % Else
+ {%
+% \end{macrocode}
+ % Do nothing
+% \begin{macrocode}
+ }%
+ }%
+ }%
+ \addtocounter{DYNTREE@ct}{1}%
+ }%
+\ifthenelse{\equal{#4}{\lend}}%
+ {%
+ }%
+% Else
+ {%
+% \end{macrocode}
+% % Eat the boxes until there are no more
+% \begin{macrocode}
+ \DYNTREE@gobbledynboxes#4%
+ }%
+}%
+% \end{macrocode}
+%
+%
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
+%\subsection{The Dyntree Environment}
+% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Dynkin Tree Environment
+%
+%
+% \begin{macrocode}
+\def\start#1#2#3\finish#4%
+{%
+\ifthenelse{\equal{#1}{#4} \AND \equal{#4}{dyntree}}%
+ {%
+ \providecommand{\DYNTREE@numroots}{#2}%
+% \end{macrocode}
+ % \iffalse
+ %! \DYNTREE@numroots
+ % \fi
+ % Initialize Interior Dynkin Box Variables
+% \begin{macrocode}
+ \setlength{\DYNTREE@dynboxwidth}
+ {%
+ \DYNTREE@marginwidth +
+ \DYNTREE@cartancoefwidth*\DYNTREE@numroots +
+ \DYNTREE@colsepwidth*(\DYNTREE@numroots-1)
+ }%
+% \end{macrocode}
+ % Initialize Interior Dynkin Tree Variables
+% \begin{macrocode}
+ \setlength{\DYNTREE@leftmostX}{0pt}%
+ \setlength{\DYNTREE@rightmostX}{\DYNTREE@dynboxwidth}%
+% \end{macrocode}
+ % the highest left starts at zero, so initialize this value
+% \begin{macrocode}
+ \expandafter\gdef\csname DYNTREE@level@i@i@X\endcsname{0pt}%
+% \end{macrocode}
+ % There are no levels, so initialize |numlevel| to zero
+% \begin{macrocode}
+ \setcounter{DYNTREE@numlevel}{0}%
+% \end{macrocode}
+ % Determine the root lines and dynkin box offsets
+% \begin{macrocode}
+ \setcounter{DYNTREE@ct}{1}%
+ \whiledo{\NOT \(\value{DYNTREE@ct}>\DYNTREE@numroots\)}%
+ {%
+% \end{macrocode}
+ % Calculate the length and store it in a temporary length
+% \begin{macrocode}
+ \setlength{\DYNTREE@templen}%
+ {%
+ (\DYNTREE@dynboxwidth + \DYNTREE@dynboxsep)*\value{DYNTREE@ct}%
+ -(\DYNTREE@dynboxwidth + \DYNTREE@dynboxsep)*1/2%
+ -(\DYNTREE@dynboxwidth + \DYNTREE@dynboxsep)*\DYNTREE@numroots/2%
+ }%
+% \end{macrocode}
+ % \iffalse
+ %! ct: \arabic{DYNTREE@ct}
+ %! templen: \the\DYNTREE@templen
+ % \fi
+ % store the actual length in a command
+% \begin{macrocode}
+ \expandafter\xdef\csname DYNTREE@rootX@\roman{DYNTREE@ct}\endcsname%
+ {\the\DYNTREE@templen}%
+% \end{macrocode}
+ % Calculate the dynkin box x offset and store it in a temporary length
+% \begin{macrocode}
+ \setlength{\DYNTREE@templen}%
+ {%
+ \DYNTREE@dynboxwidth/2/\DYNTREE@numroots +
+ \DYNTREE@dynboxwidth*(\value{DYNTREE@ct}-1)/\DYNTREE@numroots
+ }%
+% \end{macrocode}
+ % store the actual length in a command
+% \begin{macrocode}
+ \expandafter\xdef\csname DYNTREE@dynboxX@\roman{DYNTREE@ct}\endcsname%
+ {\the\DYNTREE@templen}%
+% \end{macrocode}
+ % \iffalse
+ % Print the Lengths
+ %! DYNTREE@rootX@\roman{DYNTREE@ct}: \expandafter\csname DYNTREE@rootX@\roman{DYNTREE@ct}\endcsname
+ %!
+ %! DYNTREE@dynboxX@\roman{DYNTREE@ct}: \expandafter\csname DYNTREE@dynboxX@\roman{DYNTREE@ct}\endcsname
+ % \fi
+% \begin{macrocode}
+ \addtocounter{DYNTREE@ct}{1}%
+ }%
+% \end{macrocode}
+ % \iffalse
+ % dynboxwidth: \the\DYNTREE@dynboxwidth
+ % \fi
+ % Eat the tree
+% \begin{macrocode}
+ \DYNTREE@gobbletree#3\DYNTREE@treestop\DYNTREE@treeend%
+% \end{macrocode}
+ % \iffalse
+ %! numlevels: \arabic{DYNTREE@numlevel}
+ % \fi
+ % Now the data has been stored, Draw The Tree:
+ %
+ % store the current unit length to restore when finished
+% \begin{macrocode}
+ \setlength{\DYNTREE@unitlen}{\unitlength}%
+ \setlength{\unitlength}{1sp}%
+% \end{macrocode}
+ % get the width of the picture
+% \begin{macrocode}
+ \setcounter{DYNTREE@xCoord}{\DYNTREE@rightmostX - \DYNTREE@leftmostX}%
+% \end{macrocode}
+ % store the leftmost point as a counter
+% \begin{macrocode}
+ \setcounter{DYNTREE@leftX}{\DYNTREE@leftmostX}%
+% \end{macrocode}
+ % get the height of the picture
+% \begin{macrocode}
+ \setcounter{DYNTREE@yCoord}%
+ {%
+ \DYNTREE@dynboxvlen*\value{DYNTREE@numlevel} +
+ \DYNTREE@levelsep*(\value{DYNTREE@numlevel} - 1)
+ }%
+ \begin{picture}%
+ (\arabic{DYNTREE@xCoord},\arabic{DYNTREE@yCoord})%
+ (\value{DYNTREE@leftX},0)%
+ \setcounter{DYNTREE@ct}{1}%
+ \whiledo{\NOT \(\value{DYNTREE@ct} > \value{DYNTREE@numlevel}\)}%
+ {%
+ \setcounter{DYNTREE@counter}{1}%
+% \end{macrocode}
+ % get the y coordinate as a length
+% \begin{macrocode}
+ \setlength{\DYNTREE@templen}%
+ {%
+ \DYNTREE@dynboxvlen*\value{DYNTREE@numlevel}
+ - \DYNTREE@dynboxvlen*\value{DYNTREE@ct}
+ + \DYNTREE@levelsep*\value{DYNTREE@numlevel}
+ - \DYNTREE@levelsep*\value{DYNTREE@ct}
+ + \DYNTREE@dynboxdepth
+ }%
+% \end{macrocode}
+ % convert the length to an integer in scaled points (sp)
+% \begin{macrocode}
+ \setcounter{DYNTREE@yCoord}{\DYNTREE@templen}%
+ \def\DYNTREE@tempboxnum{\csname DYNTREE@level@\roman{DYNTREE@ct}@numbox\endcsname}%
+ \whiledo{\NOT \( \value{DYNTREE@counter} > \DYNTREE@tempboxnum \)}%
+ {%
+% \end{macrocode}
+ % grab the value of the x coordinate (it's a length but not stored as one)
+% \begin{macrocode}
+ \xdef\DYNTREE@tempxCoord%
+ {%
+ \expandafter%
+ \csname DYNTREE@level@\roman{DYNTREE@ct}@\roman{DYNTREE@counter}@X\endcsname%
+ }%
+% \end{macrocode}
+ % convert x coordinate to a length
+% \begin{macrocode}
+ \setlength{\DYNTREE@holdlen}{\DYNTREE@tempxCoord}%
+% \end{macrocode}
+ % convert length to an integer in scaled points (sp)
+% \begin{macrocode}
+ \setcounter{DYNTREE@xCoord}{\DYNTREE@holdlen}%
+% \end{macrocode}
+ % place each dynkin box
+% \begin{macrocode}
+ \put(\arabic{DYNTREE@xCoord},\arabic{DYNTREE@yCoord})%
+ {%
+ \expandafter%
+ \copy\csname DYNTREE@box@\roman{DYNTREE@ct}@\roman{DYNTREE@counter}\endcsname%
+ }%
+% \end{macrocode}
+ % go through the descendants and place the lines
+% \begin{macrocode}
+ \setcounter{DYNTREE@listlen}%
+ {%
+ \expandafter%
+ \csname DYNTREE@childline@\roman{DYNTREE@ct}@\roman{DYNTREE@counter}@boxnum\endcsname%
+ }%
+ \setcounter{DYNTREE@index}{1}%
+ \whiledo{\NOT \(\value{DYNTREE@index} > \value{DYNTREE@listlen}\)}%
+ {%
+ \xdef\DYNTREE@childroot%
+ {%
+ \expandafter%
+ \csname DYNTREE@childlist@\roman{DYNTREE@ct}@\roman{DYNTREE@counter}@\roman{DYNTREE@index}\endcsname%
+ }%
+ \ifthenelse{\NOT \DYNTREE@childroot = 0 }%
+ {%
+ \setcounter{DYNTREE@root}{\DYNTREE@childroot}%
+ \setcounter{DYNTREE@xPos}{\value{DYNTREE@xCoord}}%
+ \setcounter{DYNTREE@xComp}{\value{DYNTREE@xCoord}}%
+ \setcounter{DYNTREE@yPos}{\value{DYNTREE@yCoord}}%
+ \setcounter{DYNTREE@yComp}{\value{DYNTREE@yCoord}}%
+ \xdef\DYNTREE@temprootX%
+ {\expandafter\csname DYNTREE@rootX@\roman{DYNTREE@root}\endcsname}%
+ \setlength{\DYNTREE@templen}{\DYNTREE@temprootX}%
+ \addtocounter{DYNTREE@xPos}{\DYNTREE@templen*(-1)}%
+ \xdef\DYNTREE@dynoffset%
+ {\expandafter\csname DYNTREE@dynboxX@\roman{DYNTREE@root}\endcsname}%
+ \setlength{\DYNTREE@templen}{\DYNTREE@dynoffset}%
+ \addtocounter{DYNTREE@xPos}{\DYNTREE@templen}%
+ \addtocounter{DYNTREE@xComp}{\DYNTREE@templen}%
+ \setlength{\DYNTREE@templen}{1pt}% for frame thickness
+ \addtocounter{DYNTREE@yPos}%
+ {\DYNTREE@levelsep*(-1) - \DYNTREE@dynboxdepth - \DYNTREE@templen}%
+ \addtocounter{DYNTREE@yComp}{\DYNTREE@dynboxdepth*(-1) - \DYNTREE@templen}%
+ \put(0,0)%
+ {%
+ \drawline%
+ (\arabic{DYNTREE@xComp},\arabic{DYNTREE@yComp})%
+ (\arabic{DYNTREE@xPos},\arabic{DYNTREE@yPos})%
+ }%
+ }%
+ % Else
+ {%
+ }%
+ \addtocounter{DYNTREE@index}{1}%
+ }%
+ \addtocounter{DYNTREE@counter}{1}%
+ }%
+ \addtocounter{DYNTREE@ct}{1}%
+ }%
+ \end{picture}%
+% \end{macrocode}
+ % restore the unit length to original value
+% \begin{macrocode}
+ \setlength{\unitlength}{\DYNTREE@unitlen}%
+% \end{macrocode}
+% \iffalse
+ %!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Error Check BEGIN
+ %! \setcounter{DYNTREE@ct}{1}
+ %! \whiledo{\NOT \(\value{DYNTREE@ct} > \value{DYNTREE@numlevel}\)}%
+ %! {%
+ %! \setcounter{act}{1}%
+ %! \def\DYNTREE@tempboxnum{\csname DYNTREE@level@\roman{DYNTREE@ct}@numbox\endcsname}
+ %! \whiledo{\NOT \( \value{act} > \DYNTREE@tempboxnum \)}%
+ %! {%
+ %! level.\roman{DYNTREE@ct}.\roman{act}.x: \csname DYNTREE@level@\roman{DYNTREE@ct}@\roman{act}@X\endcsname;
+ %!
+ %! \addtocounter{act}{1}
+ %! }
+ %! \addtocounter{DYNTREE@ct}{1}%
+ %! }%
+ %!
+ %!
+ %! \setcounter{DYNTREE@ct}{1}%
+ %! \whiledo{\NOT \(\value{DYNTREE@ct}>\value{DYNTREE@numlevel}\)}%
+ %! {%
+ %! \setcounter{act}{1}%
+ %! \def\DYNTREE@tempboxnum{\csname DYNTREE@level@\roman{DYNTREE@ct}@numbox\endcsname}%
+ %! \whiledo{\NOT \(\value{act}>\DYNTREE@tempboxnum\)}%
+ %! {%
+ %! level: \arabic{DYNTREE@ct}, box: \arabic{act};
+ %! \expandafter\copy\csname DYNTREE@box@\roman{DYNTREE@ct}@\roman{act}\endcsname
+ %!
+ %! \addtocounter{act}{1}%
+ %! }%
+ %! \addtocounter{DYNTREE@ct}{1}%
+ %! }%
+ %!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Error Check END
+% \fi
+% \begin{macrocode}
+ }%
+% Else
+ {%
+ \PackageError{dyntree}{Invalid start(#1)/finish(#4) call}%
+ }%
+}%
+% \end{macrocode}
+%
+%
+% \Finale
+\endinput
diff --git a/macros/latex/contrib/dyntree/dyntree.ins b/macros/latex/contrib/dyntree/dyntree.ins
index 14835853a3..04fa242da9 100644
--- a/macros/latex/contrib/dyntree/dyntree.ins
+++ b/macros/latex/contrib/dyntree/dyntree.ins
@@ -1,40 +1,40 @@
-%%
-%% Copyright (C) 2006 by nsetzer
-%%
-%% This file may be distributed and/or modified under the
-%% conditions of the GNU Lesser General Product License
-%%
-
-\input docstrip.tex
-
-\keepsilent
-
-\usedir{tex/latex/dyntree}
-
-\preamble
-
-This is a generated file
-
-This file may be distributed and/or modified under the
-conditions of the GNU Lesser General Product License
-
-\endpreamble
-
-
-\generate{\file{dyntree.sty}{\from{dyntree.dtx}{package}}}
-
-\obeyspaces
-\Msg{****************************************************}
-\Msg{* *}
-\Msg{* To finish the installation you have to move the *}
-\Msg{* following file into a directory searched by TeX: *}
-\Msg{* *}
-\Msg{* dyntree.sty *}
-\Msg{* *}
-\Msg{* To produce the documentation run the file *}
-\Msg{* dyntree.dtx through LaTeX. *}
-\Msg{* *}
-\Msg{* *}
-\Msg{****************************************************}
-
-\endbatchfile \ No newline at end of file
+%%
+%% Copyright (C) 2006-2023 by nsetzer
+%%
+%% This file may be distributed and/or modified under the
+%% conditions of the GNU Lesser General Public License.
+%%
+
+\input docstrip.tex
+
+\keepsilent
+
+\usedir{tex/latex/dyntree}
+
+\preamble
+
+This is a generated file
+
+This file may be distributed and/or modified under the
+conditions of the GNU Lesser General Public License.
+
+\endpreamble
+
+
+\generate{\file{dyntree.sty}{\from{dyntree.dtx}{package}}}
+
+\obeyspaces
+\Msg{****************************************************}
+\Msg{* *}
+\Msg{* To finish the installation you have to move the *}
+\Msg{* following file into a directory searched by TeX: *}
+\Msg{* *}
+\Msg{* dyntree.sty *}
+\Msg{* *}
+\Msg{* To produce the documentation run the file *}
+\Msg{* dyntree.dtx through LaTeX. *}
+\Msg{* *}
+\Msg{* *}
+\Msg{****************************************************}
+
+\endbatchfile
diff --git a/macros/latex/contrib/forloop/README b/macros/latex/contrib/forloop/README
index 4e2566ce98..9a2398e234 100644
--- a/macros/latex/contrib/forloop/README
+++ b/macros/latex/contrib/forloop/README
@@ -1,30 +1,31 @@
-Description
------------
-
-The forloop package provides the command \forloop for the user.
-
-
-Installation
-------------
-
-To install this package, run forloop.ins through LaTeX. This will generate
-a file called forloop.sty. Put this file somewhere where LaTeX will find
-it---for instance localtexmf/tex/latex/forloop/ (note that you will need
-to create the folder forloop).
-
-If you are using MikTeX, you then need to refresh the file name database
-by using MikTeX Options
-
-
-License
--------
-
-This pacakge is released under the GNU Lesser General Public License. See
-http://www.gnu.org/licenses/licenses.html#LGPL for more details.
-
-Contact
--------
-
-Any bugs may be reported to the author by sending an email to the address with
-the first part being nsetzer, then an at sign, the next part is umd, and
-finally it ends in dot edu. \ No newline at end of file
+Description
+-----------
+
+The forloop package provides the command \forloop for the user.
+
+
+Installation
+------------
+
+To install this package, run forloop.ins through LaTeX. This will generate
+a file called forloop.sty. Put this file somewhere where LaTeX will find
+it---for instance localtexmf/tex/latex/forloop/ (note that you will need
+to create the folder forloop).
+
+If you are using MikTeX, you then need to refresh the file name database
+by using MikTeX Options
+
+
+License
+-------
+
+This package is released under the GNU Lesser General Public License. See
+https://www.gnu.org/licenses/licenses.html#LGPL for more details.
+
+Contact
+-------
+
+Any bugs may be reported to the author by sending an email to the
+address with the first part being "latex", a dash, then "inquiries",
+then an at sign, the next part is nsetzer, and finally it ends in dot com.
+
diff --git a/macros/latex/contrib/forloop/forloop.dtx b/macros/latex/contrib/forloop/forloop.dtx
index 45214ff9df..0da5a2c649 100644
--- a/macros/latex/contrib/forloop/forloop.dtx
+++ b/macros/latex/contrib/forloop/forloop.dtx
@@ -1,144 +1,146 @@
-% \iffalse
-%
-%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
-%<package>\ProvidesPackage{forloop}
-%<package> [2006/09/18 v3.0 For Loops for LaTeX]
-%<package>\RequirePackage{ifthen}
-%
-%
-%<*driver>
-\documentclass{ltxdoc}
-\usepackage{forloop}
-\EnableCrossrefs
-\CodelineIndex
-\RecordChanges
-\begin{document}
-\DocInput{forloop.dtx}
-\end{document}
-%</driver>
-% \fi
-%
-% \iffalse meta-comment
-% remove this comment to get a checksum
-% \CheckSum{0}
-% \fi
-%
-%% \CharacterTable
-%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-%% Digits \0\1\2\3\4\5\6\7\8\9
-%% Exclamation \! Double quote \" Hash (number) \#
-%% Dollar \$ Percent \% Ampersand \&
-%% Acute accent \' Left paren \( Right paren \)
-%% Asterisk \* Plus \+ Comma \,
-%% Minus \- Point \. Solidus \/
-%% Colon \: Semicolon \; Less than \<
-%% Equals \= Greater than \> Question mark \?
-%% Commercial at \@ Left bracket \[ Backslash \\
-%% Right bracket \] Circumflex \^ Underscore \_
-%% Grave accent \` Left brace \{ Vertical bar \|
-%% Right brace \} Tilde \~}
-%
-% \changes{v1.0}{2006/09/17}{Initial Release}
-% \changes{v2.0}{2006/09/18}{Re-wrote forloop command after discovering that whiledo took too many resources}
-% \changes{v3.0}{2006/09/18}{total restructure of forloop command to make nested loops work}
-%
-% \GetFileInfo{forloop.sty}
-%
-% \DoNotIndex{\#,\$,\%,\&,\@,\\,\{,\},\^,\_,\~,\ ,\!,\(,\),\,}
-% \DoNotIndex{\@ne,\expandafter}
-% \DoNotIndex{\advance,\begingroup,\catcode,\closein}
-% \DoNotIndex{\newcommand,\renewcommand,\providecommand}
-% \DoNotIndex{\closeout,\day,\def,\edef,\gdef,\let,\empty,\endgroup}
-% \DoNotIndex{\newcounter,\providecounter,\addtocounter,\setcounter,\stepcounter,\value,\arabic}
-% \DoNotIndex{\if,\fi,\ifthenelse,\else,\setboolean,\boolean,\newboolean,\provideboolean,\equal,\AND,\OR,\NOT,\whiledo}
-% \DoNotIndex{\ifcase,\ifcat,\or,\else}
-% \DoNotIndex{\par,\parbox,\mbox,\hbox,\begin,\end,\nabla,\partial}
-% \DoNotIndex{\overline,\bar,\small,\tiny,\mathchoice,\scriptsize,\textrm,\texttt}
-% \DoNotIndex{\alpha,\beta,\gamma,\epsilon,\varepsilon,\delta,\zeta,\eta,\theta,\vartheta,\iota,\kappa,\lambda,\mu,\nu}
-% \DoNotIndex{\xi,\omicron,\pi,\varpi,\rho,\varrho,\sigma,\tau,\upsilon,\phi,\varphi,\chi,\psi,\omega}
-% \DoNotIndex{\Delta,\Gamma,\Theta,\Lambda,\Xi,\Pi,\Sigma,\Phi,\Psi,\Omega}
-% \DoNotIndex{\digamma,\lceil,\rceil,\lfloor,\rfloor,\left,\right,\inp,\inb,\inbr,\inap,\nop}
-% \DoNotIndex{\sum,\prod,\int,\log,\ln,\exp,\sin,\cos,\tan,\csc,\sec,\cot,\arcsin,\arccos,\arctan,\det}
-% \DoNotIndex{\sinh,\cosh,\tanh,\csch,\sech,\coth,\arcsinh,\arccosh,\arctanh}
-% \DoNotIndex{\mod,\max,\min,\gcd,\lcm,\wp,\arg,\dots,\infty,}
-% \DoNotIndex{\frac,\binom,\braket,\@@atop}
-% \DoNotIndex{\cdot,\ldots,\tilde,\times,\dagger,\relax}
-% \DoNotIndex{\mathbb,\roman,\bf,\mathord,\cal,\DeclareMathOperator,\PackageError,\PackageWarning}
-% \DoNotIndex{\csname,\endcsname,\ifx,\ifnum}
-% \DoNotIndex{\mod,\bmod,\pmod,\pod,\operatorname}
-%
-% \title{The \textsf{forloop} package\thanks{This document
-% corresponds to \textsf{forloop}~\fileversion,
-% dated~\filedate.}}
-% \author{nsetzer}
-%
-% \maketitle
-%
-% \setcounter{IndexColumns}{2}
-% \StopEventually{\PrintChanges\PrintIndex}
-%
-% The \textsf{forloop} package defines two commands |\forloop| (preferred usage) and |\forLoop| (deprecated).
-%
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%\section{Implementation}
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% \begin{macro}{\forloop}
-% |\forloop|\oarg{step}\marg{counter}\marg{initial value}\marg{condition}\marg{code}
-%
-% |\newcounter{ct} \forloop{ct}{1}{\value{ct} < 10}{\arabic{ct} }|
-%
-% \newcounter{ct} \forloop{ct}{1}{\value{ct} < 10}{\arabic{ct} }
-% \begin{macrocode}
-\newcommand{\forloop}[5][1]%
-{%
-\setcounter{#2}{#3}%
-\ifthenelse{#4}%
- {%
- #5%
- \addtocounter{#2}{#1}%
- \forloop[#1]{#2}{\value{#2}}{#4}{#5}%
- }%
-% \end{macrocode}
-% Else
-% \begin{macrocode}
- {%
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\forLoop}
-% |\forLoop|\oarg{step}\marg{start}\marg{stop}\marg{counter name}\marg{code}
-% \begin{macrocode}
-\newcommand{\forLoop}[5][1]
-{%
-\setcounter{#4}{#2}%
-\ifthenelse{ \value{#4}<#3 }%
- {%
- #5%
- \addtocounter{#4}{#1}%
- \forLoop[#1]{\value{#4}}{#3}{#4}{#5}%
- }%
-% Else
- {%
- \ifthenelse{\value{#4}=#3}%
- {%
- #5%
- }%
- % Else
- {}%
- }%
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-% \Finale
-\endinput \ No newline at end of file
+% \iffalse
+%
+%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<package>\ProvidesPackage{forloop}
+%<package> [2023/05/03 v3.0 For Loops for LaTeX]
+%<package>\RequirePackage{ifthen}
+%
+% Update on 2023/05/03 purely to clarify the license; no code changes.
+% This package is released under the GNU LGPL.
+%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{forloop}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\begin{document}
+\DocInput{forloop.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \iffalse meta-comment
+% remove this comment to get a checksum
+% \CheckSum{0}
+% \fi
+%
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%
+% \changes{v1.0}{2006/09/17}{Initial Release}
+% \changes{v2.0}{2006/09/18}{Re-wrote forloop command after discovering that whiledo took too many resources}
+% \changes{v3.0}{2006/09/18}{total restructure of forloop command to make nested loops work}
+%
+% \GetFileInfo{forloop.sty}
+%
+% \DoNotIndex{\#,\$,\%,\&,\@,\\,\{,\},\^,\_,\~,\ ,\!,\(,\),\,}
+% \DoNotIndex{\@ne,\expandafter}
+% \DoNotIndex{\advance,\begingroup,\catcode,\closein}
+% \DoNotIndex{\newcommand,\renewcommand,\providecommand}
+% \DoNotIndex{\closeout,\day,\def,\edef,\gdef,\let,\empty,\endgroup}
+% \DoNotIndex{\newcounter,\providecounter,\addtocounter,\setcounter,\stepcounter,\value,\arabic}
+% \DoNotIndex{\if,\fi,\ifthenelse,\else,\setboolean,\boolean,\newboolean,\provideboolean,\equal,\AND,\OR,\NOT,\whiledo}
+% \DoNotIndex{\ifcase,\ifcat,\or,\else}
+% \DoNotIndex{\par,\parbox,\mbox,\hbox,\begin,\end,\nabla,\partial}
+% \DoNotIndex{\overline,\bar,\small,\tiny,\mathchoice,\scriptsize,\textrm,\texttt}
+% \DoNotIndex{\alpha,\beta,\gamma,\epsilon,\varepsilon,\delta,\zeta,\eta,\theta,\vartheta,\iota,\kappa,\lambda,\mu,\nu}
+% \DoNotIndex{\xi,\omicron,\pi,\varpi,\rho,\varrho,\sigma,\tau,\upsilon,\phi,\varphi,\chi,\psi,\omega}
+% \DoNotIndex{\Delta,\Gamma,\Theta,\Lambda,\Xi,\Pi,\Sigma,\Phi,\Psi,\Omega}
+% \DoNotIndex{\digamma,\lceil,\rceil,\lfloor,\rfloor,\left,\right,\inp,\inb,\inbr,\inap,\nop}
+% \DoNotIndex{\sum,\prod,\int,\log,\ln,\exp,\sin,\cos,\tan,\csc,\sec,\cot,\arcsin,\arccos,\arctan,\det}
+% \DoNotIndex{\sinh,\cosh,\tanh,\csch,\sech,\coth,\arcsinh,\arccosh,\arctanh}
+% \DoNotIndex{\mod,\max,\min,\gcd,\lcm,\wp,\arg,\dots,\infty,}
+% \DoNotIndex{\frac,\binom,\braket,\@@atop}
+% \DoNotIndex{\cdot,\ldots,\tilde,\times,\dagger,\relax}
+% \DoNotIndex{\mathbb,\roman,\bf,\mathord,\cal,\DeclareMathOperator,\PackageError,\PackageWarning}
+% \DoNotIndex{\csname,\endcsname,\ifx,\ifnum}
+% \DoNotIndex{\mod,\bmod,\pmod,\pod,\operatorname}
+%
+% \title{The \textsf{forloop} package\thanks{This document
+% corresponds to \textsf{forloop}~\fileversion,
+% dated~\filedate.}}
+% \author{nsetzer}
+%
+% \maketitle
+%
+% \setcounter{IndexColumns}{2}
+% \StopEventually{\PrintChanges\PrintIndex}
+%
+% The \textsf{forloop} package defines two commands |\forloop| (preferred usage) and |\forLoop| (deprecated).
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%\section{Implementation}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \begin{macro}{\forloop}
+% |\forloop|\oarg{step}\marg{counter}\marg{initial value}\marg{condition}\marg{code}
+%
+% |\newcounter{ct} \forloop{ct}{1}{\value{ct} < 10}{\arabic{ct} }|
+%
+% \newcounter{ct} \forloop{ct}{1}{\value{ct} < 10}{\arabic{ct} }
+% \begin{macrocode}
+\newcommand{\forloop}[5][1]%
+{%
+\setcounter{#2}{#3}%
+\ifthenelse{#4}%
+ {%
+ #5%
+ \addtocounter{#2}{#1}%
+ \forloop[#1]{#2}{\value{#2}}{#4}{#5}%
+ }%
+% \end{macrocode}
+% Else
+% \begin{macrocode}
+ {%
+ }%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\forLoop}
+% |\forLoop|\oarg{step}\marg{start}\marg{stop}\marg{counter name}\marg{code}
+% \begin{macrocode}
+\newcommand{\forLoop}[5][1]
+{%
+\setcounter{#4}{#2}%
+\ifthenelse{ \value{#4}<#3 }%
+ {%
+ #5%
+ \addtocounter{#4}{#1}%
+ \forLoop[#1]{\value{#4}}{#3}{#4}{#5}%
+ }%
+% Else
+ {%
+ \ifthenelse{\value{#4}=#3}%
+ {%
+ #5%
+ }%
+ % Else
+ {}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+%
+% \Finale
+\endinput
diff --git a/macros/latex/contrib/forloop/forloop.ins b/macros/latex/contrib/forloop/forloop.ins
index dd7247cfd1..5453649c46 100644
--- a/macros/latex/contrib/forloop/forloop.ins
+++ b/macros/latex/contrib/forloop/forloop.ins
@@ -1,40 +1,40 @@
-%%
-%% Copyright (C) 2005 by nsetzer
-%%
-%% This file may be distributed and/or modified under the
-%% conditions of the Limited General Product License
-%%
-
-\input docstrip.tex
-
-\keepsilent
-
-\usedir{tex/latex/forloop}
-
-\preamble
-
-This is a generated file
-
-This file may be distributed and/or modified under the
-conditions of the Limited General Product License
-
-\endpreamble
-
-
-\generate{\file{forloop.sty}{\from{forloop.dtx}{package}}}
-
-\obeyspaces
-\Msg{****************************************************}
-\Msg{* *}
-\Msg{* To finish the installation you have to move the *}
-\Msg{* following file into a directory searched by TeX: *}
-\Msg{* *}
-\Msg{* forloop.sty *}
-\Msg{* *}
-\Msg{* To produce the documentation run the file *}
-\Msg{* forloop.dtx through LaTeX. *}
-\Msg{* *}
-\Msg{* *}
-\Msg{****************************************************}
-
-\endbatchfile \ No newline at end of file
+%%
+%% Copyright (C) 2005-2023 by nsetzer
+%%
+%% This file may be distributed and/or modified under the
+%% conditions of the GNU Lesser General Public License.
+%%
+
+\input docstrip.tex
+
+\keepsilent
+
+\usedir{tex/latex/forloop}
+
+\preamble
+
+This is a generated file
+
+This file may be distributed and/or modified under the
+conditions of the GNU Lesser General Public License.
+
+\endpreamble
+
+
+\generate{\file{forloop.sty}{\from{forloop.dtx}{package}}}
+
+\obeyspaces
+\Msg{****************************************************}
+\Msg{* *}
+\Msg{* To finish the installation you have to move the *}
+\Msg{* following file into a directory searched by TeX: *}
+\Msg{* *}
+\Msg{* forloop.sty *}
+\Msg{* *}
+\Msg{* To produce the documentation run the file *}
+\Msg{* forloop.dtx through LaTeX. *}
+\Msg{* *}
+\Msg{* *}
+\Msg{****************************************************}
+
+\endbatchfile
diff --git a/macros/latex/contrib/thmtools/doc/changes.txt b/macros/latex/contrib/thmtools/doc/changes.txt
index 97bbbfdcdc..a3b4fbb7dd 100644
--- a/macros/latex/contrib/thmtools/doc/changes.txt
+++ b/macros/latex/contrib/thmtools/doc/changes.txt
@@ -69,3 +69,10 @@
* thm-kv.dtx:
wrapped long code lines to avoid exceeding the page margin
+
+2023-05-04 Yukai Chou <muzimuzhi@gmail.com>
+
+ * thm-kv.dtx:
+ worked around an `ntheorem` issue that the theorem title cannot contain direct
+ brackets, which may come from the expansion of new `\MakeUppercase` or
+ `\MakeLowercase`, starting from LaTeX2e 2022-11-01. #36
diff --git a/macros/latex/contrib/thmtools/doc/thmtools-manual.pdf b/macros/latex/contrib/thmtools/doc/thmtools-manual.pdf
index 7e1bd87645..7a190cb47a 100644
--- a/macros/latex/contrib/thmtools/doc/thmtools-manual.pdf
+++ b/macros/latex/contrib/thmtools/doc/thmtools-manual.pdf
Binary files differ
diff --git a/macros/latex/contrib/thmtools/source/VERSION.tex b/macros/latex/contrib/thmtools/source/VERSION.tex
index b93d3d5934..104bcf8026 100644
--- a/macros/latex/contrib/thmtools/source/VERSION.tex
+++ b/macros/latex/contrib/thmtools/source/VERSION.tex
@@ -1 +1 @@
-\def\VERSION{2023/02/17 v0.75}
+\def\VERSION{2023/05/04 v0.76}
diff --git a/macros/latex/contrib/thmtools/source/thm-kv.dtx b/macros/latex/contrib/thmtools/source/thm-kv.dtx
index 9fb16c499f..f0fddfd30b 100644
--- a/macros/latex/contrib/thmtools/source/thm-kv.dtx
+++ b/macros/latex/contrib/thmtools/source/thm-kv.dtx
@@ -23,15 +23,15 @@
\DeclareOption{lowercase}{%
\PackageInfo{thm-kv}{Theorem names will be lowercased}%
- \global\let\thmt@modifycase\MakeLowercase}
+ \global\def\thmt@modifycase{\protect\MakeLowercase}}
\DeclareOption{uppercase}{%
\PackageInfo{thm-kv}{Theorem names will be uppercased}%
- \global\let\thmt@modifycase\MakeUppercase}
+ \global\def\thmt@modifycase{\protect\MakeUppercase}}
\DeclareOption{anycase}{%
\PackageInfo{thm-kv}{Theorem names will be unchanged}%
- \global\let\thmt@modifycase\@empty}
+ \global\def\thmt@modifycase{}}
\ExecuteOptions{uppercase}
\ProcessOptions\relax
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb b/systems/texlive/tlnet/tlpkg/texlive.tlpdb
index 908dbe765a..9275e4caf0 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb
@@ -26,7 +26,7 @@ depend container_split_src_files/1
depend frozen/0
depend minrelease/2016
depend release/2023
-depend revision/67006
+depend revision/67020
name 00texlive.image
category TLCore
@@ -34929,15 +34929,15 @@ catalogue-topics class book-pub chinese multilingual expl3
name beebe
category Package
-revision 66286
+revision 67008
catalogue biblio
shortdesc A collection of bibliographies
relocated 1
longdesc A collection of BibTeX bibliographies on TeX-related topics
longdesc (including, for example, spell-checking and SGML). Each
longdesc includes a LaTeX wrapper file to typeset the bibliography.
-containersize 903080
-containerchecksum c64b655eb8d5e60191ec602e2cd188c241d2f7a66b35881ea7922b138e45665661ca64c9e8b370e69a18cb3876e5b66f331906a06ae868a7a059fbffe06f31b6
+containersize 903060
+containerchecksum ffd643b334fd28134e55b29c0b12eed4d73820248a9170b6395e888230a1c89a07c718cfef2d9791a1b6ae068bceb6e6e32c26375541a8972330deed8bd6c0e8
runfiles size=2221
RELOC/bibtex/bib/beebe/epodd.bib
RELOC/bibtex/bib/beebe/font.bib
@@ -73677,22 +73677,22 @@ catalogue-version 1.0f
name colorwav
category Package
-revision 15878
+revision 67012
shortdesc Colours by wavelength of visible light
relocated 1
longdesc The package allows the user to obtain an RGB value (suitable
longdesc for use in the color package) from a wavelength of light. The
longdesc default unit is nanometres, but other units may be used. Note
longdesc that this function is also available within xcolor.
-containersize 1952
-containerchecksum 618f813c9e009a671069a151bc6d438a42b2c589b255685d91dbbbd162e6a106164d626cd772bdb3e6538a1b010ae178dd7e1519195b6b1fee10ce6e46253b6c
-doccontainersize 98884
-doccontainerchecksum e042c10fcd4d2760383352ace13b2d3600682a01c900220913c79a950fb1597a59a82483429557aa7598e1cd1eea52b73dd23367139fb741ea48ee9c84c4c572
+containersize 1932
+containerchecksum 1f0ec92974581f7a1d5d36993eaef84d46019a345f1ca9979d0508b5dde7226cdb38e102dce02d404a4d28f8c408cb53cb0b3bc819905935fc9cd323abada305
+doccontainersize 98900
+doccontainerchecksum c9d23542ccc17980837bd49012889a8e11fb87f76bdd3c5ea9650177ebe527533cb5ac3631895f2455b094ffb4c6bfa973fddf9f071c80bc52c3c824b1fce471
docfiles size=30
RELOC/doc/latex/colorwav/README details="Readme"
RELOC/doc/latex/colorwav/colorwav.pdf details="Package documentation"
-srccontainersize 4204
-srccontainerchecksum 96ff1933d48bbe938de3635588d9a9c682ac387415d5a7c316e310ed0931e7fa0adf44185d8232d753a1532653b6bb5c0f6c402903bdab654333694f7c293215
+srccontainersize 4276
+srccontainerchecksum d41960edb1e83edb50be56a6eb43025cfabd5fc3a83ae068daba59276e9b5995f25804311398ff6874038587165b6c236dc983247f52399ab55e156417bf7adb
srcfiles size=7
RELOC/source/latex/colorwav/colorwav.dtx
RELOC/source/latex/colorwav/colorwav.ins
@@ -75279,7 +75279,7 @@ catalogue-version 0.1.1
name context
category Package
-revision 66802
+revision 67020
shortdesc The ConTeXt macro package
longdesc A full featured, parameter driven macro package, which fully
longdesc supports advanced interactive documents. See the ConTeXt garden
@@ -75293,10 +75293,10 @@ depend manfnt-font
depend mflogo-font
depend stmaryrd
execute addMap original-context-symbol.map
-containersize 9982680
-containerchecksum f8513c5ca37d315bd22eb1edd7637a98a554b1975b82cb4e9a1e88fdbb130980f2d5a3869a77e0bbab26eda779a077c580f875393d69e3a683daaf68bef136a1
-doccontainersize 84245980
-doccontainerchecksum 4892a6e123fb023c7b04536886316daac247ce30f5a26caeba2160b6f8bd5fec0d87c7a6e002d1e3b69987598ab91facd2da0af7711acf984ad1cafdc4ea8839
+containersize 9990548
+containerchecksum 968fb50d6c15a11c03b4999b112a9329c92bcce45038c6f07f18f84e8023b51911fd170fa6eae82b23147e960267d6913301b85d637812efa00e95b7b1bf92bd
+doccontainersize 84245972
+doccontainerchecksum 29ca62905bfb3a407253bb92cc47725e7ece1e82b173821a4c04de0da24f885d0e67c0acdd1e26eaf05ede191949353ebe92d7512592234011e6e70c4963451a
docfiles size=26800
texmf-dist/doc/context/documents/general/leaflets/leaflet-context.pdf
texmf-dist/doc/context/documents/general/leaflets/leaflet-luametatex.pdf
@@ -80830,11 +80830,11 @@ binfiles arch=amd64-freebsd size=730
name context.amd64-netbsd
category Package
-revision 66731
+revision 67009
shortdesc amd64-netbsd files of context
-containersize 1076940
-containerchecksum 93d56f7765744d82d0f42980171d429e1f6e22680b7784783f022cfa74d768d9f135952adaa3e155de25b57f021fd97ebfe4ba4e3459eae4dfb29253a4b44c87
-binfiles arch=amd64-netbsd size=783
+containersize 1095616
+containerchecksum 00da9f6e4f770456a2fad55a1e08aaade6a2c3478549e2f86661e5bfaedace39945cef407684798038ccc94901a0526096c7d5cbccba93450e56ac7751a50516
+binfiles arch=amd64-netbsd size=801
bin/amd64-netbsd/context
bin/amd64-netbsd/context.lua
bin/amd64-netbsd/luametatex
@@ -81359,7 +81359,7 @@ catalogue-version 1.1
name cool
category Package
-revision 15878
+revision 67013
shortdesc COntent-Oriented LaTeX
relocated 1
longdesc The package (COntent Oriented LaTeX) gives LaTeX the power to
@@ -81370,17 +81370,17 @@ longdesc meaning is that conversion of LaTeX documents to other
longdesc executable formats (such as Content MathML or Mathematica code)
longdesc is greatly simplified. The package requires the coolstr,
longdesc coollist and forloop packages.
-containersize 10204
-containerchecksum ec5b1612484852897856b58bde90aabc3e8c051f6a14674f2bf3a121993ce074214c3d61c7d074dae54e227c759630cff71793ac1ff433b048f3a15f90038c0f
-doccontainersize 412164
-doccontainerchecksum bf27e08a04f02f58ffb04ae0fa7b26860ab4129d3de3e2ab20d244a99c96b112a7a3dc10d064a364e38a80c1087ea8c693e7e7538a36975b6914f75418a82547
+containersize 10192
+containerchecksum 4ee983b7b07d20c9fe7568ebb6be60ecc56f85cc4ae4013870c53370df99d69bc0537c3889790324baa1f1a8afab2da56763b590457c49866d219b1540effe98
+doccontainersize 412172
+doccontainerchecksum 06d182b5415ed25be80c827206759708daddfaa6bf7a3aae59c1639c3c09523a7b421abdd9d2a8db1297e161e439b777d3d1d8c07e52dddc1c071ce1c5a9fe47
docfiles size=143
RELOC/doc/latex/cool/Content_LaTeX_Package_Demo.pdf details="Tables of macros functions"
RELOC/doc/latex/cool/Content_LaTeX_Package_Demo.tex
RELOC/doc/latex/cool/README details="Package README"
RELOC/doc/latex/cool/cool.pdf details="Implementation details"
-srccontainersize 22524
-srccontainerchecksum 1f5b16c0e1d4598ec4f4c5981e079537b0142f92b514d1f3dad567b2a71b02f9be0b3441087d7a973750f308f691270e750d75f669784fa3c787e6bc919d7e68
+srccontainersize 22576
+srccontainerchecksum c305695f6694cfb4b08462591aabd64adef27001d0c84ba905b0d4f07b7095905cda414e7e477ae962f5ecf6cdcee60d0a432e4eea924bf2fad0770411131912
srcfiles size=46
RELOC/source/latex/cool/cool.dtx
RELOC/source/latex/cool/cool.ins
@@ -81416,7 +81416,7 @@ catalogue-version 1.1.0
name coollist
category Package
-revision 63523
+revision 67014
shortdesc Manipulate COntent Oriented LaTeX Lists
relocated 1
longdesc Lists are defined as a sequence of tokens separated by a comma.
@@ -81426,14 +81426,14 @@ longdesc into a sort of array. List elements are accessed by specifying
longdesc the position of the object within the list (the index of the
longdesc item).
containersize 2332
-containerchecksum f9c220204782a1b61deb6e049b10bb81b5417383e1dd9b7e9b0ec827da48f06e3167f0dc2453d46f3f54923fc2200c2cc714f2f3725f6f41602f8dc493503855
+containerchecksum 256cc66b0a9b3f66e66b9344ee97bb1aa591b968b33b2636e997b00834a1b69c4d6fd88646b153171ec5417dc8045dd81cef18c1e08a25ad8910ba9a12650020
doccontainersize 110572
-doccontainerchecksum 09d1780a5738f82ff8d1820c015447855b8a930e63f3d0bb3e8e428a3bc6f6239f185fb6f9d7d45af2d9af5ba283fc0fafee7fd9bc88dacf654dfeee46dc375f
+doccontainerchecksum 6fe1bd55d48af258fbf9a4f2d68c602bf9a5b7e29f3381cc72f9a388f8a5558a72e18b4408cd71a8da8dbfc88130c5866c4360f397f957f71d61bd306cff2ef6
docfiles size=33
RELOC/doc/latex/coollist/README
RELOC/doc/latex/coollist/coollist.pdf details="Package documentation"
-srccontainersize 7076
-srccontainerchecksum beb55ae83841be57a743a39c49c83028a0207b8d307e717f91381d3157139748abac33f300683dbcdb683353ad2d8798dbc416d450ba950d9245e45ff87be89f
+srccontainersize 7068
+srccontainerchecksum b640a628a51279991ffb68a2166678519d77bfe12856fbbd4ca657a10ec17997e633d5a5f03c3e9f9f97abab8b0f25785e9e78a1694c2db2857bfc3ac1213402
srcfiles size=9
RELOC/source/latex/coollist/coollist.dtx
RELOC/source/latex/coollist/coollist.ins
@@ -81446,7 +81446,7 @@ catalogue-version 1.4
name coolstr
category Package
-revision 15878
+revision 67015
shortdesc String manipulation in LaTeX
relocated 1
longdesc Coolstr is a subpackage of the cool bundle that deals with the
@@ -81454,15 +81454,15 @@ longdesc manipulation of strings. A string is defined as a sequence of
longdesc characters (not tokens). The package provides the ability to
longdesc access a specific character of a string, as well as determine
longdesc if the string contains numeric or integer data.
-containersize 2396
-containerchecksum d4fe8de308d6dd9711f1d877fd1d5ad32f36a4d6cb17480571d88f4b63f9441fb1db217629ddafb25e774bb6d43d148742f9e823e1d43f497a9799b869f90b62
-doccontainersize 116380
-doccontainerchecksum 63c833be3ab646ce509e5082af3d135d81224c7b586f6998e5fc7410f2ed0e52abb05adfb49d78bae721889fc522395b53810e3ee627184de83dddb198cd3083
+containersize 2376
+containerchecksum 272c0ad1071f394c9cf96c38ce85800aeed55eacba29dc86c5887b86a63b717d8f83fd83afb5ff813df780691a7a2deff6d466e521eeca14ad3e3d09f07ab0db
+doccontainersize 116388
+doccontainerchecksum 5f4baf28b3a5d2b83ab51037c60454def4c1ebb74a408add0459fbc7766fe828e32af9c02ba898592272b067b23715e3986ca4f561a1a89d58a57c7de6d70bd3
docfiles size=35
RELOC/doc/latex/coolstr/README details="Readme"
RELOC/doc/latex/coolstr/coolstr.pdf details="Package documentation"
-srccontainersize 6468
-srccontainerchecksum 69ba696387583767b4c4d0b196c2b37000da16198242ea1ba4e2208fce6dab8eddb2bd40093eb092fe62b3be82aacab4b11ee35e2f94422eb07e0ad489709930
+srccontainersize 6520
+srccontainerchecksum 56e15bc77c6bbc2523162db8a86d1b3bf86e97a59fec15e27da736b964d02e27e7838690befce0f493a9363b946f710676c76e1ddc0c048f5cf40e41d29c1c0b
srcfiles size=10
RELOC/source/latex/coolstr/coolstr.dtx
RELOC/source/latex/coolstr/coolstr.ins
@@ -102850,7 +102850,7 @@ catalogue-version 3.1415926535897932
name dyntree
category Package
-revision 15878
+revision 67016
shortdesc Construct Dynkin tree diagrams
relocated 1
longdesc The package is intended for users needing to typeset a Dynkin
@@ -102859,15 +102859,15 @@ longdesc cartan coefficients in boxes connected by a series of lines.
longdesc Such a diagram is a tool for working out the states and their
longdesc weights in terms of the fundamental weights and the simple
longdesc roots. The package makes use of the author's coollist package.
-containersize 3120
-containerchecksum 8f8d568cc708e62ae1217188acf3deef05d7bbacf1da04f38c1f5b08d4b2bd0ee465021c923ed314ed284dd2234dce5079b7918c12d3bab72ad5f91749bdfe4c
-doccontainersize 127664
-doccontainerchecksum fde82bf8b97840014737734fb57eec7c37b34ca0d5eeb1a66c27dab16d4a5f1c4a7f7c10fb9c8bb98f3ef56a15645da0ab66cdcb658f69ea32eb84625b25023a
+containersize 3092
+containerchecksum e8591951639020398e8f6bd892bd2d43217871fae4e94ecb09bc6005f1857858edb5b3b9330c5d08e8490598fd2f3d45bba4d99a9b33de464d0c5e6478399689
+doccontainersize 127676
+doccontainerchecksum c2b2368a88648efe795a633f00ac826fff3b53029f557a4c5eb7dadbe882f560c768754adbbac09347b6bf44ee3bf77ec4b5ad57e9d5726e2c51519e0d02814c
docfiles size=38
RELOC/doc/latex/dyntree/README details="Readme"
RELOC/doc/latex/dyntree/dyntree.pdf details="Package documentation"
-srccontainersize 8784
-srccontainerchecksum 57d76ba3ff2e85a18fad69126a87b02fecf6f994de63af530831d63a0405abbcfad5ff7b33ff0f13c257b85bea73788e72a4347337c7355a25b85c5e762c25dd
+srccontainersize 8840
+srccontainerchecksum 8df01c048b52cad5fa5862b16d16672eda36158936af1bd8254ef6b9574ecf84263f5f70a466f2846e653e1565e2f57f297c4b05c281c16ec72a4fd1e1eb8f25
srcfiles size=12
RELOC/source/latex/dyntree/dyntree.dtx
RELOC/source/latex/dyntree/dyntree.ins
@@ -128794,20 +128794,20 @@ catalogue-topics linguistic docu-pkg
name forloop
category Package
-revision 15878
+revision 67017
shortdesc Iteration in LaTeX
relocated 1
longdesc The package provides a command \forloop for doing iteration in
longdesc LaTeX macro programming.
-containersize 1268
-containerchecksum a9cfda31fc63d24737a5b422e9fc7072bd1f75c0926cb45d26ea3cdb7cfb50b3f74d7602964a08f13d216f3fb3798acd21f04bdcfe85a3e3652052b9f2cbc9cb
-doccontainersize 70472
-doccontainerchecksum 49bb7031207902366fbd0924a025c692ba015af134ca38c90c43e8efe7a9522ee4db4cb9b071dd00681251ad07b4587cd49eb9e09bc77f1ad5632838fac686d6
+containersize 1252
+containerchecksum e4cf4d9fdf01b753b40d4fb2c5edac94756ccf60a7e0b1bf0da8b5b0c433eff5669858fcc35096967f9a53e6a365880e6677956ebb86764cd68ba3093fa4be91
+doccontainersize 70488
+doccontainerchecksum 7315a8e90a83bbb73cb82525fec32c750d97f62fadcf1cd1faa816aeb2c54b5183c8fe659a19f213764979d495d7774df7aab7c950fa9886c6911e526712f0ff
docfiles size=22
RELOC/doc/latex/forloop/README details="Package README"
RELOC/doc/latex/forloop/forloop.pdf details="Package documentation"
-srccontainersize 2576
-srccontainerchecksum f41a62a677f37a57c96a398d48cee84d213ccc23fbffe7f2da6c09e8f58d8b9524d3b53717b9657004e7de0083f43960c0ebd54de3696994d8e946d8044399e4
+srccontainersize 2628
+srccontainerchecksum fe9aa2c7836a17debbfc392b44bcccb09de5b978224b2ec81e17daa07eef3eaf508206f1d54cc9dc7897122ceffb9d1b8d5957c26f2b4bcaed4ee93ebe3436df
srcfiles size=3
RELOC/source/latex/forloop/forloop.dtx
RELOC/source/latex/forloop/forloop.ins
@@ -249354,32 +249354,32 @@ catalogue-topics doc-supp
name piton
category Package
-revision 66827
+revision 67019
shortdesc Typeset Python listings with LPEG
relocated 1
longdesc This package uses the Lua library LPEG to typeset and highlight
longdesc Python listings.
-containersize 12760
-containerchecksum 28becf2a6c08f2a7a094728682a3dda14176b675261cfe2bc7e236116f1d2fbde7078a3b2d01226e484ce0f7a8ad2d4f117397846bcae5a02be16e0946220ed7
-doccontainersize 612608
-doccontainerchecksum e0199730605f635fd6d1a2a81c5a4977d630416b19f7137f23e56072dacc50edc9618772d6ef399c40cd3c6da957cd163d9797ded615a58ce25c59cb761a1051
-docfiles size=264
+containersize 13116
+containerchecksum d2ed722fa41b8843abe85a1fd52c72bf7ad87e5961a229ee6d6fb72d22f8c4425da447f0a1cd5adb615539b7ef181e45f9ba9ff6e510760743cff40fa4947cce
+doccontainersize 644120
+doccontainerchecksum b258d71285f2f74182841f755ed291b708f21e43254f2758cf511d6bef407120b1d309075cd645b483b96115a9aeb908933ee708349565a2d0763b160318bbc6
+docfiles size=274
RELOC/doc/lualatex/piton/README.md details="Readme"
RELOC/doc/lualatex/piton/piton-french.pdf details="Package documentation (French)" language="fr"
RELOC/doc/lualatex/piton/piton-french.tex
RELOC/doc/lualatex/piton/piton.pdf details="Package documentation (English)"
-srccontainersize 36048
-srccontainerchecksum 42ada52e7e3734fea77b1549fc04e4c2290773182e6e8f3dd5d7b92882bfe258cf125edaa8a80553b2416f316946db5e93dca79cc7b0a0c01b75648c97cee624
-srcfiles size=43
+srccontainersize 38668
+srccontainerchecksum f584a4320dbfc2d0fb604fa5fce0a1d0a6b86dee7908908e735b7d6faec7648158f303b2e44749183b452798ceb40f66217e3745cd7a9ee04b7d61baa45cbbd9
+srcfiles size=46
RELOC/source/lualatex/piton/piton.dtx
RELOC/source/lualatex/piton/piton.ins
-runfiles size=16
+runfiles size=17
RELOC/tex/lualatex/piton/piton.sty
catalogue-also codehigh
catalogue-ctan /macros/luatex/latex/piton
catalogue-license lppl1.3
catalogue-topics listing synt-hlt luatex
-catalogue-version 1.5a
+catalogue-version 1.6
name pittetd
category Package
@@ -317146,7 +317146,7 @@ catalogue-topics maths-theorem decoration
name thmtools
category Package
-revision 65863
+revision 67018
shortdesc Extensions to theorem environments
relocated 1
longdesc The bundle provides several packages for commonly-needed
@@ -317157,9 +317157,9 @@ longdesc key-value interface to \newtheorem; a \listoftheorems command;
longdesc hyperref and autoref compatibility; a mechanism for restating
longdesc entire theorems in a single macro call.
containersize 13416
-containerchecksum 371801b9ab63eb0ce401bbb56e9b2b52cebf927e7d433d10e94c60c3649187b88957cbe05f2c9995d9bf687a6e6708f8a26f02596dbdd2759107ca61171bcd6b
-doccontainersize 265140
-doccontainerchecksum 753143eda92a887d6217f2dd3b727e78ff7441b109e8fc99eb0a672674a4ce0e3d7a1efd10f3252c2a14ebc87a37687511589e0f91cd4bd79a8298edfc7ad299
+containerchecksum 7d150df3f868339c6bcccb2e881105d9eba11bab8cbbbf42d5a696a7496cfbb87f0ca848e5cf7a63239e563a75515b15d4acc4a72046ca9539c4597e077333be
+doccontainersize 264936
+doccontainerchecksum 939567cab1c401d0946de706105d23add703e991bf36dc58f4e1d40fa35b5b30b37a9e32bc2d252f247da1f1db654bf3aad460dd1882389c00a8e11106270840
docfiles size=81
RELOC/doc/latex/thmtools/COPYING
RELOC/doc/latex/thmtools/README.md details="Readme"
@@ -317167,8 +317167,8 @@ docfiles size=81
RELOC/doc/latex/thmtools/changes.txt
RELOC/doc/latex/thmtools/thmtools-manual.pdf details="Package documentation"
RELOC/doc/latex/thmtools/thmtools-manual.tex
-srccontainersize 20756
-srccontainerchecksum 1114b1aee91c98ec2fa19858cc108ec264e717b525cc86a19e985abf74eb29123c0f7d3f9a0e5bbee9984c062adeb1de95344c579e3675d6181d125b7db69bf7
+srccontainersize 20760
+srccontainerchecksum a086c028394cff2fcb5c011d2a69627ce2f9651694b8e1596ece652111e88d43c1f1e358ae4c1201ddb0166180d6dec9eb14ebec8a05469636061c224c6f39e9
srcfiles size=30
RELOC/source/latex/thmtools/aliasctr.dtx
RELOC/source/latex/thmtools/parseargs.dtx
@@ -317209,7 +317209,7 @@ catalogue-contact-repository https://github.com/muzimuzhi/thmtools
catalogue-ctan /macros/latex/contrib/thmtools
catalogue-license lppl1.3c
catalogue-topics maths maths-theorem
-catalogue-version 75
+catalogue-version 76
name threadcol
category Package
@@ -318730,7 +318730,7 @@ catalogue-version 1.1
name tikz-nfold
category Package
-revision 66928
+revision 67010
shortdesc Triple, quadruple, and n-fold paths with TikZ
relocated 1
longdesc This library adds higher-order paths to TikZ and also fixes
@@ -318738,15 +318738,15 @@ longdesc some graphical issues with TikZ' double paths, used e.g. in
longdesc arrows with an Implies tip. It is also compatible with tikz-cd,
longdesc adding support for triple and higher arrows. Macros to offset
longdesc arbitrary paths are included as well.
-containersize 14528
-containerchecksum 938e0001ddd8c344b736ac76846cfd2007115bf80b310603ec1d1b91f6608791b9be06b7c3089711f3d2797cc078ad255b6b807e958087945d9c6acbc8580470
-doccontainersize 272584
-doccontainerchecksum 3bbfa1d9da31274cc03fd6c477fa1103f2c2daaa699294a981a44800deb78900d6727945678edc16ba775227688200919eb3a73e5b61abb05173a7c17dd4401d
+containersize 16104
+containerchecksum 5f62243a18ffd94332f3fc5879f4fd6a93cb8d8b841c78fb7e800eba6a6b1ce3b20506ae62b5033e88c93544cc4282ef36485dca269af090959741aa605b56dc
+doccontainersize 273100
+doccontainerchecksum 021b4fea2e9b0ae05b8f69951a45c8dba5289f3213a7e66a0652aab38623429d88a028750b49ba74ec0e25c8b3bf22094c8d05aec81b4e1c819f7ab3991b51af
docfiles size=83
RELOC/doc/latex/tikz-nfold/README.md details="Readme"
RELOC/doc/latex/tikz-nfold/tikz-nfold-doc.pdf details="Package documentation"
RELOC/doc/latex/tikz-nfold/tikz-nfold-doc.tex
-runfiles size=16
+runfiles size=18
RELOC/tex/latex/tikz-nfold/pgflibrarybezieroffset.code.tex
RELOC/tex/latex/tikz-nfold/tikzlibrarynfold.code.tex
catalogue-contact-bugs https://github.com/jonschz/tikz-nfold/issues
@@ -318754,7 +318754,7 @@ catalogue-contact-repository https://github.com/jonschz/tikz-nfold
catalogue-ctan /graphics/pgf/contrib/tikz-nfold
catalogue-license lppl1.3c
catalogue-topics graphics pgf-tikz
-catalogue-version 0.1.0
+catalogue-version 0.1.1
name tikz-opm
category Package
@@ -348077,24 +348077,24 @@ catalogue-version 1.03
name windycity
category Package
-revision 61223
+revision 67011
shortdesc A Chicago style for BibLaTeX
relocated 1
longdesc Windy City is a style for BibLaTeX that formats notes,
longdesc bibliographies, parenthetical citations, and reference lists
longdesc according to the 17th edition of The Chicago Manual of Style.
-containersize 20328
-containerchecksum 718ef4ce03405443de94581e45f8866053ce4b5d6b7c6e4576c4664d42adcf50570240fc8181f795f59733b94c648e15cc98ef92e4ae59843093663511829c4d
-doccontainersize 565924
-doccontainerchecksum 58107956e367dc318cc23320818c43f3fa91b75f69bc186b107687293f52c1c0cffb04912959e1a5c8d8abe3bb848c69da38ec621266e7a94b378a11d4c759e2
-docfiles size=194
+containersize 21364
+containerchecksum f83fe1f694d3fd448484961bb23c7c220ccb5b0f8982198660b5770140c8e9120fcd1f095492555f00533039039d11b3d2695189f40b716b17b2c2acf2e7c553
+doccontainersize 572224
+doccontainerchecksum eff7b0bd0603d563d077842e77fff4b9a104d008724d3e81f58cb26ebb77f8e61811f5a74d9cf2d5d62f3351ca692d5028cea9629ac1a9e8dc6263637c1cb616
+docfiles size=197
RELOC/doc/latex/windycity/CHANGES.md
RELOC/doc/latex/windycity/LICENCE
RELOC/doc/latex/windycity/README.md details="Readme"
RELOC/doc/latex/windycity/windycity.bib
RELOC/doc/latex/windycity/windycity.pdf details="Package documentation"
RELOC/doc/latex/windycity/windycity.tex
-runfiles size=34
+runfiles size=37
RELOC/tex/latex/windycity/american-windycity.lbx
RELOC/tex/latex/windycity/windycity.bbx
RELOC/tex/latex/windycity/windycity.cbx
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
index e488f75383..c8362e72bc 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
@@ -1 +1 @@
-61fa0ce933d0f961e1099860fced5eac texlive.tlpdb
+9cdb28d22a3d029e0aebf5f3a511568c texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
index f9f45041ef..a7d31d8657 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
@@ -1 +1 @@
-64eecca64508c6f1cd413bf72fd9fef423c23acb3261a31adb0b56e6e9911d9167b68cb4c4762e70f881e60c1448c3888d9584860e6139076ba43537d4fc740d texlive.tlpdb
+83ff6a5b69cf6963c351fd69c66f33aa1f60482a2b9504ddc7bd6c963d760ca0c8007b4ad1b4df017b6bbb7809a6fae7f170468fd1da16c5b32c1a9d6388e2a9 texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
index 74fd706095..b658f44e60 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-----
-iQEcBAEBCgAGBQJkUvQzAAoJEEzhh34ZQ4xwgTEH/RO59TcJJcSZl3j1lUSlNGSj
-GULsdTzPJjfXbdpydlP3XqB/f21wDSanbiS6skLoQOc0BbIGZxeSpY2IX25fat6c
-Kd1xmswoXVQwhwgAZcxQIPq8B7EpcMI8sH1zj2N7lWAlN4BjZ0UM4j7W346Ahrn2
-QQIs1dky7FJ5ynb4GjiKzpb86GPH3pU/koWRiqFgnntWA2oMApBRXVof3o3mVDCf
-2nkyjURFAhXp51eh2uWc1Gmvlgey6mjD9Jy3fWdlLF8ybADnROy4qfxndV4iLFYx
-S6HrDRI6OxOZkyOedZhjyqZfdVj9nQmHNe58kTZ64BPDvt7kIup2AGlsF7Tth1Q=
-=9lVs
+iQEcBAEBCgAGBQJkVEXSAAoJEEzhh34ZQ4xwl20IALQGALYsdTEOkCfVKkC2VCpd
+TuspkApDiQ/PDnXxrVSO0o8gS4vzMPGaO5BqVnxAcubgry4796cSGmCFHdlP9lX3
+EVqyH/DFMWVU82MUt7eWPpUEqaYWNvw8Emq4TAfvA2AIVbkJVCA3wzXW3tjJgy3O
+Ae979lLPvHwA6iNVkk8nUVpEq0qw0bRSu4CoQ+TO/o3FQ2/bO4Tpu0lCCGyhtZcY
+UXtthctQuuNBvRchUWEE4ksmBJ8yR0d90VtuPH58E0ONe9QxBzOOQIVv5jsR0Yc0
+8QUOJM+EYbh3i0m1QI+I+sAHg3OA4E9DNpD3eOKXmfn9IL+4qwqen7jQt+fNJPU=
+=H8Mp
-----END PGP SIGNATURE-----
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
index 6751d79d02..0ba2071e1d 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
Binary files differ
diff --git a/timestamp b/timestamp
index 94a4aece0f..6541f58265 100644
--- a/timestamp
+++ b/timestamp
@@ -2,4 +2,4 @@
# The source CTAN of this site's material:
dante.ctan.org
# The year-month-day-hour-minute of this site's material:
-2023-05-04-02-02
+2023-05-05-02-02