summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FILES.byname738
-rw-r--r--FILES.byname.gzbin2269691 -> 2269705 bytes
-rw-r--r--FILES.last07days685
-rw-r--r--fonts/utilities/ps2pk/ChangeLog7
-rw-r--r--fonts/utilities/ps2pk/c-auto.in3
-rw-r--r--fonts/utilities/ps2pk/configure.ac4
-rwxr-xr-xfonts/utilities/ps2pk/configure.texk5
-rw-r--r--fonts/utilities/ps2pk/mag.c7
-rw-r--r--fonts/utilities/ps2pk/pfb2pfa.c5
-rw-r--r--fonts/utilities/ps2pk/pk2bm.c14
-rw-r--r--fonts/utilities/ps2pk/pktest.c5
-rw-r--r--fonts/utilities/ps2pk/ps2pk.c21
-rw-r--r--graphics/pgf/contrib/spath3/calligraphy.pdfbin259679 -> 259702 bytes
-rw-r--r--graphics/pgf/contrib/spath3/calligraphy.tex7
-rw-r--r--graphics/pgf/contrib/spath3/knots.pdfbin333450 -> 341151 bytes
-rw-r--r--graphics/pgf/contrib/spath3/knots.tex107
-rw-r--r--graphics/pgf/contrib/spath3/spath3.pdfbin337099 -> 353909 bytes
-rw-r--r--graphics/pgf/contrib/spath3/spath3.tex319
-rw-r--r--graphics/pgf/contrib/spath3/spath3_code.dtx4137
-rw-r--r--graphics/pgf/contrib/spath3/spath3_code.pdfbin547140 -> 576597 bytes
-rw-r--r--macros/latex/contrib/babel-contrib/danish/README.md16
-rw-r--r--macros/latex/contrib/babel-contrib/danish/danish.dtx36
-rw-r--r--macros/latex/contrib/babel-contrib/danish/danish.pdfbin127671 -> 136164 bytes
-rw-r--r--macros/latex/contrib/babel-contrib/finnish/README.md12
-rw-r--r--macros/latex/contrib/babel-contrib/finnish/finnish.dtx23
-rw-r--r--macros/latex/contrib/babel-contrib/finnish/finnish.pdfbin139230 -> 147638 bytes
-rw-r--r--macros/latex/contrib/babel-contrib/portuges/README.md12
-rw-r--r--macros/latex/contrib/babel-contrib/portuges/portuges.dtx34
-rw-r--r--macros/latex/contrib/babel-contrib/portuges/portuges.pdfbin145322 -> 153755 bytes
-rw-r--r--macros/latex/contrib/babel-contrib/slovenian/README.md17
-rw-r--r--macros/latex/contrib/babel-contrib/slovenian/slovene.dtx32
-rw-r--r--macros/latex/contrib/babel-contrib/slovenian/slovene.pdfbin127434 -> 135706 bytes
-rw-r--r--macros/latex/contrib/babel-contrib/sorbian/README.md16
-rw-r--r--macros/latex/contrib/babel-contrib/sorbian/lsorbian.dtx20
-rw-r--r--macros/latex/contrib/babel-contrib/sorbian/lsorbian.pdfbin124566 -> 131086 bytes
-rw-r--r--macros/latex/contrib/babel-contrib/sorbian/usorbian.dtx37
-rw-r--r--macros/latex/contrib/babel-contrib/sorbian/usorbian.pdfbin132650 -> 140300 bytes
-rw-r--r--macros/latex/contrib/babel-contrib/swedish/README.md16
-rw-r--r--macros/latex/contrib/babel-contrib/swedish/swedish.dtx38
-rw-r--r--macros/latex/contrib/babel-contrib/swedish/swedish.pdfbin130054 -> 138372 bytes
-rw-r--r--macros/latex/contrib/cmap/README3
-rw-r--r--macros/latex/contrib/cmap/cmap.sty44
-rw-r--r--macros/latex/contrib/europecv/CHANGELOG.rst6
-rw-r--r--macros/latex/contrib/europecv/README.md3
-rw-r--r--macros/latex/contrib/europecv/ecvpt.def4
-rw-r--r--macros/latex/contrib/europecv/europecv.pdfbin683232 -> 662190 bytes
-rw-r--r--macros/latex/contrib/europecv/europecv.tex12
-rw-r--r--macros/latex/contrib/europecv/examples/europass-cv.pdfbin224310 -> 224305 bytes
-rw-r--r--macros/latex/contrib/europecv/examples/europasslogo-eps-converted-to.pdfbin14481 -> 14480 bytes
-rw-r--r--macros/latex/contrib/europecv/templates/cv_template_academic_en.pdfbin52031 -> 38531 bytes
-rw-r--r--macros/latex/contrib/europecv/templates/cv_template_en.pdfbin38261 -> 31728 bytes
-rw-r--r--macros/latex/contrib/fontsize/fontsize.dtx501
-rw-r--r--macros/latex/contrib/fontsize/fontsize.pdfbin296971 -> 343569 bytes
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix-french.pdfbin425830 -> 439492 bytes
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix-french.tex480
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix.dtx1145
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix.pdfbin1078565 -> 1131373 bytes
-rw-r--r--macros/latex/contrib/ragged2e/LICENSE416
-rw-r--r--macros/latex/contrib/ragged2e/Makefile31
-rw-r--r--macros/latex/contrib/ragged2e/README28
-rw-r--r--macros/latex/contrib/ragged2e/README.md42
-rw-r--r--macros/latex/contrib/ragged2e/ragged2e.dtx174
-rw-r--r--macros/latex/contrib/ragged2e/ragged2e.ins86
-rw-r--r--macros/latex/contrib/ragged2e/ragged2e.pdfbin636665 -> 666241 bytes
-rw-r--r--macros/latex/contrib/ragged2e/raggtest.tex75
-rw-r--r--macros/latex/contrib/ragged2e/test-koma.tex37
-rw-r--r--macros/latex/contrib/ragged2e/test1.tex61
-rw-r--r--macros/latex/contrib/ragged2e/test2.tex61
-rw-r--r--macros/latex/contrib/suftesi/README2
-rw-r--r--macros/latex/contrib/suftesi/suftesi.dtx74
-rw-r--r--macros/latex/contrib/suftesi/suftesi.pdfbin794737 -> 795474 bytes
-rw-r--r--systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl7
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb356
-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.xzbin2277208 -> 2278188 bytes
-rw-r--r--systems/win32/miktex/tm/packages/next/pr.ini8
-rw-r--r--systems/win32/miktex/tm/packages/pr.ini8
-rw-r--r--systems/win32/w32tex/ChangeLog6
-rw-r--r--timestamp2
81 files changed, 6788 insertions, 3275 deletions
diff --git a/FILES.byname b/FILES.byname
index 4fa694e570..a9bf5beafc 100644
--- a/FILES.byname
+++ b/FILES.byname
@@ -5087,7 +5087,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
-2021/02/05 | 74726 | FILES.last07days
+2021/02/06 | 92021 | FILES.last07days
2020/08/14 | 104065 | fonts/academicons/academicons.pdf
2020/08/14 | 17247 | fonts/academicons/academicons.sty
2020/08/14 | 6546 | fonts/academicons/academicons.tex
@@ -142863,16 +142863,16 @@
2016/12/23 | 3599 | graphics/pgf/contrib/smartdiagram/smartdiagram.ins
2016/12/23 | 267814 | graphics/pgf/contrib/smartdiagram/smartdiagram.pdf
2016/12/23 | 276207 | graphics/pgf/contrib/smartdiagram.zip
-2021/01/20 | 259679 | graphics/pgf/contrib/spath3/calligraphy.pdf
-2021/01/20 | 16415 | graphics/pgf/contrib/spath3/calligraphy.tex
-2021/01/20 | 333450 | graphics/pgf/contrib/spath3/knots.pdf
-2021/01/20 | 23129 | graphics/pgf/contrib/spath3/knots.tex
-2021/01/22 | 523 | graphics/pgf/contrib/spath3/README
-2021/01/22 | 197284 | graphics/pgf/contrib/spath3/spath3_code.dtx
-2021/01/22 | 547140 | graphics/pgf/contrib/spath3/spath3_code.pdf
-2021/01/22 | 337099 | graphics/pgf/contrib/spath3/spath3.pdf
-2021/01/22 | 21745 | graphics/pgf/contrib/spath3/spath3.tex
-2021/01/23 | 1509137 | graphics/pgf/contrib/spath3.zip
+2021/02/05 | 259702 | graphics/pgf/contrib/spath3/calligraphy.pdf
+2021/02/05 | 16482 | graphics/pgf/contrib/spath3/calligraphy.tex
+2021/02/05 | 341151 | graphics/pgf/contrib/spath3/knots.pdf
+2021/02/05 | 27006 | graphics/pgf/contrib/spath3/knots.tex
+2021/02/06 | 523 | graphics/pgf/contrib/spath3/README
+2021/02/06 | 248660 | graphics/pgf/contrib/spath3/spath3_code.dtx
+2021/02/05 | 576597 | graphics/pgf/contrib/spath3/spath3_code.pdf
+2021/02/05 | 353909 | graphics/pgf/contrib/spath3/spath3.pdf
+2021/02/05 | 30128 | graphics/pgf/contrib/spath3/spath3.tex
+2021/02/06 | 1569258 | graphics/pgf/contrib/spath3.zip
2019/02/18 | 107163 | graphics/pgf/contrib/spectralsequences/examples/ANSS-S_2.pdf
2019/02/18 | 4304 | graphics/pgf/contrib/spectralsequences/examples/ANSS-S_2.tex
2019/02/18 | 48774 | graphics/pgf/contrib/spectralsequences/examples/ANSS-S_3.pdf
@@ -148853,8 +148853,8 @@
2014/04/19 | 3223 | info/biblio/ijqc.sty
2019/10/15 | 10835 | info/biblio/komoedie.bib
2019/10/15 | 3050 | info/biblio/komoedie.ltx
-2020/02/18 | 386063 | info/biblio/litprog.bib
-2020/02/18 | 3210 | info/biblio/litprog.ltx
+2021/02/05 | 388361 | info/biblio/litprog.bib
+2021/02/05 | 3210 | info/biblio/litprog.ltx
2001/01/05 | 628 | info/biblio/microchip.sty
2018/11/06 | 645090 | info/biblio/printing-history.bib
2018/11/06 | 2882 | info/biblio/printing-history.ltx
@@ -172223,7 +172223,7 @@
2019/03/20 | 7942984 | install/macros/latex/contrib/stex.tds.zip
2011/12/21 | 204538 | install/macros/latex/contrib/storebox.tds.zip
2019/11/30 | 800764 | install/macros/latex/contrib/stringenc.tds.zip
-2021/01/27 | 1526239 | install/macros/latex/contrib/suftesi.tds.zip
+2021/02/06 | 1526733 | install/macros/latex/contrib/suftesi.tds.zip
2012/05/06 | 463336 | install/macros/latex/contrib/svn-multi.tds.zip
2010/04/24 | 261363 | install/macros/latex/contrib/svn-prov.tds.zip
2014/05/20 | 721827 | install/macros/latex/contrib/sympytexpackage.tds.zip
@@ -185157,7 +185157,7 @@
2013/04/01 | 14776 | macros/context/contrib/context-visualcounter/tex/context/third/visualcounter/t-visualcounter.mkvi
2018/03/05 | 11 | macros/context/contrib/context-visualcounter/VERSION
2018/03/22 | 276789 | macros/context/contrib/context-visualcounter.zip
-2021/02/01 | 119695937 | macros/context/latest/cont-tmf.zip
+2021/02/05 | 119700949 | macros/context/latest/cont-tmf.zip
2016/04/21 | 32846 | macros/cstex/base/cmexb.tar.gz
2016/06/26 | 1728262 | macros/cstex/base/csfonts-t1.tar.gz
2007/03/01 | 187106 | macros/cstex/base/csfonts.tar.gz
@@ -189731,10 +189731,11 @@
2013/05/20 | 4934 | macros/latex/contrib/babel-contrib/czech/czech.ins
2013/05/20 | 189098 | macros/latex/contrib/babel-contrib/czech/czech.pdf
2014/03/01 | 200833 | macros/latex/contrib/babel-contrib/czech.zip
-2013/05/20 | 13148 | macros/latex/contrib/babel-contrib/danish/danish.dtx
+2021/02/06 | 13421 | macros/latex/contrib/babel-contrib/danish/danish.dtx
2013/05/20 | 4937 | macros/latex/contrib/babel-contrib/danish/danish.ins
-2013/05/20 | 127671 | macros/latex/contrib/babel-contrib/danish/danish.pdf
-2014/02/23 | 132962 | macros/latex/contrib/babel-contrib/danish.zip
+2021/02/06 | 136164 | macros/latex/contrib/babel-contrib/danish/danish.pdf
+2021/02/06 | 410 | macros/latex/contrib/babel-contrib/danish/README.md
+2021/02/06 | 141792 | macros/latex/contrib/babel-contrib/danish.zip
2020/10/29 | 22388 | macros/latex/contrib/babel-contrib/dutch/dutch.dtx
2020/10/29 | 4982 | macros/latex/contrib/babel-contrib/dutch/dutch.ins
2020/10/29 | 149196 | macros/latex/contrib/babel-contrib/dutch/dutch.pdf
@@ -189754,11 +189755,11 @@
2015/08/05 | 109181 | macros/latex/contrib/babel-contrib/estonian/estonian.pdf
2015/08/05 | 1602 | macros/latex/contrib/babel-contrib/estonian/README.txt
2015/08/05 | 102592 | macros/latex/contrib/babel-contrib/estonian.zip
-2020/04/16 | 14416 | macros/latex/contrib/babel-contrib/finnish/finnish.dtx
-2020/04/16 | 4755 | macros/latex/contrib/babel-contrib/finnish/finnish.ins
-2020/04/16 | 139230 | macros/latex/contrib/babel-contrib/finnish/finnish.pdf
-2020/04/16 | 361 | macros/latex/contrib/babel-contrib/finnish/README.md
-2020/04/16 | 145245 | macros/latex/contrib/babel-contrib/finnish.zip
+2021/02/06 | 14591 | macros/latex/contrib/babel-contrib/finnish/finnish.dtx
+2021/02/06 | 4755 | macros/latex/contrib/babel-contrib/finnish/finnish.ins
+2021/02/06 | 147638 | macros/latex/contrib/babel-contrib/finnish/finnish.pdf
+2021/02/06 | 464 | macros/latex/contrib/babel-contrib/finnish/README.md
+2021/02/06 | 153608 | macros/latex/contrib/babel-contrib/finnish.zip
2020/10/09 | 154799 | macros/latex/contrib/babel-contrib/french/frenchb-doc.pdf
2020/10/09 | 94668 | macros/latex/contrib/babel-contrib/french/frenchb-doc.tex
2020/10/09 | 239792 | macros/latex/contrib/babel-contrib/french/frenchb.dtx
@@ -189889,11 +189890,11 @@
2013/05/20 | 4937 | macros/latex/contrib/babel-contrib/polish/polish.ins
2013/05/20 | 134292 | macros/latex/contrib/babel-contrib/polish/polish.pdf
2014/02/26 | 141677 | macros/latex/contrib/babel-contrib/polish.zip
-2020/05/04 | 17742 | macros/latex/contrib/babel-contrib/portuges/portuges.dtx
-2020/05/04 | 5148 | macros/latex/contrib/babel-contrib/portuges/portuges.ins
-2020/05/04 | 145322 | macros/latex/contrib/babel-contrib/portuges/portuges.pdf
-2020/05/04 | 363 | macros/latex/contrib/babel-contrib/portuges/README.md
-2020/05/04 | 151803 | macros/latex/contrib/babel-contrib/portuges.zip
+2021/02/06 | 17927 | macros/latex/contrib/babel-contrib/portuges/portuges.dtx
+2021/02/06 | 5148 | macros/latex/contrib/babel-contrib/portuges/portuges.ins
+2021/02/06 | 153755 | macros/latex/contrib/babel-contrib/portuges/portuges.pdf
+2021/02/06 | 489 | macros/latex/contrib/babel-contrib/portuges/README.md
+2021/02/06 | 160184 | macros/latex/contrib/babel-contrib/portuges.zip
2013/05/20 | 8475 | macros/latex/contrib/babel-contrib/romanian/romanian.dtx
2013/05/20 | 4943 | macros/latex/contrib/babel-contrib/romanian/romanian.ins
2013/05/20 | 112743 | macros/latex/contrib/babel-contrib/romanian/romanian.pdf
@@ -189930,25 +189931,28 @@
2013/05/20 | 4937 | macros/latex/contrib/babel-contrib/slovak/slovak.ins
2013/05/20 | 195853 | macros/latex/contrib/babel-contrib/slovak/slovak.pdf
2013/06/06 | 209070 | macros/latex/contrib/babel-contrib/slovak.zip
-2013/05/20 | 11759 | macros/latex/contrib/babel-contrib/slovenian/slovene.dtx
-2013/05/20 | 4940 | macros/latex/contrib/babel-contrib/slovenian/slovene.ins
-2013/05/20 | 127434 | macros/latex/contrib/babel-contrib/slovenian/slovene.pdf
-2013/05/20 | 132373 | macros/latex/contrib/babel-contrib/slovenian.zip
-2013/05/20 | 9028 | macros/latex/contrib/babel-contrib/sorbian/lsorbian.dtx
-2013/05/20 | 124566 | macros/latex/contrib/babel-contrib/sorbian/lsorbian.pdf
-2013/05/20 | 4999 | macros/latex/contrib/babel-contrib/sorbian/sorbian.ins
-2013/05/20 | 15055 | macros/latex/contrib/babel-contrib/sorbian/usorbian.dtx
-2013/05/20 | 132650 | macros/latex/contrib/babel-contrib/sorbian/usorbian.pdf
-2014/02/25 | 264919 | macros/latex/contrib/babel-contrib/sorbian.zip
+2021/02/06 | 434 | macros/latex/contrib/babel-contrib/slovenian/README.md
+2021/02/06 | 11944 | macros/latex/contrib/babel-contrib/slovenian/slovene.dtx
+2021/02/06 | 4940 | macros/latex/contrib/babel-contrib/slovenian/slovene.ins
+2021/02/06 | 135706 | macros/latex/contrib/babel-contrib/slovenian/slovene.pdf
+2021/02/06 | 140993 | macros/latex/contrib/babel-contrib/slovenian.zip
+2021/02/06 | 9019 | macros/latex/contrib/babel-contrib/sorbian/lsorbian.dtx
+2021/02/06 | 131086 | macros/latex/contrib/babel-contrib/sorbian/lsorbian.pdf
+2021/02/06 | 436 | macros/latex/contrib/babel-contrib/sorbian/README.md
+2021/02/06 | 4999 | macros/latex/contrib/babel-contrib/sorbian/sorbian.ins
+2021/02/06 | 15358 | macros/latex/contrib/babel-contrib/sorbian/usorbian.dtx
+2021/02/06 | 140300 | macros/latex/contrib/babel-contrib/sorbian/usorbian.pdf
+2021/02/06 | 279253 | macros/latex/contrib/babel-contrib/sorbian.zip
2016/03/02 | 1585 | macros/latex/contrib/babel-contrib/spanish/README.md
2016/03/02 | 93118 | macros/latex/contrib/babel-contrib/spanish/spanish.dtx
2016/03/02 | 3103 | macros/latex/contrib/babel-contrib/spanish/spanish.ins
2016/03/02 | 183261 | macros/latex/contrib/babel-contrib/spanish/spanish.pdf
2016/03/02 | 213871 | macros/latex/contrib/babel-contrib/spanish.zip
-2013/05/20 | 17974 | macros/latex/contrib/babel-contrib/swedish/swedish.dtx
-2013/05/20 | 4940 | macros/latex/contrib/babel-contrib/swedish/swedish.ins
-2013/05/20 | 130054 | macros/latex/contrib/babel-contrib/swedish/swedish.pdf
-2013/05/20 | 136571 | macros/latex/contrib/babel-contrib/swedish.zip
+2021/02/06 | 463 | macros/latex/contrib/babel-contrib/swedish/README.md
+2021/02/06 | 18227 | macros/latex/contrib/babel-contrib/swedish/swedish.dtx
+2021/02/06 | 4940 | macros/latex/contrib/babel-contrib/swedish/swedish.ins
+2021/02/06 | 138372 | macros/latex/contrib/babel-contrib/swedish/swedish.pdf
+2021/02/06 | 145244 | macros/latex/contrib/babel-contrib/swedish.zip
2013/05/20 | 6729 | macros/latex/contrib/babel-contrib/thai/lthenc.def
2013/05/20 | 39246 | macros/latex/contrib/babel-contrib/thai/thai.dtx
2013/05/20 | 4931 | macros/latex/contrib/babel-contrib/thai/thai.ins
@@ -193938,20 +193942,20 @@
2020/01/23 | 196215 | macros/latex/contrib/clrstrip/clrstrip.pdf
2020/01/23 | 682 | macros/latex/contrib/clrstrip/README.md
2020/01/23 | 197150 | macros/latex/contrib/clrstrip.zip
-2021/01/29 | 2931 | macros/latex/contrib/cmap/cmap.sty
-2021/01/29 | 3293 | macros/latex/contrib/cmap/lae.cmap
-2021/01/29 | 3609 | macros/latex/contrib/cmap/lfe.cmap
-2021/01/29 | 3744 | macros/latex/contrib/cmap/lgr.cmap
-2021/01/29 | 1207 | macros/latex/contrib/cmap/ot1.cmap
-2021/01/29 | 1042 | macros/latex/contrib/cmap/ot1tt.cmap
-2021/01/29 | 1730 | macros/latex/contrib/cmap/ot6.cmap
-2021/01/29 | 4331 | macros/latex/contrib/cmap/README
-2021/01/29 | 1938 | macros/latex/contrib/cmap/t1.cmap
-2021/01/29 | 1872 | macros/latex/contrib/cmap/t2a.cmap
-2021/01/29 | 1680 | macros/latex/contrib/cmap/t2b.cmap
-2021/01/29 | 1752 | macros/latex/contrib/cmap/t2c.cmap
-2021/01/29 | 2573 | macros/latex/contrib/cmap/t5.cmap
-2021/01/29 | 14984 | macros/latex/contrib/cmap.zip
+2021/02/06 | 3574 | macros/latex/contrib/cmap/cmap.sty
+2021/02/06 | 3293 | macros/latex/contrib/cmap/lae.cmap
+2021/02/06 | 3609 | macros/latex/contrib/cmap/lfe.cmap
+2021/02/06 | 3744 | macros/latex/contrib/cmap/lgr.cmap
+2021/02/06 | 1207 | macros/latex/contrib/cmap/ot1.cmap
+2021/02/06 | 1042 | macros/latex/contrib/cmap/ot1tt.cmap
+2021/02/06 | 1730 | macros/latex/contrib/cmap/ot6.cmap
+2021/02/06 | 4458 | macros/latex/contrib/cmap/README
+2021/02/06 | 1938 | macros/latex/contrib/cmap/t1.cmap
+2021/02/06 | 1872 | macros/latex/contrib/cmap/t2a.cmap
+2021/02/06 | 1680 | macros/latex/contrib/cmap/t2b.cmap
+2021/02/06 | 1752 | macros/latex/contrib/cmap/t2c.cmap
+2021/02/06 | 2573 | macros/latex/contrib/cmap/t5.cmap
+2021/02/06 | 15186 | macros/latex/contrib/cmap.zip
1995/02/08 | 5721 | macros/latex/contrib/cmcyralt/cmcyralt.sty
1995/02/08 | 5320 | macros/latex/contrib/cmcyralt/examples/karabas.tex
1995/02/08 | 701 | macros/latex/contrib/cmcyralt/examples/kniga.tex
@@ -197384,71 +197388,71 @@
2020/11/01 | 3022 | macros/latex/contrib/europasscv/Makefile.europasscv
2020/11/01 | 1901 | macros/latex/contrib/europasscv/README.md
2020/11/01 | 527754 | macros/latex/contrib/europasscv.zip
-2020/01/03 | 2749 | macros/latex/contrib/europecv/CHANGELOG.rst
-2019/12/23 | 4207 | macros/latex/contrib/europecv/CONTRIBUTING.md
-2020/01/03 | 2498 | macros/latex/contrib/europecv/ecvbg.def
-2020/01/03 | 1735 | macros/latex/contrib/europecv/ecvca.def
-2020/01/03 | 2182 | macros/latex/contrib/europecv/ecvcs.def
-2020/01/03 | 2061 | macros/latex/contrib/europecv/ecvda.def
-2020/01/03 | 2082 | macros/latex/contrib/europecv/ecvde.def
-2020/01/03 | 2055 | macros/latex/contrib/europecv/ecven.def
-2020/01/03 | 2169 | macros/latex/contrib/europecv/ecves.def
-2020/01/03 | 2034 | macros/latex/contrib/europecv/ecvet.def
-2020/01/03 | 2166 | macros/latex/contrib/europecv/ecvfi.def
-2020/01/03 | 2213 | macros/latex/contrib/europecv/ecvfr.def
-2020/01/03 | 2129 | macros/latex/contrib/europecv/ecvgl.def
-2020/01/03 | 3438 | macros/latex/contrib/europecv/ecvgr.def
-2020/01/03 | 2084 | macros/latex/contrib/europecv/ecvhu.def
-2020/01/03 | 2090 | macros/latex/contrib/europecv/ecvis.def
-2020/01/03 | 2062 | macros/latex/contrib/europecv/ecvit.def
-2020/01/03 | 2199 | macros/latex/contrib/europecv/ecvlt.def
-2020/01/03 | 1810 | macros/latex/contrib/europecv/ecvlv.def
-2020/01/03 | 1790 | macros/latex/contrib/europecv/ecvmt.def
-2020/01/03 | 1713 | macros/latex/contrib/europecv/ecvnl.def
-2020/01/03 | 1720 | macros/latex/contrib/europecv/ecvno.def
-2020/01/03 | 1755 | macros/latex/contrib/europecv/ecvpl.def
-2020/01/03 | 2141 | macros/latex/contrib/europecv/ecvpt.def
-2020/01/03 | 2044 | macros/latex/contrib/europecv/ecvro.def
-2020/01/03 | 2194 | macros/latex/contrib/europecv/ecvsk.def
-2020/01/03 | 2043 | macros/latex/contrib/europecv/ecvsl.def
-2020/01/03 | 2018 | macros/latex/contrib/europecv/ecvsr.def
-2020/01/03 | 2173 | macros/latex/contrib/europecv/ecvsv.def
-2018/09/02 | 37766 | macros/latex/contrib/europecv/europasslogo.eps
-2018/09/02 | 34265 | macros/latex/contrib/europecv/europasslogo.pdf
-2020/01/03 | 23620 | macros/latex/contrib/europecv/europecv.cls
-2020/01/03 | 683232 | macros/latex/contrib/europecv/europecv.pdf
-2020/01/03 | 52681 | macros/latex/contrib/europecv/europecv.tex
-2018/09/02 | 4595 | macros/latex/contrib/europecv/EuropeFlagBlueCMYK.eps
-2018/09/02 | 2249 | macros/latex/contrib/europecv/EuropeFlagBlueCMYK.pdf
-2018/09/02 | 4631 | macros/latex/contrib/europecv/EuropeFlagBW.eps
-2018/09/02 | 2340 | macros/latex/contrib/europecv/EuropeFlagBW.pdf
-2018/09/02 | 4646 | macros/latex/contrib/europecv/EuropeFlagCMYK.eps
-2018/09/02 | 2259 | macros/latex/contrib/europecv/EuropeFlagCMYK.pdf
-2018/09/02 | 4588 | macros/latex/contrib/europecv/EuropeFlagWB.eps
-2018/09/02 | 2272 | macros/latex/contrib/europecv/EuropeFlagWB.pdf
-2018/09/02 | 6975 | macros/latex/contrib/europecv/examples/at.pdf
-2018/09/02 | 765 | macros/latex/contrib/europecv/examples/bulgarian-koi8-r.tex
-2018/09/02 | 1002 | macros/latex/contrib/europecv/examples/bulgarian-utf8.tex
-2020/01/03 | 224310 | macros/latex/contrib/europecv/examples/europass-cv.pdf
-2020/01/03 | 2690 | macros/latex/contrib/europecv/examples/europass-cv.tex
-2018/09/02 | 37766 | macros/latex/contrib/europecv/examples/europasslogo.eps
-2020/01/03 | 14481 | macros/latex/contrib/europecv/examples/europasslogo-eps-converted-to.pdf
-2018/09/02 | 4646 | macros/latex/contrib/europecv/examples/EuropeFlagCMYK.eps
-2020/01/03 | 3356 | macros/latex/contrib/europecv/examples/EuropeFlagCMYK-eps-converted-to.pdf
-2018/09/02 | 86999 | macros/latex/contrib/europecv/examples/greek-utf8.pdf
-2018/09/02 | 934 | macros/latex/contrib/europecv/examples/greek-utf8.tex
-2018/09/02 | 916 | macros/latex/contrib/europecv/examples/maltese-maltese.tex
-2018/09/02 | 863 | macros/latex/contrib/europecv/examples/maltese-utf8.tex
-2018/09/02 | 37248 | macros/latex/contrib/europecv/examples/minimal.pdf
-2018/09/02 | 163 | macros/latex/contrib/europecv/examples/minimal.tex
-2019/12/30 | 47274 | macros/latex/contrib/europecv/examples/Pythagoras.jpg
-2018/12/31 | 19106 | macros/latex/contrib/europecv/LICENSE
-2020/01/02 | 2320 | macros/latex/contrib/europecv/README.md
-2020/01/03 | 52031 | macros/latex/contrib/europecv/templates/cv_template_academic_en.pdf
-2020/01/03 | 8800 | macros/latex/contrib/europecv/templates/cv_template_academic_en.tex
-2020/01/03 | 38261 | macros/latex/contrib/europecv/templates/cv_template_en.pdf
-2020/01/03 | 4778 | macros/latex/contrib/europecv/templates/cv_template_en.tex
-2020/01/03 | 1154135 | macros/latex/contrib/europecv.zip
+2021/02/06 | 2889 | macros/latex/contrib/europecv/CHANGELOG.rst
+2021/02/06 | 4207 | macros/latex/contrib/europecv/CONTRIBUTING.md
+2021/02/06 | 2498 | macros/latex/contrib/europecv/ecvbg.def
+2021/02/06 | 1735 | macros/latex/contrib/europecv/ecvca.def
+2021/02/06 | 2182 | macros/latex/contrib/europecv/ecvcs.def
+2021/02/06 | 2061 | macros/latex/contrib/europecv/ecvda.def
+2021/02/06 | 2082 | macros/latex/contrib/europecv/ecvde.def
+2021/02/06 | 2055 | macros/latex/contrib/europecv/ecven.def
+2021/02/06 | 2169 | macros/latex/contrib/europecv/ecves.def
+2021/02/06 | 2034 | macros/latex/contrib/europecv/ecvet.def
+2021/02/06 | 2166 | macros/latex/contrib/europecv/ecvfi.def
+2021/02/06 | 2213 | macros/latex/contrib/europecv/ecvfr.def
+2021/02/06 | 2129 | macros/latex/contrib/europecv/ecvgl.def
+2021/02/06 | 3438 | macros/latex/contrib/europecv/ecvgr.def
+2021/02/06 | 2084 | macros/latex/contrib/europecv/ecvhu.def
+2021/02/06 | 2090 | macros/latex/contrib/europecv/ecvis.def
+2021/02/06 | 2062 | macros/latex/contrib/europecv/ecvit.def
+2021/02/06 | 2199 | macros/latex/contrib/europecv/ecvlt.def
+2021/02/06 | 1810 | macros/latex/contrib/europecv/ecvlv.def
+2021/02/06 | 1790 | macros/latex/contrib/europecv/ecvmt.def
+2021/02/06 | 1713 | macros/latex/contrib/europecv/ecvnl.def
+2021/02/06 | 1720 | macros/latex/contrib/europecv/ecvno.def
+2021/02/06 | 1755 | macros/latex/contrib/europecv/ecvpl.def
+2021/02/06 | 2145 | macros/latex/contrib/europecv/ecvpt.def
+2021/02/06 | 2044 | macros/latex/contrib/europecv/ecvro.def
+2021/02/06 | 2194 | macros/latex/contrib/europecv/ecvsk.def
+2021/02/06 | 2043 | macros/latex/contrib/europecv/ecvsl.def
+2021/02/06 | 2018 | macros/latex/contrib/europecv/ecvsr.def
+2021/02/06 | 2173 | macros/latex/contrib/europecv/ecvsv.def
+2021/02/06 | 37766 | macros/latex/contrib/europecv/europasslogo.eps
+2021/02/06 | 34265 | macros/latex/contrib/europecv/europasslogo.pdf
+2021/02/06 | 23620 | macros/latex/contrib/europecv/europecv.cls
+2021/02/06 | 662190 | macros/latex/contrib/europecv/europecv.pdf
+2021/02/06 | 52896 | macros/latex/contrib/europecv/europecv.tex
+2021/02/06 | 4595 | macros/latex/contrib/europecv/EuropeFlagBlueCMYK.eps
+2021/02/06 | 2249 | macros/latex/contrib/europecv/EuropeFlagBlueCMYK.pdf
+2021/02/06 | 4631 | macros/latex/contrib/europecv/EuropeFlagBW.eps
+2021/02/06 | 2340 | macros/latex/contrib/europecv/EuropeFlagBW.pdf
+2021/02/06 | 4646 | macros/latex/contrib/europecv/EuropeFlagCMYK.eps
+2021/02/06 | 2259 | macros/latex/contrib/europecv/EuropeFlagCMYK.pdf
+2021/02/06 | 4588 | macros/latex/contrib/europecv/EuropeFlagWB.eps
+2021/02/06 | 2272 | macros/latex/contrib/europecv/EuropeFlagWB.pdf
+2021/02/06 | 6975 | macros/latex/contrib/europecv/examples/at.pdf
+2021/02/06 | 765 | macros/latex/contrib/europecv/examples/bulgarian-koi8-r.tex
+2021/02/06 | 1002 | macros/latex/contrib/europecv/examples/bulgarian-utf8.tex
+2021/02/06 | 224305 | macros/latex/contrib/europecv/examples/europass-cv.pdf
+2021/02/06 | 2690 | macros/latex/contrib/europecv/examples/europass-cv.tex
+2021/02/06 | 37766 | macros/latex/contrib/europecv/examples/europasslogo.eps
+2021/02/06 | 14480 | macros/latex/contrib/europecv/examples/europasslogo-eps-converted-to.pdf
+2021/02/06 | 4646 | macros/latex/contrib/europecv/examples/EuropeFlagCMYK.eps
+2021/02/06 | 3356 | macros/latex/contrib/europecv/examples/EuropeFlagCMYK-eps-converted-to.pdf
+2021/02/06 | 86999 | macros/latex/contrib/europecv/examples/greek-utf8.pdf
+2021/02/06 | 934 | macros/latex/contrib/europecv/examples/greek-utf8.tex
+2021/02/06 | 916 | macros/latex/contrib/europecv/examples/maltese-maltese.tex
+2021/02/06 | 863 | macros/latex/contrib/europecv/examples/maltese-utf8.tex
+2021/02/06 | 37248 | macros/latex/contrib/europecv/examples/minimal.pdf
+2021/02/06 | 163 | macros/latex/contrib/europecv/examples/minimal.tex
+2021/02/06 | 47274 | macros/latex/contrib/europecv/examples/Pythagoras.jpg
+2021/02/06 | 19106 | macros/latex/contrib/europecv/LICENSE
+2021/02/06 | 2407 | macros/latex/contrib/europecv/README.md
+2021/02/06 | 38531 | macros/latex/contrib/europecv/templates/cv_template_academic_en.pdf
+2021/02/06 | 8800 | macros/latex/contrib/europecv/templates/cv_template_academic_en.tex
+2021/02/06 | 31728 | macros/latex/contrib/europecv/templates/cv_template_en.pdf
+2021/02/06 | 4778 | macros/latex/contrib/europecv/templates/cv_template_en.tex
+2021/02/06 | 1175820 | macros/latex/contrib/europecv.zip
1999/01/16 | 5355 | macros/latex/contrib/europs/europs.dtx
1998/11/02 | 726 | macros/latex/contrib/europs/europs.ins
1999/01/16 | 57017 | macros/latex/contrib/europs/eutest.ps
@@ -198628,10 +198632,10 @@
2020/07/21 | 126590 | macros/latex/contrib/fontaxes/fontaxes.pdf
2014/03/23 | 1645 | macros/latex/contrib/fontaxes/README
2020/07/22 | 137019 | macros/latex/contrib/fontaxes.zip
-2021/01/31 | 52741 | macros/latex/contrib/fontsize/fontsize.dtx
-2021/01/31 | 296971 | macros/latex/contrib/fontsize/fontsize.pdf
-2021/01/31 | 1511 | macros/latex/contrib/fontsize/README
-2021/01/31 | 304757 | macros/latex/contrib/fontsize.zip
+2021/02/06 | 63514 | macros/latex/contrib/fontsize/fontsize.dtx
+2021/02/06 | 343569 | macros/latex/contrib/fontsize/fontsize.pdf
+2021/02/06 | 1511 | macros/latex/contrib/fontsize/README
+2021/02/06 | 352019 | macros/latex/contrib/fontsize.zip
2017/07/14 | 46046 | macros/latex/contrib/fonttable/fonttable.dtx
2017/07/14 | 2505 | macros/latex/contrib/fonttable/fonttable.ins
2017/07/14 | 309980 | macros/latex/contrib/fonttable/fonttable.pdf
@@ -205355,13 +205359,13 @@
1996/03/22 | 18862 | macros/latex/contrib/niceframe/umrandb.mf
2015/01/17 | 1370 | macros/latex/contrib/niceframe/umrand.mf
2015/01/17 | 287910 | macros/latex/contrib/niceframe.zip
-2021/01/08 | 512739 | macros/latex/contrib/nicematrix/nicematrix.dtx
-2021/01/08 | 425830 | macros/latex/contrib/nicematrix/nicematrix-french.pdf
-2021/01/08 | 146703 | macros/latex/contrib/nicematrix/nicematrix-french.tex
+2021/02/05 | 541478 | macros/latex/contrib/nicematrix/nicematrix.dtx
+2021/02/05 | 439492 | macros/latex/contrib/nicematrix/nicematrix-french.pdf
+2021/02/05 | 152495 | macros/latex/contrib/nicematrix/nicematrix-french.tex
2021/01/07 | 1423 | macros/latex/contrib/nicematrix/nicematrix.ins
-2021/01/08 | 1078565 | macros/latex/contrib/nicematrix/nicematrix.pdf
+2021/02/05 | 1131373 | macros/latex/contrib/nicematrix/nicematrix.pdf
2020/06/07 | 1005 | macros/latex/contrib/nicematrix/README.md
-2021/01/08 | 1600354 | macros/latex/contrib/nicematrix.zip
+2021/02/06 | 1668162 | macros/latex/contrib/nicematrix.zip
2015/11/21 | 217 | macros/latex/contrib/nicetext/ANNOUNCE.txt
2012/03/18 | 254582 | macros/latex/contrib/nicetext/demo/arseneau.pdf
2011/09/14 | 10 | macros/latex/contrib/nicetext/demo/iso.txt
@@ -208288,17 +208292,11 @@
2020/09/11 | 1843 | macros/latex/contrib/qyxf-book/README.md
2020/09/11 | 1618 | macros/latex/contrib/qyxf-book/README.zh.md
2020/09/11 | 615640 | macros/latex/contrib/qyxf-book.zip
-2019/07/28 | 19106 | macros/latex/contrib/ragged2e/LICENSE
-2019/07/28 | 1081 | macros/latex/contrib/ragged2e/Makefile
-2019/07/28 | 48666 | macros/latex/contrib/ragged2e/ragged2e.dtx
-2019/07/28 | 3324 | macros/latex/contrib/ragged2e/ragged2e.ins
-2019/07/30 | 636665 | macros/latex/contrib/ragged2e/ragged2e.pdf
-2019/07/28 | 2267 | macros/latex/contrib/ragged2e/raggtest.tex
-2019/07/28 | 885 | macros/latex/contrib/ragged2e/README
-2019/07/28 | 2171 | macros/latex/contrib/ragged2e/test1.tex
-2019/07/28 | 2191 | macros/latex/contrib/ragged2e/test2.tex
-2019/07/28 | 1625 | macros/latex/contrib/ragged2e/test-koma.tex
-2019/07/30 | 655117 | macros/latex/contrib/ragged2e.zip
+2021/02/05 | 47480 | macros/latex/contrib/ragged2e/ragged2e.dtx
+2021/02/05 | 1409 | macros/latex/contrib/ragged2e/ragged2e.ins
+2021/02/05 | 666241 | macros/latex/contrib/ragged2e/ragged2e.pdf
+2021/02/05 | 1226 | macros/latex/contrib/ragged2e/README.md
+2021/02/06 | 673565 | macros/latex/contrib/ragged2e.zip
2007/05/16 | 11839 | macros/latex/contrib/randbild/randbild.dtx
2007/05/16 | 1834 | macros/latex/contrib/randbild/randbild.ins
2007/05/16 | 179602 | macros/latex/contrib/randbild/randbild.pdf
@@ -211443,11 +211441,11 @@
2006/03/25 | 2275 | macros/latex/contrib/sudoku/sudoku.ins
2006/03/25 | 67384 | macros/latex/contrib/sudoku/sudoku.pdf
2006/03/25 | 60808 | macros/latex/contrib/sudoku.zip
-2021/01/27 | 1669 | macros/latex/contrib/suftesi/README
-2021/01/27 | 212607 | macros/latex/contrib/suftesi/suftesi.dtx
-2021/01/27 | 794737 | macros/latex/contrib/suftesi/suftesi.pdf
-2021/01/27 | 681673 | macros/latex/contrib/suftesi/templates.zip
-2021/01/27 | 1510330 | macros/latex/contrib/suftesi.zip
+2021/02/06 | 1670 | macros/latex/contrib/suftesi/README
+2021/02/06 | 211875 | macros/latex/contrib/suftesi/suftesi.dtx
+2021/02/06 | 795474 | macros/latex/contrib/suftesi/suftesi.pdf
+2021/02/06 | 681673 | macros/latex/contrib/suftesi/templates.zip
+2021/02/06 | 1510760 | macros/latex/contrib/suftesi.zip
2020/02/02 | 856 | macros/latex/contrib/supertabular/CATALOG
2020/02/02 | 13567 | macros/latex/contrib/supertabular/ChangeLog
2020/01/24 | 502 | macros/latex/contrib/supertabular/MANIFEST
@@ -260154,6 +260152,8 @@
2020/11/13 | 280328 | systems/texlive/tlnet/archive/atenddvi.doc.r56922.tar.xz
2020/11/13 | 1932 | systems/texlive/tlnet/archive/atenddvi.r56922.tar.xz
2020/11/13 | 5256 | systems/texlive/tlnet/archive/atenddvi.source.r56922.tar.xz
+2021/02/06 | 631676 | systems/texlive/tlnet/archive/atkinson.doc.r57624.tar.xz
+2021/02/06 | 337140 | systems/texlive/tlnet/archive/atkinson.r57624.tar.xz
2019/11/25 | 348 | systems/texlive/tlnet/archive/attachfile2.aarch64-linux.r52909.tar.xz
2019/11/25 | 348 | systems/texlive/tlnet/archive/attachfile2.amd64-freebsd.r52909.tar.xz
2019/11/25 | 348 | systems/texlive/tlnet/archive/attachfile2.amd64-netbsd.r52909.tar.xz
@@ -261151,9 +261151,9 @@
2019/02/28 | 2808 | systems/texlive/tlnet/archive/bxjaprnind.r45291.tar.xz
2019/10/24 | 2068 | systems/texlive/tlnet/archive/bxjatoucs.doc.r52509.tar.xz
2019/10/24 | 25604 | systems/texlive/tlnet/archive/bxjatoucs.r52509.tar.xz
-2021/01/28 | 1518416 | systems/texlive/tlnet/archive/bxjscls.doc.r57536.tar.xz
-2021/01/28 | 32852 | systems/texlive/tlnet/archive/bxjscls.r57536.tar.xz
-2021/01/28 | 81952 | systems/texlive/tlnet/archive/bxjscls.source.r57536.tar.xz
+2021/02/06 | 1518456 | systems/texlive/tlnet/archive/bxjscls.doc.r57625.tar.xz
+2021/02/06 | 32932 | systems/texlive/tlnet/archive/bxjscls.r57625.tar.xz
+2021/02/06 | 82096 | systems/texlive/tlnet/archive/bxjscls.source.r57625.tar.xz
2019/02/28 | 2376 | systems/texlive/tlnet/archive/bxnewfont.doc.r44173.tar.xz
2019/02/28 | 4760 | systems/texlive/tlnet/archive/bxnewfont.r44173.tar.xz
2019/02/28 | 2112 | systems/texlive/tlnet/archive/bxorigcapt.doc.r48606.tar.xz
@@ -261747,7 +261747,7 @@
2020/05/29 | 1224 | systems/texlive/tlnet/archive/collection-bibtexextra.r55339.tar.xz
2020/09/16 | 944 | systems/texlive/tlnet/archive/collection-binextra.r56352.tar.xz
2020/03/04 | 596 | systems/texlive/tlnet/archive/collection-context.r54074.tar.xz
-2021/01/21 | 1900 | systems/texlive/tlnet/archive/collection-fontsextra.r57478.tar.xz
+2021/02/06 | 1908 | systems/texlive/tlnet/archive/collection-fontsextra.r57624.tar.xz
2020/03/04 | 560 | systems/texlive/tlnet/archive/collection-fontsrecommended.r54074.tar.xz
2020/12/08 | 528 | systems/texlive/tlnet/archive/collection-fontutils.r57089.tar.xz
2020/03/04 | 568 | systems/texlive/tlnet/archive/collection-formatsextra.r54074.tar.xz
@@ -264825,9 +264825,9 @@
2019/02/28 | 186676 | systems/texlive/tlnet/archive/hypernat.doc.r17358.tar.xz
2019/02/28 | 1916 | systems/texlive/tlnet/archive/hypernat.r17358.tar.xz
2019/02/28 | 15680 | systems/texlive/tlnet/archive/hyper.r17357.tar.xz
-2020/05/17 | 3311500 | systems/texlive/tlnet/archive/hyperref.doc.r55161.tar.xz
-2020/05/17 | 98036 | systems/texlive/tlnet/archive/hyperref.r55161.tar.xz
-2020/05/17 | 446768 | systems/texlive/tlnet/archive/hyperref.source.r55161.tar.xz
+2021/02/06 | 3277320 | systems/texlive/tlnet/archive/hyperref.doc.r57623.tar.xz
+2021/02/06 | 97144 | systems/texlive/tlnet/archive/hyperref.r57623.tar.xz
+2021/02/06 | 446160 | systems/texlive/tlnet/archive/hyperref.source.r57623.tar.xz
2019/02/28 | 32960 | systems/texlive/tlnet/archive/hyper.source.r17357.tar.xz
2020/11/23 | 356 | systems/texlive/tlnet/archive/hyperxmp.aarch64-linux.r56984.tar.xz
2020/11/23 | 356 | systems/texlive/tlnet/archive/hyperxmp.amd64-freebsd.r56984.tar.xz
@@ -268014,9 +268014,9 @@
2020/10/30 | 5804 | systems/texlive/tlnet/archive/pdfoverlay.source.r56803.tar.xz
2019/02/28 | 740816 | systems/texlive/tlnet/archive/pdfpagediff.doc.r37946.tar.xz
2019/02/28 | 2924 | systems/texlive/tlnet/archive/pdfpagediff.r37946.tar.xz
-2021/01/11 | 314460 | systems/texlive/tlnet/archive/pdfpages.doc.r57378.tar.xz
-2021/01/11 | 13952 | systems/texlive/tlnet/archive/pdfpages.r57378.tar.xz
-2021/01/11 | 35016 | systems/texlive/tlnet/archive/pdfpages.source.r57378.tar.xz
+2021/02/06 | 319708 | systems/texlive/tlnet/archive/pdfpages.doc.r57626.tar.xz
+2021/02/06 | 13960 | systems/texlive/tlnet/archive/pdfpages.r57626.tar.xz
+2021/02/06 | 35036 | systems/texlive/tlnet/archive/pdfpages.source.r57626.tar.xz
2020/12/21 | 175720 | systems/texlive/tlnet/archive/pdfpc.doc.r57181.tar.xz
2019/02/28 | 74980 | systems/texlive/tlnet/archive/pdfpc-movie.doc.r48245.tar.xz
2019/02/28 | 2196 | systems/texlive/tlnet/archive/pdfpc-movie.r48245.tar.xz
@@ -270556,8 +270556,8 @@
2020/03/24 | 280 | systems/texlive/tlnet/archive/texlive-cz.r54496.tar.xz
2020/12/26 | 1338744 | systems/texlive/tlnet/archive/texlive-de.doc.r57223.tar.xz
2020/12/26 | 272 | systems/texlive/tlnet/archive/texlive-de.r57223.tar.xz
-2021/02/04 | 172664 | systems/texlive/tlnet/archive/texlive-docindex.doc.r57606.tar.xz
-2021/02/04 | 388 | systems/texlive/tlnet/archive/texlive-docindex.r57606.tar.xz
+2021/02/06 | 172756 | systems/texlive/tlnet/archive/texlive-docindex.doc.r57622.tar.xz
+2021/02/06 | 392 | systems/texlive/tlnet/archive/texlive-docindex.r57622.tar.xz
2020/04/16 | 1891392 | systems/texlive/tlnet/archive/texlive-en.doc.r54755.tar.xz
2020/04/16 | 272 | systems/texlive/tlnet/archive/texlive-en.r54755.tar.xz
2020/03/22 | 3090144 | systems/texlive/tlnet/archive/texlive-es.doc.r54465.tar.xz
@@ -270613,7 +270613,7 @@
2020/05/17 | 592 | systems/texlive/tlnet/archive/texlive-scripts.amd64-freebsd.r55172.tar.xz
2020/05/17 | 588 | systems/texlive/tlnet/archive/texlive-scripts.amd64-netbsd.r55172.tar.xz
2020/05/17 | 592 | systems/texlive/tlnet/archive/texlive-scripts.armhf-linux.r55172.tar.xz
-2021/02/05 | 218848 | systems/texlive/tlnet/archive/texlive-scripts.doc.r57612.tar.xz
+2021/02/06 | 218848 | systems/texlive/tlnet/archive/texlive-scripts.doc.r57622.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
@@ -270637,7 +270637,7 @@
2020/05/17 | 588 | systems/texlive/tlnet/archive/texlive-scripts.i386-linux.r55172.tar.xz
2020/05/17 | 592 | systems/texlive/tlnet/archive/texlive-scripts.i386-netbsd.r55172.tar.xz
2020/05/17 | 588 | systems/texlive/tlnet/archive/texlive-scripts.i386-solaris.r55172.tar.xz
-2021/02/05 | 132320 | systems/texlive/tlnet/archive/texlive-scripts.r57612.tar.xz
+2021/02/06 | 132340 | systems/texlive/tlnet/archive/texlive-scripts.r57622.tar.xz
2020/08/24 | 36336 | systems/texlive/tlnet/archive/texlive-scripts.win32.r56157.tar.xz
2020/05/17 | 588 | systems/texlive/tlnet/archive/texlive-scripts.x86_64-cygwin.r55172.tar.xz
2020/05/12 | 592 | systems/texlive/tlnet/archive/texlive-scripts.x86_64-darwinlegacy.r55117.tar.xz
@@ -271277,8 +271277,8 @@
2019/02/28 | 254104 | systems/texlive/tlnet/archive/tucv.doc.r20680.tar.xz
2019/02/28 | 1860 | systems/texlive/tlnet/archive/tucv.r20680.tar.xz
2019/02/28 | 4996 | systems/texlive/tlnet/archive/tucv.source.r20680.tar.xz
-2021/01/14 | 1102612 | systems/texlive/tlnet/archive/tuda-ci.doc.r57415.tar.xz
-2021/01/14 | 41192 | systems/texlive/tlnet/archive/tuda-ci.r57415.tar.xz
+2021/02/06 | 1093516 | systems/texlive/tlnet/archive/tuda-ci.doc.r57627.tar.xz
+2021/02/06 | 41376 | systems/texlive/tlnet/archive/tuda-ci.r57627.tar.xz
2020/11/12 | 3742780 | systems/texlive/tlnet/archive/tudscr.doc.r56909.tar.xz
2020/11/12 | 160144 | systems/texlive/tlnet/archive/tudscr.r56909.tar.xz
2020/11/12 | 316940 | systems/texlive/tlnet/archive/tudscr.source.r56909.tar.xz
@@ -272210,9 +272210,9 @@
2019/02/28 | 18512 | systems/texlive/tlnet/archive/yaletter.source.r42830.tar.xz
2019/02/28 | 28912 | systems/texlive/tlnet/archive/yannisgr.doc.r22613.tar.xz
2019/02/28 | 37576 | systems/texlive/tlnet/archive/yannisgr.r22613.tar.xz
-2020/10/15 | 5750536 | systems/texlive/tlnet/archive/yathesis.doc.r56667.tar.xz
-2020/10/15 | 23156 | systems/texlive/tlnet/archive/yathesis.r56667.tar.xz
-2020/10/15 | 50640 | systems/texlive/tlnet/archive/yathesis.source.r56667.tar.xz
+2021/02/06 | 4699076 | systems/texlive/tlnet/archive/yathesis.doc.r57628.tar.xz
+2021/02/06 | 23212 | systems/texlive/tlnet/archive/yathesis.r57628.tar.xz
+2021/02/06 | 50552 | systems/texlive/tlnet/archive/yathesis.source.r57628.tar.xz
2020/03/04 | 123700 | systems/texlive/tlnet/archive/yax.doc.r54080.tar.xz
2020/03/04 | 5936 | systems/texlive/tlnet/archive/yax.r54080.tar.xz
2019/07/26 | 2170868 | systems/texlive/tlnet/archive/yazd-thesis.doc.r51725.tar.xz
@@ -272305,16 +272305,16 @@
2020/07/18 | 47816 | systems/texlive/tlnet/archive/zztex.doc.r55862.tar.xz
2020/07/18 | 101724 | systems/texlive/tlnet/archive/zztex.r55862.tar.xz
2021/02/03 | 106037 | systems/texlive/tlnet/install-tl
-2021/02/05 | 5826191 | systems/texlive/tlnet/install-tl-unx.tar.gz
-2021/02/05 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
-2021/02/05 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2021/02/06 | 5826414 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2021/02/06 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2021/02/06 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
2020/08/23 | 4889 | systems/texlive/tlnet/install-tl-windows.bat
-2021/02/05 | 19654863 | systems/texlive/tlnet/install-tl-windows.exe
-2021/02/05 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
-2021/02/05 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2021/02/05 | 24615664 | systems/texlive/tlnet/install-tl.zip
-2021/02/05 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
-2021/02/05 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2021/02/06 | 19658216 | systems/texlive/tlnet/install-tl-windows.exe
+2021/02/06 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2021/02/06 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2021/02/06 | 24615689 | systems/texlive/tlnet/install-tl.zip
+2021/02/06 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2021/02/06 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
2020/03/05 | 1215 | systems/texlive/tlnet/README.md
2020/04/06 | 5961 | systems/texlive/tlnet/tlpkg/gpg/pubring.gpg
2016/04/12 | 600 | systems/texlive/tlnet/tlpkg/gpg/random_seed
@@ -272323,7 +272323,7 @@
2020/04/06 | 1280 | systems/texlive/tlnet/tlpkg/gpg/trustdb.gpg
2021/01/27 | 49446 | systems/texlive/tlnet/tlpkg/installer/config.guess
2010/11/11 | 11651 | systems/texlive/tlnet/tlpkg/installer/COPYING.MinGW-runtime.txt
-2021/02/03 | 6677 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
+2021/02/05 | 6779 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2020/04/15 | 223687 | systems/texlive/tlnet/tlpkg/installer/curl/curl-ca-bundle.crt
2020/04/15 | 2606592 | systems/texlive/tlnet/tlpkg/installer/curl/curl.exe
2018/04/29 | 13647 | systems/texlive/tlnet/tlpkg/installer/DirSelect.pm
@@ -272370,12 +272370,12 @@
2020/05/17 | 20322 | systems/texlive/tlnet/tlpkg/TeXLive/TLCrypto.pm
2020/05/03 | 4786 | systems/texlive/tlnet/tlpkg/TeXLive/TLDownload.pm
2020/09/22 | 27563 | systems/texlive/tlnet/tlpkg/TeXLive/TLPaper.pm
-2021/02/05 | 17015335 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
-2021/02/05 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2021/02/06 | 17029201 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2021/02/06 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
2020/05/13 | 86417 | systems/texlive/tlnet/tlpkg/TeXLive/TLPDB.pm
-2021/02/05 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
-2021/02/05 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2021/02/05 | 2277208 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2021/02/06 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2021/02/06 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2021/02/06 | 2278188 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
2020/04/15 | 58761 | systems/texlive/tlnet/tlpkg/TeXLive/TLPOBJ.pm
2020/03/20 | 41736 | systems/texlive/tlnet/tlpkg/TeXLive/TLPSRC.pm
2020/05/11 | 15010 | systems/texlive/tlnet/tlpkg/TeXLive/TLTREE.pm
@@ -276965,7 +276965,7 @@
2020/10/03 | 318630 | systems/win32/miktex/tm/packages/filehook.tar.lzma
2012/12/04 | 924573 | systems/win32/miktex/tm/packages/fileinfo.tar.lzma
2011/09/21 | 281409 | systems/win32/miktex/tm/packages/filemod.tar.lzma
-2021/02/05 | 563993 | systems/win32/miktex/tm/packages/files.csv.lzma
+2021/02/06 | 563993 | systems/win32/miktex/tm/packages/files.csv.lzma
2001/05/14 | 5617 | systems/win32/miktex/tm/packages/finbib.tar.lzma
2015/10/20 | 44379 | systems/win32/miktex/tm/packages/findhyph.tar.lzma
2011/10/21 | 89323 | systems/win32/miktex/tm/packages/fink.tar.lzma
@@ -278149,9 +278149,9 @@
2018/01/12 | 157226 | systems/win32/miktex/tm/packages/miktex-zip-bin-x64.tar.lzma
2021/01/16 | 39515 | systems/win32/miktex/tm/packages/miktex-zlib-bin-2.9.tar.lzma
2021/01/16 | 43377 | systems/win32/miktex/tm/packages/miktex-zlib-bin-x64-2.9.tar.lzma
-2021/02/05 | 206583 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
-2021/02/05 | 1248637 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
-2021/02/05 | 1166153 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
+2021/02/06 | 206630 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
+2021/02/06 | 1248127 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
+2021/02/06 | 1165641 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
2021/01/16 | 13454 | systems/win32/miktex/tm/packages/miktex-zzip-bin-2.9.tar.lzma
2021/01/16 | 14322 | systems/win32/miktex/tm/packages/miktex-zzip-bin-x64-2.9.tar.lzma
2016/07/15 | 35914 | systems/win32/miktex/tm/packages/mil3.tar.lzma
@@ -278309,187 +278309,187 @@
2018/04/09 | 400132 | systems/win32/miktex/tm/packages/newunicodechar.tar.lzma
2011/09/19 | 101312 | systems/win32/miktex/tm/packages/newvbtm.tar.lzma
2020/09/06 | 231669 | systems/win32/miktex/tm/packages/newverbs.tar.lzma
-2021/02/05 | 564663 | systems/win32/miktex/tm/packages/next/files.csv.lzma
-2021/02/05 | 50704 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma
-2021/02/05 | 56456 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
-2021/02/05 | 969228 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma
-2021/02/05 | 1078967 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
-2021/02/05 | 29026 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma
-2021/02/05 | 31346 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
-2021/02/05 | 29511 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma
-2021/02/05 | 34306 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
-2021/02/05 | 50032 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma
-2021/02/05 | 57611 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
-2021/02/05 | 85305 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma
-2021/02/05 | 94599 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
-2021/02/05 | 67497 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma
-2021/02/05 | 75341 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
-2021/02/05 | 27205 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma
-2021/02/05 | 30874 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
-2021/02/05 | 329919 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma
-2021/02/05 | 392682 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
-2021/02/05 | 32544 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma
-2021/02/05 | 36678 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
-2021/02/05 | 51410 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma
-2021/02/05 | 56600 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
-2021/02/05 | 231666 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma
-2021/02/05 | 254185 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
-2021/02/05 | 179468 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma
-2021/02/05 | 195677 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
-2021/02/05 | 52498 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma
-2021/02/05 | 59146 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
-2021/02/05 | 21130 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma
-2021/02/05 | 23314 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
-2021/02/05 | 461388 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma
-2021/02/05 | 45637 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma
-2021/02/05 | 51185 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
-2021/02/05 | 281359 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma
-2021/02/05 | 320796 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
-2021/02/05 | 40964 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma
-2021/02/05 | 45271 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
-2021/02/05 | 116936 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma
-2021/02/05 | 131490 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
-2021/02/05 | 1281722 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma
-2021/02/05 | 1417676 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
-2021/02/05 | 87636 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma
-2021/02/05 | 99482 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
-2021/02/05 | 43071 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma
-2021/02/05 | 47903 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
-2021/02/05 | 25128 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma
-2021/02/05 | 28006 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
-2021/02/05 | 55852 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma
-2021/02/05 | 62740 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
-2021/02/05 | 135011 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma
-2021/02/05 | 152746 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
-2021/02/05 | 73321 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma
-2021/02/05 | 77840 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
-2021/02/05 | 71575 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma
-2021/02/05 | 80639 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
-2021/02/05 | 258631 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma
-2021/02/05 | 295623 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
-2021/02/05 | 22043 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma
-2021/02/05 | 25039 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
-2021/02/05 | 97402 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma
-2021/02/05 | 112281 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
-2021/02/05 | 63831 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma
-2021/02/05 | 72840 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
-2021/02/05 | 94788 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma
-2021/02/05 | 113936 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
-2021/02/05 | 38058 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma
-2021/02/05 | 42663 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
-2021/02/05 | 484326 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma
-2021/02/05 | 568174 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
-2021/02/05 | 147187 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma
-2021/02/05 | 159864 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
-2021/02/05 | 94804 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma
-2021/02/05 | 109150 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
-2021/02/05 | 16339 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma
-2021/02/05 | 17958 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
-2021/02/05 | 28229 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma
-2021/02/05 | 30030 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
-2021/02/05 | 624932 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma
-2021/02/05 | 680060 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
-2021/02/05 | 531716 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma
-2021/02/05 | 596723 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
-2021/02/05 | 475818 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma
-2021/02/05 | 514088 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
-2021/02/05 | 94377 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma
-2021/02/05 | 103331 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
-2021/02/05 | 1685633 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma
-2021/02/05 | 2002725 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
-2021/02/05 | 67684 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma
-2021/02/05 | 74158 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
-2021/02/05 | 27462 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma
-2021/02/05 | 31542 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
-2021/02/05 | 7748 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma
-2021/02/05 | 8773 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
-2021/02/05 | 195627 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma
-2021/02/05 | 213738 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
-2021/02/05 | 250204 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma
-2021/02/05 | 283982 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
-2021/02/05 | 97121 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma
-2021/02/05 | 101859 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
-2021/02/05 | 60606 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-2.9.tar.lzma
-2021/02/05 | 67915 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-x64-2.9.tar.lzma
-2021/02/05 | 124938 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma
-2021/02/05 | 136346 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
-2021/02/05 | 147086 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma
-2021/02/05 | 163797 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
-2021/02/05 | 199585 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma
-2021/02/05 | 180160 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
-2021/02/05 | 67357 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma
-2021/02/05 | 77430 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
-2021/02/05 | 31229 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma
-2021/02/05 | 35065 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
-2021/02/05 | 38070 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma
-2021/02/05 | 42551 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
-2021/02/05 | 42873 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma
-2021/02/05 | 46959 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
-2021/02/05 | 45897 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma
-2021/02/05 | 52402 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
-2021/02/05 | 193758 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma
-2021/02/05 | 210930 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
-2021/02/05 | 35425 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma
-2021/02/05 | 40230 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
-2021/02/05 | 740141 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma
-2021/02/05 | 813999 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
-2021/02/05 | 198080 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma
-2021/02/05 | 202649 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
-2021/02/05 | 208087 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma
-2021/02/05 | 243511 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
-2021/02/05 | 78748 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma
-2021/02/05 | 87769 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
-2021/02/05 | 1171817 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma
-2021/02/05 | 1307389 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
-2021/02/05 | 20120 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma
-2021/02/05 | 23882 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
-2021/02/05 | 31550 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma
-2021/02/05 | 37249 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
-2021/02/05 | 63929 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma
-2021/02/05 | 71966 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
-2021/02/05 | 43565 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma
-2021/02/05 | 52055 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
-2021/02/05 | 1291602 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma
-2021/02/05 | 1421910 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
-2021/02/05 | 42399 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma
-2021/02/05 | 51864 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
-2021/02/05 | 56325 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma
-2021/02/05 | 59809 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma
-2021/02/05 | 25333 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma
-2021/02/05 | 27442 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
-2021/02/05 | 16112 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma
-2021/02/05 | 18107 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
-2021/02/05 | 63764 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma
-2021/02/05 | 70203 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
-2021/02/05 | 153807 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma
-2021/02/05 | 167738 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
-2021/02/05 | 56978 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma
-2021/02/05 | 65323 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
-2021/02/05 | 99606 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma
-2021/02/05 | 104761 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
-2021/02/05 | 2495614 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma
-2021/02/05 | 2617421 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
-2021/02/05 | 55375 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma
-2021/02/05 | 62082 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
-2021/02/05 | 33531 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma
-2021/02/05 | 37309 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma
-2021/02/05 | 27217 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma
-2021/02/05 | 33144 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
-2021/02/05 | 65815 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma
-2021/02/05 | 70424 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
-2021/02/05 | 310965 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma
-2021/02/05 | 345231 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
-2021/02/05 | 583739 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma
-2021/02/05 | 619143 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
-2021/02/05 | 39537 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma
-2021/02/05 | 43384 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
-2021/02/05 | 206609 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
-2021/02/05 | 1248275 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
-2021/02/05 | 1165022 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
-2021/02/05 | 13466 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma
-2021/02/05 | 14342 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
+2021/02/06 | 564663 | systems/win32/miktex/tm/packages/next/files.csv.lzma
+2021/02/06 | 50704 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma
+2021/02/06 | 56455 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
+2021/02/06 | 969228 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma
+2021/02/06 | 1078967 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
+2021/02/06 | 29021 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma
+2021/02/06 | 31345 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
+2021/02/06 | 29511 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma
+2021/02/06 | 34306 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
+2021/02/06 | 50030 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma
+2021/02/06 | 57609 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
+2021/02/06 | 85304 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma
+2021/02/06 | 94598 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
+2021/02/06 | 67496 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma
+2021/02/06 | 75340 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
+2021/02/06 | 27204 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma
+2021/02/06 | 30875 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
+2021/02/06 | 329919 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma
+2021/02/06 | 392681 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
+2021/02/06 | 32544 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma
+2021/02/06 | 36677 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
+2021/02/06 | 51408 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma
+2021/02/06 | 56600 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
+2021/02/06 | 231667 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma
+2021/02/06 | 254183 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
+2021/02/06 | 179467 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma
+2021/02/06 | 195675 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
+2021/02/06 | 52497 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma
+2021/02/06 | 59145 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
+2021/02/06 | 21130 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma
+2021/02/06 | 23312 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
+2021/02/06 | 461387 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma
+2021/02/06 | 45635 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma
+2021/02/06 | 51185 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
+2021/02/06 | 281360 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma
+2021/02/06 | 320796 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
+2021/02/06 | 40965 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma
+2021/02/06 | 45272 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
+2021/02/06 | 116935 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma
+2021/02/06 | 131491 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
+2021/02/06 | 1281720 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma
+2021/02/06 | 1417675 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
+2021/02/06 | 87637 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma
+2021/02/06 | 99483 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
+2021/02/06 | 43071 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma
+2021/02/06 | 47903 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
+2021/02/06 | 25128 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma
+2021/02/06 | 28006 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
+2021/02/06 | 55851 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma
+2021/02/06 | 62740 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
+2021/02/06 | 135011 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma
+2021/02/06 | 152745 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
+2021/02/06 | 73323 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma
+2021/02/06 | 77840 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
+2021/02/06 | 71575 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma
+2021/02/06 | 80638 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
+2021/02/06 | 258629 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma
+2021/02/06 | 295622 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
+2021/02/06 | 22044 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma
+2021/02/06 | 25039 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
+2021/02/06 | 97403 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma
+2021/02/06 | 112281 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
+2021/02/06 | 63831 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma
+2021/02/06 | 72841 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
+2021/02/06 | 94788 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma
+2021/02/06 | 113936 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
+2021/02/06 | 38057 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma
+2021/02/06 | 42661 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
+2021/02/06 | 484326 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma
+2021/02/06 | 568172 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
+2021/02/06 | 147187 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma
+2021/02/06 | 159864 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
+2021/02/06 | 94803 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma
+2021/02/06 | 109149 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
+2021/02/06 | 16339 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma
+2021/02/06 | 17958 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
+2021/02/06 | 28228 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma
+2021/02/06 | 30030 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
+2021/02/06 | 624931 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma
+2021/02/06 | 680061 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
+2021/02/06 | 531716 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma
+2021/02/06 | 596720 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
+2021/02/06 | 475818 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma
+2021/02/06 | 514087 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
+2021/02/06 | 94377 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma
+2021/02/06 | 103330 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
+2021/02/06 | 1685634 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma
+2021/02/06 | 2002726 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
+2021/02/06 | 67684 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma
+2021/02/06 | 74158 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
+2021/02/06 | 27462 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma
+2021/02/06 | 31542 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
+2021/02/06 | 7747 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma
+2021/02/06 | 8772 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
+2021/02/06 | 195626 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma
+2021/02/06 | 213739 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
+2021/02/06 | 250203 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma
+2021/02/06 | 283983 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
+2021/02/06 | 97120 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma
+2021/02/06 | 101859 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
+2021/02/06 | 60606 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-2.9.tar.lzma
+2021/02/06 | 67915 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-x64-2.9.tar.lzma
+2021/02/06 | 124938 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma
+2021/02/06 | 136345 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
+2021/02/06 | 147085 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma
+2021/02/06 | 163796 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
+2021/02/06 | 199585 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma
+2021/02/06 | 180160 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
+2021/02/06 | 67355 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma
+2021/02/06 | 77429 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
+2021/02/06 | 31227 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma
+2021/02/06 | 35063 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
+2021/02/06 | 38068 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma
+2021/02/06 | 42551 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
+2021/02/06 | 42870 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma
+2021/02/06 | 46959 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
+2021/02/06 | 45898 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma
+2021/02/06 | 52403 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
+2021/02/06 | 193758 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma
+2021/02/06 | 210932 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
+2021/02/06 | 35424 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma
+2021/02/06 | 40230 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
+2021/02/06 | 740142 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma
+2021/02/06 | 813998 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
+2021/02/06 | 198080 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma
+2021/02/06 | 202649 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
+2021/02/06 | 208086 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma
+2021/02/06 | 243510 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
+2021/02/06 | 78748 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma
+2021/02/06 | 87770 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
+2021/02/06 | 1171815 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma
+2021/02/06 | 1307387 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
+2021/02/06 | 20120 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma
+2021/02/06 | 23880 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
+2021/02/06 | 31549 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma
+2021/02/06 | 37250 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
+2021/02/06 | 63927 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma
+2021/02/06 | 71965 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
+2021/02/06 | 43564 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma
+2021/02/06 | 52055 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
+2021/02/06 | 1291600 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma
+2021/02/06 | 1421908 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
+2021/02/06 | 42398 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma
+2021/02/06 | 51863 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
+2021/02/06 | 56324 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma
+2021/02/06 | 59809 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma
+2021/02/06 | 25331 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma
+2021/02/06 | 27442 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
+2021/02/06 | 16112 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma
+2021/02/06 | 18108 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
+2021/02/06 | 63763 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma
+2021/02/06 | 70202 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
+2021/02/06 | 153808 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma
+2021/02/06 | 167738 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
+2021/02/06 | 56977 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma
+2021/02/06 | 65322 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
+2021/02/06 | 99608 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma
+2021/02/06 | 104758 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
+2021/02/06 | 2495611 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma
+2021/02/06 | 2617419 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
+2021/02/06 | 55373 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma
+2021/02/06 | 62081 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
+2021/02/06 | 33533 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma
+2021/02/06 | 37310 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma
+2021/02/06 | 27213 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma
+2021/02/06 | 33142 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
+2021/02/06 | 65815 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma
+2021/02/06 | 70424 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
+2021/02/06 | 310963 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma
+2021/02/06 | 345230 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
+2021/02/06 | 583740 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma
+2021/02/06 | 619142 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
+2021/02/06 | 39537 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma
+2021/02/06 | 43385 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
+2021/02/06 | 206644 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
+2021/02/06 | 1248190 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
+2021/02/06 | 1165810 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
+2021/02/06 | 13467 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma
+2021/02/06 | 14343 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
2019/03/12 | 1412 | systems/win32/miktex/tm/packages/nextpage.tar.lzma
-2021/02/05 | 1153 | systems/win32/miktex/tm/packages/next/pr.ini
+2021/02/06 | 1153 | systems/win32/miktex/tm/packages/next/pr.ini
2018/07/06 | 145915 | systems/win32/miktex/tm/packages/nexus-otf.tar.lzma
2017/03/30 | 191149 | systems/win32/miktex/tm/packages/nfssext-cfr.tar.lzma
2012/12/20 | 612251 | systems/win32/miktex/tm/packages/nicefilelist.tar.lzma
@@ -278819,7 +278819,7 @@
2020/10/20 | 342254 | systems/win32/miktex/tm/packages/preview.tar.lzma
2019/06/20 | 375963 | systems/win32/miktex/tm/packages/prftree.tar.lzma
2020/10/27 | 357822 | systems/win32/miktex/tm/packages/principia.tar.lzma
-2021/02/05 | 851 | systems/win32/miktex/tm/packages/pr.ini
+2021/02/06 | 851 | systems/win32/miktex/tm/packages/pr.ini
2010/09/27 | 248469 | systems/win32/miktex/tm/packages/printlen.tar.lzma
2008/06/17 | 77313 | systems/win32/miktex/tm/packages/proba.tar.lzma
2017/07/12 | 988486 | systems/win32/miktex/tm/packages/probsoln.tar.lzma
@@ -279995,7 +279995,7 @@
2021/02/03 | 5178004 | systems/win32/w32tex/aleph-w32.tar.xz
2021/02/02 | 66704360 | systems/win32/w32tex/biblatex-biber.tar.xz
2016/12/13 | 65971452 | systems/win32/w32tex/cbfonts.tar.xz
-2021/02/04 | 778296 | systems/win32/w32tex/ChangeLog
+2021/02/05 | 778401 | systems/win32/w32tex/ChangeLog
2009/08/03 | 141221 | systems/win32/w32tex/ChangeLog.0
2009/08/03 | 221890 | systems/win32/w32tex/ChangeLog.1
2009/08/03 | 116462 | systems/win32/w32tex/ChangeLog.2
@@ -280019,7 +280019,7 @@
2021/01/09 | 34772856 | systems/win32/w32tex/latex.tar.xz
2020/12/05 | 1008204 | systems/win32/w32tex/lcdf-typetools-w32.tar.xz
2020/12/18 | 403185380 | systems/win32/w32tex/ltxpkgdocs.tar.xz
-2021/02/03 | 33962004 | systems/win32/w32tex/ltxpkgs.tar.xz
+2021/02/05 | 33963216 | systems/win32/w32tex/ltxpkgs.tar.xz
2021/02/02 | 3821648 | systems/win32/w32tex/luajittex-dev-w32.tar.xz
2021/02/02 | 3811536 | systems/win32/w32tex/luajittex-exp-w32.tar.xz
2021/02/02 | 3819316 | systems/win32/w32tex/luajittex-w32.tar.xz
@@ -280038,7 +280038,7 @@
2021/01/13 | 1232056 | systems/win32/w32tex/omegaj-w32.tar.xz
2020/11/16 | 324540 | systems/win32/w32tex/otfbeta.tar.xz
2021/02/03 | 21428968 | systems/win32/w32tex/pdftex-w32.tar.xz
-2021/01/29 | 90237136 | systems/win32/w32tex/pgfcontrib.tar.xz
+2021/02/05 | 90425776 | systems/win32/w32tex/pgfcontrib.tar.xz
2015/01/26 | 189072 | systems/win32/w32tex/plain2-2.54-w32.tar.xz
2020/11/27 | 2807432 | systems/win32/w32tex/platex.tar.xz
2021/01/31 | 1598692 | systems/win32/w32tex/pmx.tar.xz
@@ -280216,7 +280216,7 @@
2004/06/04 | 404 | tds/tds.sed
2004/06/23 | 65418 | tds/tds.tex
2019/05/29 | 304264 | tds.zip
-2021/02/06 | 186 | timestamp
+2021/02/07 | 186 | timestamp
2002/08/26 | 61898 | usergrps/dante/antrag.pdf
2002/08/26 | 118217 | usergrps/dante/antrag.ps
2017/06/30 | 917 | usergrps/dante/dtk/doc/beispiel.bib
diff --git a/FILES.byname.gz b/FILES.byname.gz
index 0ace614eb5..0a79730907 100644
--- a/FILES.byname.gz
+++ b/FILES.byname.gz
Binary files differ
diff --git a/FILES.last07days b/FILES.last07days
index c4f38bcbfa..3a7ff4ae53 100644
--- a/FILES.last07days
+++ b/FILES.last07days
@@ -1,32 +1,362 @@
-2021/02/05 | 99606 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma
+2021/02/06 | 99608 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma
+2021/02/06 | 99483 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
+2021/02/06 | 97403 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma
+2021/02/06 | 97144 | systems/texlive/tlnet/archive/hyperref.r57623.tar.xz
+2021/02/06 | 97120 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma
+2021/02/06 | 969228 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma
+2021/02/06 | 94803 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma
+2021/02/06 | 94788 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma
+2021/02/06 | 94598 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
+2021/02/06 | 94377 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma
+2021/02/06 | 934 | macros/latex/contrib/europecv/examples/greek-utf8.tex
+2021/02/06 | 916 | macros/latex/contrib/europecv/examples/maltese-maltese.tex
+2021/02/06 | 9019 | macros/latex/contrib/babel-contrib/sorbian/lsorbian.dtx
+2021/02/06 | 8800 | macros/latex/contrib/europecv/templates/cv_template_academic_en.tex
+2021/02/06 | 87770 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
+2021/02/06 | 8772 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
+2021/02/06 | 87637 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma
+2021/02/06 | 86999 | macros/latex/contrib/europecv/examples/greek-utf8.pdf
+2021/02/06 | 863 | macros/latex/contrib/europecv/examples/maltese-utf8.tex
+2021/02/06 | 85304 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma
+2021/02/06 | 851 | systems/win32/miktex/tm/packages/pr.ini
+2021/02/06 | 82096 | systems/texlive/tlnet/archive/bxjscls.source.r57625.tar.xz
+2021/02/06 | 813998 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
+2021/02/06 | 80638 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
+2021/02/06 | 795474 | macros/latex/contrib/suftesi/suftesi.pdf
+2021/02/06 | 78748 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma
+2021/02/06 | 77840 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
+2021/02/06 | 7747 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma
+2021/02/06 | 77429 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
+2021/02/06 | 765 | macros/latex/contrib/europecv/examples/bulgarian-koi8-r.tex
+2021/02/06 | 75340 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
+2021/02/06 | 74158 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
+2021/02/06 | 740142 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma
+2021/02/06 | 73323 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma
+2021/02/06 | 72841 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
+2021/02/06 | 71965 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
+2021/02/06 | 71575 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma
+2021/02/06 | 70424 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
+2021/02/06 | 70202 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
+2021/02/06 | 6975 | macros/latex/contrib/europecv/examples/at.pdf
+2021/02/06 | 681673 | macros/latex/contrib/suftesi/templates.zip
+2021/02/06 | 680061 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
+2021/02/06 | 67915 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-x64-2.9.tar.lzma
+2021/02/06 | 67684 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma
+2021/02/06 | 67496 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma
+2021/02/06 | 673565 | macros/latex/contrib/ragged2e.zip
+2021/02/06 | 67355 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma
+2021/02/06 | 662190 | macros/latex/contrib/europecv/europecv.pdf
+2021/02/06 | 65815 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma
+2021/02/06 | 65322 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
+2021/02/06 | 63927 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma
+2021/02/06 | 63831 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma
+2021/02/06 | 63763 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma
+2021/02/06 | 63514 | macros/latex/contrib/fontsize/fontsize.dtx
+2021/02/06 | 631676 | systems/texlive/tlnet/archive/atkinson.doc.r57624.tar.xz
+2021/02/06 | 62740 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
+2021/02/06 | 624931 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma
+2021/02/06 | 62081 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
+2021/02/06 | 619142 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
+2021/02/06 | 60606 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-2.9.tar.lzma
+2021/02/06 | 59809 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma
+2021/02/06 | 596720 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
+2021/02/06 | 59145 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
+2021/02/06 | 583740 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma
+2021/02/06 | 5826414 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2021/02/06 | 57609 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
+2021/02/06 | 56977 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma
+2021/02/06 | 568172 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
+2021/02/06 | 56600 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
+2021/02/06 | 564663 | systems/win32/miktex/tm/packages/next/files.csv.lzma
+2021/02/06 | 56455 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
+2021/02/06 | 563993 | systems/win32/miktex/tm/packages/files.csv.lzma
+2021/02/06 | 56324 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma
+2021/02/06 | 55851 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma
+2021/02/06 | 55373 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma
+2021/02/06 | 531716 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma
+2021/02/06 | 52896 | macros/latex/contrib/europecv/europecv.tex
+2021/02/06 | 52497 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma
+2021/02/06 | 52403 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
+2021/02/06 | 523 | graphics/pgf/contrib/spath3/README
+2021/02/06 | 52055 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
+2021/02/06 | 51863 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
+2021/02/06 | 5148 | macros/latex/contrib/babel-contrib/portuges/portuges.ins
+2021/02/06 | 51408 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma
+2021/02/06 | 514087 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
+2021/02/06 | 51185 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
+2021/02/06 | 50704 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma
+2021/02/06 | 50552 | systems/texlive/tlnet/archive/yathesis.source.r57628.tar.xz
+2021/02/06 | 50030 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma
+2021/02/06 | 4999 | macros/latex/contrib/babel-contrib/sorbian/sorbian.ins
+2021/02/06 | 4940 | macros/latex/contrib/babel-contrib/swedish/swedish.ins
+2021/02/06 | 4940 | macros/latex/contrib/babel-contrib/slovenian/slovene.ins
+2021/02/06 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2021/02/06 | 489 | macros/latex/contrib/babel-contrib/portuges/README.md
+2021/02/06 | 484326 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma
+2021/02/06 | 47903 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
+2021/02/06 | 4778 | macros/latex/contrib/europecv/templates/cv_template_en.tex
+2021/02/06 | 475818 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma
+2021/02/06 | 4755 | macros/latex/contrib/babel-contrib/finnish/finnish.ins
+2021/02/06 | 47274 | macros/latex/contrib/europecv/examples/Pythagoras.jpg
+2021/02/06 | 4699076 | systems/texlive/tlnet/archive/yathesis.doc.r57628.tar.xz
+2021/02/06 | 46959 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
+2021/02/06 | 464 | macros/latex/contrib/babel-contrib/finnish/README.md
+2021/02/06 | 4646 | macros/latex/contrib/europecv/examples/EuropeFlagCMYK.eps
+2021/02/06 | 4646 | macros/latex/contrib/europecv/EuropeFlagCMYK.eps
+2021/02/06 | 463 | macros/latex/contrib/babel-contrib/swedish/README.md
+2021/02/06 | 4631 | macros/latex/contrib/europecv/EuropeFlagBW.eps
+2021/02/06 | 461387 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma
+2021/02/06 | 4595 | macros/latex/contrib/europecv/EuropeFlagBlueCMYK.eps
+2021/02/06 | 45898 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma
+2021/02/06 | 4588 | macros/latex/contrib/europecv/EuropeFlagWB.eps
+2021/02/06 | 45635 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma
+2021/02/06 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2021/02/06 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2021/02/06 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2021/02/06 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2021/02/06 | 45272 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
+2021/02/06 | 446160 | systems/texlive/tlnet/archive/hyperref.source.r57623.tar.xz
+2021/02/06 | 4458 | macros/latex/contrib/cmap/README
+2021/02/06 | 436 | macros/latex/contrib/babel-contrib/sorbian/README.md
+2021/02/06 | 43564 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma
+2021/02/06 | 434 | macros/latex/contrib/babel-contrib/slovenian/README.md
+2021/02/06 | 43385 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
+2021/02/06 | 43071 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma
+2021/02/06 | 42870 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma
+2021/02/06 | 42661 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
+2021/02/06 | 42551 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
+2021/02/06 | 42398 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma
+2021/02/06 | 4207 | macros/latex/contrib/europecv/CONTRIBUTING.md
+2021/02/06 | 41376 | systems/texlive/tlnet/archive/tuda-ci.r57627.tar.xz
+2021/02/06 | 410 | macros/latex/contrib/babel-contrib/danish/README.md
+2021/02/06 | 40965 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma
+2021/02/06 | 40230 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
+2021/02/06 | 39537 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma
+2021/02/06 | 392 | systems/texlive/tlnet/archive/texlive-docindex.r57622.tar.xz
+2021/02/06 | 392681 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
+2021/02/06 | 38531 | macros/latex/contrib/europecv/templates/cv_template_academic_en.pdf
+2021/02/06 | 38068 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma
+2021/02/06 | 38057 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma
+2021/02/06 | 37766 | macros/latex/contrib/europecv/examples/europasslogo.eps
+2021/02/06 | 37766 | macros/latex/contrib/europecv/europasslogo.eps
+2021/02/06 | 3744 | macros/latex/contrib/cmap/lgr.cmap
+2021/02/06 | 37310 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma
+2021/02/06 | 37250 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
+2021/02/06 | 37248 | macros/latex/contrib/europecv/examples/minimal.pdf
+2021/02/06 | 36677 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
+2021/02/06 | 3609 | macros/latex/contrib/cmap/lfe.cmap
+2021/02/06 | 3574 | macros/latex/contrib/cmap/cmap.sty
+2021/02/06 | 35424 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma
+2021/02/06 | 352019 | macros/latex/contrib/fontsize.zip
+2021/02/06 | 35063 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
+2021/02/06 | 35036 | systems/texlive/tlnet/archive/pdfpages.source.r57626.tar.xz
+2021/02/06 | 345230 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
+2021/02/06 | 3438 | macros/latex/contrib/europecv/ecvgr.def
+2021/02/06 | 343569 | macros/latex/contrib/fontsize/fontsize.pdf
+2021/02/06 | 34306 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
+2021/02/06 | 34265 | macros/latex/contrib/europecv/europasslogo.pdf
+2021/02/06 | 337140 | systems/texlive/tlnet/archive/atkinson.r57624.tar.xz
+2021/02/06 | 3356 | macros/latex/contrib/europecv/examples/EuropeFlagCMYK-eps-converted-to.pdf
+2021/02/06 | 33533 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma
+2021/02/06 | 33142 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
+2021/02/06 | 329919 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma
+2021/02/06 | 3293 | macros/latex/contrib/cmap/lae.cmap
+2021/02/06 | 32932 | systems/texlive/tlnet/archive/bxjscls.r57625.tar.xz
+2021/02/06 | 3277320 | systems/texlive/tlnet/archive/hyperref.doc.r57623.tar.xz
+2021/02/06 | 32544 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma
+2021/02/06 | 320796 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
+2021/02/06 | 319708 | systems/texlive/tlnet/archive/pdfpages.doc.r57626.tar.xz
+2021/02/06 | 31728 | macros/latex/contrib/europecv/templates/cv_template_en.pdf
+2021/02/06 | 31549 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma
+2021/02/06 | 31542 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
+2021/02/06 | 31345 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
+2021/02/06 | 31227 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma
+2021/02/06 | 310963 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma
+2021/02/06 | 30875 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
+2021/02/06 | 30030 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
+2021/02/06 | 295622 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
+2021/02/06 | 29511 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma
+2021/02/06 | 29021 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma
+2021/02/06 | 2889 | macros/latex/contrib/europecv/CHANGELOG.rst
+2021/02/06 | 283983 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
+2021/02/06 | 28228 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma
+2021/02/06 | 281360 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma
+2021/02/06 | 28006 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
+2021/02/06 | 279253 | macros/latex/contrib/babel-contrib/sorbian.zip
+2021/02/06 | 27462 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma
+2021/02/06 | 27442 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
+2021/02/06 | 27213 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma
+2021/02/06 | 27204 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma
+2021/02/06 | 2690 | macros/latex/contrib/europecv/examples/europass-cv.tex
+2021/02/06 | 2617419 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
+2021/02/06 | 258629 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma
+2021/02/06 | 2573 | macros/latex/contrib/cmap/t5.cmap
+2021/02/06 | 254183 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
+2021/02/06 | 25331 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma
+2021/02/06 | 25128 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma
+2021/02/06 | 25039 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
+2021/02/06 | 250203 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma
+2021/02/06 | 2498 | macros/latex/contrib/europecv/ecvbg.def
+2021/02/06 | 2495611 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma
+2021/02/06 | 248660 | graphics/pgf/contrib/spath3/spath3_code.dtx
+2021/02/06 | 24615689 | systems/texlive/tlnet/install-tl.zip
+2021/02/06 | 243510 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
+2021/02/06 | 2407 | macros/latex/contrib/europecv/README.md
+2021/02/06 | 23880 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
+2021/02/06 | 23620 | macros/latex/contrib/europecv/europecv.cls
+2021/02/06 | 2340 | macros/latex/contrib/europecv/EuropeFlagBW.pdf
+2021/02/06 | 23312 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
+2021/02/06 | 23212 | systems/texlive/tlnet/archive/yathesis.r57628.tar.xz
+2021/02/06 | 231667 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma
+2021/02/06 | 2278188 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2021/02/06 | 2272 | macros/latex/contrib/europecv/EuropeFlagWB.pdf
+2021/02/06 | 2259 | macros/latex/contrib/europecv/EuropeFlagCMYK.pdf
+2021/02/06 | 2249 | macros/latex/contrib/europecv/EuropeFlagBlueCMYK.pdf
+2021/02/06 | 224305 | macros/latex/contrib/europecv/examples/europass-cv.pdf
+2021/02/06 | 2213 | macros/latex/contrib/europecv/ecvfr.def
+2021/02/06 | 22044 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma
+2021/02/06 | 2199 | macros/latex/contrib/europecv/ecvlt.def
+2021/02/06 | 2194 | macros/latex/contrib/europecv/ecvsk.def
+2021/02/06 | 218848 | systems/texlive/tlnet/archive/texlive-scripts.doc.r57622.tar.xz
+2021/02/06 | 2182 | macros/latex/contrib/europecv/ecvcs.def
+2021/02/06 | 2173 | macros/latex/contrib/europecv/ecvsv.def
+2021/02/06 | 2169 | macros/latex/contrib/europecv/ecves.def
+2021/02/06 | 2166 | macros/latex/contrib/europecv/ecvfi.def
+2021/02/06 | 2145 | macros/latex/contrib/europecv/ecvpt.def
+2021/02/06 | 213739 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
+2021/02/06 | 2129 | macros/latex/contrib/europecv/ecvgl.def
+2021/02/06 | 211875 | macros/latex/contrib/suftesi/suftesi.dtx
+2021/02/06 | 21130 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma
+2021/02/06 | 210932 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
+2021/02/06 | 2090 | macros/latex/contrib/europecv/ecvis.def
+2021/02/06 | 2084 | macros/latex/contrib/europecv/ecvhu.def
+2021/02/06 | 2082 | macros/latex/contrib/europecv/ecvde.def
+2021/02/06 | 208086 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma
+2021/02/06 | 206644 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
+2021/02/06 | 206630 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
+2021/02/06 | 2062 | macros/latex/contrib/europecv/ecvit.def
+2021/02/06 | 2061 | macros/latex/contrib/europecv/ecvda.def
+2021/02/06 | 2055 | macros/latex/contrib/europecv/ecven.def
+2021/02/06 | 2044 | macros/latex/contrib/europecv/ecvro.def
+2021/02/06 | 2043 | macros/latex/contrib/europecv/ecvsl.def
+2021/02/06 | 2034 | macros/latex/contrib/europecv/ecvet.def
+2021/02/06 | 202649 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
+2021/02/06 | 2018 | macros/latex/contrib/europecv/ecvsr.def
+2021/02/06 | 20120 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma
+2021/02/06 | 2002726 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
+2021/02/06 | 199585 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma
+2021/02/06 | 198080 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma
+2021/02/06 | 19658216 | systems/texlive/tlnet/install-tl-windows.exe
+2021/02/06 | 195675 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
+2021/02/06 | 195626 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma
+2021/02/06 | 1938 | macros/latex/contrib/cmap/t1.cmap
+2021/02/06 | 193758 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma
+2021/02/06 | 19106 | macros/latex/contrib/europecv/LICENSE
+2021/02/06 | 1908 | systems/texlive/tlnet/archive/collection-fontsextra.r57624.tar.xz
+2021/02/06 | 1872 | macros/latex/contrib/cmap/t2a.cmap
+2021/02/06 | 18227 | macros/latex/contrib/babel-contrib/swedish/swedish.dtx
+2021/02/06 | 1810 | macros/latex/contrib/europecv/ecvlv.def
+2021/02/06 | 18108 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
+2021/02/06 | 180160 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
+2021/02/06 | 17958 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
+2021/02/06 | 179467 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma
+2021/02/06 | 17927 | macros/latex/contrib/babel-contrib/portuges/portuges.dtx
+2021/02/06 | 1790 | macros/latex/contrib/europecv/ecvmt.def
+2021/02/06 | 1755 | macros/latex/contrib/europecv/ecvpl.def
+2021/02/06 | 1752 | macros/latex/contrib/cmap/t2c.cmap
+2021/02/06 | 1735 | macros/latex/contrib/europecv/ecvca.def
+2021/02/06 | 1730 | macros/latex/contrib/cmap/ot6.cmap
+2021/02/06 | 172756 | systems/texlive/tlnet/archive/texlive-docindex.doc.r57622.tar.xz
+2021/02/06 | 1720 | macros/latex/contrib/europecv/ecvno.def
+2021/02/06 | 1713 | macros/latex/contrib/europecv/ecvnl.def
+2021/02/06 | 17029201 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2021/02/06 | 1685634 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma
+2021/02/06 | 1680 | macros/latex/contrib/cmap/t2b.cmap
+2021/02/06 | 167738 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
+2021/02/06 | 1670 | macros/latex/contrib/suftesi/README
+2021/02/06 | 1668162 | macros/latex/contrib/nicematrix.zip
+2021/02/06 | 163 | macros/latex/contrib/europecv/examples/minimal.tex
+2021/02/06 | 163796 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
+2021/02/06 | 16339 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma
+2021/02/06 | 16112 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma
+2021/02/06 | 160184 | macros/latex/contrib/babel-contrib/portuges.zip
+2021/02/06 | 159864 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
+2021/02/06 | 1569258 | graphics/pgf/contrib/spath3.zip
+2021/02/06 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2021/02/06 | 153808 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma
+2021/02/06 | 153755 | macros/latex/contrib/babel-contrib/portuges/portuges.pdf
+2021/02/06 | 153608 | macros/latex/contrib/babel-contrib/finnish.zip
+2021/02/06 | 15358 | macros/latex/contrib/babel-contrib/sorbian/usorbian.dtx
+2021/02/06 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2021/02/06 | 152745 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
+2021/02/06 | 1526733 | install/macros/latex/contrib/suftesi.tds.zip
+2021/02/06 | 15186 | macros/latex/contrib/cmap.zip
+2021/02/06 | 1518456 | systems/texlive/tlnet/archive/bxjscls.doc.r57625.tar.xz
+2021/02/06 | 1511 | macros/latex/contrib/fontsize/README
+2021/02/06 | 1510760 | macros/latex/contrib/suftesi.zip
+2021/02/06 | 147638 | macros/latex/contrib/babel-contrib/finnish/finnish.pdf
+2021/02/06 | 147187 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma
+2021/02/06 | 147085 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma
+2021/02/06 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2021/02/06 | 14591 | macros/latex/contrib/babel-contrib/finnish/finnish.dtx
+2021/02/06 | 145244 | macros/latex/contrib/babel-contrib/swedish.zip
+2021/02/06 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2021/02/06 | 14480 | macros/latex/contrib/europecv/examples/europasslogo-eps-converted-to.pdf
+2021/02/06 | 14343 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
+2021/02/06 | 1421908 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
+2021/02/06 | 141792 | macros/latex/contrib/babel-contrib/danish.zip
+2021/02/06 | 1417675 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
+2021/02/06 | 140993 | macros/latex/contrib/babel-contrib/slovenian.zip
+2021/02/06 | 140300 | macros/latex/contrib/babel-contrib/sorbian/usorbian.pdf
+2021/02/06 | 13960 | systems/texlive/tlnet/archive/pdfpages.r57626.tar.xz
+2021/02/06 | 138372 | macros/latex/contrib/babel-contrib/swedish/swedish.pdf
+2021/02/06 | 136345 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
+2021/02/06 | 136164 | macros/latex/contrib/babel-contrib/danish/danish.pdf
+2021/02/06 | 135706 | macros/latex/contrib/babel-contrib/slovenian/slovene.pdf
+2021/02/06 | 135011 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma
+2021/02/06 | 13467 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma
+2021/02/06 | 13421 | macros/latex/contrib/babel-contrib/danish/danish.dtx
+2021/02/06 | 132340 | systems/texlive/tlnet/archive/texlive-scripts.r57622.tar.xz
+2021/02/06 | 131491 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
+2021/02/06 | 131086 | macros/latex/contrib/babel-contrib/sorbian/lsorbian.pdf
+2021/02/06 | 1307387 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
+2021/02/06 | 1291600 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma
+2021/02/06 | 1281720 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma
+2021/02/06 | 124938 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma
+2021/02/06 | 1248190 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
+2021/02/06 | 1248127 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
+2021/02/06 | 1207 | macros/latex/contrib/cmap/ot1.cmap
+2021/02/06 | 11944 | macros/latex/contrib/babel-contrib/slovenian/slovene.dtx
+2021/02/06 | 1175820 | macros/latex/contrib/europecv.zip
+2021/02/06 | 1171815 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma
+2021/02/06 | 116935 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma
+2021/02/06 | 1165810 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
+2021/02/06 | 1165641 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
+2021/02/06 | 1153 | systems/win32/miktex/tm/packages/next/pr.ini
+2021/02/06 | 113936 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
+2021/02/06 | 112281 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
+2021/02/06 | 1093516 | systems/texlive/tlnet/archive/tuda-ci.doc.r57627.tar.xz
+2021/02/06 | 109149 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
+2021/02/06 | 1078967 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
+2021/02/06 | 104758 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
+2021/02/06 | 1042 | macros/latex/contrib/cmap/ot1tt.cmap
+2021/02/06 | 103330 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
+2021/02/06 | 101859 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
+2021/02/06 | 1002 | macros/latex/contrib/europecv/examples/bulgarian-utf8.tex
2021/02/05 | 994 | macros/latex/contrib/hyperref/doc/manual4.html
-2021/02/05 | 99482 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
-2021/02/05 | 97402 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma
-2021/02/05 | 97121 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma
-2021/02/05 | 969228 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma
-2021/02/05 | 94804 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma
-2021/02/05 | 94788 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma
-2021/02/05 | 94599 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
-2021/02/05 | 94377 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma
2021/02/05 | 9383 | macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty
2021/02/05 | 9300 | macros/latex/contrib/tuda-ci/tex/tudamecheng.cfg
+2021/02/05 | 90425776 | systems/win32/w32tex/pgfcontrib.tar.xz
2021/02/05 | 892 | macros/latex/contrib/hyperref/doc/manual2.html
2021/02/05 | 892618 | macros/latex/contrib/hyperref/hyperref.dtx
2021/02/05 | 8860 | fonts/atkinson/map/atkinson.map
-2021/02/05 | 87769 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
-2021/02/05 | 8773 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
2021/02/05 | 87703 | language/japanese/BX/bxjscls/bxjscls-manual.tex
-2021/02/05 | 87636 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma
-2021/02/05 | 85305 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma
-2021/02/05 | 851 | systems/win32/miktex/tm/packages/pr.ini
2021/02/05 | 8513 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex
2021/02/05 | 8237 | macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty
2021/02/05 | 8140 | systems/texlive/tlnet/archive/kblocks.r57617.tar.xz
-2021/02/05 | 813999 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
2021/02/05 | 808 | fonts/atkinson/vf/atkinsn-BoldItalic-tlf-ot1.vf
2021/02/05 | 808 | fonts/atkinson/vf/atkinsn-BoldItalic-sup-ot1.vf
2021/02/05 | 808 | fonts/atkinson/vf/atkinsn-BoldItalic-lf-ot1.vf
-2021/02/05 | 80639 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
2021/02/05 | 804 | fonts/atkinson/vf/atkinsn-Regular-tlf-ot1.vf
2021/02/05 | 804 | fonts/atkinson/vf/atkinsn-Regular-sup-ot1.vf
2021/02/05 | 800 | fonts/atkinson/vf/atkinsn-Regular-lf-ot1.vf
@@ -36,101 +366,54 @@
2021/02/05 | 796 | fonts/atkinson/vf/atkinsn-Bold-tlf-ot1.vf
2021/02/05 | 796 | fonts/atkinson/vf/atkinsn-Bold-sup-ot1.vf
2021/02/05 | 796 | fonts/atkinson/vf/atkinsn-Bold-lf-ot1.vf
-2021/02/05 | 78748 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma
2021/02/05 | 78640 | systems/texlive/tlnet/archive/footnotehyper.doc.r57618.tar.xz
-2021/02/05 | 77840 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
-2021/02/05 | 7748 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma
-2021/02/05 | 77430 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
+2021/02/05 | 778401 | systems/win32/w32tex/ChangeLog
2021/02/05 | 759 | macros/latex/contrib/hyperref/doc/manual3.html
2021/02/05 | 756 | macros/latex/contrib/hyperref/doc/manual7.html
2021/02/05 | 756 | macros/latex/contrib/hyperref/doc/manual6.html
2021/02/05 | 756 | macros/latex/contrib/hyperref/doc/manual5.html
-2021/02/05 | 75341 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
2021/02/05 | 7452 | systems/texlive/tlnet/archive/innerscript.source.r57620.tar.xz
-2021/02/05 | 74158 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
-2021/02/05 | 740141 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma
2021/02/05 | 7348 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex
-2021/02/05 | 73321 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma
-2021/02/05 | 72840 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
-2021/02/05 | 71966 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
-2021/02/05 | 71575 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma
2021/02/05 | 7142 | fonts/atkinson/type1/atkinsn-RegularLCDFJ.pfb
2021/02/05 | 712 | systems/texlive/tlnet/archive/collection-luatex.r57620.tar.xz
2021/02/05 | 7125 | fonts/atkinson/type1/atkinsn-BoldItalicLCDFJ.pfb
2021/02/05 | 7120 | fonts/atkinson/type1/atkinsn-BoldLCDFJ.pfb
2021/02/05 | 7101 | fonts/atkinson/type1/atkinsn-ItalicLCDFJ.pfb
-2021/02/05 | 70424 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
2021/02/05 | 702363 | macros/latex/contrib/yathesis/exemples/specimen/comue.pdf
-2021/02/05 | 70203 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
2021/02/05 | 6893 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex
-2021/02/05 | 680060 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
-2021/02/05 | 67915 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-x64-2.9.tar.lzma
2021/02/05 | 677 | macros/latex/contrib/yathesis/exemples/specimen/latexmkrc
-2021/02/05 | 67684 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma
+2021/02/05 | 6779 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2021/02/05 | 676235 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdf
-2021/02/05 | 67497 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma
-2021/02/05 | 67357 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma
2021/02/05 | 670623 | fonts/atkinson/doc/BIA_AtkinsonHyerlegible-Specimen_200210.pdf
+2021/02/05 | 666241 | macros/latex/contrib/ragged2e/ragged2e.pdf
2021/02/05 | 6647 | macros/latex/contrib/tuda-ci/tex/tudabeamer.cls
-2021/02/05 | 65815 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma
2021/02/05 | 653814 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdf
-2021/02/05 | 65323 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
2021/02/05 | 645504 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdf
2021/02/05 | 6433490 | macros/latex/contrib/tuda-ci.zip
-2021/02/05 | 63929 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma
-2021/02/05 | 63831 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma
-2021/02/05 | 63764 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma
2021/02/05 | 6361152 | macros/latex/contrib/yathesis/doc/yathesis-fr.pdf
2021/02/05 | 6331 | macros/latex/contrib/tuda-ci/tex/tudarules.sty
-2021/02/05 | 62740 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
-2021/02/05 | 624932 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma
2021/02/05 | 621765 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdf
-2021/02/05 | 62082 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
-2021/02/05 | 619143 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
-2021/02/05 | 60606 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-2.9.tar.lzma
2021/02/05 | 5993 | language/japanese/BX/bxjscls/README.md
-2021/02/05 | 59809 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma
-2021/02/05 | 596723 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
-2021/02/05 | 59146 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
2021/02/05 | 589034 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdf
2021/02/05 | 5871 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex
2021/02/05 | 586772 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdf
-2021/02/05 | 583739 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma
2021/02/05 | 583234 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdf
-2021/02/05 | 5826191 | systems/texlive/tlnet/install-tl-unx.tar.gz
2021/02/05 | 5817 | macros/latex/contrib/tuda-ci/tex/tudacolors.sty
2021/02/05 | 5789 | macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo
2021/02/05 | 578288 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdf
-2021/02/05 | 57611 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
+2021/02/05 | 576597 | graphics/pgf/contrib/spath3/spath3_code.pdf
2021/02/05 | 574086 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdf
2021/02/05 | 5736 | macros/latex/contrib/hyperref/xr-hyper.sty
-2021/02/05 | 56978 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma
-2021/02/05 | 568174 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
-2021/02/05 | 56600 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
-2021/02/05 | 564663 | systems/win32/miktex/tm/packages/next/files.csv.lzma
-2021/02/05 | 56456 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
-2021/02/05 | 563993 | systems/win32/miktex/tm/packages/files.csv.lzma
-2021/02/05 | 56325 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma
2021/02/05 | 56016 | fonts/atkinson/doc/Atkinson-Hyperlegible-Font-License-2020-1104.pdf
2021/02/05 | 558963 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdf
-2021/02/05 | 55852 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma
-2021/02/05 | 55375 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma
2021/02/05 | 550561 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdf
+2021/02/05 | 541478 | macros/latex/contrib/nicematrix/nicematrix.dtx
2021/02/05 | 5381 | macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo
-2021/02/05 | 531716 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma
2021/02/05 | 52598 | macros/latex/contrib/yathesis/source/yathesis-samples-templates.dtx
-2021/02/05 | 52498 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma
-2021/02/05 | 52402 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
-2021/02/05 | 52055 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
2021/02/05 | 51889 | fonts/atkinson/type1/atkinsn-Bold.pfb
-2021/02/05 | 51864 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
2021/02/05 | 5143 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex
-2021/02/05 | 51410 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma
-2021/02/05 | 514088 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
2021/02/05 | 513396 | systems/texlive/tlnet/archive/texlive-common.doc.r57612.tar.xz
-2021/02/05 | 51185 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
2021/02/05 | 5090 | macros/latex/contrib/yathesis/CHANGELOG.md
-2021/02/05 | 50704 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma
2021/02/05 | 504 | fonts/atkinson/vf/atkinsn-Regular-tlf-ts1.vf
2021/02/05 | 504 | fonts/atkinson/vf/atkinsn-BoldItalic-tlf-ts1.vf
2021/02/05 | 504 | fonts/atkinson/vf/atkinsn-BoldItalic-lf-ts1.vf
@@ -139,158 +422,89 @@
2021/02/05 | 500 | fonts/atkinson/vf/atkinsn-Italic-lf-ts1.vf
2021/02/05 | 500 | fonts/atkinson/vf/atkinsn-Bold-tlf-ts1.vf
2021/02/05 | 500 | fonts/atkinson/vf/atkinsn-Bold-lf-ts1.vf
-2021/02/05 | 50032 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma
2021/02/05 | 49776 | fonts/atkinson/type1/atkinsn-BoldItalic.pfb
2021/02/05 | 49446 | fonts/atkinson/type1/atkinsn-Regular.pfb
2021/02/05 | 49213 | fonts/atkinson/type1/atkinsn-Italic.pfb
-2021/02/05 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
2021/02/05 | 4856 | macros/latex/contrib/yathesis/exemples/specimen/paris13.pdf
-2021/02/05 | 484326 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma
-2021/02/05 | 47903 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
2021/02/05 | 47613 | macros/latex/contrib/yathesis/exemples/specimen/ulco.pdf
-2021/02/05 | 475818 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma
-2021/02/05 | 46959 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
+2021/02/05 | 47480 | macros/latex/contrib/ragged2e/ragged2e.dtx
2021/02/05 | 468117 | macros/latex/contrib/hyperref/doc/manual.html
-2021/02/05 | 461388 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma
-2021/02/05 | 45897 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma
-2021/02/05 | 45637 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma
-2021/02/05 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2021/02/05 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
-2021/02/05 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2021/02/05 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
-2021/02/05 | 45271 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
2021/02/05 | 451 | fonts/atkinson/doc/atkinson-samples.tex
2021/02/05 | 4474 | macros/latex/contrib/hyperref/README.md
2021/02/05 | 4441 | macros/latex/contrib/tuda-ci/tex/tudacolors.def
-2021/02/05 | 43565 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma
-2021/02/05 | 43384 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
+2021/02/05 | 439492 | macros/latex/contrib/nicematrix/nicematrix-french.pdf
2021/02/05 | 4328 | macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty
-2021/02/05 | 43071 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma
-2021/02/05 | 42873 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma
-2021/02/05 | 42663 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
-2021/02/05 | 42551 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
-2021/02/05 | 42399 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma
-2021/02/05 | 40964 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma
2021/02/05 | 4093609 | macros/latex/contrib/yathesis/exemples/canevas-specimen.zip
2021/02/05 | 4088376 | install/macros/latex/contrib/hyperref.tds.zip
2021/02/05 | 40681 | macros/latex/contrib/tuda-ci/tex/tudapub.cls
-2021/02/05 | 40230 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
2021/02/05 | 401933 | language/japanese/BX/bxjscls/bxjscls.dtx
2021/02/05 | 3963 | macros/latex/contrib/hyperref/hyperref.ins
-2021/02/05 | 39537 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma
2021/02/05 | 3949 | fonts/atkinson/latex/atkinson.sty
2021/02/05 | 3948 | fonts/atkinson/tfm/atkinsn-BoldItalic-lf-ot1.tfm
-2021/02/05 | 392682 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
2021/02/05 | 3912 | fonts/atkinson/tfm/atkinsn-Bold-lf-ot1.tfm
2021/02/05 | 3906667 | macros/latex/contrib/hyperref.zip
2021/02/05 | 3883 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco
+2021/02/05 | 388361 | info/biblio/litprog.bib
2021/02/05 | 388329 | install/macros/latex/contrib/pdfpages.tds.zip
2021/02/05 | 382178 | language/japanese/BX/bxjscls/bxjscls-manual.pdf
2021/02/05 | 3809 | macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty
-2021/02/05 | 38070 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma
-2021/02/05 | 38058 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma
-2021/02/05 | 37309 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma
2021/02/05 | 37304 | fonts/atkinson/opentype/Atkinson-Hyperlegible-BoldItalic-102.otf
2021/02/05 | 3728 | fonts/atkinson/tfm/atkinsn-BoldItalic-tlf-ot1.tfm
-2021/02/05 | 37249 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
2021/02/05 | 3712 | fonts/atkinson/tfm/atkinsn-Bold-tlf-ot1.tfm
-2021/02/05 | 36678 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
2021/02/05 | 36588 | fonts/atkinson/opentype/Atkinson-Hyperlegible-Bold-102.otf
2021/02/05 | 358080 | macros/latex/contrib/pdfpages.zip
2021/02/05 | 35656 | fonts/atkinson/opentype/Atkinson-Hyperlegible-Italic-102.otf
-2021/02/05 | 35425 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma
+2021/02/05 | 353909 | graphics/pgf/contrib/spath3/spath3.pdf
2021/02/05 | 3508 | fonts/atkinson/tfm/atkinsn-Italic-lf-ot1.tfm
-2021/02/05 | 35065 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
2021/02/05 | 348 | systems/texlive/tlnet/archive/texlive-common.r57612.tar.xz
-2021/02/05 | 345231 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
2021/02/05 | 34436 | fonts/atkinson/opentype/Atkinson-Hyperlegible-Regular-102.otf
-2021/02/05 | 34306 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
2021/02/05 | 3428 | fonts/atkinson/tfm/atkinsn-Regular-lf-ot1.tfm
+2021/02/05 | 341151 | graphics/pgf/contrib/spath3/knots.pdf
2021/02/05 | 339680 | systems/texlive/tlnet/archive/kblocks.doc.r57617.tar.xz
+2021/02/05 | 33963216 | systems/win32/w32tex/ltxpkgs.tar.xz
2021/02/05 | 3372 | systems/texlive/tlnet/archive/footnotehyper.r57618.tar.xz
-2021/02/05 | 33531 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma
2021/02/05 | 33436 | macros/latex/contrib/yathesis/exemples/specimen/tiger.pdf
-2021/02/05 | 33144 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
-2021/02/05 | 329919 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma
2021/02/05 | 3280 | fonts/atkinson/tfm/atkinsn-Italic-tlf-ot1.tfm
-2021/02/05 | 32544 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma
2021/02/05 | 3243 | macros/latex/contrib/tuda-ci/tex/tudafonts.sty
2021/02/05 | 3232 | fonts/atkinson/tfm/atkinsn-Regular-tlf-ot1.tfm
2021/02/05 | 32212 | systems/texlive/tlnet/archive/xsim.r57619.tar.xz
2021/02/05 | 32124 | systems/texlive/tlnet/archive/gost.source.r57616.tar.xz
-2021/02/05 | 320796 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
+2021/02/05 | 3210 | info/biblio/litprog.ltx
2021/02/05 | 3187 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex
2021/02/05 | 3176 | fonts/atkinson/enc/atksn_ycy2xh.enc
-2021/02/05 | 31550 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma
-2021/02/05 | 31542 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
-2021/02/05 | 31346 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
2021/02/05 | 3124 | systems/texlive/tlnet/archive/innerscript.r57620.tar.xz
-2021/02/05 | 31229 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma
-2021/02/05 | 310965 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma
2021/02/05 | 30894 | macros/latex/contrib/pdfpages/dummy.pdf
-2021/02/05 | 30874 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
2021/02/05 | 30733 | macros/latex/contrib/tuda-ci/tex/tudathesis.cfg
2021/02/05 | 30695 | macros/latex/contrib/yathesis/exemples/specimen/these.tex
-2021/02/05 | 30030 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
+2021/02/05 | 30128 | graphics/pgf/contrib/spath3/spath3.tex
2021/02/05 | 2998504 | systems/texlive/tlnet/archive/xsim.doc.r57619.tar.xz
2021/02/05 | 2983 | macros/latex/contrib/pdfpages/pdfpages.ins
2021/02/05 | 297774 | macros/latex/contrib/pdfpages/pdfpages.pdf
2021/02/05 | 297131 | macros/latex/contrib/hyperref/doc/manual.pdf
-2021/02/05 | 295623 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
-2021/02/05 | 29511 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma
2021/02/05 | 2921 | fonts/atkinson/enc/atksn_eyh74z.enc
2021/02/05 | 2919 | fonts/atkinson/enc/atksn_oy2yah.enc
-2021/02/05 | 29026 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma
2021/02/05 | 2890 | fonts/atkinson/enc/atksn_2covbz.enc
2021/02/05 | 2883 | fonts/atkinson/enc/atksn_wy3za2.enc
2021/02/05 | 2881 | fonts/atkinson/enc/atksn_2hyoa7.enc
2021/02/05 | 2852 | fonts/atkinson/enc/atksn_cvs3iv.enc
2021/02/05 | 28410 | macros/latex/contrib/hyperref/backref.dtx
-2021/02/05 | 283982 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
-2021/02/05 | 28229 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma
-2021/02/05 | 281359 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma
-2021/02/05 | 28006 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
2021/02/05 | 2794 | fonts/atkinson/enc/atksn_vucprl.enc
2021/02/05 | 2792 | fonts/atkinson/enc/atksn_g47ykb.enc
2021/02/05 | 2763 | fonts/atkinson/enc/atksn_w3wxei.enc
-2021/02/05 | 27462 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma
-2021/02/05 | 27442 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
-2021/02/05 | 27217 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma
-2021/02/05 | 27205 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma
+2021/02/05 | 27006 | graphics/pgf/contrib/spath3/knots.tex
2021/02/05 | 2656 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib
-2021/02/05 | 2617421 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
+2021/02/05 | 259702 | graphics/pgf/contrib/spath3/calligraphy.pdf
2021/02/05 | 25897 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex
-2021/02/05 | 258631 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma
2021/02/05 | 25645 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex
2021/02/05 | 25563 | macros/latex/contrib/tuda-ci/tex/tudaexercise.cls
2021/02/05 | 25560 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex
-2021/02/05 | 254185 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
-2021/02/05 | 25333 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma
-2021/02/05 | 25128 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma
-2021/02/05 | 25039 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
-2021/02/05 | 250204 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma
-2021/02/05 | 2495614 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma
-2021/02/05 | 24615664 | systems/texlive/tlnet/install-tl.zip
-2021/02/05 | 243511 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
2021/02/05 | 2414308 | macros/latex/contrib/hyperref/doc/hyperref.pdf
-2021/02/05 | 23882 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
2021/02/05 | 23654 | macros/latex/contrib/hyperref/nameref.dtx
2021/02/05 | 2362 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex
-2021/02/05 | 23314 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
-2021/02/05 | 231666 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma
-2021/02/05 | 2277208 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
-2021/02/05 | 22043 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma
-2021/02/05 | 218848 | systems/texlive/tlnet/archive/texlive-scripts.doc.r57612.tar.xz
2021/02/05 | 218805 | macros/latex/contrib/yathesis/source/yathesis.dtx
2021/02/05 | 2180 | macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty
2021/02/05 | 2172 | macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty
-2021/02/05 | 213738 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
-2021/02/05 | 21130 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma
-2021/02/05 | 210930 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
2021/02/05 | 2081 | fonts/atkinson/README
-2021/02/05 | 208087 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma
-2021/02/05 | 206609 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
-2021/02/05 | 206583 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
2021/02/05 | 2057 | fonts/atkinson/latex/TS1atkinsn-TLF.fd
2021/02/05 | 2057 | fonts/atkinson/latex/OT1atkinsn-TLF.fd
2021/02/05 | 2057 | fonts/atkinson/latex/OT1atkinsn-Sup.fd
@@ -298,30 +512,21 @@
2021/02/05 | 2057 | fonts/atkinson/latex/LY1atkinsn-Sup.fd
2021/02/05 | 2035 | fonts/atkinson/latex/T1atkinsn-TLF.fd
2021/02/05 | 2035 | fonts/atkinson/latex/T1atkinsn-Sup.fd
-2021/02/05 | 202649 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
2021/02/05 | 2024 | fonts/atkinson/latex/TS1atkinsn-LF.fd
2021/02/05 | 2024 | fonts/atkinson/latex/OT1atkinsn-LF.fd
2021/02/05 | 2024 | fonts/atkinson/latex/LY1atkinsn-LF.fd
2021/02/05 | 20149 | fonts/atkinson/doc/atkinson-samples.pdf
-2021/02/05 | 20120 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma
2021/02/05 | 2002 | fonts/atkinson/latex/T1atkinsn-LF.fd
-2021/02/05 | 2002725 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
2021/02/05 | 2000 | fonts/atkinson/tfm/atkinsn-BoldItalic-lf-ly1--base.tfm
2021/02/05 | 1996 | fonts/atkinson/tfm/atkinsn-BoldItalic-sup-ly1.tfm
-2021/02/05 | 199585 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma
2021/02/05 | 1992 | fonts/atkinson/tfm/atkinsn-BoldItalic-sup-ly1--base.tfm
2021/02/05 | 198724 | macros/latex/contrib/hyperref/doc/backref.pdf
-2021/02/05 | 198080 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma
2021/02/05 | 1972 | fonts/atkinson/tfm/atkinsn-Italic-lf-ly1--base.tfm
-2021/02/05 | 19654863 | systems/texlive/tlnet/install-tl-windows.exe
2021/02/05 | 1964 | fonts/atkinson/tfm/atkinsn-Italic-sup-ly1.tfm
2021/02/05 | 1964 | fonts/atkinson/tfm/atkinsn-BoldItalic-tlf-ly1--base.tfm
2021/02/05 | 1960 | fonts/atkinson/tfm/atkinsn-Italic-sup-ly1--base.tfm
2021/02/05 | 1960 | fonts/atkinson/tfm/atkinsn-BoldItalic-sup-t1.tfm
-2021/02/05 | 195677 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
-2021/02/05 | 195627 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma
2021/02/05 | 1948 | fonts/atkinson/tfm/atkinsn-BoldItalic-sup-t1--base.tfm
-2021/02/05 | 193758 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma
2021/02/05 | 1936 | fonts/atkinson/tfm/atkinsn-Italic-tlf-ly1--base.tfm
2021/02/05 | 1936 | fonts/atkinson/tfm/atkinsn-BoldItalic-lf-t1--base.tfm
2021/02/05 | 1924 | fonts/atkinson/tfm/atkinsn-Italic-sup-t1.tfm
@@ -334,12 +539,8 @@
2021/02/05 | 18616 | fonts/atkinson/tfm/atkinsn-Bold-lf-t1.tfm
2021/02/05 | 18404 | fonts/atkinson/tfm/atkinsn-Bold-tlf-t1.tfm
2021/02/05 | 18335 | macros/latex/contrib/tuda-ci/tex/tudasciposter.cls
-2021/02/05 | 18107 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
2021/02/05 | 1804172 | systems/texlive/tlnet/archive/gost.doc.r57616.tar.xz
-2021/02/05 | 180160 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
2021/02/05 | 1796 | fonts/atkinson/tfm/atkinsn-Bold-lf-ly1--base.tfm
-2021/02/05 | 17958 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
-2021/02/05 | 179468 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma
2021/02/05 | 1792 | fonts/atkinson/tfm/atkinsn-Bold-sup-ly1.tfm
2021/02/05 | 1788 | fonts/atkinson/tfm/atkinsn-Bold-sup-ly1--base.tfm
2021/02/05 | 1776 | fonts/atkinson/tfm/atkinsn-Regular-lf-ly1--base.tfm
@@ -372,7 +573,6 @@
2021/02/05 | 1704 | fonts/atkinson/vf/atkinsn-Italic-tlf-t1.vf
2021/02/05 | 1704 | fonts/atkinson/vf/atkinsn-Italic-sup-t1.vf
2021/02/05 | 1704 | fonts/atkinson/tfm/atkinsn-Bold-tlf-t1--base.tfm
-2021/02/05 | 17015335 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
2021/02/05 | 1700 | fonts/atkinson/vf/atkinsn-Regular-lf-ly1.vf
2021/02/05 | 1700 | fonts/atkinson/vf/atkinsn-Italic-tlf-ly1.vf
2021/02/05 | 1700 | fonts/atkinson/vf/atkinsn-Italic-sup-ly1.vf
@@ -386,28 +586,20 @@
2021/02/05 | 1696 | fonts/atkinson/vf/atkinsn-Bold-lf-ly1.vf
2021/02/05 | 1696 | fonts/atkinson/tfm/atkinsn-Regular-tlf-t1--base.tfm
2021/02/05 | 1686 | macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo
-2021/02/05 | 1685633 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma
2021/02/05 | 1684 | macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo
2021/02/05 | 1682 | macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo
2021/02/05 | 16824 | fonts/atkinson/tfm/atkinsn-BoldItalic-tlf-t1.tfm
2021/02/05 | 1681 | macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo
2021/02/05 | 1680 | macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo
-2021/02/05 | 167738 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
2021/02/05 | 1676 | macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo
2021/02/05 | 16688 | macros/latex/contrib/tuda-ci/tex/tudaletter.cls
2021/02/05 | 1668602 | language/japanese/BX/bxjscls.zip
-2021/02/05 | 163797 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
-2021/02/05 | 16339 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma
-2021/02/05 | 16112 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma
-2021/02/05 | 159864 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
+2021/02/05 | 16482 | graphics/pgf/contrib/spath3/calligraphy.tex
2021/02/05 | 15864 | fonts/atkinson/tfm/atkinsn-Regular-lf-t1.tfm
2021/02/05 | 1575 | macros/latex/contrib/yathesis/README.md
2021/02/05 | 15736 | language/japanese/BX/bxjscls/README-ja.md
2021/02/05 | 15644 | fonts/atkinson/tfm/atkinsn-Regular-tlf-t1.tfm
-2021/02/05 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
-2021/02/05 | 153807 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma
-2021/02/05 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
-2021/02/05 | 152746 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
+2021/02/05 | 152495 | macros/latex/contrib/nicematrix/nicematrix-french.tex
2021/02/05 | 15120 | systems/texlive/tlnet/archive/footnotehyper.source.r57618.tar.xz
2021/02/05 | 148 | fonts/atkinson/tfm/atkinsn-Regular-tlf-t1--lcdfj.tfm
2021/02/05 | 148 | fonts/atkinson/tfm/atkinsn-Regular-tlf-ot1--lcdfj.tfm
@@ -447,96 +639,69 @@
2021/02/05 | 148 | fonts/atkinson/tfm/atkinsn-BoldItalic-lf-ly1--lcdfj.tfm
2021/02/05 | 1472 | fonts/atkinson/tfm/atkinsn-BoldItalic-sup-ot1.tfm
2021/02/05 | 1472 | fonts/atkinson/tfm/atkinsn-BoldItalic-sup-ot1--base.tfm
-2021/02/05 | 147187 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma
2021/02/05 | 14712 | fonts/atkinson/tfm/atkinsn-Italic-lf-t1.tfm
-2021/02/05 | 147086 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma
2021/02/05 | 1460 | fonts/atkinson/tfm/atkinsn-BoldItalic-lf-ot1--base.tfm
-2021/02/05 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
-2021/02/05 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
2021/02/05 | 14464 | fonts/atkinson/tfm/atkinsn-Italic-tlf-t1.tfm
2021/02/05 | 1444 | fonts/atkinson/tfm/atkinsn-Italic-sup-ot1.tfm
2021/02/05 | 1444 | fonts/atkinson/tfm/atkinsn-Italic-sup-ot1--base.tfm
2021/02/05 | 1444 | fonts/atkinson/tfm/atkinsn-Italic-lf-ot1--base.tfm
2021/02/05 | 14442 | macros/latex/contrib/hyperref/doc/manual.css
-2021/02/05 | 14342 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
2021/02/05 | 1428 | fonts/atkinson/tfm/atkinsn-BoldItalic-tlf-ts1.tfm
2021/02/05 | 1428 | fonts/atkinson/tfm/atkinsn-BoldItalic-tlf-ot1--base.tfm
2021/02/05 | 1428 | fonts/atkinson/tfm/atkinsn-BoldItalic-lf-ts1.tfm
-2021/02/05 | 1421910 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
-2021/02/05 | 1417676 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
2021/02/05 | 1416 | fonts/atkinson/tfm/atkinsn-BoldItalic-tlf-ts1--base.tfm
2021/02/05 | 1416 | fonts/atkinson/tfm/atkinsn-BoldItalic-lf-ts1--base.tfm
2021/02/05 | 1412 | fonts/atkinson/tfm/atkinsn-Italic-tlf-ts1.tfm
2021/02/05 | 1412 | fonts/atkinson/tfm/atkinsn-Italic-lf-ts1.tfm
+2021/02/05 | 1409 | macros/latex/contrib/ragged2e/ragged2e.ins
2021/02/05 | 1408 | fonts/atkinson/tfm/atkinsn-Italic-tlf-ot1--base.tfm
2021/02/05 | 1400 | fonts/atkinson/tfm/atkinsn-Italic-tlf-ts1--base.tfm
2021/02/05 | 1400 | fonts/atkinson/tfm/atkinsn-Italic-lf-ts1--base.tfm
2021/02/05 | 1382 | macros/latex/contrib/pdfpages/README
2021/02/05 | 13710 | macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls
-2021/02/05 | 136346 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
2021/02/05 | 1360 | fonts/atkinson/tfm/atkinsn-Bold-tlf-ts1.tfm
2021/02/05 | 1360 | fonts/atkinson/tfm/atkinsn-Bold-lf-ts1.tfm
2021/02/05 | 1352 | fonts/atkinson/tfm/atkinsn-Regular-tlf-ts1.tfm
2021/02/05 | 1352 | fonts/atkinson/tfm/atkinsn-Regular-lf-ts1.tfm
2021/02/05 | 135127 | macros/latex/contrib/yathesis/exemples/specimen/labo.pdf
-2021/02/05 | 135011 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma
2021/02/05 | 1348 | fonts/atkinson/tfm/atkinsn-Bold-tlf-ts1--base.tfm
2021/02/05 | 1348 | fonts/atkinson/tfm/atkinsn-Bold-lf-ts1--base.tfm
-2021/02/05 | 13466 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma
2021/02/05 | 1336 | fonts/atkinson/tfm/atkinsn-Regular-tlf-ts1--base.tfm
2021/02/05 | 1336 | fonts/atkinson/tfm/atkinsn-Regular-lf-ts1--base.tfm
-2021/02/05 | 132320 | systems/texlive/tlnet/archive/texlive-scripts.r57612.tar.xz
2021/02/05 | 13224 | fonts/atkinson/tfm/atkinsn-Bold-lf-ly1.tfm
-2021/02/05 | 131490 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
2021/02/05 | 1312 | fonts/atkinson/tfm/atkinsn-Bold-sup-ot1.tfm
2021/02/05 | 1312 | fonts/atkinson/tfm/atkinsn-Bold-sup-ot1--base.tfm
2021/02/05 | 1308 | fonts/atkinson/tfm/atkinsn-Bold-lf-ot1--base.tfm
-2021/02/05 | 1307389 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
2021/02/05 | 13016 | fonts/atkinson/tfm/atkinsn-Bold-tlf-ly1.tfm
-2021/02/05 | 1291602 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma
2021/02/05 | 1288 | fonts/atkinson/tfm/atkinsn-Regular-lf-ot1--base.tfm
2021/02/05 | 1284 | fonts/atkinson/tfm/atkinsn-Regular-sup-ot1.tfm
2021/02/05 | 1284 | fonts/atkinson/tfm/atkinsn-Regular-sup-ot1--base.tfm
-2021/02/05 | 1281722 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma
2021/02/05 | 1276 | fonts/atkinson/tfm/atkinsn-Bold-tlf-ot1--base.tfm
2021/02/05 | 126196 | systems/texlive/tlnet/archive/innerscript.doc.r57620.tar.xz
2021/02/05 | 1260 | fonts/atkinson/tfm/atkinsn-Regular-tlf-ot1--base.tfm
2021/02/05 | 12512004 | install/macros/latex/contrib/yathesis.tds.zip
-2021/02/05 | 124938 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma
-2021/02/05 | 1248637 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
-2021/02/05 | 1248275 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
2021/02/05 | 12470 | macros/latex/contrib/pdfpages/dummy-l.pdf
2021/02/05 | 1246263 | macros/latex/contrib/yathesis/exemples/specimen/these.pdf
2021/02/05 | 1241873 | install/fonts/atkinson.tds.zip
2021/02/05 | 12385759 | macros/latex/contrib/yathesis.zip
+2021/02/05 | 1226 | macros/latex/contrib/ragged2e/README.md
2021/02/05 | 12228 | fonts/atkinson/tfm/atkinsn-BoldItalic-lf-ly1.tfm
2021/02/05 | 1222867 | fonts/atkinson.zip
2021/02/05 | 11980 | fonts/atkinson/tfm/atkinsn-BoldItalic-tlf-ly1.tfm
+2021/02/05 | 119700949 | macros/context/latest/cont-tmf.zip
2021/02/05 | 1173854 | language/japanese/BX/bxjscls/bxjscls.pdf
-2021/02/05 | 1171817 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma
-2021/02/05 | 116936 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma
2021/02/05 | 11670 | macros/latex/contrib/tuda-ci/README.md
-2021/02/05 | 1166153 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
-2021/02/05 | 1165022 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
-2021/02/05 | 1153 | systems/win32/miktex/tm/packages/next/pr.ini
-2021/02/05 | 113936 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
-2021/02/05 | 112281 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
+2021/02/05 | 1131373 | macros/latex/contrib/nicematrix/nicematrix.pdf
2021/02/05 | 10924 | fonts/atkinson/tfm/atkinsn-Regular-lf-ly1.tfm
-2021/02/05 | 109150 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
-2021/02/05 | 1078967 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
2021/02/05 | 10712 | fonts/atkinson/tfm/atkinsn-Regular-tlf-ly1.tfm
2021/02/05 | 10524 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex
-2021/02/05 | 104761 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
2021/02/05 | 10336 | fonts/atkinson/tfm/atkinsn-Italic-lf-ly1.tfm
-2021/02/05 | 103331 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
-2021/02/05 | 101859 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
2021/02/05 | 10084 | fonts/atkinson/tfm/atkinsn-Italic-tlf-ly1.tfm
2021/02/05 | 10072 | macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa-mecheng.sty
2021/02/04 | 93308 | macros/latex/contrib/footnotehyper.zip
2021/02/04 | 903788 | systems/texlive/tlnet/archive/tex4ht.r57609.tar.xz
2021/02/04 | 793918 | install/macros/latex/contrib/psnfssx/lucidabr.tds.zip
2021/02/04 | 78298 | macros/latex/contrib/footnotehyper/footnotehyper.pdf
-2021/02/04 | 778296 | systems/win32/w32tex/ChangeLog
2021/02/04 | 755636 | macros/latex/contrib/psnfssx/lucidabr.zip
2021/02/04 | 6552 | macros/latex/contrib/psnfssx/lucidabr/README.TUG
2021/02/04 | 635192 | biblio/bibtex/contrib/gost/doc/gost.pdf
@@ -544,7 +709,6 @@
2021/02/04 | 49642 | macros/latex/contrib/footnotehyper/footnotehyper.dtx
2021/02/04 | 4944311 | install/biblio/bibtex/contrib/gost.tds.zip
2021/02/04 | 4738784 | biblio/bibtex/contrib/gost.zip
-2021/02/04 | 388 | systems/texlive/tlnet/archive/texlive-docindex.r57606.tar.xz
2021/02/04 | 383364 | biblio/bibtex/contrib/gost/doc/examples/utf8/ugost2008-customized.pdf
2021/02/04 | 381906 | biblio/bibtex/contrib/gost/doc/examples/cp1251/gost2008-customized.pdf
2021/02/04 | 3791 | biblio/bibtex/contrib/gost/source/gost.ins
@@ -567,7 +731,6 @@
2021/02/04 | 2598968 | systems/win32/w32tex/tex4htk-w32.tar.xz
2021/02/04 | 257536 | systems/texlive/tlnet/tlpkg/installer/xz/xz.exe
2021/02/04 | 2204180 | systems/win32/w32tex/win64/context-w64.tar.xz
-2021/02/04 | 172664 | systems/texlive/tlnet/archive/texlive-docindex.doc.r57606.tar.xz
2021/02/04 | 169673 | biblio/bibtex/contrib/gost/source/gost.dtx
2021/02/04 | 1432 | macros/latex/contrib/psnfssx/lucidabr/README
2021/02/04 | 141886048 | systems/win32/w32tex/context.tar.xz
@@ -596,7 +759,6 @@
2021/02/03 | 774 | macros/latex/contrib/xsim/examples/xsim.randomexercises.tex
2021/02/03 | 6992 | systems/texlive/tlnet/archive/cellprops.r57599.tar.xz
2021/02/03 | 6900724 | systems/win32/w32tex/win64/pdftex-w64.tar.xz
-2021/02/03 | 6677 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2021/02/03 | 6622780 | systems/win32/w32tex/ptex-ng-w32.tar.xz
2021/02/03 | 65714 | macros/latex/contrib/xsim/examples/xsim.texsx-369065.pdf
2021/02/03 | 653 | macros/latex/contrib/xsim/examples/xsim.pointsums.tex
@@ -650,7 +812,6 @@
2021/02/03 | 36259 | macros/latex/contrib/xsim/examples/xsim.texwelt-15093.pdf
2021/02/03 | 3443 | macros/latex/contrib/xsim/examples/xsim.texsx-350028.tex
2021/02/03 | 3414 | macros/latex/contrib/xsim/examples/xsim.golatex-80640.tex
-2021/02/03 | 33962004 | systems/win32/w32tex/ltxpkgs.tar.xz
2021/02/03 | 3383416 | systems/win32/w32tex/win64/web2c-w64.tar.xz
2021/02/03 | 31763 | macros/latex/contrib/xsim/examples/xsim.difficulties.pdf
2021/02/03 | 3114 | macros/latex/contrib/xsim/examples/xsim.texwelt-15093.tex
@@ -978,7 +1139,6 @@
2021/02/01 | 14232 | systems/texlive/tlnet/archive/texnegar.r57581.tar.xz
2021/02/01 | 1361804 | systems/win32/miktex/tm/packages/mcf2graph.tar.lzma
2021/02/01 | 1339376 | systems/texlive/tlnet/archive/mcf2graph.doc.r57575.tar.xz
-2021/02/01 | 119695937 | macros/context/latest/cont-tmf.zip
2021/02/01 | 11368 | systems/texlive/tlnet/archive/fontsize.source.r57579.tar.xz
2021/02/01 | 1122 | macros/latex/contrib/cellprops/README.md
2021/01/31 | 991776 | systems/texlive/tlnet/tlpkg/installer/wget/wget.x86_64-darwin
@@ -1001,7 +1161,6 @@
2021/01/31 | 557292 | systems/win32/w32tex/win64/pmx-w64.tar.xz
2021/01/31 | 537 | macros/latex/contrib/biblatex-contrib/windycity/windycity.dbx
2021/01/31 | 534937 | graphics/mcf2graph/mcf_example.pdf
-2021/01/31 | 52741 | macros/latex/contrib/fontsize/fontsize.dtx
2021/01/31 | 522890 | macros/latex/contrib/biblatex-contrib/windycity.zip
2021/01/31 | 4918660 | install/macros/unicodetex/latex/texnegar.tds.zip
2021/01/31 | 4893277 | macros/unicodetex/latex/texnegar.zip
@@ -1028,8 +1187,6 @@
2021/01/31 | 3209 | fonts/haranoaji-extra/README
2021/01/31 | 3113 | macros/unicodetex/latex/texnegar/xepersian-XB.tex
2021/01/31 | 307011 | macros/luatex/latex/hu-berlin-bundle/hu-berlin-bundle.pdf
-2021/01/31 | 304757 | macros/latex/contrib/fontsize.zip
-2021/01/31 | 296971 | macros/latex/contrib/fontsize/fontsize.pdf
2021/01/31 | 2873970 | macros/unicodetex/latex/texnegar/texnegar-doc.pdf
2021/01/31 | 28671 | macros/unicodetex/latex/texnegar/texnegar-doc.ltx
2021/01/31 | 279828 | macros/generic/witharrows/witharrows.dtx
@@ -1054,7 +1211,6 @@
2021/01/31 | 156635 | macros/unicodetex/latex/texnegar/texnegar-xetex-bidi-leaders-hrule.pdf
2021/01/31 | 155945 | macros/unicodetex/latex/texnegar/texnegar-xetex-xepersian-leaders-hrule.pdf
2021/01/31 | 1551 | macros/unicodetex/latex/texnegar/INSTALL.txt
-2021/01/31 | 1511 | macros/latex/contrib/fontsize/README
2021/01/31 | 14903 | macros/luatex/latex/hu-berlin-bundle/img/texografie-logo.pdf
2021/01/31 | 143084 | systems/texlive/tlnet/archive/lexend.doc.r57564.tar.xz
2021/01/31 | 1368423 | graphics/mcf2graph.zip
@@ -1066,110 +1222,3 @@
2021/01/31 | 1071952 | systems/texlive/tlnet/archive/kpfonts-otf.r57563.tar.xz
2021/01/31 | 106691 | macros/unicodetex/latex/texnegar/xepersian-XB.pdf
2021/01/31 | 10116 | macros/unicodetex/latex/texnegar/doc-ligature-xep.pdf
-2021/01/30 | 95504 | systems/texlive/tlnet/archive/l3experimental.source.r57554.tar.xz
-2021/01/30 | 95408 | fonts/kpfonts-otf/fonts/KpSans-Bold.otf
-2021/01/30 | 9503 | fonts/lexend/doc/lexend.tex
-2021/01/30 | 94940 | fonts/kpfonts-otf/fonts/KpSans-Regular.otf
-2021/01/30 | 85751 | systems/win32/miktex/tm/packages/footnotehyper.tar.lzma
-2021/01/30 | 838456 | systems/win32/miktex/tm/packages/fancyhdr.tar.lzma
-2021/01/30 | 836063 | systems/win32/miktex/tm/packages/l3backend.tar.lzma
-2021/01/30 | 788908 | systems/texlive/tlnet/archive/l3backend.doc.r57554.tar.xz
-2021/01/30 | 7884 | systems/texlive/tlnet/archive/changes.r57549.tar.xz
-2021/01/30 | 753572 | systems/win32/miktex/tm/packages/fontsetup.tar.lzma
-2021/01/30 | 7418 | systems/win32/miktex/tm/packages/cmap.tar.lzma
-2021/01/30 | 740076 | systems/texlive/tlnet/archive/fontsetup.doc.r57553.tar.xz
-2021/01/30 | 674371 | systems/win32/miktex/tm/packages/pmx.tar.lzma
-2021/01/30 | 66092 | fonts/kpfonts-otf/fonts/KpMono-Italic.otf
-2021/01/30 | 6582116 | fonts/haranoaji/HaranoAjiMincho-Bold.otf
-2021/01/30 | 65372952 | macros/latex/contrib/rmannot.zip
-2021/01/30 | 6479916 | fonts/haranoaji-extra/HaranoAjiMincho-Heavy.otf
-2021/01/30 | 64788 | fonts/kpfonts-otf/fonts/KpMono-BoldItalic.otf
-2021/01/30 | 6430788 | fonts/haranoaji-extra/HaranoAjiMincho-SemiBold.otf
-2021/01/30 | 6394968 | fonts/haranoaji-extra/HaranoAjiMincho-Medium.otf
-2021/01/30 | 6322076 | fonts/haranoaji/HaranoAjiMincho-Regular.otf
-2021/01/30 | 631521 | fonts/lexend.zip
-2021/01/30 | 6240708 | fonts/haranoaji/HaranoAjiMincho-Light.otf
-2021/01/30 | 622013 | systems/win32/miktex/tm/packages/multirow.tar.lzma
-2021/01/30 | 597148 | systems/texlive/tlnet/archive/multirow.doc.r57552.tar.xz
-2021/01/30 | 58696 | fonts/kpfonts-otf/fonts/KpMono-Regular.otf
-2021/01/30 | 5834604 | fonts/haranoaji-extra/HaranoAjiMincho-ExtraLight.otf
-2021/01/30 | 5828 | systems/texlive/tlnet/archive/fontsetup.r57553.tar.xz
-2021/01/30 | 57568 | fonts/kpfonts-otf/fonts/KpMono-Bold.otf
-2021/01/30 | 5560 | systems/texlive/tlnet/archive/cmap.r57550.tar.xz
-2021/01/30 | 515632 | systems/win32/miktex/tm/packages/ebproof.tar.lzma
-2021/01/30 | 51049 | graphics/mcf2graph/mcf_manual.tex
-2021/01/30 | 5058632 | fonts/haranoaji/HaranoAjiGothic-Heavy.otf
-2021/01/30 | 4964286 | macros/latex/contrib/rmannot/doc/rmannot_man.pdf
-2021/01/30 | 4857852 | fonts/haranoaji/HaranoAjiGothic-Bold.otf
-2021/01/30 | 4729788 | fonts/haranoaji/HaranoAjiGothic-Medium.otf
-2021/01/30 | 4712076 | fonts/haranoaji/HaranoAjiGothic-Regular.otf
-2021/01/30 | 4701392 | fonts/haranoaji-extra/HaranoAjiGothic-Normal.otf
-2021/01/30 | 4679024 | fonts/haranoaji-extra/HaranoAjiGothic-Light.otf
-2021/01/30 | 455424 | fonts/kpfonts-otf/fonts/KpMath-Light.otf
-2021/01/30 | 4408088 | fonts/haranoaji-extra/HaranoAjiGothic-ExtraLight.otf
-2021/01/30 | 434 | fonts/kpfonts-otf/tex/KpLight.fontspec
-2021/01/30 | 433595 | macros/latex/contrib/rmannot/doc/rmannot.pdf
-2021/01/30 | 4320 | fonts/kpfonts-otf/README.md
-2021/01/30 | 428692 | fonts/kpfonts-otf/fonts/KpMath-Regular.otf
-2021/01/30 | 427197 | macros/latex/contrib/profcollege/latex/ProfCollege.sty
-2021/01/30 | 423 | fonts/kpfonts-otf/tex/KpRoman.fontspec
-2021/01/30 | 4237328 | fonts/kpfonts-otf.zip
-2021/01/30 | 4096552 | systems/win32/miktex/tm/packages/l3experimental.tar.lzma
-2021/01/30 | 3969140 | systems/texlive/tlnet/archive/l3experimental.doc.r57554.tar.xz
-2021/01/30 | 32527 | fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-French.ltx
-2021/01/30 | 31144 | systems/texlive/tlnet/archive/l3backend.source.r57554.tar.xz
-2021/01/30 | 29850 | fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-English.ltx
-2021/01/30 | 29696 | systems/texlive/tlnet/archive/l3experimental.r57554.tar.xz
-2021/01/30 | 2782919 | macros/latex/contrib/profcollege.zip
-2021/01/30 | 2760 | systems/texlive/tlnet/archive/multirow.r57552.tar.xz
-2021/01/30 | 275380 | fonts/kpfonts-otf/fonts/KpMath-Sans.otf
-2021/01/30 | 2584 | fonts/lexend/README.md
-2021/01/30 | 2574022 | systems/win32/miktex/tm/packages/asymptote.tar.lzma
-2021/01/30 | 2481585 | systems/win32/miktex/tm/packages/changes.tar.lzma
-2021/01/30 | 2455088 | systems/texlive/tlnet/archive/changes.doc.r57549.tar.xz
-2021/01/30 | 241 | fonts/kpfonts-otf/tex/KpSans.fontspec
-2021/01/30 | 2228 | systems/texlive/tlnet/archive/cmap.doc.r57550.tar.xz
-2021/01/30 | 20112 | systems/texlive/tlnet/archive/multirow.source.r57552.tar.xz
-2021/01/30 | 198620 | fonts/kpfonts-otf/fonts/KpMath-Semibold.otf
-2021/01/30 | 196892 | fonts/kpfonts-otf/fonts/KpMath-Bold.otf
-2021/01/30 | 19106 | fonts/lexend/LICENSE
-2021/01/30 | 187563 | fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-French.pdf
-2021/01/30 | 186140 | fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-English.pdf
-2021/01/30 | 185 | fonts/kpfonts-otf/tex/KpMono.fontspec
-2021/01/30 | 1788053 | fonts/kpfonts-otf/doc/unimath-kpfonts.pdf
-2021/01/30 | 17832 | fonts/kpfonts-otf/tex/kpfonts-otf.sty
-2021/01/30 | 1702509 | macros/latex/contrib/profcollege/doc/ProfCollege-doc.pdf
-2021/01/30 | 16804 | systems/texlive/tlnet/archive/changes.source.r57549.tar.xz
-2021/01/30 | 16745 | fonts/kpfonts-otf/doc/unimath-kpfonts.ltx
-2021/01/30 | 152 | fonts/lexend/tex/LexendZetta.fontspec
-2021/01/30 | 151 | fonts/lexend/tex/LexendTera.fontspec
-2021/01/30 | 151 | fonts/lexend/tex/LexendPeta.fontspec
-2021/01/30 | 151 | fonts/lexend/tex/LexendMega.fontspec
-2021/01/30 | 151 | fonts/lexend/tex/LexendGiga.fontspec
-2021/01/30 | 151 | fonts/lexend/tex/LexendDeca.fontspec
-2021/01/30 | 150 | fonts/lexend/tex/LexendExa.fontspec
-2021/01/30 | 14460 | systems/texlive/tlnet/archive/l3backend.r57554.tar.xz
-2021/01/30 | 142532 | fonts/kpfonts-otf/fonts/KpRoman-BoldItalic.otf
-2021/01/30 | 140432 | fonts/kpfonts-otf/fonts/KpRoman-SemiboldItalic.otf
-2021/01/30 | 139936 | fonts/lexend/font/LexendGiga-Regular.ttf
-2021/01/30 | 139896 | fonts/lexend/font/LexendExa-Regular.ttf
-2021/01/30 | 139872 | fonts/lexend/font/LexendMega-Regular.ttf
-2021/01/30 | 139836 | fonts/lexend/font/LexendTera-Regular.ttf
-2021/01/30 | 139744 | fonts/lexend/font/LexendPeta-Regular.ttf
-2021/01/30 | 138904 | fonts/lexend/font/LexendZetta-Regular.ttf
-2021/01/30 | 138556 | fonts/lexend/font/LexendDeca-Regular.ttf
-2021/01/30 | 136507 | fonts/lexend/doc/lexend.pdf
-2021/01/30 | 134964 | fonts/kpfonts-otf/fonts/KpRoman-LightItalic.otf
-2021/01/30 | 132824 | fonts/kpfonts-otf/fonts/KpRoman-Italic.otf
-2021/01/30 | 131844 | fonts/kpfonts-otf/fonts/KpRoman-Bold.otf
-2021/01/30 | 130740 | fonts/kpfonts-otf/fonts/KpRoman-Regular.otf
-2021/01/30 | 1304 | macros/latex/contrib/rmannot/README.md
-2021/01/30 | 130212 | fonts/kpfonts-otf/fonts/KpRoman-Light.otf
-2021/01/30 | 129108 | fonts/kpfonts-otf/fonts/KpRoman-Semibold.otf
-2021/01/30 | 129066 | macros/latex/contrib/rmannot/rmannot.dtx
-2021/01/30 | 1243 | fonts/lexend/tex/lexend.sty
-2021/01/30 | 1216103 | macros/latex/contrib/profcollege/doc/ProfCollege-doc.zip
-2021/01/30 | 119067 | systems/win32/miktex/tm/packages/chinese-jfm.tar.lzma
-2021/01/30 | 103212 | fonts/kpfonts-otf/fonts/KpSans-BoldItalic.otf
-2021/01/30 | 103092 | fonts/kpfonts-otf/fonts/KpSans-Italic.otf
-2021/01/30 | 101344 | macros/latex/contrib/rmannot/doc/rmannot_man.tex
diff --git a/fonts/utilities/ps2pk/ChangeLog b/fonts/utilities/ps2pk/ChangeLog
index 09eebc9b8b..8bd30034a5 100644
--- a/fonts/utilities/ps2pk/ChangeLog
+++ b/fonts/utilities/ps2pk/ChangeLog
@@ -1,3 +1,10 @@
+2021-02-06 TANAKA Takuji <ttk@t-lab.opal.ne.jp>
+
+ * ps2pk.c, mag.c, pfb2pfa.c, pk2bm.c, pktest.c, configure.ac:
+ Show TeX Live version number and bug report address in usage.
+ * ps2pk.c, pk2bm.c, mag.c:
+ Avoid compiler warnings.
+
2018-12-05 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
* mag.c, pk2bm.c: check for missing arguments.
diff --git a/fonts/utilities/ps2pk/c-auto.in b/fonts/utilities/ps2pk/c-auto.in
index f6eb86702d..7599035ee3 100644
--- a/fonts/utilities/ps2pk/c-auto.in
+++ b/fonts/utilities/ps2pk/c-auto.in
@@ -139,6 +139,9 @@
/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS
+/* Define to the current TeX Live version string. */
+#undef TL_VERSION
+
/* Enable large inode numbers on Mac OS X 10.5. */
#ifndef _DARWIN_USE_64_BIT_INODE
# define _DARWIN_USE_64_BIT_INODE 1
diff --git a/fonts/utilities/ps2pk/configure.ac b/fonts/utilities/ps2pk/configure.ac
index 9d0f79dc68..b4f7fbe1bf 100644
--- a/fonts/utilities/ps2pk/configure.ac
+++ b/fonts/utilities/ps2pk/configure.ac
@@ -32,6 +32,10 @@ AC_CHECK_FUNCS([memset])
AC_CONFIG_HEADERS([c-auto.h:c-auto.in])
+m4_include([../../version.ac])[] dnl define tex_live_version
+AC_DEFINE([TL_VERSION], ["TeX Live tex_live_version()"],
+ [Define to the current TeX Live version string.])
+
dnl For tests
AC_CHECK_PROGS([KPSEWHICH], [kpsewhich], [false])
diff --git a/fonts/utilities/ps2pk/configure.texk b/fonts/utilities/ps2pk/configure.texk
index 31e8e16daa..85c6f0565d 100755
--- a/fonts/utilities/ps2pk/configure.texk
+++ b/fonts/utilities/ps2pk/configure.texk
@@ -13729,6 +13729,11 @@ done
ac_config_headers="$ac_config_headers c-auto.h:c-auto.in"
+
+
+$as_echo "#define TL_VERSION \"TeX Live 2021/dev\"" >>confdefs.h
+
+
for ac_prog in kpsewhich
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
diff --git a/fonts/utilities/ps2pk/mag.c b/fonts/utilities/ps2pk/mag.c
index 3f5c6b61d5..5303a6e049 100644
--- a/fonts/utilities/ps2pk/mag.c
+++ b/fonts/utilities/ps2pk/mag.c
@@ -104,7 +104,7 @@ int main(int argc, char *argv[]) {
if (*++argv[0] == '\0') {
argc--; argv++;
}
- if (argv[0] == '\0') goto invalid;
+ if (argv[0] == NULL) goto invalid;
DPI = atof(argv[0]);
done = 1;
break;
@@ -115,8 +115,9 @@ invalid:
}
if (argc < 1) {
- msg ("mag (ps2pk) version " PACKAGE_VERSION "\n");
- fatal("Usage: %s [-r] [-Rdpi] size . . .\n", myname);
+ msg ("mag (ps2pk) version " PACKAGE_VERSION " (" TL_VERSION ")\n");
+ msg ("Usage: %s [-r] [-Rdpi] size . . .\n", myname);
+ fatal("\nEmail bug reports to %s.\n", PACKAGE_BUGREPORT);
}
#ifdef WIN32
diff --git a/fonts/utilities/ps2pk/pfb2pfa.c b/fonts/utilities/ps2pk/pfb2pfa.c
index 368d0a9b57..62d58fb020 100644
--- a/fonts/utilities/ps2pk/pfb2pfa.c
+++ b/fonts/utilities/ps2pk/pfb2pfa.c
@@ -50,8 +50,9 @@ int main (int argc, char *argv[])
}
if (argc < 1) {
- msg ("pfb2pfa (ps2pk) version " PACKAGE_VERSION "\n");
- fatal("Usage: %s [-v] pfbfile [pfafile]\n", myname);
+ msg ("pfb2pfa (ps2pk) version " PACKAGE_VERSION " (" TL_VERSION ")\n");
+ msg ("Usage: %s [-v] pfbfile [pfafile]\n", myname);
+ fatal("\nEmail bug reports to %s.\n", PACKAGE_BUGREPORT);
}
pfbname = argv[0]; argc--; argv++;
diff --git a/fonts/utilities/ps2pk/pk2bm.c b/fonts/utilities/ps2pk/pk2bm.c
index 5445bf7409..7f13430cab 100644
--- a/fonts/utilities/ps2pk/pk2bm.c
+++ b/fonts/utilities/ps2pk/pk2bm.c
@@ -64,21 +64,21 @@ int main(int argc, char *argv[])
if (*++argv[0] == '\0') {
argc--; argv++;
}
- if (argv[0] == '\0') goto invalid;
+ if (argv[0] == NULL) goto invalid;
C = *argv[0];
done = 1; break;
case 'o':
if (*++argv[0] == '\0') {
argc--; ++argv;
}
- if (argv[0] == '\0') goto invalid;
+ if (argv[0] == NULL) goto invalid;
C = atoo(argv[0]);
done = 1; break;
case 'H':
if (*++argv[0] == '\0') {
argc--; argv++;
}
- if (argv[0] == '\0') goto invalid;
+ if (argv[0] == NULL) goto invalid;
h = atoi(argv[0]);
done=1;
break;
@@ -86,7 +86,7 @@ int main(int argc, char *argv[])
if (*++argv[0] == '\0') {
argc--; argv++;
}
- if (argv[0] == '\0') goto invalid;
+ if (argv[0] == NULL) goto invalid;
w = atoi(argv[0]);
done=1;
break;
@@ -104,9 +104,9 @@ invalid:
}
if (argc == 0) {
- msg ("pk2bm (ps2pk) version " PACKAGE_VERSION "\n");
- printf("Usage: %s [-bh] {-c char|-o octchar} [-W width -H height] pkfile\n", myname);
- exit(1);
+ msg ("pk2bm (ps2pk) version " PACKAGE_VERSION " (" TL_VERSION ")\n");
+ msg ("Usage: %s [-bh] {-c char|-o octchar} [-W width -H height] pkfile\n", myname);
+ fatal("\nEmail bug reports to %s.\n", PACKAGE_BUGREPORT);
}
#ifdef WIN32
diff --git a/fonts/utilities/ps2pk/pktest.c b/fonts/utilities/ps2pk/pktest.c
index 2cc97f1c7c..bb677209a4 100644
--- a/fonts/utilities/ps2pk/pktest.c
+++ b/fonts/utilities/ps2pk/pktest.c
@@ -49,8 +49,9 @@ int main(int argc, char *argv[])
}
if (argc == 0 || C == 0 || W*H == 0) {
- msg ("pktest (ps2pk) version " PACKAGE_VERSION "\n");
- fatal("Usage: %s -c<char> -W<width> -H<height> pkfile\n", myname);
+ msg ("pktest (ps2pk) version " PACKAGE_VERSION " (" TL_VERSION ")\n");
+ msg ("Usage: %s -c<char> -W<width> -H<height> pkfile\n", myname);
+ fatal("\nEmail bug reports to %s.\n", PACKAGE_BUGREPORT);
}
pkname = argv[0];
diff --git a/fonts/utilities/ps2pk/ps2pk.c b/fonts/utilities/ps2pk/ps2pk.c
index c59d9a7f82..b4c7a05c9f 100644
--- a/fonts/utilities/ps2pk/ps2pk.c
+++ b/fonts/utilities/ps2pk/ps2pk.c
@@ -269,7 +269,7 @@ int main(int argc, char *argv[])
if (*++argv[0] == '\0') {
argc--; argv++;
}
- if (argv[0] == '\0') goto invalid;
+ if (argv[0] == NULL) goto invalid;
afmname = argv[0];
done = 1;
break;
@@ -280,7 +280,7 @@ int main(int argc, char *argv[])
if (*++argv[0] == '\0') {
argc--; argv++;
}
- if (argv[0] == '\0') goto invalid;
+ if (argv[0] == NULL) goto invalid;
encname = argv[0];
add_option("-e", encname);
done = 1;
@@ -289,7 +289,7 @@ int main(int argc, char *argv[])
if (*++argv[0] == '\0') {
argc--; argv++;
}
- if (argv[0] == '\0') goto invalid;
+ if (argv[0] == NULL) goto invalid;
efactor = atof(argv[0]);
add_option("-E", argv[0]);
done = 1;
@@ -302,7 +302,7 @@ int main(int argc, char *argv[])
if (*++argv[0] == '\0') {
argc--; argv++;
}
- if (argv[0] == '\0') goto invalid;
+ if (argv[0] == NULL) goto invalid;
pointsize = atof(argv[0]);
add_option("-P", argv[0]);
done = 1;
@@ -311,7 +311,7 @@ int main(int argc, char *argv[])
if (*++argv[0] == '\0') {
argc--; argv++;
}
- if (argv[0] == '\0') goto invalid;
+ if (argv[0] == NULL) goto invalid;
base_resolution = atoi(argv[0]);
add_option("-R", argv[0]);
done = 1;
@@ -320,7 +320,7 @@ int main(int argc, char *argv[])
if (*++argv[0] == '\0') {
argc--; argv++;
}
- if (argv[0] == '\0') goto invalid;
+ if (argv[0] == NULL) goto invalid;
slant = atof(argv[0]);
add_option("-S", argv[0]);
done = 1;
@@ -329,7 +329,7 @@ int main(int argc, char *argv[])
if (*++argv[0] == '\0') {
argc--; argv++;
}
- if (argv[0] == '\0') goto invalid;
+ if (argv[0] == NULL) goto invalid;
x_resolution = atoi(argv[0]); done = 1;
if (y_resolution == 0) y_resolution = x_resolution;
add_option("-X", argv[0]);
@@ -338,7 +338,7 @@ int main(int argc, char *argv[])
if (*++argv[0] == '\0') {
argc--; argv++;
}
- if (argv[0] == '\0') goto invalid;
+ if (argv[0] == NULL) goto invalid;
y_resolution = atoi(argv[0]); done = 1;
if (x_resolution == 0) x_resolution = y_resolution;
add_option("-Y", argv[0]);
@@ -353,10 +353,11 @@ invalid:
}
if (argc < 1 || argc >2) {
- msg ("ps2pk version " PACKAGE_VERSION " (1992-2016)\n");
+ msg ("ps2pk version " PACKAGE_VERSION " (" TL_VERSION ")\n");
msg ("Usage: %s [options] type1font [pkname]\n", myname);
msg ("options: -d -v -e<enc> -X<xres> -E<expansion> -S<slant>\n");
- fatal("options: -O -P<pointsize> -Y<yres> -a<AFM> -R<baseres>\n");
+ msg ("options: -O -P<pointsize> -Y<yres> -a<AFM> -R<baseres>\n");
+ fatal("\nEmail bug reports to %s.\n", PACKAGE_BUGREPORT);
}
psname = argv[0]; argc--; argv++;
diff --git a/graphics/pgf/contrib/spath3/calligraphy.pdf b/graphics/pgf/contrib/spath3/calligraphy.pdf
index f2852f4d1b..6896a3b289 100644
--- a/graphics/pgf/contrib/spath3/calligraphy.pdf
+++ b/graphics/pgf/contrib/spath3/calligraphy.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/spath3/calligraphy.tex b/graphics/pgf/contrib/spath3/calligraphy.tex
index 7690e5c5b7..93def0b415 100644
--- a/graphics/pgf/contrib/spath3/calligraphy.tex
+++ b/graphics/pgf/contrib/spath3/calligraphy.tex
@@ -1,4 +1,4 @@
-\immediate\write18{tex spath3_doc.dtx}
+%\immediate\write18{tex spath3_doc.dtx}
\documentclass{ltxdoc}
\usepackage[T1]{fontenc}
\usepackage{trace}
@@ -41,6 +41,11 @@
\providecommand*{\url}{\texttt}
\GetFileInfo{spath3.sty}
+\pdfstringdefDisableCommands{%
+ \def\\{}%
+ \def\url#1{<#1>}%
+}
+
\title{The \textsf{calligraphy} Package: Documentation}
\author{Andrew Stacey \\ \url{loopspace@mathforge.org}}
\date{\fileversion~from \filedate}
diff --git a/graphics/pgf/contrib/spath3/knots.pdf b/graphics/pgf/contrib/spath3/knots.pdf
index b1962a3c4c..1a2afd39db 100644
--- a/graphics/pgf/contrib/spath3/knots.pdf
+++ b/graphics/pgf/contrib/spath3/knots.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/spath3/knots.tex b/graphics/pgf/contrib/spath3/knots.tex
index 20859a1d4e..7e0d885843 100644
--- a/graphics/pgf/contrib/spath3/knots.tex
+++ b/graphics/pgf/contrib/spath3/knots.tex
@@ -1,4 +1,4 @@
-\immediate\write18{tex spath3_code.dtx}
+%\immediate\write18{tex spath3_code.dtx}
\documentclass{ltxdoc}
\usepackage[T1]{fontenc}
\usepackage{trace}
@@ -42,6 +42,11 @@
\providecommand*{\url}{\texttt}
\GetFileInfo{spath3.sty}
+\pdfstringdefDisableCommands{%
+ \def\\{}%
+ \def\url#1{<#1>}%
+}
+
\title{The \textsf{knots} Package: Documentation}
\author{Andrew Stacey \\ \url{loopspace@mathforge.org}}
\date{\fileversion~from \filedate}
@@ -393,8 +398,10 @@ The \Verb+flip crossing=<number>+ key flips the \Verb+<number>+ crossing.
\item \DescribeMacro{background colour} \DescribeMacro{background color}
The keys \Verb+background colour=<colour>+ and \Verb+background color=<color>+ set the background colour for the crossings.
-\item \DescribeMacro{intersection <number>}
-The style in \Verb+intersection <number>+ is applied just before that crossing is drawn so can be used to modify the crossing style just for that crossing.
+\item \DescribeMacro{every intersection>} \DescribeMacro{intersection <number>}
+The style in \Verb+every intersection+ is applied before rendering each crossing, with \Verb+intersection <number>+ applied just before that specific crossing.
+These can be used to change how the over-strands are rendered when they are redrawn.
+For an example on using \Verb+every intersection+, see Section~\ref{sec:celtic}.
\item \DescribeMacro{draft mode}
@@ -435,6 +442,100 @@ inner sep=0pt
\end{lstlisting}
\end{itemize}
+
+\subsection{Celtic Knots}
+\label{sec:celtic}
+
+By ``Celtic knot'' here, I mean a knot drawn in a way to suggest a carved object.
+Usually, this is achieved by using the \Verb+double+ style to outline the path.
+This interacts a little oddly with how the knots package redraws the curve near crossings which can result in small artefacts visible when the diagram is viewed (my understanding is that they are not present when the diagram is printed).
+There is, however, a way to get these diagrams right, as this section will show.
+
+I will just note here that there is the \href{celtic knots}{https://ctan.org/pkg/celtic} package which works for a particular type of Celtic knots.
+If your Celtic knot fits what that package can produce, it is a better choice.
+See that package for details.
+
+Back to what this package can provide.
+When rendering a crossing, the over-strand is redrawn clipped to a small region around the crossing.
+The clipping, however, interacts badly with the \Verb+double+ effect.
+The \Verb+double+ effect is achieved by drawing the line twice, once thicker with the outer colour and once thinner with the inner colour.
+At the boundary of the clipping region there is ``bleed through'' of the outer colour into the inner colour, at least when the image is displayed on a screen.
+If the inner colour is darker, this is not noticeable.
+But with a Celtic style knot then the inner colour is usually a lighter colour, such as the page colour, and so the effect is visible.
+
+The solution to this is to exploit the fact that when using the Celtic style then one doesn't actually want gaps in the under-strand to show that it is the under-strand.
+The Celtic style makes it very obvious which strand is which without that.
+These gaps are achieved by drawing the over-strand in a thicker line with the colour of the background.
+This is almost exactly what the \Verb+double+ key does.
+So rather than using the \Verb+double+ key directly, we use the mechanism of how the knot crossings are rendered to reproduce the effect.
+This avoids the artefacts because when the knot library draws the two paths then it clips them to slightly different sized regions.
+
+\begin{example}
+\begin{tikzpicture}[scale=0.8]
+\begin{knot}[
+ consider self intersections=no splits,
+ end tolerance=1pt,
+ line join=round,
+ clip width=1,
+ ignore endpoint intersections=true,
+ background color=red,
+ every intersection/.style={
+ line width=13pt,
+ only when rendering/.style={
+ draw=white,
+ line width=9pt,
+ double=none,
+ }
+ },
+ only when rendering/.style={
+ red,
+ line width=2pt,
+ double=white,
+ double distance=9pt,
+ },
+ flip crossing/.list={2,3,6,8}
+]
+
+\strand
+(0.5,1) to [out=north, in=south]
+(2.5,4) to [out=north, in=south]
+(0.5,7) -- (0.5,7) -- (0.5,7.5) --
+(1,7.5) to [out=east, in=west]
+(3,6.5) to [out=east, in=225]
+(4.5,7.5) to [out=45, in=south]
+(5.5,9) to [out=north, in=-45]
+(4.5,10.5) to [out=135,in=east]
+(3,11.5) to [out=west,in=45]
+(1.5,10.5) to [out=225,in=north]
+(0.5,9) -- (0.5,8.5) --
+(1,8.5) to [out=east, in=south]
+(2.5,10) to [out=north, in=east]
+(1,11.5) -- (0.5,11.5) --
+(0.5,11) to [out=south, in=north]
+(2.5,8) to [out=south, in=north]
+(0.5,5) -- (0.5,4.5) --
+(1,4.5) to [out=east, in=west]
+(3,5.5) to [out=east, in=135]
+(4.5,4.5) to [out=-45, in=north]
+(5.5,3) to [out=south, in=45]
+(4.5,1.5) to [out=225, in=east]
+(3,0.5) to [out=west, in=-45]
+(1.5,1.5) to [out=135, in=south]
+(0.5,3) -- (0.5,3.5) --
+(1,3.5) to [out=east, in=north]
+(2.5,2) to [out=south, in=east]
+(1,0.5) -- (0.5,0.5) -- (0.5,1);
+\end{knot}
+
+\end{tikzpicture}
+
+\end{example}
+
+
+
+
+
+
\subsection{Other Styles}
The other things defined by this package are for drawing knot diagrams when the user knows in advance either the locations of the crossings or can arrange that the paths are drawn in the correct order.
diff --git a/graphics/pgf/contrib/spath3/spath3.pdf b/graphics/pgf/contrib/spath3/spath3.pdf
index bbc90be42e..466b71e7e5 100644
--- a/graphics/pgf/contrib/spath3/spath3.pdf
+++ b/graphics/pgf/contrib/spath3/spath3.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/spath3/spath3.tex b/graphics/pgf/contrib/spath3/spath3.tex
index 86f925ba9e..49b897c481 100644
--- a/graphics/pgf/contrib/spath3/spath3.tex
+++ b/graphics/pgf/contrib/spath3/spath3.tex
@@ -1,5 +1,5 @@
-\RequirePackage{shellesc}
-\immediate\write18{tex spath3_code.dtx}
+%\RequirePackage{shellesc}
+%\immediate\write18{tex spath3_code.dtx}
\documentclass{l3doc}
\usepackage{tikz}
\usetikzlibrary{
@@ -43,6 +43,11 @@
\providecommand*{\url}{\texttt}
\GetFileInfo{spath3.sty}
+\pdfstringdefDisableCommands{%
+ \def\\{}%
+ \def\url#1{<#1>}%
+}
+
\title{The \textsf{spath3} Package: Documentation}
\author{Andrew Stacey \\ \url{loopspace@mathforge.org}}
\date{\fileversion~from \filedate}
@@ -63,13 +68,17 @@
However, over time I've found myself wanting to use the routines of this package at a higher level and so have designed some user-level interfaces.
This document documents those.
- To clarify some terminology, paths are composed of \emph{segment} and \emph{components}.
+ To clarify some terminology used in this document (and more generally, this package), I regard paths as being composed of \emph{segments} and \emph{components}.
A \emph{segment} is a minimal drawing piece.
Thus it might be a straight line or a B\'ezier curve.
A \emph{component} is a minimal connected section of the path.
So every component starts with a move command and continues until the next move command.
For ease of implementation (and to enable a copperplate pen in the calligraphy package!), an isolated move is considered as a component.
+There are no doubt bugs in this package, and useful things that I haven't implemented.
+If you have found one of either of these, please let me know!
+The best way is to open an issue at the code repository on github, at \href{https://github.com/loopspace/spath3}{https://github.com/loopspace/spath3}.
+
\section{TikZ Keys}
@@ -78,19 +87,26 @@ For ease of implementation (and to enable a copperplate pen in the calligraphy p
\end{lstlisting}
The \texttt{spath3} TikZ library defines a set of keys that can be issued to muck about with soft paths.
-These are all defined in the \texttt{spath} family, so all the following keys should be prefixed by \texttt{spath/}, or the key \texttt{spath/.cd} needs to be used beforehand.
+These are all defined in the \texttt{spath} family, so all the following keys should be prefixed by \texttt{spath/}, or the key \texttt{spath/.cd} needs to be used beforehand (but note that as yet I haven't implemented sending unknown keys back to the main \Verb+tikz+ directory).
+
+The keys try to gracefully fail if the path doesn't exist or is empty.
+The intention is that the document should still compile with a warning in the log file (and on the console output).
+If this doesn't happen, please report it.
+
\subsection{Saving and Using Soft Paths}
-\begin{function}{save}
+\begin{function}{save, save global}
\begin{syntax}
|save=|\meta{name}
+|save global=|\meta{name}
\end{syntax}
Saves the current path with name \texttt{<name>}.
This delays until the path is fully constructed so can be issued in the options to the main command.
Soft paths constructed this way are local to the group in which the path command is issued.
+The |global| version saves the path globally which is useful when the original path is inside a scope or even another tikzpicture.
The soft path is actually stored in a macro constructed from the name.
There are a couple of reasons for using a \emph{name} rather than a macro directly.
@@ -98,122 +114,204 @@ One is so that it is compatible with the \texttt{intersections} library -- by de
The other is to provide a way to link a soft path with a set of TikZ styles (this is particularly useful when splitting the path into components).
\end{function}
-\begin{function}{save global}
-\begin{syntax}
-|save global=|\meta{name}
-\end{syntax}
-
-Saves the current soft path globally.
-\end{function}
-
-\begin{function}{clone}
+\begin{function}{clone, clone globally}
\begin{syntax}
|clone=|\marg{target}\marg{source}
+|clone globally=|\marg{target}\marg{source}
\end{syntax}
Clones one soft path into another.
+In the second, the clone is global (the original need not be).
\end{function}
-\begin{function}{restore}
+\begin{function}{restore, restore reverse}
\begin{syntax}
|restore=|\meta{name}
+|restore reverse=|\meta{name}
\end{syntax}
Restores a previously saved soft path to the current path.
+The \Verb+reverse+ version reverses the soft path first.
This happens immediately so can be issued in the options to the main command and then the path can be extended with normal drawing commands.
Any keys that affect the soft path directly should be applied \emph{before} this one.
One thing should be noted about transformations.
By the time a soft path is built, all available transformations have been applied.
This means that when re-inserting a soft path back into a high level command (such as |\draw|), the effect of existing transformations might produce some confusing effects.
-When restoring a path then the library tries to set the last point correctly, but depending on how this is used it can result in transformations being applied twice.
+When restoring a path then the library tries to set up various internals of TikZ correctly, but there may be some things I've overlooked or not accounted for particularly with regard to existing transformations; if you spot anything working oddly then please report it to me.
+
+Restoring a path also sets things right for positioning nodes along the path.
+Using the \Verb+pos=D+ key on a node positions that node at a particular point on the path.
+Exactly how the parameter is interpreted is the same as for the \Verb+spath+ coordinate system described in Section~\ref{sec:coordinates}.
\end{function}
-\begin{function}{append}
+\begin{function}{
+ append,
+ append reverse,
+ append no move,
+ append reverse no move
+}
\begin{syntax}
|append=|\meta{name}
+|append reverse=|\meta{name}
+|append no move=|\meta{name}
+|append reverse no move=|\meta{name}
\end{syntax}
-This inserts a soft path into the path at the current point, it is therefore more suited to being used part way through a path construction.
+This inserts a soft path, or its reverse, into the path at the current point, it is therefore more suited to being used part way through a path construction.
In a sense, it is a little like a \texttt{pic} in that it enables the user to construct a path segment early to be reused at various places.
-The path is \emph{welded} on to the current path, meaning that it starts from the current point and there is no \texttt{move}.
+The path is \emph{welded} on to the current path, meaning that the intervening \Verb+move+ is removed.
This is particularly useful for creating filled regions.
+The first two versions translate the path so that it starts at the last point on the existing path, the second two versions don't do this translation (the intention being that in such a case the translation is omitted because it is \emph{unnecessary} rather than simply not wanted because the effect of removing the intervening move will adjust the initial segment of the appended path otherwise).
+
+As with restoring a path, the last point and node positioning machinery is established.
+The positioning is relative to the appended part of the path, not the full path.
\end{function}
-\begin{function}{reverse}
+\begin{function}{insert, insert reverse}
\begin{syntax}
-|reverse=|\meta{name}
+|insert=|\meta{name}
+|insert reverse=|\meta{name}
\end{syntax}
-Reverses the path in the named spath object.
-This doesn't do any actually drawing.
-The effect is local, but if you want to work with both the original path and its reversal in the same path then use the \texttt{clone} key to copy it first.
+Like \Verb+append+ except that it doesn't remove the intervening \Verb+move+ and doesn't translate the inserted path.
+The \Verb+reverse+ version reverses the path first.
\end{function}
-\begin{function}{append reverse}
+\begin{function}{to}
\begin{syntax}
-|append reverse=|\meta{name}
+|to=|\marg{name}
\end{syntax}
-Like \texttt{append} except that the inserted path is reversed first.
+This defines a \Verb+to+ path from a soft path, so it inserts the soft path into the current path to span the gap between the start and end.
+The path is transformed by rotation, translation, and uniform scaling so that it exactly spans the gap required by the \Verb+to+ syntax.
+(If the start and end point of the soft path are very close together then it won't span the gap.)
\end{function}
-\begin{function}{insert}
-\begin{syntax}
-|insert=|\meta{name}
-\end{syntax}
-Like \texttt{append} except that it doesn't move the inserted path and there is a move between the current path and the inserted path.
-\end{function}
+\subsection{Transformation Routines}
-\begin{function}{
- shorten at end,
-shorten at start,
-shorten at both ends
-}
+The following keys all apply some sort of transformation to the soft path.
+They do not render the path, but simply adjust it.
+The global versions apply their transformation globally, otherwise it is local to the current group (or scope).
+
+\begin{function}{reverse, reverse global}
\begin{syntax}
-|shorten at end=|\marg{name}\marg{dimen}
+|reverse=|\meta{name}
+|reverse globally=|\meta{name}
\end{syntax}
-Shortens the soft path by the dimension from one or both ends.
-This shortens the soft path along its length so that it is guaranteed that the shorter path traces a subset of the original path.
-For B\'ezier curves, however, the amount of shortening is approximate and is better for shorter distances.
-If wanting to shorten by a large amount it is better to shorten by a small amount a number of times.
+Reverses the soft path in place.
+If you want to use the original path and its reversal in the same path (for example, for constructing a region to fill) then use the \texttt{clone} key to copy it first.
\end{function}
-\begin{function}{translate}
+
+\begin{function}{translate, translate global}
\begin{syntax}
|translate=|\marg{name}\marg{x-dimen}\marg{y-dimen}
+|translate globally=|\marg{name}\marg{x-dimen}\marg{y-dimen}
\end{syntax}
Translates the soft path by the given dimensions.
\end{function}
-\begin{function}{transform}
+\begin{function}{transform, transform global}
\begin{syntax}
|transform=|\marg{name}\marg{transformations}
+|transform globally=|\marg{name}\marg{transformations}
\end{syntax}
This applies the transformation to the soft path.
The transformation is processed by TikZ so should consist of TikZ-level transformations such as |shift={(2,2)}|.
\end{function}
+\begin{function}{span, span global}
+\begin{syntax}
+|span=|\marg{name}\marg{start point}\marg{end point}
+|span globally=|\marg{name}\marg{start point}\marg{end point}
+\end{syntax}
+
+This transforms the named path so that it goes from the start point to the end point.
+As with the \Verb+to+ path construction and the \Verb+splice+ method, this won't work if the path ends very close to where it starts.
+\end{function}
+
+\begin{function}{splice, splice global}
+\begin{syntax}
+|splice=|\marg{initial path}\marg{splice path}\marg{final path}
+|splice globally=|\marg{initial path}\marg{splice path}\marg{final path}
+\end{syntax}
+
+This splices the middle path into the gap between the initial and final paths.
+The middle path is transformed to fit (don't try this with a path whose starting and ending points are close together) and the paths are joined so that the last component of the initial path and the first component of the splice path become a single component, and similarly at the other end.
+\end{function}
+
+\begin{function}{join components with, join components globally with}
+\begin{syntax}
+|join components with=|\marg{path}\marg{splice path}
+|join components globally with=|\marg{path}\marg{splice path}
+\end{syntax}
+
+This inserts the |splice path| in the gaps between components of |path|.
+A \emph{spot weld} is performed first to join any components where the end of one is the start of the next.
+The result is a single component path.
+This does \emph{not} close the resulting path, for that see the key |close with|.
+\end{function}
+
+\begin{function}{close, close globally, close with, close globally with}
+\begin{syntax}
+|close=|\marg{path}
+|close globally=|\marg{path}
+|close with=|\marg{path}\marg{splice path}
+|close globally with=|\marg{path}\marg{splice path}
+\end{syntax}
+
+These all close the last component of the given path.
+The first two will insert a line segment if the initial and final points of the component are not sufficiently close.
+The latter two allow you to specify another path to insert.
+\end{function}
+
\subsection{Intersection Routines}
To use these features you need to use the \texttt{intersections} library.
+Note that there is currently an issue with the intersections routine when trying to intersect two parallel (or near parallel) lines.
+One workaround is to replace one of the lines by a B\'ezier curve along the same path.
+The best such replacement is to put the control points at one third and two thirds between the start and end.
-\begin{function}{split at self intersections}
+\begin{function}{
+ split at self intersections,
+ split globally at self intersections
+}
\begin{syntax}
|split at self intersections=|\meta{path}
+|split globally at self intersections=|\meta{path}
\end{syntax}
This inserts breaks into the named soft path at the points where it intersects itself.
+The breaks are not gaps, to achieve that use the shortening routines after this, rather they are a change of component.
+Think of it as if you took the pen off the page at that point and then put it straight back down again.
\end{function}
-\begin{function}{split at intersections}
+\begin{function}{
+ split at intersections with,
+ split globally at intersections with
+}
+\begin{syntax}
+|split at intersections with=|\marg{first}\marg{second}
+|split globally at intersections with=|\marg{first}\marg{second}
+\end{syntax}
+
+This inserts breaks into the first path where it intersects with the second.
+The second path is not changed.
+\end{function}
+
+\begin{function}{
+ split at intersections,
+ split globally at intersections
+}
\begin{syntax}
|split at intersections=|\marg{first}\marg{second}
+|split globally at intersections=|\marg{first}\marg{second}
\end{syntax}
This inserts breaks into a pair of paths at their mutual intersections.
@@ -221,13 +319,26 @@ This inserts breaks into a pair of paths at their mutual intersections.
\subsection{Working with Components}
-\begin{function}{get components of}
+\begin{function}{
+ get components of,
+ get components of globally,
+ \getComponentOf
+}
\begin{syntax}
-|get components of=|\marg{macro}\marg{path}
+|get components of=|\marg{path}\marg{macro}
+|get components of globally=|\marg{path}\marg{macro}
+|\getComponentOf|\marg{macro}\marg{number}
\end{syntax}
This splits the path into a list of its components, which are stored in the macro.
The macro can be used in a |\foreach|.
+
+The macro consists of a comma separated list of names of the components (the actual names used are of the form \Verb+anonymous_N+).
+To access an individual component, use the command \Verb+\getComponentOf+.
+This can be used directly in place of a path name in any other key, such as \Verb+restore+, (it is just the \LaTeX3 command \Verb+\clist_item:Nn+).
+
+Note that these are \emph{copies} of the components of the original path.
+Changing a component doesn't update the original path.
\end{function}
\begin{function}{render components}
@@ -248,49 +359,87 @@ It applies the following styles (in this order):
\end{enumerate}
\end{function}
-\begin{function}{insert gaps after components}
+\begin{function}{
+ insert gaps after components,
+ insert gaps globally after components
+}
\begin{syntax}
|insert gaps after components=|\marg{path}\marg{gap}\marg{components}
+|insert gaps globally after components=|\marg{path}\marg{gap}\marg{components}
\end{syntax}
This inserts a gap between components of a path by shortening the end of the specified component and start of the next one.
-The list of components is passed through a |\foreach| loop so that syntax like |2,4,...,16|.
+The list of components is passed through a |\foreach| loop so that syntax like |2,4,...,16| can be used.
\end{function}
-\begin{function}{join components}
+\begin{function}{
+ join components,
+ join components globally
+}
\begin{syntax}
|join components=|\marg{path}\marg{components}
+|join components globally=|\marg{path}\marg{components}
\end{syntax}
-This removes the \texttt{move} between the given component and the previous one.
+This removes the |move| between each of the given components and the previous one.
+The list of components is processed by |\foreach|.
If the component is the first one then it is joined to the last component.
\end{function}
-\begin{function}{spot weld}
+\begin{function}{
+ spot weld,
+ spot weld globally
+}
\begin{syntax}
|spot weld=|\meta{path}
+|spot weld globally=|\meta{path}
\end{syntax}
This removes the \texttt{move} between any two components of the path where the end point of one component is the same as the initial point of the next (the tolerance on error here is \(0.01\)pt).
\end{function}
-\begin{function}{remove empty components}
+\begin{function}{
+ remove empty components,
+ remove empty components globally
+}
\begin{syntax}
|remove empty components=|\meta{path}
+|remove empty components globally=|\meta{path}
\end{syntax}
This removes empty components of the path (which consist of simply a move).
\end{function}
+\begin{function}{
+ remove components,
+ remove components globally
+}
+\begin{syntax}
+|remove components=|\marg{path}\marg{list}
+|remove components globally=|\marg{path}\marg{list}
+\end{syntax}
+
+This removes the listed components of the path.
+As with other list routines, the list is parsed via |foreach| first.
+\end{function}
+
\subsection{Shortening Paths}
\begin{function}{
-shorten path at end,
-shorten path at start,
-shorten path at both ends
+shorten at end,
+shorten at start,
+shorten at both ends,
+shorten globally at end,
+shorten globally at start,
+shorten globally at both ends,
}
\begin{syntax}
-|shorten path at end=|\marg{path}\marg{length}
+|shorten at start=|\marg{path}\marg{length}
+|shorten at end=|\marg{path}\marg{length}
+|shorten at both ends=|\marg{path}\marg{length}
+|shorten globally at start=|\marg{path}\marg{length}
+|shorten globally at end=|\marg{path}\marg{length}
+|shorten globally at both ends=|\marg{path}\marg{length}
\end{syntax}
This shortens a path by the given amount from the specified end.
@@ -298,6 +447,7 @@ The shortening is done so that it guarantees that it lies along the original pat
This is particularly true for B\'ezier paths and if there is a very short segment at the end.
It uses the derivative at the end to work out how much to shorten by.
+If wanting to shorten by a large amount it is better to shorten by a small amount a number of times.
\end{function}
\subsection{Exporting Paths}
@@ -322,9 +472,14 @@ Saves the path to the file \texttt{path.svg} as an SVG document.
\subsection{Knots}
-\begin{function}{knot}
+\begin{function}{
+ global knot,
+ knot,
+ draft mode
+}
\begin{syntax}
|knot=|\meta{path}\meta{gap}\meta{components}
+|global knot=|\meta{path}\meta{gap}\meta{components}
\end{syntax}
This style combines various of the above to make it simpler to draw knots and links.
@@ -340,6 +495,8 @@ knot/.style n args={3}{
}
\end{lstlisting}
+(The \Verb+global+ version makes the path manipulating commands work globally.)
+
This splits a path at the points where it self-intersects and then inserts gaps between specified components.
The key |maybe spot weld| does a |spot weld| depending on whether or not the key |draft mode| is set to |true| or |false|.
The point here is that when designing the knot it is useful to not weld together components since that changes the component count.
@@ -349,8 +506,9 @@ The components can be styled using the keys as described in |render components|.
\end{function}
\subsection{Coordinates}
+\label{sec:coordinates}
-Soft paths are not natural TikZ objects and so when replaced back into a TikZ path construction then they don't fully interact with other TikZ things, like placing nodes at points on the path.
+Soft paths are not natural TikZ objects and so when replaced back into a TikZ path construction then they don't fully interact with other TikZ things, like placing nodes at points on the path (though I've done my best to make that work).
To make things a little easier there is defined a coordinate system which identifies a point at a certain location along a soft path and keys which apply a transformation.
\begin{function}{spath cs}
@@ -444,6 +602,45 @@ The intention with the second key is that it is similar to what happens with the
\end{tikzpicture}
\end{example}
+\begin{example}
+\begin{tikzpicture}
+\path[draw=orange,ultra thick,spath/save=a] (3,2) -- ++(1,1) to[out=90,in=-90] ++(3,0);
+
+\tikzset{
+ spath/span={a}{(4,5)}{(7,1)}
+}
+
+\fill
+(4,5) circle[radius=3pt]
+(7,1) circle[radius=3pt]
+;
+
+\draw[spath/restore=a];
+\end{tikzpicture}
+\end{example}
+
+
+\item To paths.
+
+\begin{example}
+\begin{tikzpicture}
+\path[draw=orange,ultra thick,spath/save=a] (3,2) -- ++(1,1) to[out=90,in=-90] ++(3,0);
+
+\draw (0,0) -- +(1,1) to[spath/to={a}] node[pos=.6,auto] {node} ++(2,-1) -- +(3,1);
+\end{tikzpicture}
+\end{example}
+
+\item Node placement.
+
+\begin{example}
+\begin{tikzpicture}
+\path[spath/save=curve] (0,0) to[out=0,in=180] +(1,1);
+
+\draw (0,0) -- (2,0) [spath/append=curve] node[pos=.5,auto,sloped] {node} -- +(2,0);
+
+\end{tikzpicture}
+\end{example}
+
\item Shortening.
\begin{example}
diff --git a/graphics/pgf/contrib/spath3/spath3_code.dtx b/graphics/pgf/contrib/spath3/spath3_code.dtx
index c5c584c4f8..621ab942f7 100644
--- a/graphics/pgf/contrib/spath3/spath3_code.dtx
+++ b/graphics/pgf/contrib/spath3/spath3_code.dtx
@@ -35,7 +35,7 @@ See http://www.latex-project.org/lppl.txt
\endpreamble
\postamble
-Copyright (C) 2011-2019 by Andrew Stacey <loopspace@mathforge.org>
+Copyright (C) 2011-2021 by Andrew Stacey <loopspace@mathforge.org>
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License (LPPL), either
@@ -47,7 +47,7 @@ http://www.latex-project.org/lppl.txt
This work is "maintained" (as per LPPL maintenance status) by
Andrew Stacey.
-This work consists of the files spath3.dtx
+This work consists of the files spath3_code.dtx
calligraphy_doc.tex
knots_doc.tex
spath3.tex
@@ -143,7 +143,7 @@ and the derived files spath3.ins,
%</driver>
% \fi
%
-% \CheckSum{6848}
+% \CheckSum{8404}
%
% \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
@@ -167,9 +167,15 @@ and the derived files spath3.ins,
% \changes{1.2}{2019/02/12}{More fixes due to changes in LaTeX3}
% \changes{1.4}{2020/12/18}{A fair amount of code reimplementation and reorganisation, together with defining TikZ keys to make functions available for use.}
% \changes{2.0}{2021/01/19}{Refactored the code to remove the OO approach and make it functional, introduced the spath3 TikZ library to provide a user interface.}
+% \changes{2.2}{2021/02/05}{Bugfixes and improvements, mainly with regard to the intersection and splitting routines.}
%
% \DoNotIndex{\newcommand,\newenvironment}
%
+% \pdfstringdefDisableCommands{%
+% \def\\{}%
+% \def\url#1{<#1>}%
+% }
+%
% \providecommand*{\url}{\texttt}
% \GetFileInfo{spath3.sty}
% \title{The \textsf{spath3} package: code}
@@ -250,12 +256,13 @@ and the derived files spath3.ins,
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
\RequirePackage{pgf}
-\ProvidesExplPackage {spath3} {2021/01/19} {2.0} {Functions for
+\ProvidesExplPackage {spath3} {2021/02/05} {2.2} {Functions for
manipulating PGF soft paths}
\RequirePackage{xparse}
% \end{macrocode}
%
% Utilities copied from \url{https://github.com/loopspace/LaTeX3-Utilities} for adding something in braces to a token list.
+% I find I use this quite a lot in my packages.
% \begin{macrocode}
\cs_new_protected:Nn \@@_tl_put_right_braced:Nn
{
@@ -281,33 +288,77 @@ manipulating PGF soft paths}
\cs_generate_variant:Nn \@@_tl_gput_left_braced:Nn { NV, cV, cv, Nx, cx }
% \end{macrocode}
%
-% We need a slew of temporary variables.
+%
+% I had to think a bit about how to get \TeX\ to work the way I wanted.
+% I'm really defining \emph{functions} but \TeX\ doesn't really have that concept, even with all the amazing \LaTeX3 stuff.
+% The main issue I had was with scoping and return values.
+% By default, \TeX\ functions aren't scoped -- they work on the same level as the calling functions.
+% To protect the internals from being overwritten, each core function works inside a group.
+% But then I have to work to get the answer out of it.
+% So each of my core functions finishes by storing its return value in an appropriate \Verb+output+ variable.
+% The core functions are then wrapped in a more user friendly interface that will take that output and assign it to a variable.
+% This also means that I can deal with local and global versions without duplicating code.
+%
+% \begin{macrocode}
+\tl_new:N \g_@@_output_tl
+\int_new:N \g_@@_output_int
+\seq_new:N \g_@@_output_seq
+\bool_new:N \g_@@_output_bool
+% \end{macrocode}
+%
+% To avoid creating vast numbers of variables, we provide ourselves with a few that we reuse frequently.
+% For that reason, most of them don't have very exciting names.
+%
+% These are general purpose variables.
% \begin{macrocode}
\tl_new:N \l_@@_tmpa_tl
\tl_new:N \l_@@_tmpb_tl
\tl_new:N \l_@@_tmpc_tl
\tl_new:N \l_@@_tmpd_tl
\tl_new:N \l_@@_tmpe_tl
+\tl_new:N \l_@@_tmpf_tl
+\tl_new:N \l_@@_tmpg_tl
+\tl_new:N \l_@@_tmph_tl
+\tl_new:N \l_@@_tmpi_tl
\seq_new:N \l_@@_tmpa_seq
\seq_new:N \l_@@_tmpb_seq
-
-\tl_new:N \g_@@_output_tl
-\int_new:N \g_@@_output_int
-\seq_new:N \g_@@_output_seq
+\seq_new:N \l_@@_tmpc_seq
\dim_new:N \l_@@_tmpa_dim
\dim_new:N \l_@@_tmpb_dim
-\dim_new:N \l_@@_move_x_dim
-\dim_new:N \l_@@_move_y_dim
+
\fp_new:N \l_@@_tmpa_fp
\fp_new:N \l_@@_tmpb_fp
+\fp_new:N \l_@@_tmpc_fp
+
\int_new:N \l_@@_tmpa_int
+\int_new:N \l_@@_tmpb_int
-\bool_new:N \g_@@_output_bool
+\bool_new:N \l_@@_tmpa_bool
+% \end{macrocode}
+%
+% Whenever I need more than two \Verb+dim+ variables it is because I need to remember the position of a move.
+%
+% \begin{macrocode}
+\dim_new:N \l_@@_move_x_dim
+\dim_new:N \l_@@_move_y_dim
+% \end{macrocode}
+%
+% Closed paths often need special handling.
+% When it's needed, this will say whether the path is closed or not.
+%
+% \begin{macrocode}
\bool_new:N \l_@@_closed_bool
% \end{macrocode}
%
+% The intersection routine can't happen inside a group so we need two token lists to hold the paths that we'll intersect.
+%
+% \begin{macrocode}
+\tl_new:N \l_@@_intersecta_tl
+\tl_new:N \l_@@_intersectb_tl
+% \end{macrocode}
+%
% We need to be able to compare against the macros that can occur in a soft path so these token lists contain them.
% These are global constants so that they can be used in other packages.
% \begin{macrocode}
@@ -319,28 +370,16 @@ manipulating PGF soft paths}
\tl_const:Nn \c_spath_closepath_tl {\pgfsyssoftpath@closepathtoken}
% \end{macrocode}
%
-%
% We will want to be able to use anonymous spaths internally, so we create a global counter that we can use to refer to them.
% \begin{macrocode}
\int_new:N \g_@@_anon_int
\int_gzero:N \g_@@_anon_int
% \end{macrocode}
%
-% Groups and iterations don't mix well and I haven't got a good scheme for protecting local calculations when iterating, so we do our best with iteration-specific variables.
-% \begin{macrocode}
-\tl_new:N \l_@@_itera_tl
-\tl_new:N \l_@@_iterb_tl
-\tl_new:N \l_@@_iterc_tl
-\tl_new:N \l_@@_iterd_tl
-\tl_new:N \l_@@_iterp_tl
-\dim_new:N \l_@@_itera_dim
-\dim_new:N \l_@@_iterb_dim
-\seq_new:N \l_@@_iter_seq
-% \end{macrocode}
-%
% And some error messages
% \begin{macrocode}
-\msg_new:nnn { spath3 } { unknown path construction } { The~ path~ construction~ element~ #1~ is~ not~ currently~ supported.}
+\msg_new:nnn { spath3 } { unknown path construction }
+{ The~ path~ construction~ element~ #1~ is~ not~ currently~ supported.}
% \end{macrocode}
%
%
@@ -351,7 +390,7 @@ manipulating PGF soft paths}
% The macro to store it in is the first argument.
% These functions occur in two versions, the one with the \texttt{g} makes the assignment global.
%
-% \begin{macro}{
+% \begin{macro}[internal]{
% \spath_segments_to_seq:Nn,
% \spath_segments_gto_seq:Nn
%}
@@ -360,131 +399,131 @@ manipulating PGF soft paths}
\cs_new_protected_nopar:Npn \@@_segments_to_seq:n #1
{
\group_begin:
- \tl_set:Nn \l_@@_itera_tl {#1}
- \tl_clear:N \l_@@_iterb_tl
- \seq_clear:N \l_@@_iter_seq
- \dim_zero:N \l_@@_itera_dim
- \dim_zero:N \l_@@_iterb_dim
+ \tl_set:Nn \l_@@_tmpa_tl {#1}
+ \tl_clear:N \l_@@_tmpb_tl
+ \seq_clear:N \l_@@_tmpa_seq
+ \dim_zero:N \l_@@_tmpa_dim
+ \dim_zero:N \l_@@_tmpb_dim
\bool_until_do:nn {
- \tl_if_empty_p:N \l_@@_itera_tl
+ \tl_if_empty_p:N \l_@@_tmpa_tl
}
{
- \tl_set:Nx \l_@@_iterc_tl {\tl_head:N \l_@@_itera_tl}
- \tl_set:Nx \l_@@_itera_tl {\tl_tail:N \l_@@_itera_tl}
- \tl_case:NnF \l_@@_iterc_tl
+ \tl_set:Nx \l_@@_tmpc_tl {\tl_head:N \l_@@_tmpa_tl}
+ \tl_set:Nx \l_@@_tmpa_tl {\tl_tail:N \l_@@_tmpa_tl}
+ \tl_case:NnF \l_@@_tmpc_tl
{
\c_spath_moveto_tl
{
- \tl_set_eq:NN \l_@@_iterb_tl \c_spath_moveto_tl
- \tl_put_right:Nx \l_@@_iterb_tl {{\tl_head:N \l_@@_itera_tl}}
- \dim_set:Nn \l_@@_itera_dim {\tl_head:N \l_@@_itera_tl}
- \tl_set:Nx \l_@@_itera_tl {\tl_tail:N \l_@@_itera_tl}
+ \tl_set_eq:NN \l_@@_tmpb_tl \c_spath_moveto_tl
+ \tl_put_right:Nx \l_@@_tmpb_tl {{\tl_head:N \l_@@_tmpa_tl}}
+ \dim_set:Nn \l_@@_tmpa_dim {\tl_head:N \l_@@_tmpa_tl}
+ \tl_set:Nx \l_@@_tmpa_tl {\tl_tail:N \l_@@_tmpa_tl}
- \tl_put_right:Nx \l_@@_iterb_tl {{\tl_head:N \l_@@_itera_tl}}
- \dim_set:Nn \l_@@_iterb_dim {\tl_head:N \l_@@_itera_tl}
- \tl_set:Nx \l_@@_itera_tl {\tl_tail:N \l_@@_itera_tl}
+ \tl_put_right:Nx \l_@@_tmpb_tl {{\tl_head:N \l_@@_tmpa_tl}}
+ \dim_set:Nn \l_@@_tmpb_dim {\tl_head:N \l_@@_tmpa_tl}
+ \tl_set:Nx \l_@@_tmpa_tl {\tl_tail:N \l_@@_tmpa_tl}
- \tl_set:Nx \l_@@_iterd_tl {\tl_head:N \l_@@_itera_tl}
- \tl_if_eq:NNF \l_@@_iterd_tl \c_spath_moveto_tl
+ \tl_set:Nx \l_@@_tmpd_tl {\tl_head:N \l_@@_tmpa_tl}
+ \tl_if_eq:NNF \l_@@_tmpd_tl \c_spath_moveto_tl
{
- \tl_clear:N \l_@@_iterb_tl
+ \tl_clear:N \l_@@_tmpb_tl
}
}
\c_spath_lineto_tl
{
- \tl_set_eq:NN \l_@@_iterb_tl \c_spath_moveto_tl
- \tl_put_right:Nx \l_@@_iterb_tl
+ \tl_set_eq:NN \l_@@_tmpb_tl \c_spath_moveto_tl
+ \tl_put_right:Nx \l_@@_tmpb_tl
{
- {\dim_use:N \l_@@_itera_dim}
- {\dim_use:N \l_@@_iterb_dim}
+ {\dim_use:N \l_@@_tmpa_dim}
+ {\dim_use:N \l_@@_tmpb_dim}
}
- \tl_put_right:NV \l_@@_iterb_tl \c_spath_lineto_tl
+ \tl_put_right:NV \l_@@_tmpb_tl \c_spath_lineto_tl
- \tl_put_right:Nx \l_@@_iterb_tl {{\tl_head:N \l_@@_itera_tl}}
- \dim_set:Nn \l_@@_itera_dim {\tl_head:N \l_@@_itera_tl}
- \tl_set:Nx \l_@@_itera_tl {\tl_tail:N \l_@@_itera_tl}
+ \tl_put_right:Nx \l_@@_tmpb_tl {{\tl_head:N \l_@@_tmpa_tl}}
+ \dim_set:Nn \l_@@_tmpa_dim {\tl_head:N \l_@@_tmpa_tl}
+ \tl_set:Nx \l_@@_tmpa_tl {\tl_tail:N \l_@@_tmpa_tl}
- \tl_put_right:Nx \l_@@_iterb_tl {{\tl_head:N \l_@@_itera_tl}}
- \dim_set:Nn \l_@@_iterb_dim {\tl_head:N \l_@@_itera_tl}
- \tl_set:Nx \l_@@_itera_tl {\tl_tail:N \l_@@_itera_tl}
+ \tl_put_right:Nx \l_@@_tmpb_tl {{\tl_head:N \l_@@_tmpa_tl}}
+ \dim_set:Nn \l_@@_tmpb_dim {\tl_head:N \l_@@_tmpa_tl}
+ \tl_set:Nx \l_@@_tmpa_tl {\tl_tail:N \l_@@_tmpa_tl}
}
\c_spath_curvetoa_tl
{
- \tl_set_eq:NN \l_@@_iterb_tl \c_spath_moveto_tl
- \tl_put_right:Nx \l_@@_iterb_tl
+ \tl_set_eq:NN \l_@@_tmpb_tl \c_spath_moveto_tl
+ \tl_put_right:Nx \l_@@_tmpb_tl
{
- {\dim_use:N \l_@@_itera_dim}
- {\dim_use:N \l_@@_iterb_dim}
+ {\dim_use:N \l_@@_tmpa_dim}
+ {\dim_use:N \l_@@_tmpb_dim}
}
- \tl_put_right:NV \l_@@_iterb_tl \c_spath_curvetoa_tl
+ \tl_put_right:NV \l_@@_tmpb_tl \c_spath_curvetoa_tl
\prg_replicate:nn {2} {
- \tl_put_right:Nx \l_@@_iterb_tl {{\tl_head:N \l_@@_itera_tl}}
- \tl_set:Nx \l_@@_itera_tl {\tl_tail:N \l_@@_itera_tl}
- \tl_put_right:Nx \l_@@_iterb_tl {{\tl_head:N \l_@@_itera_tl}}
- \tl_set:Nx \l_@@_itera_tl {\tl_tail:N \l_@@_itera_tl}
- \tl_put_right:Nx \l_@@_iterb_tl {\tl_head:N \l_@@_itera_tl}
- \tl_set:Nx \l_@@_itera_tl {\tl_tail:N \l_@@_itera_tl}
+ \tl_put_right:Nx \l_@@_tmpb_tl {{\tl_head:N \l_@@_tmpa_tl}}
+ \tl_set:Nx \l_@@_tmpa_tl {\tl_tail:N \l_@@_tmpa_tl}
+ \tl_put_right:Nx \l_@@_tmpb_tl {{\tl_head:N \l_@@_tmpa_tl}}
+ \tl_set:Nx \l_@@_tmpa_tl {\tl_tail:N \l_@@_tmpa_tl}
+ \tl_put_right:Nx \l_@@_tmpb_tl {\tl_head:N \l_@@_tmpa_tl}
+ \tl_set:Nx \l_@@_tmpa_tl {\tl_tail:N \l_@@_tmpa_tl}
}
- \tl_put_right:Nx \l_@@_iterb_tl {{\tl_head:N \l_@@_itera_tl}}
- \dim_set:Nn \l_@@_itera_dim {\tl_head:N \l_@@_itera_tl}
- \tl_set:Nx \l_@@_itera_tl {\tl_tail:N \l_@@_itera_tl}
+ \tl_put_right:Nx \l_@@_tmpb_tl {{\tl_head:N \l_@@_tmpa_tl}}
+ \dim_set:Nn \l_@@_tmpa_dim {\tl_head:N \l_@@_tmpa_tl}
+ \tl_set:Nx \l_@@_tmpa_tl {\tl_tail:N \l_@@_tmpa_tl}
- \tl_put_right:Nx \l_@@_iterb_tl {{\tl_head:N \l_@@_itera_tl}}
- \dim_set:Nn \l_@@_iterb_dim {\tl_head:N \l_@@_itera_tl}
- \tl_set:Nx \l_@@_itera_tl {\tl_tail:N \l_@@_itera_tl}
+ \tl_put_right:Nx \l_@@_tmpb_tl {{\tl_head:N \l_@@_tmpa_tl}}
+ \dim_set:Nn \l_@@_tmpb_dim {\tl_head:N \l_@@_tmpa_tl}
+ \tl_set:Nx \l_@@_tmpa_tl {\tl_tail:N \l_@@_tmpa_tl}
}
\c_spath_closepath_tl
{
- \tl_set_eq:NN \l_@@_iterb_tl \c_spath_moveto_tl
- \tl_put_right:Nx \l_@@_iterb_tl
+ \tl_set_eq:NN \l_@@_tmpb_tl \c_spath_moveto_tl
+ \tl_put_right:Nx \l_@@_tmpb_tl
{
- {\dim_use:N \l_@@_itera_dim}
- {\dim_use:N \l_@@_iterb_dim}
+ {\dim_use:N \l_@@_tmpa_dim}
+ {\dim_use:N \l_@@_tmpb_dim}
}
- \tl_put_right:NV \l_@@_iterb_tl \c_spath_lineto_tl
+ \tl_put_right:NV \l_@@_tmpb_tl \c_spath_lineto_tl
- \tl_put_right:Nx \l_@@_iterb_tl {{\tl_head:N \l_@@_itera_tl}}
- \dim_set:Nn \l_@@_itera_dim {\tl_head:N \l_@@_itera_tl}
- \tl_set:Nx \l_@@_itera_tl {\tl_tail:N \l_@@_itera_tl}
+ \tl_put_right:Nx \l_@@_tmpb_tl {{\tl_head:N \l_@@_tmpa_tl}}
+ \dim_set:Nn \l_@@_tmpa_dim {\tl_head:N \l_@@_tmpa_tl}
+ \tl_set:Nx \l_@@_tmpa_tl {\tl_tail:N \l_@@_tmpa_tl}
- \tl_put_right:Nx \l_@@_iterb_tl {{\tl_head:N \l_@@_itera_tl}}
- \dim_set:Nn \l_@@_iterb_dim {\tl_head:N \l_@@_itera_tl}
- \tl_set:Nx \l_@@_itera_tl {\tl_tail:N \l_@@_itera_tl}
+ \tl_put_right:Nx \l_@@_tmpb_tl {{\tl_head:N \l_@@_tmpa_tl}}
+ \dim_set:Nn \l_@@_tmpb_dim {\tl_head:N \l_@@_tmpa_tl}
+ \tl_set:Nx \l_@@_tmpa_tl {\tl_tail:N \l_@@_tmpa_tl}
}
}
{
- \tl_set_eq:NN \l_@@_iterb_tl \l_@@_iterc_tl
- \tl_put_right:Nx \l_@@_iterb_tl {{\tl_head:N \l_@@_itera_tl}}
- \dim_set:Nn \l_@@_itera_dim {\tl_head:N \l_@@_itera_tl}
- \tl_set:Nx \l_@@_itera_tl {\tl_tail:N \l_@@_itera_tl}
+ \tl_set_eq:NN \l_@@_tmpb_tl \l_@@_tmpc_tl
+ \tl_put_right:Nx \l_@@_tmpb_tl {{\tl_head:N \l_@@_tmpa_tl}}
+ \dim_set:Nn \l_@@_tmpa_dim {\tl_head:N \l_@@_tmpa_tl}
+ \tl_set:Nx \l_@@_tmpa_tl {\tl_tail:N \l_@@_tmpa_tl}
- \tl_put_right:Nx \l_@@_iterb_tl {{\tl_head:N \l_@@_itera_tl}}
- \dim_set:Nn \l_@@_iterb_dim {\tl_head:N \l_@@_itera_tl}
- \tl_set:Nx \l_@@_itera_tl {\tl_tail:N \l_@@_itera_tl}
+ \tl_put_right:Nx \l_@@_tmpb_tl {{\tl_head:N \l_@@_tmpa_tl}}
+ \dim_set:Nn \l_@@_tmpb_dim {\tl_head:N \l_@@_tmpa_tl}
+ \tl_set:Nx \l_@@_tmpa_tl {\tl_tail:N \l_@@_tmpa_tl}
}
- \tl_if_empty:NF \l_@@_iterb_tl
+ \tl_if_empty:NF \l_@@_tmpb_tl
{
- \seq_put_right:NV \l_@@_iter_seq \l_@@_iterb_tl
+ \seq_put_right:NV \l_@@_tmpa_seq \l_@@_tmpb_tl
}
- \tl_clear:N \l_@@_iterb_tl
+ \tl_clear:N \l_@@_tmpb_tl
}
\seq_gclear:N \g_@@_output_seq
- \seq_gset_eq:NN \g_@@_output_seq \l_@@_iter_seq
+ \seq_gset_eq:NN \g_@@_output_seq \l_@@_tmpa_seq
\group_end:
}
\cs_new_protected_nopar:Npn \spath_segments_to_seq:Nn #1#2
@@ -506,7 +545,7 @@ manipulating PGF soft paths}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{
+% \begin{macro}[internal]{
% \spath_components_to_seq:Nn,
% \spath_components_gto_seq:Nn,
% \spath_components_to_clist:Nn,
@@ -517,33 +556,33 @@ manipulating PGF soft paths}
\cs_new_protected_nopar:Npn \@@_components_to_seq:n #1
{
\group_begin:
- \tl_set:Nn \l_@@_itera_tl {#1}
- \seq_clear:N \l_@@_iter_seq
- \tl_set:Nx \l_@@_itera_tl {\tl_tail:N \l_@@_itera_tl}
- \tl_put_right:NV \l_@@_itera_tl \c_spath_moveto_tl
- \tl_set_eq:NN \l_@@_iterb_tl \c_spath_moveto_tl
+ \tl_set:Nn \l_@@_tmpa_tl {#1}
+ \seq_clear:N \l_@@_tmpa_seq
+ \tl_set:Nx \l_@@_tmpa_tl {\tl_tail:N \l_@@_tmpa_tl}
+ \tl_put_right:NV \l_@@_tmpa_tl \c_spath_moveto_tl
+ \tl_set_eq:NN \l_@@_tmpb_tl \c_spath_moveto_tl
\bool_do_until:nn {
- \tl_if_empty_p:N \l_@@_itera_tl
+ \tl_if_empty_p:N \l_@@_tmpa_tl
}
{
- \tl_set:Nx \l_@@_iterc_tl {\tl_head:N \l_@@_itera_tl}
- \tl_if_eq:NNT \l_@@_iterc_tl \c_spath_moveto_tl
+ \tl_set:Nx \l_@@_tmpc_tl {\tl_head:N \l_@@_tmpa_tl}
+ \tl_if_eq:NNT \l_@@_tmpc_tl \c_spath_moveto_tl
{
- \seq_put_right:NV \l_@@_iter_seq \l_@@_iterb_tl
- \tl_clear:N \l_@@_iterb_tl
+ \seq_put_right:NV \l_@@_tmpa_seq \l_@@_tmpb_tl
+ \tl_clear:N \l_@@_tmpb_tl
}
- \tl_if_single:NTF \l_@@_iterc_tl
+ \tl_if_single:NTF \l_@@_tmpc_tl
{
- \tl_put_right:NV \l_@@_iterb_tl \l_@@_iterc_tl
+ \tl_put_right:NV \l_@@_tmpb_tl \l_@@_tmpc_tl
}
{
- \tl_put_right:Nx \l_@@_iterb_tl {{\l_@@_iterc_tl}}
+ \tl_put_right:Nx \l_@@_tmpb_tl {{\l_@@_tmpc_tl}}
}
- \tl_set:Nx \l_@@_itera_tl {\tl_tail:N \l_@@_itera_tl}
+ \tl_set:Nx \l_@@_tmpa_tl {\tl_tail:N \l_@@_tmpa_tl}
}
\seq_gclear:N \g_@@_output_seq
- \seq_gset_eq:NN \g_@@_output_seq \l_@@_iter_seq
+ \seq_gset_eq:NN \g_@@_output_seq \l_@@_tmpa_seq
\group_end:
}
\cs_new_protected_nopar:Npn \spath_components_to_seq:Nn #1#2
@@ -582,7 +621,7 @@ manipulating PGF soft paths}
% \end{macro}
%
%
-% \begin{macro}{\spath_length:n}
+% \begin{macro}[internal]{\spath_length:n}
% Counts the number of triples in the path.
% \begin{macrocode}
\cs_new_protected_nopar:Npn \spath_length:n #1
@@ -593,7 +632,7 @@ manipulating PGF soft paths}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{
+% \begin{macro}[internal]{
% \spath_reallength:Nn,
% \spath_greallength:Nn
% }
@@ -604,8 +643,8 @@ manipulating PGF soft paths}
\group_begin:
\int_set:Nn \l_@@_tmpa_int {0}
\tl_map_inline:nn {#1} {
- \tl_set:Nn \l_@@_tmpc_tl {##1}
- \tl_case:NnT \l_@@_tmpc_tl
+ \tl_set:Nn \l_@@_tmpa_tl {##1}
+ \tl_case:NnT \l_@@_tmpa_tl
{
\c_spath_lineto_tl {}
\c_spath_curveto_tl {}
@@ -636,7 +675,7 @@ manipulating PGF soft paths}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{
+% \begin{macro}[internal]{
% \spath_numberofcomponents:Nn,
% \spath_gnumberofcomponents:Nn
% }
@@ -667,18 +706,18 @@ manipulating PGF soft paths}
\int_set_eq:NN #1 \g_@@_output_int
\int_gzero:N \g_@@_output_int
}
-\cs_generate_variant:Nn \spath_numberofcomponents:Nn {NV, cn, cV}
+\cs_generate_variant:Nn \spath_numberofcomponents:Nn {NV, cn, cV, Nv}
\cs_new_protected_nopar:Npn \spath_gnumberofcomponents:Nn #1#2
{
\@@_numberofcomponents:n {#2}
\int_gset_eq:NN #1 \g_@@_output_int
\int_gzero:N \g_@@_output_int
}
-\cs_generate_variant:Nn \spath_gnumberofcomponents:Nn {NV, cn, cV}
+\cs_generate_variant:Nn \spath_gnumberofcomponents:Nn {NV, cn, cV, Nv}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{
+% \begin{macro}[internal]{
% \spath_initialpoint:Nn,
% \spath_ginitialpoint:Nn
% }
@@ -687,13 +726,13 @@ manipulating PGF soft paths}
\cs_new_protected_nopar:Npn \@@_initialpoint:n #1
{
\group_begin:
- \tl_clear:N \l_@@_tmpb_tl
- \tl_set:Nx \l_@@_tmpb_tl
+ \tl_clear:N \l_@@_tmpa_tl
+ \tl_set:Nx \l_@@_tmpa_tl
{
{ \tl_item:nn {#1} {2} }
{ \tl_item:nn {#1} {3} }
}
- \tl_gset_eq:NN \g_@@_output_tl \l_@@_tmpb_tl
+ \tl_gset_eq:NN \g_@@_output_tl \l_@@_tmpa_tl
\group_end:
}
\cs_new_protected_nopar:Npn \spath_initialpoint:Nn #1#2
@@ -713,7 +752,7 @@ manipulating PGF soft paths}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{
+% \begin{macro}[internal]{
% \spath_finalpoint:Nn,
% \spath_gfinalpoint:Nn,
% }
@@ -750,7 +789,60 @@ manipulating PGF soft paths}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{
+% \begin{macro}[internal]{
+% \spath_finalmovepoint:Nn,
+% \spath_gfinalmovepoint:Nn
+% }
+% Get the last move on the path.
+% \begin{macrocode}
+\cs_new_protected_nopar:Npn \@@_finalmovepoint:n #1
+{
+ \group_begin:
+ \tl_set:Nn \l_@@_tmpc_tl { {0pt} {0pt} }
+ \tl_set:Nn \l_@@_tmpa_tl {#1}
+ \bool_do_until:nn
+ {
+ \tl_if_empty_p:N \l_@@_tmpa_tl
+ }
+ {
+ \tl_set:Nx \l_@@_tmpb_tl {\tl_head:N \l_@@_tmpa_tl}
+ \tl_case:Nn \l_@@_tmpb_tl
+ {
+ \c_spath_moveto_tl
+ {
+ \tl_set:Nx \l_@@_tmpc_tl
+ {
+ { \tl_item:Nn \l_@@_tmpa_tl {2} }
+ { \tl_item:Nn \l_@@_tmpa_tl {3} }
+ }
+ }
+ }
+ \prg_replicate:nn {3}
+ {
+ \tl_set:Nx \l_@@_tmpa_tl {\tl_tail:N \l_@@_tmpa_tl}
+ }
+ }
+ \tl_gset_eq:NN \g_@@_output_tl \l_@@_tmpc_tl
+ \group_end:
+}
+\cs_new_protected_nopar:Npn \spath_finalmovepoint:Nn #1#2
+{
+ \@@_finalmovepoint:n {#2}
+ \tl_set_eq:NN #1 \g_@@_output_tl
+ \tl_gclear:N \g_@@_output_tl
+}
+\cs_generate_variant:Nn \spath_finalmovepoint:Nn {NV, cn, cV}
+\cs_new_protected_nopar:Npn \spath_gfinalmovepoint:Nn #1#2
+{
+ \@@_finalmovepoint:n {#2}
+ \tl_gset_eq:NN #1 \g_@@_output_tl
+ \tl_gclear:N \g_@@_output_tl
+}
+\cs_generate_variant:Nn \spath_gfinalmovepoint:Nn {NV, cn, cV}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[internal]{
% \spath_reverse:Nn,
% \spath_greverse:Nn
% }
@@ -836,7 +928,10 @@ manipulating PGF soft paths}
\bool_set_true:N \l_@@_closed_bool
}
{
- \msg_warning:nnx { spath3 } { unknown path construction } {\l_@@_tmpc_tl }
+ \msg_warning:nnx
+ { spath3 }
+ { unknown path construction }
+ {\l_@@_tmpc_tl }
}
\tl_set:Nx \l_@@_tmpa_tl {\tl_tail:N \l_@@_tmpa_tl}
@@ -891,7 +986,7 @@ manipulating PGF soft paths}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{
+% \begin{macro}[internal]{
% \spath_initialaction:Nn,
% \spath_ginitialaction:Nn,
% }
@@ -931,7 +1026,7 @@ manipulating PGF soft paths}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{
+% \begin{macro}[internal]{
% \spath_finalaction:Nn,
% \spath_gfinalaction:Nn
% }
@@ -977,7 +1072,7 @@ manipulating PGF soft paths}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{
+% \begin{macro}[internal]{
% \spath_minbb:Nn,
% \spath_gminbb:Nn
% }
@@ -997,9 +1092,11 @@ manipulating PGF soft paths}
}
{
\tl_set:Nx \l_@@_tmpa_tl {\tl_tail:N \l_@@_tmpa_tl}
- \dim_set:Nn \l_@@_tmpa_dim {\dim_min:nn {\tl_head:N \l_@@_tmpa_tl} {\l_@@_tmpa_dim}}
+ \dim_set:Nn \l_@@_tmpa_dim
+ {\dim_min:nn {\tl_head:N \l_@@_tmpa_tl} {\l_@@_tmpa_dim}}
\tl_set:Nx \l_@@_tmpa_tl {\tl_tail:N \l_@@_tmpa_tl}
- \dim_set:Nn \l_@@_tmpb_dim {\dim_min:nn {\tl_head:N \l_@@_tmpa_tl} {\l_@@_tmpb_dim}}
+ \dim_set:Nn \l_@@_tmpb_dim
+ {\dim_min:nn {\tl_head:N \l_@@_tmpa_tl} {\l_@@_tmpb_dim}}
\tl_set:Nx \l_@@_tmpa_tl {\tl_tail:N \l_@@_tmpa_tl}
}
\tl_clear:N \l_@@_tmpb_tl
@@ -1028,7 +1125,7 @@ manipulating PGF soft paths}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{
+% \begin{macro}[internal]{
% \spath_maxbb:Nn,
% \spath_gmaxbb:Nn,
% }
@@ -1048,9 +1145,11 @@ manipulating PGF soft paths}
}
{
\tl_set:Nx \l_@@_tmpa_tl {\tl_tail:N \l_@@_tmpa_tl}
- \dim_set:Nn \l_@@_tmpa_dim {\dim_max:nn {\tl_head:N \l_@@_tmpa_tl} {\l_@@_tmpa_dim}}
+ \dim_set:Nn \l_@@_tmpa_dim
+ {\dim_max:nn {\tl_head:N \l_@@_tmpa_tl} {\l_@@_tmpa_dim}}
\tl_set:Nx \l_@@_tmpa_tl {\tl_tail:N \l_@@_tmpa_tl}
- \dim_set:Nn \l_@@_tmpb_dim {\dim_max:nn {\tl_head:N \l_@@_tmpa_tl} {\l_@@_tmpb_dim}}
+ \dim_set:Nn \l_@@_tmpb_dim
+ {\dim_max:nn {\tl_head:N \l_@@_tmpa_tl} {\l_@@_tmpb_dim}}
\tl_set:Nx \l_@@_tmpa_tl {\tl_tail:N \l_@@_tmpa_tl}
}
\tl_clear:N \l_@@_tmpb_tl
@@ -1079,7 +1178,7 @@ manipulating PGF soft paths}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{
+% \begin{macro}[internal]{
% \spath_save_to_aux:Nn,
% \spath_save_to_aux:N
% }
@@ -1124,13 +1223,13 @@ manipulating PGF soft paths}
% There is always a variant in which the path is specified by a macro and restored back in that same macro.
%
%
-% \begin{macro}{
+% \begin{macro}[internal]{
% \spath_translate:Nnnn,
% \spath_translate:Nnn,
% \spath_gtranslate:Nnnn,
% \spath_gtranslate:Nnn
% }
-% Translates a path.
+% Translates a path by an amount.
% \begin{macrocode}
\cs_new_protected_nopar:Npn \@@_translate:nnn #1#2#3
{
@@ -1159,6 +1258,7 @@ manipulating PGF soft paths}
\tl_gset_eq:NN \g_@@_output_tl \l_@@_tmpb_tl
\group_end:
}
+\cs_generate_variant:Nn \@@_translate:nnn {nVV}
\cs_new_protected_nopar:Npn \spath_translate:Nnnn #1#2#3#4
{
\@@_translate:nnn {#2}{#3}{#4}
@@ -1200,8 +1300,80 @@ manipulating PGF soft paths}
% \end{macrocode}
% \end{macro}
%
+%
+%
+% \begin{macro}[internal]{
+% \spath_translate_to:Nnnn,
+% \spath_translate_to:Nnn,
+% \spath_gtranslate_to:Nnnn,
+% \spath_gtranslate_to:Nnn
+% }
+% Translates a path so that it starts at a point.
+% \begin{macrocode}
+\cs_new_protected_nopar:Npn \@@_translate_to:nnn #1#2#3
+{
+ \group_begin:
+ \spath_initialpoint:Nn \l_@@_tmpa_tl {#1}
+
+ \dim_set:Nn \l_@@_tmpa_dim
+ {
+ #2
+ -
+ \tl_item:Nn \l_@@_tmpa_tl {1}
+ }
+ \dim_set:Nn \l_@@_tmpb_dim
+ {
+ #3
+ -
+ \tl_item:Nn \l_@@_tmpa_tl {2}
+ }
+
+ \@@_translate:nVV {#1} \l_@@_tmpa_dim \l_@@_tmpb_dim
+ \group_end:
+}
+\cs_new_protected_nopar:Npn \spath_translate_to:Nnnn #1#2#3#4
+{
+ \@@_translate_to:nnn {#2}{#3}{#4}
+ \tl_set_eq:NN #1 \g_@@_output_tl
+ \tl_gclear:N \g_@@_output_tl
+}
+\cs_generate_variant:Nn \spath_translate_to:Nnnn {NVxx, NVVV, NVnn}
+\cs_new_protected_nopar:Npn \spath_translate_to:Nnn #1#2#3
+{
+ \spath_translate_to:NVnn #1#1{#2}{#3}
+}
+\cs_generate_variant:Nn \spath_translate_to:Nnn {NVV, cnn, cVV}
+\cs_new_protected_nopar:Npn \spath_gtranslate_to:Nnnn #1#2#3#4
+{
+ \@@_translate_to:nnn {#2}{#3}{#4}
+ \tl_gset_eq:NN #1 \g_@@_output_tl
+ \tl_gclear:N \g_@@_output_tl
+}
+\cs_generate_variant:Nn \spath_gtranslate_to:Nnnn {NVxx, NVVV, NVnn}
+\cs_new_protected_nopar:Npn \spath_gtranslate_to:Nnn #1#2#3
+{
+ \spath_gtranslate_to:NVnn #1#1{#2}{#3}
+}
+\cs_generate_variant:Nn \spath_gtranslate_to:Nnn {NVV, cnn, cVV}
+% \end{macrocode}
+%
+% This variant allows for passing the coordinates as a single braced group as it strips off the outer braces of the second argument.
+% \begin{macrocode}
+\cs_new_protected_nopar:Npn \spath_translate_to:Nn #1#2
+{
+ \spath_translate_to:Nnn #1 #2
+}
+\cs_generate_variant:Nn \spath_translate_to:Nn {NV}
+\cs_new_protected_nopar:Npn \spath_gtranslate_to:Nn #1#2
+{
+ \spath_gtranslate_to:Nnn #1 #2
+}
+\cs_generate_variant:Nn \spath_gtranslate_to:Nn {NV}
+% \end{macrocode}
+% \end{macro}
+%
%
-% \begin{macro}{
+% \begin{macro}[internal]{
% \spath_scale:Nnnn,
% \spath_scale:Nnn,
% \spath_gscale:Nnnn,
@@ -1279,7 +1451,7 @@ manipulating PGF soft paths}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{
+% \begin{macro}[internal]{
% \spath_transform:Nnnnnnnn,
% \spath_transform:Nnnnnnn,
% \spath_gtransform:Nnnnnnnn,
@@ -1304,8 +1476,10 @@ manipulating PGF soft paths}
\tl_set:Nx \l_@@_tmpd_tl {\tl_head:N \l_@@_tmpa_tl}
\tl_set:Nx \l_@@_tmpa_tl {\tl_tail:N \l_@@_tmpa_tl}
- \fp_set:Nn \l_@@_tmpa_fp {\l_@@_tmpc_tl * #2 + \l_@@_tmpd_tl * #4 + #6}
- \fp_set:Nn \l_@@_tmpb_fp {\l_@@_tmpc_tl * #3 + \l_@@_tmpd_tl * #5 + #7}
+ \fp_set:Nn \l_@@_tmpa_fp
+ {\l_@@_tmpc_tl * #2 + \l_@@_tmpd_tl * #4 + #6}
+ \fp_set:Nn \l_@@_tmpb_fp
+ {\l_@@_tmpc_tl * #3 + \l_@@_tmpd_tl * #5 + #7}
\tl_put_right:Nx \l_@@_tmpb_tl
{
{\fp_to_dim:N \l_@@_tmpa_fp}
@@ -1322,7 +1496,8 @@ manipulating PGF soft paths}
\tl_set_eq:NN #1 \g_@@_output_tl
\tl_gclear:N \g_@@_output_tl
}
-\cs_generate_variant:Nn \spath_transform:Nnnnnnnn {NVnnnnnn, Nnxxxxxx, cnnnnnnn}
+\cs_generate_variant:Nn \spath_transform:Nnnnnnnn
+{NVnnnnnn, Nnxxxxxx, cnnnnnnn}
\cs_new_protected_nopar:Npn \spath_transform:Nnnnnnn #1#2#3#4#5#6#7
{
\spath_transform:NVnnnnnn #1#1{#2}{#3}{#4}{#5}{#6}{#7}
@@ -1364,7 +1539,305 @@ manipulating PGF soft paths}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{
+% \begin{macro}[internal]{
+% \spath_span:Nnnn,
+% \spath_span:Nnn,
+% \spath_gspan:Nnnn,
+% \spath_gspan:Nnn,
+% \spath_normalise:Nn,
+% \spath_normalise:N,
+% \spath_gnormalise:Nn,
+% \spath_gnormalise:N
+% }
+% The \Verb+span+ functions transform a path to start and end at specified points.
+% The \Verb+normalise+ functions transform it to start at the origin and end at \((1\mathrm{pt},0\mathrm{pt})\).
+%
+% If the path starts and ends at the same point then it is translated to the specified point (or origin) but not otherwise changed.
+% \begin{macrocode}
+\cs_new_protected_nopar:Npn \@@_span:nnn #1#2#3
+{
+ \group_begin:
+ \spath_initialpoint:Nn \l_@@_tmpa_tl {#1}
+ \spath_finalpoint:Nn \l_@@_tmpb_tl {#1}
+
+ \fp_set:Nn \l_@@_tmpa_fp
+ {
+ (\tl_item:Nn \l_@@_tmpb_tl {1}) -
+ (\tl_item:Nn \l_@@_tmpa_tl {1})
+ }
+ \fp_set:Nn \l_@@_tmpb_fp
+ {
+ (\tl_item:Nn \l_@@_tmpb_tl {2}) -
+ (\tl_item:Nn \l_@@_tmpa_tl {2})
+ }
+ \fp_set:Nn \l_@@_tmpc_fp
+ {
+ (\l_@@_tmpa_fp) * (\l_@@_tmpa_fp)
+ +
+ (\l_@@_tmpb_fp * \l_@@_tmpb_fp)
+ }
+
+ \fp_compare:nTF
+ {
+ \l_@@_tmpc_fp < 0.001
+ }
+ {
+ \spath_translate_to:Nnnn \l_@@_tmpd_tl {#1} #2
+ }
+ {
+ \fp_set:Nn \l_@@_tmpa_fp
+ {
+ (
+ ((\tl_item:nn {#3} {1})
+ -
+ (\tl_item:nn {#2} {1}))
+ *
+ ((\tl_item:Nn \l_@@_tmpb_tl {1})
+ -
+ (\tl_item:Nn \l_@@_tmpa_tl {1}))
+ +
+ ((\tl_item:nn {#3} {2})
+ -
+ (\tl_item:nn {#2} {2}))
+ *
+ ((\tl_item:Nn \l_@@_tmpb_tl {2})
+ -
+ (\tl_item:Nn \l_@@_tmpa_tl {2}))
+ )
+ /
+ \l_@@_tmpc_fp
+ }
+ \fp_set:Nn \l_@@_tmpb_fp
+ {
+ (
+ ((\tl_item:nn {#3} {2})
+ -
+ (\tl_item:nn {#2} {2}))
+ *
+ ((\tl_item:Nn \l_@@_tmpb_tl {1})
+ -
+ (\tl_item:Nn \l_@@_tmpa_tl {1}))
+ -
+ ((\tl_item:nn {#3} {1})
+ -
+ (\tl_item:nn {#2} {1}))
+ *
+ ((\tl_item:Nn \l_@@_tmpb_tl {2})
+ -
+ (\tl_item:Nn \l_@@_tmpa_tl {2}))
+ )
+ /
+ \l_@@_tmpc_fp
+ }
+
+ \tl_set:Nx \l_@@_tmpc_tl
+ {
+ {
+ \fp_to_decimal:N \l_@@_tmpa_fp
+ }
+ {
+ \fp_to_decimal:N \l_@@_tmpb_fp
+ }
+ {
+ \fp_eval:n { - \l_@@_tmpb_fp }
+ }
+ {
+ \fp_to_decimal:N \l_@@_tmpa_fp
+ }
+ {
+ \fp_to_dim:n
+ {
+ \tl_item:nn {#2} {1}
+ -
+ \l_@@_tmpa_fp * (\tl_item:Nn \l_@@_tmpa_tl {1})
+ +
+ \l_@@_tmpb_fp * (\tl_item:Nn \l_@@_tmpa_tl {2})
+ }
+ }
+ {
+ \fp_to_dim:n
+ {
+ \tl_item:nn {#2} {2}
+ -
+ \l_@@_tmpb_fp * (\tl_item:Nn \l_@@_tmpa_tl {1})
+ -
+ \l_@@_tmpa_fp * (\tl_item:Nn \l_@@_tmpa_tl {2})
+ }
+ }
+ }
+ \spath_transform:NnV \l_@@_tmpd_tl {#1} \l_@@_tmpc_tl
+ }
+ \tl_gset_eq:NN \g_@@_output_tl \l_@@_tmpd_tl
+ \group_end:
+}
+\cs_new_protected_nopar:Npn \spath_span:Nnnn #1#2#3#4
+{
+ \@@_span:nnn {#2}{#3}{#4}
+ \tl_set_eq:NN #1 \g_@@_output_tl
+ \tl_gclear:N \g_@@_output_tl
+}
+\cs_generate_variant:Nn \spath_span:Nnnn {NVnn, NVVV, NnVV}
+\cs_new_protected_nopar:Npn \spath_span:Nnn #1#2#3
+{
+ \spath_span:NVnn #1#1{#2}{#3}
+}
+\cs_generate_variant:Nn \spath_span:Nnn {NVV, cnn, cvv, cVV}
+\cs_new_protected_nopar:Npn \spath_gspan:Nnnn #1#2#3#4
+{
+ \@@_span:nnn {#2}{#3}{#4}
+ \tl_gset_eq:NN #1 \g_@@_output_tl
+ \tl_gclear:N \g_@@_output_tl
+}
+\cs_generate_variant:Nn \spath_gspan:Nnnn {NVnn, NVVV}
+\cs_new_protected_nopar:Npn \spath_gspan:Nnn #1#2#3
+{
+ \spath_gspan:NVnn #1#1{#2}{#3}
+}
+\cs_generate_variant:Nn \spath_gspan:Nnn {NVV, cnn, cvv, cVV}
+\cs_new_protected_nopar:Npn \@@_normalise:n #1
+{
+ \@@_span:nnn {#1}{{0pt}{0pt}}{{1pt}{0pt}}
+}
+\cs_new_protected_nopar:Npn \spath_normalise:Nn #1#2
+{
+ \@@_normalise:n {#2}
+ \tl_set_eq:NN #1 \g_@@_output_tl
+ \tl_gclear:N \g_@@_output_tl
+}
+\cs_generate_variant:Nn \spath_normalise:Nn {cn,NV, cV, cv}
+\cs_new_protected_nopar:Npn \spath_normalise:N #1
+{
+ \spath_normalise:NV #1#1
+}
+\cs_generate_variant:Nn \spath_normalise:N {c}
+\cs_new_protected_nopar:Npn \spath_gnormalise:Nn #1#2
+{
+ \@@_normalise:n {#2}
+ \tl_gset_eq:NN #1 \g_@@_output_tl
+ \tl_gclear:N \g_@@_output_tl
+}
+\cs_generate_variant:Nn \spath_gnormalise:Nn {cn,NV, cV, cv}
+\cs_new_protected_nopar:Npn \spath_gnormalise:N #1
+{
+ \spath_gnormalise:NV #1#1
+}
+\cs_generate_variant:Nn \spath_gnormalise:N {c}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}[internal]{
+% \spath_splice_between:Nnnn,
+% \spath_splice_between:Nnn,
+% \spath_gsplice_between:Nnnn,
+% \spath_gsplice_between:Nnn
+% }
+% This takes three paths and returns a single path in which the middle one is adjusted (and welded) so that it joins the first path to the third.
+% \begin{macrocode}
+\cs_new_protected_nopar:Npn \@@_splice_between:nnn #1#2#3
+{
+ \group_begin:
+ \spath_finalpoint:NV \l_@@_tmpd_tl {#1}
+ \spath_initialpoint:NV \l_@@_tmpe_tl {#3}
+ \spath_span:NnVV \l_@@_tmpb_tl {#2} \l_@@_tmpd_tl \l_@@_tmpe_tl
+ \spath_append_no_move:NnV \l_@@_tmpa_tl {#1} \l_@@_tmpb_tl
+ \spath_append_no_move:Nn \l_@@_tmpa_tl {#3}
+ \tl_gset_eq:NN \g_@@_output_tl \l_@@_tmpa_tl
+ \group_end:
+}
+\cs_new_protected_nopar:Npn \spath_splice_between:Nnnn #1#2#3#4
+{
+ \@@_splice_between:nnn {#2}{#3}{#4}
+ \tl_set_eq:NN #1 \g_@@_output_tl
+ \tl_gclear:N \g_@@_output_tl
+}
+\cs_generate_variant:Nn \spath_splice_between:Nnnn {NVnn, NVVV}
+\cs_new_protected_nopar:Npn \spath_splice_between:Nnn #1#2#3
+{
+ \spath_splice_between:NVnn #1#1{#2}{#3}
+}
+\cs_generate_variant:Nn \spath_splice_between:Nnn {NVV, cnn, cvv, Nvn}
+\cs_new_protected_nopar:Npn \spath_gsplice_between:Nnnn #1#2#3#4
+{
+ \@@_splice_between:nnn {#2}{#3}{#4}
+ \tl_gset_eq:NN #1 \g_@@_output_tl
+ \tl_gclear:N \g_@@_output_tl
+}
+\cs_generate_variant:Nn \spath_gsplice_between:Nnnn {NVnn, NVVV}
+\cs_new_protected_nopar:Npn \spath_gsplice_between:Nnn #1#2#3
+{
+ \spath_gsplice_between:NVnn #1#1{#2}{#3}
+}
+\cs_generate_variant:Nn \spath_gsplice_between:Nnn {NVV, cnn, cvv}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[internal]{
+% \spath_close_with:Nn,
+% \spath_gclose_with:Nn
+% }
+% Closes the first path by splicing in the second.
+% \begin{macrocode}
+\cs_new_protected_nopar:Npn \@@_close_with:nn #1#2
+{
+ \group_begin:
+ \spath_finalmovepoint:Nn \l_@@_tmpa_tl {#1}
+ \spath_finalpoint:Nn \l_@@_tmpb_tl {#1}
+ \dim_compare:nTF
+ {
+ \dim_abs:n
+ {
+ \tl_item:Nn \l_@@_tmpa_tl {1}
+ -
+ \tl_item:Nn \l_@@_tmpb_tl {1}
+ }
+ +
+ \dim_abs:n
+ {
+ \tl_item:Nn \l_@@_tmpa_tl {2}
+ -
+ \tl_item:Nn \l_@@_tmpb_tl {2}
+ }
+ < 0.01pt
+ }
+ {
+ \@@_close:n {#1}
+ }
+ {
+ \spath_span:NnVV \l_@@_tmpc_tl {#2} \l_@@_tmpb_tl \l_@@_tmpa_tl
+ \spath_append_no_move:NnV \l_@@_tmpd_tl {#1} \l_@@_tmpc_tl
+ \@@_close:V \l_@@_tmpd_tl
+ }
+ \group_end:
+}
+\cs_new_protected_nopar:Npn \spath_close_with:Nnn #1#2#3
+{
+ \@@_close_with:nn {#2}{#3}
+ \tl_set_eq:NN #1 \g_@@_output_tl
+ \tl_gclear:N \g_@@_output_tl
+}
+\cs_generate_variant:Nn \spath_close_with:Nnn {cnn, cVV, cvv, NVn}
+\cs_new_protected_nopar:Npn \spath_close_with:Nn #1#2
+{
+ \spath_close_with:NVn #1#1{#2}
+}
+\cs_generate_variant:Nn \spath_close_with:Nn {cn, cV, cv, NV}
+\cs_new_protected_nopar:Npn \spath_gclose_with:Nnn #1#2#3
+{
+ \@@_close_with:nn {#2}{#3}
+ \tl_gset_eq:NN #1 \g_@@_output_tl
+ \tl_gclear:N \g_@@_output_tl
+}
+\cs_generate_variant:Nn \spath_gclose_with:Nnn {cnn, cVV, cvv, NVn}
+\cs_new_protected_nopar:Npn \spath_gclose_with:Nn #1#2
+{
+ \spath_gclose_with:NVn #1#1{#2}
+}
+\cs_generate_variant:Nn \spath_gclose_with:Nn {cn, cV, cv, NV}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[internal]{
% \spath_weld:Nnn,
% \spath_weld:Nn,
% \spath_gweld:Nnn,
@@ -1378,32 +1851,10 @@ manipulating PGF soft paths}
\group_begin:
\tl_set:Nn \l_@@_tmpa_tl {#1}
\tl_set:Nn \l_@@_tmpb_tl {#2}
+ \spath_finalpoint:Nn \l_@@_tmpc_tl {#1}
+ \spath_translate_to:NV \l_@@_tmpb_tl \l_@@_tmpc_tl
- \spath_finalpoint:NV \l_@@_tmpc_tl \l_@@_tmpa_tl
- \spath_initialpoint:NV \l_@@_tmpd_tl \l_@@_tmpb_tl
-
- \dim_set:Nn \l_@@_tmpa_dim
- {
- \tl_item:Nn \l_@@_tmpc_tl {1}
- -
- \tl_item:Nn \l_@@_tmpd_tl {1}
- }
- \dim_set:Nn \l_@@_tmpb_dim
- {
- \tl_item:Nn \l_@@_tmpc_tl {2}
- -
- \tl_item:Nn \l_@@_tmpd_tl {2}
- }
-
- \spath_translate:NVV \l_@@_tmpb_tl \l_@@_tmpa_dim \l_@@_tmpb_dim
-
- \prg_replicate:nn {3}
- {
- \tl_set:Nx \l_@@_tmpb_tl {\tl_tail:N \l_@@_tmpb_tl}
- }
-
- \tl_put_right:NV \l_@@_tmpa_tl \l_@@_tmpb_tl
- \tl_gset_eq:NN \g_@@_output_tl \l_@@_tmpa_tl
+ \@@_append_no_move:VV \l_@@_tmpa_tl \l_@@_tmpb_tl
\group_end:
}
\cs_new_protected_nopar:Npn \spath_weld:Nnn #1#2#3
@@ -1434,7 +1885,7 @@ manipulating PGF soft paths}
% \end{macro}
%
%
-% \begin{macro}{
+% \begin{macro}[internal]{
% \spath_append_no_move:Nnn,
% \spath_append_no_move:Nn,
% \spath_gappend_no_move:Nnn,
@@ -1456,18 +1907,19 @@ manipulating PGF soft paths}
\tl_gset_eq:NN \g_@@_output_tl \l_@@_tmpa_tl
\group_end:
}
+\cs_generate_variant:Nn \@@_append_no_move:nn {VV}
\cs_new_protected_nopar:Npn \spath_append_no_move:Nnn #1#2#3
{
\@@_append_no_move:nn {#2}{#3}
\tl_set_eq:NN #1 \g_@@_output_tl
\tl_gclear:N \g_@@_output_tl
}
-\cs_generate_variant:Nn \spath_append_no_move:Nnn {NVV, NVn}
+\cs_generate_variant:Nn \spath_append_no_move:Nnn {NVV, NVn, NnV}
\cs_new_protected_nopar:Npn \spath_append_no_move:Nn #1#2
{
\spath_append_no_move:NVn #1#1{#2}
}
-\cs_generate_variant:Nn \spath_append_no_move:Nn {NV, cv}
+\cs_generate_variant:Nn \spath_append_no_move:Nn {NV, cv, Nv}
\cs_new_protected_nopar:Npn \spath_gappend_no_move:Nnn #1#2#3
{
\@@_append_no_move:nn {#2}{#3}
@@ -1479,11 +1931,11 @@ manipulating PGF soft paths}
{
\spath_gappend_no_move:NVn #1#1{#2}
}
-\cs_generate_variant:Nn \spath_gappend_no_move:Nn {NV, cv}
+\cs_generate_variant:Nn \spath_gappend_no_move:Nn {NV, cv, Nv}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{
+% \begin{macro}[internal]{
% \spath_append:Nnn,
% \spath_append:Nn,
% \spath_gappend:Nnn,
@@ -1501,7 +1953,7 @@ manipulating PGF soft paths}
{
\spath_append:NVn #1#1{#2}
}
-\cs_generate_variant:Nn \spath_append:Nn {NV, Nv}
+\cs_generate_variant:Nn \spath_append:Nn {NV, Nv, cv}
\cs_new_protected_nopar:Npn \spath_gappend:Nnn #1#2#3
{
\tl_gset:Nn #1 {#2}
@@ -1512,12 +1964,12 @@ manipulating PGF soft paths}
{
\spath_gappend:NVn #1#1{#2}
}
-\cs_generate_variant:Nn \spath_gappend:Nn {NV, Nv}
+\cs_generate_variant:Nn \spath_gappend:Nn {NV, Nv, cv}
% \end{macrocode}
% \end{macro}
%
%
-% \begin{macro}{
+% \begin{macro}[internal]{
% \spath_prepend_no_move:Nnn,
% \spath_prepend_no_move:Nn,
% \spath_gprepend_no_move:Nnn,
@@ -1549,7 +2001,7 @@ manipulating PGF soft paths}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{
+% \begin{macro}[internal]{
% \spath_prepend:Nnn,
% \spath_prepend:Nn,
% \spath_gprepend:Nnn,
@@ -1580,7 +2032,7 @@ manipulating PGF soft paths}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{
+% \begin{macro}[internal]{
% \spath_bake_round:Nn,
% \spath_bake_round:N,
% \spath_gbake_round:Nn,
@@ -1625,26 +2077,25 @@ manipulating PGF soft paths}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{
+% \begin{macro}[internal]{
% \spath_close:Nn,
% \spath_close:N,
% \spath_gclose:Nn,
% \spath_gclose:N
% }
% Appends a close path to the end of the path.
-% For now, the point is the initial or final point (respectively).
-% To be future proof, it ought to be the point of the adjacent move to.
% \begin{macrocode}
\cs_new_protected_nopar:Npn \@@_close:n #1
{
\group_begin:
\tl_set:Nn \l_@@_tmpa_tl {#1}
- \spath_initialpoint:NV \l_@@_tmpb_tl \l_@@_tmpa_tl
+ \spath_finalmovepoint:NV \l_@@_tmpb_tl \l_@@_tmpa_tl
\tl_put_right:NV \l_@@_tmpa_tl \c_spath_closepath_tl
\tl_put_right:NV \l_@@_tmpa_tl \l_@@_tmpb_tl
\tl_gset_eq:NN \g_@@_output_tl \l_@@_tmpa_tl
\group_end:
}
+\cs_generate_variant:Nn \@@_close:n {V}
\cs_new_protected_nopar:Npn \spath_close:Nn #1#2
{
\@@_close:n {#2}
@@ -1673,7 +2124,7 @@ manipulating PGF soft paths}
% \end{macro}
%
%
-% \begin{macro}{
+% \begin{macro}[internal]{
% \spath_open:Nn,
% \spath_open:N,
% \spath_gopen:Nn,
@@ -1783,7 +2234,7 @@ manipulating PGF soft paths}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{
+% \begin{macro}[internal]{
% \spath_remove_empty_components:Nn,
% \spath_remove_empty_components:N,
% \spath_gremove_empty_components:Nn,
@@ -1836,7 +2287,7 @@ manipulating PGF soft paths}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\spath_if_eq:nn}
+% \begin{macro}[internal]{\spath_if_eq:nn}
% Test if two soft paths are equal, we allow a little tolerance on the calculations.
% \begin{macrocode}
\prg_new_protected_conditional:Npnn \spath_if_eq:nn #1#2 { T, F, TF }
@@ -1845,7 +2296,10 @@ manipulating PGF soft paths}
\tl_set:Nn \l_@@_tmpa_tl {#1}
\tl_set:Nn \l_@@_tmpb_tl {#2}
\bool_gset_true:N \g_@@_tmpa_bool
- \int_compare:nNnTF {\tl_count:N \l_@@_tmpa_tl} = {\tl_count:N \l_@@_tmpb_tl}
+ \int_compare:nNnTF
+ {\tl_count:N \l_@@_tmpa_tl}
+ =
+ {\tl_count:N \l_@@_tmpb_tl}
{
\int_step_inline:nnnn {1} {3} {\tl_count:N \l_@@_tmpa_tl}
{
@@ -1857,13 +2311,27 @@ manipulating PGF soft paths}
}
\dim_set:Nn \l_@@_tmpa_dim {\tl_item:Nn \l_@@_tmpa_tl {##1+1}}
\dim_set:Nn \l_@@_tmpb_dim {\tl_item:Nn \l_@@_tmpb_tl {##1+1}}
- \dim_compare:nF { \dim_abs:n { \l_@@_tmpa_dim - \l_@@_tmpb_dim} < 0.001pt }
+ \dim_compare:nF
+ {
+ \dim_abs:n
+ {
+ \l_@@_tmpa_dim - \l_@@_tmpb_dim
+ }
+ < 0.001pt
+ }
{
\bool_gset_false:N \g_@@_tmpa_bool
}
\dim_set:Nn \l_@@_tmpa_dim {\tl_item:Nn \l_@@_tmpa_tl {##1+2}}
\dim_set:Nn \l_@@_tmpb_dim {\tl_item:Nn \l_@@_tmpb_tl {##1+2}}
- \dim_compare:nF { \dim_abs:n { \l_@@_tmpa_dim - \l_@@_tmpb_dim} < 0.001pt }
+ \dim_compare:nF
+ {
+ \dim_abs:n
+ {
+ \l_@@_tmpa_dim - \l_@@_tmpb_dim
+ }
+ < 0.001pt
+ }
{
\bool_gset_false:N \g_@@_tmpa_bool
}
@@ -1887,7 +2355,7 @@ manipulating PGF soft paths}
%
% \subsection{Splitting Commands}
%
-% \begin{macro}{
+% \begin{macro}[internal]{
% \spath_split_curve:NNnn,
% \spath_gsplit_curve:NNnn
% }
@@ -1919,11 +2387,15 @@ manipulating PGF soft paths}
{
{\fp_to_dim:n
{
- (1 - #2)^2 * \tl_item:nn {#1} {2} + 2 * (1 - #2) * (#2) * \tl_item:nn {#1} {5} + (#2)^2 * \tl_item:nn {#1} {8}
+ (1 - #2)^2 * \tl_item:nn {#1} {2}
+ + 2 * (1 - #2) * (#2) * \tl_item:nn {#1} {5}
+ + (#2)^2 * \tl_item:nn {#1} {8}
}}
{\fp_to_dim:n
{
- (1 - #2)^2 * \tl_item:nn {#1} {3} + 2 * (1 - #2) * (#2) * \tl_item:nn {#1} {6} + (#2)^2 * \tl_item:nn {#1} {9}
+ (1 - #2)^2 * \tl_item:nn {#1} {3}
+ + 2 * (1 - #2) * (#2) * \tl_item:nn {#1} {6}
+ + (#2)^2 * \tl_item:nn {#1} {9}
}}
}
@@ -1932,11 +2404,17 @@ manipulating PGF soft paths}
{
{\fp_to_dim:n
{
- (1 - #2)^3 * \tl_item:nn {#1} {2} + 3 * (1 - #2)^2 * (#2) * \tl_item:nn {#1} {5} + 3 * (1 - #2) * (#2)^2 * \tl_item:nn {#1} {8} + (#2)^3 * \tl_item:nn {#1} {11}
+ (1 - #2)^3 * \tl_item:nn {#1} {2}
+ + 3 * (1 - #2)^2 * (#2) * \tl_item:nn {#1} {5}
+ + 3 * (1 - #2) * (#2)^2 * \tl_item:nn {#1} {8}
+ + (#2)^3 * \tl_item:nn {#1} {11}
}}
{\fp_to_dim:n
{
- (1 - #2)^3 * \tl_item:nn {#1} {3} + 3 * (1 - #2)^2 * (#2) * \tl_item:nn {#1} {6} + 3 * (1 - #2) * (#2)^2 * \tl_item:nn {#1} {9} + (#2)^3 * \tl_item:nn {#1} {12}
+ (1 - #2)^3 * \tl_item:nn {#1} {3}
+ + 3 * (1 - #2)^2 * (#2) * \tl_item:nn {#1} {6}
+ + 3 * (1 - #2) * (#2)^2 * \tl_item:nn {#1} {9}
+ + (#2)^3 * \tl_item:nn {#1} {12}
}}
}
@@ -1949,11 +2427,17 @@ manipulating PGF soft paths}
{
{\fp_to_dim:n
{
- (1 - #2)^3 * \tl_item:nn {#1} {2} + 3 * (1 - #2)^2 * (#2) * \tl_item:nn {#1} {5} + 3 * (1 - #2) * (#2)^2 * \tl_item:nn {#1} {8} + (#2)^3 * \tl_item:nn {#1} {11}
+ (1 - #2)^3 * \tl_item:nn {#1} {2}
+ + 3 * (1 - #2)^2 * (#2) * \tl_item:nn {#1} {5}
+ + 3 * (1 - #2) * (#2)^2 * \tl_item:nn {#1} {8}
+ + (#2)^3 * \tl_item:nn {#1} {11}
}}
{\fp_to_dim:n
{
- (1 - #2)^3 * \tl_item:nn {#1} {3} + 3 * (1 - #2)^2 * (#2) * \tl_item:nn {#1} {6} + 3 * (1 - #2) * (#2)^2 * \tl_item:nn {#1} {9} + (#2)^3 * \tl_item:nn {#1} {12}
+ (1 - #2)^3 * \tl_item:nn {#1} {3}
+ + 3 * (1 - #2)^2 * (#2) * \tl_item:nn {#1} {6}
+ + 3 * (1 - #2) * (#2)^2 * \tl_item:nn {#1} {9}
+ + (#2)^3 * \tl_item:nn {#1} {12}
}}
}
@@ -1962,11 +2446,15 @@ manipulating PGF soft paths}
{
{\fp_to_dim:n
{
- (1 - #2)^2 * \tl_item:nn {#1} {5} + 2 * (1 - #2) * (#2) * \tl_item:nn {#1} {8} + (#2)^2 * \tl_item:nn {#1} {11}
+ (1 - #2)^2 * \tl_item:nn {#1} {5}
+ + 2 * (1 - #2) * (#2) * \tl_item:nn {#1} {8}
+ + (#2)^2 * \tl_item:nn {#1} {11}
}}
{\fp_to_dim:n
{
- (1 - #2)^2 * \tl_item:nn {#1} {6} + 2 * (1 - #2) * (#2) * \tl_item:nn {#1} {9} + (#2)^2 * \tl_item:nn {#1} {12}
+ (1 - #2)^2 * \tl_item:nn {#1} {6}
+ + 2 * (1 - #2) * (#2) * \tl_item:nn {#1} {9}
+ + (#2)^2 * \tl_item:nn {#1} {12}
}}
}
\tl_put_right:NV \l_@@_tmpa_tl \c_spath_curvetob_tl
@@ -1990,6 +2478,7 @@ manipulating PGF soft paths}
\@@_tl_gput_right_braced:NV \g_@@_output_tl \l_@@_tmpa_tl
\group_end:
}
+\cs_generate_variant:Nn \@@_split_curve:nn {nv, nV}
\cs_new_protected_nopar:Npn \spath_split_curve:NNnn #1#2#3#4
{
\@@_split_curve:nn {#3}{#4}
@@ -2009,7 +2498,224 @@ manipulating PGF soft paths}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{
+%
+% \begin{macro}[internal]{
+% \spath_maybe_split_curve:Nn,
+% \spath_maybe_gsplit_curve:Nn,
+% }
+% Possibly splits a bezier curve to ensure that the pieces don't self-intersect.
+% Figuring out whether a Bezier cubic self intersects is apparently a difficult problem so we don't bother.
+% We compute a point such that if there is an intersection then it lies on either side of the point.
+% I don't recall where the formula came from!
+% \begin{macrocode}
+\cs_new_protected_nopar:Npn \@@_maybe_split_curve:n #1
+{
+ \group_begin:
+ \fp_set:Nn \l_@@_tmpa_fp
+ {
+ (
+ \tl_item:nn {#1} {3}
+ - 3 * \tl_item:nn {#1} {6}
+ + 3 * \tl_item:nn {#1} {9}
+ - \tl_item:nn {#1} {12}
+ )
+ *
+ (3 * \tl_item:nn {#1} {8} - 3 * \tl_item:nn {#1} {11})
+ -
+ (
+ \tl_item:nn {#1} {2}
+ - 3 * \tl_item:nn {#1} {5}
+ + 3 * \tl_item:nn {#1} {8}
+ - \tl_item:nn {#1} {11}
+ )
+ *
+ (3 * \tl_item:nn {#1} {9} - 3 * \tl_item:nn {#1} {12})
+ }
+ \fp_set:Nn \l_@@_tmpb_fp
+ {
+ (
+ \tl_item:nn {#1} {2}
+ - 3 * \tl_item:nn {#1} {5}
+ + 3 * \tl_item:nn {#1} {8}
+ - \tl_item:nn {#1} {11}
+ )
+ *
+ (
+ 3 * \tl_item:nn {#1} {6}
+ - 6 * \tl_item:nn {#1} {9}
+ + 3 * \tl_item:nn {#1} {12}
+ )
+ -
+ (
+ \tl_item:nn {#1} {3}
+ - 3 * \tl_item:nn {#1} {6}
+ + 3 * \tl_item:nn {#1} {9}
+ - \tl_item:nn {#1} {12}
+ )
+ *
+ (
+ 3 * \tl_item:nn {#1} {5}
+ - 6 * \tl_item:nn {#1} {8}
+ + 3 * \tl_item:nn {#1} {11}
+ )
+ }
+ \fp_compare:nTF
+ {
+ \l_@@_tmpb_fp != 0
+ }
+ {
+ \fp_set:Nn \l_@@_tmpa_fp {.5 * \l_@@_tmpa_fp / \l_@@_tmpb_fp}
+ \fp_compare:nTF
+ {
+ 0 < \l_@@_tmpa_fp && \l_@@_tmpa_fp < 1
+ }
+ {
+ \@@_split_curve:nV {#1} \l_@@_tmpa_fp
+ }
+ {
+ \tl_gset:Nn \g_@@_output_tl { {#1} {} }
+ }
+ }
+ {
+ \tl_gset:Nn \g_@@_output_tl { {#1} {} }
+ }
+ \group_end:
+}
+\cs_new_protected_nopar:Npn \spath_maybe_split_curve:NNn #1#2#3
+{
+ \@@_maybe_split_curve:n {#3}
+ \tl_set:Nx #1 {\tl_item:Nn \g_@@_output_tl {1}}
+ \tl_set:Nx #2 {\tl_item:Nn \g_@@_output_tl {2}}
+ \tl_gclear:N \g_@@_output_tl
+}
+\cs_generate_variant:Nn \spath_maybe_split_curve:NNn {NNn, NNV }
+\cs_new_protected_nopar:Npn \spath_maybe_gsplit_curve:NNn #1#2#3
+{
+ \@@_maybe_split_curve:n {#3}
+ \tl_gset:Nx #1 {\tl_item:Nn \g_@@_output_tl {1}}
+ \tl_gset:Nx #2 {\tl_item:Nn \g_@@_output_tl {2}}
+ \tl_gclear:N \g_@@_output_tl
+}
+\cs_generate_variant:Nn \spath_maybe_gsplit_curve:NNn {NNn, NNV}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[internal]{
+% \spath_split_curves:Nn,
+% \spath_gsplit_curves:Nn,
+% }
+% Slurp through the path ensuring that beziers don't self-intersect.
+% \begin{macrocode}
+\cs_new_protected_nopar:Npn \@@_split_curves:n #1
+{
+ \group_begin:
+ \tl_set:Nn \l_@@_tmpa_tl {#1}
+ \tl_clear:N \l_@@_tmpb_tl
+ \tl_clear:N \l_@@_tmpc_tl
+ \bool_do_until:nn
+ {
+ \tl_if_empty_p:N \l_@@_tmpa_tl
+ }
+ {
+ \tl_set:Nx \l_@@_tmpc_tl {\tl_head:N \l_@@_tmpa_tl}
+ \tl_case:NnF \l_@@_tmpc_tl
+ {
+ \c_spath_curvetoa_tl
+ {
+ \tl_clear:N \l_@@_tmpd_tl
+ \tl_set_eq:NN \l_@@_tmpd_tl \c_spath_moveto_tl
+ \tl_put_right:Nx \l_@@_tmpd_tl
+ {
+ { \dim_use:N \l_@@_tmpa_dim }
+ { \dim_use:N \l_@@_tmpb_dim }
+ }
+ \dim_set:Nn \l_@@_tmpa_dim
+ {
+ \tl_item:Nn \l_@@_tmpa_tl {8}
+ }
+ \dim_set:Nn \l_@@_tmpb_dim
+ {
+ \tl_item:Nn \l_@@_tmpa_tl {9}
+ }
+ \prg_replicate:nn {3}
+ {
+ \tl_put_right:Nx \l_@@_tmpd_tl
+ {
+ \tl_item:Nn \l_@@_tmpa_tl {1}
+ {\tl_item:Nn \l_@@_tmpa_tl {2}}
+ {\tl_item:Nn \l_@@_tmpa_tl {3}}
+ }
+ \prg_replicate:nn {3}
+ {
+ \tl_set:Nx \l_@@_tmpa_tl {\tl_tail:N \l_@@_tmpa_tl}
+ }
+ }
+
+ \spath_maybe_split_curve:NNV
+ \l_@@_tmpd_tl
+ \l_@@_tmpe_tl
+ \l_@@_tmpd_tl
+ \prg_replicate:nn {3}
+ {
+ \tl_set:Nx \l_@@_tmpd_tl {\tl_tail:N \l_@@_tmpd_tl}
+ \tl_set:Nx \l_@@_tmpe_tl {\tl_tail:N \l_@@_tmpe_tl}
+ }
+ \tl_put_right:NV \l_@@_tmpb_tl \l_@@_tmpd_tl
+ \tl_put_right:NV \l_@@_tmpb_tl \l_@@_tmpe_tl
+ }
+ }
+ {
+ \dim_set:Nn \l_@@_tmpa_dim
+ {
+ \tl_item:Nn \l_@@_tmpa_tl {2}
+ }
+ \dim_set:Nn \l_@@_tmpb_dim
+ {
+ \tl_item:Nn \l_@@_tmpa_tl {3}
+ }
+ \tl_put_right:Nx \l_@@_tmpb_tl
+ {
+ \tl_item:Nn \l_@@_tmpa_tl {1}
+ {\tl_item:Nn \l_@@_tmpa_tl {2}}
+ {\tl_item:Nn \l_@@_tmpa_tl {3}}
+ }
+ \prg_replicate:nn {3}
+ {
+ \tl_set:Nx \l_@@_tmpa_tl {\tl_tail:N \l_@@_tmpa_tl}
+ }
+ }
+ }
+ \tl_gset_eq:NN \g_@@_output_tl \l_@@_tmpb_tl
+ \group_end:
+}
+\cs_new_protected_nopar:Npn \spath_split_curves:Nn #1#2
+{
+ \@@_split_curves:n {#2}
+ \tl_set_eq:NN #1 \g_@@_output_tl
+ \tl_gclear:N \g_@@_output_tl
+}
+\cs_generate_variant:Nn \spath_split_curves:Nn {NV, cV, cn, cv }
+\cs_new_protected_nopar:Npn \spath_split_curves:N #1
+{
+ \spath_split_curves:NV #1#1
+}
+\cs_generate_variant:Nn \spath_split_curves:N {c}
+\cs_new_protected_nopar:Npn \spath_gsplit_curves:Nn #1#2
+{
+ \@@_split_curves:n {#2}
+ \tl_gset_eq:NN #1 \g_@@_output_tl
+ \tl_gclear:N \g_@@_output_tl
+}
+\cs_generate_variant:Nn \spath_gsplit_curves:Nn {NV, cV, cn, cv }
+\cs_new_protected_nopar:Npn \spath_gsplit_curves:N #1
+{
+ \spath_gsplit_curves:NV #1#1
+}
+\cs_generate_variant:Nn \spath_gsplit_curves:N {c}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[internal]{
% \spath_split_line:NNnn,
% \spath_gsplit_line:NNnn
% }
@@ -2079,21 +2785,7 @@ manipulating PGF soft paths}
% \end{macrocode}
% \end{macro}
%
-% \begin{macrocode}
-\int_new:N \l_@@_split_int
-\int_new:N \l_@@_splitat_int
-\fp_new:N \l_@@_split_fp
-\bool_new:N \l_@@_split_bool
-\tl_new:N \l_@@_split_path_tl
-\tl_new:N \l_@@_split_patha_tl
-\tl_new:N \l_@@_split_pathb_tl
-\tl_new:N \l_@@_split_intoa_tl
-\tl_new:N \l_@@_split_intob_tl
-\dim_new:N \l_@@_splitx_dim
-\dim_new:N \l_@@_splity_dim
-% \end{macrocode}
-%
-% \begin{macro}{
+% \begin{macro}[internal]{
% \spath_split_at:NNnn,
% \spath_split_at:Nnn,
% \spath_split_at:Nn,
@@ -2107,165 +2799,165 @@ manipulating PGF soft paths}
\cs_new_protected_nopar:Npn \@@_split_at:nn #1#2
{
\group_begin:
- \int_set:Nn \l_@@_splitat_int {\fp_to_int:n {floor(#2) + 1}}
- \fp_set:Nn \l_@@_split_fp {#2 - floor(#2)}
+ \int_set:Nn \l_@@_tmpa_int {\fp_to_int:n {floor(#2) + 1}}
+ \fp_set:Nn \l_@@_tmpa_fp {#2 - floor(#2)}
% Is split point near one end or other of a component?
\fp_compare:nT
{
- \l_@@_split_fp < 0.01
+ \l_@@_tmpa_fp < 0.01
}
{
% Near the start, so we'll place it at the start
- \fp_set:Nn \l_@@_split_fp {0}
+ \fp_set:Nn \l_@@_tmpa_fp {0}
}
\fp_compare:nT
{
- \l_@@_split_fp > 0.99
+ \l_@@_tmpa_fp > 0.99
}
{
% Near the end, so we'll place it at the end
- \fp_set:Nn \l_@@_split_fp {0}
- \int_incr:N \l_@@_splitat_int
+ \fp_set:Nn \l_@@_tmpa_fp {0}
+ \int_incr:N \l_@@_tmpa_int
}
- \int_zero:N \l_@@_split_int
- \bool_set_true:N \l_@@_split_bool
+ \int_zero:N \l_@@_tmpb_int
+ \bool_set_true:N \l_@@_tmpa_bool
- \tl_set:Nn \l_@@_split_path_tl {#1}
- \tl_clear:N \l_@@_split_patha_tl
+ \tl_set:Nn \l_@@_tmpe_tl {#1}
+ \tl_clear:N \l_@@_tmpc_tl
- \dim_zero:N \l_@@_splitx_dim
- \dim_zero:N \l_@@_splity_dim
+ \dim_zero:N \l_@@_tmpa_dim
+ \dim_zero:N \l_@@_tmpb_dim
\bool_until_do:nn {
- \tl_if_empty_p:N \l_@@_split_path_tl
+ \tl_if_empty_p:N \l_@@_tmpe_tl
||
- \int_compare_p:n { \l_@@_splitat_int == \l_@@_split_int }
+ \int_compare_p:n { \l_@@_tmpa_int == \l_@@_tmpb_int }
}
{
- \tl_set:Nx \l_@@_tmpc_tl {\tl_head:N \l_@@_split_path_tl}
- \tl_set:Nx \l_@@_split_path_tl {\tl_tail:N \l_@@_split_path_tl }
- \tl_case:Nn \l_@@_tmpc_tl
+ \tl_set:Nx \l_@@_tmpf_tl {\tl_head:N \l_@@_tmpe_tl}
+ \tl_set:Nx \l_@@_tmpe_tl {\tl_tail:N \l_@@_tmpe_tl }
+ \tl_case:Nn \l_@@_tmpf_tl
{
\c_spath_lineto_tl
{
- \int_incr:N \l_@@_split_int
+ \int_incr:N \l_@@_tmpb_int
}
\c_spath_curvetoa_tl
{
- \int_incr:N \l_@@_split_int
+ \int_incr:N \l_@@_tmpb_int
}
}
- \int_compare:nT { \l_@@_split_int < \l_@@_splitat_int }
+ \int_compare:nT { \l_@@_tmpb_int < \l_@@_tmpa_int }
{
- \tl_put_right:NV \l_@@_split_patha_tl \l_@@_tmpc_tl
+ \tl_put_right:NV \l_@@_tmpc_tl \l_@@_tmpf_tl
- \tl_put_right:Nx \l_@@_split_patha_tl
- {{ \tl_head:N \l_@@_split_path_tl }}
- \dim_set:Nn \l_@@_splitx_dim {\tl_head:N \l_@@_split_path_tl}
- \tl_set:Nx \l_@@_split_path_tl {\tl_tail:N \l_@@_split_path_tl }
+ \tl_put_right:Nx \l_@@_tmpc_tl
+ {{ \tl_head:N \l_@@_tmpe_tl }}
+ \dim_set:Nn \l_@@_tmpa_dim {\tl_head:N \l_@@_tmpe_tl}
+ \tl_set:Nx \l_@@_tmpe_tl {\tl_tail:N \l_@@_tmpe_tl }
- \tl_put_right:Nx \l_@@_split_patha_tl
- {{ \tl_head:N \l_@@_split_path_tl }}
- \dim_set:Nn \l_@@_splity_dim {\tl_head:N \l_@@_split_path_tl}
- \tl_set:Nx \l_@@_split_path_tl {\tl_tail:N \l_@@_split_path_tl }
+ \tl_put_right:Nx \l_@@_tmpc_tl
+ {{ \tl_head:N \l_@@_tmpe_tl }}
+ \dim_set:Nn \l_@@_tmpb_dim {\tl_head:N \l_@@_tmpe_tl}
+ \tl_set:Nx \l_@@_tmpe_tl {\tl_tail:N \l_@@_tmpe_tl }
}
}
- \tl_clear:N \l_@@_split_pathb_tl
- \tl_put_right:NV \l_@@_split_pathb_tl \c_spath_moveto_tl
- \tl_put_right:Nx \l_@@_split_pathb_tl
+ \tl_clear:N \l_@@_tmpd_tl
+ \tl_put_right:NV \l_@@_tmpd_tl \c_spath_moveto_tl
+ \tl_put_right:Nx \l_@@_tmpd_tl
{
- {\dim_use:N \l_@@_splitx_dim}
- {\dim_use:N \l_@@_splity_dim}
+ {\dim_use:N \l_@@_tmpa_dim}
+ {\dim_use:N \l_@@_tmpb_dim}
}
\fp_compare:nTF
{
- \l_@@_split_fp == 0
+ \l_@@_tmpa_fp == 0
}
{
- \tl_set_eq:NN \l_@@_split_intob_tl \l_@@_split_pathb_tl
- \tl_if_empty:NF \l_@@_split_path_tl
+ \tl_set_eq:NN \l_@@_tmpb_tl \l_@@_tmpd_tl
+ \tl_if_empty:NF \l_@@_tmpe_tl
{
- \tl_put_right:NV \l_@@_split_intob_tl \l_@@_tmpc_tl
- \tl_put_right:NV \l_@@_split_intob_tl \l_@@_split_path_tl
+ \tl_put_right:NV \l_@@_tmpb_tl \l_@@_tmpf_tl
+ \tl_put_right:NV \l_@@_tmpb_tl \l_@@_tmpe_tl
}
}
{
- \tl_case:Nn \l_@@_tmpc_tl
+ \tl_case:Nn \l_@@_tmpf_tl
{
\c_spath_lineto_tl
{
- \tl_put_right:NV \l_@@_split_pathb_tl \l_@@_tmpc_tl
- \tl_put_right:Nx \l_@@_split_pathb_tl
- {{ \tl_head:N \l_@@_split_path_tl }}
- \tl_set:Nx \l_@@_split_path_tl {\tl_tail:N \l_@@_split_path_tl }
+ \tl_put_right:NV \l_@@_tmpd_tl \l_@@_tmpf_tl
+ \tl_put_right:Nx \l_@@_tmpd_tl
+ {{ \tl_head:N \l_@@_tmpe_tl }}
+ \tl_set:Nx \l_@@_tmpe_tl {\tl_tail:N \l_@@_tmpe_tl }
- \tl_put_right:Nx \l_@@_split_pathb_tl
- {{ \tl_head:N \l_@@_split_path_tl }}
- \tl_set:Nx \l_@@_split_path_tl {\tl_tail:N \l_@@_split_path_tl }
+ \tl_put_right:Nx \l_@@_tmpd_tl
+ {{ \tl_head:N \l_@@_tmpe_tl }}
+ \tl_set:Nx \l_@@_tmpe_tl {\tl_tail:N \l_@@_tmpe_tl }
\spath_split_line:NNVV
- \l_@@_split_intoa_tl
- \l_@@_split_intob_tl
- \l_@@_split_pathb_tl
- \l_@@_split_fp
+ \l_@@_tmpa_tl
+ \l_@@_tmpb_tl
+ \l_@@_tmpd_tl
+ \l_@@_tmpa_fp
\prg_replicate:nn {3} {
- \tl_set:Nx \l_@@_split_intoa_tl {\tl_tail:N \l_@@_split_intoa_tl}
+ \tl_set:Nx \l_@@_tmpa_tl {\tl_tail:N \l_@@_tmpa_tl}
}
- \tl_put_right:NV \l_@@_split_patha_tl \l_@@_split_intoa_tl
- \tl_put_right:NV \l_@@_split_intob_tl \l_@@_split_path_tl
+ \tl_put_right:NV \l_@@_tmpc_tl \l_@@_tmpa_tl
+ \tl_put_right:NV \l_@@_tmpb_tl \l_@@_tmpe_tl
}
\c_spath_curvetoa_tl
{
- \tl_put_right:NV \l_@@_split_pathb_tl \l_@@_tmpc_tl
- \tl_put_right:Nx \l_@@_split_pathb_tl
- {{ \tl_head:N \l_@@_split_path_tl }}
- \tl_set:Nx \l_@@_split_path_tl {\tl_tail:N \l_@@_split_path_tl }
+ \tl_put_right:NV \l_@@_tmpd_tl \l_@@_tmpf_tl
+ \tl_put_right:Nx \l_@@_tmpd_tl
+ {{ \tl_head:N \l_@@_tmpe_tl }}
+ \tl_set:Nx \l_@@_tmpe_tl {\tl_tail:N \l_@@_tmpe_tl }
- \tl_put_right:Nx \l_@@_split_pathb_tl
- {{ \tl_head:N \l_@@_split_path_tl }}
- \tl_set:Nx \l_@@_split_path_tl {\tl_tail:N \l_@@_split_path_tl }
+ \tl_put_right:Nx \l_@@_tmpd_tl
+ {{ \tl_head:N \l_@@_tmpe_tl }}
+ \tl_set:Nx \l_@@_tmpe_tl {\tl_tail:N \l_@@_tmpe_tl }
\prg_replicate:nn {2} {
- \tl_put_right:Nx \l_@@_split_pathb_tl
- { \tl_head:N \l_@@_split_path_tl }
- \tl_set:Nx \l_@@_split_path_tl {\tl_tail:N \l_@@_split_path_tl }
+ \tl_put_right:Nx \l_@@_tmpd_tl
+ { \tl_head:N \l_@@_tmpe_tl }
+ \tl_set:Nx \l_@@_tmpe_tl {\tl_tail:N \l_@@_tmpe_tl }
- \tl_put_right:Nx \l_@@_split_pathb_tl
- {{ \tl_head:N \l_@@_split_path_tl }}
- \tl_set:Nx \l_@@_split_path_tl {\tl_tail:N \l_@@_split_path_tl }
+ \tl_put_right:Nx \l_@@_tmpd_tl
+ {{ \tl_head:N \l_@@_tmpe_tl }}
+ \tl_set:Nx \l_@@_tmpe_tl {\tl_tail:N \l_@@_tmpe_tl }
- \tl_put_right:Nx \l_@@_split_pathb_tl
- {{ \tl_head:N \l_@@_split_path_tl }}
- \tl_set:Nx \l_@@_split_path_tl {\tl_tail:N \l_@@_split_path_tl }
+ \tl_put_right:Nx \l_@@_tmpd_tl
+ {{ \tl_head:N \l_@@_tmpe_tl }}
+ \tl_set:Nx \l_@@_tmpe_tl {\tl_tail:N \l_@@_tmpe_tl }
}
\spath_split_curve:NNVV
- \l_@@_split_intoa_tl
- \l_@@_split_intob_tl
- \l_@@_split_pathb_tl \l_@@_split_fp
+ \l_@@_tmpa_tl
+ \l_@@_tmpb_tl
+ \l_@@_tmpd_tl \l_@@_tmpa_fp
\prg_replicate:nn {3} {
- \tl_set:Nx \l_@@_split_intoa_tl {\tl_tail:N \l_@@_split_intoa_tl}
+ \tl_set:Nx \l_@@_tmpa_tl {\tl_tail:N \l_@@_tmpa_tl}
}
- \tl_put_right:NV \l_@@_split_patha_tl \l_@@_split_intoa_tl
- \tl_put_right:NV \l_@@_split_intob_tl \l_@@_split_path_tl
+ \tl_put_right:NV \l_@@_tmpc_tl \l_@@_tmpa_tl
+ \tl_put_right:NV \l_@@_tmpb_tl \l_@@_tmpe_tl
}
}
}
\tl_gclear:N \g_@@_output_tl
- \@@_tl_gput_right_braced:NV \g_@@_output_tl \l_@@_split_patha_tl
- \@@_tl_gput_right_braced:NV \g_@@_output_tl \l_@@_split_intob_tl
+ \@@_tl_gput_right_braced:NV \g_@@_output_tl \l_@@_tmpc_tl
+ \@@_tl_gput_right_braced:NV \g_@@_output_tl \l_@@_tmpb_tl
\group_end:
}
\cs_new_protected_nopar:Npn \spath_split_at:NNnn #1#2#3#4
@@ -2291,7 +2983,11 @@ manipulating PGF soft paths}
\cs_new_protected_nopar:Npn \spath_split_at:Nnn #1#2#3
{
\@@_split_at:nn {#2}{#3}
- \tl_set:Nx #1 {\tl_item:Nn \g_@@_output_tl {1} \tl_item:Nn \g_@@_output_tl {2}}
+ \tl_set:Nx #1
+ {
+ \tl_item:Nn \g_@@_output_tl {1}
+ \tl_item:Nn \g_@@_output_tl {2}
+ }
\tl_gclear:N \g_@@_output_tl
}
\cs_generate_variant:Nn \spath_split_at:Nnn {NVn, NVV}
@@ -2302,7 +2998,11 @@ manipulating PGF soft paths}
\cs_new_protected_nopar:Npn \spath_gsplit_at:Nnn #1#2#3
{
\@@_split_at:nn {#2}{#3}
- \tl_gset:Nx #1 {\tl_item:Nn \g_@@_output_tl {1} \tl_item:Nn \g_@@_output_tl {2}}
+ \tl_gset:Nx #1
+ {
+ \tl_item:Nn \g_@@_output_tl {1}
+ \tl_item:Nn \g_@@_output_tl {2}
+ }
\tl_gclear:N \g_@@_output_tl
}
\cs_generate_variant:Nn \spath_gsplit_at:Nnn {NVn, NVV}
@@ -2323,19 +3023,7 @@ manipulating PGF soft paths}
% As in the previous section, there are various versions.
% In particular, there are versions where the path can be specified by a macro and is saved back into that macro.
%
-% \begin{macrocode}
-\tl_new:N \l_@@_shorten_fa_tl
-\tl_new:N \l_@@_shorten_path_tl
-\tl_new:N \l_@@_shorten_last_tl
-\tl_new:N \l_@@_shorten_lasta_tl
-\tl_new:N \l_@@_shorten_lastb_tl
-\int_new:N \l_@@_shorten_int
-\fp_new:N \l_@@_shorten_x_fp
-\fp_new:N \l_@@_shorten_y_fp
-\fp_new:N \l_@@_shorten_len_fp
-% \end{macrocode}
-%
-% \begin{macro}{
+% \begin{macro}[internal]{
% \spath_shorten_at_end:Nnn
% }
% This macro shortens a path from the end by a dimension.
@@ -2349,121 +3037,121 @@ manipulating PGF soft paths}
}
{
\group_begin:
- \tl_set:Nn \l_@@_shorten_path_tl {#1}
- \tl_reverse:N \l_@@_shorten_path_tl
+ \tl_set:Nn \l_@@_tmpa_tl {#1}
+ \tl_reverse:N \l_@@_tmpa_tl
- \tl_set:Nx \l_@@_shorten_fa_tl {\tl_item:Nn \l_@@_shorten_path_tl {3}}
+ \tl_set:Nx \l_@@_tmpb_tl {\tl_item:Nn \l_@@_tmpa_tl {3}}
- \tl_clear:N \l_@@_shorten_last_tl
- \tl_if_eq:NNTF \l_@@_shorten_fa_tl \c_spath_curveto_tl
+ \tl_clear:N \l_@@_tmpe_tl
+ \tl_if_eq:NNTF \l_@@_tmpb_tl \c_spath_curveto_tl
{
- \int_set:Nn \l_@@_shorten_int {3}
+ \int_set:Nn \l_@@_tmpa_int {3}
}
{
- \int_set:Nn \l_@@_shorten_int {1}
+ \int_set:Nn \l_@@_tmpa_int {1}
}
- \prg_replicate:nn { \l_@@_shorten_int }
+ \prg_replicate:nn { \l_@@_tmpa_int }
{
- \tl_put_right:Nx \l_@@_shorten_last_tl
+ \tl_put_right:Nx \l_@@_tmpe_tl
{
- {\tl_head:N \l_@@_shorten_path_tl}
+ {\tl_head:N \l_@@_tmpa_tl}
}
- \tl_set:Nx \l_@@_shorten_path_tl {\tl_tail:N \l_@@_shorten_path_tl}
- \tl_put_right:Nx \l_@@_shorten_last_tl
+ \tl_set:Nx \l_@@_tmpa_tl {\tl_tail:N \l_@@_tmpa_tl}
+ \tl_put_right:Nx \l_@@_tmpe_tl
{
- {\tl_head:N \l_@@_shorten_path_tl}
+ {\tl_head:N \l_@@_tmpa_tl}
}
- \tl_set:Nx \l_@@_shorten_path_tl {\tl_tail:N \l_@@_shorten_path_tl}
- \tl_put_right:Nx \l_@@_shorten_last_tl
+ \tl_set:Nx \l_@@_tmpa_tl {\tl_tail:N \l_@@_tmpa_tl}
+ \tl_put_right:Nx \l_@@_tmpe_tl
{
- \tl_head:N \l_@@_shorten_path_tl
+ \tl_head:N \l_@@_tmpa_tl
}
- \tl_set:Nx \l_@@_shorten_path_tl {\tl_tail:N \l_@@_shorten_path_tl}
+ \tl_set:Nx \l_@@_tmpa_tl {\tl_tail:N \l_@@_tmpa_tl}
}
- \tl_put_right:Nx \l_@@_shorten_last_tl
+ \tl_put_right:Nx \l_@@_tmpe_tl
{
- {\tl_item:Nn \l_@@_shorten_path_tl {1}}
- {\tl_item:Nn \l_@@_shorten_path_tl {2}}
+ {\tl_item:Nn \l_@@_tmpa_tl {1}}
+ {\tl_item:Nn \l_@@_tmpa_tl {2}}
}
- \tl_put_right:NV \l_@@_shorten_last_tl \c_spath_moveto_tl
+ \tl_put_right:NV \l_@@_tmpe_tl \c_spath_moveto_tl
- \tl_reverse:N \l_@@_shorten_path_tl
+ \tl_reverse:N \l_@@_tmpa_tl
- \fp_set:Nn \l_@@_shorten_x_fp
+ \fp_set:Nn \l_@@_tmpa_fp
{
- \dim_to_fp:n {\tl_item:Nn \l_@@_shorten_last_tl {4}}
+ \dim_to_fp:n {\tl_item:Nn \l_@@_tmpe_tl {4}}
-
- \dim_to_fp:n {\tl_item:Nn \l_@@_shorten_last_tl {1}}
+ \dim_to_fp:n {\tl_item:Nn \l_@@_tmpe_tl {1}}
}
- \fp_set:Nn \l_@@_shorten_y_fp
+ \fp_set:Nn \l_@@_tmpb_fp
{
- \dim_to_fp:n {\tl_item:Nn \l_@@_shorten_last_tl {5}}
+ \dim_to_fp:n {\tl_item:Nn \l_@@_tmpe_tl {5}}
-
- \dim_to_fp:n {\tl_item:Nn \l_@@_shorten_last_tl {2}}
+ \dim_to_fp:n {\tl_item:Nn \l_@@_tmpe_tl {2}}
}
- \fp_set:Nn \l_@@_shorten_len_fp
+ \fp_set:Nn \l_@@_tmpc_fp
{
- sqrt( \l_@@_shorten_x_fp * \l_@@_shorten_x_fp + \l_@@_shorten_y_fp * \l_@@_shorten_y_fp )
+ sqrt(
+ \l_@@_tmpa_fp * \l_@@_tmpa_fp
+ +
+ \l_@@_tmpb_fp * \l_@@_tmpb_fp
+ ) * \l_@@_tmpa_int
}
\fp_compare:nTF
{
- \l_@@_shorten_len_fp > #2
+ \l_@@_tmpc_fp > #2
}
{
- \fp_set:Nn \l_@@_shorten_len_fp
+ \fp_set:Nn \l_@@_tmpc_fp
{
- (\l_@@_shorten_len_fp - #2)/ \l_@@_shorten_len_fp
+ (\l_@@_tmpc_fp - #2)/ \l_@@_tmpc_fp
}
- \tl_reverse:N \l_@@_shorten_last_tl
+ \tl_reverse:N \l_@@_tmpe_tl
- \tl_if_eq:NNTF \l_@@_shorten_fa_tl \c_spath_curveto_tl
+ \tl_if_eq:NNTF \l_@@_tmpb_tl \c_spath_curveto_tl
{
- \fp_set:Nn \l_@@_shorten_len_fp
- {
- 1 - (1 -\l_@@_shorten_len_fp)/3
- }
\spath_split_curve:NNVV
- \l_@@_shorten_lasta_tl
- \l_@@_shorten_lastb_tl
- \l_@@_shorten_last_tl
- \l_@@_shorten_len_fp
+ \l_@@_tmpc_tl
+ \l_@@_tmpd_tl
+ \l_@@_tmpe_tl
+ \l_@@_tmpc_fp
}
{
\spath_split_line:NNVV
- \l_@@_shorten_lasta_tl
- \l_@@_shorten_lastb_tl
- \l_@@_shorten_last_tl
- \l_@@_shorten_len_fp
+ \l_@@_tmpc_tl
+ \l_@@_tmpd_tl
+ \l_@@_tmpe_tl
+ \l_@@_tmpc_fp
}
\prg_replicate:nn {3}
{
- \tl_set:Nx \l_@@_shorten_lasta_tl {\tl_tail:N \l_@@_shorten_lasta_tl}
+ \tl_set:Nx \l_@@_tmpc_tl {\tl_tail:N \l_@@_tmpc_tl}
}
- \tl_put_right:NV \l_@@_shorten_path_tl \l_@@_shorten_lasta_tl
+ \tl_put_right:NV \l_@@_tmpa_tl \l_@@_tmpc_tl
}
{
\int_compare:nT
{
- \tl_count:N \l_@@_shorten_path_tl > 3
+ \tl_count:N \l_@@_tmpa_tl > 3
}
{
- \dim_set:Nn \l_@@_tmpa_dim {\fp_to_dim:n {#2 - \l_@@_shorten_len_fp } }
- \spath_shorten_at_end:NV \l_@@_shorten_path_tl \l_@@_tmpa_dim
+ \dim_set:Nn \l_@@_tmpa_dim {\fp_to_dim:n {#2 - \l_@@_tmpc_fp } }
+ \spath_shorten_at_end:NV \l_@@_tmpa_tl \l_@@_tmpa_dim
}
}
- \tl_gset_eq:NN \g_@@_output_tl \l_@@_shorten_path_tl
+ \tl_gset_eq:NN \g_@@_output_tl \l_@@_tmpa_tl
\group_end:
}
{
@@ -2497,7 +3185,7 @@ manipulating PGF soft paths}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{
+% \begin{macro}[internal]{
% \spath_shorten_at_start:Nnn,
% \spath_shorten_at_start:Nn,
% \spath_gshorten_at_start:Nnn,
@@ -2515,110 +3203,120 @@ manipulating PGF soft paths}
}
{
\group_begin:
- \tl_set:Nn \l_@@_shorten_path_tl {#1}
+ \tl_set:Nn \l_@@_tmpa_tl {#1}
- \tl_set:Nx \l_@@_shorten_fa_tl {\tl_item:Nn \l_@@_shorten_path_tl {4}}
+ \tl_set:Nx \l_@@_tmpb_tl {\tl_item:Nn \l_@@_tmpa_tl {4}}
- \tl_clear:N \l_@@_shorten_last_tl
+ \tl_clear:N \l_@@_tmpe_tl
- \tl_if_eq:NNTF \l_@@_shorten_fa_tl \c_spath_curvetoa_tl
+ \tl_if_eq:NNTF \l_@@_tmpb_tl \c_spath_curvetoa_tl
{
- \int_set:Nn \l_@@_shorten_int {3}
+ \int_set:Nn \l_@@_tmpa_int {3}
}
{
- \int_set:Nn \l_@@_shorten_int {1}
+ \int_set:Nn \l_@@_tmpa_int {1}
}
- \tl_set_eq:NN \l_@@_shorten_last_tl \c_spath_moveto_tl
- \tl_set:Nx \l_@@_shorten_path_tl {\tl_tail:N \l_@@_shorten_path_tl }
+ \tl_set_eq:NN \l_@@_tmpe_tl \c_spath_moveto_tl
+ \tl_set:Nx \l_@@_tmpa_tl {\tl_tail:N \l_@@_tmpa_tl }
- \prg_replicate:nn { \l_@@_shorten_int }
+ \prg_replicate:nn { \l_@@_tmpa_int }
{
- \@@_tl_put_right_braced:Nx \l_@@_shorten_last_tl {\tl_item:Nn \l_@@_shorten_path_tl {1}}
- \@@_tl_put_right_braced:Nx \l_@@_shorten_last_tl {\tl_item:Nn \l_@@_shorten_path_tl {2}}
- \tl_put_right:Nx \l_@@_shorten_last_tl {\tl_item:Nn \l_@@_shorten_path_tl {3}}
+ \@@_tl_put_right_braced:Nx
+ \l_@@_tmpe_tl
+ {\tl_item:Nn \l_@@_tmpa_tl {1}}
+ \@@_tl_put_right_braced:Nx
+ \l_@@_tmpe_tl
+ {\tl_item:Nn \l_@@_tmpa_tl {2}}
+ \tl_put_right:Nx \l_@@_tmpe_tl {\tl_item:Nn \l_@@_tmpa_tl {3}}
\prg_replicate:nn {3}
{
- \tl_set:Nx \l_@@_shorten_path_tl {\tl_tail:N \l_@@_shorten_path_tl }
+ \tl_set:Nx \l_@@_tmpa_tl {\tl_tail:N \l_@@_tmpa_tl }
}
}
- \@@_tl_put_right_braced:Nx \l_@@_shorten_last_tl {\tl_item:Nn \l_@@_shorten_path_tl {1}}
- \@@_tl_put_right_braced:Nx \l_@@_shorten_last_tl {\tl_item:Nn \l_@@_shorten_path_tl {2}}
+ \@@_tl_put_right_braced:Nx
+ \l_@@_tmpe_tl
+ {\tl_item:Nn \l_@@_tmpa_tl {1}}
+ \@@_tl_put_right_braced:Nx
+ \l_@@_tmpe_tl
+ {\tl_item:Nn \l_@@_tmpa_tl {2}}
- \fp_set:Nn \l_@@_shorten_x_fp
+ \fp_set:Nn \l_@@_tmpa_fp
{
- \dim_to_fp:n {\tl_item:Nn \l_@@_shorten_last_tl {5}}
+ \dim_to_fp:n {\tl_item:Nn \l_@@_tmpe_tl {5}}
-
- \dim_to_fp:n {\tl_item:Nn \l_@@_shorten_last_tl {2}}
+ \dim_to_fp:n {\tl_item:Nn \l_@@_tmpe_tl {2}}
}
- \fp_set:Nn \l_@@_shorten_y_fp
+ \fp_set:Nn \l_@@_tmpb_fp
{
- \dim_to_fp:n {\tl_item:Nn \l_@@_shorten_last_tl {6}}
+ \dim_to_fp:n {\tl_item:Nn \l_@@_tmpe_tl {6}}
-
- \dim_to_fp:n {\tl_item:Nn \l_@@_shorten_last_tl {3}}
+ \dim_to_fp:n {\tl_item:Nn \l_@@_tmpe_tl {3}}
}
- \fp_set:Nn \l_@@_shorten_len_fp
+ \fp_set:Nn \l_@@_tmpc_fp
{
- sqrt( \l_@@_shorten_x_fp * \l_@@_shorten_x_fp + \l_@@_shorten_y_fp * \l_@@_shorten_y_fp )
+ sqrt(
+ \l_@@_tmpa_fp * \l_@@_tmpa_fp
+ +
+ \l_@@_tmpb_fp * \l_@@_tmpb_fp
+ )
+ *
+ \l_@@_tmpa_int
}
\fp_compare:nTF
{
- \l_@@_shorten_len_fp > #2
+ \l_@@_tmpc_fp > #2
}
{
- \fp_set:Nn \l_@@_shorten_len_fp
+ \fp_set:Nn \l_@@_tmpc_fp
{
- #2/ \l_@@_shorten_len_fp
+ #2/ \l_@@_tmpc_fp
}
- \tl_if_eq:NNTF \l_@@_shorten_fa_tl \c_spath_curvetoa_tl
+ \tl_if_eq:NNTF \l_@@_tmpb_tl \c_spath_curvetoa_tl
{
- \fp_set:Nn \l_@@_shorten_len_fp
- {
- \l_@@_shorten_len_fp/3
- }
\spath_split_curve:NNVV
- \l_@@_shorten_lasta_tl
- \l_@@_shorten_lastb_tl
- \l_@@_shorten_last_tl
- \l_@@_shorten_len_fp
+ \l_@@_tmpc_tl
+ \l_@@_tmpd_tl
+ \l_@@_tmpe_tl
+ \l_@@_tmpc_fp
}
{
\spath_split_line:NNVV
- \l_@@_shorten_lasta_tl
- \l_@@_shorten_lastb_tl
- \l_@@_shorten_last_tl
- \l_@@_shorten_len_fp
+ \l_@@_tmpc_tl
+ \l_@@_tmpd_tl
+ \l_@@_tmpe_tl
+ \l_@@_tmpc_fp
}
\prg_replicate:nn {2}
{
- \tl_set:Nx \l_@@_shorten_path_tl {\tl_tail:N \l_@@_shorten_path_tl}
+ \tl_set:Nx \l_@@_tmpa_tl {\tl_tail:N \l_@@_tmpa_tl}
}
- \tl_put_left:NV \l_@@_shorten_path_tl \l_@@_shorten_lastb_tl
+ \tl_put_left:NV \l_@@_tmpa_tl \l_@@_tmpd_tl
}
{
- \tl_put_left:NV \l_@@_shorten_path_tl \c_spath_moveto_tl
+ \tl_put_left:NV \l_@@_tmpa_tl \c_spath_moveto_tl
\int_compare:nT
{
- \tl_count:N \l_@@_shorten_path_tl > 3
+ \tl_count:N \l_@@_tmpa_tl > 3
}
{
- \dim_set:Nn \l_@@_tmpa_dim {\fp_to_dim:n {#2 - \l_@@_shorten_len_fp } }
- \spath_shorten_at_start:NV \l_@@_shorten_path_tl \l_@@_tmpa_dim
+ \dim_set:Nn \l_@@_tmpa_dim {\fp_to_dim:n {#2 - \l_@@_tmpc_fp } }
+ \spath_shorten_at_start:NV \l_@@_tmpa_tl \l_@@_tmpa_dim
}
}
- \tl_gset_eq:NN \g_@@_output_tl \l_@@_shorten_path_tl
+ \tl_gset_eq:NN \g_@@_output_tl \l_@@_tmpa_tl
\group_end:
}
{
@@ -2655,7 +3353,7 @@ manipulating PGF soft paths}
%
% \subsection{Points on a Path}
%
-% \begin{macro}{
+% \begin{macro}[internal]{
% \spath_point_at:Nnn,
% \spath_gpoint_at:Nnn,
% }
@@ -2687,7 +3385,9 @@ manipulating PGF soft paths}
}
{
- \tl_set:Nx \l_@@_tmpa_tl {\seq_item:Nn \l_@@_tmpa_seq { \l_@@_tmpa_int} }
+ \tl_set:Nx
+ \l_@@_tmpa_tl
+ {\seq_item:Nn \l_@@_tmpa_seq { \l_@@_tmpa_int} }
\int_compare:nTF
{
@@ -2765,11 +3465,21 @@ manipulating PGF soft paths}
{
{\fp_to_dim:n
{
- (1 - \l_@@_tmpa_fp)^3 * \tl_item:Nn \l_@@_tmpa_tl {2} + 3 * (1 - \l_@@_tmpa_fp)^2 * (\l_@@_tmpa_fp) * \tl_item:Nn \l_@@_tmpa_tl {5} + 3 * (1 - \l_@@_tmpa_fp) * (\l_@@_tmpa_fp)^2 * \tl_item:Nn \l_@@_tmpa_tl {8} + (\l_@@_tmpa_fp)^3 * \tl_item:Nn \l_@@_tmpa_tl {11}
+ (1 - \l_@@_tmpa_fp)^3 * \tl_item:Nn \l_@@_tmpa_tl {2}
+ + 3 * (1 - \l_@@_tmpa_fp)^2 * (\l_@@_tmpa_fp)
+ * \tl_item:Nn \l_@@_tmpa_tl {5}
+ + 3 * (1 - \l_@@_tmpa_fp) * (\l_@@_tmpa_fp)^2
+ * \tl_item:Nn \l_@@_tmpa_tl {8}
+ + (\l_@@_tmpa_fp)^3 * \tl_item:Nn \l_@@_tmpa_tl {11}
}}
{\fp_to_dim:n
{
- (1 - \l_@@_tmpa_fp)^3 * \tl_item:Nn \l_@@_tmpa_tl {3} + 3 * (1 - \l_@@_tmpa_fp)^2 * (\l_@@_tmpa_fp) * \tl_item:Nn \l_@@_tmpa_tl {6} + 3 * (1 - \l_@@_tmpa_fp) * (\l_@@_tmpa_fp)^2 * \tl_item:Nn \l_@@_tmpa_tl {9} + (\l_@@_tmpa_fp)^3 * \tl_item:Nn \l_@@_tmpa_tl {12}
+ (1 - \l_@@_tmpa_fp)^3 * \tl_item:Nn \l_@@_tmpa_tl {3}
+ + 3 * (1 - \l_@@_tmpa_fp)^2 * (\l_@@_tmpa_fp)
+ * \tl_item:Nn \l_@@_tmpa_tl {6}
+ + 3 * (1 - \l_@@_tmpa_fp) * (\l_@@_tmpa_fp)^2
+ * \tl_item:Nn \l_@@_tmpa_tl {9}
+ + (\l_@@_tmpa_fp)^3 * \tl_item:Nn \l_@@_tmpa_tl {12}
}}
}
}
@@ -2799,7 +3509,7 @@ manipulating PGF soft paths}
% \end{macro}
%
%
-% \begin{macro}{
+% \begin{macro}[internal]{
% \spath_tangent_at:Nnn,
% \spath_gtangent_at:Nnn,
% }
@@ -2831,7 +3541,9 @@ manipulating PGF soft paths}
}
{
- \tl_set:Nx \l_@@_tmpa_tl {\seq_item:Nn \l_@@_tmpa_seq { \l_@@_tmpa_int} }
+ \tl_set:Nx
+ \l_@@_tmpa_tl
+ {\seq_item:Nn \l_@@_tmpa_seq { \l_@@_tmpa_int} }
\int_compare:nTF
{
@@ -2909,16 +3621,24 @@ manipulating PGF soft paths}
{
{\fp_to_dim:n
{
- 3*(1 - \l_@@_tmpa_fp)^2 * (\tl_item:Nn \l_@@_tmpa_tl {5} - \tl_item:Nn \l_@@_tmpa_tl {2})
- + 6 * (1 - \l_@@_tmpa_fp) * (\l_@@_tmpa_fp) * (\tl_item:Nn \l_@@_tmpa_tl {8} - \tl_item:Nn \l_@@_tmpa_tl {5})
- + 3*(\l_@@_tmpa_fp)^2 * (\tl_item:Nn \l_@@_tmpa_tl {11} - \tl_item:Nn \l_@@_tmpa_tl {8})
+ 3*(1 - \l_@@_tmpa_fp)^2 * (\tl_item:Nn \l_@@_tmpa_tl {5}
+ - \tl_item:Nn \l_@@_tmpa_tl {2})
+ + 6 * (1 - \l_@@_tmpa_fp) * (\l_@@_tmpa_fp) *
+ (\tl_item:Nn \l_@@_tmpa_tl {8}
+ - \tl_item:Nn \l_@@_tmpa_tl {5})
+ + 3*(\l_@@_tmpa_fp)^2 * (\tl_item:Nn \l_@@_tmpa_tl {11}
+ - \tl_item:Nn \l_@@_tmpa_tl {8})
}
}
{\fp_to_dim:n
{
- 3*(1 - \l_@@_tmpa_fp)^2 * (\tl_item:Nn \l_@@_tmpa_tl {6} - \tl_item:Nn \l_@@_tmpa_tl {3})
- + 6 * (1 - \l_@@_tmpa_fp) * (\l_@@_tmpa_fp) * (\tl_item:Nn \l_@@_tmpa_tl {9} - \tl_item:Nn \l_@@_tmpa_tl {6})
- + 3*(\l_@@_tmpa_fp)^2 * (\tl_item:Nn \l_@@_tmpa_tl {12} - \tl_item:Nn \l_@@_tmpa_tl {9})
+ 3*(1 - \l_@@_tmpa_fp)^2 * (\tl_item:Nn \l_@@_tmpa_tl {6}
+ - \tl_item:Nn \l_@@_tmpa_tl {3})
+ + 6 * (1 - \l_@@_tmpa_fp) * (\l_@@_tmpa_fp) *
+ (\tl_item:Nn \l_@@_tmpa_tl {9}
+ - \tl_item:Nn \l_@@_tmpa_tl {6})
+ + 3*(\l_@@_tmpa_fp)^2 * (\tl_item:Nn \l_@@_tmpa_tl {12}
+ - \tl_item:Nn \l_@@_tmpa_tl {9})
}}
}
}
@@ -2948,7 +3668,7 @@ manipulating PGF soft paths}
% \end{macro}
%
%
-% \begin{macro}{
+% \begin{macro}[internal]{
% \spath_transformation_at:Nnn,
% \spath_gtransformation_at:Nnn
% }
@@ -2960,15 +3680,24 @@ manipulating PGF soft paths}
\tl_clear:N \l_@@_tmpa_tl
\@@_tangent_at:nn {#1}{#2}
\tl_set_eq:NN \l_@@_tmpb_tl \g_@@_output_tl
- \fp_set:Nn \l_@@_tmpa_fp { sqrt( (\tl_item:Nn \l_@@_tmpb_tl {1})^2 + (\tl_item:Nn \l_@@_tmpb_tl {2})^2 ) }
+ \fp_set:Nn \l_@@_tmpa_fp
+ {
+ sqrt(
+ (\tl_item:Nn \l_@@_tmpb_tl {1})^2
+ +
+ (\tl_item:Nn \l_@@_tmpb_tl {2})^2
+ )
+ }
\fp_compare:nTF {\l_@@_tmpa_fp = 0}
{
\fp_set:Nn \l_@@_tmpa_fp {1}
\fp_set:Nn \l_@@_tmpb_fp {0}
}
{
- \fp_set:Nn \l_@@_tmpb_fp { (\tl_item:Nn \l_@@_tmpb_tl {2}) / \l_@@_tmpa_fp }
- \fp_set:Nn \l_@@_tmpa_fp { (\tl_item:Nn \l_@@_tmpb_tl {1}) / \l_@@_tmpa_fp }
+ \fp_set:Nn \l_@@_tmpb_fp
+ { (\tl_item:Nn \l_@@_tmpb_tl {2}) / \l_@@_tmpa_fp }
+ \fp_set:Nn \l_@@_tmpa_fp
+ { (\tl_item:Nn \l_@@_tmpb_tl {1}) / \l_@@_tmpa_fp }
}
\tl_set:Nx \l_@@_tmpa_tl
{
@@ -3005,26 +3734,7 @@ manipulating PGF soft paths}
% The intersection library is 0-based, but the user interface is 1-based (since if we ``count'' in a \Verb+\foreach+ then it starts at 1).
% This should be more consistent.
%
-% \begin{macrocode}
-\tl_new:N \l_@@_split_path_a_tl
-\tl_new:N \l_@@_split_path_b_tl
-\tl_new:N \l_@@_split_path_a_start_tl
-\tl_new:N \l_@@_split_path_b_start_tl
-\tl_new:N \l_@@_split_path_a_end_tl
-\tl_new:N \l_@@_split_path_b_end_tl
-\tl_new:N \l_@@_split_path_a_final_tl
-\tl_new:N \l_@@_split_path_b_final_tl
-
-\tl_new:N \l_@@_split_prev_first_tl
-\tl_new:N \l_@@_split_prev_second_tl
-
-\seq_new:N \l_@@_split_first_seq
-\seq_new:N \l_@@_split_second_seq
-
-\int_new:N \l_@@_split_segment_int
-% \end{macrocode}
-%
-% \begin{macro}{
+% \begin{macro}[internal]{
% \spath_intersect:NN,
% \spath_intersect:nn,
% }
@@ -3039,8 +3749,6 @@ manipulating PGF soft paths}
\pgfsetpath #2
}
}
-\tl_new:N \l_@@_intersecta_tl
-\tl_new:N \l_@@_intersectb_tl
\cs_new_protected_nopar:Npn \spath_intersect:nn #1#2
{
\tl_set:Nn \l_@@_intersecta_tl {#1}
@@ -3050,154 +3758,220 @@ manipulating PGF soft paths}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{
-% \spath_split_at_intersections:NNnn,
-% \spath_split_at_intersections:NN,
-% \spath_gsplit_at_intersections:NNnn,
-% \spath_gsplit_at_intersections:NN
+% \begin{macro}[internal]{
+% \spath_split_component_at_intersections:Nnn
% }
-% Given two paths, split them at points where they intersect and store them in the macros.
+% Split a component where it intersects a path.
+% Key assumption is that the first path is a single component, so if it is closed then the end joins up to the beginning.
+% The component is modified but the path is not.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_split_at_intersections:nn #1#2
+\cs_new_protected_nopar:Npn \@@_split_component_at_intersections:nn #1#2
{
\group_begin:
-
- % Clear some token lists and sequences
- \tl_clear:N \l_@@_split_path_a_final_tl
- \tl_clear:N \l_@@_split_path_b_final_tl
- \seq_clear:N \l_@@_split_first_seq
- \seq_clear:N \l_@@_split_second_seq
+ \tl_clear:N \l_@@_tmpe_tl
+ \seq_clear:N \l_@@_tmpb_seq
- \pgfintersectionsortbyfirstpath
% Find the intersections of these segments
- \tl_set:Nn \l_@@_split_path_a_tl {#1}
- \tl_set:Nn \l_@@_split_path_b_tl {#2}
- % Remove empty components
-% \spath_path_remove_empty_components:N \l_@@_split_path_a_tl
-% \spath_path_remove_empty_components:N \l_@@_split_path_b_tl
+ \tl_set:Nn \l_@@_tmpb_tl {#1}
+ \tl_set:Nn \l_@@_tmpc_tl {#2}
- \spath_intersect:NN \l_@@_split_path_a_tl \l_@@_split_path_b_tl
+ \spath_reallength:Nn \l_@@_tmpa_int {#1}
- % If we get intersections
- \int_compare:nT {\pgfintersectionsolutions > 0}
+ % Remember if the component is closed
+ \spath_finalaction:NV \l_@@_tmpa_tl \l_@@_tmpb_tl
+
+ \bool_set:Nn \l_@@_closed_bool
{
- % Find the times of the intersections on each path
- \int_step_inline:nnnn {1} {1} {\pgfintersectionsolutions}
- {
- \pgfintersectiongetsolutiontimes{##1}{\l_@@_split_first_tl}{\l_@@_split_second_tl}
- \seq_put_left:NV \l_@@_split_first_seq \l_@@_split_first_tl
- }
+ \tl_if_eq_p:NN \l_@@_tmpa_tl \c_spath_closepath_tl
}
- \spath_intersect:NN \l_@@_split_path_b_tl \l_@@_split_path_a_tl
+ % Open it
+ \spath_open:N \l_@@_tmpb_tl
+
+ % Sort intersections along the component
+ \pgfintersectionsortbyfirstpath
+ \spath_intersect:NN \l_@@_tmpb_tl \l_@@_tmpc_tl
% If we get intersections
\int_compare:nT {\pgfintersectionsolutions > 0}
{
- % Find the times of the intersections on each path
+ % Find the times of the intersections on the component
\int_step_inline:nnnn {1} {1} {\pgfintersectionsolutions}
{
- \pgfintersectiongetsolutiontimes{##1}{\l_@@_split_first_tl}{\l_@@_split_second_tl}
- \seq_put_left:NV \l_@@_split_second_seq \l_@@_split_first_tl
+ \pgfintersectiongetsolutiontimes{##1}{\l_@@_tmph_tl}{\l_@@_tmpi_tl}
+ \seq_put_left:NV \l_@@_tmpb_seq \l_@@_tmph_tl
}
- }
-
- \tl_set:Nn \l_@@_split_prev_first_tl {-1}
- \seq_map_inline:Nn \l_@@_split_first_seq
- {
- \tl_set:Nn \l_@@_split_first_tl {##1}
-
- \tl_set_eq:NN \l_@@_tmpa_tl \l_@@_split_first_tl
- \int_compare:nT
+ \seq_get_left:NN \l_@@_tmpb_seq \l_@@_tmpa_tl
+ \fp_compare:nT
{
- \fp_to_int:n {floor( \l_@@_split_first_tl) }
- =
- \fp_to_int:n {floor( \l_@@_split_prev_first_tl) }
+ \l_@@_tmpa_tl > \l_@@_tmpa_int - .01
}
{
- \tl_set:Nx \l_@@_split_first_tl
- {
- \fp_eval:n {
- floor( \l_@@_split_first_tl )
- +
- ( \l_@@_split_first_tl - floor( \l_@@_split_first_tl) )
- /
- ( \l_@@_split_prev_first_tl - floor( \l_@@_split_prev_first_tl) )
- }
- }
+ \bool_set_false:N \l_@@_closed_bool
}
- \tl_set_eq:NN \l_@@_split_prev_first_tl \l_@@_tmpa_tl
-
- \spath_split_at:NNVV \l_@@_split_path_a_start_tl \l_@@_split_path_a_end_tl \l_@@_split_path_a_tl \l_@@_split_first_tl
-
- \tl_put_left:NV \l_@@_split_path_a_final_tl \l_@@_split_path_a_end_tl
- \tl_set_eq:NN \l_@@_split_path_a_tl \l_@@_split_path_a_start_tl
-
- }
-
- \tl_set:Nn \l_@@_split_prev_second_tl {-1}
-
- \seq_map_inline:Nn \l_@@_split_second_seq
- {
- \tl_set:Nn \l_@@_split_second_tl {##1}
-
- \tl_set_eq:NN \l_@@_tmpa_tl \l_@@_split_second_tl
- \int_compare:nT
+ \seq_get_right:NN \l_@@_tmpb_seq \l_@@_tmpa_tl
+ \fp_compare:nT
{
- \fp_to_int:n {floor( \l_@@_split_second_tl) }
- =
- \fp_to_int:n {floor( \l_@@_split_prev_second_tl) }
+ \l_@@_tmpa_tl < .01
}
{
- \tl_set:Nx \l_@@_split_second_tl
+ \bool_set_false:N \l_@@_closed_bool
+ }
+
+
+ \tl_set:Nn \l_@@_tmpg_tl {-1}
+
+ \seq_map_inline:Nn \l_@@_tmpb_seq
+ {
+ \tl_set:Nn \l_@@_tmph_tl {##1}
+
+ \tl_set_eq:NN \l_@@_tmpa_tl \l_@@_tmph_tl
+ \int_compare:nT
{
- \fp_eval:n {
- floor( \l_@@_split_second_tl )
- +
- ( \l_@@_split_second_tl - floor( \l_@@_split_second_tl) )
- /
- ( \l_@@_split_prev_second_tl - floor( \l_@@_split_prev_second_tl) )
+ \fp_to_int:n {floor( \l_@@_tmph_tl) }
+ =
+ \fp_to_int:n {floor( \l_@@_tmpg_tl) }
+ }
+ {
+ \tl_set:Nx \l_@@_tmph_tl
+ {
+ \fp_eval:n {
+ floor( \l_@@_tmph_tl )
+ +
+ ( \l_@@_tmph_tl - floor( \l_@@_tmph_tl) )
+ /
+ ( \l_@@_tmpg_tl - floor( \l_@@_tmpg_tl) )
+ }
}
}
+ \tl_set_eq:NN \l_@@_tmpg_tl \l_@@_tmpa_tl
+
+ \spath_split_at:NNVV
+ \l_@@_tmpd_tl
+ \l_@@_tmpf_tl
+ \l_@@_tmpb_tl
+ \l_@@_tmph_tl
+
+ \tl_put_left:NV \l_@@_tmpe_tl \l_@@_tmpf_tl
+ \tl_set_eq:NN \l_@@_tmpb_tl \l_@@_tmpd_tl
+
}
- \tl_set_eq:NN \l_@@_split_prev_second_tl \l_@@_tmpa_tl
- \spath_split_at:NNVV \l_@@_split_path_b_start_tl \l_@@_split_path_b_end_tl \l_@@_split_path_b_tl\l_@@_split_second_tl
-
- \tl_put_left:NV \l_@@_split_path_b_final_tl \l_@@_split_path_b_end_tl
- \tl_set_eq:NN \l_@@_split_path_b_tl \l_@@_split_path_b_start_tl
-
- }
- \tl_put_left:NV \l_@@_split_path_a_final_tl \l_@@_split_path_a_tl
- \tl_put_left:NV \l_@@_split_path_b_final_tl \l_@@_split_path_b_tl
+ \tl_put_left:NV \l_@@_tmpe_tl \l_@@_tmpb_tl
+
+ \spath_remove_empty_components:N \l_@@_tmpe_tl
- \tl_if_empty:NT \l_@@_split_path_a_final_tl
- {
- \tl_set_eq:NN \l_@@_split_path_a_final_tl \l_@@_split_path_a_tl
+ \tl_set_eq:NN \l_@@_tmpb_tl \l_@@_tmpe_tl
}
- \tl_if_empty:NT \l_@@_split_path_b_final_tl
+
+ \bool_if:NT \l_@@_closed_bool
{
- \tl_set_eq:NN \l_@@_split_path_b_final_tl \l_@@_split_path_b_tl
+ \spath_join_component:Nn \l_@@_tmpb_tl {1}
}
+
+ \tl_gclear:N \g_@@_output_tl
+ \tl_gset_eq:NN \g_@@_output_tl \l_@@_tmpb_tl
- \spath_remove_empty_components:N \l_@@_split_path_a_final_tl
- \spath_remove_empty_components:N \l_@@_split_path_b_final_tl
+ \group_end:
+}
+\cs_new_protected_nopar:Npn \spath_split_component_at_intersections:Nnn #1#2#3
+{
+ \@@_split_component_at_intersections:nn {#2}{#3}
+ \tl_set_eq:NN #1 \g_@@_output_tl
+ \tl_gclear:N \g_@@_output_tl
+}
+\cs_generate_variant:Nn \spath_split_component_at_intersections:Nnn {NVn, NVV}
+\cs_new_protected_nopar:Npn \spath_split_component_at_intersections:Nn #1#2
+{
+ \spath_split_component_at_intersections:NVn #1#1{#2}
+}
+\cs_generate_variant:Nn \spath_split_component_at_intersections:Nn {cn, cv}
+\cs_new_protected_nopar:Npn \spath_gsplit_component_at_intersections:Nnn #1#2#3
+{
+ \@@_split_component_at_intersections:nn {#2}{#3}
+ \tl_gset_eq:NN #1 \g_@@_output_tl
+ \tl_gclear:N \g_@@_output_tl
+}
+\cs_generate_variant:Nn \spath_gsplit_component_at_intersections:Nnn {NVn, NVV}
+\cs_new_protected_nopar:Npn \spath_gsplit_component_at_intersections:Nn #1#2
+{
+ \spath_gsplit_component_at_intersections:NVn #1#1{#2}
+}
+\cs_generate_variant:Nn \spath_gsplit_component_at_intersections:Nn {cn, cv}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}[internal]{
+% \spath_split_path_at_intersections:Nnn,
+% \spath_split_path_at_intersections:Nn,
+% \spath_gsplit_path_at_intersections:Nnn,
+% \spath_gsplit_path_at_intersections:Nn,
+% \spath_split_at_intersections:NNnn,
+% \spath_split_at_intersections:NN,
+% \spath_gsplit_at_intersections:NNnn,
+% \spath_gsplit_at_intersections:NN,
+% }
+% Split paths at their intersections.
+% The \Verb+path+ versions only split the first path.
+% The others split both paths.
+% \begin{macrocode}
+\cs_new_protected_nopar:Npn \@@_split_path_at_intersections:nn #1#2
+{
+ \group_begin:
+
+ \seq_clear:N \l_@@_tmpa_seq
+ \seq_clear:N \l_@@_tmpb_seq
+ \spath_components_to_seq:Nn \l_@@_tmpa_seq {#1}
+ \seq_map_inline:Nn \l_@@_tmpa_seq
+ {
+ \spath_split_component_at_intersections:Nnn \l_@@_tmpa_tl {##1} {#2}
+ \seq_put_right:NV \l_@@_tmpb_seq \l_@@_tmpa_tl
+ }
+
\tl_gclear:N \g_@@_output_tl
- \@@_tl_gput_right_braced:NV \g_@@_output_tl \l_@@_split_path_a_final_tl
- \@@_tl_gput_right_braced:NV \g_@@_output_tl \l_@@_split_path_b_final_tl
+ \tl_gset:Nx \g_@@_output_tl {\seq_use:Nn \l_@@_tmpb_seq {} }
\group_end:
}
+\cs_new_protected_nopar:Npn \spath_split_path_at_intersections:Nnn #1#2#3
+{
+ \@@_split_path_at_intersections:nn {#2}{#3}
+ \tl_set_eq:NN #1 \g_@@_output_tl
+ \tl_gclear:N \g_@@_output_tl
+}
+\cs_generate_variant:Nn \spath_split_path_at_intersections:Nnn
+{NVn, NVV, cVn, cVV, cvn, cvv}
+\cs_new_protected_nopar:Npn \spath_split_path_at_intersections:Nn #1#2
+{
+ \spath_split_path_at_intersections:NVn #1#1{#2}
+}
+\cs_generate_variant:Nn \spath_split_path_at_intersections:Nn {cv, NV}
+\cs_new_protected_nopar:Npn \spath_gsplit_path_at_intersections:Nnn #1#2#3
+{
+ \@@_split_path_at_intersections:nn {#2}{#3}
+ \tl_gset_eq:NN #1 \g_@@_output_tl
+ \tl_gclear:N \g_@@_output_tl
+}
+\cs_generate_variant:Nn \spath_gsplit_path_at_intersections:Nnn
+{NVn, NVV, cVn, cVV, cvn, cvv}
+\cs_new_protected_nopar:Npn \spath_gsplit_path_at_intersections:Nn #1#2
+{
+ \spath_gsplit_path_at_intersections:NVn #1#1{#2}
+}
+\cs_generate_variant:Nn \spath_gsplit_path_at_intersections:Nn {cv, NV}
\cs_new_protected_nopar:Npn \spath_split_at_intersections:NNnn #1#2#3#4
{
- \@@_split_at_intersections:nn {#3}{#4}
- \tl_set:Nx #1 {\tl_item:Nn \g_@@_output_tl {1}}
- \tl_set:Nx #2 {\tl_item:Nn \g_@@_output_tl {2}}
+ \@@_split_path_at_intersections:nn {#3}{#4}
+ \tl_set_eq:NN #1 \g_@@_output_tl
+ \@@_split_path_at_intersections:nn {#4}{#3}
+ \tl_set_eq:NN #2 \g_@@_output_tl
\tl_gclear:N \g_@@_output_tl
}
-\cs_generate_variant:Nn \spath_split_at_intersections:NNnn {NNVV, ccVV, ccvv}
+\cs_generate_variant:Nn \spath_split_at_intersections:NNnn
+{NNVn, NNVV, ccVn, ccVV, ccvn, ccvv}
\cs_new_protected_nopar:Npn \spath_split_at_intersections:NN #1#2
{
\spath_split_at_intersections:NNVV #1#2#1#2
@@ -3205,12 +3979,14 @@ manipulating PGF soft paths}
\cs_generate_variant:Nn \spath_split_at_intersections:NN {cc}
\cs_new_protected_nopar:Npn \spath_gsplit_at_intersections:NNnn #1#2#3#4
{
- \@@_split_at_intersections:nn {#3}{#4}
- \tl_gset:Nx #1 {\tl_item:Nn \g_@@_output_tl {1}}
- \tl_gset:Nx #2 {\tl_item:Nn \g_@@_output_tl {2}}
+ \@@_split_path_at_intersections:nn {#3}{#4}
+ \tl_gset_eq:NN #1 \g_@@_output_tl
+ \@@_split_path_at_intersections:nn {#4}{#3}
+ \tl_gset_eq:NN #2 \g_@@_output_tl
\tl_gclear:N \g_@@_output_tl
}
-\cs_generate_variant:Nn \spath_gsplit_at_intersections:NNnn {NNVV, ccVV, ccvv}
+\cs_generate_variant:Nn \spath_gsplit_at_intersections:NNnn
+{NNVn, NNVV, ccVn, ccVV, ccvn, ccvv}
\cs_new_protected_nopar:Npn \spath_gsplit_at_intersections:NN #1#2
{
\spath_gsplit_at_intersections:NNVV #1#2#1#2
@@ -3219,211 +3995,293 @@ manipulating PGF soft paths}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{
-% \spath_split_at_self_intersections:Nn,
-% \spath_split_at_self_intersections:N,
-% \spath_gsplit_at_self_intersections:Nn,
-% \spath_gsplit_at_self_intersections:N,
+%
+% \begin{macro}[internal]{
+% \spath_split_component_at_self_intersections:Nn,
+% \spath_split_component_at_self_intersections:N,
+% \spath_gsplit_component_at_self_intersections:Nn,
+% \spath_gsplit_component_at_self_intersections:N,
% }
-% Given a path, split it at points where it self-intersects and store in the given macro.
+% Given a component of a path, split it at points where it self-intersects.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_split_at_self_intersections:n #1
+\cs_new_protected_nopar:Npn \@@_split_component_at_self_intersections:n #1
{
\group_begin:
+ \tl_set:Nn \l_@@_tmpe_tl {#1}
+
+ % Remember if the component is closed
+ \spath_finalaction:NV \l_@@_tmpa_tl \l_@@_tmpe_tl
+
+ \bool_set:Nn \l_@@_closed_bool
+ {
+ \tl_if_eq_p:NN \l_@@_tmpa_tl \c_spath_closepath_tl
+ }
% Copy the path
- \tl_set:Nn \l_@@_split_path_b_tl {#1}
+ \tl_set:Nn \l_@@_tmpe_tl {#1}
% Open the path
- \spath_open:N \l_@@_split_path_b_tl
- % Remove empty components
- \spath_remove_empty_components:N \l_@@_split_path_b_tl
+ \spath_open:N \l_@@_tmpe_tl
+ % Ensure beziers don't self-intersect
+ \spath_split_curves:N \l_@@_tmpe_tl
+
% Make a copy for later
- \tl_set_eq:NN \l_@@_split_path_b_final_tl \l_@@_split_path_b_tl
+ \tl_set_eq:NN \l_@@_tmpg_tl \l_@@_tmpe_tl
% Clear some token lists and sequences
- \tl_clear:N \l_@@_split_path_a_tl
- \seq_clear:N \l_@@_split_first_seq
- \int_zero:N \l_@@_split_segment_int
+ \tl_clear:N \l_@@_tmpd_tl
+ \seq_clear:N \l_@@_tmpb_seq
+ \int_zero:N \l_@@_tmpa_int
\pgfintersectionsortbyfirstpath
- \bool_do_until:nn
- {
- \int_compare_p:n
- {
- \tl_count:N \l_@@_split_path_b_tl < 4
- }
- }
- {
- \tl_clear:N \l_@@_split_path_a_tl
- \tl_put_right:Nx \l_@@_split_path_a_tl
- {
- \tl_item:Nn \l_@@_split_path_b_tl {1}
- {\tl_item:Nn \l_@@_split_path_b_tl {2}}
- {\tl_item:Nn \l_@@_split_path_b_tl {3}}
- }
+ % Split the path into a sequence of segments
+ \spath_segments_to_seq:NV \l_@@_tmpa_seq \l_@@_tmpe_tl
- \tl_set:Nx \l_@@_tmpa_tl { \tl_item:Nn \l_@@_split_path_b_tl {4} }
-
- \tl_set:Nx \l_@@_split_path_b_tl {\tl_tail:N \l_@@_split_path_b_tl}
-
- \int_zero:N \l_@@_tmpa_int
-
- \tl_case:Nn \l_@@_tmpa_tl
- {
- \c_spath_moveto_tl
- {
- \tl_clear:N \l_@@_split_path_a_tl
- \tl_set:Nx \l_@@_split_path_b_tl {\tl_tail:N \l_@@_split_path_b_tl}
- \tl_set:Nx \l_@@_split_path_b_tl {\tl_tail:N \l_@@_split_path_b_tl}
- \tl_set:Nx \l_@@_split_path_b_tl {\tl_tail:N \l_@@_split_path_b_tl}
- }
- \c_spath_lineto_tl
- {
- \int_set:Nn \l_@@_tmpa_int {1}
- }
- \c_spath_curvetoa_tl
- {
- \int_set:Nn \l_@@_tmpa_int {3}
- }
- }
-
- \prg_replicate:nn { \l_@@_tmpa_int }
- {
- \tl_set:Nx \l_@@_split_path_b_tl {\tl_tail:N \l_@@_split_path_b_tl}
- \tl_set:Nx \l_@@_split_path_b_tl {\tl_tail:N \l_@@_split_path_b_tl}
-
- \tl_put_right:Nx \l_@@_split_path_a_tl
- {
- \tl_item:Nn \l_@@_split_path_b_tl {1}
- {\tl_item:Nn \l_@@_split_path_b_tl {2}}
- {\tl_item:Nn \l_@@_split_path_b_tl {3}}
- }
-
- \tl_set:Nx \l_@@_split_path_b_tl {\tl_tail:N \l_@@_split_path_b_tl}
- }
-
- \tl_put_left:NV \l_@@_split_path_b_tl \c_spath_moveto_tl
-
- \tl_if_empty:NF \l_@@_split_path_a_tl
+ \seq_map_indexed_inline:Nn \l_@@_tmpa_seq
+ {
+ \seq_map_indexed_inline:Nn \l_@@_tmpa_seq
{
- % Intersect the current segment with the rest of the path
- \spath_intersect:NN \l_@@_split_path_a_tl \l_@@_split_path_b_tl
-
-
- % If we get intersections
- \int_compare:nT {\pgfintersectionsolutions > 0}
+ % Don't intersect a segment with itself
+ \int_compare:nF
{
- % Find the times of the intersections on each path
- \int_step_inline:nnnn {1} {1} {\pgfintersectionsolutions}
- {
- \pgfintersectiongetsolutiontimes{##1}{\l_@@_split_first_tl}{\l_@@_split_second_tl}
- \fp_compare:nT
- {
- \l_@@_split_first_tl < .99
- }
- {
- \tl_set:Nx \l_@@_tmpa_tl {\fp_to_decimal:n {\l_@@_split_first_tl + \l_@@_split_segment_int}}
- \seq_put_right:NV \l_@@_split_first_seq \l_@@_tmpa_tl
- }
- }
+ ##1 == ####1
}
-
- \spath_intersect:NN \l_@@_split_path_b_tl \l_@@_split_path_a_tl
-
- % If we get intersections
- \int_compare:nT {\pgfintersectionsolutions > 0}
{
- % Find the times of the intersections on each path
- \int_step_inline:nnnn {1} {1} {\pgfintersectionsolutions}
+ \spath_intersect:nn {##2} {####2}
+
+ \int_compare:nT {\pgfintersectionsolutions > 0}
{
- \pgfintersectiongetsolutiontimes{##1}{\l_@@_split_first_tl}{\l_@@_split_second_tl}
- \fp_compare:nT
- {
- \l_@@_split_first_tl > .01
- }
+ % Find the times of the intersections on each path
+ \int_step_inline:nnnn {1} {1} {\pgfintersectionsolutions}
{
- \tl_set:Nx \l_@@_tmpa_tl {\fp_to_decimal:n {\l_@@_split_first_tl + \l_@@_split_segment_int + 1}}
- \seq_put_right:NV \l_@@_split_first_seq \l_@@_tmpa_tl
+ \pgfintersectiongetsolutiontimes
+ {########1}{\l_@@_tmpb_tl}{\l_@@_tmpc_tl}
+
+ \bool_if:nT
+ {
+ !(
+ \fp_compare_p:n { \l_@@_tmpb_tl > .99 }
+ &&
+ \int_compare_p:n {##1 + 1 == ####1}
+ )
+ &&
+ !(
+ \fp_compare_p:n { \l_@@_tmpb_tl < .01 }
+ &&
+ \int_compare_p:n {##1 - 1 == ####1}
+ )
+ &&
+ !(
+ \l_@@_closed_bool
+ &&
+ \fp_compare_p:n { \l_@@_tmpb_tl < .01 }
+ &&
+ \int_compare_p:n {##1 == 1}
+ &&
+ \int_compare_p:n {\seq_count:N \l_@@_tmpa_seq == ####1}
+ )
+ &&
+ !(
+ \l_@@_closed_bool
+ &&
+ \fp_compare_p:n { \l_@@_tmpb_tl > .99 }
+ &&
+ \int_compare_p:n {####1 == 1}
+ &&
+ \int_compare_p:n {\seq_count:N \l_@@_tmpa_seq == ##1}
+ )
+ }
+ {
+ \tl_set:Nx \l_@@_tmpa_tl
+ {\fp_to_decimal:n {\l_@@_tmpb_tl + ##1 - 1}}
+ \seq_put_right:NV \l_@@_tmpb_seq \l_@@_tmpa_tl
+ }
}
}
}
-
}
- % Increment the segment counter
- \int_incr:N \l_@@_split_segment_int
}
% Sort the sequence by reverse order along the path
- \seq_sort:Nn \l_@@_split_first_seq
+ \seq_sort:Nn \l_@@_tmpb_seq
{
\fp_compare:nNnTF { ##1 } < { ##2 }
{ \sort_return_swapped: }
{ \sort_return_same: }
}
+ \seq_get_left:NN \l_@@_tmpb_seq \l_@@_tmpa_tl
+ \fp_compare:nT
+ {
+ \l_@@_tmpa_tl > \seq_count:N \l_@@_tmpa_seq - .01
+ }
+ {
+ \bool_set_false:N \l_@@_closed_bool
+ }
+ \seq_get_right:NN \l_@@_tmpb_seq \l_@@_tmpa_tl
+ \fp_compare:nT
+ {
+ \l_@@_tmpa_tl < .01
+ }
+ {
+ \bool_set_false:N \l_@@_closed_bool
+ }
+
% Restore the original copy of the path
- \tl_set_eq:NN \l_@@_split_path_b_tl \l_@@_split_path_b_final_tl
+ \tl_set_eq:NN \l_@@_tmpe_tl \l_@@_tmpg_tl
% Clear the token lists
- \tl_clear:N \l_@@_split_path_b_start_tl
- \tl_clear:N \l_@@_split_path_b_end_tl
- \tl_clear:N \l_@@_split_path_b_final_tl
+ \tl_clear:N \l_@@_tmpf_tl
+ \tl_clear:N \l_@@_tmph_tl
+ \tl_clear:N \l_@@_tmpg_tl
- \tl_set:Nn \l_@@_split_prev_first_tl {-1}
+ \tl_set:Nn \l_@@_tmpi_tl {-1}
- \seq_map_inline:Nn \l_@@_split_first_seq
+ \seq_map_inline:Nn \l_@@_tmpb_seq
{
- \tl_set:Nn \l_@@_split_first_tl {##1}
- \tl_set_eq:NN \l_@@_tmpa_tl \l_@@_split_first_tl
+ \tl_set:Nn \l_@@_tmpb_tl {##1}
+ \tl_set_eq:NN \l_@@_tmpa_tl \l_@@_tmpb_tl
\int_compare:nT
{
- \fp_to_int:n {floor( \l_@@_split_first_tl ) }
+ \fp_to_int:n {floor( \l_@@_tmpb_tl ) }
=
- \fp_to_int:n {floor( \l_@@_split_prev_first_tl) }
+ \fp_to_int:n {floor( \l_@@_tmpi_tl) }
}
{
- \tl_set:Nx \l_@@_split_first_tl
+ \tl_set:Nx \l_@@_tmpb_tl
{
\fp_eval:n {
- floor( \l_@@_split_first_tl )
+ floor( \l_@@_tmpb_tl )
+
- ( \l_@@_split_first_tl - floor( \l_@@_split_first_tl) )
+ ( \l_@@_tmpb_tl - floor( \l_@@_tmpb_tl) )
/
- ( \l_@@_split_prev_first_tl - floor( \l_@@_split_prev_first_tl) )
+ ( \l_@@_tmpi_tl - floor( \l_@@_tmpi_tl) )
}
}
}
- \tl_set_eq:NN \l_@@_split_prev_first_tl \l_@@_tmpa_tl
+ \tl_set_eq:NN \l_@@_tmpi_tl \l_@@_tmpa_tl
- \spath_split_at:NNVV \l_@@_split_path_b_start_tl \l_@@_split_path_b_end_tl \l_@@_split_path_b_tl \l_@@_split_first_tl
+ \spath_split_at:NNVV
+ \l_@@_tmpf_tl
+ \l_@@_tmph_tl
+ \l_@@_tmpe_tl
+ \l_@@_tmpb_tl
- \tl_put_left:NV \l_@@_split_path_b_final_tl \l_@@_split_path_b_end_tl
- \tl_set_eq:NN \l_@@_split_path_b_tl \l_@@_split_path_b_start_tl
+ \tl_put_left:NV \l_@@_tmpg_tl \l_@@_tmph_tl
+ \tl_set_eq:NN \l_@@_tmpe_tl \l_@@_tmpf_tl
}
- \tl_put_left:NV \l_@@_split_path_b_final_tl \l_@@_split_path_b_tl
+ \tl_put_left:NV \l_@@_tmpg_tl \l_@@_tmpe_tl
- \tl_if_empty:NT \l_@@_split_path_b_final_tl
+ \tl_if_empty:NT \l_@@_tmpg_tl
{
- \tl_set_eq:NN \l_@@_split_path_b_final_tl \l_@@_split_path_b_tl
+ \tl_set_eq:NN \l_@@_tmpg_tl \l_@@_tmpe_tl
}
- \spath_remove_empty_components:N \l_@@_split_path_b_final_tl
+ \spath_remove_empty_components:N \l_@@_tmpg_tl
+
+ % Do something with closed
+ \bool_if:NT \l_@@_closed_bool
+ {
+ \spath_join_component:Nn \l_@@_tmpg_tl {1}
+ }
\tl_gclear:N \g_@@_output_tl
- \tl_gset_eq:NN \g_@@_output_tl \l_@@_split_path_b_final_tl
+ \tl_gset_eq:NN \g_@@_output_tl \l_@@_tmpg_tl
+ \group_end:
+}
+\cs_new_protected_nopar:Npn \spath_split_component_at_self_intersections:Nn #1#2
+{
+ \@@_split_component_at_self_intersections:n {#2}
+ \tl_set_eq:NN #1 \g_@@_output_tl
+ \tl_gclear:N \g_@@_output_tl
+}
+\cs_generate_variant:Nn \spath_split_component_at_self_intersections:Nn {NV}
+\cs_new_protected_nopar:Npn \spath_split_component_at_self_intersections:N #1
+{
+ \spath_split_component_at_self_intersections:NV #1#1
+}
+\cs_generate_variant:Nn \spath_split_component_at_self_intersections:N {c}
+\cs_new_protected_nopar:Npn \spath_gsplit_component_at_self_intersections:Nn #1#2
+{
+ \@@_split_component_at_self_intersections:n {#2}
+ \tl_gset_eq:NN #1 \g_@@_output_tl
+ \tl_gclear:N \g_@@_output_tl
+}
+\cs_generate_variant:Nn \spath_gsplit_component_at_self_intersections:Nn {NV}
+\cs_new_protected_nopar:Npn \spath_gsplit_component_at_self_intersections:N #1
+{
+ \spath_gsplit_component_at_self_intersections:NV #1#1
+}
+\cs_generate_variant:Nn \spath_gsplit_component_at_self_intersections:N {c}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[internal]{
+% \spath_split_at_self_intersections:Nn,
+% \spath_split_at_self_intersections:N,
+% \spath_gsplit_at_self_intersections:Nn,
+% \spath_gsplit_at_self_intersections:N,
+% }
+% Split a path at its self intersections.
+% We iterate over the components, splitting each where it meets all the others and itself.
+% To make this more efficient, we split against the components of the original path rather than updating each time.
+%
+% \begin{macrocode}
+\cs_new_protected_nopar:Npn \@@_split_at_self_intersections:n #1
+{
+ \group_begin:
+ \spath_components_to_seq:Nn \l_@@_tmpa_seq {#1}
+ \seq_clear:N \l_@@_tmpb_seq
+ \seq_clear:N \l_@@_tmpc_seq
+
+ % Iterate over the components of the original path.
+ \bool_do_until:nn
+ {
+ \seq_if_empty_p:N \l_@@_tmpa_seq
+ }
+ {
+ % Get the next component
+ \seq_pop_left:NN \l_@@_tmpa_seq \l_@@_tmpa_tl
+ % Copy for later
+ \tl_set_eq:NN \l_@@_tmpc_tl \l_@@_tmpa_tl
+ \int_compare:nT
+ {
+ \tl_count:N \l_@@_tmpa_tl > 3
+ }
+ {
+
+ % Split against itself
+ \spath_split_component_at_self_intersections:N \l_@@_tmpa_tl
+ % Grab the rest of the path
+ \tl_set:Nx \l_@@_tmpb_tl
+ {
+ \seq_use:Nn \l_@@_tmpb_seq {}
+ \seq_use:Nn \l_@@_tmpa_seq {}
+ }
+ % Split against the rest of the path
+ \spath_split_path_at_intersections:NV \l_@@_tmpa_tl \l_@@_tmpb_tl
+ }
+ % Save the split path
+ \seq_put_right:NV \l_@@_tmpc_seq \l_@@_tmpa_tl
+ % Add the original copy to the sequence of processed components
+ \seq_put_right:NV \l_@@_tmpb_seq \l_@@_tmpc_tl
+ }
+
+ \tl_gclear:N \g_@@_output_tl
+ \tl_gset:Nx \g_@@_output_tl {\seq_use:Nn \l_@@_tmpc_seq {} }
\group_end:
}
+\cs_generate_variant:Nn \@@_split_at_self_intersections:n {V, v}
\cs_new_protected_nopar:Npn \spath_split_at_self_intersections:Nn #1#2
{
\@@_split_at_self_intersections:n {#2}
\tl_set_eq:NN #1 \g_@@_output_tl
\tl_gclear:N \g_@@_output_tl
}
-\cs_generate_variant:Nn \spath_split_at_self_intersections:Nn {NV}
+\cs_generate_variant:Nn \spath_split_at_self_intersections:Nn {NV, cn, cV, cv}
\cs_new_protected_nopar:Npn \spath_split_at_self_intersections:N #1
{
\spath_split_at_self_intersections:NV #1#1
@@ -3435,7 +4293,7 @@ manipulating PGF soft paths}
\tl_gset_eq:NN #1 \g_@@_output_tl
\tl_gclear:N \g_@@_output_tl
}
-\cs_generate_variant:Nn \spath_gsplit_at_self_intersections:Nn {NV}
+\cs_generate_variant:Nn \spath_gsplit_at_self_intersections:Nn {NV, cn, cV, cv}
\cs_new_protected_nopar:Npn \spath_gsplit_at_self_intersections:N #1
{
\spath_gsplit_at_self_intersections:NV #1#1
@@ -3444,8 +4302,7 @@ manipulating PGF soft paths}
% \end{macrocode}
% \end{macro}
%
-%
-% \begin{macro}{
+% \begin{macro}[internal]{
% \spath_join_component:Nnn,
% \spath_join_component:Nn,
% \spath_gjoin_component:Nnn,
@@ -3453,58 +4310,76 @@ manipulating PGF soft paths}
% }
% Join the specified component of the spath to its predecessor.
% \begin{macrocode}
-\tl_new:N \l_@@_tmpj_tl
\cs_new_protected_nopar:Npn \@@_join_component:nn #1#2
{
\group_begin:
- \spath_components_to_seq:Nn \l_@@_tmpa_seq {#1}
- \int_compare:nT
- {
- #2 == 1
- }
- {
- \tl_clear:N \l_@@_tmpj_tl
- \seq_pop_left:NN \l_@@_tmpa_seq \l_@@_tmpj_tl
-
- \prg_replicate:nn {3}
- {
- \tl_set:Nx \l_@@_tmpj_tl {\tl_tail:N \l_@@_tmpj_tl}
- }
+ \spath_numberofcomponents:Nn \l_@@_tmpa_int {#1}
- \seq_put_right:NV \l_@@_tmpb_seq \l_@@_tmpj_tl
- }
- \bool_if:nT
+ \bool_if:nTF
{
- \int_compare_p:n
- {
- #2 > 1
- }
+ \int_compare_p:n { #2 >= 1 }
&&
- \int_compare_p:n
- {
- #2 <= \seq_count:N \l_@@_tmpa_seq
- }
+ \int_compare_p:n { #2 <= \l_@@_tmpa_int }
}
{
-
- \seq_clear:N \l_@@_tmpb_seq
- \seq_map_indexed_inline:Nn \l_@@_tmpa_seq
+ \int_compare:nTF
+ {
+ #2 == 1
+ }
{
- \tl_set:Nn \l_@@_tmpj_tl {##2}
- \int_compare:nT {##1 = #2}
+ \int_compare:nTF
+ {
+ \l_@@_tmpa_int == 1
+ }
{
+ \tl_set:Nn \l_@@_tmpa_tl {#1}
+ \spath_initialpoint:Nn \l_@@_tmpb_tl {#1}
+ \tl_put_right:NV \l_@@_tmpa_tl \c_spath_closepath_tl
+ \tl_put_right:NV \l_@@_tmpa_tl \l_@@_tmpb_tl
+ \tl_gclear:N \g_@@_output_tl
+ \tl_gset_eq:NN \g_@@_output_tl \l_@@_tmpa_tl
+ }
+ {
+ \spath_components_to_seq:Nn \l_@@_tmpa_seq {#1}
+ \seq_pop_left:NN \l_@@_tmpa_seq \l_@@_tmpa_tl
+
\prg_replicate:nn {3}
{
- \tl_set:Nx \l_@@_tmpj_tl {\tl_tail:N \l_@@_tmpj_tl}
+ \tl_set:Nx \l_@@_tmpa_tl {\tl_tail:N \l_@@_tmpa_tl}
}
+
+ \seq_put_right:NV \l_@@_tmpa_seq \l_@@_tmpa_tl
+
+ \tl_gclear:N \g_@@_output_tl
+ \tl_gset:Nx \g_@@_output_tl {\seq_use:Nn \l_@@_tmpa_seq {}}
}
- \seq_put_right:NV \l_@@_tmpb_seq \l_@@_tmpj_tl
}
+ {
+ \spath_components_to_seq:Nn \l_@@_tmpa_seq {#1}
+
+ \seq_clear:N \l_@@_tmpb_seq
+ \seq_map_indexed_inline:Nn \l_@@_tmpa_seq
+ {
+ \tl_set:Nn \l_@@_tmpa_tl {##2}
+ \int_compare:nT {##1 = #2}
+ {
+ \prg_replicate:nn {3}
+ {
+ \tl_set:Nx \l_@@_tmpa_tl {\tl_tail:N \l_@@_tmpa_tl}
+ }
+ }
+ \seq_put_right:NV \l_@@_tmpb_seq \l_@@_tmpa_tl
+ }
- \seq_set_eq:NN \l_@@_tmpa_seq \l_@@_tmpb_seq
+ \tl_gclear:N \g_@@_output_tl
+ \tl_gset:Nx \g_@@_output_tl {\seq_use:Nn \l_@@_tmpb_seq {}}
+ }
+ }
+ {
+ \tl_gclear:N \g_@@_output_tl
+ \tl_gset:Nn \g_@@_output_tl {#1}
}
- \tl_gset:Nx \g_@@_output_tl {\seq_use:Nn \l_@@_tmpa_seq {} }
\group_end:
}
\cs_new_protected_nopar:Npn \spath_join_component:Nnn #1#2#3
@@ -3534,7 +4409,7 @@ manipulating PGF soft paths}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{
+% \begin{macro}[internal]{
% \spath_spot_weld_components:Nn,
% \spath_spot_weld_components:N,
% \spath_spot_gweld_components:Nn,
@@ -3562,12 +4437,16 @@ manipulating PGF soft paths}
{
\dim_compare_p:n
{
- \dim_abs:n {\l_@@_move_x_dim - \tl_item:Nn \l_@@_tmpa_tl {2} } < 0.01pt
+ \dim_abs:n
+ {\l_@@_move_x_dim - \tl_item:Nn \l_@@_tmpa_tl {2} }
+ < 0.01pt
}
&&
\dim_compare_p:n
{
- \dim_abs:n {\l_@@_move_y_dim - \tl_item:Nn \l_@@_tmpa_tl {3} } < 0.01pt
+ \dim_abs:n
+ {\l_@@_move_y_dim - \tl_item:Nn \l_@@_tmpa_tl {3} }
+ < 0.01pt
}
}
{
@@ -3595,12 +4474,22 @@ manipulating PGF soft paths}
{
\dim_compare_p:n
{
- \dim_abs:n {\tl_item:Nn \l_@@_tmpa_tl {1} - \tl_item:Nn \l_@@_tmpb_tl {1} } < 0.01pt
+ \dim_abs:n
+ {
+ \tl_item:Nn \l_@@_tmpa_tl {1} - \tl_item:Nn \l_@@_tmpb_tl {1}
+ }
+ <
+ 0.01pt
}
&&
\dim_compare_p:n
{
- \dim_abs:n {\tl_item:Nn \l_@@_tmpa_tl {2} - \tl_item:Nn \l_@@_tmpb_tl {2} } < 0.01pt
+ \dim_abs:n
+ {
+ \tl_item:Nn \l_@@_tmpa_tl {2} - \tl_item:Nn \l_@@_tmpb_tl {2}
+ }
+ <
+ 0.01pt
}
}
{
@@ -3660,7 +4549,7 @@ manipulating PGF soft paths}
%
% \subsection{Exporting Commands}
%
-% \begin{macro}{
+% \begin{macro}[internal]{
% \spath_convert_to_svg:Nn,
% \spath_gconvert_to_svg:Nn,
% }
@@ -3679,7 +4568,7 @@ manipulating PGF soft paths}
\iow_newline:
<svg~ xmlns="http://www.w3.org/2000/svg"~ version="1.1"~viewBox="
}
-
+
\spath_minbb:Nn \l_@@_tmpb_tl {#1}
\spath_maxbb:Nn \l_@@_tmpc_tl {#1}
\tl_put_right:Nx \l_@@_tmpa_tl
@@ -3718,7 +4607,7 @@ manipulating PGF soft paths}
<path~ d="
}
\tl_set:Nn \l_@@_tmpc_tl {use:n}
- \tl_map_inline:Nn #1
+ \tl_map_inline:nn {#1}
{
\tl_set:Nn \l_@@_tmpb_tl {##1}
\tl_case:NnF \l_@@_tmpb_tl
@@ -3751,7 +4640,9 @@ manipulating PGF soft paths}
}
}
{
- \tl_put_right:Nx \l_@@_tmpa_tl {\use:c { \l_@@_tmpc_tl } {\dim_to_decimal:n {##1}} ~}
+ \tl_put_right:Nx
+ \l_@@_tmpa_tl
+ {\use:c { \l_@@_tmpc_tl } {\dim_to_decimal:n {##1}} ~}
}
}
\tl_put_right:Nn \l_@@_tmpa_tl
@@ -3779,7 +4670,7 @@ manipulating PGF soft paths}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{
+% \begin{macro}[internal]{
% \spath_export_to_svg:nn
% }
% Save a soft path to an SVG file.
@@ -3787,18 +4678,21 @@ manipulating PGF soft paths}
\iow_new:N \g_@@_stream
\cs_new_protected_nopar:Npn \spath_export_to_svg:nn #1#2
{
- \spath_convert_path_to_svg:Nn \l_@@_iterp_tl {#2}
+ \group_begin:
+ \spath_convert_to_svg:Nn \l_@@_tmpa_tl {#2}
\iow_open:Nn \g_@@_stream {#1 .svg}
\iow_now:Nx \g_@@_stream
{
- \tl_use:N \l_@@_iterp_tl
+ \tl_use:N \l_@@_tmpa_tl
}
\iow_close:N \g_@@_stream
+ \group_end:
}
+\cs_generate_variant:Nn \spath_export_to_svg:nn {nv, nV}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\spath_show:n}
+% \begin{macro}[internal]{\spath_show:n}
% Displays the soft path on the terminal.
% \begin{macrocode}
\cs_new_protected_nopar:Npn \spath_show:n #1
@@ -3806,9 +4700,9 @@ manipulating PGF soft paths}
\int_step_inline:nnnn {1} {3} {\tl_count:n {#1}}
{
\iow_term:x {
- \tl_item:Nn \l_@@_tmpa_tl {##1}
- {\tl_item:Nn \l_@@_tmpa_tl {##1+1}}
- {\tl_item:Nn \l_@@_tmpa_tl {##1+2}}
+ \tl_item:nn {#1} {##1}
+ {\tl_item:nn {#1} {##1+1}}
+ {\tl_item:nn {#1} {##1+2}}
}
}
}
@@ -3820,7 +4714,7 @@ manipulating PGF soft paths}
%
% Spaths come from PGF so we need some functions that get and set spaths from the pgf system.
%
-% \begin{macro}{
+% \begin{macro}[internal]{
% \spath_get_current_path:N,
% \spath_gget_current_path:N
% }
@@ -3841,7 +4735,7 @@ manipulating PGF soft paths}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\spath_protocol_path:n}
+% \begin{macro}[internal]{\spath_protocol_path:n}
% This feeds the bounding box of the soft path to PGF to ensure that its current bounding box contains the soft path.
% \begin{macrocode}
\cs_new_protected_nopar:Npn \spath_protocol_path:n #1
@@ -3856,7 +4750,7 @@ manipulating PGF soft paths}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{
+% \begin{macro}[internal]{
% \spath_set_current_path:n,
% \spath_set_current_path:N
% }
@@ -3877,7 +4771,7 @@ manipulating PGF soft paths}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{
+% \begin{macro}[internal]{
% \spath_use_path:nn
% }
% Uses the given soft path at the PGF level.
@@ -3890,7 +4784,7 @@ manipulating PGF soft paths}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\spath_tikz_path:nn}
+% \begin{macro}[internal]{\spath_tikz_path:nn}
% Uses the given soft path at the TikZ level.
% \begin{macrocode}
\cs_new_protected_nopar:Npn \spath_tikz_path:nn #1#2
@@ -3904,22 +4798,99 @@ manipulating PGF soft paths}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\spath_set_tikz_coords:n}
+% \begin{macro}[internal]{\spath_set_tikz_data:n}
% Sets the \Verb+\tikz@lastx+ and other coordinates from the soft path.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \spath_set_tikz_coords:n #1
+\cs_new_protected_nopar:Npn \spath_set_tikz_data:n #1
{
\spath_finalpoint:Nn \l_@@_tmpa_tl {#1}
\tl_set:Nx \l_@@_tmpa_tl
{
- \exp_not:c {tikz@lastx}=\tl_item:Nn \l_@@_tmpa_tl {1}
- \exp_not:c {tikz@lasty}=\tl_item:Nn \l_@@_tmpa_tl {2}
- \exp_not:c {tikz@lastxsaved}=\tl_item:Nn \l_@@_tmpa_tl {1}
- \exp_not:c {tikz@lastysaved}=\tl_item:Nn \l_@@_tmpa_tl {2}
+ \exp_not:c {pgf@x}=\tl_item:Nn \l_@@_tmpa_tl {1}
+ \exp_not:c {pgf@y}=\tl_item:Nn \l_@@_tmpa_tl {2}
+ }
+ \use:c {pgf@process}{%
+ \tl_use:N \l_@@_tmpa_tl
+ \pgftransforminvert
+ \use:c {pgf@pos@transform@glob}
+ }
+ \tl_set:Nx \l_@@_tmpa_tl
+ {
+ \exp_not:c {tikz@lastx}=\exp_not:c {pgf@x}
+ \exp_not:c {tikz@lasty}=\exp_not:c {pgf@y}
+ \exp_not:c {tikz@lastxsaved}=\exp_not:c {pgf@x}
+ \exp_not:c {tikz@lastysaved}=\exp_not:c {pgf@y}
}
\tl_use:N \l_@@_tmpa_tl
+ \spath_finalmovepoint:Nn \l_@@_tmpa_tl {#1}
+ \ifpgfsyssoftpathmovetorelevant%
+ \tl_gset_eq:cN {pgfsyssoftpath@lastmoveto} \l_@@_tmpa_tl
+ \fi
+ \tl_set:Nx \l_@@_tmpa_tl
+ {
+ \exp_not:c {pgf@x}=\tl_item:Nn \l_@@_tmpa_tl {1}
+ \exp_not:c {pgf@y}=\tl_item:Nn \l_@@_tmpa_tl {2}
+ }
+ \use:c {pgf@process}{%
+ \tl_use:N \l_@@_tmpa_tl
+ \pgftransforminvert
+ \use:c {pgf@pos@transform@glob}
+ }
+ \tl_set:Nx \l_@@_tmpa_tl
+ {
+ \exp_not:c {tikz@lastmovetox}=\exp_not:c {pgf@x}
+ \exp_not:c {tikz@lastmovetoy}=\exp_not:c {pgf@y}
+ }
+ \tl_use:N \l_@@_tmpa_tl
+ \tl_clear_new:c {tikz@timer}
+ \tl_set:cn {tikz@timer}
+ {
+ \spath_reallength:Nn \l_@@_tmpa_int {#1}
+ \tl_set_eq:Nc \l_@@_tmpb_tl {tikz@time}
+ \tl_set:Nx \l_@@_tmpb_tl
+ {\fp_to_decimal:n {(\l_@@_tmpb_tl) * (\l_@@_tmpa_int)}}
+ \spath_transformation_at:NnV \l_@@_tmpc_tl {#1} \l_@@_tmpb_tl
+
+ \tl_set:Nx \l_@@_tmpa_tl
+ {
+ \exp_not:N \pgfpoint
+ { \tl_item:Nn \l_@@_tmpc_tl {5} }
+ { \tl_item:Nn \l_@@_tmpc_tl {6} }
+ }
+ \exp_args:NV \pgftransformshift \l_@@_tmpa_tl
+
+ \ifpgfresetnontranslationattime
+ \pgftransformresetnontranslations
+ \fi
+
+ \ifpgfslopedattime
+
+ \tl_set:Nx \l_@@_tmpa_tl
+ {
+ { \tl_item:Nn \l_@@_tmpc_tl {1} }
+ { \tl_item:Nn \l_@@_tmpc_tl {2} }
+ { \tl_item:Nn \l_@@_tmpc_tl {3} }
+ { \tl_item:Nn \l_@@_tmpc_tl {4} }
+ }
+ \ifpgfallowupsidedownattime
+ \else
+ \fp_compare:nT { \tl_item:Nn \l_@@_tmpc_tl {4} < 0}
+ {
+ \tl_set:Nx \l_@@_tmpa_tl
+ {
+ { \fp_eval:n { - (\tl_item:Nn \l_@@_tmpc_tl {1})} }
+ { \fp_eval:n { - (\tl_item:Nn \l_@@_tmpc_tl {2})} }
+ { \fp_eval:n { - (\tl_item:Nn \l_@@_tmpc_tl {3})} }
+ { \fp_eval:n { - (\tl_item:Nn \l_@@_tmpc_tl {4})} }
+ }
+ }
+ \fi
+ \tl_put_right:Nn \l_@@_tmpa_tl {{\pgfpointorigin}}
+ \exp_last_unbraced:NV \pgftransformcm \l_@@_tmpa_tl
+ \fi
+ }
}
-\cs_generate_variant:Nn \spath_set_tikz_coords:n {V, v}
+\cs_generate_variant:Nn \spath_set_tikz_data:n {V, v}
% \end{macrocode}
% \end{macro}
%
@@ -3952,6 +4923,13 @@ manipulating PGF soft paths}
\bool_new:N \l_@@_draft_bool
% \end{macrocode}
%
+% We surround all the keys with checks to ensure that the soft path under consideration does actually exist, but if it doesn't we should warn the user.
+%
+% \begin{macrocode}
+\msg_new:nnn { spath3 } { missing soft path } { Soft~ path~ #1~ doesn't~ exist }
+\msg_new:nnn { spath3 } { empty soft path } { Soft~ path~ #1~ is~ empty }
+% \end{macrocode}
+%
% When saving a soft path, by default we use a naming convention that is compatible with the intersections library so that paths saved here and paths saved by the \texttt{name path} facility of the intersections library are mutually exchangeable.
%
% \begin{macrocode}
@@ -3991,6 +4969,34 @@ manipulating PGF soft paths}
\cs_generate_variant:Nn \spath_gsave_path:Nn {cn, NV, cV}
% \end{macrocode}
%
+% \begin{macro}[internal]{
+% \@@_process_tikz_point:Nn
+% }
+% Process a point via TikZ and store the resulting dimensions.
+% \begin{macrocode}
+\cs_new_protected_nopar:Npn \@@_process_tikz_point:Nn #1#2
+{
+ \group_begin:
+ \use:c {tikz@scan@one@point} \use:n #2 \scan_stop:
+ \tl_gset:Nx \g_@@_output_tl
+ {
+ { \dim_use:c {pgf@x} }
+ { \dim_use:c {pgf@y} }
+ }
+ \group_end:
+ \tl_set_eq:NN #1 \g_@@_output_tl
+ \tl_gclear:N \g_@@_output_tl
+}
+% \end{macrocode}
+% \end{macro}
+%
+% When we split a soft path into components, we make it a comma separated list so that it can be fed into a \Verb+\foreach+ loop.
+% This can also make it possible to extract a single component, but to do this we need a wrapper around \Verb+\clist_item:Nn+ (there doesn't appear to be a PGF way of getting an item of a CS list).
+%
+% \begin{macrocode}
+\cs_set_eq:NN \getComponentOf \clist_item:Nn
+% \end{macrocode}
+%
% Now we define all of our keys.
%
% \begin{macrocode}
@@ -4031,11 +5037,14 @@ manipulating PGF soft paths}
\tikz@addmode{
\spath_get_current_path:N \l_@@_tmpa_tl
\spath_bake_round:NV \l_@@_tmpa_tl \l_@@_tmpa_tl
- \spath_save_path:cV {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl} \l_@@_tmpa_tl
+ \spath_save_path:cV
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \l_@@_tmpa_tl
}
},
clone/.code~ 2~ args={
- \tl_if_exist:cT {\tl_use:N \l_@@_prefix_tl #2 \tl_use:N \l_@@_suffix_tl}
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #2 \tl_use:N \l_@@_suffix_tl}
{
\tl_clear_new:c
{\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
@@ -4043,9 +5052,13 @@ manipulating PGF soft paths}
{\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
{\tl_use:N \l_@@_prefix_tl #2 \tl_use:N \l_@@_suffix_tl}
}
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #2 }
+ }
},
clone~ global/.code~ 2~ args={
- \tl_if_exist:cT {\tl_use:N \l_@@_prefix_tl #2 \tl_use:N \l_@@_suffix_tl}
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #2 \tl_use:N \l_@@_suffix_tl}
{
\tl_gclear_new:c
{\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
@@ -4053,6 +5066,9 @@ manipulating PGF soft paths}
{\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
{\tl_use:N \l_@@_prefix_tl #2 \tl_use:N \l_@@_suffix_tl}
}
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #2 }
+ }
},
save~ global/.code={
\tikz@addmode{
@@ -4069,11 +5085,15 @@ manipulating PGF soft paths}
%
% \begin{macrocode}
save~ to~ aux/.code={
- \tl_if_exist:cT {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
{
\spath_save_to_aux:c
{\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
}
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
},
% \end{macrocode}
%
@@ -4081,12 +5101,69 @@ manipulating PGF soft paths}
%
% \begin{macrocode}
restore/.code={
- \tl_if_exist:cT {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
{
- \spath_set_current_path:c
+ \tl_if_empty:cTF
{\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
- \spath_set_tikz_coords:v
+ {
+ \tl_clear:N \l_@@_tmpa_tl
+ \tl_put_right:NV \l_@@_tmpa_tl \c_spath_moveto_tl
+ \tl_put_right:Nn \l_@@_tmpa_tl {{0pt}{0pt}}
+ \spath_set_current_path:V \l_@@_tmpa_tl
+ \spath_set_tikz_data:V \l_@@_tmpa_tl
+ \msg_warning:nnn { spath3 } { empty soft path } { #1 }
+ }
+ {
+ \spath_set_current_path:c
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \spath_set_tikz_data:v
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ }
+ }
+ {
+ \tl_clear:N \l_@@_tmpa_tl
+ \tl_put_right:NV \l_@@_tmpa_tl \c_spath_moveto_tl
+ \tl_put_right:Nn \l_@@_tmpa_tl {{0pt}{0pt}}
+ \spath_set_current_path:V \l_@@_tmpa_tl
+ \spath_set_tikz_data:V \l_@@_tmpa_tl
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
+ },
+% \end{macrocode}
+%
+% Restores the reverse of a soft path to the current path.
+%
+% \begin{macrocode}
+ restore~ reverse/.code={
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {
+ \tl_if_empty:cTF
{\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {
+ \tl_clear:N \l_@@_tmpa_tl
+ \tl_put_right:NV \l_@@_tmpa_tl \c_spath_moveto_tl
+ \tl_put_right:Nn \l_@@_tmpa_tl {{0pt}{0pt}}
+ \spath_set_current_path:V \l_@@_tmpa_tl
+ \spath_set_tikz_data:V \l_@@_tmpa_tl
+ \msg_warning:nnn { spath3 } { empty soft path } { #1 }
+ }
+ {
+ \spath_reverse:Nv
+ \l_@@_reverse_tl
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \spath_set_current_path:N \l_@@_reverse_tl
+ \spath_set_tikz_data:V \l_@@_reverse_tl
+ }
+ }
+ {
+ \tl_clear:N \l_@@_tmpa_tl
+ \tl_put_right:NV \l_@@_tmpa_tl \c_spath_moveto_tl
+ \tl_put_right:Nn \l_@@_tmpa_tl {{0pt}{0pt}}
+ \spath_set_current_path:V \l_@@_tmpa_tl
+ \spath_set_tikz_data:V \l_@@_tmpa_tl
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
}
},
% \end{macrocode}
@@ -4107,10 +5184,22 @@ manipulating PGF soft paths}
%
% \begin{macrocode}
show/.code={
- \tl_if_exist:cT {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {
+ \tl_if_empty:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {
+ \msg_warning:nnn { spath3 } { empty soft path } { #1 }
+ }
+ {
+ \iow_term:n {---~ soft~ path~ #1~ ---}
+ \spath_show:v
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ }
+ }
{
- \iow_term:n {---~ soft~ path~ #1~ ---}
- \spath_show:v {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
}
},
% \end{macrocode}
@@ -4119,14 +5208,21 @@ manipulating PGF soft paths}
%
% \begin{macrocode}
append/.code={
- \tl_if_exist:cT {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
{
\spath_get_current_path:N \l_@@_current_tl
- \spath_weld:Nv
- \l_@@_current_tl
+ \spath_finalpoint:NV \l_@@_tmpa_tl \l_@@_current_tl
+ \tl_set_eq:Nc
+ \l_@@_tmpb_tl
{\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \spath_translate_to:NV \l_@@_tmpb_tl \l_@@_tmpa_tl
+ \spath_append_no_move:NV \l_@@_current_tl \l_@@_tmpb_tl
\spath_set_current_path:N \l_@@_current_tl
- \spath_set_tikz_coords:V \l_@@_current_tl
+ \spath_set_tikz_data:V \l_@@_tmpb_tl
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
}
},
% \end{macrocode}
@@ -4135,14 +5231,22 @@ manipulating PGF soft paths}
%
% \begin{macrocode}
join~ with/.code~ 2~ args={
- \tl_if_exist:cT {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
{
- \tl_if_exist:cT {\tl_use:N \l_@@_prefix_tl #2 \tl_use:N \l_@@_suffix_tl}
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #2 \tl_use:N \l_@@_suffix_tl}
{
\spath_append:cv
{\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
{\tl_use:N \l_@@_prefix_tl #2 \tl_use:N \l_@@_suffix_tl}
}
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #2 }
+ }
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
}
},
% \end{macrocode}
@@ -4151,11 +5255,26 @@ manipulating PGF soft paths}
%
% \begin{macrocode}
spot~ weld/.code={
- \tl_if_exist:cT {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
{
\spath_spot_weld_components:c
{\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
}
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
+ },
+ spot~ weld~ globally/.code={
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {
+ \spath_spot_gweld_components:c
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
},
% \end{macrocode}
%
@@ -4163,11 +5282,26 @@ manipulating PGF soft paths}
%
% \begin{macrocode}
reverse/.code={
- \tl_if_exist:cT {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
{
\spath_reverse:c
{\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
}
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
+ },
+ reverse~ globally/.code={
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {
+ \spath_reverse:c
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
},
% \end{macrocode}
%
@@ -4175,15 +5309,21 @@ manipulating PGF soft paths}
%
% \begin{macrocode}
append~ reverse/.code={
- \tl_if_exist:cT {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
{
\spath_reverse:Nv
\l_@@_reverse_tl
{\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
\spath_get_current_path:N \l_@@_current_tl
- \spath_weld:NV \l_@@_current_tl \l_@@_reverse_tl
+ \spath_finalpoint:NV \l_@@_tmpa_tl \l_@@_current_tl
+ \spath_translate_to:NV \l_@@_reverse_tl \l_@@_tmpa_tl
+ \spath_append_no_move:NV \l_@@_current_tl \l_@@_reverse_tl
\spath_set_current_path:N \l_@@_current_tl
- \spath_set_tikz_coords:V \l_@@_current_tl
+ \spath_set_tikz_data:V \l_@@_reverse_tl
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
}
},
% \end{macrocode}
@@ -4192,14 +5332,19 @@ manipulating PGF soft paths}
%
% \begin{macrocode}
insert/.code={
- \tl_if_exist:cT {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
{
\spath_get_current_path:N \l_@@_current_tl
\spath_append:Nv
\l_@@_current_tl
{\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
\spath_set_current_path:N \l_@@_current_tl
- \spath_set_tikz_coords:V \l_@@_current_tl
+ \spath_set_tikz_data:v
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
}
},
% \end{macrocode}
@@ -4208,7 +5353,8 @@ manipulating PGF soft paths}
%
% \begin{macrocode}
insert~ reverse/.code={
- \tl_if_exist:cT {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
{
\spath_reverse:Nv
\l_@@_reverse_tl
@@ -4216,7 +5362,301 @@ manipulating PGF soft paths}
\spath_get_current_path:N \l_@@_current_tl
\spath_append:NV \l_@@_current_tl \l_@@_reverse_tl
\spath_set_current_path:N \l_@@_current_tl
- \spath_set_tikz_coords:V \l_@@_current_tl
+ \spath_set_tikz_data:V \l_@@_reverse_tl
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
+ },
+% \end{macrocode}
+%
+% Appends the named path to the current path without translating it.
+%
+% \begin{macrocode}
+ append~ no~ move/.code={
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {
+ \spath_get_current_path:N \l_@@_current_tl
+ \spath_append_no_move:Nv
+ \l_@@_current_tl
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \spath_set_current_path:N \l_@@_current_tl
+ \spath_set_tikz_data:v
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
+ },
+% \end{macrocode}
+%
+% Appends the reverse of the named path without translating it.
+%
+% \begin{macrocode}
+ append~ reverse~ no~ move/.code={
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {
+ \spath_reverse:Nv
+ \l_@@_reverse_tl
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \spath_get_current_path:N \l_@@_current_tl
+ \spath_append_no_move:NV \l_@@_current_tl \l_@@_reverse_tl
+ \spath_set_current_path:N \l_@@_current_tl
+ \spath_set_tikz_data:V \l_@@_reverse_tl
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
+ },
+% \end{macrocode}
+%
+% Adjust a path to span between two points.
+%
+% \begin{macrocode}
+ span/.code ~n~ args={3}{
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {
+ \@@_process_tikz_point:Nn \l_@@_tmpa_tl {#2}
+ \@@_process_tikz_point:Nn \l_@@_tmpb_tl {#3}
+ \spath_span:cVV
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \l_@@_tmpa_tl \l_@@_tmpb_tl
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
+ },
+ span~ global/.code ~n~ args={3}{
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {
+ \@@_process_tikz_point:Nn \l_@@_tmpa_tl {#2}
+ \@@_process_tikz_point:Nn \l_@@_tmpb_tl {#3}
+ \spath_gspan:cVV
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \l_@@_tmpa_tl \l_@@_tmpb_tl
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
+ },
+% \end{macrocode}
+%
+% Defines a to path
+%
+% \begin{macrocode}
+ to/.style={
+ to~path={
+ [
+ spath/span={#1}{(\tikztostart)}{(\tikztotarget)},
+ spath/append~no~move={#1},
+ ]
+ \tikztonodes
+ }
+ },
+% \end{macrocode}
+%
+% Splice three paths together, transforming the middle one so that it exactly fits between the first and third.
+%
+% \begin{macrocode}
+ splice/.code ~n~ args={3}{
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #2 \tl_use:N \l_@@_suffix_tl}
+ {
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #3 \tl_use:N \l_@@_suffix_tl}
+ {
+ \spath_splice_between:cvv
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {\tl_use:N \l_@@_prefix_tl #2 \tl_use:N \l_@@_suffix_tl}
+ {\tl_use:N \l_@@_prefix_tl #3 \tl_use:N \l_@@_suffix_tl}
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #3 }
+ }
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #2 }
+ }
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
+ },
+ splice~ global/.code ~n~ args={3}{
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #2 \tl_use:N \l_@@_suffix_tl}
+ {
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #3 \tl_use:N \l_@@_suffix_tl}
+ {
+ \spath_gsplice_between:cvv
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {\tl_use:N \l_@@_prefix_tl #2 \tl_use:N \l_@@_suffix_tl}
+ {\tl_use:N \l_@@_prefix_tl #3 \tl_use:N \l_@@_suffix_tl}
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #3 }
+ }
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #2 }
+ }
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
+ },
+% \end{macrocode}
+%
+% Join the components of a path by splicing in the second path whenever the components are sufficiently far apart.
+%
+% \begin{macrocode}
+ join~ components~ with/.code~2~args={
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #2 \tl_use:N \l_@@_suffix_tl}
+ {
+ \spath_spot_weld_components:c
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+
+ \spath_components_to_seq:Nv
+ \l_@@_tmpa_seq
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+
+ \seq_pop_left:NN \l_@@_tmpa_seq \l_@@_tmpa_tl
+
+ \seq_map_inline:Nn \l_@@_tmpa_seq
+ {
+ \spath_splice_between:Nvn \l_@@_tmpa_tl
+ {\tl_use:N \l_@@_prefix_tl #2 \tl_use:N \l_@@_suffix_tl}
+ {##1}
+ }
+ \tl_set_eq:cN
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \l_@@_tmpa_tl
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #2 }
+ }
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
+ },
+ join~ components~ globally~ with/.code~2~args={
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #2 \tl_use:N \l_@@_suffix_tl}
+ {
+ \spath_spot_gweld_components:c
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+
+ \spath_components_to_seq:Nv
+ \l_@@_tmpa_seq
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+
+ \seq_pop_left:NN \l_@@_tmpa_seq \l_@@_tmpa_tl
+
+ \seq_map_inline:Nn \l_@@_tmpa_seq
+ {
+ \spath_gsplice_between:Nvn \l_@@_tmpa_tl
+ {\tl_use:N \l_@@_prefix_tl #2 \tl_use:N \l_@@_suffix_tl}
+ {##1}
+ }
+ \tl_set_eq:cN
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \l_@@_tmpa_tl
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #2 }
+ }
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
+ },
+% \end{macrocode}
+%
+% Close a path.
+%
+% \begin{macrocode}
+ close/.code={
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {
+ \spath_close:c
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
+ },
+ close~ globally/.code={
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {
+ \spath_gclose:c
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
+ },
+% \end{macrocode}
+%
+% Close a path with another path.
+%
+% \begin{macrocode}
+ close~ with/.code~ 2~ args={
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #2 \tl_use:N \l_@@_suffix_tl}
+ {
+ \spath_close_with:cv
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {\tl_use:N \l_@@_prefix_tl #2 \tl_use:N \l_@@_suffix_tl}
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #2 }
+ }
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
+ },
+ close~ globally~ with/.code~ 2~ args={
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #2 \tl_use:N \l_@@_suffix_tl}
+ {
+ \spath_gclose_with:cv
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {\tl_use:N \l_@@_prefix_tl #2 \tl_use:N \l_@@_suffix_tl}
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #2 }
+ }
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
}
},
% \end{macrocode}
@@ -4225,27 +5665,74 @@ manipulating PGF soft paths}
%
% \begin{macrocode}
shorten~ at~ end/.code~ 2~ args={
- \tl_if_exist:cT {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
{
\spath_shorten_at_end:cn
{\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl} {#2}
}
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
},
shorten~ at~ start/.code~ 2~ args ={
- \tl_if_exist:cT {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
{
\spath_shorten_at_start:cn
{\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl} {#2}
}
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
},
shorten~ at~ both~ ends/.code~ 2~ args={
- \tl_if_exist:cT {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
{
\spath_shorten_at_end:cn
{\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl} {#2}
\spath_shorten_at_start:cn
{\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl} {#2}
}
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
+ },
+ shorten~ globally~ at~ end/.code~ 2~ args={
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {
+ \spath_gshorten_at_end:cn
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl} {#2}
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
+ },
+ shorten~ globally~ at~ start/.code~ 2~ args ={
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {
+ \spath_gshorten_at_start:cn
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl} {#2}
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
+ },
+ shorten~ globally~ at~ both~ ends/.code~ 2~ args={
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {
+ \spath_shorten_at_end:cn
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl} {#2}
+ \spath_shorten_at_start:cn
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl} {#2}
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
},
% \end{macrocode}
%
@@ -4253,11 +5740,53 @@ manipulating PGF soft paths}
%
% \begin{macrocode}
translate/.code~ n~ args={3}{
- \tl_if_exist:cT {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
{
\spath_translate:cnn
{\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}{#2}{#3}
}
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
+ },
+ translate~ globally/.code~ n~ args={3}{
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {
+ \spath_gtranslate:cnn
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}{#2}{#3}
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
+ },
+% \end{macrocode}
+%
+% This normalises the named path.
+%
+% \begin{macrocode}
+ normalise/.code={
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {
+ \spath_normalise:c
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
+ },
+ normalise~ globally/.code={
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {
+ \spath_gnormalise:c
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
},
% \end{macrocode}
%
@@ -4265,11 +5794,15 @@ manipulating PGF soft paths}
%
% \begin{macrocode}
export~ to~ svg/.code={
- \tl_if_exist:cT {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
{
- \spath_export_to_svg:c
+ \spath_export_to_svg:nv {#1}
{\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
}
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
},
% \end{macrocode}
%
@@ -4277,7 +5810,8 @@ manipulating PGF soft paths}
%
% \begin{macrocode}
transform/.code~ 2~ args={
- \tl_if_exist:cT {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
{
\group_begin:
\pgftransformreset
@@ -4292,9 +5826,13 @@ manipulating PGF soft paths}
\group_end:
\tl_use:N \g_@@_smuggle_tl
}
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
},
- transform~global/.code~ 2~ args={
- \tl_if_exist:cT {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ transform~globally/.code~ 2~ args={
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
{
\group_begin:
\pgftransformreset
@@ -4309,6 +5847,52 @@ manipulating PGF soft paths}
\group_end:
\tl_use:N \g_@@_smuggle_tl
}
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
+ },
+% \end{macrocode}
+%
+% Splits first path where it intersects with the second.
+%
+% \begin{macrocode}
+ split~ at~ intersections~ with/.code~ n~ args={2}{
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #2 \tl_use:N \l_@@_suffix_tl}
+ {
+ \spath_split_path_at_intersections:cv
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {\tl_use:N \l_@@_prefix_tl #2 \tl_use:N \l_@@_suffix_tl}
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #2 }
+ }
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
+ },
+ split~ globally~ at~ intersections~ with/.code~ n~ args={2}{
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #2 \tl_use:N \l_@@_suffix_tl}
+ {
+ \spath_gsplit_path_at_intersections:cv
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {\tl_use:N \l_@@_prefix_tl #2 \tl_use:N \l_@@_suffix_tl}
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #2 }
+ }
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
},
% \end{macrocode}
%
@@ -4316,14 +5900,41 @@ manipulating PGF soft paths}
%
% \begin{macrocode}
split~ at~ intersections/.code~ n~ args={2}{
- \tl_if_exist:cT {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
{
- \tl_if_exist:cT {\tl_use:N \l_@@_prefix_tl #2 \tl_use:N \l_@@_suffix_tl}
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #2 \tl_use:N \l_@@_suffix_tl}
{
\spath_split_at_intersections:cc
{\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
{\tl_use:N \l_@@_prefix_tl #2 \tl_use:N \l_@@_suffix_tl}
}
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #2 }
+ }
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
+ },
+ split~ globally~ at~ intersections/.code~ n~ args={2}{
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #2 \tl_use:N \l_@@_suffix_tl}
+ {
+ \spath_gsplit_at_intersections:cc
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {\tl_use:N \l_@@_prefix_tl #2 \tl_use:N \l_@@_suffix_tl}
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #2 }
+ }
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
}
},
% \end{macrocode}
@@ -4332,11 +5943,26 @@ manipulating PGF soft paths}
%
% \begin{macrocode}
split~ at~ self~ intersections/.code={
- \tl_if_exist:cT {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
{
\spath_split_at_self_intersections:c
{\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
}
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
+ },
+ split~ globally~ at~ self~ intersections/.code={
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {
+ \spath_gsplit_at_self_intersections:c
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
},
% \end{macrocode}
%
@@ -4344,7 +5970,8 @@ manipulating PGF soft paths}
%
% \begin{macrocode}
get~ components~ of/.code~ 2~ args={
- \tl_if_exist:cT {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
{
\clist_clear_new:N #2
\spath_components_to_seq:Nv
@@ -4353,13 +5980,54 @@ manipulating PGF soft paths}
\seq_map_inline:Nn \l_@@_tmpa_seq
{
\tl_new:c
- {\tl_use:N \l_@@_prefix_tl anonymous_\int_use:N \g_@@_anon_int \tl_use:N \l_@@_suffix_tl}
+ {
+ \tl_use:N \l_@@_prefix_tl
+ anonymous_\int_use:N \g_@@_anon_int
+ \tl_use:N \l_@@_suffix_tl
+ }
\tl_set:cn
- {\tl_use:N \l_@@_prefix_tl anonymous_\int_use:N \g_@@_anon_int \tl_use:N \l_@@_suffix_tl} {##1}
+ {
+ \tl_use:N \l_@@_prefix_tl
+ anonymous_\int_use:N \g_@@_anon_int
+ \tl_use:N \l_@@_suffix_tl
+ } {##1}
\clist_put_right:Nx #2 {anonymous_\int_use:N \g_@@_anon_int}
\int_gincr:N \g_@@_anon_int
}
}
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
+ },
+ get~ components~ of~ globally/.code~ 2~ args={
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {
+ \clist_gclear_new:N #2
+ \spath_components_to_seq:Nv
+ \l_@@_tmpa_seq
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \seq_map_inline:Nn \l_@@_tmpa_seq
+ {
+ \tl_new:c
+ {
+ \tl_use:N \l_@@_prefix_tl
+ anonymous_\int_use:N \g_@@_anon_int
+ \tl_use:N \l_@@_suffix_tl
+ }
+ \tl_gset:cn
+ {
+ \tl_use:N \l_@@_prefix_tl
+ anonymous_\int_use:N \g_@@_anon_int
+ \tl_use:N \l_@@_suffix_tl
+ } {##1}
+ \clist_gput_right:Nx #2 {anonymous_\int_use:N \g_@@_anon_int}
+ \int_gincr:N \g_@@_anon_int
+ }
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
},
% \end{macrocode}
%
@@ -4367,7 +6035,8 @@ manipulating PGF soft paths}
%
% \begin{macrocode}
render~ components/.code={
- \tl_if_exist:cT {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
{
\group_begin:
\spath_components_to_seq:Nv
@@ -4390,6 +6059,9 @@ manipulating PGF soft paths}
}
\group_end:
}
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
},
% \end{macrocode}
%
@@ -4398,15 +6070,24 @@ manipulating PGF soft paths}
%
% \begin{macrocode}
insert~ gaps~ after~ components/.code~ n~ args={3}{
- \tl_if_exist:cT {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
{
\group_begin:
\seq_gclear:N \g_@@_tmpa_seq
\seq_gclear:N \g_@@_tmpb_seq
+ \spath_numberofcomponents:Nv \l_@@_tmpa_int
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
\foreach \l_@@_tmpa_tl in {#3}
{
\seq_gput_right:NV \g_@@_tmpa_seq \l_@@_tmpa_tl
- \seq_gput_right:Nx \g_@@_tmpb_seq {\int_eval:n { \l_@@_tmpa_tl + 1 }}
+ \seq_gput_right:Nx
+ \g_@@_tmpb_seq
+ {\int_eval:n
+ {
+ \int_mod:nn { \l_@@_tmpa_tl }{ \l_@@_tmpa_int } + 1
+ }
+ }
}
\spath_components_to_seq:Nv
\l_@@_tmpa_seq
@@ -4432,6 +6113,58 @@ manipulating PGF soft paths}
\g_@@_output_tl
\tl_gclear:N \g_@@_output_tl
}
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
+ },
+ insert~ gaps~ globally~ after~ components/.code~ n~ args={3}{
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {
+ \group_begin:
+ \seq_gclear:N \g_@@_tmpa_seq
+ \seq_gclear:N \g_@@_tmpb_seq
+ \spath_numberofcomponents:Nv \l_@@_tmpa_int
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \foreach \l_@@_tmpa_tl in {#3}
+ {
+ \seq_gput_right:NV \g_@@_tmpa_seq \l_@@_tmpa_tl
+ \seq_gput_right:Nx
+ \g_@@_tmpb_seq
+ {
+ \int_eval:n
+ {
+ \int_mod:nn { \l_@@_tmpa_tl }{ \l_@@_tmpa_int } + 1
+ }
+ }
+ }
+ \spath_components_to_seq:Nv
+ \l_@@_tmpa_seq
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \seq_clear:N \l_@@_tmpb_seq
+ \seq_map_indexed_inline:Nn \l_@@_tmpa_seq
+ {
+ \tl_set:Nn \l_@@_tmpa_tl {##2}
+ \seq_if_in:NnT \g_@@_tmpa_seq {##1}
+ {
+ \spath_shorten_at_end:Nn \l_@@_tmpa_tl {#2/2}
+ }
+ \seq_if_in:NnT \g_@@_tmpb_seq {##1}
+ {
+ \spath_shorten_at_start:Nn \l_@@_tmpa_tl {#2/2}
+ }
+ \seq_put_right:NV \l_@@_tmpb_seq \l_@@_tmpa_tl
+ }
+ \tl_gset:Nx \g_@@_output_tl {\seq_use:Nn \l_@@_tmpb_seq {} }
+ \group_end:
+ \tl_gset_eq:cN
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \g_@@_output_tl
+ \tl_gclear:N \g_@@_output_tl
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
},
% \end{macrocode}
%
@@ -4439,7 +6172,8 @@ manipulating PGF soft paths}
%
% \begin{macrocode}
join~ components/.code~ 2~ args={
- \tl_if_exist:cT {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
{
\seq_gclear:N \g_@@_tmpa_seq
\foreach \l_@@_tmpa_tl in {#2}
@@ -4458,6 +6192,34 @@ manipulating PGF soft paths}
{\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}{##1}
}
}
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
+ },
+ join~ components~ globally/.code~ 2~ args={
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {
+ \seq_gclear:N \g_@@_tmpa_seq
+ \foreach \l_@@_tmpa_tl in {#2}
+ {
+ \seq_gput_right:NV \g_@@_tmpa_seq \l_@@_tmpa_tl
+ }
+ \seq_gsort:Nn \g_@@_tmpa_seq
+ {
+ \int_compare:nNnTF {##1} > {##2}
+ { \sort_return_same: }
+ { \sort_return_swapped: }
+ }
+ \seq_map_inline:Nn \g_@@_tmpa_seq
+ {
+ \spath_gjoin_component:cn
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}{##1}
+ }
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
},
% \end{macrocode}
%
@@ -4465,14 +6227,123 @@ manipulating PGF soft paths}
%
% \begin{macrocode}
remove~ empty~ components/.code={
- \tl_if_exist:cT {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
{
\spath_remove_empty_components:c
{\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
}
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
+ },
+ remove~ empty~ components~ globally/.code={
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {
+ \spath_gremove_empty_components:c
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
},
% \end{macrocode}
%
+%
+% Join the specified components together, joining each to its previous one.
+%
+% \begin{macrocode}
+ remove~ components/.code~ 2~ args={
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {
+ \seq_gclear:N \g_@@_tmpa_seq
+ \foreach \l_@@_tmpa_tl in {#2}
+ {
+ \seq_gput_right:NV \g_@@_tmpa_seq \l_@@_tmpa_tl
+ }
+ \seq_gsort:Nn \g_@@_tmpa_seq
+ {
+ \int_compare:nNnTF {##1} < {##2}
+ { \sort_return_same: }
+ { \sort_return_swapped: }
+ }
+ \spath_components_to_seq:Nv
+ \l_@@_tmpa_seq
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \seq_gpop_left:NNF \g_@@_tmpa_seq \l_@@_tmpa_tl
+ {
+ \tl_clear:N \l_@@_tmpa_tl
+ }
+ \seq_clear:N \l_@@_tmpb_seq
+ \seq_map_indexed_inline:Nn \l_@@_tmpa_seq
+ {
+ \tl_set:Nn \l_@@_tmpb_tl {##1}
+ \tl_if_eq:NNTF \l_@@_tmpb_tl \l_@@_tmpa_tl
+ {
+ \seq_gpop_left:NNF \g_@@_tmpa_seq \l_@@_tmpa_tl
+ {
+ \tl_clear:N \l_@@_tmpa_tl
+ }
+ }
+ {
+ \seq_put_right:Nn \l_@@_tmpb_seq {##2}
+ }
+ }
+ \tl_set:cx {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {\seq_use:Nn \l_@@_tmpb_seq {} }
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
+ },
+ remove~ components~ globally/.code~ 2~ args={
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {
+ \seq_gclear:N \g_@@_tmpa_seq
+ \foreach \l_@@_tmpa_tl in {#2}
+ {
+ \seq_gput_right:NV \g_@@_tmpa_seq \l_@@_tmpa_tl
+ }
+ \seq_gsort:Nn \g_@@_tmpa_seq
+ {
+ \int_compare:nNnTF {##1} < {##2}
+ { \sort_return_same: }
+ { \sort_return_swapped: }
+ }
+ \spath_components_to_seq:Nv
+ \l_@@_tmpa_seq
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \seq_gpop_left:NNF \g_@@_tmpa_seq \l_@@_tmpa_tl
+ {
+ \tl_clear:N \l_@@_tmpa_tl
+ }
+ \seq_clear:N \l_@@_tmpb_seq
+ \seq_map_indexed_inline:Nn \l_@@_tmpa_seq
+ {
+ \tl_set:Nn \l_@@_tmpb_tl {##1}
+ \tl_if_eq:NNTF \l_@@_tmpb_tl \l_@@_tmpa_tl
+ {
+ \seq_gpop_left:NNF \g_@@_tmpa_seq \l_@@_tmpa_tl
+ {
+ \tl_clear:N \l_@@_tmpa_tl
+ }
+ }
+ {
+ \seq_put_right:Nn \l_@@_tmpb_seq {##2}
+ }
+ }
+ \tl_gset:cx {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {\seq_use:Nn \l_@@_tmpb_seq {} }
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
+ },
+% \end{macrocode}
+%
% This puts a conditional around the \texttt{spot weld} key because when figuring out a knot drawing then we will initially want to render it without the spot weld to keep the number of components constant.
%
% \begin{macrocode}
@@ -4486,11 +6357,29 @@ manipulating PGF soft paths}
maybe~ spot~ weld/.code={
\bool_if:NF \l_@@_draft_bool
{
- \tl_if_exist:cT {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
{
\spath_spot_weld_components:c
{\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
}
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
+ }
+ },
+ maybe~ spot~ weld~ globally/.code={
+ \bool_if:NF \l_@@_draft_bool
+ {
+ \tl_if_exist:cTF
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ {
+ \spath_spot_gweld_components:c
+ {\tl_use:N \l_@@_prefix_tl #1 \tl_use:N \l_@@_suffix_tl}
+ }
+ {
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
+ }
}
},
% \end{macrocode}
@@ -4527,6 +6416,7 @@ manipulating PGF soft paths}
\tl_gset_eq:NN \g_@@_smuggle_tl \l_@@_tmpc_tl
}
{
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
\tl_gset_eq:NN \g_@@_smuggle_tl { {1}{0}{0}{1}{0pt}{0pt} }
}
\group_end:
@@ -4567,6 +6457,7 @@ manipulating PGF soft paths}
\tl_gset_eq:NN \g_@@_smuggle_tl \l_@@_tmpc_tl
}
{
+ \msg_warning:nnn { spath3 } { missing soft path } { #1 }
\tl_gset_eq:NN \g_@@_smuggle_tl { {1}{0}{0}{1}{0pt}{0pt} }
}
\fp_compare:nT { \tl_item:Nn \g_@@_smuggle_tl {4} < 0}
@@ -4591,11 +6482,18 @@ manipulating PGF soft paths}
%
% \begin{macrocode}
knot/.style~ n~ args={3}{
- spath/.cd,
- split~ at~ self~ intersections=#1,
- insert~ gaps~ after~ components={#1}{#2}{#3},
- maybe~ spot~ weld=#1,
- render~ components=#1
+ spath/split~ at~ self~ intersections=#1,
+ spath/remove~ empty~ components=#1,
+ spath/insert~ gaps~ after~ components={#1}{#2}{#3},
+ spath/maybe~ spot~ weld=#1,
+ spath/render~ components=#1
+ },
+ global~ knot/.style~ n~ args={3}{
+ spath/split~ globally~ at~ self~ intersections=#1,
+ spath/remove~ empty~ components~ globally=#1,
+ spath/insert~ gaps~ globally ~after~ components={#1}{#2}{#3},
+ spath/maybe~ spot~ weld~ globally=#1,
+ spath/render~ components=#1
},
}
% \end{macrocode}
@@ -4649,10 +6547,15 @@ manipulating PGF soft paths}
}
}
{
+ \msg_warning:nnx { spath3 } { missing soft path } { \tl_use:N \l_@@_tmpa_tl }
\tl_gset_eq:NN \g_@@_smuggle_tl \pgfpointorigin
}
- \group_end:
+ \group_end:
+ \use:c {pgf@process}{%
\tl_use:N \g_@@_smuggle_tl
+ \pgftransforminvert
+ \use:c {pgf@pos@transform@glob}
+ }
}
\ExplSyntaxOff
@@ -4733,7 +6636,8 @@ manipulating PGF soft paths}
\pgfsyssoftpath@getcurrentpath\l_@@_tmpa_tl
\spath_components_to_seq:NV \l_@@_tmpa_seq \l_@@_tmpa_tl
\seq_gclear_new:c {g_@@_pen_\pgfkeysvalueof{/tikz/pen~name}_seq}
- \seq_gset_eq:cN {g_@@_pen_\pgfkeysvalueof{/tikz/pen~name}_seq} \l_@@_tmpa_seq
+ \seq_gset_eq:cN
+ {g_@@_pen_\pgfkeysvalueof{/tikz/pen~name}_seq} \l_@@_tmpa_seq
\pgfusepath{discard}%
}
},
@@ -4747,10 +6651,12 @@ manipulating PGF soft paths}
\spath_components_to_seq:NV \l_@@_tmpa_seq \l_@@_tmpa_tl
\tl_if_exist:cTF {g_@@_pen_\pgfkeysvalueof{/tikz/pen~name}_seq}
{
- \cal_path_create:Nc \l_@@_tmpa_seq {g_@@_pen_\pgfkeysvalueof{/tikz/pen~name}_seq}
+ \cal_path_create:Nc \l_@@_tmpa_seq
+ {g_@@_pen_\pgfkeysvalueof{/tikz/pen~name}_seq}
}
{
- \msg_warning:nnx { calligraphy } { undefined pen } { \pgfkeysvalueof{/tikz/pen~name} }
+ \msg_warning:nnx { calligraphy } { undefined pen }
+ { \pgfkeysvalueof{/tikz/pen~name} }
}
}
},
@@ -4823,8 +6729,10 @@ manipulating PGF soft paths}
\tl_set:cn {l_@@_stroke_style_#1} {#2}
},
this~stroke~style/.code={
- \tl_clear_new:c {l_@@_stroke_inline_style_ \int_use:N \g_@@_path_component_int}
- \tl_set:cn {l_@@_stroke_inline_style_ \int_use:N \g_@@_path_component_int} {#1}
+ \tl_clear_new:c
+ {l_@@_stroke_inline_style_ \int_use:N \g_@@_path_component_int}
+ \tl_set:cn
+ {l_@@_stroke_inline_style_ \int_use:N \g_@@_path_component_int} {#1}
},
annotate/.style={
annotate~if,
@@ -4944,23 +6852,29 @@ manipulating PGF soft paths}
\spath_weld:NV \l_@@_tmp_patha_tl \l_@@_tmp_rpathb_tl
\tl_clear:N \l_@@_tmpa_tl
- \tl_set:Nn \l_@@_tmpa_tl {fill=\pgfkeysvalueof{/tikz/pen~colour},draw=none}
+ \tl_set:Nn \l_@@_tmpa_tl
+ {
+ fill=\pgfkeysvalueof{/tikz/pen~colour},
+ draw=none
+ }
\tl_if_exist:cT {l_@@_stroke_style_ \int_use:N \l_@@_tmpa_int}
{
- \tl_put_right:Nv \l_@@_tmpa_tl {l_@@_stroke_style_ \int_use:N \l_@@_tmpa_int}
+ \tl_put_right:Nv \l_@@_tmpa_tl
+ {l_@@_stroke_style_ \int_use:N \l_@@_tmpa_int}
}
\tl_if_exist:cT {l_@@_stroke_inline_style_ \int_use:N \l_@@_tmpa_int}
{
\tl_put_right:Nn \l_@@_tmpa_tl {,}
- \tl_put_right:Nv \l_@@_tmpa_tl {l_@@_stroke_inline_style_ \int_use:N \l_@@_tmpa_int}
+ \tl_put_right:Nv \l_@@_tmpa_tl
+ {l_@@_stroke_inline_style_ \int_use:N \l_@@_tmpa_int}
}
\tl_if_exist:cT {l_@@_nib_style_ \int_use:N \l_@@_tmpb_int}
{
\tl_put_right:Nn \l_@@_tmpa_tl {,}
- \tl_put_right:Nv \l_@@_tmpa_tl {l_@@_nib_style_ \int_use:N \l_@@_tmpb_int}
+ \tl_put_right:Nv \l_@@_tmpa_tl
+ {l_@@_nib_style_ \int_use:N \l_@@_tmpb_int}
}
\spath_tikz_path:VV \l_@@_tmpa_tl \l_@@_tmp_patha_tl
-
}
\pgfsys@endscope
\group_end:
@@ -4971,7 +6885,9 @@ manipulating PGF soft paths}
\seq_get_right:NN #2 \l_@@_tmpa_tl
\spath_finalpoint:NV \l_@@_tmpa_tl \l_@@_tmpa_tl
\spath_translate:NV \l_@@_tmp_path_tl \l_@@_tmpa_tl
- \tikz@scan@one@point\pgfutil@firstofone\pgfkeysvalueof{/tikz/annotation~shift}
+ \tikz@scan@one@point
+ \pgfutil@firstofone
+ \pgfkeysvalueof{/tikz/annotation~shift}
\spath_translate:Nnn \l_@@_tmp_path_tl {\pgf@x} {\pgf@y}
@@ -4982,7 +6898,10 @@ manipulating PGF soft paths}
\exp_last_unbraced:NV \pgfqpoint \l_@@_tmpa_tl
\begin{scope}[reset~ cm]
- \node[every~annotation~node/.try,tl~use:c = {l_@@_annotation_style_ \int_use:N \l_@@_tmpa_int _tl}] at (\pgf@x,\pgf@y) {\int_use:N \l_@@_tmpa_int};
+ \node[
+ every~annotation~node/.try,
+ tl~use:c = {l_@@_annotation_style_ \int_use:N \l_@@_tmpa_int _tl}
+ ] at (\pgf@x,\pgf@y) {\int_use:N \l_@@_tmpa_int};
\end{scope}
}
}
@@ -5191,8 +7110,18 @@ manipulating PGF soft paths}
(\l_@@_tmpa_fp^2 + \l_@@_tmpb_fp^2)^.5
}
- \fp_set:Nn \l_@@_tmpa_fp {.5*\l_@@_taper_width_dim * \l_@@_tmpa_fp / \l_@@_tmpe_fp}
- \fp_set:Nn \l_@@_tmpb_fp {.5*\l_@@_taper_width_dim * \l_@@_tmpb_fp / \l_@@_tmpe_fp}
+ \fp_set:Nn \l_@@_tmpa_fp
+ {
+ .5*\l_@@_taper_width_dim
+ *
+ \l_@@_tmpa_fp / \l_@@_tmpe_fp
+ }
+ \fp_set:Nn \l_@@_tmpb_fp
+ {
+ .5*\l_@@_taper_width_dim
+ *
+ \l_@@_tmpb_fp / \l_@@_tmpe_fp
+ }
\fp_set:Nn \l_@@_tmpc_fp
{
@@ -5207,13 +7136,23 @@ manipulating PGF soft paths}
(\l_@@_tmpc_fp^2 + \l_@@_tmpd_fp^2)^.5
}
- \fp_set:Nn \l_@@_tmpc_fp {.5*\l_@@_line_width_dim * \l_@@_tmpc_fp / \l_@@_tmpe_fp}
- \fp_set:Nn \l_@@_tmpd_fp {.5*\l_@@_line_width_dim * \l_@@_tmpd_fp / \l_@@_tmpe_fp}
+ \fp_set:Nn \l_@@_tmpc_fp
+ {
+ .5*\l_@@_line_width_dim
+ *
+ \l_@@_tmpc_fp / \l_@@_tmpe_fp
+ }
+ \fp_set:Nn \l_@@_tmpd_fp
+ {
+ .5*\l_@@_line_width_dim
+ *
+ \l_@@_tmpd_fp / \l_@@_tmpe_fp
+ }
\tl_put_right:Nx \l_@@_tmpb_tl
{
{\dim_eval:n { \fp_to_dim:N \l_@@_tmpa_fp + \l_@@_tmpa_dim}}
- {\dim_eval:n { \fp_to_dim:N \l_@@_tmpb_fp + \l_@@_tmpb_dim}}
+ {\dim_eval:n { \fp_to_dim:N \l_@@_tmpb_fp + \l_@@_tmpb_dim}}
}
\tl_put_right:NV \l_@@_tmpb_tl \c_spath_curvetoa_tl
@@ -5244,16 +7183,44 @@ manipulating PGF soft paths}
\tl_put_right:Nx \l_@@_tmpb_tl
{
- {\dim_eval:n { \fp_to_dim:N \l_@@_tmpc_fp + \l_@@_tmpg_dim - \fp_to_dim:n{ 1.32 * \l_@@_tmpd_fp}}}
- {\dim_eval:n { \fp_to_dim:N \l_@@_tmpd_fp + \l_@@_tmph_dim + \fp_to_dim:n {1.32* \l_@@_tmpc_fp}}}
+ {
+ \dim_eval:n
+ {
+ \fp_to_dim:N \l_@@_tmpc_fp + \l_@@_tmpg_dim
+ - \fp_to_dim:n{ 1.32 * \l_@@_tmpd_fp
+ }
+ }
+ }
+ {
+ \dim_eval:n
+ {
+ \fp_to_dim:N \l_@@_tmpd_fp + \l_@@_tmph_dim
+ + \fp_to_dim:n {1.32* \l_@@_tmpc_fp
+ }
+ }
+ }
}
\tl_put_right:NV \l_@@_tmpb_tl \c_spath_curvetob_tl
\tl_put_right:Nx \l_@@_tmpb_tl
{
- {\dim_eval:n { -\fp_to_dim:N \l_@@_tmpc_fp + \l_@@_tmpg_dim - \fp_to_dim:n {1.32 * \l_@@_tmpd_fp}}}
- {\dim_eval:n { -\fp_to_dim:N \l_@@_tmpd_fp + \l_@@_tmph_dim + \fp_to_dim:n {1.32 * \l_@@_tmpc_fp}}}
+ {
+ \dim_eval:n
+ {
+ -\fp_to_dim:N \l_@@_tmpc_fp + \l_@@_tmpg_dim
+ - \fp_to_dim:n {1.32 * \l_@@_tmpd_fp
+ }
+ }
+ }
+ {
+ \dim_eval:n
+ {
+ -\fp_to_dim:N \l_@@_tmpd_fp + \l_@@_tmph_dim
+ + \fp_to_dim:n {1.32 * \l_@@_tmpc_fp
+ }
+ }
+ }
}
\tl_put_right:NV \l_@@_tmpb_tl \c_spath_curveto_tl
@@ -5292,16 +7259,40 @@ manipulating PGF soft paths}
\tl_put_right:Nx \l_@@_tmpb_tl
{
- {\dim_eval:n { -\fp_to_dim:N \l_@@_tmpa_fp + \l_@@_tmpa_dim + \fp_to_dim:n{ 1.32 * \l_@@_tmpb_fp}}}
- {\dim_eval:n { -\fp_to_dim:N \l_@@_tmpb_fp + \l_@@_tmpb_dim - \fp_to_dim:n {1.32* \l_@@_tmpa_fp}}}
+ {
+ \dim_eval:n
+ {
+ -\fp_to_dim:N \l_@@_tmpa_fp + \l_@@_tmpa_dim
+ + \fp_to_dim:n{ 1.32 * \l_@@_tmpb_fp}
+ }
+ }
+ {
+ \dim_eval:n
+ {
+ -\fp_to_dim:N \l_@@_tmpb_fp + \l_@@_tmpb_dim
+ - \fp_to_dim:n {1.32* \l_@@_tmpa_fp}
+ }
+ }
}
\tl_put_right:NV \l_@@_tmpb_tl \c_spath_curvetob_tl
\tl_put_right:Nx \l_@@_tmpb_tl
{
- {\dim_eval:n { \fp_to_dim:N \l_@@_tmpa_fp + \l_@@_tmpa_dim + \fp_to_dim:n {1.32 * \l_@@_tmpb_fp}}}
- {\dim_eval:n { \fp_to_dim:N \l_@@_tmpb_fp + \l_@@_tmpb_dim - \fp_to_dim:n {1.32 * \l_@@_tmpa_fp}}}
+ {
+ \dim_eval:n
+ {
+ \fp_to_dim:N \l_@@_tmpa_fp + \l_@@_tmpa_dim
+ + \fp_to_dim:n {1.32 * \l_@@_tmpb_fp}
+ }
+ }
+ {
+ \dim_eval:n
+ {
+ \fp_to_dim:N \l_@@_tmpb_fp + \l_@@_tmpb_dim
+ - \fp_to_dim:n {1.32 * \l_@@_tmpa_fp}
+ }
+ }
}
\tl_put_right:NV \l_@@_tmpb_tl \c_spath_curveto_tl
@@ -5309,7 +7300,7 @@ manipulating PGF soft paths}
\tl_put_right:Nx \l_@@_tmpb_tl
{
{\dim_eval:n { \fp_to_dim:N \l_@@_tmpa_fp + \l_@@_tmpa_dim}}
- {\dim_eval:n { \fp_to_dim:N \l_@@_tmpb_fp + \l_@@_tmpb_dim}}
+ {\dim_eval:n { \fp_to_dim:N \l_@@_tmpb_fp + \l_@@_tmpb_dim}}
}
\pgfsyssoftpath@setcurrentpath\l_@@_tmpb_tl
@@ -5327,7 +7318,7 @@ manipulating PGF soft paths}
\seq_gset_eq:NN \g_@@_pen_copperplate_seq \l_@@_tmpa_seq
% \end{macrocode}
%
-% \begin{macro}{\CopperplatePath}
+% \begin{macro}[internal]{\CopperplatePath}
% This is used in the decorations section to convert a path to a copperplate path.
% \begin{macrocode}
\DeclareDocumentCommand \CopperplatePath { m }
@@ -5350,75 +7341,160 @@ manipulating PGF soft paths}
% \begin{macrocode}
\expandafter\ifx\csname pgfdeclaredecoration\endcsname\relax
\else
-\pgfdeclaredecoration{calligraphic brace}{brace}
-{
- \state{brace}[width=+\pgfdecoratedremainingdistance,next state=final]
- {
- \pgfsyssoftpath@setcurrentpath{\pgfutil@empty}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathcurveto
- {\pgfqpoint{.15\pgfdecorationsegmentamplitude}{.3\pgfdecorationsegmentamplitude}}
- {\pgfqpoint{.5\pgfdecorationsegmentamplitude}{.5\pgfdecorationsegmentamplitude}}
- {\pgfqpoint{\pgfdecorationsegmentamplitude}{.5\pgfdecorationsegmentamplitude}}
- {
- \pgftransformxshift{+\pgfdecorationsegmentaspect\pgfdecoratedremainingdistance}
- \pgfpathlineto{\pgfqpoint{-\pgfdecorationsegmentamplitude}{.5\pgfdecorationsegmentamplitude}}
- \pgfpathcurveto
- {\pgfqpoint{-.5\pgfdecorationsegmentamplitude}{.5\pgfdecorationsegmentamplitude}}
- {\pgfqpoint{-.15\pgfdecorationsegmentamplitude}{.7\pgfdecorationsegmentamplitude}}
- {\pgfqpoint{0\pgfdecorationsegmentamplitude}{1\pgfdecorationsegmentamplitude}}
- \pgfpathmoveto{\pgfqpoint{0\pgfdecorationsegmentamplitude}{1\pgfdecorationsegmentamplitude}}
- \pgfpathcurveto
- {\pgfqpoint{.15\pgfdecorationsegmentamplitude}{.7\pgfdecorationsegmentamplitude}}
- {\pgfqpoint{.5\pgfdecorationsegmentamplitude}{.5\pgfdecorationsegmentamplitude}}
- {\pgfqpoint{\pgfdecorationsegmentamplitude}{.5\pgfdecorationsegmentamplitude}}
- }
- {
- \pgftransformxshift{+\pgfdecoratedremainingdistance}
- \pgfpathlineto{\pgfqpoint{-\pgfdecorationsegmentamplitude}{.5\pgfdecorationsegmentamplitude}}
+\pgfdeclaredecoration{calligraphic brace}{brace}%
+{%
+ \state{brace}[width=+\pgfdecoratedremainingdistance,next state=final]%
+ {%
+ \pgfsyssoftpath@setcurrentpath{\pgfutil@empty}%
+ \pgfpathmoveto{\pgfpointorigin}%
+ \pgfpathcurveto%
+ {%
+ \pgfqpoint%
+ {.15\pgfdecorationsegmentamplitude}%
+ {.3\pgfdecorationsegmentamplitude}%
+ }%
+ {%
+ \pgfqpoint%
+ {.5\pgfdecorationsegmentamplitude}%
+ {.5\pgfdecorationsegmentamplitude}%
+ }%
+ {%
+ \pgfqpoint%
+ {\pgfdecorationsegmentamplitude}%
+ {.5\pgfdecorationsegmentamplitude}%
+ }%
+ {%
+ \pgftransformxshift%
+ {+\pgfdecorationsegmentaspect\pgfdecoratedremainingdistance}%
+ \pgfpathlineto%
+ {%
+ \pgfqpoint%
+ {-\pgfdecorationsegmentamplitude}%
+ {.5\pgfdecorationsegmentamplitude}%
+ }%
\pgfpathcurveto
- {\pgfqpoint{-.5\pgfdecorationsegmentamplitude}{.5\pgfdecorationsegmentamplitude}}
- {\pgfqpoint{-.15\pgfdecorationsegmentamplitude}{.3\pgfdecorationsegmentamplitude}}
- {\pgfqpoint{0pt}{0pt}}
- }
- \tikzset{
- taper width=.5\pgflinewidth,
- taper
+ {%
+ \pgfqpoint%
+ {-.5\pgfdecorationsegmentamplitude}%
+ {.5\pgfdecorationsegmentamplitude}%
+ }%
+ {%
+ \pgfqpoint%
+ {-.15\pgfdecorationsegmentamplitude}%
+ {.7\pgfdecorationsegmentamplitude}%
+ }%
+ {%
+ \pgfqpoint%
+ {0\pgfdecorationsegmentamplitude}%
+ {1\pgfdecorationsegmentamplitude}%
+ }%
+ \pgfpathmoveto%
+ {%
+ \pgfqpoint%
+ {0\pgfdecorationsegmentamplitude}%
+ {1\pgfdecorationsegmentamplitude}%
+ }%
+ \pgfpathcurveto%
+ {%
+ \pgfqpoint%
+ {.15\pgfdecorationsegmentamplitude}%
+ {.7\pgfdecorationsegmentamplitude}%
+ }%
+ {%
+ \pgfqpoint%
+ {.5\pgfdecorationsegmentamplitude}%
+ {.5\pgfdecorationsegmentamplitude}%
+ }%
+ {%
+ \pgfqpoint%
+ {\pgfdecorationsegmentamplitude}%
+ {.5\pgfdecorationsegmentamplitude}%
+ }%
}%
- \pgfsyssoftpath@getcurrentpath\cal@tmp@path
- \CopperplatePath{\cal@tmp@path}
- }
- \state{final}{}
-}
+ {%
+ \pgftransformxshift{+\pgfdecoratedremainingdistance}%
+ \pgfpathlineto%
+ {%
+ \pgfqpoint%
+ {-\pgfdecorationsegmentamplitude}%
+ {.5\pgfdecorationsegmentamplitude}%
+ }%
+ \pgfpathcurveto%
+ {%
+ \pgfqpoint%
+ {-.5\pgfdecorationsegmentamplitude}%
+ {.5\pgfdecorationsegmentamplitude}%
+ }%
+ {%
+ \pgfqpoint%
+ {-.15\pgfdecorationsegmentamplitude}%
+ {.3\pgfdecorationsegmentamplitude}%
+ }%
+ {\pgfqpoint{0pt}{0pt}}%
+ }%
+ \tikzset{%
+ taper width=.5\pgflinewidth,%
+ taper%
+ }%%
+ \pgfsyssoftpath@getcurrentpath\cal@tmp@path%
+ \CopperplatePath{\cal@tmp@path}%
+ }%
+ \state{final}{}%
+}%
% \end{macrocode}
%
% The second is a straightened parenthesis (so that when very large it doesn't bow out too far).
% \begin{macrocode}
\pgfdeclaredecoration{calligraphic straight parenthesis}{brace}
{
- \state{brace}[width=+\pgfdecoratedremainingdistance,next state=final]
- {
- \pgfsyssoftpath@setcurrentpath{\pgfutil@empty}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathcurveto
- {\pgfqpoint{.76604\pgfdecorationsegmentamplitude}{.64279\pgfdecorationsegmentamplitude}}
- {\pgfqpoint{2.3333\pgfdecorationsegmentamplitude}{\pgfdecorationsegmentamplitude}}
- {\pgfqpoint{3.3333\pgfdecorationsegmentamplitude}{\pgfdecorationsegmentamplitude}}
- {
- \pgftransformxshift{+\pgfdecoratedremainingdistance}
- \pgfpathlineto{\pgfqpoint{-3.3333\pgfdecorationsegmentamplitude}{\pgfdecorationsegmentamplitude}}
- \pgfpathcurveto
- {\pgfqpoint{-2.3333\pgfdecorationsegmentamplitude}{\pgfdecorationsegmentamplitude}}
- {\pgfqpoint{-.76604\pgfdecorationsegmentamplitude}{.64279\pgfdecorationsegmentamplitude}}
- {\pgfqpoint{0pt}{0pt}}
- }
- \tikzset{
- taper width=.5\pgflinewidth,
- taper
+ \state{brace}[width=+\pgfdecoratedremainingdistance,next state=final]%
+ {%
+ \pgfsyssoftpath@setcurrentpath{\pgfutil@empty}%
+ \pgfpathmoveto{\pgfpointorigin}%
+ \pgfpathcurveto%
+ {%
+ \pgfqpoint%
+ {.76604\pgfdecorationsegmentamplitude}%
+ {.64279\pgfdecorationsegmentamplitude}%
}%
- \pgfsyssoftpath@getcurrentpath\cal@tmp@path
- \CopperplatePath{\cal@tmp@path}
- }
+ {%
+ \pgfqpoint%
+ {2.3333\pgfdecorationsegmentamplitude}%
+ {\pgfdecorationsegmentamplitude}%
+ }%
+ {%
+ \pgfqpoint%
+ {3.3333\pgfdecorationsegmentamplitude}%
+ {\pgfdecorationsegmentamplitude}%
+ }%
+ {%
+ \pgftransformxshift{+\pgfdecoratedremainingdistance}%
+ \pgfpathlineto%
+ {%
+ \pgfqpoint%
+ {-3.3333\pgfdecorationsegmentamplitude}%
+ {\pgfdecorationsegmentamplitude}%
+ }%
+ \pgfpathcurveto%
+ {%
+ \pgfqpoint%
+ {-2.3333\pgfdecorationsegmentamplitude}%
+ {\pgfdecorationsegmentamplitude}%
+ }%
+ {%
+ \pgfqpoint%
+ {-.76604\pgfdecorationsegmentamplitude}%
+ {.64279\pgfdecorationsegmentamplitude}%
+ }%
+ {\pgfqpoint{0pt}{0pt}}%
+ }%
+ \tikzset{%
+ taper width=.5\pgflinewidth,%
+ taper%
+ }%
+ \pgfsyssoftpath@getcurrentpath\cal@tmp@path%
+ \CopperplatePath{\cal@tmp@path}%
+ }%
\state{final}{}%
}
% \end{macrocode}
@@ -5427,24 +7503,28 @@ manipulating PGF soft paths}
% \begin{macrocode}
\pgfdeclaredecoration{calligraphic curved parenthesis}{brace}
{
- \state{brace}[width=+\pgfdecoratedremainingdistance,next state=final]
- {
- \pgfsyssoftpath@setcurrentpath{\pgfutil@empty}
- \pgfpathmoveto{\pgfpointorigin}
- \pgf@xa=\pgfdecoratedremainingdistance\relax
- \advance\pgf@xa by -1.5890\pgfdecorationsegmentamplitude\relax
- \edef\cgrphy@xa{\the\pgf@xa}
- \pgfpathcurveto
- {\pgfqpoint{1.5890\pgfdecorationsegmentamplitude}{1.3333\pgfdecorationsegmentamplitude}}
- {\pgfqpoint{\cgrphy@xa}{1.3333\pgfdecorationsegmentamplitude}}
- {\pgfqpoint{\pgfdecoratedremainingdistance}{0pt}}
- \tikzset{
- taper width=.5\pgflinewidth,
- taper
+ \state{brace}[width=+\pgfdecoratedremainingdistance,next state=final]%
+ {%
+ \pgfsyssoftpath@setcurrentpath{\pgfutil@empty}%
+ \pgfpathmoveto{\pgfpointorigin}%
+ \pgf@xa=\pgfdecoratedremainingdistance\relax%
+ \advance\pgf@xa by -1.5890\pgfdecorationsegmentamplitude\relax%
+ \edef\cgrphy@xa{\the\pgf@xa}%
+ \pgfpathcurveto%
+ {%
+ \pgfqpoint%
+ {1.5890\pgfdecorationsegmentamplitude}%
+ {1.3333\pgfdecorationsegmentamplitude}%
}%
- \pgfsyssoftpath@getcurrentpath\cal@tmp@path
- \CopperplatePath{\cal@tmp@path}
- }
+ {\pgfqpoint{\cgrphy@xa}{1.3333\pgfdecorationsegmentamplitude}}%
+ {\pgfqpoint{\pgfdecoratedremainingdistance}{0pt}}%
+ \tikzset{%
+ taper width=.5\pgflinewidth,%
+ taper%
+ }%
+ \pgfsyssoftpath@getcurrentpath\cal@tmp@path%
+ \CopperplatePath{\cal@tmp@path}%
+ }%
\state{final}{}%
}
% \end{macrocode}
@@ -5504,6 +7584,7 @@ manipulating PGF soft paths}
\dim_new:N \l_@@_tmpa_dim
\dim_new:N \l_@@_tmpb_dim
\dim_new:N \l_@@_tolerance_dim
+\dim_new:N \l_@@_redraw_tolerance_dim
\dim_new:N \l_@@_clip_bg_radius_dim
\dim_new:N \l_@@_clip_draw_radius_dim
@@ -5747,6 +7828,14 @@ manipulating PGF soft paths}
\pgfscope
\pgftransformreset
% \end{macrocode}
+% Set the dimension for deciding when to include neighbouring strands
+% \begin{macrocode}
+ \dim_set:Nn \l_@@_redraw_tolerance_dim {\fp_to_dim:n
+ {
+ sqrt(2) * max(\l_@@_clip_bg_radius_dim, \l_@@_clip_draw_radius_dim)
+ }
+ }
+% \end{macrocode}
% Loop through the strands drawing each one for the first time.
% \begin{macrocode}
\int_step_function:nnnN {1} {1} {\l_@@_strands_int} \knot_draw_strand:n
@@ -5784,7 +7873,12 @@ manipulating PGF soft paths}
{
\tl_set:Nn \l_@@_node_tl {
\exp_not:N \node[coordinate,
- pin={[node~ contents={\int_use:N \g_@@_intersections_int},knot~ diagram/draft/crossing~ label, knot~ diagram/draft/crossing~ \int_use:N \g_@@_intersections_int \c_space_tl label/.try]
+ pin={[
+ node~ contents={\int_use:N \g_@@_intersections_int},
+ knot~ diagram/draft/crossing~ label,
+ knot~ diagram/draft/crossing~
+ \int_use:N \g_@@_intersections_int \c_space_tl label/.try
+ ]
}]
}
}
@@ -5793,7 +7887,10 @@ manipulating PGF soft paths}
% \begin{macrocode}
\int_step_variable:nnnNn {1} {1} {\l_@@_tmpa_int - 1} \l_@@_tmpa_tl
{
- \int_step_variable:nnnNn {\tl_use:N \l_@@_tmpa_tl + 1} {1} {\l_@@_tmpa_int} \l_@@_tmpb_tl
+ \int_step_variable:nnnNn
+ {\tl_use:N \l_@@_tmpa_tl + 1}
+ {1}
+ {\l_@@_tmpa_int} \l_@@_tmpb_tl
{
\knot_intersections:VV \l_@@_tmpa_tl \l_@@_tmpb_tl
}
@@ -5825,7 +7922,12 @@ manipulating PGF soft paths}
\spath_bake_round:c {knot strand #1}
\tl_set:Nn \l_@@_tmpa_tl {knot~ diagram/every~ strand/.try,}
\tl_put_right:Nv \l_@@_tmpa_tl {l_@@_options_strand #1}
- \tl_put_right:Nn \l_@@_tmpa_tl {,knot~ diagram/only~ when~ rendering/.try,only~ when~ rendering/.try}
+ \tl_put_right:Nn \l_@@_tmpa_tl
+ {
+ ,
+ knot~ diagram/only~ when~ rendering/.try,
+ only~ when~ rendering/.try
+ }
\spath_tikz_path:Vv \l_@@_tmpa_tl {knot strand #1}
\group_end:
\endpgfscope
@@ -5845,11 +7947,15 @@ manipulating PGF soft paths}
\spath_finalpoint:Nv \l_@@_tmpb_tl {knot strand #1}
\dim_set:Nn \l_@@_tmpa_dim {\tl_item:Nn \l_@@_tmpb_tl {1}}
\dim_set:Nn \l_@@_tmpb_dim {\tl_item:Nn \l_@@_tmpb_tl {2}}
- \node[knot~ diagram/draft/strand~label] at (\l_@@_tmpa_dim,\l_@@_tmpb_dim) {#1};
+ \node[
+ knot~ diagram/draft/strand~label
+ ] at (\l_@@_tmpa_dim,\l_@@_tmpb_dim) {#1};
\spath_initialpoint:Nv \l_@@_tmpb_tl {knot strand #1}
\dim_set:Nn \l_@@_tmpa_dim {\tl_item:Nn \l_@@_tmpb_tl {1}}
\dim_set:Nn \l_@@_tmpb_dim {\tl_item:Nn \l_@@_tmpb_tl {2}}
- \node[knot~ diagram/draft/strand~label] at (\l_@@_tmpa_dim,\l_@@_tmpb_dim) {#1};
+ \node[
+ knot~ diagram/draft/strand~label
+ ] at (\l_@@_tmpa_dim,\l_@@_tmpb_dim) {#1};
}
\bool_if:nT {
\l_@@_self_intersections_bool
@@ -5858,6 +7964,8 @@ manipulating PGF soft paths}
}
{
\tl_clear:N \l_@@_tmpa_tl
+ \spath_initialpoint:Nv \l_@@_tmpa_tl {knot strand #1}
+ \tl_put_left:NV \l_@@_tmpa_tl \c_spath_moveto_tl
\spath_segments_to_seq:Nv \l_@@_segments_seq {knot strand #1}
\seq_map_function:NN \l_@@_segments_seq \knot_split_self_intersects:N
\tl_set_eq:cN {knot strand #1} \l_@@_tmpa_tl
@@ -5881,23 +7989,29 @@ manipulating PGF soft paths}
{
\fp_set:Nn \l_@@_tmpa_fp
{
- (\tl_item:nn {#1} {3} - 3 * \tl_item:nn {#1} {6} + 3 * \tl_item:nn {#1} {9} - \tl_item:nn {#1} {12})
+ (\tl_item:nn {#1} {3} - 3 * \tl_item:nn {#1} {6}
+ + 3 * \tl_item:nn {#1} {9} - \tl_item:nn {#1} {12})
*
(3 * \tl_item:nn {#1} {8} - 3 * \tl_item:nn {#1} {11})
-
- (\tl_item:nn {#1} {2} - 3 * \tl_item:nn {#1} {5} + 3 * \tl_item:nn {#1} {8} - \tl_item:nn {#1} {11})
+ (\tl_item:nn {#1} {2} - 3 * \tl_item:nn {#1} {5}
+ + 3 * \tl_item:nn {#1} {8} - \tl_item:nn {#1} {11})
*
(3 * \tl_item:nn {#1} {9} - 3 * \tl_item:nn {#1} {12})
}
\fp_set:Nn \l_@@_tmpb_fp
{
- (\tl_item:nn {#1} {2} - 3 * \tl_item:nn {#1} {5} + 3 * \tl_item:nn {#1} {8} - \tl_item:nn {#1} {11})
+ (\tl_item:nn {#1} {2} - 3 * \tl_item:nn {#1} {5}
+ + 3 * \tl_item:nn {#1} {8} - \tl_item:nn {#1} {11})
*
- (3 * \tl_item:nn {#1} {6} - 6 * \tl_item:nn {#1} {9} + 3 * \tl_item:nn {#1} {12})
+ (3 * \tl_item:nn {#1} {6} - 6 * \tl_item:nn {#1} {9}
+ + 3 * \tl_item:nn {#1} {12})
-
- (\tl_item:nn {#1} {3} - 3 * \tl_item:nn {#1} {6} + 3 * \tl_item:nn {#1} {9} - \tl_item:nn {#1} {12})
+ (\tl_item:nn {#1} {3} - 3 * \tl_item:nn {#1} {6}
+ + 3 * \tl_item:nn {#1} {9} - \tl_item:nn {#1} {12})
*
- (3 * \tl_item:nn {#1} {5} - 6 * \tl_item:nn {#1} {8} + 3 * \tl_item:nn {#1} {11})
+ (3 * \tl_item:nn {#1} {5} - 6 * \tl_item:nn {#1} {8}
+ + 3 * \tl_item:nn {#1} {11})
}
\fp_compare:nTF
{
@@ -5910,7 +8024,11 @@ manipulating PGF soft paths}
0 < \l_@@_tmpa_fp && \l_@@_tmpa_fp < 1
}
{
- \spath_split_curve:NNnV \l_@@_tmpc_tl \l_@@_tmpd_tl {#1} \l_@@_tmpa_fp
+ \spath_split_curve:NNnV
+ \l_@@_tmpc_tl
+ \l_@@_tmpd_tl
+ {#1}
+ \l_@@_tmpa_fp
\tl_set:Nx \l_@@_tmpc_tl {\tl_tail:N \l_@@_tmpc_tl}
\tl_set:Nx \l_@@_tmpc_tl {\tl_tail:N \l_@@_tmpc_tl}
\tl_set:Nx \l_@@_tmpc_tl {\tl_tail:N \l_@@_tmpc_tl}
@@ -5968,19 +8086,33 @@ manipulating PGF soft paths}
\bool_if:nTF {
\l_@@_save_bool
&&
- \tl_if_exist_p:c {knot~ intersections~ \tl_use:N \l_@@_name_tl - \tl_use:N \l_@@_tmpa_tl - \tl_use:N \l_@@_tmpb_tl}
+ \tl_if_exist_p:c {
+ knot~ intersections~
+ \tl_use:N \l_@@_name_tl -
+ \tl_use:N \l_@@_tmpa_tl -
+ \tl_use:N \l_@@_tmpb_tl
+ }
}
{
- \tl_use:c {knot~ intersections~ \tl_use:N \l_@@_name_tl - \tl_use:N \l_@@_tmpa_tl - \tl_use:N \l_@@_tmpb_tl}
+ \tl_use:c
+ {
+ knot~ intersections~ \tl_use:N \l_@@_name_tl -
+ \tl_use:N \l_@@_tmpa_tl -
+ \tl_use:N \l_@@_tmpb_tl
+ }
}
{
-\pgfintersectionofpaths{\pgfsetpath\l_@@_tmpc_tl}{\pgfsetpath\l_@@_tmpd_tl}
+ \pgfintersectionofpaths{\pgfsetpath\l_@@_tmpc_tl}{\pgfsetpath\l_@@_tmpd_tl}
}
\int_compare:nT {\pgfintersectionsolutions > 0}
{
- \int_step_function:nnnN {1} {1} {\pgfintersectionsolutions} \knot_do_intersection:n
+ \int_step_function:nnnN
+ {1}
+ {1}
+ {\pgfintersectionsolutions}
+ \knot_do_intersection:n
}
\knot_save_intersections:VV \l_@@_tmpa_tl \l_@@_tmpb_tl
@@ -6017,7 +8149,16 @@ manipulating PGF soft paths}
}
\tl_put_right:Nx \l_@@_aux_tl
{
- {\exp_not:N \pgf@x=\dim_use:N \l_@@_tmpa_dim\exp_not:N\relax\exp_not:N \pgf@y =\dim_use:N \l_@@_tmpb_dim\relax}
+ {
+ \exp_not:N \pgf@x
+ =
+ \dim_use:N \l_@@_tmpa_dim
+ \exp_not:N \relax
+ \exp_not:N \pgf@y
+ =
+ \dim_use:N \l_@@_tmpb_dim
+ \exp_not:N \relax
+ }
}
}
\tl_set:Nn \l_@@_auxa_tl {\expandafter \gdef \csname knot~ intersections~}
@@ -6057,7 +8198,7 @@ manipulating PGF soft paths}
\tl_set:Nv \l_@@_tmpc_tl \l_@@_tmpc_tl
\tl_if_eq:NNT \l_@@_tmpc_tl \l_@@_tmpb_tl
{
- \knot_test_endpoint:VnT \l_@@_tmpb_tl {final point}
+ \knot_test_endpoint:NVnT \l_@@_tolerance_dim \l_@@_tmpb_tl {final point}
{
\bool_set_true:N \l_@@_skip_bool
}
@@ -6068,7 +8209,7 @@ manipulating PGF soft paths}
\tl_set:Nv \l_@@_tmpc_tl \l_@@_tmpc_tl
\tl_if_eq:NNT \l_@@_tmpc_tl \l_@@_tmpa_tl
{
- \knot_test_endpoint:VnT \l_@@_tmpa_tl {final point}
+ \knot_test_endpoint:NVnT \l_@@_tolerance_dim \l_@@_tmpa_tl {final point}
{
\bool_set_true:N \l_@@_skip_bool
}
@@ -6079,19 +8220,19 @@ manipulating PGF soft paths}
% \begin{macrocode}
\bool_if:NT \l_@@_ignore_ends_bool
{
- \knot_test_endpoint:VnT \l_@@_tmpa_tl {initial point}
+ \knot_test_endpoint:NVnT \l_@@_tolerance_dim \l_@@_tmpa_tl {initial point}
{
\bool_set_true:N \l_@@_skip_bool
}
- \knot_test_endpoint:VnT \l_@@_tmpa_tl {final point}
+ \knot_test_endpoint:NVnT \l_@@_tolerance_dim \l_@@_tmpa_tl {final point}
{
\bool_set_true:N \l_@@_skip_bool
}
- \knot_test_endpoint:VnT \l_@@_tmpb_tl {initial point}
+ \knot_test_endpoint:NVnT \l_@@_tolerance_dim \l_@@_tmpb_tl {initial point}
{
\bool_set_true:N \l_@@_skip_bool
}
- \knot_test_endpoint:VnT \l_@@_tmpb_tl {final point}
+ \knot_test_endpoint:NVnT \l_@@_tolerance_dim \l_@@_tmpb_tl {final point}
{
\bool_set_true:N \l_@@_skip_bool
}
@@ -6140,14 +8281,16 @@ manipulating PGF soft paths}
% \begin{macrocode}
\bool_if:NT \l_@@_self_intersections_bool
{
- \knot_test_endpoint:VnT \l_@@_tmpg_tl {initial point}
+ \knot_test_endpoint:NVnT
+ \l_@@_redraw_tolerance_dim \l_@@_tmpg_tl {initial point}
{
\bool_set_true:N \l_@@_prepend_prev_bool
}
{
\bool_set_false:N \l_@@_prepend_prev_bool
}
- \knot_test_endpoint:VnT \l_@@_tmpg_tl {final point}
+ \knot_test_endpoint:NVnT
+ \l_@@_redraw_tolerance_dim \l_@@_tmpg_tl {final point}
{
\bool_set_true:N \l_@@_append_next_bool
}
@@ -6163,10 +8306,14 @@ manipulating PGF soft paths}
}
{
\tl_clear_new:c {knot \tl_use:N \l_@@_prefix_tl -1}
- \tl_set_eq:cc {knot \tl_use:N \l_@@_prefix_tl -1} {knot \tl_use:N \l_@@_tmpg_tl}
+ \tl_set_eq:cc
+ {knot \tl_use:N \l_@@_prefix_tl -1}
+ {knot \tl_use:N \l_@@_tmpg_tl}
\tl_clear_new:c {l_@@_options_ \tl_use:N \l_@@_prefix_tl -1}
- \tl_set_eq:cc {l_@@_options_ \tl_use:N \l_@@_prefix_tl -1} {l_@@_options_ \tl_use:N \l_@@_tmpg_tl}
+ \tl_set_eq:cc
+ {l_@@_options_ \tl_use:N \l_@@_prefix_tl -1}
+ {l_@@_options_ \tl_use:N \l_@@_tmpg_tl}
\bool_if:nT
{
@@ -6177,7 +8324,9 @@ manipulating PGF soft paths}
!\tl_if_empty_p:c {knot previous \tl_use:N \l_@@_tmpg_tl}
}
{
- \spath_prepend_no_move:cv {knot \tl_use:N \l_@@_prefix_tl -1} {knot \tl_use:c {knot previous \tl_use:N \l_@@_tmpg_tl}}
+ \spath_prepend_no_move:cv
+ {knot \tl_use:N \l_@@_prefix_tl -1}
+ {knot \tl_use:c {knot previous \tl_use:N \l_@@_tmpg_tl}}
% \end{macrocode}
% If we split potentially self intersecting curves, we test to see if we should prepend yet another segment.
% \begin{macrocode}
@@ -6190,10 +8339,18 @@ manipulating PGF soft paths}
!\tl_if_empty_p:c {knot previous \tl_use:N \l_@@_tmpg_tl}
}
{
- \knot_test_endpoint:vnT {knot previous \tl_use:N \l_@@_tmpg_tl} {initial point}
+ \knot_test_endpoint:NvnT
+ \l_@@_redraw_tolerance_dim
+ {knot previous \tl_use:N \l_@@_tmpg_tl}
+ {initial point}
{
-
- \spath_prepend_no_move:cv {knot \tl_use:N \l_@@_prefix_tl -1} {knot \tl_use:c {knot previous \tl_use:c {knot previous \tl_use:N \l_@@_tmpg_tl}}}
+ \spath_prepend_no_move:cv
+ {knot \tl_use:N \l_@@_prefix_tl -1}
+ {knot \tl_use:c
+ {knot previous \tl_use:c
+ {knot previous \tl_use:N \l_@@_tmpg_tl}
+ }
+ }
\tl_set_eq:Nc \l_@@_tmpa_tl {knot \tl_use:N \l_@@_prefix_tl -1}
}
}
@@ -6210,7 +8367,9 @@ manipulating PGF soft paths}
!\tl_if_empty_p:c {knot previous \tl_use:N \l_@@_tmpg_tl}
}
{
- \spath_append_no_move:cv {knot \tl_use:N \l_@@_prefix_tl -1} {knot \tl_use:c {knot next \tl_use:N \l_@@_tmpg_tl}}
+ \spath_append_no_move:cv
+ {knot \tl_use:N \l_@@_prefix_tl -1}
+ {knot \tl_use:c {knot next \tl_use:N \l_@@_tmpg_tl}}
\bool_if:nT
{
\l_@@_splits_bool
@@ -6221,14 +8380,21 @@ manipulating PGF soft paths}
!\tl_if_empty_p:c {knot previous \tl_use:N \l_@@_tmpg_tl}
}
{
- \knot_test_endpoint:vnT {knot previous \tl_use:N \l_@@_tmpg_tl} {final point}
+ \knot_test_endpoint:NvnT
+ \l_@@_redraw_tolerance_dim
+ {knot previous \tl_use:N \l_@@_tmpg_tl}
+ {final point}
{
- \spath_append_no_move:cv {knot \tl_use:N \l_@@_prefix_tl -1} {knot \tl_use:c {knot next \tl_use:c {knot next \tl_use:N \l_@@_tmpg_tl}}}
-
+ \spath_append_no_move:cv
+ {knot \tl_use:N \l_@@_prefix_tl -1}
+ {knot \tl_use:c
+ {knot next \tl_use:c
+ {knot next \tl_use:N \l_@@_tmpg_tl}
+ }
+ }
}
}
}
-
\tl_set:Nn \l_@@_tmpg_tl {\tl_use:N \l_@@_prefix_tl -1}
}
}
@@ -6237,9 +8403,15 @@ manipulating PGF soft paths}
% \begin{macrocode}
\pgfscope
\group_begin:
- \tikzset{knot~ diagram/every~ intersection/.try, every~ intersection/.try, knot~ diagram/intersection~ \int_use:N \g_@@_intersections_int/.try}
+ \tikzset{
+ knot~ diagram/every~ intersection/.try,
+ every~ intersection/.try,
+ knot~ diagram/intersection~ \int_use:N \g_@@_intersections_int/.try
+ }
\knot_draw_crossing:VVV \l_@@_tmpg_tl \l_@@_tmpa_dim \l_@@_tmpb_dim
- \coordinate (\l_@@_name_tl \c_space_tl \int_use:N \g_@@_intersections_int) at (\dim_use:N \l_@@_tmpa_dim, \dim_use:N \l_@@_tmpb_dim);
+ \coordinate
+ (\l_@@_name_tl \c_space_tl \int_use:N \g_@@_intersections_int)
+ at (\dim_use:N \l_@@_tmpa_dim, \dim_use:N \l_@@_tmpb_dim);
\group_end:
\endpgfscope
% \end{macrocode}
@@ -6251,7 +8423,13 @@ manipulating PGF soft paths}
% \begin{macrocode}
\tl_if_empty:NF \l_@@_node_tl
{
- \seq_gpush:Nx \g_@@_nodes_seq { \l_@@_node_tl at (\dim_use:N \l_@@_tmpa_dim, \dim_use:N \l_@@_tmpb_dim) {};}
+ \seq_gpush:Nx
+ \g_@@_nodes_seq
+ {
+ \l_@@_node_tl
+ at
+ (\dim_use:N \l_@@_tmpa_dim, \dim_use:N \l_@@_tmpb_dim) {};
+ }
}
}
}
@@ -6263,15 +8441,15 @@ manipulating PGF soft paths}
% \begin{macro}[internal]{\knot_test_endpoint:N}
% Test whether the point is near the intersection point.
% \begin{macrocode}
-\prg_new_conditional:Npnn \knot_test_endpoint:N #1 {p,T,F,TF}
+\prg_new_conditional:Npnn \knot_test_endpoint:NN #1#2 {p,T,F,TF}
{
\dim_compare:nTF
{
- \dim_abs:n { \l_@@_tmpa_dim - \tl_item:Nn #1 {1}}
+ \dim_abs:n { \l_@@_tmpa_dim - \tl_item:Nn #2 {1}}
+
- \dim_abs:n { \l_@@_tmpb_dim - \tl_item:Nn #1 {2}}
+ \dim_abs:n { \l_@@_tmpb_dim - \tl_item:Nn #2 {2}}
<
- \l_@@_tolerance_dim
+ #1
}
{
\prg_return_true:
@@ -6286,10 +8464,10 @@ manipulating PGF soft paths}
% \begin{macro}[internal]{\knot_test_endpoint:nn}
% Wrapper around the above.
% \begin{macrocode}
-\prg_new_protected_conditional:Npnn \knot_test_endpoint:nn #1#2 {T,F,TF}
+\prg_new_protected_conditional:Npnn \knot_test_endpoint:Nnn #1#2#3 {T,F,TF}
{
- \use:c {spath_#2:Nv} \l_@@_tmpd_tl {knot #1}
- \knot_test_endpoint:NTF \l_@@_tmpd_tl
+ \use:c {spath_#3:Nv} \l_@@_tmpd_tl {knot #2}
+ \knot_test_endpoint:NNTF #1 \l_@@_tmpd_tl
{
\prg_return_true:
}
@@ -6298,9 +8476,9 @@ manipulating PGF soft paths}
}
}
-\cs_generate_variant:Nn \knot_test_endpoint:nnT {VnT,vnT}
-\cs_generate_variant:Nn \knot_test_endpoint:nnF {VnF,vnF}
-\cs_generate_variant:Nn \knot_test_endpoint:nnTF {VnTF,vnTF}
+\cs_generate_variant:Nn \knot_test_endpoint:NnnT {NVnT,NvnT}
+\cs_generate_variant:Nn \knot_test_endpoint:NnnF {NVnF,NvnF}
+\cs_generate_variant:Nn \knot_test_endpoint:NnnTF {NVnTF,NvnTF}
% \end{macrocode}
% \end{macro}
%
@@ -6311,27 +8489,37 @@ manipulating PGF soft paths}
{
\group_begin:
\pgfscope
- \path[knot~ diagram/background~ clip] (#2, #3) circle[radius=\l_@@_clip_bg_radius_dim];
+ \path[knot~ diagram/background~ clip] (#2, #3)
+ circle[radius=\l_@@_clip_bg_radius_dim];
\tl_set:Nn \l_@@_tmpa_tl {knot~ diagram/every~ strand/.try,}
\tl_if_exist:cT {l_@@_options_ #1}
{
\tl_put_right:Nv \l_@@_tmpa_tl {l_@@_options_ #1}
}
- \tl_put_right:Nn \l_@@_tmpa_tl {,knotbg,line~ width= \tl_use:N \l_@@_clip_width_tl * \pgflinewidth}
+ \tl_put_right:Nn \l_@@_tmpa_tl
+ {
+ ,knotbg
+ ,line~ width= \tl_use:N \l_@@_clip_width_tl * \pgflinewidth
+ }
\spath_tikz_path:Vv \l_@@_tmpa_tl {knot #1}
\endpgfscope
\pgfscope
- \path[knot~ diagram/clip] (#2, #3) circle[radius=\l_@@_clip_draw_radius_dim];
+ \path[knot~ diagram/clip] (#2, #3)
+ circle[radius=\l_@@_clip_draw_radius_dim];
\tl_set:Nn \l_@@_tmpa_tl {knot~ diagram/every~ strand/.try,}
\tl_if_exist:cT {l_@@_options_ #1}
{
\tl_put_right:Nv \l_@@_tmpa_tl {l_@@_options_ #1}
}
- \tl_put_right:Nn \l_@@_tmpa_tl {,knot~ diagram/only~ when~ rendering/.try,only~ when~ rendering/.try}
+ \tl_put_right:Nn \l_@@_tmpa_tl
+ {
+ ,knot~ diagram/only~ when~ rendering/.try
+ ,only~ when~ rendering/.try
+ }
\spath_tikz_path:Vv \l_@@_tmpa_tl {knot #1}
\endpgfscope
@@ -6408,12 +8596,14 @@ manipulating PGF soft paths}
\tl_set:cn {knot filament \int_use:N \g_@@_filaments_int} {#1}
\tl_clear_new:c {l_@@_options_filament \int_use:N \g_@@_filaments_int}
- \tl_set_eq:cN {l_@@_options_filament \int_use:N \g_@@_filaments_int} \l_@@_tmpa_tl
+ \tl_set_eq:cN {l_@@_options_filament \int_use:N \g_@@_filaments_int}
+ \l_@@_tmpa_tl
\tl_clear_new:c {knot previous filament \int_use:N \g_@@_filaments_int}
\int_compare:nF {\l_@@_component_start_int == \g_@@_filaments_int}
{
- \tl_set:cx {knot previous filament \int_use:N \g_@@_filaments_int} {filament \int_eval:n {\g_@@_filaments_int - 1}}
+ \tl_set:cx {knot previous filament \int_use:N \g_@@_filaments_int}
+ {filament \int_eval:n {\g_@@_filaments_int - 1}}
}
}
\c_spath_curvetoa_tl
@@ -6422,12 +8612,15 @@ manipulating PGF soft paths}
\tl_clear_new:c {knot filament \int_use:N \g_@@_filaments_int}
\tl_set:cn {knot filament \int_use:N \g_@@_filaments_int} {#1}
\tl_clear_new:c {l_@@_options_filament \int_use:N \g_@@_filaments_int}
- \tl_set_eq:cN {l_@@_options_filament \int_use:N \g_@@_filaments_int} \l_@@_tmpa_tl
+ \tl_set_eq:cN {l_@@_options_filament \int_use:N \g_@@_filaments_int}
+ \l_@@_tmpa_tl
\tl_clear_new:c {knot previous filament \int_use:N \g_@@_filaments_int}
\int_compare:nF {\l_@@_component_start_int == \g_@@_filaments_int}
{
- \tl_set:cx {knot previous filament \int_use:N \g_@@_filaments_int} {filament \int_eval:n {\g_@@_filaments_int - 1}}
+ \tl_set:cx
+ {knot previous filament \int_use:N \g_@@_filaments_int}
+ {filament \int_eval:n {\g_@@_filaments_int - 1}}
}
}
\c_spath_closepath_tl
@@ -6435,18 +8628,26 @@ manipulating PGF soft paths}
\int_gincr:N \g_@@_filaments_int
\tl_clear_new:c {knot filament \int_use:N \g_@@_filaments_int}
\tl_clear:N \l_@@_tmpa_tl
- \tl_put_right:Nx {\tl_item:nn {#1} {1}\tl_item:nn {#1} {2}\tl_item:nn {#1} {3}}
+ \tl_put_right:Nx
+ {
+ \tl_item:nn {#1} {1}\tl_item:nn {#1} {2}\tl_item:nn {#1} {3}
+ }
\tl_put_right:NV \l_@@_tmpa_tl \c_spath_lineto_tl
\tl_put_right:Nx {\tl_item:nn {#1} {5}\tl_item:nn {#1} {6}}
\tl_set:cV {knot filament \int_use:N \g_@@_filaments_int} \l_@@_tmpa_tl
- \tl_set_eq:cN {l_@@_options_filament \int_use:N \g_@@_filaments_int} \l_@@_tmpa_tl
+ \tl_set_eq:cN {l_@@_options_filament \int_use:N \g_@@_filaments_int}
+ \l_@@_tmpa_tl
\tl_clear_new:c {knot previous filament \int_use:N \g_@@_filaments_int}
\int_compare:nF {\l_@@_component_start_int == \g_@@_filaments_int}
{
- \tl_set:cx {knot previous filament \int_use:N \g_@@_filaments_int} {filament \int_eval:n {\g_@@_filaments_int - 1}}
+ \tl_set:cx
+ {knot previous filament \int_use:N \g_@@_filaments_int}
+ {filament \int_eval:n {\g_@@_filaments_int - 1}}
}
- \tl_set:cx {knot previous filament \int_use:N \l_@@_component_start_int} {filament \int_use:N \g_@@_filaments_int}
+ \tl_set:cx
+ {knot previous filament \int_use:N \l_@@_component_start_int}
+ {filament \int_use:N \g_@@_filaments_int}
}
}
{
diff --git a/graphics/pgf/contrib/spath3/spath3_code.pdf b/graphics/pgf/contrib/spath3/spath3_code.pdf
index 77d3e3b723..0fe9fd3e43 100644
--- a/graphics/pgf/contrib/spath3/spath3_code.pdf
+++ b/graphics/pgf/contrib/spath3/spath3_code.pdf
Binary files differ
diff --git a/macros/latex/contrib/babel-contrib/danish/README.md b/macros/latex/contrib/babel-contrib/danish/README.md
new file mode 100644
index 0000000000..4a1f1b1400
--- /dev/null
+++ b/macros/latex/contrib/babel-contrib/danish/README.md
@@ -0,0 +1,16 @@
+# babel-danish – Babel contributed support for Danish
+
+Version: 2021-02-06 v1.3s
+
+The package provides a language definition, file for use with babel,
+which establishes Danish conventions in a document
+(or a subset of the conventions,
+if Danish is not the main language of the document).
+
+
+
+## Copyright (C)
+* 1989–2009 Johannes L. Braams
+
+## License
+LATEX Project Public License, version 1.3 or later.
diff --git a/macros/latex/contrib/babel-contrib/danish/danish.dtx b/macros/latex/contrib/babel-contrib/danish/danish.dtx
index ba05ec2f82..07793da26f 100644
--- a/macros/latex/contrib/babel-contrib/danish/danish.dtx
+++ b/macros/latex/contrib/babel-contrib/danish/danish.dtx
@@ -2,10 +2,10 @@
%
% Copyright 1989-2009 Johannes L. Braams and any individual authors
% listed elsewhere in this file. All rights reserved.
-%
+%
% This file is part of the Babel system.
% --------------------------------------
-%
+%
% It may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% of this license or (at your option) any later version.
@@ -13,20 +13,20 @@
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2003/12/01 or later.
-%
+%
% This work has the LPPL maintenance status "maintained".
-%
+%
% The Current Maintainer of this work is Johannes Braams.
-%
+%
% The list of all files belonging to the Babel system is
% given in the file `manifest.bbl. See also `legal.bbl' for additional
% information.
-%
+%
% The list of derived (unpacked) files belonging to the distribution
% and covered by LPPL is defined by the unpacking scripts (with
% extension .ins) which are part of the distribution.
% \fi
-% \CheckSum{160}
+% \CheckSum{164}
% \iffalse
% Tell the \LaTeX\ system who we are and write an entry on the
% transcript.
@@ -36,7 +36,7 @@
%<code>\ProvidesLanguage{danish}
%\fi
%\ProvidesFile{danish.dtx}
- [2009/09/19 v1.3r Danish support from the babel system]
+ [2021/02/06 v1.3s Danish support from the babel system]
%\iffalse
%% File `danish.dtx'
%% Babel package for LaTeX version 2e
@@ -114,7 +114,7 @@
% loaded more than once, checking the category code of the
% \texttt{@} sign, etc.
% \changes{danish-1.3j}{1996/11/02}{Now use \cs{LdfInit} to perform
-% initial checks}
+% initial checks}
% \begin{macrocode}
%<*code>
\LdfInit{danish}\captionsdanish
@@ -245,7 +245,7 @@
% First we define access to the low opening double quote and
% guillemets for quotations,
% \changes{danish-1.3j}{1996/08/15}{Changed definition of \texttt{"'}
-% to print \texttt{``} instead of \texttt{''}}
+% to print \texttt{``} instead of \texttt{''}}
% \changes{danish-1.3k}{1997/04/03}{Removed empty groups after double
% quote and guillemot characters}
% \begin{macrocode}
@@ -261,24 +261,30 @@
% then we define commands to be able to specify hyphenation
% breakpoints that behave a little different from |\-|.
% \changes{danish-1.3j}{1996/08/15}{Added definition of
-% \texttt{"\char126} and \texttt{"\char61}}
+% \texttt{"\char126} and \texttt{"\char61}}
% \begin{macrocode}
\declare@shorthand{danish}{"-}{\nobreak-\bbl@allowhyphens}
\declare@shorthand{danish}{""}{\hskip\z@skip}
-\declare@shorthand{danish}{"~}{\textormath{\leavevmode\hbox{-}}{-}}
+% \end{macrocode}
+% \changes{danish-1.3s}{2021/02/06}{Adapted some shorthands to changes in hyperref}
+% To avoid problems in bookmarks some shorthands should be hyperref aware.
+% \begin{macrocode}
+\providecommand\texorpdfstring[2]{#1}
+\declare@shorthand{danish}{"~}{%
+ \texorpdfstring{\textormath{\leavevmode\hbox{-}}{-}}{-}}
\declare@shorthand{danish}{"=}{\nobreak-\hskip\z@skip}
% \end{macrocode}
% And we want to have a shorthand for disabling a ligature.
% \begin{macrocode}
\declare@shorthand{danish}{"|}{%
- \textormath{\discretionary{-}{}{\kern.03em}}{}}
+ \texorpdfstring{\textormath{\discretionary{-}{}{\kern.03em}}{}}{}}
% \end{macrocode}
%
% To enable hyphenation in two words, written together but
% separated by a slash, as in `uitdrukking/opmerking' we define the
% command |"/|.
% \changes{danish-1.3q}{2008/03/17}{Added definition of \texttt{"/}
-% from \texttt{dutch.ldf}}
+% from \texttt{dutch.ldf}}
% \changes{danish-1.3r}{2009/09/19}{Made "/ a real Danish shorthand}
% \begin{macrocode}
\declare@shorthand{danish}{"/}{\textormath
@@ -310,7 +316,7 @@
% at |\begin{document}| and resetting the category code of
% \texttt{@} to its original value.
% \changes{danish-1.3j}{1996/11/02}{Now use \cs{ldf@finish} to wrap
-% up}
+% up}
% \begin{macrocode}
\ldf@finish{danish}
%</code>
diff --git a/macros/latex/contrib/babel-contrib/danish/danish.pdf b/macros/latex/contrib/babel-contrib/danish/danish.pdf
index 2f1efd5605..40cd9bbbf4 100644
--- a/macros/latex/contrib/babel-contrib/danish/danish.pdf
+++ b/macros/latex/contrib/babel-contrib/danish/danish.pdf
Binary files differ
diff --git a/macros/latex/contrib/babel-contrib/finnish/README.md b/macros/latex/contrib/babel-contrib/finnish/README.md
index 585667c5ca..3dde1066be 100644
--- a/macros/latex/contrib/babel-contrib/finnish/README.md
+++ b/macros/latex/contrib/babel-contrib/finnish/README.md
@@ -1,5 +1,6 @@
-Finnish 1.3r
---------------
+# babel-danish – Babel contributed support for Danish
+
+Version: 2021-02-06 v1.3s
This is the babel style for Finnish.
@@ -8,7 +9,8 @@ got fixed if you report them. If you want to take over maintenance
of this language style, please contact me at
http://www.texnia.com/contact.html .**
-Changes 1.3r
-------------
+## Copyright (C)
+* 1989-2020 Johannes L. Braams, Javier Bezos
-Sisällys is the preferred form for contents name.
+## License
+LATEX Project Public License, version 1.3 or later.
diff --git a/macros/latex/contrib/babel-contrib/finnish/finnish.dtx b/macros/latex/contrib/babel-contrib/finnish/finnish.dtx
index f454aac39c..d18dd761ad 100644
--- a/macros/latex/contrib/babel-contrib/finnish/finnish.dtx
+++ b/macros/latex/contrib/babel-contrib/finnish/finnish.dtx
@@ -3,10 +3,10 @@
% Copyright 1989-2020 Johannes L. Braams, Javier Bezos and any
% individual authors listed elsewhere in this file. All rights
% reserved.
-%
+%
% This file is part of the Babel system.
% --------------------------------------
-%
+%
% It may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% of this license or (at your option) any later version.
@@ -14,20 +14,19 @@
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2003/12/01 or later.
-%
+%
% This work has the LPPL maintenance status "maintained".
-%
+%
% The Current Maintainer of this work is Javier Bezos
-%
+%
% The list of all files belonging to the Babel system is
% given in the file `manifest.bbl. See also `legal.bbl' for additional
% information.
-%
+%
% The list of derived (unpacked) files belonging to the distribution
% and covered by LPPL is defined by the unpacking scripts (with
% extension .ins) which are part of the distribution.
% \fi
-% \CheckSum{172}
% \iffalse
% Tell the \LaTeX\ system who we are and write an entry on the
% transcript.
@@ -37,7 +36,7 @@
%<code>\ProvidesLanguage{finnish}
%\fi
%\ProvidesFile{finnish.dtx}
- [2020/04/16 v1.3r Finnish support from the babel system]
+ [2021/02/06 v1.3s Finnish support from the babel system]
%\iffalse
%% File `finnish.dtx'
%% Babel package for LaTeX version 2e
@@ -119,7 +118,7 @@
% loaded more than once, checking the category code of the
% \texttt{@} sign, etc.
% \changes{finnish-1.3i}{1996/11/02}{Now use \cs{LdfInit} to perform
-% initial checks}
+% initial checks}
% \begin{macrocode}
%<*code>
\LdfInit{finnish}\captionsfinnish
@@ -293,9 +292,12 @@
\declare@shorthand{finnish}{"=}{\hbox{-}\bbl@allowhyphens}
% \end{macrocode}
% And we want to have a shorthand for disabling a ligature.
+% \changes{finish-1.3s}{2021/02/06}{Adapted to changes in hyperref}
+% To avoid problems in bookmarks this shorthand should be hyperref aware.
% \begin{macrocode}
+\providecommand\texorpdfstring[2]{#1}
\declare@shorthand{finnish}{"|}{%
- \textormath{\discretionary{-}{}{\kern.03em}}{}}
+ \texorpdfstring{\textormath{\discretionary{-}{}{\kern.03em}}{}}{}}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -361,4 +363,3 @@
%% Right brace \} Tilde \~}
%%
\endinput
-
diff --git a/macros/latex/contrib/babel-contrib/finnish/finnish.pdf b/macros/latex/contrib/babel-contrib/finnish/finnish.pdf
index 61f4f9b794..a7b124953a 100644
--- a/macros/latex/contrib/babel-contrib/finnish/finnish.pdf
+++ b/macros/latex/contrib/babel-contrib/finnish/finnish.pdf
Binary files differ
diff --git a/macros/latex/contrib/babel-contrib/portuges/README.md b/macros/latex/contrib/babel-contrib/portuges/README.md
index c81d3294a8..a4eee9cebe 100644
--- a/macros/latex/contrib/babel-contrib/portuges/README.md
+++ b/macros/latex/contrib/babel-contrib/portuges/README.md
@@ -1,5 +1,6 @@
-Portuguese 1.2r
---------------
+# babel-portuges – Babel contributed support for Portuguese and Brazilian
+
+Version: 2021-02-06 v1.2s
This is the babel style for Portuguese.
@@ -8,9 +9,10 @@ got fixed if you report them. If you want to take over maintenance
of this language style, please contact me at
http://www.texnia.com/contact.html .**
-Changes 1.2r
-------------
+## Copyright (C)
+* 1989-2020 Johannes L. Braams, Javier Bezos
-Months are now lowercased in all 'dialects'.
+## License
+LATEX Project Public License, version 1.3 or later.
diff --git a/macros/latex/contrib/babel-contrib/portuges/portuges.dtx b/macros/latex/contrib/babel-contrib/portuges/portuges.dtx
index 09ff720e40..bec2a3f332 100644
--- a/macros/latex/contrib/babel-contrib/portuges/portuges.dtx
+++ b/macros/latex/contrib/babel-contrib/portuges/portuges.dtx
@@ -3,10 +3,10 @@
% Copyright 1989-2020 Johannes L. Braams, Javier Bezos, and any
% individual authors listed elsewhere in this file. All rights
% reserved.
-%
+%
% This file is part of the Babel system.
% --------------------------------------
-%
+%
% It may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% of this license or (at your option) any later version.
@@ -14,20 +14,19 @@
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2003/12/01 or later.
-%
+%
% This work has the LPPL maintenance status "maintained".
-%
+%
% The Current Maintainer of this work is Javier Bezos.
-%
+%
% The list of all files belonging to the Babel system is
% given in the file `manifest.bbl. See also `legal.bbl' for additional
% information.
-%
+%
% The list of derived (unpacked) files belonging to the distribution
% and covered by LPPL is defined by the unpacking scripts (with
% extension .ins) which are part of the distribution.
% \fi
-% \CheckSum{320}
% \iffalse
% Tell the \LaTeX\ system who we are and write an entry on the
% transcript.
@@ -37,7 +36,7 @@
%<code>\ProvidesLanguage{portuges}
%\fi
%\ProvidesFile{portuges.dtx}
- [2020/05/04 v1.2r Portuguese support from the babel system]
+ [2021/02/04 v1.2s Portuguese support from the babel system]
%\iffalse
%% File `portuges.dtx'
%% Babel package for LaTeX version 2e
@@ -80,7 +79,7 @@
% \changes{portuges-1.2g}{1995/06/04}{Enhanced support for brasilian}
% \changes{portuges-1.2j}{1996/07/11}{Replaced \cs{undefined} with
% \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency
-% with \LaTeX}
+% with \LaTeX}
% \changes{portuges-1.2j}{1996/10/10}{Moved the definition of
% \cs{atcatcode} right to the beginning.}
%
@@ -122,7 +121,7 @@
% loaded more than once, checking the category code of the
% \texttt{@} sign, etc.
% \changes{portuges-1.2j}{1996/11/03}{Now use \cs{LdfInit} to perform
-% initial checks}
+% initial checks}
% \begin{macrocode}
%<*code>
\LdfInit\CurrentOption{captions\CurrentOption}
@@ -174,7 +173,7 @@
% loaded for Portuguese or Brasilian use. This can be done by
% checking the contents of |\CurrentOption|. When it doesn't
% contain either `portuges' or `portuguese' we make |\bbl@tempb|
-% empty.
+% empty.
% \begin{macrocode}
\def\bbl@tempa{portuguese}
\ifx\CurrentOption\bbl@tempa
@@ -260,7 +259,7 @@
% \changes{portuges-1.2k}{1997/10/01}{Use \cs{edef} to define
% \cs{today} to save memory}
% \changes{portuges-1.2k}{1998/03/28}{use \cs{def} instead of
-% \cs{edef}}
+% \cs{edef}}
% \changes{portuges-1.2n}{2001/01/27}{Removed spurious space after
% Dezembro}
% \begin{macrocode}
@@ -275,7 +274,7 @@
% \end{macro}
%
% For the Brasilian version of these definitions we just add a
-% ``dialect''.
+% ``dialect''.
% \begin{macrocode}
\expandafter
\adddialect\csname l@\CurrentOption\endcsname\l@portuges
@@ -326,7 +325,7 @@
% \changes{portuges-1.2k}{1997/10/01}{Use \cs{edef} to define
% \cs{today} to save memory}
% \changes{portuges-1.2k}{1998/03/28}{use \cs{def} instead of
-% \cs{edef}}
+% \cs{edef}}
% \changes{portuges-1.2n}{2001/01/27}{Removed spurious space after
% dezembro}
% \begin{macrocode}
@@ -396,9 +395,12 @@
\declare@shorthand{portuges}{""}{\hskip\z@skip}
% \end{macrocode}
% And we want to have a shorthand for disabling a ligature.
+% \changes{portuges-1.2s}{2021/02/06}{Adapted this shorthand to changes in hyperref}
+% To avoid problems in bookmarks the shorthand should be hyperref aware.
% \begin{macrocode}
+\providecommand\texorpdfstring[2]{#1}
\declare@shorthand{portuges}{"|}{%
- \textormath{\discretionary{-}{}{\kern.03em}}{}}
+ \texorpdfstring{\textormath{\discretionary{-}{}{\kern.03em}}{}}{}}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -446,7 +448,7 @@
% at |\begin{document}| and resetting the category code of
% \texttt{@} to its original value.
% \changes{portuges-1.2j}{1996/11/03}{ow use \cs{ldf@finish} to wrap
-% up}
+% up}
% \begin{macrocode}
\ldf@finish\CurrentOption
%</code>
diff --git a/macros/latex/contrib/babel-contrib/portuges/portuges.pdf b/macros/latex/contrib/babel-contrib/portuges/portuges.pdf
index cb8bc27062..47d13ed00f 100644
--- a/macros/latex/contrib/babel-contrib/portuges/portuges.pdf
+++ b/macros/latex/contrib/babel-contrib/portuges/portuges.pdf
Binary files differ
diff --git a/macros/latex/contrib/babel-contrib/slovenian/README.md b/macros/latex/contrib/babel-contrib/slovenian/README.md
new file mode 100644
index 0000000000..a29734f9fe
--- /dev/null
+++ b/macros/latex/contrib/babel-contrib/slovenian/README.md
@@ -0,0 +1,17 @@
+# babel-slovenian – Babel contributed support for Slovenian
+
+Version: 2021-02-06 v1.2n
+
+This is the babel style for Sloveniane.
+
+The package provides the language definition file for support
+of Slovenian in babel. Several shortcuts are defined,
+as well as translations to Slovenian of standard “LaTeX namesâ€.
+
+## Copyright (C)
+* 1989–2005 Johannes L. Braams
+
+## License
+LATEX Project Public License, version 1.3 or later.
+
+
diff --git a/macros/latex/contrib/babel-contrib/slovenian/slovene.dtx b/macros/latex/contrib/babel-contrib/slovenian/slovene.dtx
index 391f39e7f9..834296b7d6 100644
--- a/macros/latex/contrib/babel-contrib/slovenian/slovene.dtx
+++ b/macros/latex/contrib/babel-contrib/slovenian/slovene.dtx
@@ -2,10 +2,10 @@
%
% Copyright 1989-2005 Johannes L. Braams and any individual authors
% listed elsewhere in this file. All rights reserved.
-%
+%
% This file is part of the Babel system.
% --------------------------------------
-%
+%
% It may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% of this license or (at your option) any later version.
@@ -13,20 +13,19 @@
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2003/12/01 or later.
-%
+%
% This work has the LPPL maintenance status "maintained".
-%
+%
% The Current Maintainer of this work is Johannes Braams.
-%
+%
% The list of all files belonging to the Babel system is
% given in the file `manifest.bbl. See also `legal.bbl' for additional
% information.
-%
+%
% The list of derived (unpacked) files belonging to the distribution
% and covered by LPPL is defined by the unpacking scripts (with
% extension .ins) which are part of the distribution.
% \fi
-% \CheckSum{142}
% \iffalse
% Tell the \LaTeX\ system who we are and write an entry on the
% transcript.
@@ -36,7 +35,7 @@
%<code>\ProvidesLanguage{slovene}
%\fi
%\ProvidesFile{slovene.dtx}
- [2005/03/31 v1.2m Slovene support from the babel system]
+ [2021/02/06 v1.2n Slovene support from the babel system]
%\iffalse
%% File `slovene.dtx'
%% Babel package for LaTeX version 2e
@@ -78,7 +77,7 @@
% \changes{slovene-1.2d}{1994/06/26}{Removed the use of \cs{filedate}
% and moved identification after the loading of \file{babel.def}}
% \changes{slovene-1.2i}{1995/11/03}{Replaced `Slovanian' with correct
-% `Slovenian'}
+% `Slovenian'}
% \changes{slovene-1.2i}{1996/10/10}{Replaced \cs{undefined} with
% \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency
% with \LaTeX, moved the definition of \cs{atcatcode} right to the
@@ -101,7 +100,7 @@
% \begin{table}[htb]
% \begin{center}
% \begin{tabular}{lp{8cm}}
-% |"c| & |\"c|, also implemented for the
+% |"c| & |\"c|, also implemented for the
% lowercase and uppercase s and z. \\
% |"-| & an explicit hyphen sign, allowing hyphenation
% in the rest of the word. \\
@@ -123,7 +122,7 @@
% loaded more than once, checking the category code of the
% \texttt{@} sign, etc.
% \changes{slovene-1.2i}{1996/11/03}{Now use \cs{LdfInit} to perform
-% initial checks}
+% initial checks}
% \begin{macrocode}
%<*code>
\LdfInit{slovene}\captionsslovene
@@ -209,7 +208,7 @@
% \begin{macro}{\noextrasslovene}
% The macro |\extrasslovene| performs all the extra definitions
% needed for the Slovenian language. The macro |\noextrasslovene|
-% is used to cancel the actions of |\extrasslovene|.
+% is used to cancel the actions of |\extrasslovene|.
%
% For Slovene the \texttt{"} character is made active. This is done
% once, later on its definition may vary. Other languages in the
@@ -232,7 +231,7 @@
% First we define shorthands to facilitate the occurence of letters
% such as \v{c}.
% \changes{slovene-1.2i}{1996/09/21}{removed shorthand for \texttt{"L}
-% as it is not needed for slovenian}
+% as it is not needed for slovenian}
% \begin{macrocode}
\declare@shorthand{slovene}{"c}{\textormath{\v c}{\check c}}
\declare@shorthand{slovene}{"s}{\textormath{\v s}{\check s}}
@@ -263,9 +262,12 @@
\declare@shorthand{slovene}{""}{\hskip\z@skip}
% \end{macrocode}
% And we want to have a shorthand for disabling a ligature.
+% \changes{slovene-1.2n}{2021/02/06}{Adapted this shorthand to changes in hyperref}
+% To avoid problems in bookmarks the shorthand should be hyperref aware.
% \begin{macrocode}
+\providecommand\texorpdfstring[2]{#1}
\declare@shorthand{slovene}{"|}{%
- \textormath{\discretionary{-}{}{\kern.03em}}{}}
+ \texorpdfstring{\textormath{\discretionary{-}{}{\kern.03em}}{}}{}}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -275,7 +277,7 @@
% at |\begin{document}| and resetting the category code of
% \texttt{@} to its original value.
% \changes{slovene-1.2i}{1996/11/03}{Now use \cs{ldf@finish} to wrap
-% up}
+% up}
% \begin{macrocode}
\ldf@finish{slovene}
%</code>
diff --git a/macros/latex/contrib/babel-contrib/slovenian/slovene.pdf b/macros/latex/contrib/babel-contrib/slovenian/slovene.pdf
index 9966e7a9e0..38a238638f 100644
--- a/macros/latex/contrib/babel-contrib/slovenian/slovene.pdf
+++ b/macros/latex/contrib/babel-contrib/slovenian/slovene.pdf
Binary files differ
diff --git a/macros/latex/contrib/babel-contrib/sorbian/README.md b/macros/latex/contrib/babel-contrib/sorbian/README.md
new file mode 100644
index 0000000000..dd9cd0ea1d
--- /dev/null
+++ b/macros/latex/contrib/babel-contrib/sorbian/README.md
@@ -0,0 +1,16 @@
+# babel-sorbian – Babel support for Upper and Lower Sorbian
+
+Version: 2021-02-06 v1.0i
+
+The package provides language definitions file for support of
+both Upper and Lower Sorbian, in babel.
+Some shortcuts are defined, as well as translations to the relevant
+language of standard “LaTeX namesâ€.
+
+## Copyright (C)
+* 1994–2008 Eduard Werner and Johannes Braams
+
+## License
+LATEX Project Public License, version 1.3 or later.
+
+
diff --git a/macros/latex/contrib/babel-contrib/sorbian/lsorbian.dtx b/macros/latex/contrib/babel-contrib/sorbian/lsorbian.dtx
index f5adbe4763..24ac4b7854 100644
--- a/macros/latex/contrib/babel-contrib/sorbian/lsorbian.dtx
+++ b/macros/latex/contrib/babel-contrib/sorbian/lsorbian.dtx
@@ -2,10 +2,10 @@
%
% Copyright 1989-2008 Johannes L. Braams and any individual authors
% listed elsewhere in this file. All rights reserved.
-%
+%
% This file is part of the Babel system.
% --------------------------------------
-%
+%
% It may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% of this license or (at your option) any later version.
@@ -13,15 +13,15 @@
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2003/12/01 or later.
-%
+%
% This work has the LPPL maintenance status "maintained".
-%
+%
% The Current Maintainer of this work is Johannes Braams.
-%
+%
% The list of all files belonging to the Babel system is
% given in the file `manifest.bbl. See also `legal.bbl' for additional
% information.
-%
+%
% The list of derived (unpacked) files belonging to the distribution
% and covered by LPPL is defined by the unpacking scripts (with
% extension .ins) which are part of the distribution.
@@ -37,7 +37,7 @@
%<code>\ProvidesLanguage{lsorbian}
%\fi
%\ProvidesFile{lsorbian.dtx}
- [2008/03/17 v1.0g Lower Sorbian support from the babel system]
+ [2021/02/06 v1.0i Lower Sorbian support from the babel system]
%\iffalse
%% File `lsorbian.dtx'
%% Babel package for LaTeX version 2e
@@ -171,7 +171,7 @@
% \changes{lsorbian-1.0e}{1997/10/01}{Use \cs{edef} to define
% \cs{today} to save memory}
% \changes{lsorbian-1.0e}{1998/03/28}{use \cs{def} instead of
-% \cs{edef}}
+% \cs{edef}}
% \changes{lsorbian-1.0g}{2007/10/19}{Make this work for more than one
% option name.}
% \begin{macrocode}
@@ -202,7 +202,7 @@
\v znje\'nca\or
po\v znje\'nca\or
winowca\or
- nazymnika\or
+ nazymnika\or
godownika\fi \space \number\year}}
% \end{macrocode}
% \end{macro}
@@ -236,7 +236,7 @@
% at |\begin{document}| and resetting the category code of
% \texttt{@} to its original value.
% \changes{lsorbian-1.0d}{1996/11/03}{Now use \cs{ldf@finish} to wrap
-% up}
+% up}
% \changes{lsorbian-1.0g}{2007/10/19}{Make this work for more than one
% option name}
% \begin{macrocode}
diff --git a/macros/latex/contrib/babel-contrib/sorbian/lsorbian.pdf b/macros/latex/contrib/babel-contrib/sorbian/lsorbian.pdf
index c02cb8ee80..dec82bce1e 100644
--- a/macros/latex/contrib/babel-contrib/sorbian/lsorbian.pdf
+++ b/macros/latex/contrib/babel-contrib/sorbian/lsorbian.pdf
Binary files differ
diff --git a/macros/latex/contrib/babel-contrib/sorbian/usorbian.dtx b/macros/latex/contrib/babel-contrib/sorbian/usorbian.dtx
index 7c02a293cd..2349133b57 100644
--- a/macros/latex/contrib/babel-contrib/sorbian/usorbian.dtx
+++ b/macros/latex/contrib/babel-contrib/sorbian/usorbian.dtx
@@ -2,10 +2,10 @@
%
% Copyright 1989-2008 Johannes L. Braams and any individual authors
% listed elsewhere in this file. All rights reserved.
-%
+%
% This file is part of the Babel system.
% --------------------------------------
-%
+%
% It may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% of this license or (at your option) any later version.
@@ -13,20 +13,19 @@
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2003/12/01 or later.
-%
+%
% This work has the LPPL maintenance status "maintained".
-%
+%
% The Current Maintainer of this work is Johannes Braams.
-%
+%
% The list of all files belonging to the Babel system is
% given in the file `manifest.bbl. See also `legal.bbl' for additional
% information.
-%
+%
% The list of derived (unpacked) files belonging to the distribution
% and covered by LPPL is defined by the unpacking scripts (with
% extension .ins) which are part of the distribution.
% \fi
-% \CheckSum{344}
% \iffalse
% Tell the \LaTeX\ system who we are and write an entry on the
% transcript.
@@ -36,7 +35,7 @@
%<code>\ProvidesLanguage{usorbian}
%\fi
%\ProvidesFile{usorbian.dtx}
- [2008/03/17 v1.0k Upper Sorbian support from the babel system]
+ [2021/02/06 v1.0i Upper Sorbian support from the babel system]
%\iffalse
%% File `usorbian.dtx'
%% Babel package for LaTeX version 2e
@@ -98,7 +97,7 @@
% loaded more than once, checking the category code of the
% \texttt{@} sign, etc.
% \changes{usorbian-1.0e}{1996/11/03}{Now use \cs{LdfInit} to perform
-% initial checks}
+% initial checks}
% \changes{usorbian-1.0j}{2007/10/19}{This file can be loaded under
% more than one name.}
% \begin{macrocode}
@@ -109,7 +108,7 @@
% When this file is read as an option, i.e. by the |\usepackage|
% command, \texttt{usorbian} will be an `unknown' language, in which
% case we have to make it known. So we check for the existence of
-% |\l@usorbian| to see whether we have to do something here.
+% |\l@usorbian| to see whether we have to do something here.
% \changes{usorbian-1.0j}{2007/10/19}{Check for the option
% lowersorbian}
% As
@@ -236,8 +235,9 @@
% Don't forget to turn the shorthands off again.
% \changes{usorbian-1.0h}{1999/12/17}{Deactivate shorthands ouside of
% Upper Sorbian}
+% \changes{usorbian-1.0i}{2021/02/06}{correct deactivation command}
% \begin{macrocode}
-\expandafter\addto\csname extras\CurrentOption\endcsname{%
+\expandafter\addto\csname noextras\CurrentOption\endcsname{%
\bbl@deactivate{"}}
% \end{macrocode}
%
@@ -247,7 +247,7 @@
% language definitions turn the character |^| into a shorthand we
% need to make sure that it has it's orginial definition here.
% \changes{usorbian-1.0k}{2008/03/17}{Make sure the caret has the
-% right \cs{catcdoe}}
+% right \cs{catcdoe}}
% \begin{macrocode}
\begingroup \catcode`\^7
\def\x{\endgroup
@@ -344,9 +344,14 @@
% and some additional commands:
% \begin{macrocode}
\declare@shorthand{usorbian}{"-}{\nobreak\-\bbl@allowhyphens}
+% \end{macrocode}
+% \changes{usorbian-1.0i}{2021/02/06}{Adapted some shorthands to changes in hyperref}
+% To avoid problems in bookmarks the shorthands should be hyperref aware.
+% \begin{macrocode}
+\providecommand\texorpdfstring[2]{#1}
\declare@shorthand{usorbian}{"|}{%
- \textormath{\nobreak\discretionary{-}{}{\kern.03em}%
- \allowhyphens}{}}
+ \texorpdfstring{\textormath{\nobreak\discretionary{-}{}{\kern.03em}%
+ \allowhyphens}{}}{}}
\declare@shorthand{usorbian}{""}{\hskip\z@skip}
% \end{macrocode}
%
@@ -356,7 +361,7 @@
% All that's left to do now is to define a couple of commands
% for reasons of compatibility with \file{german.sty}.
% \changes{usorbian-1.0g}{1998/06/07}{Now use \cs{shorthandon} and
-% \cs{shorthandoff}}
+% \cs{shorthandoff}}
% \begin{macrocode}
\def\mdqon{\shorthandon{"}}
\def\mdqoff{\shorthandoff{"}}
@@ -371,7 +376,7 @@
% at |\begin{document}| and resetting the category code of
% \texttt{@} to its original value.
% \changes{usorbian-1.0e}{1996/11/03}{Now use \cs{ldf@finish} to wrap
-% up}
+% up}
% \changes{usorbian-1.0j}{2007/10/19}{Make this work for more than one
% option name}
% \begin{macrocode}
diff --git a/macros/latex/contrib/babel-contrib/sorbian/usorbian.pdf b/macros/latex/contrib/babel-contrib/sorbian/usorbian.pdf
index d4848e69e5..edba5ff080 100644
--- a/macros/latex/contrib/babel-contrib/sorbian/usorbian.pdf
+++ b/macros/latex/contrib/babel-contrib/sorbian/usorbian.pdf
Binary files differ
diff --git a/macros/latex/contrib/babel-contrib/swedish/README.md b/macros/latex/contrib/babel-contrib/swedish/README.md
new file mode 100644
index 0000000000..484610b119
--- /dev/null
+++ b/macros/latex/contrib/babel-contrib/swedish/README.md
@@ -0,0 +1,16 @@
+# babel-danish – Babel contributed support for Danish
+
+Version: 2021-02-06 v2.3e
+
+This is the babel style for Finnish.
+
+**This package is NOT being actively maintained, but bugs might
+got fixed if you report them. If you want to take over maintenance
+of this language style, please contact me at
+http://www.texnia.com/contact.html .**
+
+## Copyright (C)
+* 1989–2005 Johannes Braams, Sten Hellman
+
+## License
+LATEX Project Public License, version 1.3 or later.
diff --git a/macros/latex/contrib/babel-contrib/swedish/swedish.dtx b/macros/latex/contrib/babel-contrib/swedish/swedish.dtx
index 6beb68787b..67b6b049d4 100644
--- a/macros/latex/contrib/babel-contrib/swedish/swedish.dtx
+++ b/macros/latex/contrib/babel-contrib/swedish/swedish.dtx
@@ -2,10 +2,10 @@
%
% Copyright 1989-2005 Johannes L. Braams and any individual authors
% listed elsewhere in this file. All rights reserved.
-%
+%
% This file is part of the Babel system.
% --------------------------------------
-%
+%
% It may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% of this license or (at your option) any later version.
@@ -13,20 +13,19 @@
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2003/12/01 or later.
-%
+%
% This work has the LPPL maintenance status "maintained".
-%
+%
% The Current Maintainer of this work is Johannes Braams.
-%
+%
% The list of all files belonging to the Babel system is
% given in the file `manifest.bbl. See also `legal.bbl' for additional
% information.
-%
+%
% The list of derived (unpacked) files belonging to the distribution
% and covered by LPPL is defined by the unpacking scripts (with
% extension .ins) which are part of the distribution.
% \fi
-% \CheckSum{272}
% \iffalse
% Tell the \LaTeX\ system who we are and write an entry on the
% transcript.
@@ -36,7 +35,7 @@
%<code>\ProvidesLanguage{swedish}
%\fi
%\ProvidesFile{swedish.dtx}
- [2005/03/31 v2.3d Swedish support from the babel system]
+ [2021/02/06 v2.3e Swedish support from the babel system]
%\iffalse
%% File `swedish.dtx'
%% Babel package for LaTeX version 2e
@@ -50,7 +49,7 @@
% code for the Swedish language definition file. A contribution
% was made by Sten Hellman HELLMAN@CERNVM.CERN.CH
%
-% Further enhancements for version 2.0 were provided by
+% Further enhancements for version 2.0 were provided by
% Erik "Osthols <erik\_osthols@yahoo.com>
%<*filedriver>
\documentclass{ltxdoc}
@@ -105,7 +104,7 @@
% should be hyphenated as \texttt{straff-f{\aa}nge}.
% This is also implemented for b, d, f, g, l, m, n,
% p, r, s, and t. \\
-% \verb="|= & disable ligature at this position. This should be
+% \verb="|= & disable ligature at this position. This should be
% used for compound words, such as
% ``\texttt{stra|"|ffinr\"attning}'',
% which should not have the ligature ``ffi''. \\
@@ -141,7 +140,7 @@
% loaded more than once, checking the category code of the
% \texttt{@} sign, etc.
% \changes{swedish-2.1}{1996/11/03}{Now use \cs{LdfInit} to perform
-% initial checks}
+% initial checks}
% \begin{macrocode}
%<*code>
\LdfInit{swedish}\captionsswedish
@@ -215,7 +214,7 @@
\def\alsoname{se \"aven}%
% \end{macrocode}
% \changes{swedish-1.3g}{1995/11/03}{Replaced `Proof' by its
-% translation}
+% translation}
% \changes{swedish-2.3b}{2000/09/26}{Added \cs{glossaryname}}
% \changes{swedish-2.3c}{2001/03/12}{Provided translation for
% Glossary}
@@ -296,7 +295,7 @@
% For Swedish the \texttt{"} character is made active. This is done
% once, later on its definition may vary.
% \changes{swedish-2.0}{1996/01/24}{Added active double quote
-% character}
+% character}
%
% \begin{macrocode}
\initiate@active@char{"}
@@ -386,12 +385,17 @@
% \texttt{"\protect\indexeqs}, \cs{-} and \texttt{"~}}
% \begin{macrocode}
\declare@shorthand{swedish}{"-}{\nobreak-\bbl@allowhyphens}
+% \end{macrocode}
+% \changes{swedish-2.3e}{2021/02/06}{Adapted some shorthands to changes in hyperref}
+% To avoid problems in bookmarks some shorthands should be hyperref aware.
+% \begin{macrocode}
+\providecommand\texorpdfstring[2]{#1}
\declare@shorthand{swedish}{"|}{%
- \textormath{\nobreak\discretionary{-}{}{\kern.03em}%
- \bbl@allowhyphens}{}}
-\declare@shorthand{swedish}{""}{\hskip\z@skip}
+ \texorpdfstring{\textormath{\nobreak\discretionary{-}{}{\kern.03em}%
+ \bbl@allowhyphens}{}}{}}
\declare@shorthand{swedish}{"~}{%
- \textormath{\leavevmode\hbox{-}\bbl@allowhyphens}{-}}
+ \texorpdfstring{\textormath{\leavevmode\hbox{-}\bbl@allowhyphens}{-}}{-}}
+\declare@shorthand{swedish}{""}{\hskip\z@skip}
\declare@shorthand{swedish}{"=}{\hbox{-}\allowhyphens}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/babel-contrib/swedish/swedish.pdf b/macros/latex/contrib/babel-contrib/swedish/swedish.pdf
index ef105bc33b..acdbe438ec 100644
--- a/macros/latex/contrib/babel-contrib/swedish/swedish.pdf
+++ b/macros/latex/contrib/babel-contrib/swedish/swedish.pdf
Binary files differ
diff --git a/macros/latex/contrib/cmap/README b/macros/latex/contrib/cmap/README
index 3a012e5b34..54009c7469 100644
--- a/macros/latex/contrib/cmap/README
+++ b/macros/latex/contrib/cmap/README
@@ -92,3 +92,6 @@ History:
change was inspired by discussion with Alexey Kuligin and Alexey Vikhlinin.
2021/01/29 version 1.0i:
suppress cmaps automatically generated by pdfTeX for all handled fonts
+2021/02/06 version 1.0j:
+ Don't fail if \pdfnobuiltintounicode primitive is missing
+ Add support for LuaTeX without luatex85
diff --git a/macros/latex/contrib/cmap/cmap.sty b/macros/latex/contrib/cmap/cmap.sty
index f77cc99d61..104468d84f 100644
--- a/macros/latex/contrib/cmap/cmap.sty
+++ b/macros/latex/contrib/cmap/cmap.sty
@@ -11,7 +11,7 @@
% Werner Lemberg
% Oleg Katsitadze
-\ProvidesPackage{cmap}[2021/01/29 v1.0i CMap support: searchable PDF]
+\ProvidesPackage{cmap}[2021/02/06 v1.0j CMap support: searchable PDF]
\DeclareOption{resetfonts}{%
\@for\reserved@a:=%
@@ -26,12 +26,27 @@
\ProcessOptions
\@ifundefined{pdffontattr}{%
-% The cmap package can be used only with pdflatex,
+ \@ifundefined{pdfextension}{%
+% The cmap package can be used only with pdflatex and lualatex,
% but not with ordinary latex
- \PackageWarningNoLine{cmap}{pdftex not detected - exiting}%
- \endinput
-}\relax
-\ifnum\pdfoutput<1
+ \PackageWarningNoLine{cmap}{pdftex not detected - exiting}%
+ \endinput
+ }{%
+ \protected\def\cmap@pdfobj{\pdfextension obj }%
+ \protected\def\cmap@fontattr{\pdfextension fontattr }%
+ \def\cmap@lastobj{\number\pdffeedback lastobj \space 0 R}%
+ }%
+}{%
+ \let\cmap@pdfobj\pdfobj
+ \let\cmap@fontattr\pdffontattr
+ \def\cmap@lastobj{\number\pdflastobj\space 0 R}%
+}
+
+\@ifundefined{pdfoutput}{%
+ \ifnum\outputmode<1
+}{%
+ \ifnum\pdfoutput<1
+}%
\PackageWarningNoLine{cmap}{pdftex in DVI mode - exiting}
\expandafter\endinput
\fi
@@ -45,6 +60,17 @@
%\PackageWarningNoLine{cmap}{babel already loaded - some fonts may be unprocessed}%
%}\relax
+\@ifundefined{pdfnobuiltintounicode}{%
+ \@ifundefined{pdfgentounicode}\relax{%
+ \pdfgentounicode=0
+ }%
+ \protected\def\cmap@nobuiltintounicode{%
+ \expandafter\@gobble\the
+ }%
+}{%
+ \let\cmap@nobuiltintounicode\pdfnobuiltintounicode
+}
+
\def\extract@font{%
\get@external@font
\global\expandafter\font\font@name\external@font\relax
@@ -58,12 +84,12 @@
\edef\reserved@f{\lowercase{\def\noexpand\reserved@f{\cmap@f@encoding.cmap}}}%
\reserved@f
\IfFileExists{\reserved@f}{%
- \immediate\pdfobj stream
+ \immediate\cmap@pdfobj stream
%attr {/Type /CIDFile}
file {\reserved@f}%
\expandafter\xdef\csname cmap@set@\cmap@f@encoding\endcsname{%
- \pdfnobuiltintounicode\noexpand\font@name
- \noexpand\expandafter\pdffontattr\noexpand\font@name{/ToUnicode \the\pdflastobj\space 0 R}}%
+ \cmap@nobuiltintounicode\noexpand\font@name
+ \noexpand\expandafter\cmap@fontattr\noexpand\font@name{/ToUnicode \cmap@lastobj}}%
}{%
\global\expandafter\let\csname cmap@set@\cmap@f@encoding\endcsname\empty
}%
diff --git a/macros/latex/contrib/europecv/CHANGELOG.rst b/macros/latex/contrib/europecv/CHANGELOG.rst
index 528e30b75e..addeeb85ef 100644
--- a/macros/latex/contrib/europecv/CHANGELOG.rst
+++ b/macros/latex/contrib/europecv/CHANGELOG.rst
@@ -2,6 +2,12 @@
Changelog for package europecv
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+2021.02.05
+----------
+* Improved Portuguese translation (#24)
+* Update package documentation
+* Contributors: Nuno Fachada, Giuseppe Silano
+
2020.01.03
-----------
* Added example with the geometry package (#20)
diff --git a/macros/latex/contrib/europecv/README.md b/macros/latex/contrib/europecv/README.md
index 971cba1738..f399bddf7d 100644
--- a/macros/latex/contrib/europecv/README.md
+++ b/macros/latex/contrib/europecv/README.md
@@ -1,6 +1,7 @@
-[![All Contributors](https://img.shields.io/badge/all_contributors-21-orange.svg?style=flat-square)](#contributors)
+[![All Contributors](https://img.shields.io/badge/all_contributors-23-orange.svg?style=flat-square)](#contributors)
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)
[![first-timers-only](https://img.shields.io/badge/first--timers--only-friendly-blue.svg?style=flat-square)](https://www.firsttimersonly.com/)
+[![License](https://svgshare.com/i/KPL.svg)](https://spdx.org/licenses/LPPL-1.3c.html)
# EuropeCV
TeX code associated to the EuropeCV [CTAN repository](https://ctan.org/pkg/europecv).
diff --git a/macros/latex/contrib/europecv/ecvpt.def b/macros/latex/contrib/europecv/ecvpt.def
index 786d7f9054..79a5533b1a 100644
--- a/macros/latex/contrib/europecv/ecvpt.def
+++ b/macros/latex/contrib/europecv/ecvpt.def
@@ -1,6 +1,6 @@
%!TEX encoding = UTF-8 Unicode
%
-% Translation completed on 01/03/2020
+% Translation completed on 04/02/2021
\ProvidesFile{ecvpt.def}[europecv Portuguese definitions]
% Personal information
\def\ecv@infosectionkey{\ecv@utf{Informa\c{c}\~ao pessoal}}
@@ -29,7 +29,7 @@
\def\ecv@assesskey{\ecv@utf{Auto-avalia\c{c}\~ao}}
\def\ecv@levelkey{\ecv@utf{N\'ivel europeu}}
\def\ecv@understandkey{\ecv@utf{Compreens\~ao}}
-\def\ecv@speakkey{\ecv@utf{Conversas\~ao}}
+\def\ecv@speakkey{\ecv@utf{Conversa\c{c}\~ao}}
\def\ecv@writekey{\ecv@utf{Escrita}}
\def\ecv@listenkey{\ecv@utf{Compreens\~ao oral}}
\def\ecv@readkey{\ecv@utf{Compreens\~ao escrita}}
diff --git a/macros/latex/contrib/europecv/europecv.pdf b/macros/latex/contrib/europecv/europecv.pdf
index d2ee875423..2c800f564e 100644
--- a/macros/latex/contrib/europecv/europecv.pdf
+++ b/macros/latex/contrib/europecv/europecv.pdf
Binary files differ
diff --git a/macros/latex/contrib/europecv/europecv.tex b/macros/latex/contrib/europecv/europecv.tex
index 0c15c3d57e..8d7c9e53b2 100644
--- a/macros/latex/contrib/europecv/europecv.tex
+++ b/macros/latex/contrib/europecv/europecv.tex
@@ -47,11 +47,11 @@
University of Udine, Italy\\
\\
Giuseppe Silano\\
- \href{mailto:giuseppe.silano@unisannio.it}{\texttt{giuseppe.silano@unisannio.it}}\\
- Department of Engineering\\
- University of Sannio in Benevento, Italy\\
+ \href{mailto:giuseppe.silano@fel.cvut.cz}{\texttt{giuseppe.silano@fel.cvut.cz}}\\
+ Faculty of Electrical Engineering\\
+ Czech Technical University in Prague, Czech Republic\\
}
-\date{January 03, 2020}
+\date{February 6, 2021}
\begin{document}
@@ -735,7 +735,9 @@ Europass logo. Thanks to \textbf{Roman Bertle} for suggesting to redefine item m
Gardstr\"{o}m} for fixing the German (2018.10.12) and Swedish (2019.01.25) translation,
respectively. Thanks to \textbf{JPSPLeite} for improving the Portuguese translation. Thanks to
\textbf{Marc-Andre Hermanns} for adding the \texttt{nobranding} feature. Thanks to \textbf{Antonios
-Tsolomitis} for his suggestions into the 2020.01.06 package release.
+Tsolomitis} for his suggestions into the 2020.01.06 package release. Thanks to \textbf{
+Davide Peressoni} for the biber support (2020.10.26 package release). Thanks to \textbf{Nuno
+Fachada} for his help with the Portuguese translation (2021.02.05 package release).
\vspace{0.5cm}
\textbf{\large{8\hspace{0.5cm}Disclaimer}}
diff --git a/macros/latex/contrib/europecv/examples/europass-cv.pdf b/macros/latex/contrib/europecv/examples/europass-cv.pdf
index 3f3d0fed2a..1ff01923fc 100644
--- a/macros/latex/contrib/europecv/examples/europass-cv.pdf
+++ b/macros/latex/contrib/europecv/examples/europass-cv.pdf
Binary files differ
diff --git a/macros/latex/contrib/europecv/examples/europasslogo-eps-converted-to.pdf b/macros/latex/contrib/europecv/examples/europasslogo-eps-converted-to.pdf
index 49098052be..d80538658b 100644
--- a/macros/latex/contrib/europecv/examples/europasslogo-eps-converted-to.pdf
+++ b/macros/latex/contrib/europecv/examples/europasslogo-eps-converted-to.pdf
Binary files differ
diff --git a/macros/latex/contrib/europecv/templates/cv_template_academic_en.pdf b/macros/latex/contrib/europecv/templates/cv_template_academic_en.pdf
index dff20b5bb1..3d6338d908 100644
--- a/macros/latex/contrib/europecv/templates/cv_template_academic_en.pdf
+++ b/macros/latex/contrib/europecv/templates/cv_template_academic_en.pdf
Binary files differ
diff --git a/macros/latex/contrib/europecv/templates/cv_template_en.pdf b/macros/latex/contrib/europecv/templates/cv_template_en.pdf
index 4384340881..89e03bb4e7 100644
--- a/macros/latex/contrib/europecv/templates/cv_template_en.pdf
+++ b/macros/latex/contrib/europecv/templates/cv_template_en.pdf
Binary files differ
diff --git a/macros/latex/contrib/fontsize/fontsize.dtx b/macros/latex/contrib/fontsize/fontsize.dtx
index 3d3d31f92f..983eb46521 100644
--- a/macros/latex/contrib/fontsize/fontsize.dtx
+++ b/macros/latex/contrib/fontsize/fontsize.dtx
@@ -56,7 +56,7 @@ This work has the LPPL maintenance status "author-maintained".
%<package>\NeedsTeXFormat{LaTeX2e}[2005/12/01]
%<package>\ProvidesPackage{fontsize}
%<*package>
- [2021/01/31 v0.5 'fontsize' package. Set main font sizes (Ivan Valbusa)]
+ [2021/02/06 v0.6 'fontsize' package. Set main font sizes (Ivan Valbusa)]
%</package>
%<*driver>
\documentclass[12pt]{ltxdoc}
@@ -86,6 +86,7 @@ This work has the LPPL maintenance status "author-maintained".
\let\cs\relax
\let\cmd\relax
\usepackage{ltxdockit}
+\usepackage{kantlipsum}
%--------------------------------------------------------
% FONTS
%--------------------------------------------------------
@@ -96,7 +97,6 @@ This work has the LPPL maintenance status "author-maintained".
\usepackage[cochineal,bigdelims,cmintegrals,vvarbb]{newtxmath}
\usepackage[cal=boondoxo]{mathalfa}
\usepackage{manfnt}
-\usepackage{lettrine}
%--------------------------------------------------------
% LAYOUT
%--------------------------------------------------------
@@ -199,7 +199,7 @@ This work has the LPPL maintenance status "author-maintained".
%</driver>
% \fi
%
-% \CheckSum{2372}
+% \CheckSum{2991}
%
% \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
@@ -218,7 +218,8 @@ This work has the LPPL maintenance status "author-maintained".
% Right brace \} Tilde \~}
%
%
-% \changes{v0.5}{2021/01/31}{New font sizing commands \cmd{\meta{cmdname}r}, \cmd{\meta{cmdname}rr}, \cmd{\meta{cmdname}rrr}. New command \cmd{printsamples}. Updated documentation.}
+% \changes{v0.6}{2021/02/06}{New font sizing commands from \cmd{small} down. Updated documentation.}
+% \changes{v0.5}{2021/01/31}{New font sizing commands from \cmd{normalsize} up. New command \cmd{printsamples}. Updated documentation.}
% \changes{v0.4}{2021/01/25}{Maintenance release. Updated documentation.}
% \changes{v0.3}{2020/12/19}{Added definitions of some lengths omitted from KOMA-script files: \cmd{smallskiamount}, \cmd{medskiamount}, \cmd{bigskiamount}. Redefined \cmd{parindent} and \cmd{headheight}.}
% \changes{v0.2}{2020/05/24}{Updated documentation and code comments.}
@@ -310,7 +311,8 @@ This work has the LPPL maintenance status "author-maintained".
%
% \begin{abstract}
% \noindent The \sty{fontsize} package allows you to set arbitrary sizes
-% for the main font of the document and to adjust the line spacing accordingly. You can also generate your own \file{.clo} file for better tuning.
+% for the main font of the document and to adjust the line spacing accordingly.
+% It also provides new font sizing commands and lets you generate your own \file{.clo} file for better tuning.
% \end{abstract}
%
% \tableofcontents
@@ -327,10 +329,10 @@ This work has the LPPL maintenance status "author-maintained".
% \section*{Caveat}
%^^A---------------------------------------------------------------------
%
-% Although effective with any value for the \meta{fontsize} (as long as the font
+% Although effective with any value of the font size (as long as the font
% is scalable), the package is meant for small font size changes.
% For truly optimal results you should (re)define your own \file{.clo} file.
-% Indeed note that the file generated with \cmd{generateclofile}, as well as the macros redefined via \cmd{changefontsize}, are a subset of the standard \file{.clo} files.
+% In fact note that the file generated with \cmd{generateclofile}, as well as the macros redefined via \cmd{changefontsize}, are a subset of the standard \file{.clo} files.
%^^A---------------------------------------------------------------------
% \section{Usage}
%^^A---------------------------------------------------------------------
@@ -357,11 +359,11 @@ This work has the LPPL maintenance status "author-maintained".
% \cmd{small}, ecc.) and line spacings are set proportionally.
% You can use any unit recognized by \TeX\ and you can
% omit the unit as well (in which case it defaults to \texttt{pt}).
-% If a file named \file{\meta{name}\meta{fontsize}.clo} exists it is used to setup
+% If a file named \file{\meta{name}\meta{fontsize}.clo} exists, it is used to setup
% the font sizes. This file can be generated through the \cmd{generateclofile}
% command (see below).
%
-% \optitem[custom]{cloname}{\meta{name}}
+% \optitem[fontsize]{cloname}{\meta{name}}
%
% Sets to \meta{name} the name prefix of the \file{.clo} file generated
% by \cmd{generateclofile} (see below).
@@ -379,7 +381,7 @@ This work has the LPPL maintenance status "author-maintained".
% Sets the normal size to \meta{fontsize} and the normal line spacing to
% \meta{baselineskip}. The other sizes (\cmd{tiny}, \cmd{scriptsize},
% \cmd{small}, ecc.) and line spacings are set proportionally.
-% If the first optional argument is omitted the command has the same effect
+% If the first optional argument is omitted, the command has the same effect
% of the \opt{fontsize} option. You can use any unit recognized by \TeX\ and
% you can omit the unit as well (in which case it defaults to \texttt{pt}).
% For example:
@@ -398,17 +400,17 @@ This work has the LPPL maintenance status "author-maintained".
% You can use any unit recognized
% by \TeX\ and you can omit the unit as well (in which case it defaults
% to \texttt{pt}).
-% If \opt{cloname=\meta{name}} \textit{and} \opt{fontsize=\meta{fontsize}}
+% If \opt{cloname=\meta{name}} \textit{and} \opt{fontsize=\meta{fontsize}},
% the generated file will be automatically used to setup the main sizes.
%
% \alert \emph{In fact the \file{.clo} file is only needed if you intend to modify it.
% In this case remember to comment the command, otherwise the edited
-% file will be overwrittern}
+% file will be overwrittern.}
%
%\begin{latexcode}
%\begin{verbatim}
-%\usepackage[cloname=fs,fontsize=11.5pt]{fontsize} % loads fs11.5pt.clo
-% \generateclofile{fs}[13.5pt]{11.5pt} % creates fs11.5pt.clo
+%\usepackage[cloname=fs,fontsize=11.5]{fontsize} % loads fs11.5.clo
+% \generateclofile{fs}[13.5]{11.5} % creates fs11.5.clo
%\end{verbatim}
%\end{latexcode}
%
@@ -416,7 +418,7 @@ This work has the LPPL maintenance status "author-maintained".
%
% A command thought to test the \sty{fontsize} settings.
% It prints a text sample for every size given in the third optional argument.
-% If this argument is omitted it prints a sample for each available size.
+% If this argument is omitted, it prints a sample for each available size.
%
%\begin{latexcode}
%\begin{verbatim}
@@ -427,26 +429,77 @@ This work has the LPPL maintenance status "author-maintained".
%
% \end{ltxsyntax}
%^^A---------------------------------------------------------------------
-% \section{New sizing commands}\label{sec:sizingcmd}
+% \section{New font sizing commands}\label{sec:sizingcmd}
%^^A--------------------------------------------------------------------
-% The packages provides three variants for each size bigger then \cmd{normalsize}:
+% The package provides three additional font sizing commands for each standard size:
%
-%\newcolumntype{L}{>{\color{sufred}}l}
-%\begin{tabular}{@{}LLLLLL}
-% \cmd{normalsizer} & \cmd{larger} & \cmd{Larger} & \cmd{LARGEr}& \cmd{huger}& \cmd{Huger}\\
-% \cmd{normalsizerr} & \cmd{largerr} & \cmd{Largerr} & \cmd{LARGErr}& \cmd{hugerr}& \cmd{Hugerr}\\
-% \cmd{normalsizerrr} & \cmd{largerrr} & \cmd{Largerr} & \cmd{LARGErrr}& \cmd{hugerrr}& \cmd{Hugerrr}\\
+%\def\fshw{Lipsum}
+%\newcommand{\tcmd}[1]{\textcolor{sufred}{\cmd{#1}}}
+%\begin{center}
+%\begin{tabular}{@{}llll}
+%\cmd{tiny} & \tiny \fshw &\cmd{large} & \large \fshw \\
+%\tcmd{tinyr} & \tinyr \fshw &\tcmd{larger} & \larger \fshw \\
+%\tcmd{tinyrr} & \tinyrr \fshw &\tcmd{largerr} & \largerr \fshw \\
+%\tcmd{tinyrrr} & \tinyrrr \fshw &\tcmd{largerrr} & \largerrr \fshw \\
+%\cmd{scriptsize} & \scriptsize \fshw &\cmd{Large} & \Large \fshw \\
+%\tcmd{scriptsizer} & \scriptsizer \fshw &\tcmd{Larger} & \Larger \fshw \\
+%\tcmd{scriptsizerr} & \scriptsizerr \fshw &\tcmd{Largerr} & \Largerr \fshw \\
+%\tcmd{scriptsizerrr} & \scriptsizerrr \fshw &\tcmd{Largerrr} & \Largerrr \fshw \\
+%\cmd{footnotesize} & \footnotesize \fshw &\cmd{LARGE} & \LARGE \fshw \\
+%\tcmd{footnotesizer} & \footnotesizer \fshw &\tcmd{LARGEr} & \LARGEr \fshw \\
+%\tcmd{footnotesizerr} & \footnotesizerr \fshw &\tcmd{LARGErr} & \LARGErr \fshw \\
+%\tcmd{footnotesizerrr} & \footnotesizerrr \fshw &\tcmd{LARGErrr} & \LARGErrr \fshw \\
+%\cmd{small} & \small \fshw &\cmd{huge} & \huge \fshw \\
+%\tcmd{smallr} & \smallr \fshw &\tcmd{huger} & \huger \fshw \\
+%\tcmd{smallrr} & \smallrr \fshw &\tcmd{huger} & \hugerr \fshw \\
+%\tcmd{smallrrr} & \smallrrr \fshw &\tcmd{huger} & \hugerrr \fshw \\
+%\cmd{normalsize} & \normalsize \fshw &\cmd{Huge} & \Huge \fshw \\
+%\tcmd{normalsizer} & \normalsizer \fshw &\tcmd{Huger} & \Huger \fshw \\
+%\tcmd{normalsizerr} & \normalsizerr \fshw &\tcmd{Hugerr} & \Hugerr \fshw \\
+%\tcmd{normalsizerrr} & \normalsizerrr \fshw &\tcmd{Hugerr} & \Hugerrr \fshw
%\end{tabular}
+%\end{center}
+%
+% \begin{normalsize}
+%\alert If you want these commands to work as expected, the font must be
+% smoothly scalable. This is the case of many Type 1 and Open Type fonts.
+% Anyway, if the font has optical sizes, unusual things can happen:
+% some larger sizes may appear smaller. For example, with the Latin Modern 12\,pt typeface a similar situation can be encountered:\medskip
+%
+% \begingroup
+% \centering
+% \fontfamily{lmr}\selectfont
+%\begin{minipage}[b]{8cm}
+% \begin{tabular}[b]{lll}
+% \tcmd{largerr} & \texttlf{15.84\,pt} &\largerr Hello world \\
+% \tcmd{larger} & \texttlf{15.12\,pt} &\larger Hello world \\
+% \tcmd{large} & \texttlf{14.40\,pt} &\large Hello world
+% \end{tabular}
+%\end{minipage}
+% \tikz[overlay]{\draw[->,draw=red,very thick] (0.17,1.25) -- (3.7,1.4);}
+% \scalebox{3}{\large H} \scalebox{3}{\larger H} \scalebox{3}{\largerr H}
+%
+% \endgroup
+% \end{normalsize}
+% \medskip
+%
+% In fact the font used for the \cmd{larger} `Hello world' is bigger than
+% that used for the \cmd{large} one. This optical effect is due to the minor
+% thickness of the stems, which makes the words appear shorter and clearer,
+% but not less high (as you can see in the figure on the
+% right which shows the letter H appropriately scaled to see the
+% differences better).
+%
%^^A---------------------------------------------------------------------
% \section{Some text samples}\label{sec:example}
%
%^^A--------------------------------------------------------------------
%
-% Below you can see some text samples scaled proportionally
-% to match the different values of the selected normal size and line spacing.
+%^^A Below you can see some text samples scaled proportionally
+%^^A to match the different values of the selected normal size and line spacing.
%
-% \printsamples{13pt}{11pt}[normalsizer,normalsizerr,normalsizerrr]
-% \printsamples{13.5pt}{12pt}[large,larger]
+% \printsamples{13pt}{11pt}[normalsizerr,normalsizerrr,large]
+% \printsamples{13.4pt}{11.7pt}[normalsizerr,normalsizerrr]
%
% \nocite{xkeyval,etoolbox}
%
@@ -463,25 +516,21 @@ This work has the LPPL maintenance status "author-maintained".
%\alert \textcolor{DarkBlue}{The parts added to the basic structure of \file{scrextend} and \file{scrfontsizes} are highlighted in blue.}
%
%\noindent All the options of the package are defined via \sty{xkeyval}, while \sty{etoolbox}
-% is required to execute \cmd{AtEndOfPackage}. It is probably not necessary but for the moment I prefer to take advantage of it.
-%
+% is required to execute \cmd{AtEndOfPackage}. It is probably not necessary
+% but for the moment I prefer to take advantage of it. Only a new package
+% option called \opt{cloname} is defined.
% \baddition
% \begin{macrocode}
\@ifpackageloaded{xkeyval}{}{\RequirePackage{xkeyval}}
\@ifpackageloaded{etoolbox}{}{\RequirePackage{etoolbox}}
-% \end{macrocode}
-% \eaddition
-% Here we define the only new package option \opt{cloname}:
-% \baddition
-% \begin{macrocode}
-\DeclareOptionX{cloname}[custom]{\def\@fontsizefilebase{#1}}
+\DeclareOptionX{cloname}[fontsize]{\def\@fontsizefilebase{#1}}
% \end{macrocode}
% \eaddition
%
% \paragraph{Excerpt from \file{scrextend.sty}}
%
% Here the \sty{scrextend} code begins. Only a few names have been changed.
-% The value of \cmd{|@|fontsizefilebase} is set to \texttt{custom} instead of \texttt{scrsize}.
+% The value of \cmd{|@|fontsizefilebase} is set to \texttt{fontsize} instead of \texttt{scrsize}.
% \begin{macrocode}
\DeclareOptionX{fontsize}[10]{%
\expandafter\@defaultunits\expandafter\@tempdima#1 pt\relax\@nnil
@@ -653,34 +702,161 @@ This work has the LPPL maintenance status "author-maintained".
{\the\@tempdima}{\the\@tempdimb}%
}%
% \end{macrocode}
-% Here we define some new font sizing commands. There are three variants
-% for each standard command starting from \cmd{normalsize} to \cmd{Huge}:
+% We will now define some new font sizing commands. There are three variants
+% for each standard command:
% \cmd{\meta{cmd}r} > \cmd{\meta{cmd}rr} > \cmd{\meta{cmd}rrr}.
% Every level is scaled proportionally in order to preserve the default
% value of the corresponding standard command.
% \baddition
-% \paragraph{\color{black}Definition of \cmd{normalsizer}, \cmd{normalsizerr}, \cmd{normalsizerrr}. Scale factor: 0.05.}
+% \begin{macrocode}
+ \def\fontsize@pre{%
+ \ctm@setlength{\abovedisplayskip}%
+ {.8333\@tempdimb}{.1667\@tempdimb}{.5\@tempdimb}%
+ \ctm@setlength{\abovedisplayshortskip}{\z@}{.25\@tempdimb}{\z@}%
+ \ctm@setlength{\belowdisplayshortskip}%
+ {.5\@tempdimb}{.25\@tempdimb}{.25\@tempdimb}%
+ \setlength{\belowdisplayskip}{\abovedisplayskip}%
+ }
+ \def\fontsize@app{%
+ \abovedisplayskip \the\abovedisplayskip
+ \abovedisplayshortskip \the\abovedisplayshortskip
+ \belowdisplayskip \the\belowdisplayskip
+ \belowdisplayshortskip \the\belowdisplayshortskip
+ }
+% \end{macrocode}
+% {\color{black}Definition of \cmd{smallr}, \cmd{smallrr}, \cmd{smallrrr}. Scale factor: 0,021875.}
+% \begin{macrocode}
+ \setlength{\@tempdima}{0.934375\@tempdimc}%
+ \setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \fontsize@pre
+ \edef\smallr{%
+ \noexpand\@setfontsize\noexpand\smallr
+ {\the\@tempdima}{\the\@tempdimb}%
+ \fontsize@app
+ \let\noexpand\@listi\noexpand\@listi@small
+ }%
+ \setlength{\@tempdima}{0.95625\@tempdimc}%
+ \setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \fontsize@pre
+ \edef\smallrr{%
+ \noexpand\@setfontsize\noexpand\smallrr
+ {\the\@tempdima}{\the\@tempdimb}%
+ \fontsize@app
+ \let\noexpand\@listi\noexpand\@listi@small
+ }%
+ \setlength{\@tempdima}{0.978125\@tempdimc}%
+ \setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \fontsize@pre
+ \edef\smallrrr{%
+ \noexpand\@setfontsize\noexpand\smallrrr
+ {\the\@tempdima}{\the\@tempdimb}%
+ \fontsize@app
+ \let\noexpand\@listi\noexpand\@listi@small
+ }%
+% \end{macrocode}
+% {\color{black}Definition of \cmd{footnotesizer}, \cmd{footnotesizerr}, \cmd{footnotesizerrr}. Scale factor: 0.01979.}
+% \begin{macrocode}
+ \setlength{\@tempdima}{0.85313\@tempdimc}%
+ \setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \fontsize@pre
+ \edef\footnotesizer{%
+ \noexpand\@setfontsize\noexpand\footnotesizer
+ {\the\@tempdima}{\the\@tempdimb}%
+ \fontsize@app
+ \let\noexpand\@listi\noexpand\@listi@footnotesize
+ }%
+ \setlength{\@tempdima}{0.87292\@tempdimc}%
+ \setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \fontsize@pre
+ \edef\footnotesizerr{%
+ \noexpand\@setfontsize\noexpand\footnotesizerr
+ {\the\@tempdima}{\the\@tempdimb}%
+ \fontsize@app
+ \let\noexpand\@listi\noexpand\@listi@footnotesize
+ }%
+ \setlength{\@tempdima}{0.89271\@tempdimc}%
+ \setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \fontsize@pre
+ \edef\footnotesizerrr{%
+ \noexpand\@setfontsize\noexpand\footnotesizerrr
+ {\the\@tempdima}{\the\@tempdimb}%
+ \fontsize@app
+ \let\noexpand\@listi\noexpand\@listi@footnotesize
+ }%
+% \end{macrocode}
+% {\color{black}Definition of \cmd{scriptsizer}, \cmd{scriptsizerr}, \cmd{scriptsizerrr}. Scale factor: 0,0416675.}
+% \begin{macrocode}
+ \setlength{\@tempdima}{0.7083375\@tempdimc}%
+ \setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \edef\scriptsizer{%
+ \noexpand\@setfontsize\noexpand\scriptsizer
+ {\the\@tempdima}{\the\@tempdimb}%
+ }%
+ \setlength{\@tempdima}{0.750005\@tempdimc}%
+ \setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \edef\scriptsizerr{%
+ \noexpand\@setfontsize\noexpand\scriptsizerr
+ {\the\@tempdima}{\the\@tempdimb}%
+ }%
+ \setlength{\@tempdima}{0.7916725\@tempdimc}%
+ \setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \edef\scriptsizerrr{%
+ \noexpand\@setfontsize\noexpand\scriptsizerrr
+ {\the\@tempdima}{\the\@tempdimb}%
+ }%
+% \end{macrocode}
+% {\color{black}Definition of \cmd{tinyr}, \cmd{tinyrr}, \cmd{tinyrrr}. Scale factor: 0.0416675.}
+% \begin{macrocode}
+ \setlength{\@tempdima}{0.5416675\@tempdimc}%
+ \setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \edef\tinyr{%
+ \noexpand\@setfontsize\noexpand\tinyr
+ {\the\@tempdima}{\the\@tempdimb}%
+ }%
+ \setlength{\@tempdima}{0.583335\@tempdimc}%
+ \setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \edef\tinyrr{%
+ \noexpand\@setfontsize\noexpand\tinyrr
+ {\the\@tempdima}{\the\@tempdimb}%
+ }%
+ \setlength{\@tempdima}{0.6250025\@tempdimc}%
+ \setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \edef\tinyrrr{%
+ \noexpand\@setfontsize\noexpand\tinyrrr
+ {\the\@tempdima}{\the\@tempdimb}%
+ }%
+% \end{macrocode}
+% {\color{black}Definition of \cmd{normalsizer}, \cmd{normalsizerr}, \cmd{normalsizerrr}. Scale factor: 0.05.}
% \begin{macrocode}
\setlength{\@tempdima}{1.05\@tempdimc}%
\setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \fontsize@pre
\edef\normalsizer{%
\noexpand\@setfontsize\noexpand\normalsizer
{\the\@tempdima}{\the\@tempdimb}%
+ \fontsize@app
+ \let\noexpand\@listi\noexpand\@listI
}%
\setlength{\@tempdima}{1.1\@tempdimc}%
\setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \fontsize@pre
\edef\normalsizerr{%
\noexpand\@setfontsize\noexpand\normalsizerr
{\the\@tempdima}{\the\@tempdimb}%
+ \fontsize@app
+ \let\noexpand\@listi\noexpand\@listI
}%
\setlength{\@tempdima}{1.15\@tempdimc}%
\setlength{\@tempdimb}{\@tempb\@tempdima}%
\edef\normalsizerrr{%
+ \fontsize@pre
\noexpand\@setfontsize\noexpand\normalsizerrr
{\the\@tempdima}{\the\@tempdimb}%
+ \fontsize@app
+ \let\noexpand\@listi\noexpand\@listI
}%
% \end{macrocode}
-% \paragraph{\color{black}Definition of \cmd{larger}, \cmd{largerr}, \cmd{largerrr}. Scale factor: 0,06.}
+% {\color{black}Definition of \cmd{larger}, \cmd{largerr}, \cmd{largerrr}. Scale factor: 0,06.}
% \begin{macrocode}
\setlength{\@tempdima}{1.26\@tempdimc}%
\setlength{\@tempdimb}{\@tempb\@tempdima}%
@@ -701,7 +877,7 @@ This work has the LPPL maintenance status "author-maintained".
{\the\@tempdima}{\the\@tempdimb}%
}%
% \end{macrocode}
-% \paragraph{\color{black}Definition of \cmd{Larger}, \cmd{Largerr}, \cmd{Largerrr}. Scale factor: 0,072.}
+% {\color{black}Definition of \cmd{Larger}, \cmd{Largerr}, \cmd{Largerrr}. Scale factor: 0,072.}
% \begin{macrocode}
\setlength{\@tempdima}{1.512\@tempdimc}%
\setlength{\@tempdimb}{\@tempb\@tempdima}%
@@ -722,7 +898,7 @@ This work has the LPPL maintenance status "author-maintained".
{\the\@tempdima}{\the\@tempdimb}%
}%
% \end{macrocode}
-% \paragraph{\color{black}Definition of \cmd{LARGEr}, \cmd{LARGErr}, \cmd{LARGErrr}. Scale factor: 0,0865.}
+% {\color{black}Definition of \cmd{LARGEr}, \cmd{LARGErr}, \cmd{LARGErrr}. Scale factor: 0,0865.}
% \begin{macrocode}
\setlength{\@tempdima}{1.8145\@tempdimc}%
\setlength{\@tempdimb}{\@tempb\@tempdima}%
@@ -743,7 +919,7 @@ This work has the LPPL maintenance status "author-maintained".
{\the\@tempdima}{\the\@tempdimb}%
}%
% \end{macrocode}
-% \paragraph{\color{black}Definition of \cmd{huger}, \cmd{hugerr}, \cmd{hugerrr}. Scale factor: 0,1035.}
+% {\color{black}Definition of \cmd{huger}, \cmd{hugerr}, \cmd{hugerrr}. Scale factor: 0,1035.}
% \begin{macrocode}
\setlength{\@tempdima}{2.1775\@tempdimc}%
\setlength{\@tempdimb}{\@tempb\@tempdima}%
@@ -764,7 +940,7 @@ This work has the LPPL maintenance status "author-maintained".
{\the\@tempdima}{\the\@tempdimb}%
}%
% \end{macrocode}
-% \paragraph{\color{black}Definition of \cmd{Huger}, \cmd{Hugerr}, \cmd{Hugerrr}. Scale factor: 0.123.}
+% {\color{black}Definition of \cmd{Huger}, \cmd{Hugerr}, \cmd{Hugerrr}. Scale factor: 0.123.}
% \begin{macrocode}
\setlength{\@tempdima}{2.611\@tempdimc}%
\setlength{\@tempdimb}{\@tempb\@tempdima}%
@@ -789,28 +965,27 @@ This work has the LPPL maintenance status "author-maintained".
% \begin{macrocode}
\normalsize%
% \end{macrocode}
-% The KOMA files do not define \cmd{parindent} and other lengths related to the page dimensions (\cmd{textheight}, \cmd{headheight}, \cmd{headsep}, etc.) Anyway I think that some of these lengths are strictly linked to the font rather than to the page and text dimensions. Particularly \cmd{headheight}, whose value may cause a well known warning if \sty{fancyhdr} is loaded. So we definte the following new
-% lengths:
+% The KOMA files do not define \cmd{parindent} and other lengths related to the page dimensions (\cmd{textheight}, \cmd{headheight}, \cmd{headsep}, etc.) Anyway, I think that some of these lengths are strictly linked to the font rather than to the dimensions of the page and the text, particularly \cmd{headheight}, whose value may cause a well known warning if \sty{fancyhdr} is loaded. So we define the following new lengths:
% \baddition
% \begin{macrocode}
-\setlength\parindent{\f@size pt}%
-\setlength\headheight{\dimexpr(\f@size pt+2pt)}%
+\setlength\parindent{\@tempdimb}%
+\setlength\headheight{\dimexpr(\@tempdimb+2pt)}%
% \end{macrocode}
% \eaddition
-% For these other lengths, all values are calculated proportionally to the main font. I took the \file{bk11.clo} file as a reference point. Note that the differences of these lengths in the files \file{bk10.clo} \file{bk11.clo} and \file{bk12.clo} only affect \cmd{headsep}, \cmd{topskip} and \cmd{footskip}, which are not redefined here.
+% For the following lengths, all values are calculated proportionally to the main font. I took the \file{bk11.clo} file as a reference point. Note that the differences of these lengths in the files \file{bk10.clo} \file{bk11.clo} and \file{bk12.clo} only affect \cmd{headsep}, \cmd{topskip} and \cmd{footskip}, which are not redefined here.
% \baddition
% \begin{macrocode}
-\setlength\smallskipamount{\dimexpr((\f@size pt+1pt)/4) \@plus 1\p@ \@minus 1\p@}%
-\setlength\medskipamount{\dimexpr((\f@size pt+1pt)/2) \@plus 2\p@ \@minus 2\p@}%
-\setlength\bigskipamount{\dimexpr(\f@size pt+1pt) \@plus 4\p@ \@minus 4\p@}%
+\setlength\smallskipamount{\dimexpr((\@tempdimb+1pt)/4) \@plus 1\p@ \@minus 1\p@}%
+\setlength\medskipamount{\dimexpr((\@tempdimb+1pt)/2) \@plus 2\p@ \@minus 2\p@}%
+\setlength\bigskipamount{\dimexpr(\@tempdimb+1pt) \@plus 4\p@ \@minus 4\p@}%
% \end{macrocode}
% \eaddition
% The following table shows the values of some specific lengths
-% defined by the pacakge, relative to some significant settings
-% of the main font and line spacing. The values are exressed in pt
+% defined by the package, in relation to some significant settings
+% of the main font and line spacing. The values are expressed in pt
% and rounded to the second decimal place.
%
-% \begin{small}
+% \begin{footnotesizer}
% \newcolumntype{Y}{@{}S[table-column-width=1.04cm]}
% \noindent\begin{tabular}{@{}m{3.7cm}@{\hskip2mm}YYYYYYYYYYY@{\hskip-2mm}}
% \toprule
@@ -823,7 +998,7 @@ This work has the LPPL maintenance status "author-maintained".
% \cmd{smallskipamount}\ \hfill$\pm$\SI{1}{pt} &2.75 &2.78 &2.8 &2.82 &2.85 &2.88 &2.9 &2.93 &2.95 &2.98 &3\\
% \bottomrule
% \end{tabular}
-% \end{small}
+% \end{footnotesizer}
% \begin{macrocode}
\setlength{\@tempdimb}{\f@baselineskip}%
\ctm@setlength{\parsep}%
@@ -955,7 +1130,7 @@ This work has the LPPL maintenance status "author-maintained".
%
% \paragraph{Excerpt from \file{scrfontsizes.sty}}
%
-% Here is a portion of the \sty{scrfontsizes} package. It simply provides the \cmd{generateclofile} command, without the KOMA-related definitions. There are no reserved names for the \file{.clo} files. The command name is a new name for the KOMA \cmd{generatefontfile}. In fact, what the command generates, is a \file{.clo} file.
+% Here is a portion of the \sty{scrfontsizes} package. It simply provides the \cmd{generateclofile} command, without the KOMA-related definitions. There are no reserved names for the \file{.clo} files. The command name is a new name for the KOMA \cmd{generatefontfile}. In fact what the command generates is a \file{.clo} file.
% \begin{macrocode}
\newcommand*{\generateclofile}[1]{%
\kernel@ifnextchar [{\@generatefontfile{#1}}{\@@generatefontfile{#1}}%
@@ -964,7 +1139,7 @@ This work has the LPPL maintenance status "author-maintained".
\def\@generatefontfile#1[#2]#3{%
\begingroup
% \end{macrocode}
-% At least starting with version 3.31 of the \sty{scrfontsizes} package
+% At least starting from version 3.31 of \sty{scrfontsizes},
% the code of the \cmd{@generatefontfile} and \cmd{@@generatefontfile}
% commands sets the \cmd{parskip} value to |0pt|. We also use |[#2]|
% in place of |[{#2}]| for the optional argument of \cmd{changefontsize}
@@ -992,7 +1167,7 @@ This work has the LPPL maintenance status "author-maintained".
\@percentchar\space This is file `#1#2.clo', generated with^^J%
% \end{macrocode}
% In the next three lines we only replace `scrfontsizes' with `fontsize'
-% and `Markus Kohm' with `Ivan Valbusa', in order to get the correc informations
+% and `Markus Kohm' with `Ivan Valbusa', in order to get the correct information
% in the .log file.
% \begin{macrocode}
\@percentchar\space fontsize
@@ -1103,25 +1278,142 @@ This work has the LPPL maintenance status "author-maintained".
% written in the .clo file if the \cmd{generateclofile} command is used.
% \baddition
% \begin{macrocode}
+ \begingroup\tinyr
+\immediate\write\@fontfile{%
+ \string\def\string\tinyr{%
+ \string\@setfontsize\string\tinyr{\f@size}{\f@baselineskip}%
+ }\@percentchar%
+}%
+\endgroup
+\begingroup\tinyrr
+\immediate\write\@fontfile{%
+ \string\def\string\tinyrr{%
+ \string\@setfontsize\string\tinyrr{\f@size}{\f@baselineskip}%
+ }\@percentchar%
+}%
+\endgroup
+\begingroup\tinyrrr
+\immediate\write\@fontfile{%
+ \string\def\string\tinyrrr{%
+ \string\@setfontsize\string\tinyrrr{\f@size}{\f@baselineskip}%
+ }\@percentchar%
+}%
+ \endgroup
+ \begingroup\scriptsizer
+ \immediate\write\@fontfile{%
+ \string\def\string\scriptsizer{%
+ \string\@setfontsize\string\scriptsizer{\f@size}{\f@baselineskip}%
+ }\@percentchar%
+ }%
+ \endgroup
+ \begingroup\scriptsizerr
+ \immediate\write\@fontfile{%
+ \string\def\string\scriptsizerr{%
+ \string\@setfontsize\string\scriptsizerr{\f@size}{\f@baselineskip}%
+ }\@percentchar%
+ }%
+\endgroup
+ \begingroup\scriptsizerrr
+ \immediate\write\@fontfile{%
+ \string\def\string\scriptsizerrr{%
+ \string\@setfontsize\string\scriptsizerrr{\f@size}{\f@baselineskip}%
+ }\@percentchar%
+ }%
+ \endgroup
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\fs@appnormal{
+ \@percentchar^^J%
+ \@ind\string\abovedisplayskip\space \the\abovedisplayskip^^J%
+ \@ind\string\abovedisplayshortskip\space \the\abovedisplayshortskip^^J%
+ \@ind\string\belowdisplayskip\space \the\belowdisplayskip^^J%
+ \@ind\string\belowdisplayshortskip\space \the\belowdisplayshortskip^^J%
+ \@ind\string\let\string\@listi\string\@listI^^J%
+}
+\def\fs@appsmall{%
+ \@percentchar^^J%
+ \@ind\string\abovedisplayskip\space \the\abovedisplayskip^^J%
+ \@ind\string\abovedisplayshortskip\space \the\abovedisplayshortskip^^J%
+ \@ind\string\belowdisplayskip\space \the\belowdisplayskip^^J%
+ \@ind\string\belowdisplayshortskip\space \the\belowdisplayshortskip^^J%
+ \@ind\string\def\string\@listi{\@percentchar^^J%
+ \@ind\@ind\string\leftmargin\string\leftmargini^^J%
+ \@ind\@ind\string\topsep \the\topsep^^J%
+ \@ind\@ind\string\parsep \the\parsep^^J%
+ \@ind\@ind\string\itemsep \string\parsep^^J%
+ \@ind}\@percentchar^^J%
+}
+ \begingroup\smallr\@listi
+\immediate\write\@fontfile{%
+ \string\def\string\smallr{\@percentchar^^J%
+ \@ind\string\@setfontsize\string\smallr{\f@size}{\f@baselineskip}%
+ \fs@appsmall%
+ }\@percentchar%
+}%
+\endgroup
+\begingroup\smallrr\@listi
+\immediate\write\@fontfile{%
+ \string\def\string\smallrr{\@percentchar^^J%
+ \@ind\string\@setfontsize\string\smallrr{\f@size}{\f@baselineskip}%
+ \fs@appsmall%
+ }\@percentchar%
+}%
+\endgroup
+\begingroup\smallrrr\@listi
+\immediate\write\@fontfile{%
+ \string\def\string\smallrrr{\@percentchar^^J%
+ \@ind\string\@setfontsize\string\smallrrr{\f@size}{\f@baselineskip}%
+ \fs@appsmall%
+ }\@percentchar%
+}%
+\endgroup
+\begingroup\footnotesizer\@listi
+\immediate\write\@fontfile{%
+ \string\def\string\footnotesizer{\@percentchar^^J%
+ \@ind\string\@setfontsize\string\footnotesizer{\f@size}{\f@baselineskip}%
+ \fs@appsmall%
+ }\@percentchar%
+}%
+\endgroup
+\begingroup\footnotesizerr\@listi
+\immediate\write\@fontfile{%
+ \string\def\string\footnotesizerr{\@percentchar^^J%
+ \@ind\string\@setfontsize\string\footnotesizerr{\f@size}{\f@baselineskip}%
+ \fs@appsmall%
+ }\@percentchar%
+}%
+\endgroup
+\begingroup\footnotesizerrr\@listi
+\immediate\write\@fontfile{%
+ \string\def\string\footnotesizerrr{\@percentchar^^J%
+ \@ind\string\@setfontsize\string\footnotesizerrr{\f@size}{\f@baselineskip}%
+ \fs@appsmall%
+ }\@percentchar%
+}%
+\endgroup
\begingroup\normalsizer
\immediate\write\@fontfile{%
- \string\def\string\normalsizer{%
- \string\@setfontsize\string\normalsizer{\f@size}{\f@baselineskip}%
+ \string\def\string\normalsizer{\@percentchar^^J%
+ \@ind\string\@setfontsize\string\normalsizer{\f@size}{\f@baselineskip}%
+ \fs@appnormal%
}\@percentchar%
}%
\endgroup
\begingroup\normalsizerr
\immediate\write\@fontfile{%
- \string\def\string\normalsizerr{%
- \string\@setfontsize\string\normalsizerr{\f@size}{\f@baselineskip}%
- }\@percentchar%
+ \string\def\string\normalsizerr{\@percentchar^^J%
+ \@ind\string\@setfontsize\string\normalsizerr{\f@size}{\f@baselineskip}%
+ \fs@appnormal%
+ }\@percentchar%
}%
\endgroup
\begingroup\normalsizerrr
\immediate\write\@fontfile{%
- \string\def\string\normalsizerrr{%
- \string\@setfontsize\string\normalsizerrr{\f@size}{\f@baselineskip}%
- }\@percentchar%
+ \string\def\string\normalsizerrr{\@percentchar^^J%
+ \@ind\string\@setfontsize\string\normalsizerrr{\f@size}{\f@baselineskip}%
+ \fs@appnormal%
+ }\@percentchar%
}%
\endgroup
\begingroup\larger
@@ -1172,6 +1464,7 @@ This work has the LPPL maintenance status "author-maintained".
\string\@setfontsize\string\Largerrr{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
+\endgroup
\begingroup\LARGEr
\immediate\write\@fontfile{%
\string\def\string\LARGEr{%
@@ -1192,6 +1485,7 @@ This work has the LPPL maintenance status "author-maintained".
\string\@setfontsize\string\LARGErrr{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
+\endgroup
\begingroup\huger
\immediate\write\@fontfile{%
\string\def\string\huger{%
@@ -1212,6 +1506,7 @@ This work has the LPPL maintenance status "author-maintained".
\string\@setfontsize\string\hugerrr{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
+\endgroup
\begingroup\Huger
\immediate\write\@fontfile{%
\string\def\string\Huger{%
@@ -1232,6 +1527,7 @@ This work has the LPPL maintenance status "author-maintained".
\string\@setfontsize\string\Hugerrr{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
+\endgroup
% \end{macrocode}
% \eaddition
% \begin{macrocode}
@@ -1392,45 +1688,60 @@ This work has the LPPL maintenance status "author-maintained".
\@onlypreamble\generateclofile
% \end{macrocode}
% We will now define some internal commands to test the package functions.
+% Since version 0.6 I have been using the \LaTeX 3 solution provided by
+% Enrico Gregorio in place of the previous macros based on \sty{etoolbox}.
% \baddition
% \begin{macrocode}
\ExplSyntaxOn
-\NewExpandableDocumentCommand{\getlength}{O{5}m}
+\NewDocumentCommand{\printsamples}
+{
+ m
+ m
+ O{tiny,tinyr,tinyrr,tinyrrr,
+ scriptsize,scriptsizer,scriptsizerr,scriptsizerrr,
+ footnotesize,footnotesizer,footnotesizerr,footnotesizerrr,
+ small,smallr,smallrr,smallrrr,
+ normalsize,normalsizer,normalsizerr,normalsizerrr,
+ large,larger,largerr,largerrr,
+ Large,Larger,Largerr,Largerrr,
+ LARGE,LARGEr,LARGErr,LARGErrr,
+ huge,huger,hugerr,hugerrr,
+ Huge,Huger,Hugerr,Hugerrr}
+}
{
- \fp_eval:n { round(#2,#1) }
+ \fontsize_printsamples:nnn { #1 } { #2 } { #3 }
}
-\ExplSyntaxOff
-\def\fontsize@lipsum{As any dedicated reader can clearly see, the Ideal of
- practical reason is a representation of, as far as I know, the
- things in themselves; as I have shown elsewhere, the phenomena
- should only be used as a canon for our understanding. The paralogisms
- of practical reason are what first give rise to the architectonic of
- practical reason. As will be shown, reason would
- be made to contradict.}
-\chardef\fsbslash=`\\
-% Thanks to @Werner (https://tex.stackexchange.com/a/87423/231952)
-\newcommand{\sizesamples}[1]{%
- \def\nextitem{\par}% Separator
- \renewcommand*{\do}[1]{\nextitem\bgroup\csname##1\endcsname
- \noindent{\csname ##1\endcsname \texttt{\fsbslash ##1}:
- \getlength[2]{\f@size}\,pt on \getlength[2]{\the\baselineskip}\,pt.} \fontsize@lipsum\par\egroup
- }% How to process each item
- \docsvlist{#1}% Process list
+% helper function to print the rounded sizes
+\cs_new:Nn \__fontsize_round_f:n
+{
+ \fp_eval:n { round(\use:c{f@#1},1) } pt
}
-\NewDocumentCommand \printsamples { m m O{
- normalsize,normalsizer,normalsizerr,normalsizerrr,
- large,larger,largerr,largerrr,
- Large,Larger,Largerr,Largerrr,
- LARGE,LARGEr,LARGErr,LARGErrr,
- huge,huger,hugerr,hugerrr,
- Huge,Huger,Hugerr,Hugerrr} }
+
+% the main function
+\cs_new_protected:Nn \fontsize_printsamples:nnn
{
- \changefontsize[#1]{#2}
- \subsubsection*{Text samples for #2 on #1}
- \sizesamples{#3}
+ % group to bound the font changes
+ \group_begin:
+ % set the size
+ \changefontsize[#1]{#2}\selectfont
+ % header
+ \subsubsection*{Text~samples~for~#2~on~#1}
+ % map through the desired sizes
+ \clist_map_inline:nn { #3 }
+ {
+ \use:c{##1} % set the font size
+ \noindent\texttt{\symbol{92}##1}:~ % print the font size command
+ \__fontsize_round_f:n {size}~ % print the size in points
+ \__fontsize_round_f:n {baselineskip}.~ % print the baseline skip in points
+ \kant[1][1-3] % sample text
+ \par\addvspace{\medskipamount} % finish up
+ }
+ % close the group
+ \group_end:
}
+\ExplSyntaxOff
% \end{macrocode}
% \eaddition
% \iffalse
diff --git a/macros/latex/contrib/fontsize/fontsize.pdf b/macros/latex/contrib/fontsize/fontsize.pdf
index 742ff73fe3..7db67bf43d 100644
--- a/macros/latex/contrib/fontsize/fontsize.pdf
+++ b/macros/latex/contrib/fontsize/fontsize.pdf
Binary files differ
diff --git a/macros/latex/contrib/nicematrix/nicematrix-french.pdf b/macros/latex/contrib/nicematrix/nicematrix-french.pdf
index 833a876d41..b5ce89cab3 100644
--- a/macros/latex/contrib/nicematrix/nicematrix-french.pdf
+++ b/macros/latex/contrib/nicematrix/nicematrix-french.pdf
Binary files differ
diff --git a/macros/latex/contrib/nicematrix/nicematrix-french.tex b/macros/latex/contrib/nicematrix/nicematrix-french.tex
index ca8beb88fc..ef0cd4123b 100644
--- a/macros/latex/contrib/nicematrix/nicematrix-french.tex
+++ b/macros/latex/contrib/nicematrix/nicematrix-french.tex
@@ -1,4 +1,4 @@
-% -*- coding: utf-8 ; -*-
+% -*- coding: utf-8 ; -*-
\documentclass[dvipsnames]{article}% dvipsnames is for xcolor (loaded by Tikz, loaded by nicematrix)
\usepackage{xltxtra}
\usepackage[french]{babel}
@@ -122,9 +122,10 @@ classique |latex|-|dvips|-|ps2pdf| (ou Adobe Distiller). \textsl{Néanmoins, le
ne peut être compilé qu'avec XeLaTeX.}
\bigskip
-Cette extension nécessite et charge les extensions \pkg{l3keys2e}, \pkg{xparse}, \pkg{array}, \pkg{amsmath} et
-\pkg{pgfcore} ainsi que le module \pkg{shapes} de \textsc{pgf} (l'extension \pkg{tikz}, qui est une surcouche de
-\textsc{pgf}, n'est \emph{pas} chargée). L'utilisateur final n'a qu'à charger l'extension \pkg{nicematrix} avec
+Cette extension nécessite et charge les extensions \pkg{l3keys2e}, \pkg{array},
+\pkg{amsmath} et \pkg{pgfcore} ainsi que le module \pkg{shapes} de \textsc{pgf}
+(l'extension \pkg{tikz}, qui est une surcouche de \textsc{pgf}, n'est \emph{pas}
+chargée). L'utilisateur final n'a qu'à charger l'extension \pkg{nicematrix} avec
l'instruction habituelle : |\usepackage{nicematrix}|.
@@ -215,7 +216,7 @@ doit être chargé avec l'option |define-L-C-R|.
\section{L'espace vertical entre les rangées}
-Il est bien connu que certaines rangées des tableaux créés par défault avec
+Il est bien connu que certaines rangées des tableaux créés par défaut avec
LaTeX sont trop proches l'une de l'autre. On en donne ci-dessous un exemple
classique.
@@ -538,11 +539,11 @@ arum & iris & jacinthe & muguet
\end{center}
\medskip
-\colorbox{yellow!30}{Nouveau 5.7}\enskip Comme on le voit sur cet exemple, on
-peut fixer la couleur de fond avec la clé |fill| et la couleur du cadre avec la
-clé |draw|\footnote{Si la clé |draw| est utilisée sans valeur, c'est la couleur
- par défaut des filets de tableaux qui est utilisée.}. On peut aussi fixer
-l'épaisseur du trait avec la clé |line-width|.
+Comme on le voit sur cet exemple, on peut fixer la couleur de fond avec la clé
+|fill| et la couleur du cadre avec la clé |draw|\footnote{Si la clé |draw| est
+ utilisée sans valeur, c'est la couleur par défaut des filets de tableaux qui
+ est utilisée.}. On peut aussi fixer l'épaisseur du trait avec la clé
+|line-width|.
@@ -1087,7 +1088,9 @@ $\begin{pNiceArray}{cccc:c}
\bigskip
Il est possible de changer dans \pkg{nicematrix} la lettre utilisée pour
indiquer dans le préambule un trait vertical en pointillés avec l'option
-|letter-for-dotted-lines| disponible dans |\NiceMatrixOptions|.
+|letter-for-dotted-lines| disponible dans |\NiceMatrixOptions|.
+Ainsi libérée, la lettre «|:|» peut être utilisée par ailleurs (par exemple par
+l'extension \pkg{arydshln}).
\bigskip
@@ -1097,7 +1100,7 @@ insère rendent le tableau plus large ou plus long d'une quantité égale à la
largeur du trait\footnote{En fait, cela est vrai pour |\hline| et «\verb+|+»
mais pas pour |\cline| : cf. p.~\pageref{remark-cline}}. Avec
\pkg{nicematrix}, les lignes en pointillés tracées par |\hdottedline| et «|:|»
-ont le même effet.
+ont ce même effet.
@@ -1142,7 +1145,7 @@ Concernant ce phénomène, Adobe Reader donne de meilleurs résultats que
MuPDF.
\end{itemize}
-L'extension \pkg{nicematrix} proposent des outils qui permettent d'éviter ces
+L'extension \pkg{nicematrix} propose des outils qui permettent d'éviter ces
inconvénients.
\end{itemize}
@@ -1277,11 +1280,11 @@ rangées avec les deux couleurs à partir de la rangée dont le numéro est donn
premier argument (obligatoire), comme le fait la commande |\rowcolors| de
\pkg{xcolor}.
-\colorbox{yellow!50}{\textbf{Nouveau 5.8}}\enskip
+\colorbox{yellow!30}{Nouveau 5.8}\enskip
En fait, le premier argument (obligatoire) peut, plus généralement, contenir
une liste d'intervalles correspondant à l'ensemble des rangées sur lesquelles
portera l'effet de |\rowcolors| (un intervalle de la forme $i$ désigne en fait
-l'intervalle constitué de toutes les rangées du tableau à partir de de la rangée~$i$).
+l'intervalle constitué de toutes les rangées du tableau à partir de la rangée~$i$).
\bigskip
@@ -1290,12 +1293,12 @@ optionnel en dernière position (l'argument optionel en première position
correspond à l'espace colorimétrique). Les clés disponibles sont |cols|,
|restart| et |respect-blocks|.
\begin{itemize}
-\item \colorbox{yellow!50}{\textbf{Nouveau 5.8}}\enskip
+\item \colorbox{yellow!30}{Nouveau 5.8}\enskip
La clé |cols| décrit un ensemble de colonnes sur lesquelles portera
l'effet de |\rowcolors|. Cet ensemble de colonnes est une liste d'intervalles de
la forme $i$|-|$j$.
-\item \colorbox{yellow!50}{\textbf{Nouveau 5.8}}\enskip Avec la clé |restart|, chacun
+\item \colorbox{yellow!30}{Nouveau 5.8}\enskip Avec la clé |restart|, chacun
des intervalles de rangées spécifié par le premier argument de |\rowcolors|
recommence avec la même couleur.\footnote{Autrement, la couleur d'une rangée ne
dépend que de la partié de son numéro.}
@@ -1373,7 +1376,8 @@ Henri & 14 \\
\bigskip
-\item La commande |\chessboardcolors| prend en arguments obligatoires deux
+\item \label{chessboardcolors}%
+La commande |\chessboardcolors| prend en arguments obligatoires deux
couleurs et colorie les cases en quinconces avec les deux couleurs.
\medskip
@@ -2137,7 +2141,7 @@ $\begin{pmatrix}
\subsection{Les labels des lignes en pointillés}
Les commandes |\Ldots|, |\Cdots|, |\Vdots|, |\Ddots|, |\Iddots| et |\Hdotsfor|
-(ainsi que la commande |\line| dans le |code-after| décrite
+(ainsi que la commande |\line| dans le |\CodeAfter| décrite
p.~\pageref{line-in-code-after}) peuvent en fait prendre deux arguments
optionnels spécifiés par les caractères |_| et |^| pour des labels situés
au-dessous et au-dessus de la ligne. Les arguments sont composés en mode
@@ -2161,7 +2165,7 @@ $\begin{bNiceMatrix}
\label{customization}
Les lignes pointillées tracées par |\Ldots|, |\Cdots|, |\Vdots|, |\Ddots|,
-|\Iddots| et |\Hdotsfor| (ainsi que par la commande |\line| dans le |code-after|
+|\Iddots| et |\Hdotsfor| (ainsi que par la commande |\line| dans le |\CodeAfter|
décrite p.~\pageref{line-in-code-after}) peuvent être paramétrées par trois
options (que l'on met entre crochets après la commande) :
%
@@ -2289,47 +2293,193 @@ $\begin{bNiceMatrix}[margin,hvlines]
\end{bNiceMatrix}$
-\section{Le code-after}
+\section{Le \textbackslash CodeAfter}
\label{code-after}
+On a présenté p.~\pageref{code-before} la clé |code-before|. Il existe en fait
+une clé similaire |code-after| qui peut être utilisée pour indiquer du code qui
+sera exécuté après la construction du tableau.
-L'option |code-after| peut être utilisée pour indiquer du code qui sera exécuté
-après la construction de la matrice.\footnote{Il existe aussi une clé
- |code-before| décrite p.~\pageref{code-before}.}
+\medskip
+Pour améliorer la lisibilité du code, une syntaxe alternative est proposée : on
+peut spécifier les instructions du |code-after| à la fin de l'environnement,
+après le mot-clé |\CodeAfter|.
+
+\medskip
+Deux commandes spéciales sont disponibles dans le |\CodeAfter| : |\line| et
+|\SubMatrix|.
-Une commande spéciale, nommée |\line| est disponible pour tracer directement des
-lignes en pointillés entre les cases. Elle prend deux arguments correspondant
-aux deux cases à relier, chacun de la forme $i$-$j$ où $i$ est le numéro de
-ligne et $j$ est le numéro de colonne. Elle peut par exemple être utilisée pour
-tracer une ligne entre deux cases adjacentes comme dans l'exemple suivant.
+
+\subsection{La commande \textbackslash line dans le \textbackslash CodeAfter}
+
+La commande |\line| permet de tracer directement des lignes en pointillés entre
+les cases. Elle prend deux arguments correspondant aux deux cases à relier,
+chacun de la forme $i$-$j$ où $i$ est le numéro de ligne et $j$ est le numéro de
+colonne. Elle peut par exemple être utilisée pour tracer une ligne entre deux
+cases adjacentes comme dans l'exemple suivant.
\label{line-in-code-after}
\medskip
\begin{BVerbatim}[baseline=c,boxwidth=11cm]
\NiceMatrixOptions{xdots/shorten = 0.6 em}
-\begin{pNiceMatrix}[~emphase#code-after=\line{2-2}{3-3}@]
+\begin{pNiceMatrix}
I & 0 & \Cdots &0 \\
0 & I & \Ddots &\Vdots\\
\Vdots &\Ddots & I &0 \\
0 &\Cdots & 0 &I
+~emphase#\CodeAfter \line{2-2}{3-3}@
\end{pNiceMatrix}
\end{BVerbatim}
\begin{scope}
\NiceMatrixOptions{xdots/shorten = 0.6 em}
-$\begin{pNiceMatrix}[code-after=\line{2-2}{3-3}]
+$\begin{pNiceMatrix}
I & 0 & \Cdots &0 \\
0 & I & \Ddots &\Vdots\\
\Vdots &\Ddots & I &0 \\
0 &\Cdots & 0 &I
+\CodeAfter \line{2-2}{3-3}
\end{pNiceMatrix}$
\end{scope}
+\subsection{La commande \textbackslash SubMatrix dans le \textbackslash CodeAfter}
+
+\label{sub-matrix}
+
+\colorbox{yellow!50}{\textbf{Nouveau 5.10}}\enskip
+La commande |\SubMatrix| permet de positionner des délimiteurs sur une partie du
+tableau considérée comme une sous-matrice. La commande |\SubMatrix| prend cinq
+arguments :
+\begin{itemize}
+\item le premier argument est le délimiteur gauche qui peut être n'importe
+quel délimiteur extensible de LaTeX : |(|, |[|, |\{|, |\langle|, |\lgroup|,
+|\lfloor|, etc. mais aussi le délimiteur nul |.| ;
+\item le deuxième argument est le coin supérieur gauche de la sous-matrice avec
+la syntaxe $i$|-|$j$ où $i$ est le numéro de rangée et $j$ le numéro de colonne
+;
+\item le troisième argument est le coin inférieur droit avec la même syntaxe ;
+\item la quatrième argument est le délimiteur droit ;
+\item le cinquième argument, optionnel, entre crochets, est une liste de couples
+clé-valeur.
+\end{itemize}
+
+On remarquera que la commande |\SubMatrix| trace les délimiteurs après la
+construction de la matrice : aucun espace n'est inséré par la commande
+|\SubMatrix|. C'est pourquoi, dans l'exemple suivant, on a utilisé la clé
+|margin| et on a inséré à la main de l'espace entre la troisième et la quatrième
+colonne avec |@{\hspace{1.5em}}| dans le préambule du tableau.
+
\medskip
-Pour améliorer la lisibilité du code, une syntaxe alternative est proposée : on
-peut spécifier les instructions du |code-after| à la fin de l'environnement,
-après le mot-clé |\CodeAfter| (pour un exemple, voir page
-\pageref{exemple-CodeAfter}).
+\begin{scope}
+\fvset{commandchars=\~\#\+}%
+\begin{BVerbatim}[boxwidth=11cm,baseline=c]
+\[\begin{NiceArray}{ccc~emphase#@{\hspace{1.5em}}+c}%
+ [cell-space-limits=2pt,~emphase#margin+]
+ 1 & 1 & 1 & x \\
+\dfrac{1}{4} & \dfrac{1}{2} & \dfrac{1}{4} & y \\
+ 1 & 2 & 3 & z
+\CodeAfter
+~emphase#\SubMatrix({1-1}{3-3})+
+~emphase#\SubMatrix({1-4}{3-4})+
+\end{NiceArray}\]
+\end{BVerbatim}
+\end{scope}
+$\begin{NiceArray}{ccc@{\hspace{1.5em}}c}[cell-space-limits=2pt,margin]
+ 1 & 1 & 1 & x \\
+\dfrac{1}{4} & \dfrac{1}{2} & \dfrac{1}{4} & y \\
+ 1 & 2 & 3 & z
+\CodeAfter
+\SubMatrix({1-1}{3-3})
+\SubMatrix({1-4}{3-4})
+\end{NiceArray}$
+\bigskip
+Les options de la commande |\SubMatrix| sont les suivantes :
+%
+\begin{itemize}
+\item |left-xshift| et |right-xshift| déplacent horizontalement les délimiteurs
+(il existe aussi la clé |xshift| qui permet de régler simultanément ces deux
+clés) ;
+\item |extra-height| ajoute une quantité à la hauteur totale des délimiteurs
+(hauteur~|\ht| + profondeur |\dp|) ;
+\item |delimiters-color| permet de fixer la couleur des délimiteurs (cette clé
+est également disponible dans |\NiceMatrixOptions| et au niveau des
+environnements à délimiteurs ou comme option de |\CodeAfter|) ;
+\item |slim| qui est une clé booléenne : lorsqu'elle est utilisée la position
+horizontale des délimiteurs est calculée uniquement sur le contenu des cases
+de la sous-matrice alors, que, dans le cas général, elle est calculée sur le
+contenu des cases des colonnes mises en jeu (voir exemple ci-dessous).
+\end{itemize}
+
+Ces clés sont aussi accessibles dans |\NiceMatrixOptions|, au niveau des
+environnements de \pkg{nicematrix} ou comme option de |\CodeAfter| avec le
+préfixe |sub-matrix|, c'est-à-dire qu'elles sont alors nommées
+|sub-matrix/left-xshift|, |sub-matrix/right-xshift|, |sub-matrix/xshift|, etc.
+
+\bigskip
+\begin{scope}
+\fvset{commandchars=\~\#\!}%
+\begin{BVerbatim}[baseline=c,boxwidth=11cm]
+$\begin{NiceArray}{cc@{\hspace{5mm}}l}[cell-space-limits=2pt]
+ & & \frac12 \\
+ & & \frac14 \\[1mm]
+a & b & \frac12a+\frac14b \\
+c & d & \frac12c+\frac14d \\
+\CodeAfter
+\SubMatrix({1-3}{2-3})
+\SubMatrix({3-1}{4-2})
+\SubMatrix({3-3}{4-3})
+\end{NiceArray}$
+\end{BVerbatim}
+\end{scope}
+$\begin{NiceArray}{cc@{\hspace{5mm}}l}%
+ [cell-space-limits=2pt]
+ & & \frac12 \\
+ & & \frac14 \\[1mm]
+a & b & \frac12a+\frac14b \\
+c & d & \frac12c+\frac14d \\
+\CodeAfter
+\SubMatrix({1-3}{2-3})
+\SubMatrix({3-1}{4-2})
+\SubMatrix({3-3}{4-3})
+\end{NiceArray}$
+
+\medskip
+Voici le même exemple avec la clé |slim| pour l'une des sous-matrices.
+
+\medskip
+\begin{scope}
+\fvset{commandchars=\~\#\!}%
+\begin{BVerbatim}[baseline=c,boxwidth=11cm]
+$\begin{NiceArray}{cc@{\hspace{5mm}}l}%
+ [cell-space-limits=2pt]
+ & & \frac12 \\
+ & & \frac14 \\[1mm]
+a & b & \frac12a+\frac14b \\
+c & d & \frac12c+\frac14d \\
+\CodeAfter
+\SubMatrix({1-3}{2-3})[~emphase#slim!]
+\SubMatrix({3-1}{4-2})
+\SubMatrix({3-3}{4-3})
+\end{NiceArray}$
+\end{BVerbatim}
+\end{scope}
+%
+$\begin{NiceArray}{cc@{\hspace{5mm}}l}[cell-space-limits=2pt]
+ & & \frac12 \\
+ & & \frac14 \\[1mm]
+a & b & \frac12a+\frac14b \\
+c & d & \frac12c+\frac14d \\
+\CodeAfter
+\SubMatrix({1-3}{2-3})[slim]
+\SubMatrix({3-1}{4-2})
+\SubMatrix({3-3}{4-3})
+\end{NiceArray}$
+
+
+\bigskip
+Il existe aussi une clé |name| qui permet de donner un nom à une sous-matrice
+créée par une commande |\SubMatrix|. Ce nom est utilisé pour créer des nœuds
+PGF/Tikz : voir p.~\pageref{node-sub-matrix}.
\section{Les notes dans les tableaux}
@@ -2654,7 +2804,7 @@ Pour un exemple de personnalisation des notes de tableau, voir p.~\pageref{ex:no
\subsection{Utilisation de \{NiceTabular\} avec threeparttable}
-Si vous souhaitez utiliser l'environnement |{NiceTabular}| ou |{NiceTAbular*}|
+Si vous souhaitez utiliser l'environnement |{NiceTabular}| ou |{NiceTabular*}|
dans un environnement |{threeparttable}| de l'extension éponyme, vous devez
patcher |{threeparttable}| avec le code suivant (avec une version de LaTeX
postérieure à 2020/10/01).
@@ -2836,7 +2986,7 @@ colonne courante\footnote{On rappelle que le numéro de la «première rangée»
existe) est $0$ également.}. Bien entendu, l'utilisateur ne doit pas modifier
les valeurs de ces compteurs qui sont utilisés en interne par \pkg{nicematrix}.
-Dans le |code-before| (cf. p. \pageref{code-before}) et dans le |code-after|
+Dans le |code-before| (cf. p. \pageref{code-before}) et dans le |\CodeAfter|
(cf. p. \pageref{code-after}), |iRow| représente le nombre total de rangées
(hors éventuelles rangées extérieures) et |jCol| le nombre total de colonnes
(hors potentielles colonnes extérieures).
@@ -3024,7 +3174,7 @@ sont accessibles à travers les noms «\textsl{nom}-$i$-$j$» où \textsl{nom} e
le nom donné au tableau et $i$ et $j$ les numéros de rangée et de colonne de la
case considérée. On peut les utiliser avec \textsc{pgf} mais l'utilisateur final
préférera sans doute utiliser Tikz (qui est une sur-couche de \textsc{pgf}). Il
-faut néanmoins se souvenir que \pkg{nicematrix} ne charge pas Tikz par défault.
+faut néanmoins se souvenir que \pkg{nicematrix} ne charge pas Tikz par défaut.
Dans les exemples qui suivent, on suppose que Tikz a été chargé par
l'utilisateur.
@@ -3051,7 +3201,7 @@ Ne pas oublier les options |remember picture| et |overlay|.
\bigskip
-Dans le |code-after|, et si Tikz est chargé, les choses sont plus simples. On
+Dans le |\CodeAfter|, et si Tikz est chargé, les choses sont plus simples. On
peut (et on doit) désigner les nœuds sous la forme $i$-$j$ : il n'y a pas à
préciser l'environnement qui est évidemment l'environnement courant.
@@ -3118,33 +3268,33 @@ seconds avec l'option |create-large-nodes|.\footnote{Il existe aussi l'option
|create-medium-nodes| et |create-large-nodes|.}
\medskip
-Ces nœuds ne sont pas utilisés par défault par \pkg{nicematrix}.
+Ces nœuds ne sont pas utilisés par défaut par \pkg{nicematrix}.
\medskip
Les noms des «nœuds moyens» s'obtiennent en ajoutant le suffixe «|-medium|» au
nom des nœuds normaux. Dans l'exemple suivant, on a surligné tous les «nœuds
moyens». Nous considérons que cet exemple se suffit à lui-même comme définition
de ces nœuds.
-\[\begin{pNiceMatrix}[
- create-medium-nodes,
- code-after = {\begin{tikzpicture}
- [every node/.style = {fill = red!15,
- blend mode = multiply,
- inner sep = 0 pt},
- name suffix = -medium]
- \node [fit = (1-1)] {} ;
- \node [fit = (1-2)] {} ;
- \node [fit = (1-3)] {} ;
- \node [fit = (2-1)] {} ;
- \node [fit = (2-2)] {} ;
- \node [fit = (2-3)] {} ;
- \node [fit = (3-1)] {} ;
- \node [fit = (3-2)] {} ;
- \node [fit = (3-3)] {} ;
- \end{tikzpicture}}]
+\[\begin{pNiceMatrix}[create-medium-nodes]
a & a + b & a + b + c \\
a & a & a + b \\
a & a & a
+\CodeAfter
+\begin{tikzpicture}
+ [every node/.style = {fill = red!15,
+ blend mode = multiply,
+ inner sep = 0 pt},
+ name suffix = -medium]
+\node [fit = (1-1)] {} ;
+\node [fit = (1-2)] {} ;
+\node [fit = (1-3)] {} ;
+\node [fit = (2-1)] {} ;
+\node [fit = (2-2)] {} ;
+\node [fit = (2-3)] {} ;
+\node [fit = (3-1)] {} ;
+\node [fit = (3-2)] {} ;
+\node [fit = (3-3)] {} ;
+\end{tikzpicture}
\end{pNiceMatrix}\]
@@ -3156,25 +3306,25 @@ de ces nÅ“uds.\footnote{Il n'y a pas de «nÅ“uds larges» créés dans les rangÃ
colonnes extérieures (pour ces rangées et colonnes, voir
p.~\pageref{exterior}).}
-\[\begin{pNiceMatrix}[
- create-large-nodes,
- code-after = {\begin{tikzpicture}
- [every node/.style = {blend mode = multiply,
- inner sep = 0 pt},
- name suffix = -large]
- \node [fit = (1-1),fill = red!15] {} ;
- \node [fit = (1-3),fill = red!15] {} ;
- \node [fit = (2-2),fill = red!15] {} ;
- \node [fit = (3-1),fill = red!15] {} ;
- \node [fit = (3-3),fill = red!15] {} ;
- \node [fit = (1-2),fill = blue!15] {} ;
- \node [fit = (2-1),fill = blue!15] {} ;
- \node [fit = (2-3),fill = blue!15] {} ;
- \node [fit = (3-2),fill = blue!15] {} ;
- \end{tikzpicture}}]
+\[\begin{pNiceMatrix}[create-large-nodes]
a & a + b & a + b + c \\
a & a & a + b \\
a & a & a
+\CodeAfter
+\begin{tikzpicture}
+ [every node/.style = {blend mode = multiply,
+ inner sep = 0 pt},
+ name suffix = -large]
+\node [fit = (1-1),fill = red!15] {} ;
+\node [fit = (1-3),fill = red!15] {} ;
+\node [fit = (2-2),fill = red!15] {} ;
+\node [fit = (3-1),fill = red!15] {} ;
+\node [fit = (3-3),fill = red!15] {} ;
+\node [fit = (1-2),fill = blue!15] {} ;
+\node [fit = (2-1),fill = blue!15] {} ;
+\node [fit = (2-3),fill = blue!15] {} ;
+\node [fit = (3-2),fill = blue!15] {} ;
+\end{tikzpicture}
\end{pNiceMatrix}\]
@@ -3189,25 +3339,25 @@ utilisé les options |left-margin| et |right-margin|.\footnote{Les options
aucune valeur n'est donnée, c'est la valeur par défaut qui est utilisée et
elle est égale à |\arraycolsep| (valeur initiale : 5~pt). Il existe aussi une
option |margin| pour fixer à la fois |left-margin| et |right-margin|.}
-\[\begin{pNiceMatrix}[
- create-large-nodes,left-margin,right-margin,
- code-after = {\begin{tikzpicture}
- [every node/.style = {blend mode = multiply,
- inner sep = 0 pt},
- name suffix = -large]
- \node [fit = (1-1),fill = red!15] {} ;
- \node [fit = (1-3),fill = red!15] {} ;
- \node [fit = (2-2),fill = red!15] {} ;
- \node [fit = (3-1),fill = red!15] {} ;
- \node [fit = (3-3),fill = red!15] {} ;
- \node [fit = (1-2),fill = blue!15] {} ;
- \node [fit = (2-1),fill = blue!15] {} ;
- \node [fit = (2-3),fill = blue!15] {} ;
- \node [fit = (3-2),fill = blue!15] {} ;
- \end{tikzpicture}}]
+\[\begin{pNiceMatrix}[create-large-nodes,left-margin,right-margin]
a & a + b & a + b + c \\
a & a & a + b \\
a & a & a
+\CodeAfter
+\begin{tikzpicture}
+ [every node/.style = {blend mode = multiply,
+ inner sep = 0 pt},
+ name suffix = -large]
+\node [fit = (1-1),fill = red!15] {} ;
+\node [fit = (1-3),fill = red!15] {} ;
+\node [fit = (2-2),fill = red!15] {} ;
+\node [fit = (3-1),fill = red!15] {} ;
+\node [fit = (3-3),fill = red!15] {} ;
+\node [fit = (1-2),fill = blue!15] {} ;
+\node [fit = (2-1),fill = blue!15] {} ;
+\node [fit = (2-3),fill = blue!15] {} ;
+\node [fit = (3-2),fill = blue!15] {} ;
+\end{tikzpicture}
\end{pNiceMatrix}\]
\medskip
@@ -3215,25 +3365,26 @@ Il est aussi possible d'ajouter de l'espace sur les côtés du tableau avec les
options |extra-left-margin| et |extra-right-margin|. Ces marges ne sont pas
incorporées dans les «nœuds larges». Dans l'exemple suivant, nous avons utilisé
|extra-left-margin| et |extra-right-margin| avec la valeur $3$~pt.
-\[\begin{pNiceMatrix}[
- create-large-nodes,left-margin,right-margin,extra-right-margin=3pt,extra-left-margin=3pt,
- code-after = {\begin{tikzpicture}
- [every node/.style = {blend mode = multiply,
- inner sep = 0 pt},
- name suffix = -large]
- \node [fit = (1-1),fill = red!15] {} ;
- \node [fit = (1-3),fill = red!15] {} ;
- \node [fit = (2-2),fill = red!15] {} ;
- \node [fit = (3-1),fill = red!15] {} ;
- \node [fit = (3-3),fill = red!15] {} ;
- \node [fit = (1-2),fill = blue!15] {} ;
- \node [fit = (2-1),fill = blue!15] {} ;
- \node [fit = (2-3),fill = blue!15] {} ;
- \node [fit = (3-2),fill = blue!15] {} ;
- \end{tikzpicture}}]
+\[\begin{pNiceMatrix}%
+ [create-large-nodes,left-margin,right-margin,extra-right-margin=3pt,extra-left-margin=3pt]
a & a + b & a + b + c \\
a & a & a + b \\
a & a & a
+\CodeAfter
+\begin{tikzpicture}
+ [every node/.style = {blend mode = multiply,
+ inner sep = 0 pt},
+ name suffix = -large]
+\node [fit = (1-1),fill = red!15] {} ;
+\node [fit = (1-3),fill = red!15] {} ;
+\node [fit = (2-2),fill = red!15] {} ;
+\node [fit = (3-1),fill = red!15] {} ;
+\node [fit = (3-3),fill = red!15] {} ;
+\node [fit = (1-2),fill = blue!15] {} ;
+\node [fit = (2-1),fill = blue!15] {} ;
+\node [fit = (2-3),fill = blue!15] {} ;
+\node [fit = (3-2),fill = blue!15] {} ;
+\end{tikzpicture}
\end{pNiceMatrix}\]
@@ -3267,7 +3418,8 @@ noix & noisette & brugnon
\vspace{1cm}
\begin{minipage}[c]{7cm}
-Ci-contre, on a colorié toutes les cases de ce tableau avec |\chessboardcolors|.
+Ci-contre, on a colorié toutes les cases de ce tableau avec
+|\chessboardcolors| (cf.~p.~\pageref{chessboardcolors}).
\end{minipage}
\hspace{1.5cm}
\begin{scope}
@@ -3288,25 +3440,25 @@ Voici maintenant tous les «nœuds larges» de ce tableau (sans utilisation de
\hspace{1.5cm}
\begin{scope}
\large
-\begin{NiceTabular}[c]{w{l}{2cm}ll}[hvlines,
- create-large-nodes,
- code-after = {\begin{tikzpicture}
- [every node/.style = {blend mode = multiply,
- inner sep = 0 pt},
- name suffix = -large]
- \node [fit = (1-1),fill = red!15] {} ;
- \node [fit = (1-3),fill = red!15] {} ;
- \node [fit = (2-2),fill = red!15] {} ;
- \node [fit = (3-1),fill = red!15] {} ;
- \node [fit = (3-3),fill = red!15] {} ;
- \node [fit = (1-2),fill = blue!15] {} ;
- \node [fit = (2-1),fill = blue!15] {} ;
- \node [fit = (2-3),fill = blue!15] {} ;
- \node [fit = (3-2),fill = blue!15] {} ;
- \end{tikzpicture}}]
+\begin{NiceTabular}[c]{w{l}{2cm}ll}[hvlines,create-large-nodes]
fraise & amande & abricot \\
prune & pêche & poire \\[1ex]
noix & noisette & brugnon
+\CodeAfter
+\begin{tikzpicture}
+ [every node/.style = {blend mode = multiply,
+ inner sep = 0 pt},
+ name suffix = -large]
+\node [fit = (1-1),fill = red!15] {} ;
+\node [fit = (1-3),fill = red!15] {} ;
+\node [fit = (2-2),fill = red!15] {} ;
+\node [fit = (3-1),fill = red!15] {} ;
+\node [fit = (3-3),fill = red!15] {} ;
+\node [fit = (1-2),fill = blue!15] {} ;
+\node [fit = (2-1),fill = blue!15] {} ;
+\node [fit = (2-3),fill = blue!15] {} ;
+\node [fit = (3-2),fill = blue!15] {} ;
+\end{tikzpicture}
\end{NiceTabular}
\end{scope}
@@ -3317,7 +3469,7 @@ noix & noisette & brugnon
L'extension \pkg{nicematrix} crée un nœud PGF-Tikz indiquant la position
potentielle de chaque filet horizontal (avec les noms |row-|$i$) et de chaque
filet vertical (avec les noms |col-|$j$), comme décrit sur la figure ci-dessous.
-Ces nœuds sont accessibles dans le |code-before| et dans le |code-after|.
+Ces nœuds sont accessibles dans le |code-before| et dans le |\CodeAfter|.
\begin{center}
\begin{NiceTabular}{ccc}[hvlines,rules/width=1pt,rules/color=gray]
rose & tulipe & lys \\
@@ -3343,7 +3495,7 @@ muguet & dahlia & souci
\bigskip
Si on utilise Tikz (on rappelle que \pkg{nicematrix} ne charge pas Tikz par
-défaut), on peut donc accéder (dans le |code-before| et le |code-after|) à
+défaut), on peut donc accéder (dans le |code-before| et le |\CodeAfter|) à
l'intersection du filet horizontal~$i$ et du filet vertical~$j$ avec la syntaxe
|(row-|$i$\verb+-|col-+$j$|)|.
@@ -3390,6 +3542,45 @@ l'intersection du filet horizontal~$i$ et du filet vertical~$j$ avec la syntaxe
\end{NiceMatrix}\]
+\subsection{Les nœuds correspondant aux commandes \textbackslash SubMatrix}
+
+\label{node-sub-matrix}
+
+La commande |\SubMatrix| disponible dans le |\CodeAfter| a été présentée
+p.~\pageref{sub-matrix}.
+
+\smallskip
+Si une commande |\SubMatrix| est utilisée avec la clé |name| sous la forme
+|name=|\textsl{\ttfamily MonNom}, trois nœuds PGF/Tikz sont créés avec les noms
+\textsl{\ttfamily MonNom}|-left|, \textsl{\ttfamily MonNom} et \textsl{\ttfamily
+ MonNom}|-right|.
+
+\smallskip
+Les nœuds \textsl{\ttfamily MonNom}|-left| et \textsl{\ttfamily MonNom}|-right| correspondent aux
+délimiteurs gauche et droit et le nœud \textsl{\ttfamily MonNom} correspond à la
+sous-matrice elle-même.
+
+\medskip
+Dans l'exemple suivant, on a surligné ces trois nœuds (la sous-matrice elle-même
+a été créée avec |\SubMatrix\{{2-2}{3-3}\}|).
+%
+\[\begin{pNiceMatrix}
+121 & 23 & 345 & 345\\
+45 & 346 & 863 & 444\\
+3462 & 38458 & 34 & 294 \\
+34 & 7 & 78 & 309 \\
+\CodeAfter
+\SubMatrix\{{2-2}{3-3}\}[name=A]
+\begin{tikzpicture}
+ [every node/.style = {blend mode = multiply,
+ inner sep = 0 pt}]
+\node [fit = (A),fill = red!15] {} ;
+\node [fit = (A-left),fill = blue!15] {} ;
+\node [fit = (A-right),fill = blue!15] {} ;
+\end{tikzpicture}
+\end{pNiceMatrix}\]
+
+
\section{API pour les développeurs}
L'extension \pkg{nicematrix} fournit deux variables internes mais publiques\footnote{Conformément aux conventions de LaTeX3,
@@ -3550,7 +3741,7 @@ est sans effet.
Par défaut, toutes les lignes diagonales\footnote{On parle des lignes créées par
|\Ddots| et non des lignes créées par une commande |\line| dans le
- |code-after|.} d'un même tableau sont «parallélisées». Cela signifie que la
+ |\CodeAfter|.} d'un même tableau sont «parallélisées». Cela signifie que la
première diagonale est tracée et que, ensuite, les autres lignes sont tracées
parallèlement à la première (par rotation autour de l'extrémité la plus à gauche
de la ligne). C'est pourquoi la position des instructions |\Ddots| dans un
@@ -3692,6 +3883,18 @@ environnements de l'extension \pkg{nicematrix} ne sont pas affectés).
L'extension \pkg{nicematrix} n'est pas parfaitement compatible avec l'extension \pkg{arydshln} (parce que cette
extension redéfinit de nombreuses commandes internes de \pkg{array}).
+Pour pouvoir utiliser \pkg{arydshln}, il faut, de toutes manières, au préalable,
+libérer la lettre «|:|» en choisissant une autre lettre pour les filets verticaux
+pointillés de \pkg{nicematrix} :
+
+\begin{Verbatim}
+\NiceMatrixOptions{letter-for-dotted-lines=;}
+\end{Verbatim}
+
+\bigskip
+L'extension \pkg{nicematrix} n'est pas compatible avec la classe \cls{aastex63}.
+Si vous souhaitez utiliser \pkg{nicematrix} with \cls{aastex63}, envoyez-moi un
+courrier électronique et j'essaierai de résoudre les incompatibilités.
\section{Exemples}
@@ -4087,7 +4290,7 @@ $\begin{pNiceArray}{cccc:c}
Pour mettre en évidence une case d'une matrice, il est possible de «dessiner»
cette case avec la clé |draw| de la commande |\Block| (c'est l'un des usages des
blocs mono-case\footnote{On rappelle que si le premier argument obligatoire de
-la commande |\Block| est laissé vide, le bloc est considéré comme mono-case}).
+la commande |\Block| est laissé vide, le bloc est considéré comme mono-case.}).
\label{exemple-CodeAfter}
@@ -4284,21 +4487,20 @@ moyens» au lieu des «nœuds normaux».
\medskip
On obtient la matrice suivante.
-\[\begin{pNiceArray}{ccc}[
- last-col,
- create-medium-nodes,
- code-after = {\begin{tikzpicture}[highlight/.style = {fill = red!15,
- blend mode = multiply,
- inner sep = 0pt,
- fit = #1},
- name suffix = -medium]
- \node [highlight = (1-1) (1-3)] {} ;
- \node [highlight = (2-1) (2-3)] {} ;
- \node [highlight = (3-1) (3-3)] {} ;
- \end{tikzpicture}}]
+\[\begin{pNiceArray}{ccc}[last-col,create-medium-nodes]
a & a + b & a + b + c & L_1 \\
a & a & a + b & L_2 \\
-a & a & a & L_3
+a & a & a & L_3 \\
+\CodeAfter
+\begin{tikzpicture}[highlight/.style = {fill = red!15,
+ blend mode = multiply,
+ inner sep = 0pt,
+ fit = #1},
+ name suffix = -medium]
+\node [highlight = (1-1) (1-3)] {} ;
+\node [highlight = (2-1) (2-3)] {} ;
+\node [highlight = (3-1) (3-3)] {} ;
+\end{tikzpicture}
\end{pNiceArray}\]
diff --git a/macros/latex/contrib/nicematrix/nicematrix.dtx b/macros/latex/contrib/nicematrix/nicematrix.dtx
index c6f1a06f31..3b7f4d278e 100644
--- a/macros/latex/contrib/nicematrix/nicematrix.dtx
+++ b/macros/latex/contrib/nicematrix/nicematrix.dtx
@@ -15,8 +15,8 @@
%
% \fi
% \iffalse
-\def\myfileversion{5.9}
-\def\myfiledate{2021/01/08}
+\def\myfileversion{5.10}
+\def\myfiledate{2021/02/05}
%
%
%<*batchfile>
@@ -581,11 +581,11 @@ version 2005/12/01 or later.
% \end{NiceTabular}
% \end{center}
%
-% \colorbox{yellow!30}{New 5.7}\enskip As we can see on this example, it's
-% possible to fill the block by using the key |fill| and to draw the frame with
-% the key |draw|\footnote{If the key |draw| is used without value, the default
-% color the rules of the tabulars is used}. It's also possible to change the
-% width (thickness) of that rules with the key |line-width|.
+% As we can see on this example, it's possible to fill the block by using the
+% key |fill| and to draw the frame with the key |draw|\footnote{If the key
+% |draw| is used without value, the default color the rules of the tabulars is
+% used}. It's also possible to change the width (thickness) of that rules with
+% the key |line-width|.
%
% \subsection{The mono-column blocks}
%
@@ -666,7 +666,7 @@ version 2005/12/01 or later.
% \begin{BVerbatim}[baseline=c,boxwidth=10cm]
% \begin{NiceTabular}{cc}
% \toprule
-% Write & ~emphase#\Block[l]{}{year\\ of birth}@ \\
+% Writer & ~emphase#\Block[l]{}{year\\ of birth}@ \\
% \midrule
% Hugo & 1802 \\
% Balzac & 1799 \\
@@ -675,7 +675,7 @@ version 2005/12/01 or later.
% \end{BVerbatim}
% \begin{NiceTabular}{cc}
% \toprule
-% Write & \Block[l]{}{year\\ of birth} \\
+% Writer & \Block[l]{}{year\\ of birth} \\
% \midrule
% Hugo & 1802 \\
% Balzac & 1799 \\
@@ -1105,7 +1105,8 @@ version 2005/12/01 or later.
% \bigskip
% It's possible to change in \pkg{nicematrix} the letter used to specify a
% vertical dotted line with the option |letter-for-dotted-lines| available in
-% |\NiceMatrixOptions|.
+% |\NiceMatrixOptions|. Thus released, the letter ``|:|'' can be used otherwise
+% (for example by the package \pkg{arydshln}).
%
% \bigskip
% \emph{Remark} : In the package \pkg{array} (on which the package
@@ -1287,7 +1288,7 @@ version 2005/12/01 or later.
% tow colors (provided in second and third argument), beginning
% with the row whose number is given in first (mandatory) argument.
%
-% \colorbox{yellow!50}{\textbf{New 5.8}}\enskip In fact, the first (mandatory)
+% \colorbox{yellow!30}{New 5.8}\enskip In fact, the first (mandatory)
% argument is, more generally, a comma separated list of intervals describing
% the rows involved in the action of |\rowcolors| (an interval of the form
% $i$|-| describes in fact the interval of all the rows of the tabular,
@@ -1300,10 +1301,10 @@ version 2005/12/01 or later.
% optional argument in the first position corresponds to the colorimetric
% space). The available keys are |cols|, |restart| and |respect-blocks|.
% \begin{itemize}
-% \item \colorbox{yellow!50}{\textbf{New 5.8}}\enskip The key |cols| describes a
+% \item \colorbox{yellow!30}{New 5.8}\enskip The key |cols| describes a
% set of columns. The command |\rowcolors| will color only the cells of these
% columns. The value is a comma-separated list of intervals of the form $i$-$j$.
-% \item \colorbox{yellow!50}{\textbf{New 5.8}}\enskip With the key |restart|,
+% \item \colorbox{yellow!30}{New 5.8}\enskip With the key |restart|,
% each interval of rows (specified by the first mandatory argument) begins with
% the same color.\footnote{Otherwise, the color of a given row relies only upon the
% parity of its number.}
@@ -2126,7 +2127,7 @@ version 2005/12/01 or later.
% \subsection{The labels of the dotted lines}
%
% The commands |\Ldots|, |\Cdots|, |\Vdots|, |\Ddots|, |\Iddots| and |\Hdotsfor|
-% (and the command |\line| in the |code-after| which is described
+% (and the command |\line| in the |\CodeAfter| which is described
% p.~\pageref{line-in-code-after}) accept two optional arguments specified
% by the tokens |_| and |^| for labels positionned below and above the line. The
% arguments are composed in math mode with |\scriptstyle|.
@@ -2148,7 +2149,7 @@ version 2005/12/01 or later.
%
% \label{customization}
% The dotted lines drawn by |\Ldots|, |\Cdots|, |\Vdots|, |\Ddots|, |\Iddots|
-% and |\Hdotsfor| (and by the command |\line| in the |code-after| which is described
+% and |\Hdotsfor| (and by the command |\line| in the |\CodeAfter| which is described
% p.~\pageref{line-in-code-after}) may be customized by three options (specified
% between square brackets after the command):
% \begin{itemize}
@@ -2269,47 +2270,189 @@ version 2005/12/01 or later.
%
%
%
-% \section{The code-after}
+% \section{The \textbackslash CodeAfter}
%
% \label{code-after}
% The option |code-after| may be used to give some code that will be executed
% after the construction of the matrix.\footnote{There is also a key
% |code-before| described p.~\pageref{code-before}.}
%
-% A special command, called |\line|, is available to draw directly
-% dotted lines between nodes. It takes two arguments for the two cells to rely,
-% both of the form $i$-$j$ where is the number of row and $j$ is the number of
-% column. It may be used, for example, to draw a dotted line
-% between two adjacent cells. \label{line-in-code-after}
+% \medskip
+% For the legibility of the code, an alternative syntax is provided: it's
+% possible to give the instructions of the |\code-after| at the end of the
+% environment, after the keyword |\CodeAfter|.
+%
+% \medskip
+% Two special commands are available in the |\CodeAfter|: |line| and
+% |\SubMatrix|.
+%
+% \subsection{The command \textbackslash line in the \textbackslash CodeAfter}
+%
+% The command |\line|draws directly dotted lines between nodes. It takes two
+% arguments for the two cells to rely, both of the form $i$-$j$ where is the
+% number of row and $j$ is the number of column. It may be used, for example, to
+% draw a dotted line between two adjacent cells. \label{line-in-code-after}
%
% \medskip
% \begin{BVerbatim}[baseline=c,boxwidth=11cm]
% \NiceMatrixOptions{xdots/shorten = 0.6 em}
-% \begin{pNiceMatrix}[~emphase#code-after=\line{2-2}{3-3}@]
+% \begin{pNiceMatrix}
% I & 0 & \Cdots &0 \\
% 0 & I & \Ddots &\Vdots\\
% \Vdots &\Ddots & I &0 \\
% 0 &\Cdots & 0 &I
+% ~emphase#\CodeAfter \line{2-2}{3-3}@
% \end{pNiceMatrix}
% \end{BVerbatim}
% \begin{scope}
% \NiceMatrixOptions{xdots/shorten = 0.6 em}
-% $\begin{pNiceMatrix}[code-after=\line{2-2}{3-3}]
+% $\begin{pNiceMatrix}
% I & 0 & \Cdots &0 \\
% 0 & I & \Ddots &\Vdots\\
% \Vdots &\Ddots & I &0 \\
% 0 &\Cdots & 0 &I
+% \CodeAfter \line{2-2}{3-3}
% \end{pNiceMatrix}$
% \end{scope}
%
+%
+% \subsection{The command \textbackslash SubMatrix in the \textbackslash CodeAfter}
+%
+% \label{sub-matrix}
+%
+% \colorbox{yellow!50}{\textbf{New 5.10}}\enskip
+% The command |\SubMatrix| provides a way to put delimiters on an portion
+% of the array considered as a submatrix. The command |\SubMatrix| takes in five
+% arguments:
+% \begin{itemize}
+% \item the first argument is the left delimiter, which may be any extensible delimiter
+% provided by LaTeX : |(|, |[|, |\{|, |\langle|, |\lgroup|, |\lfloor|, etc. but also
+% the null delimiter |.|;
+% \item the second argument is the upper-left corner of the submatrix with the
+% syntax $i$|-|$j$ where $i$ the number of row and $j$ the number of column;
+% \item the third argument is the lower-right corner with the same syntax;
+% \item the fourth argument is the right delimiter;
+% \item the last argument, which is optional, is a list of key-value pairs.
+% \end{itemize}
+%
+% One should remark that the command |\SubMatrix| draws the delimiters after the
+% construction of the array: no space is inserted by the command |\SubMatrix|
+% itself. That's why, in the following example, we have used the key |margin|
+% and you have added by hand some space between the third and fourth column with
+% |@{\hspace{1.5em}}| in the preamble of the array.
+%
% \medskip
-% For the legibility of the code, an alternative syntax is provided: it's
-% possible to give the instructions of the |\code-after| at the end of the
-% environment, after the keyword |\CodeAfter| (for an example, cf.
-% p.~\pageref{example-CodeAfter}).
+% \begin{scope}
+% \fvset{commandchars=\~\#\+}%
+% \begin{BVerbatim}[boxwidth=11cm,baseline=c]
+% \[\begin{NiceArray}{ccc~emphase#@{\hspace{1.5em}}+c}%
+% [cell-space-limits=2pt,~emphase#margin+]
+% 1 & 1 & 1 & x \\
+% \dfrac{1}{4} & \dfrac{1}{2} & \dfrac{1}{4} & y \\
+% 1 & 2 & 3 & z
+% \CodeAfter
+% ~emphase#\SubMatrix({1-1}{3-3})+
+% ~emphase#\SubMatrix({1-4}{3-4})+
+% \end{NiceArray}\]
+% \end{BVerbatim}
+% \end{scope}
+% $\begin{NiceArray}{ccc@{\hspace{1.5em}}c}[cell-space-limits=2pt,margin]
+% 1 & 1 & 1 & x \\
+% \dfrac{1}{4} & \dfrac{1}{2} & \dfrac{1}{4} & y \\
+% 1 & 2 & 3 & z
+% \CodeAfter
+% \SubMatrix({1-1}{3-3})
+% \SubMatrix({1-4}{3-4})
+% \end{NiceArray}$
%
+% \bigskip
+% The options of the command |\SubMatrix| are as follows:
+% \begin{itemize}
+% \item |left-xshift| and |right-shift| shift horizontally the delimiters (there
+% exists also the key |xshift| which fixes both parameters);
+% \item |extra-height| adds a quantity to the total height of the delimiters
+% (height |\ht| + depth |\dp|);
+% \item |delimiters-color| fixes the color of the delimiters (also
+% available in |\NiceMatrixOptions|, in the environments with delimiters and as
+% option of the command |\CodeAfter|);
+% \item |slim| is a boolean key: when that key is in force, the horizontal
+% position of the delimiters is computed by using only the contents of the cells
+% of the submatrix whereas, in the general case, the position is computed by
+% taking into account the cells of the whole columns implied in the submatrix
+% (see example below).
+% \end{itemize}
%
+% These keys are also available in |\NiceMatrixOptions|, at the level of the
+% environments of \pkg{nicematrix} or as option of the command |\CodeAfter| with
+% the prefix |sub-matrix| which means that their names are therefore
+% |sub-matrix/left-xshift|, |sub-matrix/right-xshift|, |sub-matrix/xshift|, etc.
+%
%
+% \bigskip
+% \begin{scope}
+% \fvset{commandchars=\~\#\!}%
+% \begin{BVerbatim}[baseline=c,boxwidth=11cm]
+% $\begin{NiceArray}{cc@{\hspace{5mm}}l}%
+% [cell-space-limits=2pt]
+% & & \frac12 \\
+% & & \frac14 \\[1mm]
+% a & b & \frac12a+\frac14b \\
+% c & d & \frac12c+\frac14d \\
+% \CodeAfter
+% \SubMatrix({1-3}{2-3})
+% \SubMatrix({3-1}{4-2})
+% \SubMatrix({3-3}{4-3})
+% \end{NiceArray}$
+% \end{BVerbatim}
+% \end{scope}
+% $\begin{NiceArray}{cc@{\hspace{5mm}}l}[cell-space-limits=2pt]
+% & & \frac12 \\
+% & & \frac14 \\[1mm]
+% a & b & \frac12a+\frac14b \\
+% c & d & \frac12c+\frac14d \\
+% \CodeAfter
+% \SubMatrix({1-3}{2-3})
+% \SubMatrix({3-1}{4-2})
+% \SubMatrix({3-3}{4-3})
+% \end{NiceArray}$
+%
+% \medskip
+% Here is the same example with the key |slim| used for one of the submatrices.
+%
+% \medskip
+% \begin{scope}
+% \fvset{commandchars=\~\#\!}%
+% \begin{BVerbatim}[baseline=c,boxwidth=11cm]
+% $\begin{NiceArray}{cc@{\hspace{5mm}}l}%
+% [cell-space-limits=2pt]
+% & & \frac12 \\
+% & & \frac14 \\[1mm]
+% a & b & \frac12a+\frac14b \\
+% c & d & \frac12c+\frac14d \\
+% \CodeAfter
+% \SubMatrix({1-3}{2-3})[~emphase#slim!]
+% \SubMatrix({3-1}{4-2})
+% \SubMatrix({3-3}{4-3})
+% \end{NiceArray}$
+% \end{BVerbatim}
+% \end{scope}
+% $\begin{NiceArray}{cc@{\hspace{5mm}}l}[cell-space-limits=2pt]
+% & & \frac12 \\
+% & & \frac14 \\[1mm]
+% a & b & \frac12a+\frac14b \\
+% c & d & \frac12c+\frac14d \\
+% \CodeAfter
+% \SubMatrix({1-3}{2-3})[slim]
+% \SubMatrix({3-1}{4-2})
+% \SubMatrix({3-3}{4-3})
+% \end{NiceArray}$
+%
+%
+% \bigskip
+% There is also a key |name| which gives a name to the submatrix created by
+% |\SubMatrix|. That name is used to created PGF/Tiks nodes: cf
+% p.~\pageref{node-sub-matrix}.
+%
% \section{The notes in the tabulars}
%
% \label{s:notes}
@@ -2812,7 +2955,7 @@ version 2005/12/01 or later.
% exists) has also the number~$0$.}. Of course, the user must not change the
% value of these counters which are used internally by \pkg{nicematrix}.
%
-% In the |code-before| (cf. p. \pageref{code-before}) and in the |code-after|
+% In the |code-before| (cf. p. \pageref{code-before}) and in the |\CodeAfter|
% (cf. p. \pageref{code-after}), |iRow| represents the total number of rows
% (excepted the potential exterior rows) and |jCol| represents the total number
% of columns (excepted the potential exterior columns).
@@ -3019,7 +3162,7 @@ version 2005/12/01 or later.
% Don't forget the options |remember picture| and |overlay|.
%
% \bigskip
-% In the |code-after|, the things are easier : one must refer to the nodes with
+% In the |\CodeAfter|, the things are easier : one must refer to the nodes with
% the form $i$-$j$ (we don't have to indicate the environment which is of
% course the current environment).
%
@@ -3281,7 +3424,7 @@ version 2005/12/01 or later.
% The package \pkg{nicematrix} creates a PGF/Tikz node indicating the potential
% position of each horizontal rule (with the names |row-|$i$) and each vertical
% rule (with the names |col-|$j$), as described in the following figure. These
-% nodes are available in the |code-before| and the |code-after|.
+% nodes are available in the |code-before| and the |\CodeAfter|.
% \begin{center}
% \begin{NiceTabular}{ccc}[hvlines,rules/width=1pt,rules/color=gray]
% rose & tulipe & lys \\
@@ -3306,7 +3449,7 @@ version 2005/12/01 or later.
%
% \bigskip
% If we use Tikz (we remind that \pkg{nicematrix} does not load Tikz by
-% default), we can access (in the |code-before| and the |code-after|) to the
+% default), we can access (in the |code-before| and the |\CodeAfter|) to the
% intersection of the horizontal rule~$i$ and the vertical rule~$j$ with the
% syntax |(row-|$i$\verb+-|col-+$j$|)|.
%
@@ -3350,6 +3493,44 @@ version 2005/12/01 or later.
% 1 & 8 & 28 & 56 & 70 & 56 & 28 & 8 & 1
% \end{NiceMatrix}\]
%
+% \subsection{The nodes corresponding to the command \textbackslash SubMatrix}
+%
+% \label{node-sub-matrix}
+%
+% The command |\SubMatrix| available in the |\CodeAfter| has been described
+% p.~\pageref{sub-matrix}.
+%
+% \smallskip
+% If a command |\SubMatrix| has been used with the key |name| with an expression
+% such as |name=|\textsl{\ttfamily MyName} three PGF/Tikz nodes are created
+% with the names \textsl{\ttfamily MyName}|-left|, \textsl{\ttfamily MyName} and
+% \textsl{\ttfamily MyName}|-right|.
+%
+% \smallskip
+% The nodes \textsl{\ttfamily MyName}|-left| and \textsl{\ttfamily
+% MyName}|-right| correspond to the delimiters left and right and the node
+% \textsl{\ttfamily MyName} correspond to the submatrix itself.
+%
+% \medskip
+% In the following example, we have highlighted these nodes (the submatrix itself has
+% been created with |\SubMatrix\{{2-2}{3-3}\}|).
+%
+% \[\begin{pNiceMatrix}
+% 121 & 23 & 345 & 345\\
+% 45 & 346 & 863 & 444\\
+% 3462 & 38458 & 34 & 294 \\
+% 34 & 7 & 78 & 309 \\
+% \CodeAfter
+% \SubMatrix\{{2-2}{3-3}\}[name=A]
+% \begin{tikzpicture}
+% [every node/.style = {blend mode = multiply,
+% inner sep = 0 pt}]
+% \node [fit = (A),fill = red!15] {} ;
+% \node [fit = (A-left),fill = blue!15] {} ;
+% \node [fit = (A-right),fill = blue!15] {} ;
+% \end{tikzpicture}
+% \end{pNiceMatrix}\]
+%
% \section{API for the developpers}
%
% The package \pkg{nicematrix} provides two variables which are internal but
@@ -3643,6 +3824,17 @@ version 2005/12/01 or later.
% The package \pkg{nicematrix} is not fully compatible with the package
% \pkg{arydshln} (because this package redefines many internal of \pkg{array}).
%
+% Anyway, in order to use \pkg{arydshln}, one must first free the letter ``|:|''
+% by giving a new letter for the vertical dotted rules of \pkg{nicematrix}:
+%
+% \begin{Verbatim}
+% \NiceMatrixOptions{letter-for-dotted-lines=;}
+% \end{Verbatim}
+%
+% \bigskip
+% As of now, the package \pkg{nicematrix} is not compatible with
+% \cls{aastex63}. If you want to use \pkg{nicematrix} with \cls{aastex63}, send
+% me an email and I will try to solve the incompatibilies.
%
% \section{Examples}
%
@@ -4459,7 +4651,6 @@ version 2005/12/01 or later.
% \begin{macrocode}
\RequirePackage { array }
\RequirePackage { amsmath }
-\RequirePackage { xparse }
% \end{macrocode}
%
% \bigskip
@@ -4482,6 +4673,8 @@ version 2005/12/01 or later.
% \bigskip
% \subsection*{Technical definitions}
%
+%
+% \medskip
% \begin{macrocode}
\bool_new:N \c_@@_in_preamble_bool
\bool_set_true:N \c_@@_in_preamble_bool
@@ -4489,11 +4682,15 @@ version 2005/12/01 or later.
% \end{macrocode}
%
% \begin{macrocode}
+\bool_new:N \c_@@_arydshln_loaded_bool
\bool_new:N \c_@@_booktabs_loaded_bool
\bool_new:N \c_@@_enumitem_loaded_bool
\bool_new:N \c_@@_tikz_loaded_bool
\AtBeginDocument
{
+ \@ifpackageloaded { arydshln }
+ { \bool_set_true:N \c_@@_arydshln_loaded_bool }
+ { }
\@ifpackageloaded { booktabs }
{ \bool_set_true:N \c_@@_booktabs_loaded_bool }
{ }
@@ -4526,9 +4723,11 @@ version 2005/12/01 or later.
}
% \end{macrocode}
%
-% We test whether the current class is \cls{revtex4-1} or \cls{revtex4-2}
-% because these classes redefines |\array| (of \pkg{array}) in a way
-% incompatible with our programmation.
+% We test whether the current class is \cls{revtex4-1} (deprecated) or
+% \cls{revtex4-2} because these classes redefines |\array| (of \pkg{array}) in a
+% way incompatible with our programmation. As of january 2021, the current
+% version \cls{revtex4-2} is 4.2e (compatible with \pkg{booktabs}).
+%
% \begin{macrocode}
\bool_new:N \c_@@_revtex_bool
\@ifclassloaded { revtex4-1 }
@@ -4538,8 +4737,17 @@ version 2005/12/01 or later.
{ \bool_set_true:N \c_@@_revtex_bool }
{ }
% \end{macrocode}
+% Maybe one of the previous classes will be loaded inside another class... We
+% try to detect that situation.
+% \begin{macrocode}
+\cs_if_exist:NT \rvtx@ifformat@geq { \bool_set_true:N \c_@@_revtex_bool }
+% \end{macrocode}
%
%
+% \begin{macrocode}
+\cs_generate_variant:Nn \tl_if_single_token_p:n { V }
+% \end{macrocode}
+%
% \bigskip
% We define a command |\iddots| similar to |\ddots| ($\ddots$) but with dots
% going forward ($\iddots$). We use |\ProvideDocumentCommand| and so, if the
@@ -5185,8 +5393,8 @@ version 2005/12/01 or later.
% \end{macrocode}
%
% \bigskip
-% \pkg{expl3} provides scratch dimension |\l_tmpa_dim| and |\l_tmpd_dim|. We
-% creates two other in the same spirit (if they don't exist yet : that's why we
+% \pkg{expl3} provides scratch dimensions |\l_tmpa_dim| and |\l_tmpb_dim|. We
+% creates two other in the same spirit (if they don't exist yet: that's why we
% use |\dim_zero_new:N|).
% \begin{macrocode}
\dim_zero_new:N \l_tmpc_dim
@@ -5195,7 +5403,7 @@ version 2005/12/01 or later.
%
% \bigskip
% Some cells will be declared as ``empty'' (for example a cell with an
-% instrution |\Cdots|).
+% instruction |\Cdots|).
% \begin{macrocode}
\bool_new:N \g_@@_empty_cell_bool
% \end{macrocode}
@@ -5263,6 +5471,14 @@ version 2005/12/01 or later.
%
%
% \medskip
+% The list of the names of the potential |\SubMatrix| in the |code-after| of an
+% environment. Unfortunately, that list has to be global (we have to use it
+% inside the group for the options of a given |\SubMatrix|).
+% \begin{macrocode}
+\seq_new:N \g_@@_submatrix_names_seq
+% \end{macrocode}
+%
+% \medskip
% We are able to determine the number of columns specified in the preamble (for
% the environments with explicit preamble, of course and without the potential
% exterior columns).
@@ -5702,8 +5918,10 @@ version 2005/12/01 or later.
% initial value is 0.45~em but it will be changed if the option |small| is used.
% \begin{macrocode}
\dim_new:N \l_@@_inter_dots_dim
-\dim_set:Nn \l_@@_inter_dots_dim { 0.45 em }
+\AtBeginDocument { \dim_set:Nn \l_@@_inter_dots_dim { 0.45 em } }
% \end{macrocode}
+% The |\AtBeginDocument| is only a security in case \cls{revtex4-1} is used
+% (even though it is obsolete).
%
% \bigskip
% The following dimension is the minimal distance between a node (in fact an
@@ -5712,8 +5930,10 @@ version 2005/12/01 or later.
% distance may vary a little).
% \begin{macrocode}
\dim_new:N \l_@@_xdots_shorten_dim
-\dim_set:Nn \l_@@_xdots_shorten_dim { 0.3 em }
+\AtBeginDocument { \dim_set:Nn \l_@@_xdots_shorten_dim { 0.3 em } }
% \end{macrocode}
+% The |\AtBeginDocument| is only a security in case \cls{revtex4-1} is used
+% (even though it is obsolete).
%
% \bigskip
% The following dimension is the radius of the dots for the dotted lines (when
@@ -5721,8 +5941,11 @@ version 2005/12/01 or later.
% value is 0.53~pt but it will be changed if the option |small| is used.
% \begin{macrocode}
\dim_new:N \l_@@_radius_dim
-\dim_set:Nn \l_@@_radius_dim { 0.53 pt }
+\AtBeginDocument { \dim_set:Nn \l_@@_radius_dim { 0.53 pt } }
% \end{macrocode}
+% The |\AtBeginDocument| is only a security in case \cls{revtex4-1} is used
+% (even if it is obsolete).
+%
%
% \bigskip
% The token list |\l_@@_xdots_line_style_tl| corresponds to the option |tikz| of the
@@ -5795,8 +6018,10 @@ version 2005/12/01 or later.
%
% \begin{macrocode}
\dim_new:N \l_@@_notes_above_space_dim
-\dim_set:Nn \l_@@_notes_above_space_dim { 1 mm }
+\AtBeginDocument { \dim_set:Nn \l_@@_notes_above_space_dim { 1 mm } }
% \end{macrocode}
+% The |\AtBeginDocument| is only a security in case \cls{revtex4-1} is used
+% (even if it is obsolete).
%
% \bigskip
% The flag |\l_@@_nullify_dots_bool| corresponds to the option |nullify-dots|.
@@ -5955,10 +6180,10 @@ version 2005/12/01 or later.
cell-space-top-limit .value_required:n = true ,
cell-space-bottom-limit .dim_set:N = \l_@@_cell_space_bottom_limit_dim ,
cell-space-bottom-limit .value_required:n = true ,
- cell-space-limits .code:n =
+ cell-space-limits .meta:n =
{
- \dim_set:Nn \l_@@_cell_space_bottom_limit_dim { #1 }
- \dim_set:Nn \l_@@_cell_space_top_limit_dim { #1 }
+ cell-space-top-limit = #1 ,
+ cell-space-bottom-limit = #1 ,
} ,
cell-spaces-limits .value_required:n = true ,
xdots .code:n = \keys_set:nn { NiceMatrix / xdots } { #1 } ,
@@ -6143,6 +6368,8 @@ version 2005/12/01 or later.
NiceMatrixOptions / xdots .inherit:n = NiceMatrix / xdots ,
NiceMatrixOptions / rules .inherit:n = NiceMatrix / rules ,
NiceMatrixOptions / notes .inherit:n = NiceMatrix / notes ,
+ NiceMatrixOptions / sub-matrix .inherit:n = NiceMatrix / sub-matrix ,
+ CodeAfter / xdots .inherit:n = NiceMatrix / xdots ,
NiceMatrix .inherit:n =
{
NiceMatrix / Global ,
@@ -6200,7 +6427,12 @@ version 2005/12/01 or later.
% \end{macrocode}
% The key |transparent| is now considered as obsolete (because its name is ambiguous).
% \begin{macrocode}
- transparent .meta:n = { renew-dots , renew-matrix } ,
+ transparent .code:n =
+ {
+ \@@_renew_matrix:
+ \bool_set_true:N \l_@@_renew_dots_bool
+ \@@_error:n { Key~transparent }
+ } ,
transparent .value_forbidden:n = true,
% \end{macrocode}
%
@@ -6251,6 +6483,9 @@ version 2005/12/01 or later.
letter-for-dotted-lines .value_required:n = true ,
notes .code:n = \keys_set:nn { NiceMatrix / notes } { #1 } ,
notes .value_required:n = true ,
+ sub-matrix .code:n =
+ \keys_set:nn { NiceMatrix / sub-matrix } { #1 } ,
+ sub-matrix .value_required:n = true ,
unknown .code:n = \@@_error:n { Unknown~key~for~NiceMatrixOptions }
}
% \end{macrocode}
@@ -6953,11 +7188,11 @@ version 2005/12/01 or later.
% |\Cdots|, etc. give the same spacing (except when the option |nullify-dots| is
% used).
% \begin{macrocode}
- \cs_set_eq:NN \@@_old_ldots \ldots
- \cs_set_eq:NN \@@_old_cdots \cdots
- \cs_set_eq:NN \@@_old_vdots \vdots
- \cs_set_eq:NN \@@_old_ddots \ddots
- \cs_set_eq:NN \@@_old_iddots \iddots
+ \cs_set_eq:NN \@@_old_ldots \ldots
+ \cs_set_eq:NN \@@_old_cdots \cdots
+ \cs_set_eq:NN \@@_old_vdots \vdots
+ \cs_set_eq:NN \@@_old_ddots \ddots
+ \cs_set_eq:NN \@@_old_iddots \iddots
\bool_if:NTF \l_@@_standard_cline_bool
{ \cs_set_eq:NN \cline \@@_standard_cline }
{ \cs_set_eq:NN \cline \@@_cline }
@@ -7065,8 +7300,19 @@ version 2005/12/01 or later.
% a mathematical formula.
% \begin{macrocode}
\bgroup
+% \end{macrocode}
+%
+% \bigskip
+% \begin{macrocode}
\tl_set:Nn \l_@@_left_delim_tl { #1 }
\tl_set:Nn \l_@@_right_delim_tl { #2 }
+ \tl_gset:Nn \g_@@_preamble_tl { #4 }
+% \end{macrocode}
+%
+%
+% \bigskip
+%
+% \begin{macrocode}
\int_gzero:N \g_@@_block_box_int
\dim_zero:N \g_@@_width_last_col_dim
\dim_zero:N \g_@@_width_first_col_dim
@@ -7321,7 +7567,7 @@ version 2005/12/01 or later.
% \end{macrocode}
%
% \medskip
-% We compute the width of the two delimiters.
+% We compute the width of both delimiters.
% \begin{macrocode}
\dim_zero_new:N \l_@@_left_delim_dim
\dim_zero_new:N \l_@@_right_delim_dim
@@ -7334,9 +7580,9 @@ version 2005/12/01 or later.
% \end{macrocode}
% The command |\bBigg@| is a command of \pkg{amsmath}.
% \begin{macrocode}
- \hbox_set:Nn \l_tmpa_box { $ \bBigg@ 5 #1 $ }
+ \hbox_set:Nn \l_tmpa_box { $ \bBigg@ 5 \l_@@_left_delim_tl $ }
\dim_set:Nn \l_@@_left_delim_dim { \box_wd:N \l_tmpa_box }
- \hbox_set:Nn \l_tmpa_box { $ \bBigg@ 5 #2 $ }
+ \hbox_set:Nn \l_tmpa_box { $ \bBigg@ 5 \l_@@_right_delim_tl $ }
\dim_set:Nn \l_@@_right_delim_dim { \box_wd:N \l_tmpa_box }
}
% \end{macrocode}
@@ -7360,7 +7606,7 @@ version 2005/12/01 or later.
% \bigskip
% The preamble will be constructed in |\g_@@_preamble_tl|.
% \begin{macrocode}
- \@@_construct_preamble:n { #4 }
+ \@@_construct_preamble:
% \end{macrocode}
%
% Now, the preamble is constructed in |\g_@@_preamble_tl|
@@ -7505,7 +7751,7 @@ version 2005/12/01 or later.
\c_math_toggle_token
\tl_if_empty:NF \l_@@_delimiters_color_tl
{ \color { \l_@@_delimiters_color_tl } }
- \left #1
+ \exp_after:wN \left \l_@@_left_delim_tl
\vcenter
{
% \end{macrocode}
@@ -7513,7 +7759,6 @@ version 2005/12/01 or later.
% height in |\l_tmpa_dim|). The |\hbox:n| (or |\hbox|) is necessary here.
% \begin{macrocode}
\skip_vertical:N -\l_tmpa_dim
- \skip_vertical:N -\arrayrulewidth
\hbox
{
\bool_if:NTF \l_@@_NiceTabular_bool
@@ -7529,9 +7774,8 @@ version 2005/12/01 or later.
% height in |\l_tmpb_dim|).
% \begin{macrocode}
\skip_vertical:N -\l_tmpb_dim
- \skip_vertical:N \arrayrulewidth
}
- \right #2
+ \exp_after:wN \right \l_@@_right_delim_tl
\c_math_toggle_token
}
% \end{macrocode}
@@ -7583,12 +7827,11 @@ version 2005/12/01 or later.
% The transformation of the preamble is an operation in several steps.
%
% \bigskip
-% The argument of |\@@_construct_preamble:n| is the preamble as given by the
-% final user to the environement |{NiceTabular}| (or a variant). The preamble
-% will be constructed in |\g_@@_preamble_tl|.
-%
+% The preamble given by the final use is in |\g_@@_preamble_tl| and the modified
+% version will be stored in |\g_@@_preamble_tl| also.
+%
% \begin{macrocode}
-\cs_new_protected:Npn \@@_construct_preamble:n #1
+\cs_new_protected:Npn \@@_construct_preamble:
{
% \end{macrocode}
% First, we will do an ``expansion'' of the preamble with the tools of the
@@ -7616,8 +7859,7 @@ version 2005/12/01 or later.
% (excepted the treatment on both sides of the preamble which will be done at
% the end).
% \begin{macrocode}
- \bool_if:NTF \l_@@_Matrix_bool
- { \tl_gset:Nn \g_@@_preamble_tl { #1 } }
+ \bool_if:NF \l_@@_Matrix_bool
{
\@@_newcolumntype w [ 2 ] { \@@_w: { ##1 } { ##2 } }
\@@_newcolumntype W [ 2 ] { \@@_W: { ##1 } { ##2 } }
@@ -7626,7 +7868,7 @@ version 2005/12/01 or later.
% First, we have to store our preamble in the token register |\@temptokena|
% (those ``token registers'' are not supported by \pkg{expl3}).
% \begin{macrocode}
- \@temptokena { #1 }
+ \exp_args:NV \@temptokena \g_@@_preamble_tl
% \end{macrocode}
% Initialisation of a flag used by \pkg{array} to detect the end of the expansion.
% \begin{macrocode}
@@ -7638,6 +7880,7 @@ version 2005/12/01 or later.
\@whilesw \if@tempswa \fi { \@tempswafalse \the \NC@list }
% \end{macrocode}
%
+%
% \bigskip
% Now, we have to ``patch'' that preamble by transforming some columns.
% We will insert in the TeX flow the preamble in its actual form (that is to say
@@ -7656,7 +7899,7 @@ version 2005/12/01 or later.
{ \tl_gclear:N \g_@@_preamble_tl }
% \end{macrocode}
% The counter |\l_tmpa_int| will count the number of consecutive occurrences
-% of the symbole \verb+|+.
+% of the symbol \verb+|+.
% \begin{macrocode}
\int_zero:N \l_tmpa_int
% \end{macrocode}
@@ -7747,15 +7990,30 @@ version 2005/12/01 or later.
\@@_w: { \@@_patch_preamble_v:nnnn { } #1 }
\@@_W: { \@@_patch_preamble_v:nnnn { \cs_set_eq:NN \hss \hfil } #1 }
\@@_true_c: { \@@_patch_preamble_vi:n #1 }
- C { \@@_error:nn { old~column~type } C }
- L { \@@_error:nn { old~column~type } L }
- R { \@@_error:nn { old~column~type } R }
+ ( { \@@_patch_preamble_vii:n #1 }
+ [ { \@@_patch_preamble_vii:n #1 }
+ \{ { \@@_patch_preamble_vii:n #1 }
+ ) { \@@_patch_preamble_viii:n #1 }
+ ] { \@@_patch_preamble_viii:n #1 }
+ \} { \@@_patch_preamble_viii:n #1 }
+ C { \@@_error:nn { old~column~type } #1 }
+ L { \@@_error:nn { old~column~type } #1 }
+ R { \@@_error:nn { old~column~type } #1 }
\q_stop { }
}
{
\str_if_eq:VnTF \l_@@_letter_for_dotted_lines_str { #1 }
- { \@@_patch_preamble_vii:n #1 }
- { \@@_fatal:nn { unknown~column~type } { #1 } }
+ { \@@_patch_preamble_xi:n #1 }
+ {
+ \bool_lazy_and:nnTF
+ { \str_if_eq_p:nn { : } { #1 } }
+ \c_@@_arydshln_loaded_bool
+ {
+ \tl_gput_right:Nn \g_@@_preamble_tl { : }
+ \@@_patch_preamble:n
+ }
+ { \@@_fatal:nn { unknown~column~type } { #1 } }
+ }
}
}
% \end{macrocode}
@@ -7772,14 +8030,13 @@ version 2005/12/01 or later.
< \@@_end_Cell:
}
% \end{macrocode}
-% We increment the counter of columns.
+%
+% We increment the counter of columns and then we test for the presence of a |<|.
% \begin{macrocode}
\int_gincr:N \c@jCol
- \@@_patch_preamble_viii:n
+ \@@_patch_preamble_x:n
}
% \end{macrocode}
-%
-%
%
% \medskip
% For |>|, |!| and |@|
@@ -7852,10 +8109,10 @@ version 2005/12/01 or later.
< { \box_use:N \@arstrutbox \end { minipage } \@@_end_Cell: }
}
% \end{macrocode}
-% We increment the counter of columns.
+% We increment the counter of columns, and then we test for the presence of a |<|.
% \begin{macrocode}
\int_gincr:N \c@jCol
- \@@_patch_preamble_viii:n
+ \@@_patch_preamble_x:n
}
% \end{macrocode}
%
@@ -7882,10 +8139,10 @@ version 2005/12/01 or later.
}
}
% \end{macrocode}
-% We increment the counter of columns.
+% We increment the counter of columns and then we test for the presence of a |<|.
% \begin{macrocode}
\int_gincr:N \c@jCol
- \@@_patch_preamble_viii:n
+ \@@_patch_preamble_x:n
}
% \end{macrocode}
%
@@ -7897,15 +8154,67 @@ version 2005/12/01 or later.
{
\tl_gput_right:Nn \g_@@_preamble_tl { c }
% \end{macrocode}
-% We increment the counter of columns.
+% We increment the counter of columns and then we test for the presence of a |<|.
% \begin{macrocode}
\int_gincr:N \c@jCol
- \@@_patch_preamble_viii:n
+ \@@_patch_preamble_x:n
+ }
+% \end{macrocode}
+%
+% \medskip
+% For |(|, |[| and |\{|.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_patch_preamble_vii:n #1
+ {
+ \bool_if:NT \l_@@_small_bool
+ { \@@_fatal:n { Delimiter~with~small } }
+% \end{macrocode}
+% If we are before the column 1, we reserve space for the left delimiter.
+% \begin{macrocode}
+ \int_compare:nNnT \c@jCol = \c_zero_int
+ { \tl_gput_right:Nx \g_@@_preamble_tl { ! { \enskip } } }
+ \tl_gput_right:Nx \g_@@_internal_code_after_tl
+ { \@@_delimiter:nnn #1 { \@@_succ:n \c@jCol } \c_true_bool }
+ \@@_patch_preamble:n
+ }
+% \end{macrocode}
+%
+% \bigskip
+% For |)|, |]| and |\}|.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_patch_preamble_viii:n #1
+ {
+ \bool_if:NT \l_@@_small_bool
+ { \@@_fatal:n { Delimiter~with~small } }
+ \tl_gput_right:Nx \g_@@_internal_code_after_tl
+ { \@@_delimiter:nnn #1 { \int_use:N \c@jCol } \c_false_bool }
+% \end{macrocode}
+% After this closing delimiter, we have to test whether there is a opening
+% delimiter (we consider that there can't be a second closing delimiter) in
+% order to add an horizontal space (equal to 0.5 em).
+% \begin{macrocode}
+ \@@_patch_preamble_viii_i:n
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_patch_preamble_viii_i:n #1
+ {
+ \bool_lazy_any:nT
+ {
+ { \str_if_eq_p:nn { #1 } ( }
+ { \str_if_eq_p:nn { #1 } [ }
+ { \str_if_eq_p:nn { #1 } \{ }
+ { \str_if_eq_p:nn { #1 } \q_stop }
+ }
+ { \tl_gput_right:Nn \g_@@_preamble_tl { ! { \enskip } } }
+ \@@_patch_preamble:n #1
}
% \end{macrocode}
%
+%
% \begin{macrocode}
-\cs_new_protected:Npn \@@_patch_preamble_vii:n #1
+\cs_new_protected:Npn \@@_patch_preamble_xi:n #1
{
\tl_gput_right:Nn \g_@@_preamble_tl
{ ! { \skip_horizontal:N 2\l_@@_radius_dim } }
@@ -7923,7 +8232,7 @@ version 2005/12/01 or later.
% |<{..}| because, after those potential |<{...}|, we have to insert
% |!{\skip_horizontal:N ...}| when the key |vlines| is used.
% \begin{macrocode}
-\cs_new_protected:Npn \@@_patch_preamble_viii:n #1
+\cs_new_protected:Npn \@@_patch_preamble_x:n #1
{
\str_if_eq:nnTF { #1 } { < }
\@@_patch_preamble_ix:n
@@ -7942,10 +8251,11 @@ version 2005/12/01 or later.
\cs_new_protected:Npn \@@_patch_preamble_ix:n #1
{
\tl_gput_right:Nn \g_@@_preamble_tl { < { #1 } }
- \@@_patch_preamble_viii:n
+ \@@_patch_preamble_x:n
}
% \end{macrocode}
%
+%
%
% \bigskip
% The command |\@@_put_box_in_flow:| puts the box |\l_tmpa_box| (which contains
@@ -8105,7 +8415,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
{ \CT@arc@ \hrule height \heavyrulewidth }
}
- { \@@_error:n { bottomule~without~booktabs } }
+ { \@@_error:n { bottomrule~without~booktabs } }
}
\l_@@_notes_code_after_tl
\seq_gclear:N \g_@@_tabularnotes_seq
@@ -8315,7 +8625,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\cs_new_protected:Npn \@@_light_syntax_i #1\CodeAfter #2\q_stop
{
- \tl_gput_right:Nn \g_nicematrix_code_after_tl { #2 }
+ \tl_gput_right:Nn \g_nicematrix_code_after_tl { #2 }
% \end{macrocode}
% The body of the array, which is stored in the argument |#1|, is now
% splitted into items (and \emph{not} tokens).
@@ -9068,6 +9378,7 @@ version 2005/12/01 or later.
}
}
\cs_set_eq:NN \line \@@_line
+ \cs_set_eq:NN \SubMatrix \@@_SubMatrix
% \end{macrocode}
% When |light-syntax| is used, we insert systematically a |\CodeAfter| in the
% flow. Thus, it's possible to have two instructions |\CodeAfter| and the second
@@ -9076,9 +9387,18 @@ version 2005/12/01 or later.
% \begin{macrocode}
\cs_set_eq:NN \CodeAfter \prg_do_nothing:
% \end{macrocode}
-% And here's the |code-after|:
+%
+% We clear the list of the names of the potential |\SubMatrix| that will appear
+% in the |code-after| (unfortunately, that list has to be global).
% \begin{macrocode}
- \g_nicematrix_code_after_tl
+ \seq_gclear:N \g_@@_submatrix_names_seq
+% \end{macrocode}
+% And here's the |code-after|. Since the |code-after| may begin with an
+% ``argument'' between square brackets of the options, we extract and treat that
+% potential ``argument'' with the command |\@@_CodeAfter_keys:|.
+% \begin{macrocode}
+ \exp_last_unbraced:NV \@@_CodeAfter_keys: \g_nicematrix_code_after_tl
+ \scan_stop:
\tl_gclear:N \g_nicematrix_code_after_tl
\group_end:
% \end{macrocode}
@@ -9128,6 +9448,15 @@ version 2005/12/01 or later.
}
% \end{macrocode}
%
+% \bigskip
+% The following command will extract the potential options (between square
+% brackets) at the beginning of the |code-after| (that is to say, when
+% |\CodeAfter| is used, the options of that ``command'' |\CodeAfter|).
+% \begin{macrocode}
+\NewDocumentCommand \@@_CodeAfter_keys: { O { } }
+ { \keys_set:nn { NiceMatrix / CodeAfter } { #1 } }
+% \end{macrocode}
+%
%
% \bigskip
% We remind that the first mandatory argument of the command |\Block| is the
@@ -9970,9 +10299,69 @@ version 2005/12/01 or later.
% \begin{macrocode}
\cs_new_protected:Npn \@@_draw_line:
{
+ \pgfrememberpicturepositiononpagetrue
+ \pgf@relevantforpicturesizefalse
+ \tl_if_eq:NNTF \l_@@_xdots_line_style_tl \c_@@_standard_tl
+ \@@_draw_standard_dotted_line:
+ \@@_draw_non_standard_dotted_line:
+ }
+% \end{macrocode}
+%
+% \medskip
+% We have to do a special construction with |\exp_args:NV| to be able to put in
+% the list of options in the correct place in the Tikz instruction.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_draw_non_standard_dotted_line:
+ {
+ \begin { scope }
+ \exp_args:No \@@_draw_non_standard_dotted_line:n
+ { \l_@@_xdots_line_style_tl , \l_@@_xdots_color_tl }
+ }
+% \end{macrocode}
+% We have used the fact that, in \textsc{pgf}, un color name can be put directly
+% in a list of options (that's why we have put diredtly |\l_@@_xdots_color_tl|).
+%
+% \smallskip
+% The argument of |\@@_draw_non_standard_dotted_line:n| is, in fact, the list of options.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_draw_non_standard_dotted_line:n #1
+ {
+ \@@_draw_non_standard_dotted_line:nVV
+ { #1 }
+ \l_@@_xdots_up_tl
+ \l_@@_xdots_down_tl
+ }
% \end{macrocode}
-% First, we put the labels.
+%
% \begin{macrocode}
+\cs_new_protected:Npn \@@_draw_non_standard_dotted_line:nnn #1 #2 #3
+ {
+ \draw
+ [
+ #1 ,
+ shorten~> = \l_@@_xdots_shorten_dim ,
+ shorten~< = \l_@@_xdots_shorten_dim ,
+ ]
+ ( \l_@@_x_initial_dim , \l_@@_y_initial_dim )
+% \end{macrocode}
+% Be careful: We can't put |\c_math_toggle_token| instead of |$| in the
+% following lines because we are in the contents of Tikz nodes (and they will be
+% \emph{rescanned} if the Tikz library \pkg{babel} is loaded).
+% \begin{macrocode}
+ -- node [ sloped , above ] { $ \scriptstyle #2 $ }
+ node [ sloped , below ] { $ \scriptstyle #3 $ }
+ ( \l_@@_x_final_dim , \l_@@_y_final_dim ) ;
+ \end { scope }
+ }
+\cs_generate_variant:Nn \@@_draw_non_standard_dotted_line:nnn { n V V }
+% \end{macrocode}
+%
+% \bigskip
+% The command |\@@_draw_standard_dotted_line:| draws the line with our system of points
+% (which gives a dotted line with real round points).
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_draw_standard_dotted_line:
+ {
\bool_lazy_and:nnF
{ \tl_if_empty_p:N \l_@@_xdots_up_tl }
{ \tl_if_empty_p:N \l_@@_xdots_down_tl }
@@ -10017,52 +10406,6 @@ version 2005/12/01 or later.
{ \pgfusepath { } }
\endpgfscope
}
- \pgfrememberpicturepositiononpagetrue
- \pgf@relevantforpicturesizefalse
- \tl_if_eq:NNTF \l_@@_xdots_line_style_tl \c_@@_standard_tl
- \@@_draw_standard_dotted_line:
- \@@_draw_non_standard_dotted_line:
- }
-% \end{macrocode}
-%
-% \medskip
-% We have to do a special construction with |\exp_args:NV| to be able to put in
-% the list of options in the correct place in the Tikz instruction.
-% \begin{macrocode}
-\cs_new_protected:Npn \@@_draw_non_standard_dotted_line:
- {
- \begin { scope }
- \exp_args:No \@@_draw_non_standard_dotted_line:n
- { \l_@@_xdots_line_style_tl , \l_@@_xdots_color_tl }
- }
-% \end{macrocode}
-% We have used the fact that, in \textsc{pgf}, un color name can be put directly
-% in a list of options (that's why we have put diredtly |\l_@@_xdots_color_tl|).
-%
-% \smallskip
-% The argument of |\@@_draw_non_standard_dotted_line:n| is, in fact, the list of options.
-% \begin{macrocode}
-\cs_new_protected:Npn \@@_draw_non_standard_dotted_line:n #1
- {
- \draw
- [
- #1 ,
- shorten~> = \l_@@_xdots_shorten_dim ,
- shorten~< = \l_@@_xdots_shorten_dim ,
- ]
- ( \l_@@_x_initial_dim , \l_@@_y_initial_dim )
- --
- ( \l_@@_x_final_dim , \l_@@_y_final_dim ) ;
- \end { scope }
- }
-% \end{macrocode}
-%
-% \bigskip
-% The command |\@@_draw_standard_dotted_line:| draws the line with our system of points
-% (which give a dotted line with real round points).
-% \begin{macrocode}
-\cs_new_protected:Npn \@@_draw_standard_dotted_line:
- {
\group_begin:
% \end{macrocode}
% The dimension |\l_@@_l_dim| is the length $\ell$ of the line to draw. We use
@@ -10132,7 +10475,7 @@ version 2005/12/01 or later.
\l_@@_inter_dots_dim
}
}
- {
+ {
\int_set:Nn \l_tmpa_int
{
\dim_ratio:nn
@@ -10244,7 +10587,8 @@ version 2005/12/01 or later.
{ #1 , down = #2 , up = #3 }
}
}
- \bool_if:NF \l_@@_nullify_dots_bool { \phantom \@@_old_ldots }
+ \bool_if:NF \l_@@_nullify_dots_bool
+ { \phantom { \ensuremath { \@@_old_ldots } } }
\bool_gset_true:N \g_@@_empty_cell_bool
}
% \end{macrocode}
@@ -10263,7 +10607,8 @@ version 2005/12/01 or later.
{ #1 , down = #2 , up = #3 }
}
}
- \bool_if:NF \l_@@_nullify_dots_bool { \phantom \@@_old_cdots }
+ \bool_if:NF \l_@@_nullify_dots_bool
+ { \phantom { \ensuremath { \@@_old_cdots } } }
\bool_gset_true:N \g_@@_empty_cell_bool
}
% \end{macrocode}
@@ -10282,7 +10627,8 @@ version 2005/12/01 or later.
{ #1 , down = #2 , up = #3 }
}
}
- \bool_if:NF \l_@@_nullify_dots_bool { \phantom \@@_old_vdots }
+ \bool_if:NF \l_@@_nullify_dots_bool
+ { \phantom { \ensuremath { \@@_old_vdots } } }
\bool_gset_true:N \g_@@_empty_cell_bool
}
% \end{macrocode}
@@ -10310,7 +10656,8 @@ version 2005/12/01 or later.
}
}
- \bool_if:NF \l_@@_nullify_dots_bool { \phantom \@@_old_ddots }
+ \bool_if:NF \l_@@_nullify_dots_bool
+ { \phantom { \ensuremath { \@@_old_ddots } } }
\bool_gset_true:N \g_@@_empty_cell_bool
}
% \end{macrocode}
@@ -10335,9 +10682,9 @@ version 2005/12/01 or later.
\@@_instruction_of_type:nnn \l_@@_draw_first_bool { Iddots }
{ #1 , down = #2 , up = #3 }
}
-
}
- \bool_if:NF \l_@@_nullify_dots_bool { \phantom \@@_old_iddots }
+ \bool_if:NF \l_@@_nullify_dots_bool
+ { \phantom { \ensuremath { \@@_old_iddots } } }
\bool_gset_true:N \g_@@_empty_cell_bool
}
}
@@ -10375,9 +10722,9 @@ version 2005/12/01 or later.
\cs_set_eq:NN \@@_old_multicolumn \multicolumn
\cs_new:Npn \@@_multicolumn:nnn #1 #2 #3
{
-% \begin{macrocode}
+% \end{macrocode}
% We have to act in an expandable way since it will begin by a |\multicolumn|.
-% \end{macrocode
+% \begin{macrocode}
\exp_args:NNe
\@@_old_multicolumn
{ #1 }
@@ -13412,6 +13759,7 @@ version 2005/12/01 or later.
% \end{macrocode}
%
% \bigskip
+%
% \subsection*{How to draw the dotted lines transparently}
% \begin{macrocode}
\cs_set_protected:Npn \@@_renew_matrix:
@@ -13630,15 +13978,33 @@ version 2005/12/01 or later.
% \bigskip
% \subsection*{The keyword \textbackslash CodeAfter}
%
+%
+% The |code-after| (inserted with the key |code-after| or after the keyword
+% |\CodeAfter| can always begin with a list of pairs \emph{key-value} between
+% square brackets). Here the corresponding set of keys.
+% \begin{macrocode}
+\keys_define:nn { NiceMatrix / CodeAfter }
+ {
+ sub-matrix .code:n =
+ \keys_set:nn { NiceMatrix / sub-matrix } { #1 } ,
+ sub-matrix .value_required:n = true ,
+ delimiters-color .tl_set:N = \l_@@_delimiters_color_tl ,
+ delimiters-color .value_required:n = true ,
+ unknown .code:n = \@@_error:n { Unknown~key~for~CodeAfter }
+ }
+% \end{macrocode}
+%
+% \medskip
% In fact, in this subsection, we define the user command |\CodeAfter| for the
% case of the ``normal syntax''. For the case of ``light-syntax'', see the
% definition of the environment |{@@-light-syntax}| on
% p.~\pageref{code-light-syntax}.
%
+%
% \medskip
-% In the environments of \pkg{nicematrix}, |\CodeAfter| will be linked to the
-% following command |\@@_CodeAfter:|. That macro must \emph{not} be protected
-% since it begins with |\omit|.
+% In the environments of \pkg{nicematrix}, |\CodeAfter| will be linked to
+% |\@@_CodeAfter:|. That macro must \emph{not} be protected since it begins with
+% |\omit|.
% \begin{macrocode}
\cs_new:Npn \@@_CodeAfter: { \omit \@@_CodeAfter_i:n }
% \end{macrocode}
@@ -13683,8 +14049,363 @@ version 2005/12/01 or later.
% \end{macrocode}
%
%
+% \subsection*{The delimiters in the preamble}
+%
+% The command |\@@_delimiter:nnn| will be used to draw delimiters inside the
+% matrix when delimiters are specified in the preamble of the array. It does
+% \emph{not} concern the exterior delimiters added by |{NiceArrayWithDelims}|
+% (and |{pNiceArray}|, |{pNiceMatrix}|, etc.).
+%
+% A delimiter in the preamble of the array will write an instruction
+% |\@@_delimiter:nnn| in the |\g_@@_internal_code_after_tl| (and also
+% potentially add instructions in the preamble provided to |\array| in order to
+% add spaces between columns).
+%
+% \smallskip
+% The first argument is the type of delimiter (|(|, |[|, |\{|, |)|, |]| ou
+% |\}|). The second argument is the number of colummn. The third argument is a
+% boolean equal to |\c_true_bool| (resp. |\c_false_true|) when the delimiter
+% must be put on the left (resp. right) side.
+%
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_delimiter:nnn #1 #2 #3
+ {
+ \pgfpicture
+ \pgfrememberpicturepositiononpagetrue
+ \pgf@relevantforpicturesizefalse
+% \end{macrocode}
+%
+% \medskip
+% |\l_@@_y_initial_dim| and |\l_@@_y_final_dim| will be the $y$-values of the
+% extremities of the delimiter we will have to construct.
+% \begin{macrocode}
+ \@@_qpoint:n { row - 1 }
+ \dim_set_eq:NN \l_@@_y_initial_dim \pgf@y
+ \@@_qpoint:n { row - \@@_succ:n \c@iRow }
+ \dim_set_eq:NN \l_@@_y_final_dim \pgf@y
+% \end{macrocode}
+%
+% \medskip
+% We will compute in |\l_tmpa_dim| the $x$-value where we will have to put our
+% delimiter (on the left side or on the right side).
+% \begin{macrocode}
+ \bool_if:nTF { #3 }
+ { \dim_set_eq:NN \l_tmpa_dim \c_max_dim }
+ { \dim_set:Nn \l_tmpa_dim { - \c_max_dim } }
+ \int_step_inline:nnn \l_@@_first_row_int \g_@@_row_total_int
+ {
+ \cs_if_exist:cT
+ { pgf @ sh @ ns @ \@@_env: - ##1 - #2 }
+ {
+ \pgfpointanchor
+ { \@@_env: - ##1 - #2 }
+ { \bool_if:nTF { #3 } { west } { east } }
+ \dim_set:Nn \l_tmpa_dim
+ { \bool_if:nTF { #3 } \dim_min:nn \dim_max:nn \l_tmpa_dim \pgf@x }
+ }
+ }
+% \end{macrocode}
+%
+%
+% Now we can put the delimiter with a node of \textsc{pgf}.
+% \begin{macrocode}
+ \pgfset { inner~sep = \c_zero_dim }
+ \dim_zero:N \nulldelimiterspace
+ \pgftransformshift
+ {
+ \pgfpoint
+ { \l_tmpa_dim }
+ { ( \l_@@_y_initial_dim + \l_@@_y_final_dim + \arrayrulewidth ) / 2 }
+ }
+ \pgfnode
+ { rectangle }
+ { \bool_if:nTF { #3 } { east } { west } }
+ {
+% \end{macrocode}
+% Here is the content of the \textsc{pgf} node, that is to say the delimiter,
+% constructed with its right size.
+% \begin{macrocode}
+ \nullfont
+ \c_math_toggle_token
+ \tl_if_empty:NF \l_@@_delimiters_color_tl
+ { \color { \l_@@_delimiters_color_tl } }
+ \bool_if:nTF { #3 } { \left #1 } { \left . }
+ \vcenter
+ {
+ \nullfont
+ \hrule \@height
+ \dim_eval:n { \l_@@_y_initial_dim - \l_@@_y_final_dim }
+ \@depth \c_zero_dim
+ \@width \c_zero_dim
+ }
+ \bool_if:nTF { #3 } { \right . } { \right #1 }
+ \c_math_toggle_token
+ }
+ { }
+ { }
+ \endpgfpicture
+ }
+% \end{macrocode}
+%
+% \subsection*{The command SubMatrix}
+%
+%
+% \begin{macrocode}
+\keys_define:nn { NiceMatrix / sub-matrix }
+ {
+ extra-height .dim_set:N = \l_@@_submatrix_extra_height_dim ,
+ extra-height .value_required:n = true ,
+ left-xshift .dim_set:N = \l_@@_submatrix_left_xshift_dim ,
+ left-xshift .value_required:n = true ,
+ right-xshift .dim_set:N = \l_@@_submatrix_right_xshift_dim ,
+ right-xshift .value_required:n = true ,
+ xshift .meta:n = { left-xshift = #1, right-xshift = #1 } ,
+ xshift .value_required:n = true ,
+ delimiters-color .tl_set:N = \l_@@_delimiters_color_tl ,
+ delimiters-color .value_required:n = true ,
+ slim .bool_set:N = \l_@@_submatrix_slim_bool ,
+ slim .default:n = true ,
+ }
+\keys_define:nn { NiceMatrix }
+ {
+ SubMatrix .inherit:n = NiceMatrix /sub-matrix ,
+ CodeAfter / sub-matrix .inherit:n = NiceMatrix / sub-matrix
+ }
+% \end{macrocode}
+%
+% \medskip
+% The following keys set is for the command |\SubMatrix| itself (not the tuning
+% of |\SubMatrix| that can be done elsewhere).
+% \begin{macrocode}
+\keys_define:nn { NiceMatrix / SubMatrix }
+ {
+ name .code:n =
+ \tl_if_empty:nTF { #1 }
+ { \@@_error:n { Invalid~name~format } }
+ {
+ \regex_match:nnTF { \A[A-Za-z][A-Za-z0-9]*\Z } { #1 }
+ {
+ \seq_if_in:NnTF \g_@@_submatrix_names_seq { #1 }
+ { \@@_error:nn { Duplicate~name~for~SubMatrix } { #1 } }
+ {
+ \str_set:Nn \l_@@_submatrix_name_str { #1 }
+ \seq_gput_right:Nn \g_@@_submatrix_names_seq { #1 }
+ }
+ }
+ { \@@_error:n { Invalid~name~format } }
+ } ,
+ name .value_required:n = true ,
+ unknown .code:n = \@@_error:n { Unknown~key~for~SubMatrix }
+ }
+% \end{macrocode}
%
% \bigskip
+% In the |code-after|, the following command |\@@_SubMatrix| will be linked to
+% |\SubMatrix|.
+% \begin{itemize}
+% \item |#1| is the left delimiter;
+% \item |#2| is the upper-left cell of the matrix with the format $i$-$j$;
+% \item |#2| is the lower-right cell of the matrix with the format $i$-$j$;
+% \item |#4| is the right delimiter;
+% \item |#5| is the list of options of the command.
+% \end{itemize}
+% \begin{macrocode}
+\NewDocumentCommand \@@_SubMatrix { m m m m ! O { } }
+ {
+ \group_begin:
+% \end{macrocode}
+% The command |\@@_cut_on_hyphen:w| cuts on the hyphen an argument of the form
+% $i$-$j$. The value of $i$ is stored in |\l_tmpa_tl| and the value of $j$ is
+% stored in |\l_tmpb_tl|.
+% \begin{macrocode}
+ \@@_cut_on_hyphen:w #3 \q_stop
+ \tl_clear_new:N \l_tmpc_tl
+ \tl_clear_new:N \l_tmpd_tl
+ \tl_set_eq:NN \l_tmpc_tl \l_tmpa_tl
+ \tl_set_eq:NN \l_tmpd_tl \l_tmpb_tl
+ \@@_cut_on_hyphen:w #2 \q_stop
+ \bool_lazy_or:nnTF
+ { \int_compare_p:nNn \l_tmpc_tl > \g_@@_row_total_int }
+ { \int_compare_p:nNn \l_tmpd_tl > \g_@@_col_total_int }
+ { \@@_error:n { SubMatrix~too~large } }
+ {
+ \dim_zero_new:N \l_@@_submatrix_extra_height_dim
+ \dim_zero_new:N \l_@@_submatrix_left_xshift_dim
+ \dim_zero_new:N \l_@@_submatrix_right_xshift_dim
+ \str_clear_new:N \l_@@_submatrix_name_str
+ \keys_set:nn { NiceMatrix / SubMatrix } { #5 }
+ \pgfpicture
+ \pgfrememberpicturepositiononpagetrue
+ \pgf@relevantforpicturesizefalse
+ \pgfset { inner~sep = \c_zero_dim }
+ \dim_set_eq:NN \l_@@_x_initial_dim \c_max_dim
+ \dim_set:Nn \l_@@_x_final_dim { - \c_max_dim }
+% \end{macrocode}
+% The last value of |\int_step_inline:nnn| is provided by currifycation.
+% \begin{macrocode}
+ \bool_if:NTF \l_@@_submatrix_slim_bool
+ { \int_step_inline:nnn \l_tmpa_tl \l_tmpc_tl }
+ { \int_step_inline:nnn \l_@@_first_row_int \g_@@_row_total_int }
+ {
+ \cs_if_exist:cT
+ { pgf @ sh @ ns @ \@@_env: - ##1 - \l_tmpb_tl }
+ {
+ \pgfpointanchor { \@@_env: - ##1 - \l_tmpb_tl } { west }
+ \dim_set:Nn \l_@@_x_initial_dim
+ { \dim_min:nn \l_@@_x_initial_dim \pgf@x }
+ }
+ \cs_if_exist:cT
+ { pgf @ sh @ ns @ \@@_env: - ##1 - \l_tmpd_tl }
+ {
+ \pgfpointanchor { \@@_env: - ##1 - \l_tmpd_tl } { east }
+ \dim_set:Nn \l_@@_x_final_dim
+ { \dim_max:nn \l_@@_x_final_dim \pgf@x }
+ }
+ }
+ \@@_qpoint:n { row - \l_tmpa_tl - base }
+ \dim_set:Nn \l_@@_y_initial_dim
+ { \pgf@y + ( \box_ht:N \strutbox + \extrarowheight ) * \arraystretch }
+ \@@_qpoint:n { row - \l_tmpc_tl - base }
+ \dim_set:Nn \l_@@_y_final_dim
+ { \pgf@y - ( \box_dp:N \strutbox ) * \arraystretch }
+ \int_step_inline:nnn \l_@@_first_col_int \g_@@_col_total_int
+ {
+ \cs_if_exist:cT
+ { pgf @ sh @ ns @ \@@_env: - \l_tmpa_tl - ##1 }
+ {
+ \pgfpointanchor { \@@_env: - \l_tmpa_tl - ##1 } { north }
+ \dim_set:Nn \l_@@_y_initial_dim
+ { \dim_max:nn \l_@@_y_initial_dim \pgf@y }
+ }
+ \cs_if_exist:cT
+ { pgf @ sh @ ns @ \@@_env: - \l_tmpc_tl - ##1 }
+ {
+ \pgfpointanchor { \@@_env: - \l_tmpc_tl - ##1 } { south }
+ \dim_set:Nn \l_@@_y_final_dim
+ { \dim_min:nn \l_@@_y_final_dim \pgf@y }
+ }
+ }
+ \dim_set:Nn \l_tmpa_dim
+ {
+ \l_@@_y_initial_dim - \l_@@_y_final_dim +
+ \l_@@_submatrix_extra_height_dim - \arrayrulewidth
+ }
+ \dim_set_eq:NN \nulldelimiterspace \c_zero_dim
+% \end{macrocode}
+%
+% \medskip
+% If the key |name| has been used for the command |\SubMatrix|, we create a PGF
+% node with that name for the submatrix (this node does not take into account
+% the delimiters that we will put after).
+% \begin{macrocode}
+ \str_if_empty:NF \l_@@_submatrix_name_str
+ {
+ \@@_pgf_rect_node:nnnnn \l_@@_submatrix_name_str
+ \l_@@_x_initial_dim \l_@@_y_initial_dim
+ \l_@@_x_final_dim \l_@@_y_final_dim
+ }
+% \end{macrocode}
+%
+% \medskip
+% Now, we deal with the left delimiter. Of course, the environment
+% |{pgfscope}| is for the |\pgftransformshift|.
+% \begin{macrocode}
+ \begin { pgfscope }
+ \pgftransformshift
+ {
+ \pgfpoint
+ { \l_@@_x_initial_dim - \l_@@_submatrix_left_xshift_dim }
+ { ( \l_@@_y_initial_dim + \l_@@_y_final_dim ) / 2 }
+ }
+ \str_if_empty:NTF \l_@@_submatrix_name_str
+ { \@@_node_left:nn #1 { } }
+ { \@@_node_left:nn #1 { \@@_env: - \l_@@_submatrix_name_str - left } }
+ \end { pgfscope }
+% \end{macrocode}
+%
+% \medskip
+% Now, we deal with the right delimiter.
+% \begin{macrocode}
+ \pgftransformshift
+ {
+ \pgfpoint
+ { \l_@@_x_final_dim + \l_@@_submatrix_right_xshift_dim }
+ { ( \l_@@_y_initial_dim + \l_@@_y_final_dim ) / 2 }
+ }
+ \str_if_empty:NTF \l_@@_submatrix_name_str
+ { \@@_node_right:nn #4 { } }
+ {
+ \@@_node_right:nn #4 { \@@_env: - \l_@@_submatrix_name_str - right }
+ }
+ \endpgfpicture
+ }
+ \group_end:
+ }
+% \end{macrocode}
+%
+% \medskip
+% The command |\@@_node_left:nn| puts the left delimiter with the correct size.
+% The argument |#1| is the delimiter to put. The argument |#2| is the name we
+% will give to this PGF node (if the key |name| has been used in |\SubMatrix|).
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_node_left:nn #1 #2
+ {
+ \pgfnode
+ { rectangle }
+ { east }
+ {
+ \nullfont
+ \c_math_toggle_token
+ \tl_if_empty:NF \l_@@_delimiters_color_tl
+ { \color { \l_@@_delimiters_color_tl } }
+ \left #1
+ \vcenter
+ {
+ \nullfont
+ \hrule \@height \l_tmpa_dim
+ \@depth \c_zero_dim
+ \@width \c_zero_dim
+ }
+ \right .
+ \c_math_toggle_token
+ }
+ { #2 }
+ { }
+ }
+% \end{macrocode}
+%
+% \medskip
+% The command |\@@_node_right:nn| puts the right delimiter with the correct size.
+% The argument |#1| is the delimiter to put. The argument |#2| is the name we
+% will give to this PGF node (if the key |name| has been used in |\SubMatrix|).
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_node_right:nn #1 #2
+ {
+ \pgfnode
+ { rectangle }
+ { west }
+ {
+ \nullfont
+ \c_math_toggle_token
+ \tl_if_empty:NF \l_@@_delimiters_color_tl
+ { \color { \l_@@_delimiters_color_tl } }
+ \left .
+ \vcenter
+ {
+ \nullfont
+ \hrule \@height \l_tmpa_dim
+ \@depth \c_zero_dim
+ \@width \c_zero_dim
+ }
+ \right #1
+ \c_math_toggle_token
+ }
+ { #2 }
+ { }
+ }
+% \end{macrocode}
+%
+% \bigskip
% \subsection*{We process the options at package loading}
%
%
@@ -13726,12 +14447,19 @@ version 2005/12/01 or later.
define-L-C-R,~
footnote,~
footnotehyper,~
- renew-dots,~
- renew-matrix~and~
- transparent.
+ renew-dots,~and
+ renew-matrix.
}
% \end{macrocode}
%
+% \begin{macrocode}
+\@@_msg_new:nn { Key~transparent }
+ {
+ The~key~'transparent'~is~now~obsolete~(because~it's~name~
+ is~not~clear).~You~should~use~the~conjonction~of~'renew-dots'~
+ and~'renew-matrix'.~However,~you~can~go~on.
+ }
+% \end{macrocode}
%
% \begin{macrocode}
\keys_define:nn { NiceMatrix / Package }
@@ -13742,7 +14470,12 @@ version 2005/12/01 or later.
renew-dots .value_forbidden:n = true ,
renew-matrix .code:n = \@@_renew_matrix: ,
renew-matrix .value_forbidden:n = true ,
- transparent .meta:n = { renew-dots , renew-matrix } ,
+ transparent .code:n =
+ {
+ \@@_renew_matrix:
+ \bool_set_true:N \l_@@_renew_dots_bool
+ \@@_error:n { Key~transparent }
+ } ,
transparent .value_forbidden:n = true,
footnote .bool_set:N = \c_@@_footnote_bool ,
footnotehyper .bool_set:N = \c_@@_footnotehyper_bool ,
@@ -13780,8 +14513,12 @@ version 2005/12/01 or later.
% \begin{macrocode}
\bool_if:NT \c_@@_footnote_bool
{
+% \end{macrocode}
+% The class \cls{beamer} has its own system to extract footnotes and that's why
+% we have nothing to do if \cls{beamer} is used.
+% \begin{macrocode}
\@ifclassloaded { beamer }
- { \msg_info:nn { nicematrix } { Option~incompatible~with~Beamer } }
+ { \bool_set_false:N \c_@@_footnote_bool }
{
\@ifpackageloaded { footnotehyper }
{ \@@_error:n { footnote~with~footnotehyper~package } }
@@ -13793,8 +14530,12 @@ version 2005/12/01 or later.
% \begin{macrocode}
\bool_if:NT \c_@@_footnotehyper_bool
{
+% \end{macrocode}
+% The class \cls{beamer} has its own system to extract footnotes and that's why
+% we have nothing to do if \cls{beamer} is used.
+% \begin{macrocode}
\@ifclassloaded { beamer }
- { \@@_info:n { Option~incompatible~with~Beamer } }
+ { \bool_set_false:N \c_@@_footnote_bool }
{
\@ifpackageloaded { footnote }
{ \@@_error:n { footnotehyper~with~footnote~package } }
@@ -13987,6 +14728,15 @@ version 2005/12/01 or later.
% \end{macrocode}
%
% \begin{macrocode}
+\@@_msg_new:nn { SubMatrix~too~large }
+ {
+ Your~command~\token_to_str:N \SubMatrix\
+ can't~be~drawn~because~your~matrix~is~too~small.\\
+ If~you~go~on,~this~command~will~be~ignored.
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
\@@_msg_new:nn { double-backslash~in~light-syntax }
{
You~can't~use~\token_to_str:N \\~to~separate~rows~because~you~have~used~
@@ -14023,6 +14773,15 @@ version 2005/12/01 or later.
}
% \end{macrocode}
%
+% \begin{macrocode}
+\@@_msg_new:nn { Invalid~name~format }
+ {
+ You~can't~give~the~name~'\l_keys_value_tl'~to~a~\token_to_str:N
+ \SubMatrix.\\
+ A~name~must~be~accepted~by~the~regular~expression~[A-Za-z][A-Za-z0-9]*.\\
+ If~you~go~on,~this~key~will~be~ignored.
+ }
+% \end{macrocode}
%
% \begin{macrocode}
\@@_msg_new:nn { empty~environment }
@@ -14030,6 +14789,15 @@ version 2005/12/01 or later.
% \end{macrocode}
%
% \begin{macrocode}
+\@@_msg_new:nn { Delimiter~with~small }
+ {
+ You~can't~put~a~delimiter~in~the~preamble~of~your~\@@_full_name_env:\
+ because~the~key~'small'~is~in~force.\\
+ This~error~is~fatal.
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
\@@_msg_new:nn { unknown~cell~for~line~in~code-after }
{
Your~command~\token_to_str:N\line\{#1\}\{#2\}~in~the~'code-after'~
@@ -14038,6 +14806,21 @@ version 2005/12/01 or later.
}
% \end{macrocode}
%
+%
+% \begin{macrocode}
+\@@_msg_new:nnn { Duplicate~name~for~SubMatrix }
+ {
+ The~name~'#1'~is~already~used~for~a~\token_to_str:N \SubMatrix\
+ in~this~\@@_full_name_env:.\\
+ If~you~go~on,~this~key~will~be~ignored.\\
+ For~a~list~of~the~names~already~used,~type~H~<return>.
+ }
+ {
+ The~names~already~defined~in~this~\@@_full_name_env:\ are:~
+ \seq_use:Nnnn \g_@@_submatrix_names_seq { ~and~ } { ,~ } { ~and~ }.
+ }
+% \end{macrocode}
+%
% \begin{macrocode}
\@@_msg_new:nn { Hdotsfor~in~col~0 }
{
@@ -14066,7 +14849,7 @@ version 2005/12/01 or later.
}
% \end{macrocode}
%
-%
+%
% \begin{macrocode}
\@@_msg_new:nn { last-col~non~empty~for~NiceMatrixOptions }
{
@@ -14120,7 +14903,7 @@ version 2005/12/01 or later.
% \end{macrocode}
%
% \begin{macrocode}
-\@@_msg_new:nn { bottomule~without~booktabs }
+\@@_msg_new:nn { bottomrule~without~booktabs }
{
You~can't~use~the~key~'tabular/bottomrule'~because~you~haven't~
loaded~'booktabs'.\\
@@ -14184,8 +14967,35 @@ version 2005/12/01 or later.
line-width~and~r.
}
% \end{macrocode}
+%
+% \begin{macrocode}
+\@@_msg_new:nnn { Unknown~key~for~CodeAfter }
+ {
+ The~key~'\l_keys_key_str'~is~unknown.\\
+ If~you~go~on,~it~will~be~ignored. \\
+ For~a~list~of~the~available~keys~in~\token_to_str:N
+ \CodeAfter,~type~H~<return>.
+ }
+ {
+ The~available~keys~are~(in~alphabetic~order):~
+ delimiters-color,~
+ sub-matrix~(several~subkeys)~
+ and~xdots~(several~subkeys).~
+ The~latter~is~for~the~command~\token_to_str:N \line.
+ }
+% \end{macrocode}
%
% \begin{macrocode}
+\@@_msg_new:nn { Unknown~key~for~SubMatrix }
+ {
+ The~key~'\l_keys_key_str'~is~unknown.\\
+ The~only~keys~available~here~are~'delimiters-color',~'extra-height',~
+ 'left-xshift',~'name',~'right-xshift',~'slim'~and~'xshift'.\\
+ If~you~go~on,~this~key~will~be~ignored. \\
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
\@@_msg_new:nnn { Unknown~key~for~notes }
{
The~key~'\l_keys_key_str'~is~unknown.\\
@@ -14239,17 +15049,15 @@ version 2005/12/01 or later.
left-margin,~
letter-for-dotted-lines,~
light-syntax,~
- notes~(several subkeys),~
+ notes~(several~subkeys),~
nullify-dots,~
renew-dots,~
renew-matrix,~
right-margin,~
small,~
- transparent,~
+ sub-matrix~(several~subkeys),
vlines,~
- xdots/color,~
- xdots/shorten~and~
- xdots/line-style.
+ xdots~(several~subkeys).
}
% \end{macrocode}
%
@@ -14434,7 +15242,7 @@ version 2005/12/01 or later.
}
{
The~names~already~defined~in~this~document~are:~
- \seq_use:Nnnn \g_@@_names_seq { ,~ } { ,~ } { ~and~ }.
+ \seq_use:Nnnn \g_@@_names_seq { ~and~ } { ,~ } { ~and~ }.
}
% \end{macrocode}
%
@@ -14447,6 +15255,7 @@ version 2005/12/01 or later.
% \end{macrocode}
%
%
+%
% \vspace{1cm}
% \section{History}
%
@@ -14861,6 +15670,15 @@ version 2005/12/01 or later.
%
% New key |cell-space-limits|.
%
+% \subsection*{Changes between versions 5.9 and 5.10}
+%
+% New command |\SubMatrix| available in the |\CodeAfter|.
+%
+% It's possible to provide options (between brackets) to the command |\CodeAfter|.
+%
+% A (non fatal) error is raised when the key |transparent|, which is
+% deprecated, is used.
+%
% \PrintIndex
%
% \tableofcontents
@@ -14873,3 +15691,4 @@ version 2005/12/01 or later.
% fill-column: 80
% End:
+
diff --git a/macros/latex/contrib/nicematrix/nicematrix.pdf b/macros/latex/contrib/nicematrix/nicematrix.pdf
index 750e4fd683..12843620c0 100644
--- a/macros/latex/contrib/nicematrix/nicematrix.pdf
+++ b/macros/latex/contrib/nicematrix/nicematrix.pdf
Binary files differ
diff --git a/macros/latex/contrib/ragged2e/LICENSE b/macros/latex/contrib/ragged2e/LICENSE
deleted file mode 100644
index 2244313901..0000000000
--- a/macros/latex/contrib/ragged2e/LICENSE
+++ /dev/null
@@ -1,416 +0,0 @@
-The LaTeX Project Public License
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-
-LPPL Version 1.3c 2008-05-04
-
-Copyright 1999 2002-2008 LaTeX3 Project
- Everyone is allowed to distribute verbatim copies of this
- license document, but modification of it is not allowed.
-
-
-PREAMBLE
-========
-
-The LaTeX Project Public License (LPPL) is the primary license under
-which the LaTeX kernel and the base LaTeX packages are distributed.
-
-You may use this license for any work of which you hold the copyright
-and which you wish to distribute. This license may be particularly
-suitable if your work is TeX-related (such as a LaTeX package), but
-it is written in such a way that you can use it even if your work is
-unrelated to TeX.
-
-The section `WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE',
-below, gives instructions, examples, and recommendations for authors
-who are considering distributing their works under this license.
-
-This license gives conditions under which a work may be distributed
-and modified, as well as conditions under which modified versions of
-that work may be distributed.
-
-We, the LaTeX3 Project, believe that the conditions below give you
-the freedom to make and distribute modified versions of your work
-that conform with whatever technical specifications you wish while
-maintaining the availability, integrity, and reliability of
-that work. If you do not see how to achieve your goal while
-meeting these conditions, then read the document `cfgguide.tex'
-and `modguide.tex' in the base LaTeX distribution for suggestions.
-
-
-DEFINITIONS
-===========
-
-In this license document the following terms are used:
-
- `Work'
- Any work being distributed under this License.
-
- `Derived Work'
- Any work that under any applicable law is derived from the Work.
-
- `Modification'
- Any procedure that produces a Derived Work under any applicable
- law -- for example, the production of a file containing an
- original file associated with the Work or a significant portion of
- such a file, either verbatim or with modifications and/or
- translated into another language.
-
- `Modify'
- To apply any procedure that produces a Derived Work under any
- applicable law.
-
- `Distribution'
- Making copies of the Work available from one person to another, in
- whole or in part. Distribution includes (but is not limited to)
- making any electronic components of the Work accessible by
- file transfer protocols such as FTP or HTTP or by shared file
- systems such as Sun's Network File System (NFS).
-
- `Compiled Work'
- A version of the Work that has been processed into a form where it
- is directly usable on a computer system. This processing may
- include using installation facilities provided by the Work,
- transformations of the Work, copying of components of the Work, or
- other activities. Note that modification of any installation
- facilities provided by the Work constitutes modification of the Work.
-
- `Current Maintainer'
- A person or persons nominated as such within the Work. If there is
- no such explicit nomination then it is the `Copyright Holder' under
- any applicable law.
-
- `Base Interpreter'
- A program or process that is normally needed for running or
- interpreting a part or the whole of the Work.
-
- A Base Interpreter may depend on external components but these
- are not considered part of the Base Interpreter provided that each
- external component clearly identifies itself whenever it is used
- interactively. Unless explicitly specified when applying the
- license to the Work, the only applicable Base Interpreter is a
- `LaTeX-Format' or in the case of files belonging to the
- `LaTeX-format' a program implementing the `TeX language'.
-
-
-
-CONDITIONS ON DISTRIBUTION AND MODIFICATION
-===========================================
-
-1. Activities other than distribution and/or modification of the Work
-are not covered by this license; they are outside its scope. In
-particular, the act of running the Work is not restricted and no
-requirements are made concerning any offers of support for the Work.
-
-2. You may distribute a complete, unmodified copy of the Work as you
-received it. Distribution of only part of the Work is considered
-modification of the Work, and no right to distribute such a Derived
-Work may be assumed under the terms of this clause.
-
-3. You may distribute a Compiled Work that has been generated from a
-complete, unmodified copy of the Work as distributed under Clause 2
-above, as long as that Compiled Work is distributed in such a way that
-the recipients may install the Compiled Work on their system exactly
-as it would have been installed if they generated a Compiled Work
-directly from the Work.
-
-4. If you are the Current Maintainer of the Work, you may, without
-restriction, modify the Work, thus creating a Derived Work. You may
-also distribute the Derived Work without restriction, including
-Compiled Works generated from the Derived Work. Derived Works
-distributed in this manner by the Current Maintainer are considered to
-be updated versions of the Work.
-
-5. If you are not the Current Maintainer of the Work, you may modify
-your copy of the Work, thus creating a Derived Work based on the Work,
-and compile this Derived Work, thus creating a Compiled Work based on
-the Derived Work.
-
-6. If you are not the Current Maintainer of the Work, you may
-distribute a Derived Work provided the following conditions are met
-for every component of the Work unless that component clearly states
-in the copyright notice that it is exempt from that condition. Only
-the Current Maintainer is allowed to add such statements of exemption
-to a component of the Work.
-
- a. If a component of this Derived Work can be a direct replacement
- for a component of the Work when that component is used with the
- Base Interpreter, then, wherever this component of the Work
- identifies itself to the user when used interactively with that
- Base Interpreter, the replacement component of this Derived Work
- clearly and unambiguously identifies itself as a modified version
- of this component to the user when used interactively with that
- Base Interpreter.
-
- b. Every component of the Derived Work contains prominent notices
- detailing the nature of the changes to that component, or a
- prominent reference to another file that is distributed as part
- of the Derived Work and that contains a complete and accurate log
- of the changes.
-
- c. No information in the Derived Work implies that any persons,
- including (but not limited to) the authors of the original version
- of the Work, provide any support, including (but not limited to)
- the reporting and handling of errors, to recipients of the
- Derived Work unless those persons have stated explicitly that
- they do provide such support for the Derived Work.
-
- d. You distribute at least one of the following with the Derived Work:
-
- 1. A complete, unmodified copy of the Work;
- if your distribution of a modified component is made by
- offering access to copy the modified component from a
- designated place, then offering equivalent access to copy
- the Work from the same or some similar place meets this
- condition, even though third parties are not compelled to
- copy the Work along with the modified component;
-
- 2. Information that is sufficient to obtain a complete,
- unmodified copy of the Work.
-
-7. If you are not the Current Maintainer of the Work, you may
-distribute a Compiled Work generated from a Derived Work, as long as
-the Derived Work is distributed to all recipients of the Compiled
-Work, and as long as the conditions of Clause 6, above, are met with
-regard to the Derived Work.
-
-8. The conditions above are not intended to prohibit, and hence do not
-apply to, the modification, by any method, of any component so that it
-becomes identical to an updated version of that component of the Work as
-it is distributed by the Current Maintainer under Clause 4, above.
-
-9. Distribution of the Work or any Derived Work in an alternative
-format, where the Work or that Derived Work (in whole or in part) is
-then produced by applying some process to that format, does not relax or
-nullify any sections of this license as they pertain to the results of
-applying that process.
-
-10. a. A Derived Work may be distributed under a different license
- provided that license itself honors the conditions listed in
- Clause 6 above, in regard to the Work, though it does not have
- to honor the rest of the conditions in this license.
-
- b. If a Derived Work is distributed under a different license, that
- Derived Work must provide sufficient documentation as part of
- itself to allow each recipient of that Derived Work to honor the
- restrictions in Clause 6 above, concerning changes from the Work.
-
-11. This license places no restrictions on works that are unrelated to
-the Work, nor does this license place any restrictions on aggregating
-such works with the Work by any means.
-
-12. Nothing in this license is intended to, or may be used to, prevent
-complete compliance by all parties with all applicable laws.
-
-
-NO WARRANTY
-===========
-
-There is no warranty for the Work. Except when otherwise stated in
-writing, the Copyright Holder provides the Work `as is', without
-warranty of any kind, either expressed or implied, including, but not
-limited to, the implied warranties of merchantability and fitness for a
-particular purpose. The entire risk as to the quality and performance
-of the Work is with you. Should the Work prove defective, you assume
-the cost of all necessary servicing, repair, or correction.
-
-In no event unless required by applicable law or agreed to in writing
-will The Copyright Holder, or any author named in the components of the
-Work, or any other party who may distribute and/or modify the Work as
-permitted above, be liable to you for damages, including any general,
-special, incidental or consequential damages arising out of any use of
-the Work or out of inability to use the Work (including, but not limited
-to, loss of data, data being rendered inaccurate, or losses sustained by
-anyone as a result of any failure of the Work to operate with any other
-programs), even if the Copyright Holder or said author or said other
-party has been advised of the possibility of such damages.
-
-
-MAINTENANCE OF THE WORK
-=======================
-
-The Work has the status `author-maintained' if the Copyright Holder
-explicitly and prominently states near the primary copyright notice in
-the Work that the Work can only be maintained by the Copyright Holder
-or simply that it is `author-maintained'.
-
-The Work has the status `maintained' if there is a Current Maintainer
-who has indicated in the Work that they are willing to receive error
-reports for the Work (for example, by supplying a valid e-mail
-address). It is not required for the Current Maintainer to acknowledge
-or act upon these error reports.
-
-The Work changes from status `maintained' to `unmaintained' if there
-is no Current Maintainer, or the person stated to be Current
-Maintainer of the work cannot be reached through the indicated means
-of communication for a period of six months, and there are no other
-significant signs of active maintenance.
-
-You can become the Current Maintainer of the Work by agreement with
-any existing Current Maintainer to take over this role.
-
-If the Work is unmaintained, you can become the Current Maintainer of
-the Work through the following steps:
-
- 1. Make a reasonable attempt to trace the Current Maintainer (and
- the Copyright Holder, if the two differ) through the means of
- an Internet or similar search.
-
- 2. If this search is successful, then enquire whether the Work
- is still maintained.
-
- a. If it is being maintained, then ask the Current Maintainer
- to update their communication data within one month.
-
- b. If the search is unsuccessful or no action to resume active
- maintenance is taken by the Current Maintainer, then announce
- within the pertinent community your intention to take over
- maintenance. (If the Work is a LaTeX work, this could be
- done, for example, by posting to comp.text.tex.)
-
- 3a. If the Current Maintainer is reachable and agrees to pass
- maintenance of the Work to you, then this takes effect
- immediately upon announcement.
-
- b. If the Current Maintainer is not reachable and the Copyright
- Holder agrees that maintenance of the Work be passed to you,
- then this takes effect immediately upon announcement.
-
- 4. If you make an `intention announcement' as described in 2b. above
- and after three months your intention is challenged neither by
- the Current Maintainer nor by the Copyright Holder nor by other
- people, then you may arrange for the Work to be changed so as
- to name you as the (new) Current Maintainer.
-
- 5. If the previously unreachable Current Maintainer becomes
- reachable once more within three months of a change completed
- under the terms of 3b) or 4), then that Current Maintainer must
- become or remain the Current Maintainer upon request provided
- they then update their communication data within one month.
-
-A change in the Current Maintainer does not, of itself, alter the fact
-that the Work is distributed under the LPPL license.
-
-If you become the Current Maintainer of the Work, you should
-immediately provide, within the Work, a prominent and unambiguous
-statement of your status as Current Maintainer. You should also
-announce your new status to the same pertinent community as
-in 2b) above.
-
-
-WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE
-======================================================
-
-This section contains important instructions, examples, and
-recommendations for authors who are considering distributing their
-works under this license. These authors are addressed as `you' in
-this section.
-
-Choosing This License or Another License
-----------------------------------------
-
-If for any part of your work you want or need to use *distribution*
-conditions that differ significantly from those in this license, then
-do not refer to this license anywhere in your work but, instead,
-distribute your work under a different license. You may use the text
-of this license as a model for your own license, but your license
-should not refer to the LPPL or otherwise give the impression that
-your work is distributed under the LPPL.
-
-The document `modguide.tex' in the base LaTeX distribution explains
-the motivation behind the conditions of this license. It explains,
-for example, why distributing LaTeX under the GNU General Public
-License (GPL) was considered inappropriate. Even if your work is
-unrelated to LaTeX, the discussion in `modguide.tex' may still be
-relevant, and authors intending to distribute their works under any
-license are encouraged to read it.
-
-A Recommendation on Modification Without Distribution
------------------------------------------------------
-
-It is wise never to modify a component of the Work, even for your own
-personal use, without also meeting the above conditions for
-distributing the modified component. While you might intend that such
-modifications will never be distributed, often this will happen by
-accident -- you may forget that you have modified that component; or
-it may not occur to you when allowing others to access the modified
-version that you are thus distributing it and violating the conditions
-of this license in ways that could have legal implications and, worse,
-cause problems for the community. It is therefore usually in your
-best interest to keep your copy of the Work identical with the public
-one. Many works provide ways to control the behavior of that work
-without altering any of its licensed components.
-
-How to Use This License
------------------------
-
-To use this license, place in each of the components of your work both
-an explicit copyright notice including your name and the year the work
-was authored and/or last substantially modified. Include also a
-statement that the distribution and/or modification of that
-component is constrained by the conditions in this license.
-
-Here is an example of such a notice and statement:
-
- %% pig.dtx
- %% Copyright 2005 M. Y. Name
- %
- % This work may be distributed and/or modified under the
- % conditions of the LaTeX Project Public License, either version 1.3
- % of this license or (at your option) any later version.
- % The latest version of this license is in
- % http://www.latex-project.org/lppl.txt
- % and version 1.3 or later is part of all distributions of LaTeX
- % version 2005/12/01 or later.
- %
- % This work has the LPPL maintenance status `maintained'.
- %
- % The Current Maintainer of this work is M. Y. Name.
- %
- % This work consists of the files pig.dtx and pig.ins
- % and the derived file pig.sty.
-
-Given such a notice and statement in a file, the conditions
-given in this license document would apply, with the `Work' referring
-to the three files `pig.dtx', `pig.ins', and `pig.sty' (the last being
-generated from `pig.dtx' using `pig.ins'), the `Base Interpreter'
-referring to any `LaTeX-Format', and both `Copyright Holder' and
-`Current Maintainer' referring to the person `M. Y. Name'.
-
-If you do not want the Maintenance section of LPPL to apply to your
-Work, change `maintained' above into `author-maintained'.
-However, we recommend that you use `maintained', as the Maintenance
-section was added in order to ensure that your Work remains useful to
-the community even when you can no longer maintain and support it
-yourself.
-
-Derived Works That Are Not Replacements
----------------------------------------
-
-Several clauses of the LPPL specify means to provide reliability and
-stability for the user community. They therefore concern themselves
-with the case that a Derived Work is intended to be used as a
-(compatible or incompatible) replacement of the original Work. If
-this is not the case (e.g., if a few lines of code are reused for a
-completely different task), then clauses 6b and 6d shall not apply.
-
-
-Important Recommendations
--------------------------
-
- Defining What Constitutes the Work
-
- The LPPL requires that distributions of the Work contain all the
- files of the Work. It is therefore important that you provide a
- way for the licensee to determine which files constitute the Work.
- This could, for example, be achieved by explicitly listing all the
- files of the Work near the copyright notice of each file or by
- using a line such as:
-
- % This work consists of all files listed in manifest.txt.
-
- in that place. In the absence of an unequivocal list it might be
- impossible for the licensee to determine what is considered by you
- to comprise the Work and, in such a case, the licensee would be
- entitled to make reasonable conjectures as to which files comprise
- the Work.
-
diff --git a/macros/latex/contrib/ragged2e/Makefile b/macros/latex/contrib/ragged2e/Makefile
deleted file mode 100644
index fe07f4f1f6..0000000000
--- a/macros/latex/contrib/ragged2e/Makefile
+++ /dev/null
@@ -1,31 +0,0 @@
-doc: ragged2e.pdf ragged2e.dvi
-ragged2e.dvi: ragged2e.pdf
- latex ragged2e.drv
-
-ragged2e.pdf: ragged2e.dtx ragged2e.drv ragged2e.sty
- pdflatex -draftmode ragged2e.drv
- pdflatex -draftmode ragged2e.drv
- makeindex -s gind.ist -t ragged2e.ind.ilg ragged2e ragged2e.idx
- makeindex -s gglo.ist -t ragged2e.gls.ilg -o ragged2e.gls ragged2e ragged2e.glo
- pdflatex ragged2e.drv
-
-ragged2e.drv ragged2e.sty: ragged2e.dtx ragged2e.ins
- latex ragged2e.ins
-
-ragged2e.zip: ragged2e.dtx ragged2e.pdf ragged2e.ins
- $(eval RELEASEDIR := $(shell mktemp -d))
- @cp -a ragged2e.dtx ragged2e.pdf ragged2e.ins $(RELEASEDIR)
- @cp .git/gitHeadInfo.gin $(RELEASEDIR)/gitHeadLocal.gin
- @sed -i 's/usepackage{gitinfo2}/usepackage[release]{gitinfo2}/g' $(RELEASEDIR)/ragged2e.dtx
- @zip --junk-paths ragged2e.zip $(RELEASEDIR)/ragged2e.dtx $(RELEASEDIR)/ragged2e.pdf $(RELEASEDIR)/ragged2e.ins $(RELEASEDIR)/gitHeadLocal.gin
- @rm -rf $(RELEASEDIR)
-
-.PHONY: clean clobber
-
-clean:
- rm -f *.aux *.toc *.glo *.gls *.hd *.idx *.ilg *.ind *.log
-
-clobber: clean
- rm -f *.dvi *.pdf *.sty *.drv *.zip
-
-# vim:noexpandtab
diff --git a/macros/latex/contrib/ragged2e/README b/macros/latex/contrib/ragged2e/README
deleted file mode 100644
index 7458a57d73..0000000000
--- a/macros/latex/contrib/ragged2e/README
+++ /dev/null
@@ -1,28 +0,0 @@
-==========================================================================
-
-The `ragged2e' package
-Release 2019-07-28
-Copyright (C) 1996-2019 Martin Schröder (martin@oneiros.de)
-
-License: LPPL = LaTeX Project Public Licence
-Maintenance Status: unmaintained
-
-Home page:
- https://gitlab.com/hagenbuch/ragged2e
-
-If you need help for installation please visit:
- https://texfaq.org/FAQ-inst-miktexstar
- https://texfaq.org/FAQ-installthings
- https://texfaq.org/FAQ-privinst
-
-If you need help using these packages please visit:
- https://latex.org/forum/
- https://tex.stackexchange.com/
- https://golatex.de/ (German)
- https://texwelt.de/ (German)
-
-If you think you may have found a bug in these packages,
-or want to report a suggestion for improvement, please visit
- https://gitlab.com/hagenbuch/ragged2e/issues
-
-Note that this package is *unmaintained*.
diff --git a/macros/latex/contrib/ragged2e/README.md b/macros/latex/contrib/ragged2e/README.md
new file mode 100644
index 0000000000..3a7a51ddf8
--- /dev/null
+++ b/macros/latex/contrib/ragged2e/README.md
@@ -0,0 +1,42 @@
+# The `ragged2e' package
+
+Copyright (C) Martin Schröder, 1996–2019, Marei Peischl (peiTeX) <marei@peitex.de>, 2021
+
+ ragged2e 2021/02/05 v3.0
+
+***************************************************************************
+
+ This material is subject to the LaTeX Project Public License version 1.3c
+ or later. See http://www.latex-project.org/lppl.txt for details.
+
+***************************************************************************
+
+This work has the LPPL maintenance status `maintained'.
+
+The Current Maintainer of this work is
+ Marei Peischl <marei@peitex.de>.
+
+[Link to the GitLab Repository](https://gitlab.com/TeXhackse/ragged2e)
+
+## Abstract
+A LaTeX package which defines new commands `\Centering`, `\RaggedLeft`, and `\RaggedRight` and new environments `Center`, `FlushLeft`, and `FlushRight`, which set ragged text and are easily configurable to allow hyphenation.
+
+## Provided files
+
+* README.md
+* ragged2e.dtx
+* ragged2e.ins
+
+The files
+* ragged2e.sty
+
+## Issue Tracker
+If you think you may have found a bug in these packages,
+or want to report a suggestion for improvement, please visit
+ https://gitlab.com/TeXhackse/ragged2e/issues
+
+
+## Version History
+ * 3.0 Move from everysel package to lthooks
+
+
diff --git a/macros/latex/contrib/ragged2e/ragged2e.dtx b/macros/latex/contrib/ragged2e/ragged2e.dtx
index dd30514ccb..5c3408cf12 100644
--- a/macros/latex/contrib/ragged2e/ragged2e.dtx
+++ b/macros/latex/contrib/ragged2e/ragged2e.dtx
@@ -1,41 +1,51 @@
+%% \iffalse meta-comment
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Copyright (C) Martin Schröder, 1996–2019
+% Marei Peischl (peiTeX) <marei@peitex.de>, 2021
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3c
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is
+% Marei Peischl <marei@peitex.de>.
+%
+%
+% This work consists of the files
+% README.md
+% ragged2e.dtx
+% ragged2e.ins
+% and the derived file
+% ragged2e.sty.
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \fi
% \iffalse
\NeedsTeXFormat{LaTeX2e}[2017/03/29]
%<package>\ProvidesPackage{ragged2e}
-%<package> [2019/07/28 v2.2 ragged2e Package (MS)]
+%<package> [2021/02/05 v3.0 ragged2e Package]
%
%<*driver>
-\ProvidesFile{ragged2e.drv}
- [2019/03/26 v1.09 Driver for ragged2e Package (MS)]
\documentclass[a4paper]{ltxdoc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{microtype}
-\usepackage{url} % in latex/contrib/other/misc
+\usepackage{url}
\usepackage{array}
\usepackage{tabularx}
\usepackage{gitinfo2}
\usepackage{hypdoc}
\usepackage{geometry}
-% booktabs.sty is in latex/contrib/supported/booktab
-\IfFileExists{booktabs.sty}{%
- \usepackage{booktabs}%
- }{%
- \PackageWarning{ragged2e}%
- {booktabs.sty is missing.\MessageBreak
- I'm emulating the needed commands, but you should\MessageBreak
- install it for better results}%
- \let\toprule\hline
- \let\midrule\hline
- \let\bottomrule\hline
- }
-\IfFileExists{footmisc.sty}{%
- \usepackage[document]{ragged2e}[2003/01/26]
- }{%
- \PackageWarning{ragged2e}%
- {footmisc.sty is missing.\MessageBreak
- You should install it for better results}%
- \usepackage[raggedrightboxes]{ragged2e}[2003/01/26]
- }
+\usepackage{booktabs}
+\usepackage[document]{ragged2e}
\setlength{\RaggedRightRightskip}{0pt plus 4em}%
\GetFileInfo{ragged2e.sty}
\EnableCrossrefs
@@ -65,25 +75,8 @@
\let\PrintIndex\relax
\end{document}
%</driver>
-%
-%% Copyright 1996..2019 by Martin Schr\"oder.
-%
-% This work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
-% of this license or (at your option) any later version.
-% The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
-% version 2005/12/01 or later.
-%
-% This work has the LPPL maintenance status `unmaintained'.
-%
-% This work consists of the files ragged2e.dtx and ragged2e.ins
-% and the derived file ragged2e.sty.
-%
% \fi
-%
-% \CheckSum{478}
+% \CheckSum{486}
%
%% \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
@@ -101,34 +94,6 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-%% \iffalse meta-comment
-%% ===================================================================
-%% @LaTeX-style-file{
-%% author = {Martin Schr\"oder},
-%% version = "2.2",
-%% date = "26 Mar 2019",
-%% filename = "ragged2e.sty",
-%% address = {Martin Schr\"oder
-%% Unterstra\"se 31
-%% 47051 Duisburg
-%% Germany}
-%% email = "martin@oneiros.de",
-% codetable = "ISO/ASCII",
-% keywords = "raggedright",
-% dependences = "everysel",
-% supported = "yes",
-%% docstring = "LaTeX package which defines new commands
-%% \Centering, \RaggedLeft, \RaggedRight and
-%% \justifying and new environments Center,
-%% FlushLeft, FlushRight and justify, which
-%% set ragged text and are easily configurable
-%% to allow hyphenation.
-%% Uses the everysel package.
-%% "
-%% }
-%% ===================================================================
-%% \fi
-%
% \pagestyle{headings}
%
% \newcommand*{\file}[1] {\texttt{#1}}
@@ -172,12 +137,7 @@
% The version number of this file is \fileversion,
% revision~\#\gitAbbrevHash, last revised \protect\gitAuthorIsoDate.}^^A
% }
-% \author{Martin Schr\"oder\\[0.5ex]
-% \normalsize Unterstra\ss{}e 31\\
-% \normalsize 47051 Duisburg\\
-% \normalsize Germany\\
-% \normalsize \texttt{martin@oneiros.de}\\
-% \normalsize \url{https://gitlab.com/hagenbuch/ragged2e}}
+% \author{Martin Schröder\\\url{https://gitlab.com/TeXhackse/ragged2e}\thanks{maintained by Marei Peischl}}
% \date{\filedate}
% \maketitle
%
@@ -203,19 +163,8 @@
% \setlength{\parskip}{^^A
% .3\baselineskip plus.05\baselineskip minus.05\baselineskip}
%
-% \section{Status of this package}
% \changes{v2.2}{2019/07/28}{Change maintenance status of package}
-% ^^A
-% This package is \emph{unmaintained}.
-%
-% I will not actively work on this package anymore. I \emph{may}
-% merge merge requests to the repository on Gitlab
-% (\url{https://gitlab.com/hagenbuch/ragged2e}). If you want to
-% become the maintainer of this package, contact me and I may hand
-% over the repository to you. Or fork the package on Gitlab.
-%
-% I will \emph{not} upload new versions to CTAN.
-%
+% \changes{v3.0}{2021/02/05}{Change maintenance status}
% \section{The problem}
% ^^A
% \LaTeX{} has three commands (\cs{centering}, \cs{raggedleft}, and
@@ -595,11 +544,13 @@
% ^^A
% \changes{v2.1}{2003/10/08}{document that \option{document} needs
% \package{footmisc}}
+% \changes{v3.0}{2021/02/05}{document everysel is obsolete}
% This package requires the following packages:
% \begin{description}
-% \item[\normalfont\package{everysel}\,\cite{everysel}]
-% It is used to distinguish between monospaced and proportional
-% fonts.
+% \item[\normalfont\package{everysel}\,\cite{everysel}](only if format older than 2021/01/05)
+% It has been used to distinguish between monospaced and proportional
+% fonts as long as the LaTeX kernel did not provide the functionality with lthooks \cite{lthooks-doc}.
+% Formats newer than 2021/01/05 do no longer depend on everysel.
% \item[\normalfont\package{footmisc}\,\cite{footmisc}]
% It is used by the \option{footnotes} and the
% \option{document} options; at least version~5.00 (2002/08/28)
@@ -632,7 +583,7 @@
% \cs{@gnewline}.\newline
% Frank Mittelbach (\url{frank.mittelbach@latex-project.org})
% provided the impetus for version~2.00.\newline
-% Rolf Niepraschk (\url{Rolf.Niepraschk@gmx.de}) and Hubert G\"a\ss{}lein
+% Rolf Niepraschk (\url{Rolf.Niepraschk@gmx.de}) and Hubert Gäßlein
% found many bugs and provided fixes for them and code for new
% features.\newline
% Jordan Firth (\url{jafirth@ncsu.edu}) provided the final push for
@@ -646,7 +597,7 @@
%
% \bibitem{ltmiscen}
% Johannes Braams, David Carlisle, Alan Jeffrey, Leslie Lamport, Frank
-% Mittelbach, Chris Rowley, and Rainer Sch{\"o}pf.
+% Mittelbach, Chris Rowley, and Rainer Schöpf.
% \newblock ltmiscen.dtx.
% \newblock Part of the {\LaTeX}-distribution.
%
@@ -654,11 +605,11 @@
% Robin Fairbairns.
% \newblock \texttt{footmisc} --- a portmanteau package for
% customising footnotes in \LaTeXe.
-% \newblock \url{CTAN: tex-archive/macros/latex/contrib/supported/footmisc/footmisc.dtx}.
+% \newblock \url{https://mirror.ctan.org/macros/latex/contrib/footmisc/}.
%
% \bibitem{raggedr}
% James Kilfiger.
-% \newblock \url{CTAN: tex-archive/macros/latex/contrib/other/misc/raggedr.sty}.
+% \newblock \url{https://ctan.org/tex-archive/obsolete/macros/latex/contrib/misc/raggedr.sty}.
% \newblock \LaTeXe{} package.
%
% \bibitem{KnuthTeXa}
@@ -671,21 +622,26 @@
% \newblock \emph{\LaTeX: A Document Preparation System}.
% \newblock Ad{\-d}i{\-s}on-Wes{\-l}ey, Reading, MA, USA, first edition, 1986.
%
+% \bibitem{lthooks-doc}
+% Frank Mittelbach.
+% \newblock The \package{lthooks} package.
+% \newblock \url{http://mirrors.ctan.org/macros/latex/base/lthooks-doc.pdf}
+%
% \bibitem{cmfonts}
-% Frank Mittelbach and Rainer Sch{\"o}pf.
+% Frank Mittelbach and Rainer Schöpf.
% \newblock The file {\texttt{cmfonts.fdd}} for use with {\LaTeXe}.
% \newblock Part of the {\LaTeX}-distribution.
%
% \bibitem{everysel}
-% Martin Schr{\"o}der.
-% \newblock The \package{everysel}-package.
-% \newblock \url{CTAN: tex-archive/macros/latex/contrib/supported/ms/everysel.dtx}.
+% Martin Schröder.
+% \newblock The obsolete \package{everysel}-package.
+% \newblock \url{http://mirrors.ctan.org/macros/latex/contrib/everysel/everysel.pdf}.
% \newblock \LaTeXe{} package.
%
% \bibitem{raggedri}
-% Martin Schr{\"o}der.
+% Martin Schröder.
% \newblock The \package{raggedri} document option.
-% \newblock Was in \url{CTAN: tex-archive/macros/latex209/contrib/raggedright}.
+% \newblock Was in \url{http://mirrors.ctan.org/tex-archive/macros/latex209/contrib/raggedright}.
% \newblock \LaTeX2.09 style, outdated.
%
% \bibitem{ragged}
@@ -959,10 +915,12 @@
%
% \subsection{Loading packages}
% ^^A
-% We need the \package{everysel} package.
+% \changes{v3.00}{2021/02/05}{Remove the \package{everysel} package if kernel hooks are available}
+% We need the \package{everysel} package for older kernels.
% \changes{v2.00}{2003/01/18}{Load the \package{footmisc} package}%
% \begin{macrocode}
-\RequirePackage{everysel}
+\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
+\IfFormatAtLeastTF{2021/01/05}{}{\RequirePackage{everysel}}
% \end{macrocode}
% If the option \option{footnotes} is selected, we load the
% \package{footmisc} package after we are finished (\package{footmisc}
@@ -1149,7 +1107,13 @@
\spaceskip\z@
\fi
}
-\EverySelectfont{\@raggedtwoe@everyselectfont}
+% \end{macrocode}
+% If our kernel is new enough we use the kernel hook directly instead of the everysel macro.
+% \changes{v3.00}{2021/02/05}{Use kernel hook if available}
+% \begin{macrocode}
+\IfFormatAtLeastTF{2021/01/05}
+ {\AddToHook{selectfont}{\@raggedtwoe@everyselectfont}}
+ {\EverySelectfont{\@raggedtwoe@everyselectfont}}
% \end{macrocode}
% \end{macro}
%
@@ -1394,4 +1358,4 @@
%</package>
% \end{macrocode}
% \Finale
-% ^^A vim:tw=70:ts=2
+% ^^A
diff --git a/macros/latex/contrib/ragged2e/ragged2e.ins b/macros/latex/contrib/ragged2e/ragged2e.ins
index 72cc08ee56..e2134b7620 100644
--- a/macros/latex/contrib/ragged2e/ragged2e.ins
+++ b/macros/latex/contrib/ragged2e/ragged2e.ins
@@ -1,93 +1,34 @@
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesFile{ragged2e.ins}
- [2019/04/14 v1.5 Installation script for Ragged2e Package (MS)]
-%%
-%% Copyright 1996..2019 by Martin Schr\"oder.
-%%
-%% This work may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3
-%% of this license or (at your option) any later version.
-%% The latest version of this license is in
-%% http://www.latex-project.org/lppl.txt
-%% and version 1.3 or later is part of all distributions of LaTeX
-%% version 2005/12/01 or later.
-%%
-%% This work has the LPPL maintenance status `maintained'.
-%%
-%% The Current Maintainer of this work is Martin Schr\"oder.
-%%
-%% This work consists of the files ragged2e.dtx and ragged2e.ins
-%% and the derived file ragged2e.sty.
-%%
-%% --------------- start of docstrip commands ------------------
\input docstrip.tex
-{\ifx\endbatchfile\undefined
-\Msg{**********************************************}
-\Msg{*}
-\Msg{* This installation requires docstrip}
-\Msg{* version 2.4d or later.}
-\Msg{*}
-\Msg{* An older version of docstrip has been input}
-\Msg{*}
-\Msg{**********************************************}
-\errhelp{Move or rename old docstrip.tex.}
-\errmessage{Old docstrip in input path}
-\batchmode
-\csname @@end\endcsname
-\fi}
-\Msg{***********************************************************}
-\Msg{*}
-\Msg{* The ragged2e distribution contains these files:}
-\Msg{*}
-\Msg{* \space\space ragged2e.dtx}
-\Msg{* \space\space ragged2e.ins}
-\Msg{*}
-\Msg{* If you receive only some of these files from someone, complain!}
-\Msg{*}
-\Msg{***********************************************************}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesFile{ragged2e.ins}
+ [2020/02/05 v3.0 Installation script for Ragged2e Package]
\preamble
-
-Copyright 1996..2019 Martin Schroeder.
-
-This file is part of the Ragged2e package
------------------------------------------
+Copyright (C) 1996–2019 Martin Schröder, 2021 Marei Peischl (peiTeX) <marei@peitex.de>
This work may be distributed and/or modified under the
-conditions of the LaTeX Project Public License, either version 1.3
+conditions of the LaTeX Project Public License, either version 1.3c
of this license or (at your option) any later version.
The latest version of this license is in
- http://www.latex-project.org/lppl.txt
-and version 1.3 or later is part of all distributions of LaTeX
+http://www.latex-project.org/lppl.txt
+and version 1.3c or later is part of all distributions of LaTeX
version 2005/12/01 or later.
This work has the LPPL maintenance status `maintained'.
-The Current Maintainer of this work is Martin Schroeder.
+The Current Maintainer of this work is
+ Marei Peischl <marei@peitex.de>.
This work consists of the files ragged2e.dtx and ragged2e.ins
and the derived file ragged2e.sty.
\endpreamble
-\declarepreamble\driverpreamble
-
-Copyright 1996..2019 Martin Schroeder.
-
-This file is part of the Ragged2e package
------------------------------------------
-
-To produce the documentation in the way you like you are allowed
-to change this driver file.
-
-\endpreamble
-
\keepsilent
\askforoverwritefalse
-\generate{\file{ragged2e.sty}{\from{ragged2e.dtx}{package}}
- \usepreamble\driverpreamble
- \file{ragged2e.drv}{\from{ragged2e.dtx}{driver}}
- }
+\generate{%
+ \file{ragged2e.sty}{\from{ragged2e.dtx}{package}}
+}
\Msg{***********************************************************}
\Msg{*}
@@ -96,7 +37,7 @@ to change this driver file.
\Msg{*}
\Msg{* \space\space ragged2e.sty}
\Msg{*}
-\Msg{* To produce the documentation run the file ragged2e.drv}
+\Msg{* To produce the documentation run the file ragged2e.dtx}
\Msg{* through LaTeX.}
\Msg{*}
\Msg{* Happy TeXing}
@@ -104,4 +45,3 @@ to change this driver file.
\endbatchfile
%%
%% End of file `ragged2e.ins'.
-%% vim:syntax=tex:tw=70:ts=2
diff --git a/macros/latex/contrib/ragged2e/ragged2e.pdf b/macros/latex/contrib/ragged2e/ragged2e.pdf
index 607a7c9ba3..0a593dada1 100644
--- a/macros/latex/contrib/ragged2e/ragged2e.pdf
+++ b/macros/latex/contrib/ragged2e/ragged2e.pdf
Binary files differ
diff --git a/macros/latex/contrib/ragged2e/raggtest.tex b/macros/latex/contrib/ragged2e/raggtest.tex
deleted file mode 100644
index 5b10e30afe..0000000000
--- a/macros/latex/contrib/ragged2e/raggtest.tex
+++ /dev/null
@@ -1,75 +0,0 @@
-\documentclass{article}
-\usepackage{ragged2e}
-\usepackage{multicol}
-
-\pagestyle{empty}
-
-\newcommand{\Test}{%
- ``The purpose of this pronunciation exercise is to remind you that
- \TeX{} is primarily concerned with high-quality technical
- manuscripts: Its emphasis is on art and technology, as in the
- underlying Greek word.
- If you merely want to produce a passably good document ---
- something acceptable and bascially readable but not really
- beautiful --- a simpler system will usually suffice.
- With \TeX{} the goal is to produce the {\sl finest\/} quality:
- this requires more attention to detail, but you will not find it
- much harder to go the extra distance, and you'll be able to take
- special pride in the finished product.''
-}
-
-\setlength{\parindent}{0pt}
-
-\newcommand{\bs}{{\tt\symbol{'134}}}
-
-\begin{document}
-\begin{multicols}{3}
-
-\fussy
-
-\RaggedRight
-
-{\verb|\raggedright|\\
-\raggedright\Test\\[3ex]}
-
-{{\tt\bs{}RaggedRightRight\-skip} = {\tt 0pt plus 1em}\\
-\setlength{\RaggedRightRightskip}{0pt plus 1em}
-\RaggedRight\Test\par\vspace{3ex}}
-
-{{\tt\bs{}RaggedRightRight\-skip} = {\tt 0pt plus 2em}
-\begin{FlushLeft}\Test\end{FlushLeft}}
-
-{{\tt\bs{}RaggedRightRight\-skip} = {\tt 0pt plus 3em}\\
-\setlength{\RaggedRightRightskip}{0pt plus 3em}
-\RaggedRight\Test\par\vspace{3ex}}
-
-{{\tt\bs{}RaggedRightRight\-skip} = {\tt 0pt plus 4em}
-\setlength{\RaggedRightRightskip}{0pt plus 4em}
-\begin{FlushLeft}\Test\end{FlushLeft}}
-
-{{\tt\bs{}RaggedRightRight\-skip} = {\tt 0pt plus 5em}\\
-\setlength{\RaggedRightRightskip}{0pt plus 5em}
-\RaggedRight\Test\par\vspace{3ex}}
-
-{{\tt\bs{}RaggedRightRight\-skip} = {\tt 0pt plus 6em}
-\setlength{\RaggedRightRightskip}{0pt plus 6em}
-\begin{FlushLeft}\Test\end{FlushLeft}}
-
-{{\tt\bs{}RaggedRightRight\-skip} = {\tt 0pt plus 7em}\\
-\setlength{\RaggedRightRightskip}{0pt plus 7em}
-\RaggedRight\Test\par\vspace{3ex}}
-
-{%
- \setlength{\parfillskip}{0pt}
- \setlength{\RaggedRightRightskip}{0pt}
- \setlength{\RaggedRightLeftskip}{0pt plus 2em}
- \RaggedRight
- {%
- {\tt\bs{}RaggedRightRight\-skip} = {\tt 0pt},
- {\tt\bs{}Rag\-ged\-Right\-Left\-skip} = {\tt 0pt plus 2em},
- {\tt\bs{}par\-fill\-skip} = {\tt 0pt}\par}
- \Test\par}
-
-\end{multicols}
-
-\end{document}
diff --git a/macros/latex/contrib/ragged2e/test-koma.tex b/macros/latex/contrib/ragged2e/test-koma.tex
deleted file mode 100644
index 35dfe75b89..0000000000
--- a/macros/latex/contrib/ragged2e/test-koma.tex
+++ /dev/null
@@ -1,37 +0,0 @@
-\nofiles
-\documentclass[a5paper]{scrartcl}
-\usepackage[document,newcommands]{ragged2e}
-\usepackage[T1]{fontenc}
-\usepackage{lmodern}
-\usepackage{microtype}
-\usepackage{geometry}
-
-\newcommand*{\Test}{%
- \rmfamily
- ``The purpose of this pronunciation exercise is to remind you that
- \TeX{} is primarily concerned with high-quality technical
- manuscripts: Its emphasis is on art and technology, as in the
- underlying Greek word.
- If you merely want to produce a passably good document ---
- something acceptable and bascially readable but not really
- beautiful --- a simpler system will usually suffice.
- With \TeX{} the goal is to produce the \textsl{finest} quality:
- this requires more attention to detail, but you will not find it
- much harder to go the extra distance, and you'll be able to take
- special pride in the finished product.''\par
- \ttfamily
- ``The purpose of this pronunciation exercise is to remind you that
- \TeX{} is primarily concerned with high-quality technical
- manuscripts: Its emphasis is on art and technology, as in the
- underlying Greek word.
- If you merely want to produce a passably good document ---
- something acceptable and bascially readable but not really
- beautiful --- a simpler system will usually suffice.
- With \TeX{} the goal is to produce the \textsl{finest} quality:
- this requires more attention to detail, but you will not find it
- much harder to go the extra distance, and you'll be able to take
- special pride in the finished product.''}
-
-\begin{document}
-\Test\footnote{\Test}
-\end{document}
diff --git a/macros/latex/contrib/ragged2e/test1.tex b/macros/latex/contrib/ragged2e/test1.tex
deleted file mode 100644
index 924044522c..0000000000
--- a/macros/latex/contrib/ragged2e/test1.tex
+++ /dev/null
@@ -1,61 +0,0 @@
-\nofiles
-\documentclass{article}
-
-\newcommand*{\Test}[1]{%
- #1\\
- \rmfamily
- ``The purpose of this pronunciation exercise is to remind you that
- \TeX{} is primarily concerned with high-quality technical
- manuscripts: Its emphasis is on art and technology, as in the
- underlying Greek word.
- If you merely want to produce a passably good document ---
- something acceptable and bascially readable but not really
- beautiful --- a simpler system will usually suffice.
- With \TeX{} the goal is to produce the \textsl{finest} quality:
- this requires more attention to detail, but you will not find it
- much harder to go the extra distance, and you'll be able to take
- special pride in the finished product.''\par
- \ttfamily
- ``The purpose of this pronunciation exercise is to remind you that
- \TeX{} is primarily concerned with high-quality technical
- manuscripts: Its emphasis is on art and technology, as in the
- underlying Greek word.
- If you merely want to produce a passably good document ---
- something acceptable and bascially readable but not really
- beautiful --- a simpler system will usually suffice.
- With \TeX{} the goal is to produce the \textsl{finest} quality:
- this requires more attention to detail, but you will not find it
- much harder to go the extra distance, and you'll be able to take
- special pride in the finished product.''\par
- \medskip
- }
-\usepackage{multicol}
-\setcounter{collectmore}{2}
-\setcounter{columnbadness}{5000}
-
-\pagestyle{empty}
-
-\usepackage{ragged2e}
-
-\begin{document}
-\begin{multicols}{3}
-\fussy
-{\centering\Test{centering}}
-{\Centering\Test{Centering}}
-\newpage
-{\raggedleft\Test{raggedleft}}
-{\RaggedLeft\Test{RaggedLeft}}
-\newpage
-{\raggedright\Test{raggedright}}
-{\RaggedRight\Test{RaggedRight}}
-\newpage
-\begin{center}\Test{center}\end{center}
-\begin{Center}\Test{Center}\end{Center}
-\newpage
-\begin{flushleft}\Test{flushleft}\end{flushleft}
-\begin{FlushLeft}\Test{FlushLeft}\end{FlushLeft}
-\newpage
-\begin{flushright}\Test{flushright}\end{flushright}
-\begin{FlushRight}\Test{Flushright}\end{FlushRight}
-\end{multicols}
-\end{document}
diff --git a/macros/latex/contrib/ragged2e/test2.tex b/macros/latex/contrib/ragged2e/test2.tex
deleted file mode 100644
index 82c6c6590c..0000000000
--- a/macros/latex/contrib/ragged2e/test2.tex
+++ /dev/null
@@ -1,61 +0,0 @@
-\nofiles
-\documentclass{article}
-
-\newcommand*{\Test}[1]{%
- #1\\
- \rmfamily
- ``The purpose of this pronunciation exercise is to remind you that
- \TeX{} is primarily concerned with high-quality technical
- manuscripts: Its emphasis is on art and technology, as in the
- underlying Greek word.
- If you merely want to produce a passably good document ---
- something acceptable and bascially readable but not really
- beautiful --- a simpler system will usually suffice.
- With \TeX{} the goal is to produce the \textsl{finest} quality:
- this requires more attention to detail, but you will not find it
- much harder to go the extra distance, and you'll be able to take
- special pride in the finished product.''\par
- \ttfamily
- ``The purpose of this pronunciation exercise is to remind you that
- \TeX{} is primarily concerned with high-quality technical
- manuscripts: Its emphasis is on art and technology, as in the
- underlying Greek word.
- If you merely want to produce a passably good document ---
- something acceptable and bascially readable but not really
- beautiful --- a simpler system will usually suffice.
- With \TeX{} the goal is to produce the \textsl{finest} quality:
- this requires more attention to detail, but you will not find it
- much harder to go the extra distance, and you'll be able to take
- special pride in the finished product.''\par
- \medskip
- }
-\usepackage{multicol}
-\setcounter{collectmore}{2}
-\setcounter{columnbadness}{5000}
-
-\pagestyle{empty}
-
-\usepackage[OriginalParameters]{ragged2e}
-
-\begin{document}
-\begin{multicols}{3}
-\fussy
-{\centering\Test{centering}}
-{\Centering\Test{Centering}}
-\newpage
-{\raggedleft\Test{raggedleft}}
-{\RaggedLeft\Test{RaggedLeft}}
-\newpage
-{\raggedright\Test{raggedright}}
-{\RaggedRight\Test{RaggedRight}}
-\newpage
-\begin{center}\Test{center}\end{center}
-\begin{Center}\Test{Center}\end{Center}
-\newpage
-\begin{flushleft}\Test{flushleft}\end{flushleft}
-\begin{FlushLeft}\Test{FlushLeft}\end{FlushLeft}
-\newpage
-\begin{flushright}\Test{flushright}\end{flushright}
-\begin{FlushRight}\Test{Flushright}\end{FlushRight}
-\end{multicols}
-\end{document}
diff --git a/macros/latex/contrib/suftesi/README b/macros/latex/contrib/suftesi/README
index a4211d840e..a12471ce93 100644
--- a/macros/latex/contrib/suftesi/README
+++ b/macros/latex/contrib/suftesi/README
@@ -1,7 +1,7 @@
-----------------------------------------------------------------------
The 'suftesi' class for LaTeX
Author: Ivan Valbusa
- ivan dot valbusa at univr dot it
+ ivan dot valbusa at gmail dot com
This work has the LPPL maintenance status "author-maintained".
This work may be distributed and/or modified under the
diff --git a/macros/latex/contrib/suftesi/suftesi.dtx b/macros/latex/contrib/suftesi/suftesi.dtx
index 250432db6b..e9c3711111 100644
--- a/macros/latex/contrib/suftesi/suftesi.dtx
+++ b/macros/latex/contrib/suftesi/suftesi.dtx
@@ -56,7 +56,7 @@ This work has the LPPL maintenance status "author-maintained".
%<class>\NeedsTeXFormat{LaTeX2e}[2005/12/01]
%<class>\ProvidesClass{suftesi}
%<*class>
- [2021/01/27 v3.0.1 A class for typesetting theses, books and articles]
+ [2021/02/06 v3.0.2 A class for typesetting theses, books and articles]
%</class>
%<*driver>
\documentclass[12pt]{ltxdoc}
@@ -102,7 +102,6 @@ This work has the LPPL maintenance status "author-maintained".
\usepackage[cochineal,bigdelims,cmintegrals,vvarbb]{newtxmath}
\usepackage[cal=boondoxo]{mathalpha}
\usepackage{manfnt}
-\usepackage{lettrine}
%--------------------------------------------------------
% LAYOUT
%--------------------------------------------------------
@@ -145,7 +144,14 @@ cochineal,mathpazo,bera,amsthm}
\DeclareRobustCommand*{\arm}[1]{\ar{\meta{\argstyle#1}}}
\DeclareRobustCommand*{\oarm}[1]{\oar{\meta{\argstyle#1}}}
\newcommand*{\OR}{${}\mid{}$}
-\newcommand{\alert}[1][]{\lettrine[#1]{\normalsize\textdbend}{\hskip.4em}}
+\makeatletter
+\newlength\CLett
+\newcommand*\alert{
+ \par\noindent
+ \setbox\z@\hbox{\textdbend}\CLett=\wd\z@%
+ \raisebox{-1.05\baselineskip}[0pt][0pt]{%
+ \llap{\box\z@\kern6pt}}}
+\makeatother
% New environments
\newenvironment{ttquote}{%
\begin{mdframed}\ttfamily\microtypesetup{activate=false}}{\end{mdframed}}
@@ -204,7 +210,7 @@ cochineal,mathpazo,bera,amsthm}
% LAYOUTS THUMBNAILS
% --------------------------------------------------------
\usepackage{xfp}
-\NewExpandableDocumentCommand{\getlength}{O{pt}mm}{%
+\NewExpandableDocumentCommand{\sufgetlength}{O{pt}mm}{%
% #1 (optional, default pt), #2 = length
\fpeval{round((#3)/(1#1),#2)}}
\newlength{\expaperwidth}
@@ -240,7 +246,7 @@ cochineal,mathpazo,bera,amsthm}
\draw[draw=gray!10,thick] (\expaperwidth,0) -- (\expaperwidth,\expaperheight);
\draw[xshift=\exxshift,body] (0,0) rectangle (\extextwidth,\extextheight);
\draw[xshift=\exzshift,body] (0,0) rectangle (\extextwidth,\extextheight);
- \node at (\expaperwidth,-4) (caption) {\parbox{2.5cm}{\centering\footnotesize\texttt{#2}\par (\getlength[cm]{2}{\expaperwidth} $\times$ \getlength[cm]{2}{\expaperheight})\par}};
+ \node at (\expaperwidth,-4) (caption) {\parbox{2.5cm}{\centering\footnotesize\texttt{#2}\par (\sufgetlength[cm]{2}{\expaperwidth} $\times$ \sufgetlength[cm]{2}{\expaperheight})\par}};
\end{tikzpicture}}
% --------------------------------------------------------
% HYPERREF SETUP
@@ -271,7 +277,7 @@ cochineal,mathpazo,bera,amsthm}
%</driver>
% \fi
%
-% \CheckSum{5348}
+% \CheckSum{5380}
%
% \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
@@ -289,6 +295,7 @@ cochineal,mathpazo,bera,amsthm}
% Grave accent \` Left brace \{ Vertical bar \|
% Right brace \} Tilde \~}
%
+% \changes{v3.0.2}{2021/02/06}{Improved \opt{subsecstyle} and \opt{subsubsecstyle} options.}
% \changes{v3.0.1}{2021/01/27}{Maintenance release.}
% \changes{v3.0}{2021/01/24}{Improved \sty{biblatex} support. Updated documentation.}
% \changes{v2.9.9b (2.9.11)}{2020/12/21}{New page layouts: \opt{pocketa}, \opt{pocketb}, \opt{pocketc}. New commands \cmd{breakinbody}, \cmd{breakinbodyleft}, \cmd{breakintoc} (old names: \cmd{headbreak} and \cmd{xheadbreak}). Changed definitions of \cmd{appendixpagename}, \cmd{appendixtocname} and \cmd{appendixname} commands (default: english). The \cmd{part} command has been completely redefined. Updated documentation.}
@@ -991,10 +998,6 @@ cochineal,mathpazo,bera,amsthm}
%\end{verbatim}
% \end{latexcode}
%
-% ^^A\subsection{Title page}
-%
-% ^^A The class provides a very simple title page through the \cmd{maketitle} command. A large collection of stylish title pages is provided by the \sty{titlepages} package by Peter Wilson. This package is part of the \sty{memoir} documentation but you can copy the code examples and adapt them to work with \sty{suftesi} with quite simple changes.
-%
% ^^A ----------------------------------------------------------------
% ^^A
% \subsection{Appendices}
@@ -1928,33 +1931,6 @@ cochineal,mathpazo,bera,amsthm}
%
% ^^A ----------------------------------------------------------------
% ^^A
-% ^^A \section{Known issues}
-% ^^A
-% ^^A ----------------------------------------------------------------
-% ^^A
-% ^^A A problem occurs with the \opt{article} document structure. The \cmd{part} command resets the headers so if it is the first sectioning command of the page you will get no headers in that page. In this case you have to add the header manually with something like this:
-% ^^A \begin{latexcode}
-% ^^A \begin{verbatim}
-% ^^A \markboth{Section title}{Section title}
-% ^^A \part{The title of the part}
-% ^^A
-% ^^A \section{Section title}
-% ^^A \end{verbatim}
-% ^^A \end{latexcode}
-% ^^A If the title of the part is at the beginning of the page you will need the \sty{afterpage} package \parencite{afterpage} and the \cmd{afterpage} command:
-% ^^A \begin{latexcode}
-% ^^A \begin{verbatim}
-% ^^A \afterpage{
-% ^^A \markboth{Section title}{Section title}
-% ^^A \part{The title of the part}
-% ^^A }
-% ^^A
-% ^^A \section{Section title}
-% ^^A \end{verbatim}
-% ^^A \end{latexcode}
-%
-% ^^A ----------------------------------------------------------------
-% ^^A
% \section{Backward compatibility}
% ^^A
% ^^A ----------------------------------------------------------------
@@ -2415,22 +2391,40 @@ cochineal,mathpazo,bera,amsthm}
\suftesi@numparsectrue
\fi}
\define@choicekey{}{subsecstyle}[\val\nr]
- {left,center,right}[left]{%
+ {left,center,right,parleft,parcenter,parright}[left]{%
\ifcase\nr\relax
\def\SUF@lr@SUBSECSwitch{\filright}
\or
\def\SUF@lr@SUBSECSwitch{\filcenter}
\or
\def\SUF@lr@SUBSECSwitch{\filleft}
+\or%numparsubsec
+\def\SUF@lr@SUBSECSwitch{\filright}
+\suftesi@numparsubsectrue
+\or
+\def\SUF@lr@SUBSECSwitch{\filcenter}
+\suftesi@numparsubsectrue
+\or
+\def\SUF@lr@SUBSECSwitch{\filleft}
+\suftesi@numparsubsectrue
\fi}
\define@choicekey{}{subsubsecstyle}[\val\nr]
- {left,center,right}[left]{%
+ {left,center,right,parleft,parcenter,parright}[left]{%
\ifcase\nr\relax
\def\SUF@lr@SUBSUBSECSwitch{\filright}
\or
\def\SUF@lr@SUBSUBSECSwitch{\filcenter}
\or
\def\SUF@lr@SUBSUBSECSwitch{\filleft}
+\or%numparsubsubsec
+\def\SUF@lr@SUBSUBSECSwitch{\filright}
+\suftesi@numparsubsubsectrue
+\or
+\def\SUF@lr@SUBSUBSECSwitch{\filcenter}
+\suftesi@numparsubsubsectrue
+\or
+\def\SUF@lr@SUBSUBSECSwitch{\filleft}
+\suftesi@numparsubsubsectrue
\fi}
% \end{macrocode}
% \subsubsection{Sections font}
@@ -3838,6 +3832,7 @@ cochineal,mathpazo,bera,amsthm}
{\SUF@lr@PARTSwitch\SUF@partsize
\interlinepenalty \@M
\ifnum \c@secnumdepth >-2\relax
+ \addvspace{4ex}
\noindent\partname\hskip.5em{\SUF@PART@font\SUF@thepart}\SUF@dotpart
\ifsuftesi@numparpart
\par
@@ -3851,6 +3846,7 @@ cochineal,mathpazo,bera,amsthm}
\def\@spart#1{%
{\SUF@lr@PARTSwitch\SUF@partsize
\interlinepenalty \@M
+ \addvspace{4ex}
\noindent\SUF@PART@StyleSwitch#1\par}%
\@endpart}
diff --git a/macros/latex/contrib/suftesi/suftesi.pdf b/macros/latex/contrib/suftesi/suftesi.pdf
index 3ed3266a57..d6486c3ec7 100644
--- a/macros/latex/contrib/suftesi/suftesi.pdf
+++ b/macros/latex/contrib/suftesi/suftesi.pdf
Binary files differ
diff --git a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
index 1352765824..eb55790c3d 100644
--- a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
+++ b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
@@ -27,9 +27,14 @@ $mirrors = {
'Hong Kong' => {
'https://mirror-hk.koddos.net/CTAN/' => 1,
},
+ 'India' => {
+ 'http://ctan.imsc.res.in/' => 1,
+ },
+ 'Indonesia' => {
+ 'https://mirror.unpad.ac.id/ctan/' => 1,
+ },
'Iran' => {
'http://ctan.yazd.ac.ir/' => 1,
- 'https://ctan.asis.ai/' => 1,
'https://ctan.um.ac.ir/' => 1,
},
'Japan' => {
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb b/systems/texlive/tlnet/tlpkg/texlive.tlpdb
index 25aa20a1a7..cc94a76cb7 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb
@@ -26,11 +26,11 @@ depend container_split_src_files/1
depend frozen/0
depend minrelease/2016
depend release/2020
-depend revision/57620
+depend revision/57629
name 00texlive.image
category TLCore
-revision 57620
+revision 57624
shortdesc TeX Live files only in the source repository
longdesc The files here are not copied by the installer and containers
longdesc are not built for them; they exist only in the source
@@ -40,7 +40,7 @@ longdesc IgnorePatterns in the check_files routine in tlmgr.pl augment
longdesc this list. Those are not included in the source/ tarball. For
longdesc information on the 00texlive prefix see
longdesc 00texlive.installation(.tlpsrc)
-runfiles size=13834
+runfiles size=13835
.mkisofsrc
autorun.inf
texmf-dist/README
@@ -543,6 +543,7 @@ runfiles size=13834
tlpkg/tlpsrc/asypictureb.tlpsrc
tlpkg/tlpsrc/atbegshi.tlpsrc
tlpkg/tlpsrc/atenddvi.tlpsrc
+ tlpkg/tlpsrc/atkinson.tlpsrc
tlpkg/tlpsrc/attachfile.tlpsrc
tlpkg/tlpsrc/attachfile2.tlpsrc
tlpkg/tlpsrc/atveryend.tlpsrc
@@ -4337,7 +4338,7 @@ depend setting_available_architectures:aarch64-linux amd64-freebsd amd64-netbsd
name 00texlive.installer
category TLCore
-revision 57614
+revision 57622
shortdesc TeX Live standalone installer package
longdesc This package defines the files to go into the installer
longdesc archives (install-tl-unx.tar.gz, install-tl.zip) built by the
@@ -25397,6 +25398,237 @@ catalogue-license lppl1.3c
catalogue-topics defer-stuff
catalogue-version 1.5
+name atkinson
+category Package
+revision 57624
+shortdesc Support for the Atkinson Hyperlegible family of fonts
+relocated 1
+longdesc This package provides LaTeX, pdfLaTeX, XeLaTeX and LuaLaTeX
+longdesc support for the Atkinson Hyperlegible family of fonts, named
+longdesc after Braille Institute founder, J. Robert Atkinson. What makes
+longdesc it different from traditional typography design is that it
+longdesc focuses on letterform distinction to increase character
+longdesc recognition, ultimately improving readability.
+execute addMap atkinson.map
+containersize 337140
+containerchecksum 902030074772c7b8dcf01cccb3e33fd045b5cf6d72293fa0d48503757321aa35b32eed030cd9dff55d5b17d7cfdd16e9ec301e91b2a5b9bab1a1a901884215cd
+doccontainersize 631676
+doccontainerchecksum b0ae498ed9bc0b8275b954b4f95cdf967b7794aaf3f261ff2a0419f14faabfc4f12fa60b41c26171962ad41c32ac40e23df3d958bbcc33f5a1b2355e0c3b61c1
+docfiles size=185
+ RELOC/doc/fonts/atkinson/Atkinson-Hyperlegible-Font-License-2020-1104.pdf
+ RELOC/doc/fonts/atkinson/BIA_AtkinsonHyerlegible-Specimen_200210.pdf
+ RELOC/doc/fonts/atkinson/README details="Readme"
+ RELOC/doc/fonts/atkinson/atkinson-samples.pdf details="Font samples"
+ RELOC/doc/fonts/atkinson/atkinson-samples.tex
+runfiles size=336
+ RELOC/fonts/enc/dvips/atkinson/atksn_2covbz.enc
+ RELOC/fonts/enc/dvips/atkinson/atksn_2hyoa7.enc
+ RELOC/fonts/enc/dvips/atkinson/atksn_cvs3iv.enc
+ RELOC/fonts/enc/dvips/atkinson/atksn_eyh74z.enc
+ RELOC/fonts/enc/dvips/atkinson/atksn_g47ykb.enc
+ RELOC/fonts/enc/dvips/atkinson/atksn_oy2yah.enc
+ RELOC/fonts/enc/dvips/atkinson/atksn_vucprl.enc
+ RELOC/fonts/enc/dvips/atkinson/atksn_w3wxei.enc
+ RELOC/fonts/enc/dvips/atkinson/atksn_wy3za2.enc
+ RELOC/fonts/enc/dvips/atkinson/atksn_ycy2xh.enc
+ RELOC/fonts/map/dvips/atkinson/atkinson.map
+ RELOC/fonts/opentype/public/atkinson/Atkinson-Hyperlegible-Bold-102.otf
+ RELOC/fonts/opentype/public/atkinson/Atkinson-Hyperlegible-BoldItalic-102.otf
+ RELOC/fonts/opentype/public/atkinson/Atkinson-Hyperlegible-Italic-102.otf
+ RELOC/fonts/opentype/public/atkinson/Atkinson-Hyperlegible-Regular-102.otf
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Bold-lf-ly1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Bold-lf-ly1--lcdfj.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Bold-lf-ly1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Bold-lf-ot1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Bold-lf-ot1--lcdfj.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Bold-lf-ot1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Bold-lf-t1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Bold-lf-t1--lcdfj.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Bold-lf-t1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Bold-lf-ts1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Bold-lf-ts1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Bold-sup-ly1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Bold-sup-ly1--lcdfj.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Bold-sup-ly1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Bold-sup-ot1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Bold-sup-ot1--lcdfj.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Bold-sup-ot1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Bold-sup-t1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Bold-sup-t1--lcdfj.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Bold-sup-t1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Bold-tlf-ly1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Bold-tlf-ly1--lcdfj.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Bold-tlf-ly1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Bold-tlf-ot1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Bold-tlf-ot1--lcdfj.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Bold-tlf-ot1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Bold-tlf-t1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Bold-tlf-t1--lcdfj.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Bold-tlf-t1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Bold-tlf-ts1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Bold-tlf-ts1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-BoldItalic-lf-ly1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-BoldItalic-lf-ly1--lcdfj.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-BoldItalic-lf-ly1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-BoldItalic-lf-ot1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-BoldItalic-lf-ot1--lcdfj.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-BoldItalic-lf-ot1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-BoldItalic-lf-t1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-BoldItalic-lf-t1--lcdfj.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-BoldItalic-lf-t1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-BoldItalic-lf-ts1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-BoldItalic-lf-ts1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-BoldItalic-sup-ly1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-BoldItalic-sup-ly1--lcdfj.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-BoldItalic-sup-ly1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-BoldItalic-sup-ot1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-BoldItalic-sup-ot1--lcdfj.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-BoldItalic-sup-ot1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-BoldItalic-sup-t1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-BoldItalic-sup-t1--lcdfj.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-BoldItalic-sup-t1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-BoldItalic-tlf-ly1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-BoldItalic-tlf-ly1--lcdfj.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-BoldItalic-tlf-ly1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-BoldItalic-tlf-ot1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-BoldItalic-tlf-ot1--lcdfj.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-BoldItalic-tlf-ot1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-BoldItalic-tlf-t1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-BoldItalic-tlf-t1--lcdfj.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-BoldItalic-tlf-t1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-BoldItalic-tlf-ts1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-BoldItalic-tlf-ts1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Italic-lf-ly1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Italic-lf-ly1--lcdfj.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Italic-lf-ly1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Italic-lf-ot1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Italic-lf-ot1--lcdfj.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Italic-lf-ot1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Italic-lf-t1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Italic-lf-t1--lcdfj.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Italic-lf-t1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Italic-lf-ts1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Italic-lf-ts1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Italic-sup-ly1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Italic-sup-ly1--lcdfj.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Italic-sup-ly1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Italic-sup-ot1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Italic-sup-ot1--lcdfj.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Italic-sup-ot1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Italic-sup-t1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Italic-sup-t1--lcdfj.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Italic-sup-t1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Italic-tlf-ly1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Italic-tlf-ly1--lcdfj.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Italic-tlf-ly1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Italic-tlf-ot1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Italic-tlf-ot1--lcdfj.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Italic-tlf-ot1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Italic-tlf-t1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Italic-tlf-t1--lcdfj.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Italic-tlf-t1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Italic-tlf-ts1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Italic-tlf-ts1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Regular-lf-ly1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Regular-lf-ly1--lcdfj.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Regular-lf-ly1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Regular-lf-ot1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Regular-lf-ot1--lcdfj.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Regular-lf-ot1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Regular-lf-t1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Regular-lf-t1--lcdfj.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Regular-lf-t1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Regular-lf-ts1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Regular-lf-ts1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Regular-sup-ly1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Regular-sup-ly1--lcdfj.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Regular-sup-ly1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Regular-sup-ot1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Regular-sup-ot1--lcdfj.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Regular-sup-ot1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Regular-sup-t1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Regular-sup-t1--lcdfj.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Regular-sup-t1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Regular-tlf-ly1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Regular-tlf-ly1--lcdfj.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Regular-tlf-ly1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Regular-tlf-ot1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Regular-tlf-ot1--lcdfj.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Regular-tlf-ot1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Regular-tlf-t1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Regular-tlf-t1--lcdfj.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Regular-tlf-t1.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Regular-tlf-ts1--base.tfm
+ RELOC/fonts/tfm/public/atkinson/atkinsn-Regular-tlf-ts1.tfm
+ RELOC/fonts/type1/public/atkinson/atkinsn-Bold.pfb
+ RELOC/fonts/type1/public/atkinson/atkinsn-BoldItalic.pfb
+ RELOC/fonts/type1/public/atkinson/atkinsn-BoldItalicLCDFJ.pfb
+ RELOC/fonts/type1/public/atkinson/atkinsn-BoldLCDFJ.pfb
+ RELOC/fonts/type1/public/atkinson/atkinsn-Italic.pfb
+ RELOC/fonts/type1/public/atkinson/atkinsn-ItalicLCDFJ.pfb
+ RELOC/fonts/type1/public/atkinson/atkinsn-Regular.pfb
+ RELOC/fonts/type1/public/atkinson/atkinsn-RegularLCDFJ.pfb
+ RELOC/fonts/vf/public/atkinson/atkinsn-Bold-lf-ly1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-Bold-lf-ot1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-Bold-lf-t1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-Bold-lf-ts1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-Bold-sup-ly1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-Bold-sup-ot1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-Bold-sup-t1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-Bold-tlf-ly1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-Bold-tlf-ot1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-Bold-tlf-t1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-Bold-tlf-ts1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-BoldItalic-lf-ly1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-BoldItalic-lf-ot1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-BoldItalic-lf-t1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-BoldItalic-lf-ts1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-BoldItalic-sup-ly1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-BoldItalic-sup-ot1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-BoldItalic-sup-t1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-BoldItalic-tlf-ly1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-BoldItalic-tlf-ot1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-BoldItalic-tlf-t1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-BoldItalic-tlf-ts1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-Italic-lf-ly1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-Italic-lf-ot1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-Italic-lf-t1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-Italic-lf-ts1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-Italic-sup-ly1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-Italic-sup-ot1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-Italic-sup-t1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-Italic-tlf-ly1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-Italic-tlf-ot1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-Italic-tlf-t1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-Italic-tlf-ts1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-Regular-lf-ly1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-Regular-lf-ot1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-Regular-lf-t1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-Regular-lf-ts1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-Regular-sup-ly1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-Regular-sup-ot1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-Regular-sup-t1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-Regular-tlf-ly1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-Regular-tlf-ot1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-Regular-tlf-t1.vf
+ RELOC/fonts/vf/public/atkinson/atkinsn-Regular-tlf-ts1.vf
+ RELOC/tex/latex/atkinson/LY1atkinsn-LF.fd
+ RELOC/tex/latex/atkinson/LY1atkinsn-Sup.fd
+ RELOC/tex/latex/atkinson/LY1atkinsn-TLF.fd
+ RELOC/tex/latex/atkinson/OT1atkinsn-LF.fd
+ RELOC/tex/latex/atkinson/OT1atkinsn-Sup.fd
+ RELOC/tex/latex/atkinson/OT1atkinsn-TLF.fd
+ RELOC/tex/latex/atkinson/T1atkinsn-LF.fd
+ RELOC/tex/latex/atkinson/T1atkinsn-Sup.fd
+ RELOC/tex/latex/atkinson/T1atkinsn-TLF.fd
+ RELOC/tex/latex/atkinson/TS1atkinsn-LF.fd
+ RELOC/tex/latex/atkinson/TS1atkinsn-TLF.fd
+ RELOC/tex/latex/atkinson/atkinson.sty
+catalogue-contact-home https://brailleinstitute.org/freefont
+catalogue-ctan /fonts/atkinson
+catalogue-license lppl other-free
+catalogue-topics accessible font font-sans font-type1 font-otf
+
name attachfile
category Package
revision 42099
@@ -43249,7 +43481,7 @@ catalogue-version 0.2
name bxjscls
category Package
-revision 57536
+revision 57625
shortdesc Japanese document class collection for all major engines
relocated 1
longdesc This package provides an extended version of the Japanese
@@ -43258,10 +43490,10 @@ longdesc original version supports only pLaTeX and upLaTeX, the extended
longdesc version also supports pdfLaTeX, XeLaTeX and LuaLaTeX, with the
longdesc aid of suitable packages that provide capability of Japanese
longdesc typesetting.
-containersize 32852
-containerchecksum 52ff21b055c75975f805f537384df30f28afba0d2a2f9f36e4fac97a78ce6ec653f59e168510fddddb8aabe0ecc226429f6cea249d84a7f8479b29309fd02e7f
-doccontainersize 1518416
-doccontainerchecksum 45195920ac34e4dde569f3489a15b6ad2735b44e8a7ca78aa1e85570891c9313adfc97b6e39db0dd1e0a605bc358dec2b84ec42307cff8feb8d768e6f68aedbe
+containersize 32932
+containerchecksum 589b5b44ad6a4743a039b427d8caabae51c070591f808218f432a21df4c442df9878fd5fa882d6e5090ed808c0f689ecb8d9ee11e131415c7dd69ef992e6d898
+doccontainersize 1518456
+doccontainerchecksum e999fa0ccac37f7f5793e5f0ebf096615ef9c92cb1311e885edfced06ddd5c21ef3220bc5ac760e99dc4b49dd8d4d1d4b612d4f686433ce15e73a7222b8605d0
docfiles size=410
RELOC/doc/latex/bxjscls/LICENSE
RELOC/doc/latex/bxjscls/README-ja.md details="Readme (Japanese)" language="ja"
@@ -43269,12 +43501,12 @@ docfiles size=410
RELOC/doc/latex/bxjscls/bxjscls-manual.pdf details="User guide (Japanese)" language="ja"
RELOC/doc/latex/bxjscls/bxjscls-manual.tex
RELOC/doc/latex/bxjscls/bxjscls.pdf details="Package documentation (Japanese)" language="ja"
-srccontainersize 81952
-srccontainerchecksum df725ff651246268ae5c250b87d4d45aa6b89814c287b0d5d4b896ea2eb2eafff883f78d14faba423c014251429aecda48e637fce87ba8ed8581f95be269d3d3
-srcfiles size=99
+srccontainersize 82096
+srccontainerchecksum 27a1df36d928544d84ac322104c723cddaae3eada19d7b205150463c6c6e2c4da33d87c34547b02fc06b01eae4b67f3356c31132bbcb1538ec8b4cbd495855c3
+srcfiles size=100
RELOC/source/latex/bxjscls/bxjscls.dtx
RELOC/source/latex/bxjscls/bxjscls.ins
-runfiles size=100
+runfiles size=101
RELOC/tex/latex/bxjscls/bxjsarticle.cls
RELOC/tex/latex/bxjscls/bxjsbook.cls
RELOC/tex/latex/bxjscls/bxjscjkcat.sty
@@ -43291,7 +43523,7 @@ catalogue-contact-repository https://github.com/zr-tex8r
catalogue-ctan /language/japanese/BX/bxjscls
catalogue-license bsd2
catalogue-topics japanese class
-catalogue-version 2.4a
+catalogue-version 2.5
name bxnewfont
category Package
@@ -64905,7 +65137,7 @@ containerchecksum 5bd74e1a434549cf31ce31777e9a32f90baa14148e6658633945508a46dbf6
name collection-fontsextra
category Collection
-revision 57478
+revision 57624
shortdesc Additional fonts
relocated 1
depend Asana-Math
@@ -64931,6 +65163,7 @@ depend asapsym
depend ascii-font
depend aspectratio
depend astro
+depend atkinson
depend augie
depend auncial-new
depend aurical
@@ -65237,8 +65470,8 @@ depend yfonts
depend yfonts-t1
depend yinit-otf
depend zlmtt
-containersize 1900
-containerchecksum 4da82cb20cc2709c2cc8766349a82152468d2e32df45299cce58a985e9ae1af4fa9224a6cefef5715abcee98508d11b173037c14c5d763a1342905a3ebddc14b
+containersize 1908
+containerchecksum fda12493a703126759ff54d0aab7b23e03a8ee94bb682c63af569459c3011b9420e9611a207cb83b5c06457ac1f513bb8938e9fc6cd19c2c73f4c5c337a6b983
name collection-fontsrecommended
category Collection
@@ -135803,7 +136036,7 @@ catalogue-version 1.0b
name hyperref
category Package
-revision 55161
+revision 57623
shortdesc Extensive support for hypertext in LaTeX
relocated 1
longdesc The hyperref package is used to handle cross-referencing
@@ -135833,11 +136066,11 @@ depend rerunfilecheck
depend stringenc
depend url
depend zapfding
-containersize 98036
-containerchecksum 3140dcced947c9efa922452bab715dc7dd9eb99e5b421c2f6bfebef7f99bff15099bf8f93f09667be6a2717677132d51b643bb7789ab287ac97d0186adea6ff3
-doccontainersize 3311500
-doccontainerchecksum 9a2744e1093bbcf07c077b7a5aa8c34dff01da023f664689280360d3b17bb6b7402ff03b83c50a59c3936f6a0e3caabe4f5b48189750924e83131819b5c992a3
-docfiles size=1059
+containersize 97144
+containerchecksum 5eba1c965121e0e7aa329ac936ff6f2cae8ee27901f2695fb6911566bff1eff9dae2b7f4ae0dd1574041cfc511152bd6ab54af2e8a4a1a9dba5cb593653f92ba
+doccontainersize 3277320
+doccontainerchecksum 125e0a0a8354937e6d91d61c2ffa66dd5782d68d93ad9846b05fcfc47cd440cba8a9d06c47d24c2f5491338660948ec028ca20ca57aef1240d44e43299462309
+docfiles size=1045
RELOC/doc/latex/hyperref/ChangeLog.txt
RELOC/doc/latex/hyperref/README.md details="Readme"
RELOC/doc/latex/hyperref/backref.pdf
@@ -135857,9 +136090,9 @@ docfiles size=1059
RELOC/doc/latex/hyperref/nameref.pdf
RELOC/doc/latex/hyperref/paper.pdf details="Paper on tagging and navigation" language="en"
RELOC/doc/latex/hyperref/slides.pdf
-srccontainersize 446768
-srccontainerchecksum f12b6f64f0c55b4a9bfead1846c19598099d2158d87658f9984fb305032f2a099dbbd4c4c693577352ecdfdd691c989692cd0864830404dc92f6d9319f990d91
-srcfiles size=347
+srccontainersize 446160
+srccontainerchecksum 5098dbcf9f04574791d2d9cac1f4931cc54689b1f0fd86b08ef90c0e753ee5b27073fd3152cb183ea00ccb5e299a1833f601b68061f72f2552ae50b512053737
+srcfiles size=345
RELOC/source/latex/hyperref/backref.dtx
RELOC/source/latex/hyperref/bmhydoc.sty
RELOC/source/latex/hyperref/doc/fdl.tex
@@ -135884,6 +136117,7 @@ runfiles size=214
RELOC/tex/latex/hyperref/hvtexhtm.def
RELOC/tex/latex/hyperref/hvtexmrk.def
RELOC/tex/latex/hyperref/hxetex.def
+ RELOC/tex/latex/hyperref/hyperref-langpatches.def
RELOC/tex/latex/hyperref/hyperref.sty
RELOC/tex/latex/hyperref/hypertex.def
RELOC/tex/latex/hyperref/minitoc-hyper.sty
@@ -135902,7 +136136,7 @@ catalogue-contact-home https://github.com/latex3/hyperref
catalogue-ctan /macros/latex/contrib/hyperref
catalogue-license lppl1.3
catalogue-topics hyper pdf-feat adobe-distiller form-fillin
-catalogue-version 7.00e
+catalogue-version 7.00g
name hyperxmp
category Package
@@ -234979,7 +235213,7 @@ catalogue-version 1.4
name pdfpages
category Package
-revision 57378
+revision 57626
shortdesc Include PDF documents in LaTeX
relocated 1
longdesc This package simplifies the inclusion of external multi-page
@@ -234994,19 +235228,19 @@ depend eso-pic
depend graphics
depend oberdiek
depend tools
-containersize 13952
-containerchecksum 1601fc6e1c3b54fa932798f2633a443c8bd34da8966ad1701fe02d08d8034658af8853189a5959ab0cf70c3a5f1a0b774ee039075844c6db62981de5222eae2a
-doccontainersize 314460
-doccontainerchecksum d7c63fb6d24718c64043ebd50d129a123cee8cd460585b890bc4d41e392d59b2b0ff7f05df56bee7f81f1775f6f68ca14a3462cd3f1a9fccd283f76d3de44618
-docfiles size=88
+containersize 13960
+containerchecksum ef2f9fad80c16330e39955c2dd23cde30cd4dae3b70f37d0fdaf47c7fd25edf495798498867ecb473f9229b463d3257c256958314ea0d3be13db8e4d5664c753
+doccontainersize 319708
+doccontainerchecksum c036cdde5b5c3dd513ee80f3050baeeb93d7ebe41f083feca30bbfd1ac7240165d374eaa579a6d496c9d9619e32f6ad62ca617def6f1968691cf61c7402f997f
+docfiles size=89
RELOC/doc/latex/pdfpages/dummy-l.pdf
RELOC/doc/latex/pdfpages/dummy.pdf
RELOC/doc/latex/pdfpages/pdf-ex.tex
RELOC/doc/latex/pdfpages/pdf-hyp.tex
RELOC/doc/latex/pdfpages/pdf-toc.tex
RELOC/doc/latex/pdfpages/pdfpages.pdf details="Package documentation"
-srccontainersize 35016
-srccontainerchecksum 84736f02c6e57de58c005c59f945cfe606a9891f24b97095a52b159f1855121a491c6b9dc9c5f952646758bb1a6e9fe013c8fd1273d045873c1d09cface510b2
+srccontainersize 35036
+srccontainerchecksum 6ce30804b67aa0cc1e8b8b73a5639ee199da8bd84d36c2e53b262577658b6d2ac0aebf526951162f6561e45db99031ffd3c78648854e3d29707fc121c0c254ee
srcfiles size=46
RELOC/source/latex/pdfpages/README
RELOC/source/latex/pdfpages/pdfpages.dtx
@@ -235023,7 +235257,7 @@ runfiles size=25
catalogue-ctan /macros/latex/contrib/pdfpages
catalogue-license lppl1.3c
catalogue-topics graphics-incl
-catalogue-version 0.5r
+catalogue-version 0.5s
name pdfpc
category Package
@@ -296130,15 +296364,15 @@ docfiles size=591
name texlive-docindex
category TLCore
-revision 57606
+revision 57622
shortdesc top-level TeX Live doc.html, etc.
longdesc These files are regenerated as needed, which is often, so we
longdesc make them a separate package. See the tl-update-auto script for
longdesc the process.
-containersize 388
-containerchecksum 2a07763686f2e2d681951d2b72cb4245cf3c71549b65005ce43bc75125e57973298e64d01ed76fa403af797ec2510c6be36c7b4ed4dc9cbcebf7cfd2e0715e11
-doccontainersize 172664
-doccontainerchecksum 5d1604be7d8b3b2d3ba2180dd7d7db67d67822e20622834deea82bd4ab0bda1fc4ed6a7f7221aedd9becaeba12a6bf38ccab05d27aa07a4e0eadd3b5835bcb27
+containersize 392
+containerchecksum 76f1901e26a4a2c32c10197bd30bde2e1fb1e035c163d5348f28172c7c365463b2aa5032f4f80fa736bfb5e3ff83e95d9f8621423e5e145e010f16b4f2cf6a34
+doccontainersize 172756
+doccontainerchecksum 02f8b8f981108e41074cb1d2064508671dc3838eba0577b7a512e442c02ed85a061d51aa0f5a39b4f7acf5494cf3b04170da1f2e2dc63027d714332060a724de
docfiles size=343
doc.html
@@ -296360,7 +296594,7 @@ docfiles size=368
name texlive-scripts
category TLCore
-revision 57612
+revision 57622
shortdesc TeX Live infrastructure programs
longdesc Includes install-tl, tl-portable, rungs, etc.; not needed for
longdesc tlmgr to run but still ours. Not included in tlcritical.
@@ -296368,10 +296602,10 @@ depend texlive-scripts.ARCH
depend texlive.infra
execute addMap mathpple.map
postaction shortcut type=menu name="TeX Live command-line" cmd=TEXDIR/tlpkg/installer/tl-cmd.bat
-containersize 132320
-containerchecksum bb71f969b7332e2537b429e66e127fa54bf05c1b63ac94cb1b9b58f022be451a57994f60a294e8a4eb2aa9c800cb6d7658b102383d1d5b955219179b34fe8f98
+containersize 132340
+containerchecksum afd033594a20c2691080f0eea8ae7fe7d654c6fef633092eb83f5e826ff1f2a224ca5f1b4439e70f58769ccba4afbe176cdb9efe6e1994bca6392ec49f67fdcd
doccontainersize 218848
-doccontainerchecksum aa457e2a6f0079569ef245e925fef72f644f4c1d14280928476dd490608f1dfbdc5544f72aad5007d2d6aa7af1cb9f13e1b13ebf4a9d6cda3cbd94b7ad549d43
+doccontainerchecksum 671063f7122d5f18d27f7478b3996a883b44086db6e43d41c0358684ae543348c17c348814e537fe172ba922acb55911a89d026c184419c5688694ba4b8537de
docfiles size=141
texmf-dist/doc/man/man1/fmtutil-sys.1
texmf-dist/doc/man/man1/fmtutil-sys.man1.pdf
@@ -311504,7 +311738,7 @@ catalogue-version 1.0
name tuda-ci
category Package
-revision 57415
+revision 57627
shortdesc LaTeX templates of Technische Universitat Darmstadt
relocated 1
longdesc The TUDa-CI-Bundle provides a possibility to use the Corporate
@@ -311512,11 +311746,11 @@ longdesc Design of TU Darmstadt in LaTeX. It contains documentclasses as
longdesc well as some helper packages and config files together with
longdesc some templates for user documentation, which currently are only
longdesc available in German.
-containersize 41192
-containerchecksum ec345221822bfbf9e55876c09ef98bce481f857bcdedb070af8fafe0339b24bbe12fbadf46dc858b46aa79b4732812d9884bd248cc95d4dd74ceafd9dee829f4
-doccontainersize 1102612
-doccontainerchecksum 102907682f55372c3c444c1e1b872515b44bf47182ec767448c77bcdda5a072428900cb9d2b193fdfd0d85410fe2786b18b5c22664d8fc43d77c5ced7a87407a
-docfiles size=1663
+containersize 41376
+containerchecksum 7930018b3eb815e385a84ad703a37fb6ebfd9b3ae8f7a6e3ef01a0a640d15986acb697c027d589393b60b3c9ba141739ceff68cdcaf1feb4e5eae8c597ce7896
+doccontainersize 1093516
+doccontainerchecksum f6fd0a50b193829aaf0fed3d7d1244f7e972b04cdf18ae7d92e2fc7a42f0ce6dd2af5a24fcd7c0b2814e944ce688586d488a48395e03a4c428dc8e982904e541
+docfiles size=1664
RELOC/doc/latex/tuda-ci/DEMO-TUDaAnnouncement.pdf
RELOC/doc/latex/tuda-ci/DEMO-TUDaAnnouncement.tex
RELOC/doc/latex/tuda-ci/DEMO-TUDaBeamer.pdf details="Example presentation" language="de"
@@ -311578,7 +311812,7 @@ catalogue-contact-repository https://github.com/tudace/tuda_latex_templates
catalogue-ctan /macros/latex/contrib/tuda-ci
catalogue-license lppl1.3c
catalogue-topics class letter dissertation presentation poster std-conform
-catalogue-version 3.09
+catalogue-version 3.10
name tudscr
category Package
@@ -335258,7 +335492,7 @@ catalogue-topics font font-mf font-greek greek
name yathesis
category Package
-revision 56667
+revision 57628
shortdesc A LaTeX class for writing a thesis following French rules
relocated 1
longdesc The purpose of yathesis is to facilitate the typesetting of
@@ -335276,11 +335510,11 @@ longdesc doc/latex/yathesis/french/exemples/ directory in the
longdesc distribution. They can also be tested on ShareLaTeX (template
longdesc and specimen) and on Overleaf (template and specimen). Note:
longdesc The "ya" in the package name stands for "yet another".
-containersize 23156
-containerchecksum e0caca0434238bcc76c8da3f9c59ecd412618d9bd64d0085782a54dfd63ef1f4f37089a362d97182a645624f92a616814bbb908fb11f3c859793546a9240b629
-doccontainersize 5750536
-doccontainerchecksum be719c2eaecaa6773b68a1497b6819d0d3e3d4f08887351ffab7a9089167d5ef268d55386c644c8fb9fdf5141baf7203755cbc4e5892fc47b269ccb654796e77
-docfiles size=3208
+containersize 23212
+containerchecksum a2db05eb592d2718c76a244e6073e95c2e5168361b3352be342c364eea71c74f40336a2a15e7502819170efe8065600eb0637a3e55bbfd1f89aeb8a811d320ec
+doccontainersize 4699076
+doccontainerchecksum 2feccdc18bc215d4ca917058ae783119fd5052ea983de92dc70b38fcbdd5b7a004337a7876f55bb434a0290a3c188cee840b8203aa3872f0d48b852c0c0b026b
+docfiles size=3214
RELOC/doc/latex/yathesis/CHANGELOG.md
RELOC/doc/latex/yathesis/README.md details="Readme"
RELOC/doc/latex/yathesis/addons/completion/yathesis.cwl
@@ -335351,8 +335585,8 @@ docfiles size=3208
RELOC/doc/latex/yathesis/french/exemples/specimen/a-plat/these.tex
RELOC/doc/latex/yathesis/french/exemples/specimen/a-plat/tiger.pdf
RELOC/doc/latex/yathesis/french/exemples/specimen/a-plat/ulco.pdf
-srccontainersize 50640
-srccontainerchecksum ff6674724d8c12dd8e78244330cd42fe934038cf6f026e0463209a99f65cd7b23c33e4aa053592350509afa7daa1058674db862975609abc33f1f4f5db74a593
+srccontainersize 50552
+srccontainerchecksum 218ec8da6b48eb94f47b707fbc752f9cdf0731e5ca6fd0237d2b5ec088bbc46264a9cfacca09fed1598de9868af11727f1b45b27f3338fff47c626e3f7835683
srcfiles size=67
RELOC/source/latex/yathesis/yathesis-samples-templates.dtx
RELOC/source/latex/yathesis/yathesis.dtx
@@ -335365,7 +335599,7 @@ catalogue-contact-repository https://github.com/dbitouze/yathesis
catalogue-ctan /macros/latex/contrib/yathesis
catalogue-license lppl1.3c
catalogue-topics class dissertation french
-catalogue-version 1.0.4
+catalogue-version 1.0.5
name yax
category Package
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
index 5a534dacc0..ea4ac7dd97 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
@@ -1 +1 @@
-f60fd86487d03c55854a35ed78245b31 texlive.tlpdb
+fbb311ab159ef28d70ec0910f3eb14e6 texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
index febe9c6af2..c7960835ab 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
@@ -1 +1 @@
-2225c06d365c429152049535d73b92606017e09be1d4cd25f36d296c71f1118c520a0b5a010273e6a95febb470ed10d6f35fb099cfe635c20ca17b007d937aa0 texlive.tlpdb
+ffad86134c1754053b478712a3abf5c4856ca8c75b8a58c32c1a0efdc1ffc7f59aa67d1bd6bff07aa3773fe267096d43ebd6489b969b5d361a6acc636f4e4b7d texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
index 5f693023b7..bc0549f17f 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-----
-iQEcBAEBCgAGBQJgHJf+AAoJEEzhh34ZQ4xwx2AIAJ2rd0CnwBsTD6ej3SXyP6nu
-PFnyzTg37hYfjWcH1V6PkkLOfwsziLa4xc3gvgsFMBM6+EE5wmQa3LaWFHdXeBnM
-nfs1ySKZSoanSRlKCRKRgIEUU1lWHWLkAHm4wLH3RQnzG2AY8uljvOsYLnm7X6YI
-9rWB346rD5RuFg4Q8vKm0OOkpVXWQRYVn9uBB+nbjpBYxdNRvOjywg1LMUkVihTQ
-UMXdFPqK8St8UXamuK3hhfzRVl8Sp5n4tRuv4a6HkYy1diC7Bx4ukb37wlQn/hRb
-oZS2KpedkQDBT7Hpd+olrwAS997IuV3SB+EsQLD4zq8iRUp0CWB33RusDnz0v8E=
-=QAit
+iQEcBAEBCgAGBQJgHem0AAoJEEzhh34ZQ4xwGtsH/A1Gh8aoDbZUhNA97NENZ0Sp
+wP5Dc92Sj4cf1LEBFBnEsEmj73XUNlQqDR5GA5XrJ5rJ7K75gSYqGJprjdGHEvX5
+prXhPpZLkBoJyXincTAdK8OkBLTTnsyPUMWPxUPvFj+nMGMKDMnDoHWiKnEv3S6q
+5V8NYbrWpVn7QkGUaneqnk0C//GDhFxMH/Oo9Cm1AMP+QbcWJFr8TbcCI9EdkK1X
+tagAeAZe+gNloikEedfXGh90mYI/gcgitXHexUxO+mYAtrBaZiMH6IqRHncb+LLX
+xj87xU5pxyP+0bQxXZIelLGM8rSZYfT4oRRcwcpf9nayjYEyS1NRxIWIvK2dbMk=
+=uhuw
-----END PGP SIGNATURE-----
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
index 782af14945..a533ab45f7 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
Binary files differ
diff --git a/systems/win32/miktex/tm/packages/next/pr.ini b/systems/win32/miktex/tm/packages/next/pr.ini
index 8f2944d7fe..2c4b462427 100644
--- a/systems/win32/miktex/tm/packages/next/pr.ini
+++ b/systems/win32/miktex/tm/packages/next/pr.ini
@@ -1,13 +1,13 @@
[repository]
-date=1612559675
+date=1612646035
lastupd=miktex-arctrl-bin-2.9 miktex-arctrl-bin-x64-2.9 miktex-asymptote-bin-2.9 miktex-asymptote-bin-x64-2.9 miktex-autosp-bin-2.9 miktex-autosp-bin-x64-2.9 miktex-axohelp-bin-2.9 miktex-axohelp-bin-x64-2.9 miktex-bibarts-bin-2.9 miktex-bibarts-bin-x64-2.9 miktex-bibtex-bin-2.9 miktex-bibtex-bin-x64-2.9 miktex-bibtex8bit-bin-2.9 miktex-bibtex8bit-bin-x64-2.9 miktex-bzip2-bin-2.9 miktex-bzip2-bin-x64-2.9 miktex-cairo-bin-2.9 miktex-cairo-bin-x64-2.9 miktex-chktex-bin-2.9 miktex-chktex-bin-x64-2.9
-lstdigest=b6130bc7ac9addf5889ac7e42a609003
+lstdigest=b87ba58adca6ac9f484d6b41f41005f8
numpkg=4044
relstate=next
-version=7706
+version=7707
;;;;This configuration file is signed by a MiKTeX maintainer. The signature follows.
;;;;-----BEGIN MIKTEX SIGNATURE-----
-;;;; signature/miktex: S+iBmWq9W/Si/QPqxNk9yIcFgiBK6Y4dbMtjg/out920FoQvDhTND+Bl7bHaMjPeqd/GR7f5OZu7pUzyFpnzSVkqxT3ZVnzpz5Ggi2H/BNs5ZvoQrZYyEDzX6+ZlT4CA3KqN26t6YWcv4V4c4Ve/veOXCuQ6h03rEzCMPGD9fsONgqhL1lV9SHni9W7XtlixgF3/xemlKwfS7IGUvoI1A+tz4RwZl7eCnHAKoRUcy0tg5YqbcbZ/FQ/B3MuSSeO+/aZXTCnedzjbTMWiof47zTQl59o7ATGd5VHht/4F+jorK3uvsbJRMG9f735gz0eea07/XpwnYe0BBaqg9cfLCg==
+;;;; signature/miktex: qjyFKe8b2pRtcldor9Duf3d22JlqMx8NcdnhfTuKtxaXfCB8CUq/zNiyGybcdmVnzsBbh4+OW4IMnOURVV/oRl7ajKweJErvven6WbfZZu1rBEWB9BF8wGwWuksdpcYmMuJP5W2GifOPjqJ3nlYw7onta/P2dEu+ShjwXwHg1zBgdmlfpH5hK2MzpSiN32H4qfyrFUQWyP+0jbACx+8Eoc1eJGKPcw1QuOFcEYgBDWhsc66nDfrgOZO/r1vXnf4ZjFtf0muu00h9a+8GiIbt5hqnVIOQC2DZw0S2B8auIGmQRgDnFP1TiCsqGLXHEj352771k32tj2d44wsvM29ijA==
;;;;-----END MIKTEX SIGNATURE-----
diff --git a/systems/win32/miktex/tm/packages/pr.ini b/systems/win32/miktex/tm/packages/pr.ini
index 3fe16a6c91..9027623789 100644
--- a/systems/win32/miktex/tm/packages/pr.ini
+++ b/systems/win32/miktex/tm/packages/pr.ini
@@ -1,13 +1,13 @@
[repository]
-date=1612559475
+date=1612645868
lastupd=easybook fontsize haranoaji haranoaji-extra kpfonts-otf lexend mcf2graph profcollege rmannot texnegar windycity witharrows xsim asymptote changes chinese-jfm cmap ebproof fancyhdr fontsetup
-lstdigest=716fd732743401fe5d286ce048087aa8
+lstdigest=ab541143898e8110b66c42ca5f36f2a9
numpkg=4044
relstate=stable
-version=7706
+version=7707
;;;;This configuration file is signed by a MiKTeX maintainer. The signature follows.
;;;;-----BEGIN MIKTEX SIGNATURE-----
-;;;; signature/miktex: Hn53qiNeaiDqq8yA0hSmR9m/ls7x89yN5pc70Fim4BEQwkdBj3ora70oO2ofYKRLnP5mzrI4wko/hBMVkuKGXMT8ZpXb2xMCGNq4JIdz/6qvnyyqqRsuAUJ7aabyhmwlyxM/BSLrGfbazL0UlWQrrnx37wOxzOeaIqPiwtPMtS3VjjBPEsU4FOTIV8QRisWavEwdgNHSoxYyMoeuyh6xmXQawEQbjyFD+7D5zWby1BwAGle1DTKFBw1fpYBh/brEB07lRDUDu/bnrEn0AdqlBgLP4+w08ZDRyNdo5N42TYmgIyD0CsgIIZRyR+XzaGsObAAjAtDb/Ewp6eyh4tRDEg==
+;;;; signature/miktex: g6VbflZzlr/igZXrOn6RG+ApKTOSM/gznvj7Do8p9j7Sx9G/Mrygr2T/PyAimFyN15BCWHJm8nmSeBNlcie0GpSLfFBhM9yloMW+oZb5aaH1GA4x0Tzkq7CQ8Zf/cHR7v3FdYi9Ku7q6y/zG7BLgSBgoEzciJLGgaZI8crv+ou9ai8hx3/d3vpws+zl3PoCd+fDbPSLkcSAtIWehl4f4VlbjaBwpuGq5k2qDdjHbtPMfo7n0gcz7YSKtBntxPh05H6ByqMeXBksNFxwwND++v5Y9eufZpZjkOCr4wIhBK3oR+gQfaDLTVQQxU6v+XXWY416G34bq10/ucYDt7IicGw==
;;;;-----END MIKTEX SIGNATURE-----
diff --git a/systems/win32/w32tex/ChangeLog b/systems/win32/w32tex/ChangeLog
index d74f1eb518..e7a32c8eac 100644
--- a/systems/win32/w32tex/ChangeLog
+++ b/systems/win32/w32tex/ChangeLog
@@ -1,5 +1,11 @@
W32TeX (x86 & x64) ChangeLog
+[2021/02/05]
+(01) ltxpkgs.tar.xz
+ Update footnotehyper.
+(02) pgfcontrib.tar.xz
+ Update kblocks.
+
[2021/02/04]
(01) context.tar.xz
Update curl.exe (7.75.0).
diff --git a/timestamp b/timestamp
index 7a94751773..59438eb441 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:
-2021-02-06-02-02
+2021-02-07-02-02